timothy and Claude Opus 4.8
a1d3adda9c
fix(435): reject non-integer relative-date N (1e2/7.0) — strict digit-string validation
...
- validation.ts: ruleError now uses /^\d+$/ regex instead of Number.isInteger
- dateMacro.ts: isValidN now uses /^\d+$/ regex instead of Number.isInteger
- Prevents accepting scientific/decimal notation (e.g. '1e2', '7.0') that break compile↔parse contract
- Added tests for both invalid cases returning null/error
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:44:15 +02:00
timothy and Claude Opus 4.8
13bfcebd04
feat(434): facet-value typeahead combobox for text fields
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:27 +02:00
timothy and Claude Opus 4.8
b66a3400ae
feat(438,435): RuleBuilder UI — validation surface, relative-date inputs, single-child toggle
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
30a8a5752c
feat(435): parse relative-date macros; round-trip against normalizeGroup
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
d487ce3601
fix(438): drop empty nested subgroups instead of emitting "()" in compiled Lucene
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
575f652760
feat(438,435): compile relative-date macros; drop invalid rules instead of malformed Lucene
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
000a987a48
test(435): cover all relative-date combos, invalid-input rejection, composed round-trip
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
e91891a453
feat(435): dateMacro compile/parse mapping for relative-date operators
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy and Claude Opus 4.8
c301db10c4
feat(438,435): extend rule types; validation + single-child normalization helpers
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 20:43:26 +02:00
timothy
3b5a78a08f
fix(176): compile date values to index yyyyMMdd format; guard Advanced toggle
Build ErsatzTV Image / CI image pin matches docker/ci (pull_request) Successful in 6s
Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 16s
Build ErsatzTV Image / decisions.md append-only (pull_request) Successful in 11s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 7m22s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 17m57s
Build ErsatzTV Image / Functional E2E (curl contracts) (pull_request) Successful in 20m20s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 25m57s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 44m33s
2026-07-18 02:43:54 +02:00
timothy
2763f65b35
test(176): cover RuleBuilder field-change operator/value reset
2026-07-18 02:41:50 +02:00
timothy
ceb9069bae
feat(176): RuleBuilder component
2026-07-18 02:41:50 +02:00
timothy
7d553ef00c
refactor(176): expose clean non-null RuleField from useSearchFields
2026-07-18 02:41:50 +02:00
timothy
30a8f67e8e
feat(176): field-catalog api + useSearchFields hook
...
Task 6: getSearchFields() client fn + SearchField type in api/search.ts,
and the useSearchFields() hook in builder/rules/fieldCatalog.ts that
reshapes the catalog into fieldTypes (name -> FieldType) and byGroup
views for the rule builder (Tasks 7-8).
Generated SearchFieldResponseModel has all-nullable fields (name/label/
type/group/values), unlike the brief's non-null assumption -- adapted by
dropping fields with a null name and defaulting group to 'Other' / type
to 'text' rather than indexing under undefined.
2026-07-18 02:41:50 +02:00
timothy
03646a2ed9
test(176): compile/parse round-trip property test
2026-07-18 02:41:50 +02:00
timothy
218e1810cb
fix(176): total escaping so wildcard/quoted values round-trip (parse review)
2026-07-18 02:41:50 +02:00
timothy
0b5258533a
feat(176): Lucene-subset parser (exact inverse of compiler)
2026-07-18 02:41:50 +02:00
timothy
bc524d0b53
fix(176): split fulltext matches/notMatches from text contains
2026-07-18 02:41:50 +02:00
timothy
fd786da649
feat(176): rule model + Lucene-subset compiler
2026-07-18 02:41:50 +02:00