cat / 012
clone

a spreadsheet for the terminal: lotus 1-2-3 looks, google sheets keys and formulas, one go binary

Merge branch 'main' into worktree-agent-a46c4a76e052afd9d

Dami committed 84dcbde
commit
84dcbde042ed2496505781a75cdebf9c63ea8a98
parent
7b08a67f32dc26668134b1e11d30285c7c1a0666
parent
92e5253fa14897097fc97c6f1c28f2d8bd5d5af4
author
Dami <dami.etoile@gmail.com>
3 files changed, +36 -2
MREADME.md1+
MROADMAP.md31++++++++++++++++++++++++++++--
Mdocs/contributing/ux.md6++++++
M README.md +1 -0
M ROADMAP.md +29 -2
@@ -1,7 +1,8 @@
11 # Roadmap22 3-Principles: inside the grid 012 behaves like Google Sheets; 1-2-3 is the4-visual identity around it. The main binary stays pure Go3+Principles: Google Sheets is the seed for behavior inside the grid and4+1-2-3 for the visual identity around it; both are inspiration, not specs5+to match in every detail. The main binary stays pure Go56 (`CGO_ENABLED=0`), and every feature ships with unit tests, a libghostty67 e2e test and reviewed golden screens. Visual and UX quality keep pace78 with features: see [UX and visual bar](docs/contributing/ux.md).
@@ -48,6 +49,32 @@ log macros record. Each step is useful on its own.
4849 | Shared viewing over SSH: several `012 serve` sessions open the same workbook; one edits, the others follow live with their own cursor, scroll and theme; presence shows who is where | Watch-along and review, one writer | M |4950 | Shared editing over SSH: every session edits, the server orders operations (no CRDT needed while one server holds the workbook), per-user undo, presence and edit ownership shown in the grid, saves by the server | Multiplayer 012 over SSH | L |5051 52+### 4. Toward 1.053+54+Solid before shared: what 012 already does keeps working from release to55+release, and shared editing builds on these guarantees. These come before56+shared editing in section 3.57+58+| Item | Result | Size |59+|---|---|---|60+| Files saved by each release kept as fixtures that every later build opens and saves unchanged; the `.012` format written down with a version | Old files keep opening | S |61+| Random sequences of edits, sorts, fills and region runs checked for invariants: undo all restores the start, save and reopen match, a full recalc agrees with the incremental one | Bugs between features found before users hit them | M |62+| A workbook of formulas where 012 matches Sheets on purpose (dates, text, rounding, errors, spills), results checked once in Sheets and asserted after; differences chosen on purpose listed in the docs | Formula results people rely on stay put | S |63+| Frame time and recalculation checked in `make check` against a baseline with a noise margin | Slowdowns fail the check, not a later benchmark | S |64+| A panic in any session saves the workbook for recovery and writes a short report, tested end to end | A crash loses nothing | S |65+| A week of real use by the owner, problems triaged into this page | Rough edges found by use | S |66+67+### 5. Around the grid68+69+| Item | Result | Size |70+|---|---|---|71+| Commands for scripts without the screen: `012 get`, `012 set`, `012 recalc`, `012 export` on a workbook file | 012 in scripts, cron and nushell pipelines | S to M |72+| `012 diff` cell by cell (values, formulas, formats, regions) and a git diff and merge driver for `.012` | Sheets kept in git review like code | M |73+| Formula tracing: precedents and dependents shown in the grid, a formula evaluated step by step | Finding why a number is wrong | M |74+| Named tables with structured references (`Sales[Amount]`); notebook regions are tables | Formulas that read by column name | M |75+| A sheet or chart exported as a static HTML page in 012's look | Sharing a sheet with someone without 012 | S |76+| Release archives and an install script served from the owner's nzip server | Installing without Go | S |77+5178 ## Later: other transports (shelved)5279 5380 Explored, not scheduled: carrying the same shared sessions over iroh
M docs/contributing/ux.md +6 -0