docs(context): refresh repo-map after ModelState/ViewState refactor
Line counts, 16 AppMode variants (RecordsNormal/RecordsEditing), 16 mode keymaps, ModelState/ViewState split, crossterm 0.29. Findings from the 2026-06-09 systematic review (issues improvise-1cz .. improvise-2ud). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+22
-22
@@ -83,9 +83,9 @@ pub trait Effect: Debug {
|
||||
|
||||
**GridLayout** (`view/layout.rs`): pure function of `Model + View`. `cell_key(r,c)`, `cell_value(r,c)`, `drill_records(r,c)`. **Records mode** auto-detects when `_Index` is on Row and `_Dim` is on Column.
|
||||
|
||||
**AppMode** (`ui/app.rs`): 15 variants (Normal, Editing, FormulaEdit, FormulaPanel, CategoryPanel, ViewPanel, TileSelect, CategoryAdd, ItemAdd, ExportPrompt, CommandMode, ImportWizard, Help, Quit). `SearchMode` is Normal + `search_mode: bool`, not its own variant.
|
||||
**AppMode** (`ui/app.rs`): 16 variants (Normal, Editing, FormulaEdit, FormulaPanel, CategoryPanel, ViewPanel, TileSelect, CategoryAdd, ItemAdd, ExportPrompt, CommandMode, ImportWizard, Help, Quit, RecordsNormal, RecordsEditing). Text-entry variants carry a `MinibufferConfig`. `SearchMode` is Normal + `search_mode: bool`, not its own variant. `App` state is split into `ModelState` (workbook, file_path, dirty) and `ViewState` (mode, cursor/offsets, buffers, panels, search) — see improvise-x2c/ew0.
|
||||
|
||||
**Keymap** (`command/keymap.rs`): `Binding { Cmd | Prefix(Arc<Keymap>) | Sequence(Vec<…>) }`. Lookup fallback: `exact(key,mods) → Char(NONE) → AnyChar → Any → parent`. 14 mode keymaps built by `KeymapSet::default_keymaps()`; mode resolved via `ModeKey::from_app_mode()`.
|
||||
**Keymap** (`command/keymap.rs`): `Binding { Cmd | Prefix(Arc<Keymap>) | Sequence(Vec<…>) }`. Lookup fallback: `exact(key,mods) → Char(NONE) → AnyChar → Any → parent`. 16 mode keymaps built by `KeymapSet::default_keymaps()`; mode resolved via `ModeKey::from_app_mode()`.
|
||||
|
||||
---
|
||||
|
||||
@@ -158,53 +158,53 @@ model/symbol.rs 79 / 3t Symbol interning
|
||||
view/layout.rs 1140 / 24t GridLayout, drill, records mode
|
||||
view/types.rs 531 / 28t View config (axes, pages, hidden, collapsed, format)
|
||||
view/axis.rs 21 Axis enum
|
||||
workbook.rs 259 / 11t Workbook: Model + cross-view ops
|
||||
workbook.rs 266 / 11t Workbook: Model + cross-view ops
|
||||
format.rs 229 / 29t format_f64, parse_number_format (display only)
|
||||
```
|
||||
|
||||
### `improvise-formula` (`crates/improvise-formula/src/`)
|
||||
```
|
||||
parser.rs 776 / 65t pest grammar + tokenizer → Formula AST
|
||||
parser.rs 1080 / 65t pest grammar + tokenizer → Formula AST
|
||||
ast.rs 77 Expr, BinOp, AggFunc, Formula, Filter
|
||||
```
|
||||
|
||||
### `improvise-io` (`crates/improvise-io/src/`)
|
||||
```
|
||||
persistence/improv.pest 124 PEG grammar — single source of truth
|
||||
persistence/mod.rs 2410 / 83t save/load/gzip/legacy-JSON, CSV export
|
||||
import/wizard.rs 1117 / 38t ImportPipeline + ImportWizard
|
||||
persistence/mod.rs 2402 / 83t save/load/gzip/legacy-JSON, CSV export
|
||||
import/wizard.rs 1121 / 38t ImportPipeline + ImportWizard
|
||||
import/analyzer.rs 292 / 9t Field kind detection (Category/Measure/Time/Skip)
|
||||
import/csv_parser.rs 300 / 8t CSV parsing, multi-file merge
|
||||
```
|
||||
|
||||
### Command layer (`src/command/`)
|
||||
```
|
||||
cmd/core.rs 297 / 2t Cmd trait, CmdContext, CmdRegistry, parse helpers
|
||||
cmd/registry.rs 586 / 0t default_registry() — all registrations (no tests yet)
|
||||
cmd/navigation.rs 475 / 10t Move, EnterAdvance, Page*
|
||||
cmd/core.rs 319 / 2t Cmd trait, CmdContext, CmdRegistry, parse helpers
|
||||
cmd/registry.rs 601 / 0t default_registry() — all registrations (no tests yet)
|
||||
cmd/navigation.rs 501 / 10t Move, EnterAdvance, Page*
|
||||
cmd/cell.rs 198 / 6t ClearCell, YankCell, PasteCell, TransposeAxes, SaveCmd
|
||||
cmd/commit.rs 330 / 7t CommitFormula, CommitCategoryAdd/ItemAdd, CommitExport
|
||||
cmd/effect_cmds.rs 437 / 5t effect_cmd! macro, 25+ simple wrappers
|
||||
cmd/grid.rs 409 / 7t ToggleGroup, ViewNavigate, DrillIntoCell, TogglePruneEmpty
|
||||
cmd/mode.rs 308 / 8t EnterMode, Quit, EditOrDrill, EnterTileSelect
|
||||
cmd/commit.rs 455 / 7t CommitFormula, CommitCategoryAdd/ItemAdd, CommitExport
|
||||
cmd/effect_cmds.rs 466 / 5t effect_cmd! macro, 25+ simple wrappers
|
||||
cmd/grid.rs 494 / 7t ToggleGroup, ViewNavigate, DrillIntoCell, TogglePruneEmpty
|
||||
cmd/mode.rs 354 / 8t EnterMode, Quit, EditOrDrill, EnterTileSelect
|
||||
cmd/panel.rs 587 / 13t Panel toggle/cycle/cursor, formula/category/view panels
|
||||
cmd/search.rs 202 / 4t SearchNavigate, SearchOrCategoryAdd, ExitSearchMode
|
||||
cmd/text_buffer.rs 256 / 7t AppendChar, PopChar, CommandModeBackspace, ExecuteCommand
|
||||
cmd/tile.rs 160 / 5t MoveTileCursor, TileAxisOp
|
||||
keymap.rs 1066 / 22t KeyPattern, Binding, Keymap, ModeKey, 14 mode keymaps
|
||||
keymap.rs 1248 / 22t KeyPattern, Binding, Keymap, ModeKey, 16 mode keymaps
|
||||
parse.rs 236 / 19t Script/command-line parser (prefix syntax)
|
||||
```
|
||||
|
||||
### UI, draw, main (`src/ui/`, `src/draw.rs`, `src/main.rs`)
|
||||
```
|
||||
ui/effect.rs 942 / 41t Effect trait, 50+ effect types
|
||||
ui/app.rs 914 / 30t App state, AppMode (15), handle_key, autosave
|
||||
ui/grid.rs 1036 / 13t GridWidget (ratatui), column widths
|
||||
ui/help.rs 617 5-page help overlay (render only)
|
||||
ui/effect.rs 1860 / 41t Effect trait, 50+ effect types
|
||||
ui/app.rs 1475 / 30t App, ModelState, ViewState, AppMode (16), handle_key, autosave
|
||||
ui/grid.rs 1063 / 13t GridWidget (ratatui), column widths
|
||||
ui/help.rs 603 5-page help overlay (render only)
|
||||
ui/import_wizard_ui.rs 347 Import wizard rendering
|
||||
ui/cat_tree.rs 165 / 6t Category tree flattener for panel
|
||||
draw.rs 400 TUI event loop, frame composition
|
||||
main.rs 391 CLI entry (clap): open, import, cmd, script
|
||||
ui/cat_tree.rs 156 / 6t Category tree flattener for panel
|
||||
draw.rs 422 TUI event loop, frame composition
|
||||
main.rs 388 CLI entry (clap): open, import, cmd, script
|
||||
# other ui/*.rs are small panel renderers — skip unless changing layout/style
|
||||
```
|
||||
|
||||
@@ -251,4 +251,4 @@ Full guidance lives in `context/design-principles.md` §6. Quick reminders:
|
||||
|
||||
## Key dependencies
|
||||
|
||||
ratatui 0.30, crossterm 0.28, clap 4.6 (derive), serde/serde_json, indexmap 2, anyhow, chrono 0.4, pest + pest_derive, flate2 (gzip), csv, enum_dispatch. Dev: proptest, tempfile, pest_meta.
|
||||
ratatui 0.30, crossterm 0.29, clap 4.6 (derive), serde/serde_json, indexmap 2, anyhow, chrono 0.4, pest + pest_derive, flate2 (gzip), csv, enum_dispatch. Dev: proptest, tempfile, pest_meta.
|
||||
|
||||
Reference in New Issue
Block a user