Skip to content

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 03 Sep 12:11
· 72 commits to main since this release

The interface

Finished the move to Frutiger Aero — a vertical ramp, tint, glass as a ramp of
opacity, and a shade for shadows. Four span-based primitives, which is why a
gradient interface costs about what a flat one did. A caption, a taskbar,
popups as one object, windows rounded at the top casting a shadow the
back-to-front repaint makes free, and a wall that runs from deep water to gold
with the Aperture mark lit as the sun on it.

Then the icons, the last un-reskinned surface: nine of the ten were still flat
98-era drawings with black outlines and five hardcoded off-palette colours.
They are lit bodies now, with a detail level chosen from the size so one
drawing reads at 40px and at 24px. Two had been wearing each other's labels —
the sliders said Oracle and the eye said Settings — because ICO_SET had no
match arm and fell through to the wildcard. A compile-time assertion now ties
the name list to the constants so a reorder cannot do it again.

The model got an interface

A four-pane workspace — Workflows, Ask, Improve, Agent — that the machine
opens itself, over a window manager that tiles.

The panes stop going stale. Improve's ledger was fetched once and never again,
so after a trial adopted a variant the pane still showed the pre-trial ledger.
glance is now the one place that decides what a repaint may read, because a
repaint that asks the engine a question corrupts a running episode's KV cache.

The terminal grew a 512-row scrollback whose view is not the grid, windows
arrive over a tenth of a second, task buttons say what they are, and
Alt-Shift-Tab reaches the window plain Alt-Tab never can.

DOOM

Twelve commits, each checkable before the next existed: held keys, the
src/port seam, the WAD reader, the level and its BSP, the palette on screen,
walls in perspective, movement, textures, floors and ceilings, sprites, a
portal the test map had never had, and FreeDoom.

The renderer draws every surface DOOM has except the masked mid-wall, lit
through the WAD's own COLORMAP, at the full 35 Hz tic rate on one core.

It runs a WAD nobody wrote for it. FreeDoom 0.13.0, SHA-256 verified
against the release's signed CHECKSUM, rendered by the same binary that took
diag all 33/33 — no recompile, no flag, no code change. Every count the
kernel printed matched an independent host-side parse exactly: 3,163 lumps,
963 textures, 1,049 patches, 853 sprites, 240 flats, and for E1M1 1,196
vertexes, 2,057 segs, 681 nodes, 292 things.

src/doom/ is not a loaded binary and this release does not claim one. It is
foreign source, compiled in, reaching the machine only through src/port/
an indexed surface, held keys, a clock and file bytes — and
tools/portcheck.py fails the build if anything under it names another
module. The point was never the pixels. It was finding out where the boundary
is, so that the second port is not a rewrite.

Also

A parse-depth bound in Aiksi that was a triple-fault denial of service, and a
work run name confined to one path component.