Files

21 KiB
Raw Permalink Blame History

GridCraft roadmap

Stage: alpha · next: beta, ~25 points of "ready for real work" and ~160–240 h away

Last reviewed: 2026-10-11 · Last updated: 2026-10-12 · Change: minor (rows auto-fit oversized fonts on open and whole-row/column formatting) · Target: Microsoft Excel (Microsoft 365)

GridCraft aims at full Microsoft Excel parity, and at being better in places: faster, open (XLSX is the native format), fully scriptable by agents (MCP, control channel, CLI), and on the web. This page is the summary. The detail is in:

Headline numbers

Number Value Kind
Feature breadth (weighted) ~75% estimated, anchored on two measurements: ribbon catalog 274 / 290 (94.5%), worksheet functions 513 / 523 (98.1%; 504 working, 96.4%)
Ready for real work ~50% estimated from written weights (51.6); target-app-parity.md
Mainstream practitioner ~50% estimated: typical analyst/finance user, weekly features, × 0.90 interaction × 0.92 stability × 0.88 file exchange; method
Essentials user ~63% estimated: core features only, × 0.92 launch/stability × 0.95 clarity × 0.90 opening sent files; method
Remaining to beta ~160–240 Opus 5.5 agent-hours estimated; itemized in roadmap.md
Remaining to full parity ~700–1,100 Opus 5.5 agent-hours estimated; sum of the dimension rows below
Audience Ready % Opus 5.5 agent wall-clock hours to ~95% Work that dominates
Full target (ready for real work) ~50% ~650–1,050 Get & Transform and the data model, localization (twelve languages), charts depth, file fidelity (.xls, corpus, pass-through), PivotTables, collaboration, mobile
Mainstream practitioner ~50% ~200–310 File exchange with Excel users (corpus and Excel verification, pass-through, large files, .xls, encryption: 63–97 h), common-chart depth (30–45 h), PivotTables (20–30 h), keyboard and interaction (18–28 h), calc correctness and functions (20–33 h)
Essentials user ~63% ~60–100 Opening files people send (.xls import and saving with a password 24–36 h; macOS Finder open 2–4 h), launch stability (6–10 h), basic chart resize and polish (6–10 h), print and Page Layout (8–12 h), small editing and UI fixes (10–16 h)

