Changelog
0.1.0
The first release.
Resolution
- One package,
gridcue, with thegridcue/react,gridcue/server,gridcue/mockandgridcue/tanstack-tableentries. - The Controller runs each request:
1. normalize it and screen restricted columns;
2. ask an Intent Provider closed questions;
3. compile a View Plan, then validate and preview it;
4. apply it atomically;
5. undo it on request.
- Deterministic name matching (Mentions), with grammar rules that tell the rows from a column (ADR 0013).
- Precedence rules for competing changes (ADR 0012), and several changes per part through the fan-out questions (ADR 0014).
Providers
- The Jev provider has two strategies,
"focused"and"fan-out"(the default), with per-signal toggles (ADR 0015). - A Mock Provider for keyless development and tests.
Domain declarations
rowNoun, columnentity, andvalueGroups(ADR 0015).
Safety
- View-only: GridCue never changes data.
- Preview before apply.
- Restricted columns are refused before any provider call.
- No provider key ever reaches a browser bundle;
pnpm check:bundlesenforces this.
Reliability
- A provider time limit (
providerTimeoutMs, default 8 s). When it passes, the view returns to idle and the request is kept. - Apply and undo never stick: a failed write restores the previous view.
- Answering "No" ends with a clear "nothing will change".
- A new filter replaces the current filters unless the request says to add ("also", "only those", "narrow it down"), as sorts and groupings already do, and the Preview names the filters it removes (ADR 0017).
- Undo steps back through every applied change in turn, to the starting view. It stops at a manual change instead of erasing it.
- Nothing in a request is dropped silently. A direction beside another change ("trusts, largest first") asks which column to sort by. When no answer was given on whether a part adds a level ("also group by advisor") or which level is outer ("group by advisor within custodian"), GridCue asks instead of guessing. This happens with the focused strategy, the Mock, or a provider that doesn't ask those questions.