Repository navigation
Loka 0.0.3
Pre-release
Pre-release
Loka 0.0.3 gives the 0.0.x line its resource story and its proof machinery: the LRPK package format with a shipping example built on it, and a scenario verification rail that produces machine-checked evidence on every native target. 159 pull requests since 0.0.2.
Highlights
LRPK resource container
- LRPK V1: a packaged resource container with a tracked on-disk format, a streaming reader, and a pack-side writer (#207), opened from a
ByteSourcewithout holding the whole package in memory (#222). lrpc: a real CLI entry point that builds a package from a manifest (#214), with staged write-failure contracts pinned by tests.- Refusal is a contract, not a crash: corrupt packages produce typed refusals that leave the UI on its last good page, and the refusal fixtures ship in the scenario registry.
ScrapbookUI
- A new shipping example that consumes an LRPK package page by page — image and text pages, Previous/Next, and visible refusal behavior on corrupted bags.
- Classic page flips no longer stall seconds on draw-time PICT rasterization; pages are pre-rasterized at generation time (#298).
Scenario verification rails
- Declarative scene scenario flow (#348): scenarios emit State directly and drive the real scene, on all three native targets, from one shared registry.
- Two-layer machine verdicts: a byte-compared durable audit (step history + embedded snapshot records) plus a settled pixel golden guarded by a rig
.profilefingerprint that refuses to compare across environments (#312 ruling; #399, #403). - Flagship L2 scenarios actuate real controls — EditText and Grid cells included (#400).
- Release preflight is an orchestrated run:
loka-rig.pyresolves an exact commit and delegates to per-platform adapters (macOS VM / Toolbox MAME), collecting artifacts under a shared manifest contract.
Loop-reel presentation builds
- Scenario loop reels cycle every registered scenario continuously for demos, on Classic (#405), macOS (#409), and Win32 with standalone presentation builds (#410), launched the same way everywhere (#413).
- The window title names the running cell and cycle (#416) — presentation builds are no longer silent about where they are.
Lifecycle & memory model
- The ComponentNode / ownership-inversion / structural self-declaration wall merged, closing the #36 / #270 / #277 arc: nodes declare their structure, ownership edges are explicit, and teardown is clock-driven.
- MineSweeper New Game landed for real: key-bank identity swap with a recomposing boundary (#316), with the dirty-replay defect found and fixed in the same push (#317).
- Native destruction defers across the detach line (#300); the Scrapbook page area has a Box owner (#305); a ScrollBar control whose binding hears only settled values (#223).
Menus
- Cross-platform menu bar support with an app-owned composition model, diffed at commit time, projected natively on Win32, macOS, and Classic.
macOS build generations
- UB2 (x86_64 + arm64) builds via
build-ub2.sh, now failure-atomic — a broken lipo can no longer destroy the previous bundle or silently ship a thin binary (#415). - A legacy script family reaching back to Mac OS X 10.4 (
build-10_4.sh/build-10_5.sh/build-10_7.sh, #198): UB1 (ppc + i386) built on a period Xcode 3.2.6 rig. - Apple bundle IDs consolidated under
io.lo-ka.loka.*.
Windows
- Windows XP presets compose with MSVC platform defaults instead of replacing them — a fresh XP configure builds again, and a preset-shape test pins the rule for the whole win32 preset family (#418).
Experimental mobile arms (outside the release matrix)
- iOS UIKit hello-world smoke on current Xcode (#376) and an iPhone OS 3.1 ARMv6 build/deploy path (#377), both runtime-verified on their targets and then parked.
Verified on
| Platform | Evidence |
|---|---|
| Linux (hosted CI) | headless, release, and ASan suites green at the RC and at the tag lineage |
Classic Mac (MAME maciix, 68030+68882, 8 MB) |
full scenario registry, both layers green per cell (expected-audit byte match + settled pixel golden) |
| Classic Mac (real hardware) | PowerBook 1400c on 8.1 (68K), PowerBook G4 Titanium on 9.2.2 — all five PPC examples running simultaneously |
| macOS 26 (Tahoe, x86_64) | rig-verified scenario pairs both layers green; all six examples build-and-launch at the tag lineage |
| macOS real-hardware sweep | Tiger (Intel C2D and Pismo PPC via UB1), Leopard (iBook G4), Mojave |
| Windows 11 (ARM64, ACP=932) | 17/17 scenario rail at RC equivalence |
| Windows XP (VAIO P, x86) | examples run from the repaired XP preset lane |
Release photos from the real-hardware sweep are on the pr-assets evidence branch. The full verification matrix, archives, and hashes are recorded on release PR #387.
Release assets
Loka-v0.0.3-classic.zip — the adjudicated Classic application set: six 68K MacBinary applications, five PPC counterparts (ScrapbookUI has no PPC target in this release), and ScrapbookUI's tracked ASSETS.LRP. The adjacent .manifest.txt records the exact tag, commit, checkout path, and per-file SHA-256 hashes.
Known issues
| Issue | Status |
|---|---|
| #419 SimpleViewer keeps the previous image's bytes alive while opening the next; the second open dies silently on Classic | Open. Confirmed on PowerBook 180c real hardware. Present in all prior releases; adapter-local fix scheduled for 0.0.3a, the structural Flow-cache ownership question tracked for 0.0.4. |
| #411 / #412 / #414 Classic incremental drawing: EditText double frame, ZStack overlap erased to white, EditText text not syncing | Open. One shared root — no owner for a rectangle drawn by multiple nodes — scheduled as the first 0.0.3a work. |
| #398 Classic out-of-memory refusal has no agreed wall | Open. Diagnosis complete with a real backtrace; the fix direction is under design. Related: the Classic operator new aborts on exhaustion, so today's failure mode is silent termination. |
| #404 window sizing clips content on Win32/macOS | Open. Font line-height driven; Classic fits. Scheduled for 0.0.3a. |
| #420 app bundles from the legacy macOS build scripts launch non-Retina | Open. Missing NSHighResolutionCapable; UB2 and non-bundled executables unaffected. |
| #421 dark mode ignored on macOS 10.14–10.15 | Open. That OS window is served by pre-10.14-SDK builds; 11+ (UB2) follows the system appearance. |
| #322 Classic first launch takes ~20 s on 16 MHz-class 68030 | Open. Phase-split measurement planned before choosing a fix. |
| #144 / #145 / #152 lifecycle debts carried from 0.0.2 | Open. #152's confirmed trigger remains mitigated; the underlying in-flight teardown mechanism is on the WR-4 / transactional-kernel design track. |