Files in the top-level directory from the latest check-in
- .fossil-settings
- data
- docs
- mcp
- ARCHITECTURE.md
- build.sh
- db.v
- formula.v
- main.v
- README.md
- v.mod
MaxMinion
Lean, correct, high-performance spreadsheet application emulating the keyboard-first workflow of classic Microsoft Multiplan (CTOS / DOS era).
- Language: V (latest stable)
- GUI: Nuklear (nsauzede/vnk) + SDL2 + OpenGL (static preferred)
- Storage / Engine / Everything: SQLite only (single
.lplanfile = SQLite DB) - Philosophy: No bloat. 95%+ keyboard driven. Snappy. Correctness first.
Status
Functional skeleton with:
- Full Multiplan-inspired 3-mode keyboard (READY/EDIT/COMMAND), arrow nav, Ctrl+arrow stubs, F1 command list, F2 edit, = formula, / command, Enter/Esc, type-to-enter.
- Nuklear + SDL2 + GL window + edit bar + virtual grid (label) + status/cmd bar.
- Real SQLite backend (cells, sheets, schema from sqlite-mcp). .lplan files persist. Example created on first run.
- Clean Fossil history + tech notes.
Next priorities (per prompt): full formula parser+eval (A1/R1C1), smart recalc via CTE+deps, proper canvas virtual grid, command tree, copy/paste with ref adjust, FTS find, CSV, static build.
See TechNotes (use fossil timeline or the MCP) for architecture/schema/prompt.
Build (Linux first)
Prereqs:
- V 0.5+
- Fossil (for development -- never git)
- Dev headers (vsdl2 + vnk pull ttf/mixer/image unconditionally):
sudo apt-get install -y libsdl2-dev libglew-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev - For the V modules:
v install nsauzede.vsdl2 nsauzede.vnk - Then fix the modules for current V (old const syntax in modules causes hard error):
./mcp/fix-v-modules-for-build.sh - Then fetch nuklear headers (one time):
cd ~/.vmodules/nsauzede/vnk && make
# from inside the Max fossil checkout
v run .
# or build
mkdir -p bin
v -prod -o bin/maxminion .
./bin/maxminion
The first run creates data/example.lplan (inspect with sqlite3 data/example.lplan "SELECT * FROM cells;").
See the sqlite-mcp and nuklear-mcp siblings for deeper patterns and the static build recipes (in their resources).
For full static single-exe (no DLLs): follow nuklear-mcp://static-build-linux , compile sqlite3.c amalgam in, link static SDL2.a + GLEW.a + GL. Use -cc tcc or gcc -static where possible. Cross builds similar with mingw/musl.
```
Static / Single Executable Builds
Goal: one binary, minimal or zero external shared libs.
See docs/BUILD.md (to be added) for:
- Linux: musl + static SDL2.a + sqlite3 amalgam +
-static - Windows: mingw-w64 + static libs or tcc
- macOS: similar static or app bundle
SQLite is included via amalgamated sqlite3.c (public domain) compiled directly.
Usage (target)
- Arrow keys, Ctrl+Arrow, PgUp/PgDn, Home/End for navigation (Ready mode)
- Type to enter value;
=for formula; F2 edit - F1 : command list (Alpha, Blank, Copy, Delete, Edit, Format, Goto, Help, Insert, ... Quit, Transfer, etc.)
/or:for command prefix- Ctrl+S save, Ctrl+Z undo, classic cut/copy/paste
- R1C1 and A1 supported
File format .lplan is a SQLite database — inspect with sqlite3 your.lplan "SELECT * FROM cells;"
Fossil Discipline (mandatory for contributors)
This tree is Fossil only. Never use git inside.
- Always
fossil status(or MCP) before edits fossil addnew files explicitly- Atomic commits with technical messages
- Use
fossil wiki --technote(or the MCPfossil_technote) for decisions, logs, architecture — not random .md files - Keep
fossil extrasclean
See FOSSIL-FOR-AGENTS.md (sibling repos) and the tech notes in this repo's timeline.
Project Layout
.
├── .fossil-settings/
│ └── ignore-glob
├── v.mod
├── README.md
├── ARCHITECTURE.md
├── src/
│ ├── db.v
│ ├── model.v
│ ├── formula.v
│ ├── engine.v
│ ├── ui.v
│ └── ...
├── main.v
├── data/ # example .lplan files
└── ...
License
MIT (or public domain spirit).
Credits
Inspired by Microsoft Multiplan on CTOS, Lotus 1-2-3, and the power of SQLite + V + immediate mode GUI.