12.0.0-beta.12 (2026-10-04)
Bug Fixes
- app: a refused link takes the running App home, and the moved page counts as rendered (2848b5b)
- app: a restart never reopens the setup or moved page from memory, and the self-test keeps no WebView storage (b601d41)
- app: inside the App the page offers no browser notification prompt and says where the system's switch is (ed269dc)
- app: the Linux AppImage carries its CLI outside usr/bin, and the proof runs on every leg (b896b11)
- app: the self-test names a licence or expired-link page at once (6394e16)
- checkpoints: a failed run whose scenario was amended runs again (3f38ca1)
- checkpoints: a run that ran out of time runs again at once, with time for its scenarios, and rerun repeats the right one (9add490)
- ci: the App suites run one after the other, the installer is picked by version, WSL2 paths are converted here, and the installer test tolerates a stubborn temp home (f785682)
- ci: Windows jobs check out with LF so git-crypt unlocks, and the App suites skip without a toolchain and find the display's X authority (e027d61)
- cockpit: a build's file writes no longer spend the Team pass's hourly budget (5b59e51)
- cockpit: an ask on a whole document heads its page, and a link marks it (9ee7f6c)
- cockpit: no route card above the task's tabs (eec9f1e)
- cockpit: the handoff lists what the plan asks of you, and names only builds that are running (61a8874)
- cockpit: the Review bar says when the code changed after the judge, instead of an Approve that fails (1a27896)
- cockpit: views tell the truth about quick tasks, reopened gates, outline tasks and running helpers (daf9a50)
- grok: the ask message names the exact command, and the proof stops when Grok Bot's computer is offline (e360241)
- handoff: your part renders its emphasis at the handoff too, a bold Now line is sorted by its words, and helpers stay one row at a narrow width (fadda84)
- install: an install after an uninstall names the mod again (1505df1)
- install: uninstall puts settings back last-set-first, so no empty env stays behind (a0dcbda)
- lane: a developer's TDD no longer recommends the product route (70c3a5d)
- lane: only a route command with its colon starts a task, so '/ql quick fix …' still shows the picture and the start question (d76d2a3)
- mod: the pane draws the task's own track, one refresh timer, and a failing status call shows its error (b2396f8)
- peers: a Codex state database without side files is read as immutable on every system, leaving Codex's folder untouched (4793b3f)
- peers: Codex threads are found again when Codex 0.160 leaves its state database without side files (0c91ada)
- quality: a failed security re-check sends the finding to a second re-check, not to the judge (6eaef69)
- quality: a step heading with no result line is still owed, so an empty block never skips the step (7bae9b5)
- review: a pull request opened before the task began is not the task's (8cdff07)
- review: Review's column never grows past the page under the side panel (53122be)
- review: the tabs row shrinks with the column, and a finished review no longer shows its last shell line (c8c4ef9)
- review: the verdict shortens before a tab does, a fold's title stays on one line, and what changed since a run folds to one line (e5f23c8)
- scripts: copy-probe takes the plan folder as an argument and pins playwright-core (96c0e73)
- security: close publication, review, and local filesystem vulnerabilities (ab54ff4)
- server: a Host with a port no socket can have is refused, not answered with a crash (c318a3a)
- settings: the Slack card says when Slack can be added again, instead of disappearing (c0ef46a)
- status: status --json answers a real failure as an error envelope, not as 'no open task' (521d80c)
- team: a change to a task you can't see answers like an unshared one (b5719fb)
- team: a claimed epoch carries its copies in the claim, so no epoch exists that nobody can open (14bd039)
- team: a machine taken off the device list that still holds the key triggers a new key (89ac2b3)
- team: a machine that reads its asks hands the team key to newcomers, shared tasks or not (44015a1)
- team: a machine whose App or page looks at the asks hands the team key over within a poll (29e209c)
- team: close the races and edge cases a review found in Slack pings and groups (bf37ebd)
- team: key and device decisions use a seat list at most 30 seconds old, not the cached five minutes (7bbef43)
- team: send nothing to the backend while a 429 pause runs (8d17ee4)
- team: the backend refuses key writes from a member without a seat (760cc18)
- ui: the role dialog's focused card shows a focus ring, not the chosen fill (563bcec)
- verify: a judge set that was over stays over when the task comes back to Verify (b0a98e8)
- verify: Accept as is stays in the bar whatever the agent is doing, quiet or gone included (73b93b8)
- verify: cited evidence may sit in a subfolder of the evidence folder (dd5349b)
- verify: the final gate opened in Verify says it waits for the quality pass (e0e732a)
- workflow: a PRD's mockups reach the builders, and a product task is tagged as one (ec1d9a8)
Features
- app: --quit lets a script do what the tray's Quit does (dfb2d11)
- app: a development QualityLayer App over the local server, reached through a launcher (574badd)
- app: a signed, notarized Mac App that updates itself and its CLI (f33139d)
- app: closed, the App waits in the tray and notifies about gates and asks (454a1ef)
- app: first start sets everything up without a terminal, and greets Pilot Shell 11 users (90d13f5)
- app: on macOS the App asks the system for notification permission and shows notifications through UNUserNotificationCenter, with a tray line while it is undecided or denied (e0caad0)
- build-view: drop the plan map from the Build tab (45775e0)
- build: checkpoints run what changed, corrected scenarios never stop a build, helpers report from any shell (1323a59)
- claude-code: a mod shows the task in the terminal, from qualitylayer status --json (0bfa1de)
- cockpit: every document copies out, formatted or as Markdown (9d0e290)
- cockpit: the handoff switches build steps into the prompt, and the task shows its route and quality pass (b83988b)
- demo: the Cockpit demo and the film posters show the new flow (5ef8d8d)
- design: a design proves what it stands on before its gate (aef6e36)
- everything people read says the QualityLayer App, not the Cockpit (bbc6b9e)
- gates: only a person approves a gate, in the Cockpit or by typing approve in the chat (6428508)
- grok: the ql skill goes into Grok Bot, an ask goes to the person's bot, and the App offers both (b55c0a5)
- install: a machine with a screen gets the App, every other the command line (47b4ef5)
- install: the move from Pilot Shell 11 also removes what Pilot's uninstaller leaves, and the App's move page starts with the terminal's ticks (73f0d83)
- links: guest links carry their key after #, the handoff renders its emphasis without the crew table, and Changes so far shows only the build's work (f318ffc)
- links: plain links on any forwarded port that land in the App (d436e60)
- peers: sessions sharing a checkout say what they do, claim paths and pause (127d78e)
- QualityLayer gives back your status line and shows itself in a band above the prompt (a3e50ac)
- review: every Review tab reads short, and Accept as is sits in the Verify bar (e329518)
- settings: auto-advance, on by default: the frame and the research go on without a review (7d24793)
- settings: one model per agent for subagents and the second opinion, and a switch per optional step (868b9c8)
- site,docs: the scroll website, and README and docs for the App and the five steps (c5274f5)
- site: Slack DMs open the App through qualitylayer.dev/open, and a download page (99723d5)
- support native Windows and harden standalone builds (b10088f)
- team: a tag on a shared task becomes a Slack DM whose link opens the ask (b755530)
- team: a teammate's own Claude Code or Codex answers an ask after their yes (2cebcff)
- team: groups keep a team's shared tasks to their members, enforced by the backend (2f8a2d9)
- team: owners manage groups in Settings, sharing picks a group, and the Team space filters by it (2dc508c)
- team: reminders, hand-offs, your turn and build outcomes reach Slack once, and survive a busy Slack (c8efbef)
- team: shared plans, comments, asks and reviews travel sealed; teammates get the key without a step (f28aaaa)
- team: the team owner connects Slack from Settings, through an install bound to their browser (087e03d)
- ui: the App uses shadcn 4.21.1, with collapsible sections and a modal picture viewer from the components (e66fc4c)
- ui: the document reader shows an outline of the document (95e36f3)
- verify: a defect the test gaps review finds is fixed before the judge (20c97b8)
- verify: a quality pass with a security review runs before the judge, and you can accept a build as it stands (73a43a4)
- verify: every optional step follows the task's list, and Simplify joins the quality pass (f4cd3c5)
- workflow: a product manager plans with a PRD and a TDD, and the role recommends that route (c842d29)
- workflow: every task starts from its route picture and keeps the optional steps chosen for it (d8be97a)
Performance Improvements
- changes: a change of hundreds of megabytes previews in a third of a second, names with umlauts included (c280fd1)
- cockpit: a task opens in a third of a second, not eight, and a test keeps it that way (d678153)
- cockpit: the page's script drops from 6.2 MB to under 1 MB, and a reload reuses it (97a2077)
- review: Review reads the acceptance file instead of diffing the whole build on every load (a40d11e)
- review: the files changed draw only what is near the view, and a comment no longer draws every file again (c007495)
- revision: a build's revision is read once per change, not on every Cockpit refresh (b9f85c5)