Repository navigation
Releases
Flywheel 0.2.0
- Each file attached to a release now carries a GitHub artifact attestation, and the release
carries a CycloneDX SBOM listing what the app is built from. To check that a download came from
this repository's release workflow, run
gh attestation verify <file> --repo HighKnow-ai/flywheel. The README's "Verifying a download"
section has the details. - The Roadmap and a Story's Acceptance criteria no longer jump when a slow first load finishes.
Their rows used to appear below the loading placeholder and move up when it left.
Opening Flywheel for the first time (this build is not signed)
Flywheel is not signed with an Apple Developer ID and is not notarized, so macOS blocks the app the first time you open it.
If you downloaded the .dmg in a browser, macOS says that "Flywheel.app is damaged and can't be opened" and offers only Move to Trash and Cancel. The app is not damaged. There is no Open button, so right-click and Open does not help.
To open it:
-
Drag
Flywheel.appfrom the.dmginto/Applications. -
In Terminal, remove the quarantine mark that your browser put on the download:
xattr -cr /Applications/Flywheel.app
-
Open Flywheel as usual.
Only do this for a build you downloaded from this repository's releases page. The command removes a macOS safety check for that one app.
This was observed on one Mac (macOS 26). Other macOS versions may word the dialog differently.
Flywheel 0.1.3
- If you installed 0.1.1, download this release by hand. 0.1.1 looks for updates in a file that
releases no longer publish, so it will not offer this one. - A panel whose data arrives just as its loading placeholder is due no longer flashes: it used to
draw, vanish behind the placeholder and draw again, replaying its entrance and losing keyboard
focus. And a loading placeholder, once shown, now gives way after 350 ms instead of 400.
Opening Flywheel for the first time (this build is not signed)
Flywheel is not signed with an Apple Developer ID and is not notarized, so macOS blocks the app the first time you open it.
If you downloaded the .dmg in a browser, macOS says that "Flywheel.app is damaged and can't be opened" and offers only Move to Trash and Cancel. The app is not damaged. There is no Open button, so right-click and Open does not help.
To open it:
-
Drag
Flywheel.appfrom the.dmginto/Applications. -
In Terminal, remove the quarantine mark that your browser put on the download:
xattr -cr /Applications/Flywheel.app
-
Open Flywheel as usual.
Only do this for a build you downloaded from this repository's releases page. The command removes a macOS safety check for that one app.
This was observed on one Mac (macOS 26). Other macOS versions may word the dialog differently.
Flywheel v0.1.2
- test(core): count the inventory's porcelain reads at an injected seam, not through fsmonitor
- feat(desktop): build Flywheel on the published @highknow/design 0.1.0
- build(deps): update flywheel's Rust crates, including dirs 7
- build(deps): update flywheel's npm dependencies and clear the sidecar and desktop advisories
- feat: Tenure at tenure.highknow.ai, per-product billing, the company front page, Flywheel export, CI fixes
- feat(flywheel): import Flywheel's history under flywheel/
- Merge pull request #243 from HighKnow-ai/fix/subdirectory-project
- fix(core): a project registered at a subdirectory of its repository runs its Stories there
- Merge pull request #242 from HighKnow-ai/exit-test/move-day-1
- docs(exit-test): the attempt log names build b59876a and the window 2026-10-27 to 2026-11-09
- docs(exit-test): day 1 of attempt 1 moves to 2026-10-27, on the post-design-pass build
- Merge pull request #241 from HighKnow-ai/story/239
- feat: a shaping agent working between Rounds counts as an agent everywhere
- Merge pull request #240 from HighKnow-ai/story/212-final
- test(desktop): the review-and-Merge walk waits for a decided card to leave before the next step
- docs(design): the final critique of Epic #189, 27/40 with no P0 or P1
- fix(desktop): a folder that is not a git checkout offers another folder, not a red key field
- fix(desktop): a resize keeps the roster's dialogs; Start work is sentence case; Dismiss Round is red
- fix(desktop): the session feed takes the 1240px surface width
- fix(desktop): a Story column's Accept, Amend and Reject fit inside its card
- fix(desktop): reduced motion leaves self-handled transitions alone; dark Add a Task keeps the card
- fix(desktop): the Milestone header's count labels stay on one line at 900 px
- feat(desktop): cut-short text and exact values show in the one Tooltip, not title=
- refactor(desktop): every field label is the shadcn Label, and Register project is sentence case
- test(desktop): no browser test measures a web-font swap, and waits fit a loaded machine
- style(desktop): format packages/desktop/src with Prettier
- build(desktop): check packages/desktop/src with Prettier in CI
- refactor(desktop): delete the legacy stylesheets and fix the screen Stories' leftovers
- Merge pull request #238 from HighKnow-ai/story/235-shaping-launch-async
- Merge pull request #234 from HighKnow-ai/story/208
- fix(desktop): starting shaping or a roadmap Round never blocks other IPC while the spawn floor waits
- Merge pull request #225 from HighKnow-ai/story/200
- Merge pull request #231 from HighKnow-ai/story/207
- Merge pull request #237 from HighKnow-ai/story/204-followup-root
- Merge pull request #236 from HighKnow-ai/story/211
- docs: DESIGN.md's Fleet Tables names the strip's agent count
- feat(fleet): All agents counts agents with the strip's agentCount and labels ended runs on their own
- feat(desktop): the rail's All agents figure is the strip's agentCount
- fix(desktop): the agent station reads paths relative to the Story's worktree, as the feed does
- docs: Fleet Tables in DESIGN.md, ADR 0039 on Worktrees' select-all, and the #208 shots
- feat(fleet): All agents and Worktrees are Tables with headers, and reclaiming is one confirmed bulk action
- refactor(desktop): the rail's Register project… fails with the same toast as ⌘⇧O, and the inline-notice hook goes
- feat(desktop): the project rail raises where you are, folds to icons with ⌘B, and keeps Remove behind each project's menu
- test(desktop): the Merge confirm's layout defect becomes a passing check, with a 151-character Check command
- feat(desktop): the review card keeps Merge in reach, its confirm fits any Check, and a Merge says it landed
- feat(core): Re-run Checks reports each Check as it ends, as checks:progress
- Merge pull request #230 from HighKnow-ai/story/204
- Merge pull request #233 from HighKnow-ai/story/205
- refactor(shaping): ProposalDecision hands afterDecide the decision taken; the triage drawer's click-sniffing intent goes
- Merge pull request #229 from HighKnow-ai/story/201
- Merge pull request #228 from HighKnow-ai/story/199
- Merge pull request #232 from HighKnow-ai/story/220-async-commands
- feat(shaping): fade the Story strip's overflowing edge; DESIGN.md and after-shots for the one decision group
- feat(shaping): every Proposal is decided through one Accept, Amend and Reject Button Group
- Merge pull request #227 from HighKnow-ai/story/203
- Merge pull request #226 from HighKnow-ai/story/202
- fix(desktop): no IPC command runs git on the thread it is dispatched on; Merge and Reclaim take the Story's lock
- test(critique): open Move to Epic as the Combobox it now is
- docs: ADR 0032, DESIGN.md for the folded Roadmap and Write a Story, and the #201 shots
- feat(desktop): a big project's board opens on what needs you, and Write a Story picks with Comboboxes
- test(desktop): the top bar's fit is a passing assertion, not a known defect
- Merge pull request #224 from HighKnow-ai/story/210
- test(desktop): screen 12 reads the session's ending as text in the browser arm
- fix(desktop): a waiting card's age keeps the meta role now that #223 clears 4.5:1 on the attention tint
- Merge pull request #221 from HighKnow-ai/story/209
- docs: #205's after shots of the session feed
- docs(design): the Roster section says yellow is Waiting on you only, and shows #202 before and after
- feat(board): the roster reads at a glance: keys never wrap, Done Epics fold, one header grid, yellow only for Waiting on you
- feat(desktop): the top bar folds to fit a 900px window, the strip counts agents as live sessions, and a lamp lights with a rising glow
- test(desktop): the layout-defect walk asserts the missing-claude Alert sits under the andon strip at every size
- feat(desktop): first run, Register project, unreachable, orphans, the launch sheet and a missing claude on stock components
- fix(desktop): a path outside the worktree keeps its tail, not /Users
- docs: DESIGN.md names the leaving collapse, the kind map and the drawer's states; before and after shots for #203
- feat(desktop): every Proposal kind has a word, Accept and Reject say what they did, evidence paths read worktree-relative
- feat(desktop): Needs you sits on Card and Item, an answered item collapses out, and the column shows Skeleton, Empty and ReadError
- test(desktop): the permission rules Table holds its columns at every size, so #209's known-defect mark goes
- docs(design): Settings shots after #209, and the columns give the pattern the room
- feat(desktop): Settings on Card, Field, Radio Group, Table, Select and Switch, with a toast on every save
- docs: the Story view has no roster beside it (ADR 0035), and its DESIGN.md paragraph says what is built
- feat(desktop): the Story view clamps its title, acknowledges every action the same way, and never shows an empty list for a failed read
- fix(desktop): reset times in the app's English, "Ended 8h ago · usage limit", icon-only view toggle when narrow; the critique harness follows the new header
- feat(desktop): the session feed has one header, worktree-relative paths, a confirmed Stop and Discard, and a next step after a usage limit
- Merge pull request #223 from HighKnow-ai/fix/dark-meta-on-attention
- Merge pull request #222 from HighKnow-ai/story/206
- fix: dark meta text clears 4.5:1 on the attention tint
- Merge pull request #217 from HighKnow-ai/story/192-critique-everything
- feat(desktop): Deny in one slot on every request card, answer keys in Kbd, the pattern editor in a Popover, and the question card on Radio Group and Checkbox
- Merge pull request #219 from HighKnow-ai/story/215-tick-lock
- fix(desktop): no code path holds the board lock while git runs, so reads never stall
- docs: the critique's shots, every screen at 1440 x 900 in both schemes and the window's extremes in light
- docs: the October Milestone 4 critique, findings ranked P0 to P3, each with the Story that fixes it
- ci: run the layout-defect check over every critique screen in the browser job
- test(desktop): the critique harness captures every screen at four window sizes on stress data, and checks each render for layout defects
- Merge pull request #218 from HighKnow-ai/story/198-motion-foundation
- feat(desktop): one feedback vocabulary: toasts, a loading Button, ReadError, ConfirmDestructive, StoryKey and format
- feat(desktop): one duration per motion job, disclosures that grow, and reduced motion that keeps feedback
- build(desktop): install the shadcn components the screen Stories move onto
- Merge pull request #216 from HighKnow-ai/story/197-command-palette
- fix(palette): ⌘K and Search open the palette instead of crashing the app
- Merge pull request #214 from HighKnow-ai/story/195-no-flicker
- Merge pull request #213 from HighKnow-ai/story/196-highknow-tokens
- fix(desktop): a refetch never flickers: a live feed grows in place, events coalesce per window, a new head keeps its diff drawn
- docs: re-shoot the rail, board, Story view and review card before and after HighKnow's tokens
- test(desktop): the font check reads the woff2 through Uint8Array, so the renderer's typecheck needs no @types/node
- docs: record HighKnow's tokens, Public Sans and the full-colour mark (ADR 0021)
- feat(desktop): take HighKnow's tokens, Public Sans and the full-colour mark
- Merge pull request #194 from HighKnow-ai/story/190-session-feed
- fix(session): the feed draws every event once, an ended session's clock is its duration, and CLI notices stay in View raw
- Merge pull request #193 from HighKnow-ai/story/191-rail-height
- fix(desktop): the project rail fills the window at every size; only the main pane scrolls
- Merge pull request #188 from HighKnow-ai/exit-test/attempt-1-log
- docs: declare exit-test attempt 1, starting 2026-10-26, on Flywheel and technical-presales
- Merge pull request #187 from HighKnow-ai/story/169-m4-exit-test
- test(sidecar): stop and shutdown tests wait for a signalled grandchild to be g...
Flywheel v0.1.1
- docs(11-08): record the v0.1.0 release, the unmet Gatekeeper criterion and the fresh-clone build
Opening Flywheel for the first time (this build is not signed)
Flywheel is not signed with an Apple Developer ID and is not notarized, so macOS blocks the app the first time you open it.
If you downloaded the .dmg in a browser, macOS says that "Flywheel.app is damaged and can't be opened" and offers only Move to Trash and Cancel. The app is not damaged. There is no Open button, so right-click and Open does not help.
To open it:
-
Drag
Flywheel.appfrom the.dmginto/Applications. -
In Terminal, remove the quarantine mark that your browser put on the download:
xattr -cr /Applications/Flywheel.app
-
Open Flywheel as usual.
Only do this for a build you downloaded from this repository's releases page. The command removes a macOS safety check for that one app.
This was observed on one Mac (macOS 26). Other macOS versions may word the dialog differently.
Flywheel v0.1.0
- fix(11-08): allowlist the 11-22 header reads and make the README build command work for a stranger
- Merge origin/main into the phase 11 branch
- chore(gsd): record use_worktrees=false, the setting that serialized phase 11 execution
- docs(11-11): complete the stuck-task exits and breach hold plan
- feat(11-11): Retry and Skip on a stuck task in the wave plan sheet (D-REV-41)
- feat(11-11): an observed scope breach holds the automatic merge (D-REV-42)
- test(11-11): an observed scope breach must not merge automatically, red (D-REV-42)
- feat(11-11): retry_task and skip_task, human-only (D-REV-41)
- test(11-11): a stuck task can be retried or skipped by a human, red (D-REV-41)
- docs(11-06): complete the update banner plan
- feat(11-06): mount the update offer once in the shell (D-187)
- feat(11-06): the update banner and its hook (D-187, D-188)
- feat(11-06): updateCheck and updateInstall at the adapter seam (D-187)
- docs(11-07): defer signing and notarization, the owner declined the Apple purchase (D-REV-60)
- docs(11-22): complete the two pulled-forward finish-review findings plan
- feat(11-22): the session header names its board item (four-1)
- test(11-22): the session header names its board item, red (four-1)
- feat(11-22): draw the +/- sign column in the diff gutter (three-3)
- test(11-22): a diff row says which side it is on, red (three-3)
- docs(11-05): record the keygen and secret-set deviations, and the green ci.yml re-run
- docs(11-05): complete the updater plan
- feat(11-05): updater commands, endpoint, pubkey and signing env (D-186, D-188)
- feat(11-05): add tauri-plugin-updater pinned at =2.12.0
- docs(11-22): plan the two finish-review findings the owner pulled forward (three-3, four-1)
- docs(11-18): complete contracts and brand rule plan
- docs(11-18): summary for the contracts and brand rule plan
- fix(11-18): brand-rule.test.ts typechecks without @types/node, using the workspace's node-shims
- docs(11-18): D-REV-01, 13, 28 and 30 closed; the eight 11-17 rows outside D-197..199 handed to D-196 filing
- feat(11-18): the brand rule widened to seven uses and enforced by a test that reads the shipped bytes (D-199)
- fix(11-18): the task row tail prints a value or nothing and nothing renders below 11px (D-198)
- docs(11-18): AGNT-07 says what the product does, a destructive action is refused and the user is told (D-197)
- docs(11-02): the repository is HighKnow-ai/flywheel and public, so 11-05 compiles the org endpoint
- docs(11-17): complete finish-review second pass plan
- docs(11-17): register entries D-REV-11, 12, 14-19 and 26 drained with the reviewer outcomes
- docs(11-17): finish-review record, nine reviewer runs with a disposition and evidence on every finding
- fix(11-17): permission rules table keeps granted authority readable and revokes once (D-REV-17)
- test(11-17): capture the permission-rules table the group-five reviewer could not see (D-REV-17)
- fix(11-17): the finish reviewers' four fixable findings, each with a WebKit assertion
- test(11-17): capture the launch sheet's Review feedback section (D-REV-19)
- test(11-17): capture the board mounted in the real app shell (D-REV-12)
- docs(11-16): update state and roadmap for plan 16
- docs(11-16): summary for the fan-out and real-binary plan
- docs(11-16): D-REV-34 and D-REV-35 wiring halves closed in the register, shim coverage gap logged
- test(11-16): run the real claude binary under the planning argv and assert no permission_request (D-REV-35)
- test(11-16): drive a whole fan-out through the real sidecar with only the model faked (D-REV-34)
- docs(11-10): record the owner's adopt-and-auto-merge decision as D-REV-59
- docs(11-10): complete D-REV-39 and D-REV-44 drain plan
- docs(11-10): summary, and D-REV-39 and D-REV-44 resolved in the register
- test(11-10): pin that no desktop command probes the case flag under the database lock
- fix(11-10): build the new test's git command in core, name the causes when the flap test fails
- refactor(11-10): remove may_merge and hold_for_limit, which nothing calls
- fix(11-10): no git config under the database lock; the launch reads the observed case flag
- fix(11-10): adopt a hand-run task instead of relaunching it; Unicode case fold
- test(11-10): a dispatcher launch is attributed to the system actor
- fix(11-10): a retried merge that fails the same way stays one record
- test(11-10): a persistently failing merge appends one event and does not flap
- docs(11-04): complete tag-driven release pipeline plan
- fix(11-04): cap the release notes at 200 commits
- fix(11-04): permission.test cleanup kills its own descendants, not every fake-claude
- fix(11-04): a zombie grandchild is terminated; a live one still fails the stop test
- fix(11-04): wait for the stubborn session's grandchild to leave the process table
- fix(11-04): scope-marker contract tests follow the spawn_prepared_run extraction
- feat(11-04): tag-triggered unsigned release workflow (D-182, D-185, D-186)
- feat(11-04): the git tag is the release version in all three manifests (D-184)
- docs(11-03): update state and roadmap for CI and open-core plan
- docs(11-03): complete CI clean-clone build and open-core proof plan
- docs(11-03): README building-from-source, sidecar tests, licence and architecture pointers
- feat(11-03): open-core proof, build and test with the relay seam deleted (DIST-04)
- feat(11-03): clean-clone build and bundle on every push (DIST-03)
- docs(11-15): complete fleet live reads, row density and jumps plan
- docs(11-15): route D-REV-47/48/49/50/51/54/55 in the register, log two session findings
- test(11-15): fleet row jumps with real key presses in WebKit (D-REV-51)
- test(11-15): assert where a fleet row lands, at the AppShell (D-REV-51)
- test(11-14): correct rate-limit provenance, a real hard limit is observed in transcripts
- test(11-15): measure the fleet surface and worktree inventory in WebKit, both schemes (D-REV-47, D-REV-54)
- test(11-15): one harness drives four fleet reads against a scratch database (D-REV-48/49/50/55)
- docs(11-14): update state and roadmap after plan 14
- docs(11-14): summarize three register items measured
- docs(11-14): route D-REV-32/33/36 in the register, log the Approve-error defect
- test(11-14): every dispatch state fits and is keyboard-reachable in WebKit (D-REV-36)
- test(11-14): measure the scope-denied feed row and refusal badge in WebKit (D-REV-33)
- test(11-14): freeze rate-limit wire shapes with recorded provenance (D-REV-32)
- docs(11-13): update state and roadmap after plan 13
- docs(11-13): summarize six deferred-review items measured
- docs(11-13): record what the six measurements closed and the residual human judgements
- feat(11-13): narrow the epic lens's headers to the epics the core's filter returns rows for (D-REV-27, A-04)
- test(11-13): the epic lens must narrow its headers under the has-worktree chip (D-REV-27)
- fix(11-13): give row-enter an explicit 'to' so the group wipe grows instead of stepping (D-REV-23)
- test(11-13): sample an expanding group's wipe at fixed times; it steps instead of growing (D-REV-23)
- test(11-13): a staged challenge row stays inside its 48px box in WebKit, also with an error beside it (D-REV-10)
- test(11-13): the uncommitted-changes Dot clears 3:1 on every row surface, ink read from the components (D-REV-09)
- fix(11-13): wrap a criterion row's actions below its statement in a narrow host (D-REV-07)
- test(11-13): the criteria rail at 900px must not clip its controls (D-REV-07)
- test(11-13): measure every token leaf at 4.5:1 with a diff row gutter-selected (D-REV-06)
- docs(11-12): update state and roadmap after plan 12
- docs(11-12): summarize forge ordering, conflict-exit focus and overlap toast
- feat(11-12): lift the overlap toast into a component and surface it from the merge sheet's launch (D-REV-43, D-REV-46)
- test(11-12): the overlap warning and a refusal reason must reach the screen from every launch site (D-REV-43, D-REV-46)
- fix(11-12): focus the first conflict exit when a merge result renders (D-REV-02)
- test(11-12): focus must land on a conflict exit when the merge result renders (D-REV-02)
- feat(11-12): extract the draft-hash-before-push ordering into core (D-REV-03)
- test(11-12): an epic request with a moved draft must never reach the forge (D-REV-03)
- docs(11-09): update state and roadmap after plan 09
- docs(11-09): summarize launch-path defects D-REV-37, 38, 45, 46
- fix(11-09): a launch that fails after its run row exists closes the run failed (D-REV-46)
- test(11-09): a launch that fails after its run row exists must leave no running row (D-REV-46)
- fix(11-09): a widen into a parked task records its edge by asking is_startable (D-REV-45)
- test(11-09): a widen into a task parked at pre-spawn attention must record its edge (D-REV-45)
- test(11-09): a live widen landing between decision and launch is refused (D-REV-37)
- docs(11-02): update state and roadmap after plan 02
- docs(11-02): summarize licence, architecture and owner decisions
- docs(11-02): add ARCHITECTURE.md with the Open-Core Module Boundary section
- docs(11-02): add Apache-2.0 LICENSE and NOTICE
- docs(11-02): record the owner's three one-way calls
- docs(11-01): update state and roadmap after plan 01
- docs(11-01): complete packaged sidecar tracer plan
- test(11-01): prove the packaged sidecar acks a ping from outside the source tree
- chore(11-01): untrack the generated sidecar launcher and declare the bundle contents
- feat(11-01): stage a bundled Node runtime, shim and launcher for the sidecar
- docs(11): create phase plan
- docs(11): create phase plan — 21 plans across 7 waves
- docs(state): record phase 11 context session
- docs(11): capture phase context
- docs(state): correct progress counters after Phase 10
- docs(project): evolve PROJECT.md after Phase 10
- docs(phase-10): complete phase execution
- docs(10): phase verification report
- docs(10): code review fix report
- fix(10): WR-04 scope the live-run re-check to t...