Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Versions follow [Semantic Versioning](https://semver.org/) — minor bump per su

---

## [Unreleased] — v1.2.0 — TIME columns, WEEK(), grid validation, test hardening, Overtime demo
## [1.2.0]2026-07-09 — TIME columns, WEEK()/DATEADD(), BROWSE cell validation, Overtime demo

### Added
- `TIME` column type — `CREATE TABLE ... (col TIME)` / `TIME(n)` for a minute-granularity
Expand All @@ -34,13 +34,12 @@ Versions follow [Semantic Versioning](https://semver.org/) — minor bump per su
to SQLite with no check at all). (#45)
- `NUM(p,s)` is now a genuinely supported qualifier — the precision and scale are parsed,
recorded, and enforced on grid edits (`NUM(8,2)` accepts `123456.78`, rejects `1.234`).
Previously the scale silently corrupted the schema; see Fixed. (#45) The Assistant's
**New table** wizard accepts a width (`8`) or a precision,scale pair (`8,2`). (#50)
Previously the scale silently corrupted the schema; see Fixed. The Assistant's **New table**
wizard accepts a width (`8`) or a precision,scale pair (`8,2`). (#45, #50)
- `LIST STRUCTURE` prints the **declared** type of every column (`CHAR(10)`, `NUM(8,2)`,
`DATE`, `TIME(15)`, `LOGICAL`, `INT`) rather than SQLite's storage class (`TEXT`/`REAL`/
`INTEGER`). Declared types are recorded per `(database, table, column)` in
`server/ColumnMetaStore.ts`. (#45)

- `demos/overtime.prg` — an Overtime Tracker example app, and the showcase for this
release's engine work: `TIME(15)` columns validated per-cell as you type in `BROWSE`,
`WEEK()` for the ISO week number, and `DATEADD()` to walk a week's Monday through Friday.
Expand Down Expand Up @@ -88,6 +87,9 @@ Versions follow [Semantic Versioning](https://semver.org/) — minor bump per su
`form-open` / `form-submit`. (#50)
- New `npm run coverage` (vitest + v8, reporting only, no thresholds), so modules no test ever
executes stop hiding. (#50)
- Regenerated every `docs/screenshots/*.png` and the README `demo.gif` against v1.2.0, and
added `screenshot-grid-validation.png` showing `BROWSE` rejecting an off-quarter
`TIME(15)` edit. (#46)

---

Expand Down
5 changes: 2 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -296,8 +296,7 @@ Dates/times: `DATE()`, `TIME()`, `DTOC`, `CTOD`, `YEAR`, `MONTH`, `DAY`, `WEEK`,
**v1.0.0 — dBASE III parity: complete ✅.** All sub-projects below shipped, plus the
closing parity commands: `?`/`??` print (#2), `SUM`/`AVERAGE` (#3), the extra
built-ins (#4), `SORT ON … TO` (#8), and `COPY TO`/`APPEND FROM` CSV (#5).
Beyond-parity work (e.g. live multiuser propagation, #11) lands on the `release/v1.1.0`
line.
Beyond-parity work lands on the milestone's own `release/vX.Y.Z` line.

1. ~~Indexing & Search~~ — `INDEX ON`, `SET INDEX TO`, `SEEK`, `FIND`, `REINDEX`, `LIST INDEXES` ✅
2. ~~Language Completeness~~ — `DO CASE/ENDCASE`, built-in functions (`EOF()`, `BOF()`, `FOUND()`, `RECNO()`, `RECCOUNT()`, `SUBSTR()`, `STR()`, `AT()`, `UPPER()`, `LOWER()`, `ROUND()`, `MOD()`, `MAX()`, `MIN()`, `TIME()`, `YEAR()`, `MONTH()`, `DAY()`, and more) ✅
Expand All @@ -315,7 +314,7 @@ line.
so other sessions BROWSE-ing that table refresh automatically (#11) ✅
- ~~JOIN to materialize a combined table~~ — `JOIN WITH <alias> TO <file> FOR <cond> [FIELDS <list>]`, snapshot table via SQLite join (#10) ✅

### Beyond parity (v1.2.0 — in progress)
### Beyond parity (v1.2.0)

- ~~`TIME` column type~~ — `TIME`/`TIME(n)` columns storing `HH:MM`, with a minute-granularity
qualifier validated on write; declared types tracked in `server/ColumnMetaStore.ts` (#43) ✅
Expand Down
Loading