Each tier is a subset of the one above, so its hours are too. Calibrated as in Effort and calibration (~6–10 h per readiness point for the remaining, verification-heavy work; single features measured from PRs #66, #100, #101). Parallelism: the full and mainstream work splits ~65–70% across 4–6 agents by area; the essentials work is mostly small fixes plus one long .xls track, so about half parallelizes (≈30–50 wall-clock hours with three agents).

Why alpha: all six core workflows in the alpha gate pass end to end on macOS with save and reopen, and the core workflow works end to end (open an XLSX, enter formulas and data, format, sort and filter, chart, pivot, print to PDF, save XLSX), but users still hit blocking gaps on real files: 100 MB workbooks don't open (#175), there's no .xls (#121), Arabic and Devanagari text isn't shaped (Chinese text still reported in #142), charts lose their type and options on round trip, and nobody has yet confirmed that Excel opens our output without a repair prompt across a real corpus. Beta needs those closed (see beta gates).

The 2026-10-07 numbers (catalog 89%, "feature depth ~65%", "~215 h to full parity") were re-measured. Catalog and function counts held or rose; the depth and hours moved because of new evidence: 82 issues filed by users and contributors in the repo's first five days, and scope the old estimate left out (localization, legacy .xls, Power Query and the data model, collaboration, mobile, AI).

By dimension

Dimension Ready for real work Hours to parity Doc
Features (13 areas, table below) ~59% (breadth ~75%) 300–485 target-app-parity.md
UI/UX fidelity ~55% 50–80 ui-parity.md
File formats ~50% 80–120 file-format-parity.md
Performance ~35% 35–55 target-app-parity.md
Stability ~60% 15–25 gaps.md
Localization ~10% (ribbon in 6 languages) 100–165 localization-parity.md
Hardware (multi-core calc, GPU, pen, multi-window) ~40% 25–40 hardware-parity.md
Platforms ~80% (no iOS/Android; ahead on Linux, BSD, RISC-V) 30–60 target-app-parity.md
Ecosystem / add-ins ~10% (VBA out of scope; own scripts, MCP, CLI) 25–40 target-app-parity.md
AI features ~15% (agent control strong; no in-app assistant) 30–50 target-app-parity.md
Total ~50% ~700–1,100

Features

Area Breadth Ready Hours Doc
Formula language and calculation ~92% ~72% 20–30 target-app-parity.md
Worksheet functions 96.6% measured ~82% 16–26 function-parity.md
Editing, navigation, clipboard, fill ~90% ~70% 15–25 ui-parity.md
Cell formatting, styles, conditional formatting ~95% ~80% 8–14 target-app-parity.md
Sort, filter, tables, validation, outline ~82% ~70% 10–16 target-app-parity.md
PivotTables ~65% ~45% 25–40 target-app-parity.md
Charts and sparklines ~50% ~30% 40–60 chart-parity.md
Page layout, print, PDF ~80% ~55% 12–20 target-app-parity.md
What-if and analysis (Goal Seek, Solver, ToolPak, Forecast) ~50% ~40% 22–35 target-app-parity.md
Get & Transform, external data, data model ~15% ~10% 60–100 target-app-parity.md
Insert objects (pictures, shapes, ink, SmartArt, equations) ~55% ~45% 25–40 target-app-parity.md
Review, comments, protection, collaboration ~55% ~40% 35–55 target-app-parity.md
Automation (recorded scripts; no VBA) ~30% ~20% 12–20 target-app-parity.md

Languages

The ribbon is translated into Japanese, Simplified Chinese, Korean, Brazilian Portuguese, Russian and German (266–268 labels each, ~12% of ~2,200 strings; merged 10-10 in #31, #104, #82, German added 10-11), the interface follows the system language, and CJK, Thai and Hebrew text falls back to system fonts (#38). Dialogs, menus and messages are English; formulas and number formats are en-US only. Localized German formulas and numbers are in PR #163. Detail: localization-parity.md.

Language Code Status UI strings
English en full (source language) 100%
Simplified Chinese zh-Hans menus only ~12%
Spanish es none 0%
Hindi hi none 0%
Arabic ar none (no RTL layout, no shaping) 0%
French fr none 0%
Portuguese pt-BR menus only ~12%
Indonesian id none 0%
Japanese ja menus only ~12%
German de menus only ~12%
Korean ko menus only ~12%
Vietnamese vi none 0%

Other shipped languages: 2 (Russian and German, menus only, ~12%).

Upcoming

Ranked; estimates in Opus 5.5 agent-hours. Detail and the full beta-gate list in docs/roadmap.md.

  1. Land the open PR queue (50 open PRs on 2026-10-10, many fixing listed gaps: recalc and spill correctness, chart kind round-trip, CJK font fallback, macOS Finder open, German and Chinese UI). Review and merge: 8–15 h.
  2. XLSX fidelity on a real-world corpus, with Excel opening our output without repair: 25–35 h.
  3. Large workbooks and recalc speed: 100 MB XLSX, 1M rows, multi-threaded recalc: 40–60 h.
  4. Charts depth: kinds and options round-trip, axes, trendlines, error bars: 25–35 h.
  5. Text in every script (CJK, Thai, Arabic, Devanagari) in cells and PDF: 12–20 h.
  6. Legacy .xls import and password-protected workbooks: 20–30 h.
  7. Localization: extend the catalog past the ribbon, then the twelve languages: 100–165 h.

Progress log

Date What landed
2026-10-12 Rows auto-fit oversized fonts: opening a file and whole-row/column formatting grow non-custom rows to their tallest font (#833)
2026-10-12 Number formats: parsing a format code is linear in its length (long runs of [, , or / no longer take quadratic time), and an unclosed [ is a literal when splitting sections as well as when tokenizing (#810)
2026-10-12 Number formats: a fraction denominator with 65,536 zeros no longer crashes; format codes are capped at 255 characters like Excel (longer codes display as General, TEXT gives #VALUE!) (#807)
2026-10-12 Security: cell hyperlinks open only http, https and mailto, after a confirmation; other schemes (file:, smb:, UNC, custom handlers) are refused (#777, part 1)
2026-10-12 Deleting several Ctrl-selected rows or columns removes them all in one undo step (#758)
2026-10-12 XLSX chart sheets are kept on open and save: the sheet, its drawing and chart (with style and colours) are written back unchanged in their place among the worksheets, and left out when the sheet they plot is deleted or renamed or a worksheet took their name (#727)
2026-10-12 CSV and tab-separated export is capped at 512 MiB: a sheet whose used range would expand to more (two cells far apart, such as A1 and XFD1048576, are 16 GiB of commas) is refused with the rows, columns and limit, before anything is allocated or written (#528)
2026-10-12 PDF writer hardening: text width cannot overflow, all-zero dash arrays and negative or NaN stroke widths are sanitised, non-finite sizes and positions draw nothing (#812)
2026-10-12 PDF export writes the document title and author as UTF-16BE when they are not ASCII, so viewers show accents, currency signs and non-Latin text correctly (#813)
2026-10-12 TEXT() over a range and chart labels parse each number format code once instead of once per value (#806)
2026-10-12 SUBTOTAL(109) over hidden rows recalculates after Row Height, AutoFit Row Height and Ungroup reveal rows (found by the command-sequence fuzz)
2026-10-12 Page Layout view: drag the margin edges on the rulers to set the page margins (resize cursor, live preview, value tooltip, one undo step, Esc cancels) (#792)
2026-10-12 Forecast Sheet gets Forecast Start: begin the forecast inside the history to compare it with the actuals (#785)
2026-10-12 Ink strokes save as unfilled DrawingML paths and reopen as editable ink with their points, colour and width; icons in #551 remain a follow-up
2026-10-12 The selection outline stays visible when extended to the last row (Ctrl+Shift+Down): its sides are cut to the viewport instead of stroking a 20-million-point rectangle (#687)
2026-10-12 File › Print selects a system printer, copies, duplex and grayscale, submits PDF jobs through craft-print on a worker and shows spooler errors; browser printing and PDF export remain available
2026-10-11 Command-sequence fuzzing: random command sequences checked against undo/redo, XLSX round-trip and full recalculation; fixes for the table, legacy-array, spill, AutoSum, Watch Window and sheet-copy bugs it found
2026-10-11 Password-protected workbooks open: GridCraft asks for the password and decrypts Agile and Standard encryption (#11)
2026-10-11 Text boxes keep their formatting: run size, bold, italic, typeface, text colour and outline, alignment, vertical anchor and "no outline" (#377)
2026-10-11 Desktop printing opens the print PDF in the system viewer; Save As offers CSV, web page and PDF; macOS File › Properties opens File › Info (#370, #343)
2026-10-11 Windows: DirectX 12 shaders compile with FXC, so a missing or stray dxcompiler.dll no longer stops the app at start (#339, #354)
2026-10-11 Merged cells draw their whole outline: right and bottom edges come from the last column's and last row's cells (#376)
2026-10-11 Shrink to fit draws too-wide text and numbers in a smaller font inside the cell or merged area (#375)
2026-10-11 Shift+Space and Ctrl+Space select the row / column without starting an edit; Control+Space on Mac (#338)
2026-10-11 Workbooks reopen at their saved scroll position (topLeftCell, also with frozen panes) and save the current one back (#378)
2026-10-11 Protect Sheet passwords use Excel-compatible hashes and round-trip in XLSX sheetProtection (imported passwords verify instead of being dropped)
2026-10-11 Review › Protect Workbook opens a dialog with an optional password (Excel-compatible hash, kept in XLSX workbookProtection); unprotecting verifies it (#345)
2026-10-11 Formula bar, name box and dialogs fall back to the cell font: Hebrew (and any script cells can show) no longer turns into boxes there (#349)
2026-10-11 Headers and footers: first-page and odd/even variants are read, kept, printed and edited in Page Layout view; Insert › Header & Footer edits the header in place (#344)
2026-10-11 Legacy Excel 97-2003 .xls (BIFF8) import with formulas, number formats, merges, sizes and names (#121)
2026-10-11 XLSX pass-through: custom XML, external links, connections, query tables, printer settings, form/ActiveX controls and OLE objects are kept on save (#330, #324)
2026-10-11 Data › Forecast › Forecast Sheet: a new sheet with the history, FORECAST.ETS forecast, confidence bounds, statistics and a chart (#322)
2026-10-11 Startup no longer panics on a system font egui can't parse: fonts are validated and skipped (#226)
2026-10-11 Ctrl+drag on the fill handle swaps copying and extending a series (#264)
2026-10-11 Odd-period bond functions ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD: Financial 55 / 55 (#275)
2026-10-11 PERCENTOF and EUROCONVERT worksheet functions (#279)
2026-10-11 BAHTTEXT: amounts in Thai words with Baht and Satang (#291)
2026-10-11 TRIMRANGE: ranges and arrays without blank outer rows and columns (#296)
2026-10-11 Selected charts, pictures and shapes can be deleted from the keyboard (#213)
2026-10-11 Ribbon translated into German (266 labels; de, de-DE, de-AT, de-CH locale tags resolve to German)
2026-10-11 View › Interface size: a saved 75–200 % scale for the whole window (#230)
2026-10-11 View › Formula Bar and Zoom 100% reachable from the CLI and MCP (#289)
2026-10-11 Freeze panes by dragging the freeze handles on the header edges (#195)
2026-10-11 XLSX: threaded comments (replies, resolved, timestamps) and note visibility survive a save (#300)
2026-10-11 Cell checkboxes: Insert › Checkbox on the ribbon, Excel's Delete and value rules, XLSX round trip as Excel cell controls (#196)
2026-10-11 Review › Allow Edit Ranges with Excel-compatible password hashes, kept in XLSX (#307)
2026-10-11 PivotTable calculated fields (pivot.calculatedField), evaluated on sums like Excel, with XLSX round-trip (#304)
2026-10-11 PivotCharts (insert.pivotChart): charts bound to a PivotTable's report, following refreshes and layout changes (#311)
2026-10-11 FORECAST.ETS, FORECAST.ETS.CONFINT, FORECAST.ETS.SEASONALITY, FORECAST.ETS.STAT: AAA exponential smoothing forecasts (#314)
2026-10-11 File tab Backstage view (Home, New, Open, Info, Save As, Print preview, Export, Options) and file.options (#174)
2026-10-10 Ribbon translated into Japanese, Chinese, Korean, Brazilian Portuguese and Russian with system-language default (#31, #104, #82); CJK/Thai/Hebrew font fallback (#38); clear messages for encrypted and .xls files (#17); smooth line charts (#62). Progress docs restructured to the craftrules standard; full re-measure (this page). Initial ribbon key tips (#43), in-place text box editing (#84), copy as HTML table (#36). ODS and XLSB data import (#100, #101); recalc linear in the number of range formulas (#66); RISC-V Linux build; Flatpak repository on Pages; web cell-commit trap fixed
2026-10-09 Community fixes: spill range operator A1#, sheet-scoped names, protection refuses locked-cell edits, Insert/Delete Cells adjust references, DATE(1900,2,29), SUMIF sizing, ROUND at 15 digits, _xlpm. LAMBDA parameters in XLSX, vertical scrollbar, system appearance, border previews; v0.4.0
2026-10-08 v0.2.0 and v0.3.0 releases; Flatpak, AppImage zsync, branded DMG; desktop log file; DirectX 12 default on Windows
2026-10-07 About window with contributor and model credits; macOS release runner
2026-10-06 M0–M13 first pass: engine, 478 functions, XLSX/CSV, egui UI, charts, PivotTables with XLSX round-trip, PDF and printing, what-if, spelling, Draw, task panes, MCP, CLI, web build, release packaging
2026-10-05 Repository created

Revision history

Date Change Summary
2026-10-12 minor Rows auto-fit oversized fonts on open and whole-row/column formatting (#833); progress log row
2026-10-12 minor Progress log: multi-area row/column delete (#758)
2026-10-12 trivial Progress log: XLSX chart sheets kept on save (#727)
2026-10-12 trivial Progress log: CSV export size cap (#528)
2026-10-12 minor Progress log: margins dragged on the Page Layout rulers (#792)
2026-10-12 minor Ink preservation across XLSX save/reopen (ink portion of #551)
2026-10-12 minor Desktop File > Print now discovers printers and submits PDF jobs through pinned craft-print with printer choice, copies, duplex and grayscale; browser printing and PDF export remain available. Remaining print parity includes page ranges and driver-specific tray/options UI; physical printer fidelity needs hardware validation.
2026-10-11 minor Password-encrypted workbooks open (#11); progress log row
2026-10-11 minor Forecast Sheet (#322); progress log row
2026-10-11 minor Worksheet functions 505 / 523 (ODD* bond functions); progress log row
2026-10-11 minor Worksheet functions 503 / 523 (PERCENTOF, EUROCONVERT); progress log row
2026-10-11 minor Worksheet functions 502 / 523 (BAHTTEXT); progress log row
2026-10-11 minor Worksheet functions 502 / 523 (TRIMRANGE); progress log row
2026-10-11 minor Selected objects can be deleted from the keyboard (#213)
2026-10-11 minor Catalog 258 → 260 / 290: View › Formula Bar and Zoom 100% (#289)
2026-10-11 minor Progress log: XLSX threaded comments round trip (#300)
2026-10-11 minor Catalog 258 → 259 / 290: Allow Edit Ranges (#307)
2026-10-11 minor Worksheet functions 505 / 523 (FORECAST.ETS family); progress log row
2026-10-11 minor Czech (cs) listed under other shipped languages: ribbon only, ~12%
2026-10-10 minor Readiness-by-audience table with hours to ~95% per audience; full number unchanged (additive weighted sum)
2026-10-10 minor Added Mainstream practitioner (~50%) and Essentials user (~63%); languages updated for the 10-10 merges (ribbon in ja, zh, ko, pt-BR, ru); localization 5%→10%; full number re-checked (51.6, unchanged)
2026-10-10 minor Checked against the alpha gate (six core workflows pass): stays alpha
2026-10-10 major Re-measured against Excel for Mac 16.113.4: stage alpha, breadth ~75%, ready ~50%, ~160–240 h to beta, ~700–1,100 h to full parity; restructured to the progress-docs standard; detail moved to docs/
2026-10-07 major First estimates: catalog 89%, functions ~93%, depth ~65%, ~35 h to alpha, ~215 h to full parity