Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 19:31
· 157 commits to main since this release
c31aad3

1.0.0 - 2026-10-31

First release. One add-in, five tools, settings and an About screen.

Added

  • Shell: home screen with six tiles in the Bauhaus palette, title bar,
    softkey bar, lists, fields, modals, a progress bar and an on-screen keyboard.
    src/platform/{screen,input,store,mem} are the only files that call gint;
    src/apps/app_menu.c routes, src/main.c runs the loop.
  • Pacer (src/apps/app_pacer.c): setup, plan with the checkpoint table,
    run with clock, marks, target, gap line and next checkpoint, done screen with
    the final gap.
  • Uncertainty (src/apps/app_uncert.c): six operations, chain mode, value
    and absolute and percentage uncertainty on the result screen.
  • Cards (src/apps/app_cards.c): deck list, deck report with problem lines,
    session with reveal, summary, box statistics; progress file written once at
    the end of a session.
  • Notes (src/apps/app_notes.c): file list, Markdown and plain text
    rendering, scroll by line and page, search with wrap, heading list, per-line
    span drawing with the Phase A style (colour and underline).
  • Number theory (src/apps/app_numtheory.c): nine functions, forms,
    results with steps for gcd and ext gcd, a progress bar for factorisation that
    EXIT cancels.
  • Settings (src/apps/app_settings.c, src/core/settings.c): uncertainty
    figures, pacer checkpoint size, note width; the file is written only when a
    value changes.
  • About (src/apps/app_about.c): version, build date, target, framebuffer
    and window sizes, largest free block, limits, and the Exam Mode note.
  • Brand: assets-cg/icon-uns.png and icon-sel.png (92x64, neobrutalist
    B with a red square and three bars), a wordmark SVG and a 1200x630 card, all
    drawn by tools/brand/make_brand.py. No bitmap fonts, no external assets.
  • Host preview: tools/sim/ (a gint stand-in, key scripts and a tour) and
    make sim, make shots, which render every screen to docs/images.
  • CI: .github/workflows/build.yml runs the native tests, the Python
    tests, the preview, and builds Bench-<version>.g3a with the real fxSDK,
    attaching it to the release on a v* tag.
  • Docs: README.md, docs/STATUS.md, docs/toolchain.md, docs/spike.md,
    site/ (the landing page: React 18 + Vite + Tailwind, deployed on Vercel).

Storage layout (new)

Bench/notes/*.md|*.txt     notes (Notes)
Bench/cards/*.txt          decks, "question | answer" a line (Cards)
Bench/state/cards.sav      "# Bench cards state v1", "session N", "<hash> <box>"
Bench/state/settings.cfg   "key value" lines, written on change only

The folder tree is created on first run. Files are written once and renamed
into place; the calculator's filesystem needs even-sized writes, so an
odd-length text file is padded with a newline.

Notes

  • Screen geometry: 396x224 framebuffer, the OS shows the middle 384x216, so
    every drawing call goes through src/platform/screen.c and its SCR_X,
    SCR_Y offset. No app knows the offset exists.
  • Colours are raw RGB565 words rather than C_RGB(): gint's macro shifts green
    by six while its own constants put green at bits 5..10, so the macro would
    move green one bit. The three palette colours are written out in theme.h
    with the hex they came from.
  • Text entry never relies on ALPHA: the search field uses the on-screen
    keyboard, so a wrong ALPHA mapping cannot break input.

Test log

make test     NATIVE TESTS PASSED (11 test programs)
              cards 95, leitner 126, md_layout 95, md_parse 203, numfmt 182,
              numparse 62, numtheory 1027, pacer 114, settings 659,
              textsearch 84, uncert 144  ->  2791 checks, 0 failed
make py-test  28 tests, OK
make sim      ok
make shots    26 screens rendered

Calculator side: not run by the agent (no fxSDK and no hardware here, see
docs/STATUS.md), so this version is 1.0.0 of the code, not a hardware-tested
release.