v0.2.0 — trace a query, scenarios, daylight, and an honest cache
Features ported from the PGSimCity release line, adapted to Firebird mechanics.
Added
- Query trace with step mode (
Gor the Trace a query button): follow one UPDATE station by station — harbor, Y-valve, lexer, parser, BLR generator, security, compiler, execution, cache accesses with hit/miss narration and the detour down to the database file, lock manager, record version towers, and the TIP commit — with a camera that follows the particle and Next step / Auto play controls - Six scenario presets in the control room: steady state, cache thrash, stuck OIT / version bloat, lock contention, rush hour, and sweep storm — each sets the sliders, seeds the event log, and flies the camera to the relevant district
- Daylight theme with a visible switcher (
D), persisted across visits; the whole canvas palette and UI restyle - Page anatomy viewer (
P): a labeled diagram of a Firebird data page (header, record descriptors growing down, RLE-compressed records growing up, rpb headers with transaction id and back-version pointer) beside the version-chain lifecycle from newest version to sweep-able garbage - Sparkline vitals: sixty-second history for queries/s, cache hit ratio and stale versions in the stats bar
- Keyboard help overlay (
?) and an on-screen version badge
Changed
- Pause now properly freezes the simulation (
space), and a speed control runs the world at 0.5×, 1×, 2× or 4× - The cache stopped lying: page access now follows a hot/cold working-set distribution, so the default 64-page cache lands a realistic ~85–90% hit ratio, an evictions counter joined the stats bar, and shrinking the cache below the hot set visibly thrashes
Fixed
- Record version towers rendered with a stale fill color because the tower gradient emitted a color format the face shader couldn't parse
- TIP counters over the Transaction Hall are now readable in both themes
- The canvas self-heals its size when laid out after load
Known issues
- Touch controls verified in desktop emulation only
- The traced query is spared deadlocks so the walk stays predictable — real transactions enjoy no such courtesy