Fonts are now baked in with #load and loaded via LoadFontFromMemory
instead of LoadFontEx reading assets/*.ttf from disk, so a build no
longer needs an assets/ folder next to it at runtime - the chdir to
the executable's own directory in main.odin is dead code, removed.
just package / just package-windows now produce a single executable
(build/<name>_<version>_<os>_<arch>[.exe]) instead of a tar.gz/zip,
and the release workflow's upload/release-asset globs and the lld/zip
toolchain package list are updated to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Root cause found via gdb backtrace on the runner (thread::pool_init
crashed from main -> testing runner): the CI container sets
`ulimit -s unlimited`, so getrlimit(RLIMIT_STACK) returns RLIM_INFINITY.
core:thread passes that to pthread_attr_setstacksize, pthread_create
fails, and thread.create() returns nil, which core:testing's pool_init
dereferences without a nil check. Reproduced and confirmed fixed in an
ubuntu:24.04 container with the same Odin build. `just test` now clamps
the stack limit before running odin test. Also removes the gdb
diagnostic step added to debug this.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The windows job hadn't even started when build's odin test segfaulted
again on its own (run 132), so concurrency wasn't the cause. Add a
Debug Segfault step that runs the already-built test binary under gdb
to get a backtrace, since this doesn't reproduce locally or in a plain
ubuntu:24.04 container with the same Odin build.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Both jobs land on the same self-hosted runner. Run 129 segfaulted
odin test in build while windows was mid (uncached) SDK download/
splat at the same time; odin check passed and the test suite
reproduces fine in isolation, so this is resource contention from
running concurrently for the first time, not a code or toolchain bug.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- os.user_data_dir needs ole32.lib on Windows
- Build workflow gets a Windows cross-build job with a cached SDK
- Drop the backtick from Jua's codepoints (the font lacks it)
- Update AGENTS.md and README for decks, controls, scores and layout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- just windows-deps / windows / package-windows: cross-compile with Odin
objects + lld-link against an xwin SDK, static VC runtime
- Release workflow runs on v* tags, builds Linux and Windows packages,
uploads them to the package registry and creates a Gitea release
- Shared toolchain setup as a local composite action
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- justfile with build/run/check/test/release/package/fmt/clean recipes
- ols.json and odinfmt.json for neovim (ols)
- Tests for memory game rules and card animation; memory.deal and
memory.select_card split out so logic is testable without a window
- Gitea workflows: build+test on main/develop, package and upload to the
generic package registry on version branches
- Game changes to the executable's directory so packaged builds find assets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>