Scope
Add a TIME column type to CREATE TABLE, alongside the existing CHAR/NUM/INT/LOGICAL/DATE families (see mapType() in src/interpreter/Executor.ts).
- Canonical storage/display format
HH:MM (24-hour), stored as SQLite TEXT, same family as DATE/CHAR.
- Optional granularity qualifier:
TIME(15) requires minutes to be a multiple of 15 (00/15/30/45). Plain TIME accepts any valid HH:MM. Check whether the existing CHAR(n) / NUM(p,s) parenthesized-arg grammar in src/interpreter/Lexer.ts / Parser.ts already parses TIME(15) for free — extend only if needed.
- Validate on write (
APPEND RECORD defaults + REPLACE ... WITH): reject malformed HH:MM (hours 00-23, minutes 00-59) and reject minute values violating the column's granularity qualifier. Surface a clear error — no silent coercion.
LIST STRUCTURE prints the column as TIME or TIME(15).
- Update
CLAUDE.md command/type docs.
Branch
feature/<name> off release/v1.2.0, PR targets release/v1.2.0.
Tests
Unit tests following the pattern in tests/AlterTable.test.ts / tests/Session.test.ts: table creation with TIME/TIME(15), valid/invalid writes via APPEND RECORD and REPLACE, LIST STRUCTURE output.
Definition of done
Per CLAUDE.md → Definition of done: tests green (vitest + playwright), version/changelog/README/CLAUDE.md updated as applicable, Assistant parity note (this is a schema-level type, not a standalone command — note in the PR whether/why it needs Assistant surfacing, e.g. via the TableWizard column-type picker).
Scope
Add a
TIMEcolumn type toCREATE TABLE, alongside the existingCHAR/NUM/INT/LOGICAL/DATEfamilies (seemapType()insrc/interpreter/Executor.ts).HH:MM(24-hour), stored as SQLiteTEXT, same family asDATE/CHAR.TIME(15)requires minutes to be a multiple of 15 (00/15/30/45). PlainTIMEaccepts any validHH:MM. Check whether the existingCHAR(n)/NUM(p,s)parenthesized-arg grammar insrc/interpreter/Lexer.ts/Parser.tsalready parsesTIME(15)for free — extend only if needed.APPEND RECORDdefaults +REPLACE ... WITH): reject malformedHH:MM(hours 00-23, minutes 00-59) and reject minute values violating the column's granularity qualifier. Surface a clear error — no silent coercion.LIST STRUCTUREprints the column asTIMEorTIME(15).CLAUDE.mdcommand/type docs.Branch
feature/<name>offrelease/v1.2.0, PR targetsrelease/v1.2.0.Tests
Unit tests following the pattern in
tests/AlterTable.test.ts/tests/Session.test.ts: table creation withTIME/TIME(15), valid/invalid writes viaAPPEND RECORDandREPLACE,LIST STRUCTUREoutput.Definition of done
Per
CLAUDE.md→ Definition of done: tests green (vitest + playwright), version/changelog/README/CLAUDE.md updated as applicable, Assistant parity note (this is a schema-level type, not a standalone command — note in the PR whether/why it needs Assistant surfacing, e.g. via the TableWizard column-type picker).