Changelog

Versionshistorik för Factory Floor

0.1.79 (2026-07-30)

Bug Fixes

  • ci: keep appcast history when a previous release has no assets (#492) (92eae05)
  • i18n: add the missing German setup gate strings (#493) (fe042f2)

Documentation

  • credit the script approval fix in the changelog (c5614bb)
  • fix the reporter credit links in the changelog (e482665)

CI/CD

  • website: generate the German changelog page (e049960)

0.1.78 (2026-07-30)

Security

  • Repository-provided setup, run and teardown commands now require your approval before they run. Earlier versions ran setup automatically the first time a workstream’s workspace opened, and teardown automatically when a workstream was archived, with its output discarded. Neither asked for approval, so adding an untrusted repository and creating a workstream for it could execute a command that the repository supplied, under your user account, with no prompt. Advisory: GHSA-923q-2hmp-prq3 (High, CVSS 7.8).
  • The workspace now shows every command and the config file it was read from, and runs nothing until you approve it. Approval is bound to the command text, so an edited config is presented for approval again rather than inheriting the earlier decision, and it can be withdrawn from the Info tab. Repositories you had already added are not carried over; they are presented for approval the next time you create a workstream.
  • Reported by AI Census Labs, https://github.com/aicensus-labs, and Junjie He, https://github.com/glmgbj233. Thank you both.

Bug Fixes

  • build: restore ghostty submodule gitlink (233c9c8)

0.1.77 (2026-07-30)

Bug Fixes

  • scripts: require approval before running repository-provided commands (a53903a)

Note

  • This version has no downloadable build, because its release build failed. The same fix ships in 0.1.78, which is the first installable release carrying it.

0.1.76 (2026-05-29)

Features

  • telemetry: enrich Umami payloads and broaden tracked events (#450) (7648189)

Bug Fixes

  • deps: update monaco-vscode to v31 (#459) (f1b1347)
  • deps: update monaco-vscode to v33 (#471) (8ecc30e)
  • enable extended-keys in tmux config for Shift+Enter support (#441) (4e54e75)
  • propagate window resize to Ghostty (#443) (93f4da1)
  • sync IME preedit state with libghostty (#458) (a582cc2)
  • terminal: restore scrollback by reverting tmux alternate-screen overrides (#479) (e6491c7), closes #395

Performance

  • reduce SwiftUI main-thread churn from AppEnvironment (#453) (6d16635)

Miscellaneous

  • deps: update astral-sh/setup-uv action to v8 (#452) (76752aa)
  • deps: update dependency macos to v26 (#472) (411d724)
  • deps: update dependency sentry to v9.10.0 (#446) (1917c85)
  • deps: update dependency sentry to v9.11.0 (#456) (4fbd7da)
  • deps: update dependency sentry to v9.12.0 (#460) (dca1ee8)
  • deps: update dependency sentry to v9.15.0 (#464) (dddafad)
  • deps: update dependency sparkle to v2.9.1 (#445) (18bcdd6)
  • deps: update dependency sparkle to v2.9.2 (#475) (f90feab)
  • deps: update dependency swift-cmark to v0.7.1 (#447) (b278da9)
  • deps: update dependency swift-cmark to v0.8.0 (#466) (f3b9845)
  • deps: update googleapis/release-please-action action to v5 (#455) (bae2bc3)
  • main: release 0.1.76 (#448) (18cbecb)

CI/CD

  • allow revert as a conventional PR title type (#463) (009971c)
  • replace deprecated Node 20 actions with controlled install steps (#478) (865cdb2), closes #151 #229
  • revert release runners to macos-15 (#480) (b90489a)
  • validate PR titles as conventional commits (#462) (5207d20)

0.1.75 (2026-04-13)

Bug Fixes

  • deps: update dependency monaco-editor to v30.0.1 (#434) (972fa25)
  • group Monaco VSCode packages in Renovate config (#439) (02e9569), closes #436

Miscellaneous

  • deps: update actions/upload-pages-artifact action to v5 (#437) (5b2ad22)
  • deps: update dependency vite to v8 (#435) (4fac286)

0.1.74 (2026-04-13)

Bug Fixes

  • deps: update dependency @codingame/monaco-vscode-standalone-typescript-language-features to v30.0.1 (#427) (0f8f342)
  • deps: update dependency @codingame/monaco-vscode-textmate-service-override to v30.0.1 (#428) (bdaf790)
  • deps: update dependency @codingame/monaco-vscode-theme-service-override to v30.0.1 (#432) (cbb8137)

Refactoring

  • rebuild Sparkle changelog from CHANGELOG.md on every release (#430) (51d9c92)

0.1.73 (2026-04-13)

Bug Fixes

  • deduplicate versions and filter noise in Sparkle changelog (#425) (30c48d9)

0.1.72 (2026-04-13)

Bug Fixes

  • ci: download appcast from previous release, not latest (#423) (062b328)
  • deps: update dependency @codingame/monaco-vscode-standalone-html-language-features to v30.0.1 (#420) (20517fd)
  • deps: update dependency @codingame/monaco-vscode-standalone-json-language-features to v30.0.1 (#421) (821c6b6)
  • DMG skyline clipped by Finder status bar (#424) (c087cb9)

0.1.71 (2026-04-13)

Features

  • show cumulative changelog in update popover (#418) (12caa50)

0.1.70 (2026-04-13)

Bug Fixes

  • ci: increase Node heap size for Monaco editor build (#416) (ed37bdb)

0.1.69 (2026-04-13)

Bug Fixes

  • ci: build Monaco editor before xcodegen in release workflow (#415) (ff7907f)
  • deps: update dependency @codingame/monaco-vscode-languages-service-override to v30.0.1 (#412) (55acef4)
  • deps: update dependency @codingame/monaco-vscode-standalone-css-language-features to v30.0.1 (#413) (522052a)

0.1.68 (2026-04-13)

Features

  • add activity indicators and compact sidebar layout (#406) (e5fcb7e), closes #399
  • add file editor with Monaco integration (#389) (969d5c1)
  • consolidate GitHub actions into contextual dropdown (#405) (fbfaabf), closes #398
  • credit contributors in release changelog entries (#410) (47817e9)
  • reorganize workspace tabs with Info as first tab (#407) (83cacaa), closes #400

Bug Fixes

  • auto-focus terminal when selecting workstream from sidebar (#402) (b87395c), closes #394
  • deps: update dependency @codingame/monaco-vscode-all-language-default-extensions to v30.0.1 (#408) (5b7a85f)
  • deps: update dependency @codingame/monaco-vscode-api to v30.0.1 (#409) (a8e7f45)
  • rename Abandon PR to Close PR to match GitHub terminology (#403) (061a6c3), closes #397
  • show correct shortcut numbers on closeable tabs (#392) (e9d4c3f), closes #387
  • use remote tracking ref for worktree creation instead of updating local main (#404) (5da6b98), closes #393
  • worktrees: avoid prune prompt for newly created workstreams (#384) (a7d89d1)

Miscellaneous

  • deps: update actions/checkout action to v6 (#390) (327844d)

Documentation

0.1.67 (2026-04-08)

Features

  • add German (de) localization for app and website (#383) (20d82a8)
  • prioritize task description over generated name across all views (#380) (45e66d4)
  • setup script as blocking gate, tmux restore, menu cleanup (#382) (15d74b1)

Bug Fixes

  • remove web-browser entitlement that requires Apple approval (#378) (31c0578)
  • set manual signing and remove redundant debug entitlements (#381) (2881455)

0.1.66 (2026-04-08)

Features

  • add emdash config support, FF_DEFAULT_BRANCH, and compatibility env var aliases (#367) (1bd820c)
  • add setting to restrict agent filesystem writes to worktree (#358) (188d1ec)
  • redesign workstream info page with native macOS grouped form (#360) (6ed3ac9)
  • show workstream description tooltip on sidebar hover (#350) (a89d090)
  • sync terminal color scheme with system dark/light mode (#362) (a6dd299), closes #359
  • update main branch and clean up after purging a workstream (#369) (f20b13c)

Bug Fixes

  • browser: enable passkey support in embedded browser (#366) (e940ffa)
  • keep workstream views alive across rapid Cmd+[/] switching (#372) (48642ab)
  • preserve run terminal visibility across workstream switching (#375) (2a9d37b)
  • revert ZStack-all-workstreams to single active TerminalContainerView (#374) (e68cb0e)
  • separate debug entitlements to fix ad-hoc signed builds (#368) (c155ca4)
  • toolbar duplication and SourceKit-LSP false positives in worktrees (#373) (3bae95b)
  • update stale keyboard shortcut references across UI and docs (#371) (911d311)
  • website: improve footer and nav responsiveness (#357) (d96557f)

Refactoring

  • revamp keyboard shortcuts to follow macOS conventions (#365) (c18ef6f)

Performance

Documentation

  • add architecture and security review, updated for v0.1.65 (#355) (46013da)
  • add Corner Office and mobile app design docs (#361) (e6285a9)
  • add translation contribution guide and sponsor page updates (#356) (67e4add)

0.1.65 (2026-04-03)

Features

  • add Open on GitHub button for projects with GitHub remotes (#330) (9c7c7f5)
  • Cmd+Click opens links in external browser and fix HTTP redirects (#331) (599253a)
  • display agent-generated task descriptions in sidebar (#336) (6bac1fe)
  • make run play icons clickable and style center start button (#328) (0007372)
  • show task description in workstream title subtitle (#339) (3b475a9)
  • website: add docs section, issue templates, and improve site navigation (#342) (a20d0f0), closes #338

Bug Fixes

  • re-sort sidebar projects when workstream activity updates lastAccessedAt (#327) (0005ed6)
  • refresh git repo cache immediately when project is added via drag-drop (#325) (6921180)

Miscellaneous

  • ignore dirty state in ghostty submodule (#346) (400dcc0)

Documentation

  • document Hugo AllTranslations bug in AGENTS.md (#345) (abbc136)
  • website: translate docs to Catalan, Spanish, and Swedish (#344) (b0794b6), closes #340

0.1.64 (2026-04-03)

Features

  • add Reveal in Finder and Open in External Terminal to sidebar context menus (#310) (775e188)
  • adopt existing worktrees as workstreams and enrich worktree status (#313) (7f09a3f)
  • background fetch of origin default branch every 2 minutes (#320) (cd73dc5)
  • collapse doc tabs by default and pin to bottom of info views (#315) (7c38c6e)
  • detect merged PRs and show archive prompt for completed workstreams (#316) (4c062ad)
  • support drag-and-drop of files and text onto embedded terminal (#312) (1d568a6)

Bug Fixes

  • differentiate merged vs open PRs and make PR badges clickable in worktree list (#321) (58d9c73)
  • Fish 4.0 shell escaping breaks tmux and agent launch (#324) (323d136)
  • init ghostty submodule properly instead of symlinking entire directory (#323) (702f786), closes #322
  • persist quick action runner across workstream navigation (#317) (3c04488)
  • preserve active tab when cycling workstreams with Cmd+Shift+[/] (#318) (e4547be)
  • skip submodule dirty checks in git status (#314) (8ae6395)

0.1.63 (2026-04-02)

Features

  • quick actions, workspace UI improvements, and settings redesign (#307) (3842c21)

Bug Fixes

  • cache isGitRepo and port state to avoid main-thread I/O in sidebar (#299) (1a9999f)
  • check Ghostty resources exist before building (#297) (c89ca5a), closes #284
  • detect CLI tools in fish shell and Nix environments (#300) (2c2c5b1)
  • PR number formatting and worktree zig-out symlink (#301) (d9b3a9b)
  • sidebar branch name delay and improve workstream row content (#306) (86b83cf)

Miscellaneous

  • deps: update actions/checkout action to v6 (#305) (1dc5605)

0.1.62 (2026-04-01)

Bug Fixes

0.1.61 (2026-04-01)

Bug Fixes

  • handle notification delivery callback off main thread (#293) (d31f06f)

0.1.60 (2026-04-01)

Bug Fixes

  • remove sendable requirement from notification request protocol (#291) (337ff89)

0.1.59 (2026-04-01)

Bug Fixes

  • avoid main-actor notification callback crash (#289) (ec03f7d)

0.1.58 (2026-04-01)

Bug Fixes

  • handle notification authorization on main thread (#287) (6376d3a)

0.1.57 (2026-04-01)

Bug Fixes

  • ci: cache ghostty share dirs needed by xcodegen (#285) (7b243c3)

0.1.56 (2026-04-01)

Bug Fixes

  • align local release script signing with CI workflow (#282) (76a0dcf)
  • bundle ghostty terminfo and shell integration in app resources (#283) (bd4ea71)
  • use local entitlements to bypass library validation in dev release builds (#280) (2f8161c), closes #279

0.1.55 (2026-03-31)

Bug Fixes

  • move notification authorization to applicationDidFinishLaunching (#277) (6085ffd), closes #274

0.1.54 (2026-03-31)

Bug Fixes

  • dispatch notification authorization handler to main thread (#275) (fee40fc), closes #274

0.1.53 (2026-03-31)

Features

  • auto-fetch origin/main before worktree creation (#257) (cfa8dc6), closes #253
  • handle ghostty desktop notifications and bell actions (#264) (fde32f5)
  • support conductor.json and superset config as script fallbacks (#261) (0a4f0bc), closes #256

Bug Fixes

  • enable desktop notifications by adding UNUserNotificationCenterDelegate (#269) (0c5d9f1)
  • match ghostty trackpad scroll speed and momentum (#263) (60996a2), closes #262
  • prevent user tmux config from leaking into sessions (#272) (c7ccef9)
  • resolve build error and warnings in ContentView and TerminalApp (#265) (06d476d)
  • respawn agent in tmux mode when process exits (#267) (f8e54a1)
  • revert worktree-create hook to symlink only xcframework (#273) (9ed32b5)
  • scope tmux respawn hook to agent sessions only (#268) (e4b57af)
  • show explicit desktop notifications even when app is active (#266) (f0b04ca)

Performance

  • show workstream UI instantly during worktree creation (#258) (8f31121), closes #254

Miscellaneous

  • deps: update actions/checkout action to v6 (#271) (0ac67a2)

Documentation

  • document .factoryfloor.json script configuration (#259) (d52c0a2), closes #255

0.1.52 (2026-03-31)

Bug Fixes

  • create empty initial commit on git init to enable worktrees (#252) (656e5f3)
  • prefer login shell PATH for tool detection (#250) (407683d)

0.1.51 (2026-03-31)

Bug Fixes

  • stop overriding PATH and redirecting stderr in agent launch (#248) (cbc1d19)

0.1.50 (2026-03-31)

Features

  • improve terminal spawning resilience (#235) (8313c13)
  • improve update experience for Homebrew users (#246) (c4db1d2)
  • per-workstream debug log files for launches (#247) (5c156f5)
  • website: add download button to /get/ page (#240) (3f1b212), closes #231

Bug Fixes

  • consolidate settings from 7 sections to 4 (#242) (9607073), closes #233
  • fade onboarding content so skyline remains visible in small windows (#245) (c0b998c)
  • increase DMG window height so skyline is visible (#238) (79e9a32), closes #230
  • resolve compiler warnings in Launcher, BrowserView, and Updater (#241) (645ea15), closes #228
  • trigger Sparkle update from sidebar instead of opening website (#237) (5b74416), closes #232
  • use interactive login shell (-lic) for tool version manager support (#243) (d48ee31)

0.1.49 (2026-03-30)

Features

Bug Fixes

  • disable update checker in debug builds (#209) (ddb0e54)
  • match WKUIDelegate completion handler signatures for concurrency (#212) (9d807a5)
  • read Sparkle changelog from CHANGELOG.md instead of GitHub release (#221) (087afee)
  • resolve LSP false positives for conditionally compiled AppConstants (#213) (a105cf6), closes #211
  • run worktree build in background to speed up creation (#214) (a2ed834)
  • website: prevent horizontal scroll on mobile Safari (#218) (8e68359)

Refactoring

  • remove ScriptLogger and move logging toggle to privacy section (#216) (3858229)

Miscellaneous

Documentation

  • add terminal resilience design doc (#219) (06ab89a)
  • add terminal spawning architecture reference (#217) (77b11c3)

0.1.48 (2026-03-29)

Features

  • show changelog in Sparkle update window (#206) (e32562c)

Bug Fixes

  • close button on workspace tabs not intercepting clicks (#208) (e51bd82)
  • close button on workspace tabs not working (#203) (571dab4)
  • create logs directory before revealing in Finder (#201) (86b8344)
  • hide add-workstream button for non-git projects (#204) (af30344)
  • inject login shell PATH into terminal environment (#205) (2aa33aa)

Miscellaneous

  • deps: update astral-sh/setup-uv action to v7 (#207) (8b2cfda)

0.1.47 (2026-03-29)

Features

  • add file-based logging for setup, run, and teardown scripts (#198) (949cf67)
  • show changelog in Sparkle update window (#200) (3daf92a)

Bug Fixes

  • discover CLI tools from user’s login shell PATH (#196) (b00ae30)
  • suppress incomplete umbrella header warnings from GhosttyKit (#199) (9f4ad38)

0.1.46 (2026-03-27)

Bug Fixes

  • handle Claude Code versions without –name flag (#191) (18d805b)

Miscellaneous

  • deps: update actions/deploy-pages action to v5 (#187) (82fa566)

0.1.45 (2026-03-25)

Features

  • add anonymous usage telemetry via self-hosted Umami (#186) (392848c)
  • website: embed YouTube demo video in hero section (#185) (fb94c51)

Bug Fixes

  • browser: handle JavaScript alert, confirm, and prompt dialogs (#184) (e4e40bf)
  • cache WKWebView instances to prevent browser tab reload on switch (#183) (b6bd587)

Documentation

  • awesome lists submission guide and README install improvements (#179) (ae855a1)
  • replace CLI-centric Get Started with in-app workflow (#181) (dd6347d)
  • update awesome lists tracking table with submission status (#182) (a91bee1)

0.1.44 (2026-03-24)

Bug Fixes

  • split ProjectSidebar body into computed properties to fix type-check timeout (#177) (a48545c)

0.1.43 (2026-03-24)

Bug Fixes

  • break up complex ProjectSidebar body to fix release build failure (#175) (c49002a)

0.1.42 (2026-03-24)

Features

  • localize NS*UsageDescription privacy strings via InfoPlist.strings (#173) (98d4358), closes #172

Bug Fixes

  • add privacy entitlements and TCC usage descriptions for embedded terminal (#171) (87c4216), closes #167
  • preserve terminal and browser tabs across workspace navigation (#168) (be89532)
  • sidebar archive button fails due to stale workstream index cache (#170) (3727c40)
  • use login shell for agent and tmux commands to load user PATH (#174) (debcaad)

0.1.41 (2026-03-23)

Bug Fixes

  • rewrite ff-run to exec command directly for ghostty PTY compatibility (#166) (90871a9)
  • run build in worktree-create hook for SourceKit resolution (#163) (1184e7b), closes #161
  • skip symlinks when loading doc files in info panel (#160) (cd97a42)
  • website: link changelog versions to GitHub releases instead of diffs (#164) (7f0ccd9)

CI/CD

  • make Ghostty compat test manual-only and arm64-only (#165) (2e56331)

0.1.40 (2026-03-19)

Features

  • website: add llms.txt for AI crawler discovery (#156) (1e4fcc2)

Bug Fixes

  • use heap-allocated C strings for ghostty env vars (#159) (3c66311)

Performance

  • share SPM package cache across worktrees (#158) (e531a5a)

0.1.39 (2026-03-19)

CI/CD

  • fix build warnings and improve CI caching (#154) (1c2db0b)

0.1.38 (2026-03-19)

Bug Fixes

  • ci: prevent premature website deploy during releases (#145) (dd2967c)
  • host appcast on website to avoid Sparkle update race condition (#149) (5984c50)
  • replace blocking runModal calls with async alternatives (#148) (a0d7e73)

Refactoring

  • ci: embed Sparkle public key in project.yml (#147) (6465fb7)
  • ci: embed Sparkle public key in project.yml (#147) (f7870fa)

0.1.37 (2026-03-19)

Bug Fixes

  • wrap preloaded setup script in login shell (#143) (a263d35)

0.1.36 (2026-03-19)

Refactoring

  • generate Info.plist via XcodeGen and versions.json at deploy time (#141) (c1d624b)

Miscellaneous

  • update versions.json to v0.1.35 (4e0a3ac)

0.1.35 (2026-03-19)

Bug Fixes

  • correct TmuxSessionTests assertions to match actual output (#138) (76dbb87), closes #137

Miscellaneous

  • update versions.json to v0.1.34 (4b58179)

0.1.34 (2026-03-19)

Bug Fixes

  • run setup/run/teardown scripts in user’s login shell (#135) (b9d8340)

Miscellaneous

  • update versions.json to v0.1.33 (27ea914)

0.1.33 (2026-03-19)

Bug Fixes

  • ci: make dSYM upload non-blocking for releases (#133) (e73b829)

0.1.32 (2026-03-19)

Bug Fixes

  • upload dSYMs to Sentry so crash reports are symbolicated (#131) (7f4f2b9)

Miscellaneous

  • update versions.json to v0.1.31 (5b0cbbe)

0.1.31 (2026-03-19)

Bug Fixes

  • align CFBundleVersion with semver so Sparkle detects updates (#129) (0bcb0aa)

Miscellaneous

  • update versions.json to v0.1.30 (a319936)

0.1.30 (2026-03-19)

Features

  • display app version on welcome screen and centralize version access (#125) (85d8856)
  • resolve git worktree paths to main repository when adding projects (#127) (780f26d)

Miscellaneous

  • update versions.json to v0.1.29 (4649027)

0.1.29 (2026-03-18)

Features

Bug Fixes

  • set run-state files to 0600 and directories to 0700 (#97) (#121) (8009d0d)
  • show spinner when environment pane is restarting (#89) (#120) (7bc3fc3)

Refactoring

Miscellaneous

  • update versions.json to v0.1.28 (1507e37)

0.1.28 (2026-03-18)

Bug Fixes

  • don’t double-escape tmux command argument (#115) (91aad5e)

Miscellaneous

  • update versions.json to v0.1.27 (2daee40)

0.1.27 (2026-03-18)

Bug Fixes

  • flatten tmux command to single sh -c level, eliminate nested escaping (#114) (c42631f)

Miscellaneous

  • update versions.json to v0.1.26 (0776e67)

Documentation

  • add hybrid adoption strategy to SwiftGitX analysis (#112) (668b3cd)
  • add SwiftGitX feasibility analysis (#110) (2970473)

0.1.26 (2026-03-18)

Bug Fixes

  • ci: add –options=runtime to framework re-signing step (#108) (5dcb866)

0.1.25 (2026-03-18)

Bug Fixes

  • remove stale baseDirectory argument from MarkdownContentView call (#106) (1758aba)

0.1.24 (2026-03-18)

Features

Bug Fixes

  • async worktree creation with loading spinner (#92, #87) (#101) (a0d8580)
  • double-quote tmux -e values to handle spaces and special chars (#94) (#104) (a31a676)
  • localize all user-facing strings in alerts and prune UI (#88) (#103) (4fabdb0)
  • require user consent for factoryfloor:// URL scheme (#98) (#102) (cfb2e77)
  • strip raw HTML from markdown rendering, remove file:// base URL (#95) (#99) (5c4dce5)

Refactoring

  • move run-state and tmux.conf to ~/Library/Caches/factoryfloor/ (#75) (#76) (a1de232)

Miscellaneous

Documentation

  • add SwiftGit2 feasibility analysis (recommendation: don’t adopt) (#105) (38fce35)
  • document ProjectList ObservableObject audit results (#91) (#100) (b38e2b7)

0.1.23 (2026-03-18)

Bug Fixes

  • migrate project storage from JSON files to UserDefaults (#70) (9a86fa5), closes #46
  • migrate project storage from JSON files to UserDefaults (#72) (4a88ebe), closes #46

Miscellaneous

  • update versions.json to v0.1.22 (51075bb)

Documentation

  • add Sparkle scoping doc; fix(website): native changelog rendering (#41) (#73) (ee9805b)

0.1.22 (2026-03-18)

Bug Fixes

  • remove double shell-escaping of tmux -e env flags (#64) (be08aa4)

Miscellaneous

  • update versions.json to v0.1.21 (db0a820)

0.1.21 (2026-03-18)

Bug Fixes

  • ci: match local and CI build environments (#59), add SPM cache path (#38) (#60) (771dc21)
  • use ObservableObject for projects to fix Release @State timing (#43) (#63) (c0568c8)

Miscellaneous

  • update versions.json to v0.1.20 (88939d1)

Documentation

  • add release command to build instructions (#62) (4ed8099)

0.1.20 (2026-03-18)

Bug Fixes

  • use notifications for project/workstream creation (#43) (#57) (75ed058)

Miscellaneous

  • update versions.json to v0.1.19 (0aed24f)

0.1.19 (2026-03-18)

Bug Fixes

  • delay selection after projects mutation to ensure SwiftUI commits (#43) (#55) (ef451ff)

Miscellaneous

  • update versions.json to v0.1.18 (5297fc7)

0.1.18 (2026-03-18)

Bug Fixes

  • use atomic callbacks for project and workstream creation (#43) (#53) (080bcb2)

Miscellaneous

  • update versions.json to v0.1.17 (65042c2)

0.1.17 (2026-03-18)

Bug Fixes

  • ci: add actions:write permission for website deploy trigger (#50) (272903b)
  • defer workstream selection to let @Binding propagate (#43) (#52) (d687430)

Miscellaneous

  • update versions.json to v0.1.16 (ff602af)

0.1.16 (2026-03-17)

Bug Fixes

  • use os_log Logger with public privacy for debug logging (#43) (#49) (467d749)
  • website: add brew update to upgrade instructions, trigger deploy after release (#47) (385f085), closes #40 #42

Miscellaneous

  • update versions.json to v0.1.15 (e898537)

0.1.15 (2026-03-17)

Bug Fixes

  • add comprehensive debug logging for workspace creation (#43) (#44) (9e52aa1)

Miscellaneous

  • update versions.json to v0.1.14 (b4c06bc)

0.1.14 (2026-03-17)

Bug Fixes

  • ci: use correct xcodegen-action version tag (1.2.4, no v prefix) (#36) (70e79a6)

0.1.13 (2026-03-17)

Bug Fixes

  • ci: use correct xcodegen action (xavierLowmiller/xcodegen-action) (#34) (abfcac3)

0.1.12 (2026-03-17)

Bug Fixes

  • ci: correct xcodegen setup action name (#32) (a70ef8a)

0.1.11 (2026-03-17)

Performance

  • ci: replace brew with dedicated setup actions for zig and xcodegen (#30) (d438aaf)

0.1.10 (2026-03-17)

Performance

  • ci: cache ghostty xcframework between builds (#26) (1d51987)
  • ci: cache SPM packages between builds (#29) (960b037)

Miscellaneous

  • deps: update actions/cache action to v5 (#27) (c506297)

0.1.9 (2026-03-17)

Bug Fixes

  • pass env vars to tmux sessions via -e flags (#24) (596f731)

0.1.8 (2026-03-17)

Features

  • website: add changelog page with timeline layout (#20) (d0b38e5)

Bug Fixes

  • ci: remove –deep from app re-signing, add debug logging (#23) (d298fb8)
  • let release-please bump version in Info.plist (#22) (1624a40)

Miscellaneous

  • update versions.json to v0.1.7 (7a67bf2)

0.1.7 (2026-03-17)

Bug Fixes

  • resolve workspace creation failure in production builds (#18) (ece00ab)

Miscellaneous

  • update versions.json to v0.1.6 (b0acea2)

0.1.6 (2026-03-17)

Bug Fixes

  • ci: enable hardened runtime and secure timestamps for notarization (#16) (5f52d57)

0.1.5 (2026-03-17)

Bug Fixes

  • ci: fetch Apple notarization log on failure (#14) (7fc381e)

0.1.4 (2026-03-17)

Bug Fixes

  • ci: skip ghostty app bundle build, only emit xcframework (#12) (c5844b3)

0.1.3 (2026-03-17)

Bug Fixes

  • ci: build ghostty xcframework before release build (#10) (f7be824)

0.1.2 (2026-03-17)

Bug Fixes

  • resolve CI build failure and ff-run notarization (#8) (4e74409)

0.1.1 (2026-03-17)

Features

  • add accessibility labels to all interactive elements (8fc8b9e)
  • add copy-branch-name button in workstream info header (017ea45)
  • add doc tabs (README, CLAUDE, AGENTS) to project overview page (41513e3)
  • add Environment tab with setup/run script terminals (da14cfa)
  • add GitHub Sponsors and Buy Me a Coffee funding options (3da86a5)
  • add keyboard shortcuts for Rebuild (⌃⇧S) and Start/Rerun (⌃⇧R) (9d04703)
  • add onboarding view with prerequisites and getting started guide (6b5b09c)
  • add run-script port detection (360e453)
  • add scripts/dev.sh for development workflow (c0be015)
  • add Sentry crash reporting, update privacy policy (5a2f954)
  • add setting to disable quit confirmation (9fb2579)
  • add sponsor message to ff CLI (~1 in 5 runs) (2cf4428)
  • add update checker with sidebar notification badge (21df890)
  • automate versions.json update in release workflow (a5bfb02)
  • bundle ff CLI script in app resources (c03257b)
  • change workstream navigation to Cmd+Shift+1-9 (eae8d6a)
  • confirm before quit when workstreams are active (ab43577)
  • debug builds use separate identity from release (23b0d22)
  • debug icon with orange band, tmux config in .config dir (cd5d0e7)
  • notify user when project directories are removed from disk (e5e6238)
  • preload agent and environment terminals in background on workstream open (ff8dd2e)
  • replace MarkdownView with cmark-gfm WKWebView renderer (3eb7380)
  • restore workspace tab state (493facb)
  • separate URL scheme and CLI for debug builds (ed97fc6)
  • show “Run gh auth login” hint when gh is installed but not authenticated (a224535)
  • show install prompt when Claude Code is not found (49be786)
  • show page title in browser tab label (f1f954d)
  • show project icon in workstream info header if found (5ad1966)
  • show running command in terminal tab label (895b6b6)
  • website: add favicon, OG image, and SEO meta tags (eb71e2a)
  • website: add privacy policy page in 4 languages (6c60735)
  • website: add versions.json and /get page for update notifications (0e9889d)
  • website: replace OG image with branded banner (4c45058)
  • website: replace terminal simulation with real app screenshots (93cef2f)

Bug Fixes

  • add Cmd+E to help view, align Claude install URLs, remove dead code (ba61ffa)
  • add missing localization strings for Settings, HelpView, BrowserView, ProjectOverview (489a7b8)
  • address security audit findings (13e846f)
  • avoid worktree path collision for / vs - in names (36ec6d5)
  • browser retry hint, dead retryBrowser notification, settings persistence (0e2e439)
  • change workstream shortcuts to Ctrl+1-9 (Cmd+Shift collides with screenshots) (c90bb91)
  • correct embedded terminal selection coordinates (80a72db)
  • disable wait-after-command, fix restart, add favicon sizes (a0ecbb9)
  • dispatch surfaceRegistry deinit removal to main thread (e09edd3)
  • drop redundant .atomic option in FilePersistence (e95b36b)
  • eliminate AppleScript command injection in openInTerminal (82df6f2)
  • explicitly free ghostty surface on restart to prevent launch failures (a489892)
  • hide CLI install when already correctly installed (1b1c7a1)
  • improve worktree creation error message clarity (3db0f24)
  • improve worktree creation error message with specific failure reasons (b85d39a)
  • isolate test config storage from app roster (e95916c)
  • localize all remaining hardcoded strings (a611245)
  • make wait_after_command per-surface, restore agent respawn (14689b3)
  • mention all config formats in environment tab instructions (743ac36)
  • move ghostty callbacks out of main actor init (a0ec131)
  • normalize detached HEAD branch name to nil (339917f)
  • pin third-party CI actions to commit SHAs (aebdb70)
  • pretty-print JSON config files for readability (72092b2)
  • prevent env scripts from respawning, add help view links (6001cec)
  • prevent git flag injection via names starting with dash (8804fab)
  • prevent shell injection in TmuxSession.wrapCommand (b9a26c2)
  • prevent surfaceRegistry use-after-free and Cmd+W monitor accumulation (b681cd4)
  • proc_listchildpids returns count not bytes, add Stop button (70f24b3)
  • propagate errors from FilePersistence.writeAtomically instead of swallowing (7bbea7f)
  • rebuild cached claude command when workstreamName changes (b0be7e0)
  • remove .factoryfloor/config.json, fix website i18n and nav (79d9776)
  • remove cat workaround, fix env script restart timing (e98cd5b)
  • remove hard cap on surface cleanup in removeWorkstreamSurfaces (5ea7ea2)
  • remove redundant codesign –deep –force on .app bundle (f44028c)
  • remove wait_after_command override, let ghostty use its default (3610a86)
  • rename “Projects Removed” alert to “Projects Not Found” and use comma-separated list (0d09a84)
  • replace favicon PNGs with alltuner icons, kill tmux on restart (af7adc9)
  • replace predictable /tmp filenames with shell variables in CI (102b3fc)
  • resolve relative image paths in markdown info view (21807de)
  • restore keyboard focus rings on browser nav buttons (e22b4b9)
  • restore native mouse behavior in tmux terminals (a455855)
  • restore tmux environment sessions (d606c1d)
  • revert CI action SHA pinning to version tags, fix deinit deadlock (5027aa2)
  • rewrite website translations as native copywriting (c3af758)
  • scope CI permissions per job for least privilege (2711fae)
  • show alert when adding workstream to non-git directory (b3356dd)
  • show error dialog when ghostty fails to initialize (991214b)
  • show error when worktree creation fails (1af1cce)
  • show pointer cursor on sidebar bottom buttons (a185708)
  • sidebar bottom bar always visible, not clipped by drop zone (13c057b)
  • sign bundled ff-run and stabilize project identity (aa2d863)
  • skip doc tabs for markdown files smaller than 20 bytes (4e406c6)
  • sleep after env script exits instead of returning to shell (bb147b2)
  • split tmux/non-tmux env terminal approach, fix rebuild loop (cc5ee14)
  • stop swallowing Gatekeeper failures in release script (7c8b5e5)
  • surface cleanup now covers all prefixes and generation numbers (eeb3dba)
  • swap env shortcuts (Rebuild ⌃⇧R, Start/Rerun ⌃⇧S) (8efc198)
  • translation audit across all 4 languages (0c8c10c)
  • update Buy Me a Coffee URL to alltuner account (856b7fb)
  • use cat to keep env terminals open, add Rebuild/Rerun/Start labels (32286f5)
  • use initialInput for all env terminals, fix tmux restart loop (1e3b3cf)
  • use initialInput instead of command for env scripts (d7c70c9)
  • use keychain profile for CI notarization instead of CLI password (115050a)
  • use smaller font and colon in gh auth login hint (9dfde67)
  • validate .env symlink source and fix derivedUUID comment (4a79d74)
  • website: add –cask to brew install commands (efed35e)
  • website: add Claude Code link in features, enable HTML in descriptions (8cdbdee)
  • website: add Claude Code link in hero text, add tmux to credits (822e712)
  • website: add copy-to-clipboard visual feedback on /get page (6fef3b6)
  • website: add upgrade command to /get page (1da011a)
  • website: adjust skyline spacing (more top margin, less bottom gap) (77f0a19)
  • website: clarify that Claude Code sends code to Anthropic’s API (ae8d649)
  • website: compact footer and add sponsor link (7cc5961)
  • website: fix hreflang x-default, add privacy link, localize sponsor link (781f0ac)
  • website: localize page titles, simplify config section (e5e673e)
  • website: regenerate favicons from hi-res 1024x1024 source (bab5c34)
  • website: reorder sponsor page, financial support first (ddd02d1)
  • website: sponsor page sections, ghostty URL, remove duplicate credit (9966a76)
  • website: tighten skyline viewBox to match terminal preview width (5fb9fb5)
  • website: translate sponsor page to all 4 languages (9b906f3)
  • website: translate sponsor page to all 4 languages (2573ebd)
  • website: update built CSS (f4a0153)
  • website: update favicons from alltuner.com (cec8a2d)
  • website: update OG image to correct dimensions (1669x630) (72c3caf)
  • website: update OG image to standard 1200x630 dimensions (e9100dc)
  • website: update stylesheet (4b75d80)
  • website: use descriptive homepage title for SEO (77088bb)
  • website: use proper hero title for CA/ES (e8e3ea5)

Refactoring

  • consolidate duplicated performArchive into shared function (68b6885)
  • extract abbreviatePath into shared String extension (5dcf9a4)
  • move derivedUUID to PathUtilities (7035f33)
  • move persistence from UserDefaults to JSON files (d79a80b)
  • move retroactive Identifiable conformances to PathUtilities (12f47a7)
  • remove dead code and misleading async (089ab29)
  • remove emdash/conductor/superset config compatibility (ddcb924)
  • remove emdash/conductor/superset, make run script on-demand (c2272c7)
  • remove redundant objectWillChange handler for cachedClaudeCommand (6a41461)
  • rename bridging header, pin ghostty v1.3.1, modernize project (c78270c)
  • website: remove dead HTML content from homepage (5e8f015)

Performance

  • cache projectIndex/workstreamIndex in ProjectSidebar (b275ffa)
  • consolidate polling timers (4e816e1)
  • occlude non-visible terminal surfaces to save GPU (e1cf600)
  • parallelize git subprocess calls in refreshPathValidity (63671ba)

Miscellaneous

  • add OG banner design to future TODO (07fea3c)
  • clean up TODO list (7caf9ad)
  • clean up TODO, deduplicate, record terminal lifecycle fixes (c1ab179)
  • consolidate TODO list, mark completed items (ff0a2b2)
  • deps: update actions/checkout action to v6 (#6) (c9ea157)
  • deps: update dependency macos to v15 (#7) (67754f9)
  • enable strict concurrency checks (4b95cbe)
  • flip project to swift 6 (bf0c227)
  • increase CLI sponsor message frequency to 1 in 2 runs (9740718)
  • mark CI scoping, onboarding, and persistence migration as done (5923068)
  • mark completed items in TODO (e3fbc45)
  • mark completed TODO items from latest parallel batch (e467b93)
  • mark completed TODO items from parallel agent work (689a334)
  • mark Homebrew tap as done in TODO (a10ff74)
  • mark port detection as implemented, update TODO (7f530be)
  • mark projectIndex caching as done (b911cb7)
  • mark round 2 fixes done, add release routine documentation task (9b6457e)
  • mark round 2/3 UX and website fixes as done (2435d54)
  • move distribution and release docs to pre-release (6658477)
  • remove node_modules from repo, add to .gitignore (6753168)
  • triage TODO for pre-release push (eda0c40)
  • update style (3b1b9fa)
  • update todo (77bbdcf)
  • update TODO with round 2 fixes and new planning tasks (94514db)
  • update TODO, remove stale config.json reference (805e3f1)

Documentation

  • add CONTRIBUTING.md and CODE_OF_CONDUCT.md (ae5694f)
  • add credits section to README and update TODO (24aa040)
  • add distribution and auto-update strategy (1e33fdf)
  • add remaining audit findings to TODO (e8381bb)
  • add round 2 audit findings to TODO (7e5d8e2)
  • add slow background polling fallback for port detection (37a9cec)
  • add support section to README (f75de3d)
  • add Swift 6 strict concurrency migration plan (97193fd)
  • clarify ff-run crash recovery (user hits Rerun, no special handling) (78cffae)
  • comprehensive TODO from security and architecture audit (a2032da)
  • comprehensive TODO rewrite, add missing items (275f839)
  • consolidate distribution docs (9678046)
  • consolidate port detection into final implementation plan (3f351c4)
  • fix README install/upgrade instructions, update CLAUDE.md (8286c99)
  • recommend public_repo scope for HOMEBREW_TAP_TOKEN (36fc5c5)
  • remove port detection disable setting question (not needed) (3f1757b)
  • rename CLAUDE.md to AGENTS.md, update README and TODO (26dd2ad)
  • scope crash reporting options and implementation plan (e19d437)
  • scope port detection for run scripts (bd49c43)
  • update distribution.md with current CI workflow and release routine (a7bb738)
  • update README, AGENTS.md, website, TODO for port detection (5e63d17)
  • update shortcuts in README and CLAUDE.md (c92817e)
  • use FSEvents instead of polling for port detection state (2510b6f)

CI/CD

  • add weekly Ghostty compatibility test workflow (6ab12f6)
  • automate build, sign, notarize, DMG, and release upload (ac60ae1)