No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Merith-TK 935f9f0944
All checks were successful
build / build (push) Successful in 43s
feat(sheets): always quote expressions in .sheet.csv, pad after close-quote
SaveSheetCSV now force-quotes any cell whose raw text starts with '='
(formulas and lua). This ensures formulas containing commas (e.g.
=COMBIN(5,2)) are parsed as single fields on reload.

Trailing column-alignment padding is placed AFTER the closing quote so
parsers do not treat whitespace as part of the value. csv.Writer is
replaced with a manual line builder because csv.Writer cannot force-quote
a single field without QuoteAll (which would quote every field).

Test fixture test-eval.sheet.csv regenerated with quoted expressions.
2026-07-20 11:50:37 -07:00
.forgejo/workflows ci: build workflow (checkout, setup-go, upx, artifacts) 2026-07-17 16:56:45 -07:00
.opencode update harness configs 2026-07-15 17:24:05 -07:00
cmd feat(sheets): always quote expressions in .sheet.csv, pad after close-quote 2026-07-20 11:50:37 -07:00
internal/code feat(theme): two-mode theming for res-calc/res-sheets/res-code 2026-07-18 07:27:28 -07:00
lib feat(sheets): always quote expressions in .sheet.csv, pad after close-quote 2026-07-20 11:50:37 -07:00
tests/sheets feat(sheets): always quote expressions in .sheet.csv, pad after close-quote 2026-07-20 11:50:37 -07:00
.gitignore feat(sheets): raw copy/cut, calc subcommand, function infra, .sheet ext 2026-07-15 17:24:05 -07:00
go.mod build: bump core to current pseudo-version for theming API 2026-07-18 07:28:52 -07:00
go.sum build: bump core to current pseudo-version for theming API 2026-07-18 07:28:52 -07:00
README.md feat(extra): adopt core theme in res-sheets and res-calc 2026-07-15 17:24:05 -07:00
residual-overview.md feat(theme): two-mode theming for res-calc/res-sheets/res-code 2026-07-18 07:27:28 -07:00

extra — residual extra utilities

extra is a repository for extra utilities that are not part of the core residual toolset. These are auxiliary, often office-style, single-purpose tools that follow the same conventions as the rest of residual:

  • amber-on-black aesthetic (via core/lib/tui/theme, transparent backgrounds by default)
  • standalone res-* binaries (no runtime dependency on other res-* binaries)
  • shared logic lives in core/lib/ and extra/lib/<util>/
  • each top-level directory is an independent Go module / git repo

Utilities

Binary Purpose
res-calc Interactive amber calculator
res-sheets Amber TUI spreadsheet (formulas, ranges, save/load)
res-code IDE editor (tabs, sidebar, terminal)

Shared logic for every utility lives under extra/lib/<util>/; each binary is a thin entry point under extra/cmd/res-<util>/. This mirrors the core/lib convention.

Layout

extra/
├── lib/
│   ├── calc/          shared logic for the calculator utility
│   └── sheets/        spreadsheet model (ref, cell, dims)
│       ├── store/     Plan A persistence (zip + sqlite)
│       └── tui/       bubbletea grid UI
├── cmd/
│   ├── res-calc/      res-calc binary entry point
│   └── res-sheets/    res-sheets binary entry point
└── go.mod             module git.merith.xyz/residual/extra

Build & test

go build ./...
go test ./...