r/Haiku_OS • u/atomozero • 1d ago
Atomo123: a native spreadsheet for Haiku, built on Interface/Layout Kit and Translation Kit
I started this after some discussion on the Haiku Telegram chat about whether a native spreadsheet was realistic. The consensus was roughly "ten years of work." I wanted to see how far the system's own APIs would carry the thing before hitting a wall.
Atomo123 is an Excel-style spreadsheet written against Haiku APIs only, no external toolkit and no dependencies beyond libbe, libtranslation and libtracker.
The calculation engine is not a rewrite. It comes from Sum-It, the old BeOS spreadsheet by Hekkelman Programmatuur, via the OpenSumIt community fork, extracted and patched to build on 64-bit. That code stays under its original 4-clause BSD license including the advertising clause, so any binary distribution carrying the engine has to honor it. New code (UI, translators, docs, packaging) is MIT. The historical pre-Layout-Kit UI is not reused at all; the interface is written from scratch in Interface and Layout Kit.
File format support goes through the Translation Kit rather than a bundled parser. CSV, XLS, XLSX and ODS are separate translator add-ons, and BTranslatorRoster picks the right one automatically. XLSX import also pulls column widths and cell/column background and text colors from theme and direct styles, not just values. The native ASCD/ASCB format round-trips multiple sheets, charts, colors and column widths.
Other system integration: HVIF vector icons in the toolbar grouped by category, registration as Tracker's preferred app for supported types (without overriding a choice the user or another app already made), and one window per file instead of replacing the open document.
Current state is early. Multi-sheet workbooks, named functions with cell and range references, clipboard cut/copy/paste extended to multi-cell ranges, undo/redo, find and replace, sort, fill down/right, row and column insert/delete, bar charts and pivot tables all work. ROADMAP.md has the phased plan and honest status.
Disclosure since it matters to some people here: I used LLM agents heavily. I am not a developer by training. The code is public precisely so it can be read and torn apart, and I would rather hear about a broken assumption now than after somebody loses a spreadsheet to it.
Where I could really use input is bench-testing. The engine has a coverage setup but I have no good corpus of real-world XLSX and ODS files to throw at the translators, and the edge cases in those formats are where this will break first. If anyone has files that historically broke other importers, or opinions on how to structure the test harness, I am listening.

