Changelog

Historial de versions de Factory Floor

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)