l123 reimplements Lotus 1-2-3 R3.4a’s terminal UX in Rust with IronCalc, delivering slash menus, keyboard-first input, and native .xlsx round-trip.
Key Takeaways
Rust workspace with strict layering; IronCalc sits behind a swappable Engine trait; l123-parse translates @SUM/.. syntax to Excel format before compute.
Milestones M0-M8 complete: grid, formulas, .xlsx/CSV round-trip, 3D sheets, named ranges, undo, printing, 7 graph types, WYSIWYG icon panel with mouse support.
Authenticity contract: an experienced R3.4a user must drive it cold without docs; acceptance tests use keystroke transcripts verifying screen state output.
Formula syntax is 1-2-3 native: @SUM(A1..A5), #AND#/#OR#/#NOT# logical operators, first-char rule decides label vs. value entry without mode switching.
M9 macros (/X, {BRANCH}, {IF}) are planned; M10 themes and context help are in progress; API, keybindings, and file paths are not stable until v1.0.
Hacker News Comment Review
Terminal spreadsheets form a small but active niche: sc-im is the most established prior art with repeated HN appearances; sheetsui and cell are newer entries in the same space.
A commenter who maintains a working port of the official UNIX 1-2-3 binary to modern Linux cites the keyboard design as a genuine data-input efficiency win, not nostalgia, and notes LMBCS-to-UTF-8 as an unsolved gap that l123 sidesteps with its Rust rewrite.
VisiData surfaced as a recommendation for data wrangling and exploration, a related but distinct use case from l123’s goal of strict 1-2-3 behavioral fidelity.
Notable Comments
@nhatcher: names sc-im, sheetsui, and cell as the current field of terminal spreadsheet alternatives worth tracking alongside l123.
@taviso: maintains 123elf, a working port of the original UNIX 1-2-3 binaries to Linux; still uses it daily and notes LMBCS character encoding as the remaining portability gap.