The UX bar, roadmap goals and README now say that inside the grid one23 behaves like Sheets, with 1-2-3 as the visual identity.
- commit
- efa91386b904287f935abe23648b5aeebc8264ab
- parent
- 08cfa27e108c71f6495671033b51b6318996913b
- author
- Dami <dami.etoile@gmail.com>
| M | README.md | 27 | +++++++++++++++--------- |
| M | ROADMAP.md | 8 | ++++---- |
| M | docs/ | 33 | +++++++++++++++++++----------- |
@@ -1,6 +1,7 @@
11 # one2322 3-A Lotus 1-2-3 style spreadsheet for the terminal, built on Bubble Tea v2.3+A spreadsheet for the terminal with a Lotus 1-2-3 look and Google Sheets4+behavior, built on Bubble Tea v2.45 56 ```sh67 make run # build (pure Go, CGO_ENABLED=0) and start@@ -9,17 +10,23 @@ make run # build (pure Go, CGO_ENABLED=0) and start
910 1011 ## Keys1112 13+Inside the grid, one23 works like Google Sheets.14+1215 | Key | Action |1316 |---|---|14-| Arrows, PgUp/PgDn, Tab/Shift+Tab, Home | Move the cell pointer |15-| Type text | Label (`'` left, `"` right, `^` center) |16-| Type `0-9 + - . ( @ # $ =` | Value or formula, e.g. `+A1*2`, `@SUM(A1..A5)` |17-| Arrow after an operator | POINT mode: arrow to a cell, `.` anchors a range |18-| F2 | Edit the current cell |19-| F5 | Go to an address |20-| Del | Erase the current cell |21-| `/` or `<` | Menu: Worksheet, Range, File, Quit (type first letters, e.g. `/fs`) |22-| F1 | Help |17+| Type | Replace the cell. `=` starts a formula, `'` forces text; `$1,200` and `12%` are numbers |18+| Enter / Tab | Accept and move down / right (Enter returns to where a run of Tabs began) |19+| Enter or F2, double-click | Edit the cell |20+| Arrows while typing a formula | After an operator, pick a cell; Shift+arrows pick a range |21+| Shift+arrows, drag, Shift+click | Select; the status line shows Sum, Avg and Count |22+| Ctrl+arrows | Jump to the edge of the data (add Shift to select) |23+| Click a header, Ctrl+Space, Shift+Space | Select whole columns or rows |24+| Ctrl+A | Select the data, then everything |25+| Del / Backspace | Clear the selection |26+| Ctrl+S, Ctrl+O, Ctrl+Q | Save, open, quit |27+| Ctrl+G or F5 | Go to a cell |28+| F10 | Menu |29+| F1 or Ctrl+/ | Keyboard shortcuts |2330 2431 ## Layout2532 @@ -1,7 +1,7 @@
11 # Roadmap: past 1-2-322 3-Principles: keyboard first, 1-2-3 muscle memory stays the default, the main4-binary stays pure Go (`CGO_ENABLED=0`), and every feature ships with unit3+Principles: inside the grid one23 behaves like Google Sheets; 1-2-3 is the4+visual identity around it. The main binary stays pure Go (`CGO_ENABLED=0`), and every feature ships with unit55 tests, a libghostty e2e test and reviewed golden screens. Visual and UX66 quality keep pace with features: see [docs/UX.md](docs/UX.md).77 @@ -9,8 +9,8 @@ quality keep pace with features: see [docs/UX.md](docs/UX.md).
99 1010 | Phase | Goal | Done when |1111 |---|---|---|12-| 1 | The engine can do everything 1-2-3 R2 users reach for daily, and every change can be undone | Undo/redo covers every mutation; /Copy, /Move, /Worksheet Insert and Delete adjust relative and absolute references; /Range Format and range names work and persist; date and finance functions match excelize on a differential test suite |13-| 2 | Finding and using features is faster than in any terminal spreadsheet | Ctrl+P palette reaches every command with its key shown; formulas autocomplete with signature hints; the status line shows live stats of the pointed range; precedents and dependents are visible and jumpable; titles freeze; search and filter work; fill down and series work; a vim keymap is available |12+| 1 | The engine does what Sheets users reach for daily, and every change can be undone | Undo/redo (Ctrl+Z/Ctrl+Y) covers every mutation; copy, cut and paste (Ctrl+C/X/V, paste values) and insert/delete rows and columns adjust relative and `$absolute` references; number formats (Format menu, auto-detected `$` and `%` on entry) and named ranges work and persist; Sheets' everyday functions, dates and finance functions match excelize on a differential test suite |13+| 2 | Finding and using features is faster than in any terminal spreadsheet | A Sheets-structured menu bar (File Edit View Insert Format Data Help) and a searchable command palette reach every command with its key shown; formulas autocomplete with signature hints; precedents and dependents are visible and jumpable; rows and columns freeze; find/replace and filter work; fill down (Ctrl+D) and series fill work; an optional vim keymap exists |1414 | 3 | one23 uses the terminal it's running in to the fullest, and degrades gracefully | Copy and paste ranges through the system clipboard; charts render as images in Ghostty/kitty and as text elsewhere; URLs are clickable; error cells are marked beyond color; cursor shape reflects the mode; the theme follows light and dark |1515 | 4 | Data moves in and out of one23 without friction or cgo | CSV/TSV, XLSX, SQLite, Parquet and Lotus .wk1 import, with export where it makes sense; large imports show progress; the binary still builds with `CGO_ENABLED=0` |1616 | 5 | one23 goes where 1-2-3 couldn't | Multiple sheets with cross-sheet references; derived frequency and pivot sheets; recorded and Starlark macros; an SSH server mode; opt-in decimal arithmetic; VHS demo tapes in CI |@@ -5,14 +5,19 @@ follow-up task.
55 66 ## Principles77 8-1. **1-2-3 muscle memory is the default.** `/` menus with first-letter9- selection, POINT mode, F2/F5, label prefixes. New power is added10- alongside, never by breaking these.8+1. **Inside the grid, behave like Google Sheets.** Assume users know9+ Sheets, not 1-2-3. Typing replaces a cell, `=` starts a formula, Enter10+ commits and moves down (back to the starting column after Tabs), Tab11+ moves right, Shift+arrows and the mouse select, Ctrl+arrows jump to the12+ data edge, and Sheets shortcuts do what Sheets does. When Sheets and13+ 1-2-3 disagree, Sheets wins. 1-2-3 lives on as the visual identity:14+ the control panel doubling as the formula bar, the mode indicator, the15+ crisp character grid.1116 2. **Everything is discoverable.** Every action is a registered command1217 (`internal/ui/commands.go`) with a title and one-line description. It is13- reachable from the slash menu where 1-2-3 would put it, from key bindings14- in `keymap`, and from help (generated from the registry). When the15- command palette lands, it lists every registered command with its keys.18+ reachable from the menu where Sheets would put it, from key bindings in19+ `keymap`, and from help (generated from the registry). When the command20+ palette lands, it lists every registered command with its keys.1621 3. **The screen always says what's going on.** The mode indicator is always1722 correct. The third panel line tells the user what keys do in any1823 non-READY state. Prompts live on the second panel line.@@ -31,10 +36,13 @@ follow-up task.
3136 - Text on a colored background needs about 4.5:1 contrast against both3237 reference palettes (`e2e/palette_test.go`). Check it in the gallery.3338 - Never rely on color alone: state also shows as text (mode indicator,34- `[modified]`, `ERR`, `CIRC`).35-- Numbers right-aligned, labels left unless prefixed, headers centered.36- Menu items separated by two spaces. Keys shown as `F2`, `Ctrl+Z`, `Del`37- (see `keyLabel`).39+ `modified`, `#DIV/0!`, `Circular reference`).40+- Numbers right-aligned, text left, booleans and errors centered, one41+ column of padding, text overflowing into empty neighbors: as Sheets.42+ Headers centered. Menu items separated by two spaces. Keys shown as43+ `F2`, `Ctrl+Z`, `Del` (see `keyLabel`).44+- The active cell is always distinct from the rest of a selection, and45+ the headers of selected rows and columns are highlighted.3846 - Layout works from 60x16 up to very wide terminals. Nothing jumps3947 position between frames; overlays don't shift the grid.4048 - Render only what's visible. A keystroke on a 10,000-cell sheet must feel@@ -43,7 +51,7 @@ follow-up task.
4351 ## Required with every user-facing change4452 4553 - [ ] Registered command(s) with title and description; key binding in46- `keymap` if it has one; menu entry where 1-2-3 would have it.54+ `keymap` if Sheets has one; menu entry where Sheets would have it.4755 - [ ] Unit tests in `internal/ui` driving `Update`, plus engine tests.4856 - [ ] An e2e test in `e2e/` for the main flow.4957 - [ ] Golden screen(s) in `e2e/screens_test.go` for every new visual state,@@ -51,7 +59,8 @@ follow-up task.
5159 - [ ] `make screens`, then look at `e2e/testdata/screens/gallery.html`5260 (serve it over HTTP and screenshot it, or open it in a browser).5361 Fix anything misaligned, low-contrast, cramped or clipped before54- committing.62+ committing. Screens are drawn from libghostty's cell grid, so they63+ match what a terminal shows.5564 - [ ] README keys table updated if keys changed.5665 5766 ## Review checklist for screenshots