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-a0b418380892dde75

Dami committed e3098d8
commit
e3098d818ca03c6a5ea2cf5023e050629cd02bd8
parent
5dbb346ff14a1dbbae799cfa3f99be2a91c94bf6
parent
13697c4afd221c106e84bccceb721efd9142b51a
author
Dami <dami.etoile@gmail.com>
2 files changed, +24 -16
MROADMAP.md36++++++++++++++++++------------
Mdocs/terminal/ssh.md4++--
M ROADMAP.md +22 -14
@@ -39,20 +39,28 @@ as `$r1`, and refreshing a region re-runs what depends on it.
3939 | `012 nu` and the notebook sheet: a nushell prompt in the formula bar (history, Tab completion), results stacking as named live regions built on spills, `$r1` references with a dependency graph so refresh cascades, Freeze to values, other sheets reading `Shell!r1`, commands saved and never run on open, trust for files from elsewhere, timeouts and an output cap, off in `012 serve` unless configured | A reactive notebook of pipelines inside a spreadsheet | L |4040 | Nushell's own completions in the prompt; `nu_plugin_012` only if `--pipe` proves clumsy from inside nu | | S to M |4141 42-## Later: sharing a live sheet (shelved)43-44-Explored, not scheduled. `012 serve` gives each SSH session its own45-spreadsheet; saving over a file another session saved asks first, and46-that is all the sessions know of each other. One session host that runs47-a Bubble Tea program for any byte stream with window-size events, fed by48-SSH (`charm.land/wish/v2`), iroh tickets (the Go transport in49-`FelineStateMachine/allons` `local/transport/iroh`, which needs cgo and a50-prebuilt iroh-ffi archive, so it would sit behind a build tag), and the51-web (`NimbleMarkets/go-booba` serves Bubble Tea over52-WebSocket/WebTransport with ghostty-web; Bubble Tea v2 support53-unverified). Open questions: per-user sessions on one sheet versus54-mirroring one session, and whether the web page is served by the host or55-by a gateway dialing the iroh ticket.42+### 5. Toward multiplayer43+44+Sessions share one workbook through the server that already hosts them45+(`012 serve`), so every change is ordered in one place: the workbook's one46+mutation path (`Batch`/`Change`) becomes a stream of operations, the same47+log macros record. Each step is useful on its own.48+49+| Step | Result | Size |50+|---|---|---|51+| Streaming files: a sheet or linked range follows a file as it grows (CSV, TSV, NDJSON, NUON; `tail -f` style) or is rewritten, and a nushell region can follow a streaming pipeline, with rows arriving live and no full reload | Logs and feeds as live sheets; the change stream multiplayer needs | M |52+| 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 |53+| 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 |54+55+## Later: other transports (shelved)56+57+Explored, not scheduled: carrying the same shared sessions over iroh58+tickets (the Go transport in `FelineStateMachine/allons`59+`local/transport/iroh`, which needs cgo and a prebuilt iroh-ffi archive, so60+it would sit behind a build tag) and the web (`NimbleMarkets/go-booba`61+serves Bubble Tea over WebSocket/WebTransport with ghostty-web; Bubble Tea62+v2 support unverified). They would reuse the server-ordered operation63+stream above rather than a design of their own.5664 5765 ## Shipped5866
M docs/terminal/ssh.md +2 -2