mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-24 10:46:50 -06:00
137 lines
9.5 KiB
Markdown
137 lines
9.5 KiB
Markdown
# GridCraft roadmap
|
||
|
||
GridCraft aims at full Microsoft Excel parity — and to be better: faster, open (XLSX is the
|
||
native format), fully scriptable by agents (MCP + control channel + CLI), and available on the
|
||
web.
|
||
|
||
## Status (2026-10-07)
|
||
|
||
### Where we are
|
||
|
||
| Measure | Value | Notes |
|
||
|---|---|---|
|
||
| Ribbon/menu command catalog | **89%** (258 / 290) | `cargo xtask parity` → [`docs/parity.md`](docs/parity.md). Home, Draw, Page Layout, Formulas, Automate, Chart Design and PivotTable Design are at 100%. |
|
||
| Worksheet functions | **~93%** of Excel's ~545 | Missing: ODDF*/ODDL*, BAHTTEXT, IMAGE, TRANSLATE, COPILOT/PY, STOCKHISTORY, RTD |
|
||
| Feature depth (weighted) | **~65%** | The catalog counts a command once it exists; many are shallower than Excel's (see "What's left") |
|
||
| Tests | 332 passing | engine, formula, functions, calc, XLSX (incl. PivotTable round-trip), PDF, MCP, CLI, kittest UI |
|
||
|
||
The catalog number is generous: it says "this button does something real", not "it does
|
||
everything Excel's does". The weighted depth figure is our honest estimate of how much of what an
|
||
Excel power user relies on works as well as in Excel.
|
||
|
||
### How close to an alpha?
|
||
|
||
**About 80% of the way to an alpha. Estimate: ~35 wall-clock hours of Claude Opus 5.5 agent
|
||
work** (2–3 days with 2–3 parallel agents), plus a few minutes of human time to set up release
|
||
secrets.
|
||
|
||
Alpha means: someone can download a signed build, open their real workbooks, edit and save them
|
||
without losing data, and not hit a crash in a normal session. The gates:
|
||
|
||
| Alpha gate | State | Est. hours |
|
||
|---|---|---|
|
||
| Signed release builds on every platform | Workflows and packaging ready; **blocked on the `release` environment and secrets, which need a human** (see [`docs/releasing.md`](docs/releasing.md)). Then a test build per platform | 4 |
|
||
| XLSX fidelity on real files | Round-trip tests pass for our own files. Needs a corpus run on real-world workbooks, and confirming Excel opens our output (including PivotTables) with no repair prompt | 10 |
|
||
| Performance | Virtualised grid and O(log n) geometry are in. Still need: 100k-cell edit recalc under 100 ms (currently ~0.4 s), faster write-back, 1M-row open | 8 |
|
||
| Never-crash soak | Every-command fuzz test exists. Needs a longer randomised UI soak and an autosave/recovery check | 4 |
|
||
| Papercuts | Dark-mode row/column headers, a true Page Layout (paper) view, focus edge cases, error messages | 6 |
|
||
| Docs and first-run | README, CLI/MCP docs exist; needs a "getting started" page and release notes | 3 |
|
||
| **Total** | | **≈ 35** |
|
||
|
||
### How far to 100% parity?
|
||
|
||
**Estimate: ~180 wall-clock hours of Claude Opus 5.5 agent work beyond the alpha** (about 1–1.5
|
||
weeks running continuously with 3–4 parallel agents), so **≈ 215 hours in total from today**.
|
||
Breakdown under "What's left" below.
|
||
|
||
Scope decisions that affect the count: VBA is out of scope (GridCraft has its own recorded and
|
||
editable scripts instead), and features that need Microsoft cloud services (Copilot, live Stocks/
|
||
Geography data types, co-authoring through OneDrive, Smart Lookup, Translate) will be replaced
|
||
by open equivalents or left out, not cloned.
|
||
|
||
### What's left
|
||
|
||
| Area | What's missing | Est. hours |
|
||
|---|---|---|
|
||
| PivotTables | Slicers and timelines, calculated fields/items, PivotCharts, value/label filters, number grouping | 24 |
|
||
| Charts | Trendlines, error bars, full axis options (log scale, units, crossing), element-level Format pane, chart sheets, Recommended Charts dialog, maps | 26 |
|
||
| Data | Solver, Analysis ToolPak, Forecast Sheet, Get & Transform beyond CSV/JSON/HTML (Power Query editor lite), relationships / data model | 34 |
|
||
| Page layout & print | True Page Layout view, header/footer editor on the page, print preview polish | 12 |
|
||
| Insert & Review | Equations, WordArt, SmartArt-lite, signature line, comment navigation, Show Changes, Allow Edit Ranges, notes ↔ comments conversion | 20 |
|
||
| XLSX depth | Remaining OOXML parts (form controls, slicer caches, external links, OLE stubs), round-trip of everything we don't model | 16 |
|
||
| Functions | The remaining ~35 functions, exact Excel edge-case behaviour across the long tail | 10 |
|
||
| Performance | Parallel recalc, 1M-row workbooks everywhere (sort, filter, fill), memory | 14 |
|
||
| Fidelity | Side-by-side pixel tuning against Excel, keyboard shortcut completeness, accessibility, localisation | 24 |
|
||
| **Total** | | **≈ 180** |
|
||
|
||
**Working today**
|
||
- Engine: A1/R1C1 formula parser with reference adjustment, dependency-graph recalculation with
|
||
dynamic arrays (spill + `#SPILL!`), cycle detection, LET/LAMBDA/MAP/REDUCE/SCAN/BYROW/BYCOL/
|
||
MAKEARRAY, structured table references, defined names, INDIRECT/OFFSET/INDEX references,
|
||
478 worksheet functions (math, statistics and distributions, text and regex, lookup incl.
|
||
XLOOKUP/FILTER/SORT/UNIQUE/VSTACK, dates, financial incl. bonds, engineering incl. complex
|
||
numbers and Bessel, database, information).
|
||
- Number formats: Excel's full format-code language (sections, conditions, colours, dates and
|
||
elapsed time, fractions, scientific, accounting fill), General narrowing to column width.
|
||
- Files: XLSX read/write (styles, themes, merges, CF, validation, tables, comments, hyperlinks,
|
||
charts, pictures, sparklines, print settings, defined names, shared/array/dynamic formulas),
|
||
CSV/TSV with encoding and delimiter detection, HTML export, JSON.
|
||
- Editing: cell entry with type detection and auto-formats, in-cell and formula-bar editing,
|
||
point mode (click/drag/arrow references), reference colouring, F4 anchor cycling, function
|
||
autocomplete and argument hints, copy/cut/paste and Paste Special (values, formats, transpose,
|
||
operations, link, skip blanks), AutoFill series (numbers, dates, months, weekdays, custom lists,
|
||
text+number), Fill Series, Flash Fill, find/replace with wildcards, Go To / Go To Special,
|
||
undo/redo with history, format painter.
|
||
- Formatting: fonts, fills, all border styles, alignment (wrap, indent, rotation, merge), number
|
||
formats, 47 cell styles, 60 table styles, conditional formatting (cell rules, text, dates,
|
||
duplicates, top/bottom, averages, data bars, colour scales, icon sets, formulas), automatic
|
||
row heights, autofit, hide/unhide, freeze panes.
|
||
- Data: sort (multi-level, by colour, custom lists), AutoFilter (values, custom, top 10,
|
||
average, colour), tables with totals rows, remove duplicates, text to columns, data validation
|
||
with error alerts, grouping/outline, subtotals.
|
||
- PivotTables: Insert/Recommended PivotTables, field list pane, compact/outline/tabular layouts,
|
||
date grouping, sort, filters, show-values-as, refresh, and XLSX round-trip.
|
||
- Page layout & print: Page Break Preview, print settings, PDF export and printing.
|
||
- What-if: Goal Seek, scenarios, data tables. Spelling (system word list) and thesaurus.
|
||
- Draw: pen, highlighter, eraser, ink strokes and Ink to Shape. Task panes: Comments (threaded
|
||
replies, resolve), Watch Window, Selection, Format Chart.
|
||
- Charts: column, bar, line, area, pie, doughnut, scatter, bubble, radar, histogram, waterfall,
|
||
funnel, treemap, sunburst, box & whisker, stock and combo charts; sparklines.
|
||
- UI (egui): Excel-style title bar with Quick Access Toolbar and AutoSave, the full ribbon with
|
||
galleries (cell styles, table styles, colour palettes, conditional formatting menus),
|
||
contextual Table/Chart Design tabs, formula bar with Name Box, virtualised grid (smooth
|
||
scrolling, zoom, frozen panes, text overflow), sheet tabs (rename, reorder, colour, hide),
|
||
status bar with Sum/Count/Average and zoom, dialogs (Format Cells, Formula Builder, Find and
|
||
Replace, Sort, Name Manager, Data Validation, Paste Special…), command palette, dark mode.
|
||
- Agents: every action is an engine command; JSON control channel in the desktop app (pointer,
|
||
keyboard, dialogs, screenshots); MCP server (headless or bridged); CLI (`info`, `convert`,
|
||
`eval`, `cat`, `run`, `commands`, `functions`, `mcp`, `send`).
|
||
- Platforms: macOS, Windows, Linux, FreeBSD; web (WASM via trunk). Release workflows for
|
||
signed/notarized macOS universal DMG, signed Windows x64/x86 MSI + zip, Linux AppImage/deb/rpm/
|
||
tar.gz + Flatpak manifest, FreeBSD tarball and a web zip.
|
||
|
||
## Milestones
|
||
|
||
| # | Milestone | Status |
|
||
|---|---|---|
|
||
| M0 | Foundation: core, number formats, formula language, functions, model, calc, XLSX/CSV, engine | ✅ done |
|
||
| M1 | Excel look: chrome, ribbon, formula bar, grid, tabs, status bar, control channel | ✅ done (polish continues) |
|
||
| M2 | Formatting completeness | ✅ done |
|
||
| M3 | Editing power (AutoComplete, spelling, drag-move/copy) | ✅ done |
|
||
| M4 | Data (advanced filter, consolidate, what-if) | 🟡 most; Solver, ToolPak and Power Query remain |
|
||
| M5 | Formulas tab (trace arrows, watch window, evaluate, error checking) | ✅ done |
|
||
| M6 | Conditional formatting manager parity | ✅ done |
|
||
| M7 | Charts parity | 🟡 partial; Format pane in, trendlines/axes/error bars remain |
|
||
| M8 | Insert & Review | 🟡 partial; ink, icons, comments pane in |
|
||
| M9 | Page layout & print | 🟡 most; true Page Layout view remains |
|
||
| M10 | PivotTables, Solver, Analysis ToolPak | 🟡 PivotTables in; slicers, Solver, ToolPak remain |
|
||
| M11 | Automation (record actions, scripts) | ✅ done |
|
||
| M12 | Performance, accessibility, i18n | 🟡 partial |
|
||
| M13 | Release & polish | 🟡 tooling ready; needs release secrets |
|
||
|
||
## How to measure
|
||
|
||
- `cargo xtask parity` — catalog coverage (feature names from Excel's ribbon and menus).
|
||
- `cargo test --workspace` — engine, formula, function, XLSX and UI behaviour.
|
||
- `cargo run --release -p gridcraft-ui-egui --example snapshot -- --sample sales out.png` — look at the UI offscreen.
|