2.4.0 (2026-08-18)
- add multi-project workspaces (44228ae)
- add multi-project workspaces (8f8a350)
- terminal: add Recover Terminal Display command (#1472) (#1473) (630dcd1)
- defer project admission until selection validation (0329a27)
- give the project switcher the toolbar's own chrome (#1475) (6378160)
- preserve sidebar focus with expanded toolbar (6492535)
- stop repeating the project name in the title bar (#1474) (a621921)
2.3.5 (2026-08-15)
2.3.4 (2026-08-14)
2.3.3 (2026-08-14)
2.3.2 (2026-08-13)
- ci: canonicalize SourceKit-LSP toolchain paths (#1454) (1a09ac8)
- make descriptor path recovery sanitizer-safe (#1451) (a52b384)
- suspend background project editor services (#1447) (1279ef8)
- terminal: wire Quick Terminal agents into detection and Agent Inbox (#1449) (ef54da3)
2.3.1 (2026-08-12)
- disambiguate concurrent agent inbox sessions (#1434) (e968e4c)
- keep CPU-flat agent waits non-actionable (#1428) (69b8564)
- keep terminal destination routing current (#1431) (ab3103f)
- preserve agent generation during start uncertainty (#1430) (055a97e)
- reopen background projects before inbox recovery (#1426) (66a7992)
- restore configured cursor after terminal reset (#1435) (87dccb8)
- retain agent ownership through foreground children (#1427) (f15faf6)
- scope agent activity to project terminals (#1433) (7b1dd53)
2.3.0 (2026-08-11)
2.2.2 (2026-08-10)
- keep terminal work alive on window close (#1412) (057b328)
- recover Open Folder ownership with active agents (#1410) (60b9b83)
2.2.1 (2026-08-10)
- agent: preserve notification transitions (#1394) (1e4fc1c)
- bound quit failure alert recovery (#1395) (33cbd72)
- editor: fence saves against external changes (#1397) (2b3b691)
- editor: show gutter markers for unsaved changes (#1403) (3003269)
- lsp: clarify filtered Problems state (#1393) (6533300)
- search: enforce result boundaries (#1392) (b4ff874)
- sidebar: retry row focus after layout (#1405) (f246abd)
- terminal: draw Metal recovery frames immediately (#1401) (606caf4)
2.2.0 (2026-08-10)
- agent: close Pine 2.0 workflow regressions (#1368) (9a5e035)
- agent: polish native Pine 2.0 UX (#1373) (8c37907)
- help: add native task-based search and contextual help (#1381) (da92717)
- marketing: hide terminal screenshot fixture (#1378) (8e63a90)
- marketing: stabilize terminal screenshot prompt (#1376) (77a5c9a)
2.1.1 (2026-08-09)
- agent: surface background agent work via Dock badge, guard, and foreground banners (#1360) (463355d)
- aggregate quit confirmation across projects (#1363) (1729579)
- make application quit bounded, atomic, and user-visible (#1364) (15c1296)
2.1.0 (2026-08-07)
- agent: add Agent Inbox toolbar button with attention badge (#1337) (#1353) (4320b16)
- terminal: add "Digital Rain" phosphor-green theme (#1351) (fc42dd1)
2.0.1 (2026-08-05)
- agent: add CPU-time hysteresis to stop waiting-input flip-flop (#1341) (d177c94)
- agent: Agent Inbox window polish — focus ring, duplicate title, RU label (#1340) (e5e02b2)
- agent: stabilize Agent Inbox row order against polling-driven timestamps (#1342) (675a7ac), closes #1336
- editor: wait for dialog owner before Open Folder panel (#1344) (#1345) (7cec7aa)
- terminal: close-tab confirmation robustness for agent tabs (#1343) (9ec88a2)
2.0.0 (2026-08-04)
- add polished branded DMG installer (#1300) (d2b01a8)
- agent: add actionable task notifications (#1322) (f3c9c14)
- agent: add cross-project Agent Inbox (#1324) (a3669ee)
- agent: add durable cross-project agent tasks (#1302) (#1313) (dc272b0)
- agent: add evidence-based completion briefs (#1325) (3cac544)
- agent: add first-party compatibility matrix (#1321) (9e73901)
- agent: add five first-party detection adapters (#1328) (9085385)
- agent: add isolated worktree workflows (#1326) (3702e58)
- agent: add safe agent task recovery (#1323) (e649f46)
- agent: add vendor-neutral adapter core (#1303) (#1314) (a9a0180)
- refresh app icon for Pine 2.0 (#1315) (3b299c5)
1.38.1 (2026-07-31)
- consolidate editor preferences in settings (#1295) (cd9aef0)
- show native keybinding glyphs in settings (#1297) (eec4391)
- show state in view menu (#1298) (1057386)
- use native ellipsis in app menu (#1296) (0ec1145)
1.38.0 (2026-07-31)
- agent: complete keyboard, detail, and localization flows (#1264) (4ca043c)
- macos: restore native File and Window menu semantics (#1262) (f5bdf3f)
- nav: replace document-modal sheets with command overlays (#1258) (764ba95)
- settings: adopt immediate-apply LSP configuration (#1255) (c3b381c)
- settings: consolidate existing global preferences (#1267) (1ba3d80)
- sidebar: add Finder-style keyboard and VoiceOver navigation (#1257) (9cc8106)
- tabs: add visual global MRU switcher (#1261) (cb6ec14)
- tasks: surface execution progress, output, and failures (#1269) (9e5ef94)
- terminal: add selectable terminal themes with light/dark pairs (#1259) (3eb8623)
- terminal: complete Quick Terminal settings and project context (#1265) (0a7c00c)
- updates: embed the Sparkle update flow in Pine (#1268) (750c9ff)
- workspace: start new projects in a focused terminal (#1256) (251c739)
- agent-history: make verified undo reachable and close preview TOCTOU (#1279) (2710275)
- agent: integrate verified undo review into Agent History (#1263) (329f412)
- git: harden command process lifecycle (#1280) (19d891f)
- i18n: complete localization catalog coverage (#1285) (f4f71d8)
- localize consolidated settings (#1287) (37b481b)
- lsp: wire Problems panel into editor chrome (#1260) (f93dc3d)
- macos: finish native File and Window menu semantics (#1283) (6ea758f)
- macos: restore Open Folder menu routing (#1289) (827de7c)
- settings: restore terminal and Quick Terminal controls (#1278) (0e077ae)
- sidebar: preserve position during keyboard navigation (#1293) (866ccdf)
- tabs: wire and harden the visual global MRU switcher (#1282) (eb012ca)
- updates: keep a single standard Sparkle runtime (#1281) (b9da0ac)
- ux: make toast notifications nonblocking and accessible (#1254) (211a5ae)
- help: expand Pine Help Book into task-based documentation (#1253) (0bdfd40)
- install: use one-command Homebrew cask installation (#1252) (42b5dcc)
- record native sidebar navigation flow (#1294) (9c2c622)
1.37.1 (2026-07-27)
1.37.0 (2026-07-27)
- restore native sidebar keyboard focus (#1228) (25f1187)
- terminal: prevent black panes after terminal reparent (#1230) (24b424b)
1.36.0 (2026-07-26)
- agent: add opt-in read-only context handoff (34b195d)
- agent: add opt-in read-only context handoff (30953ed)
- agent: add secure provenance event store (3e05bda)
- agent: add secure provenance event store (585d016)
- agent: add trusted event provenance envelope (#1204) (f714704)
- agent: add verified patch core (32e58d8)
- agent: add verified patch engine (ef2817b)
- agent: filter Activity Panel by attribution evidence (#933) (#1220) (96169a8)
- agent: session staleness tracking (#933) (#1218) (eec518f)
- agent: verified diff preview UI for Agent History (#933) (#1219) (d6e2cc1)
- editor: complete structural intelligence providers (39519e0)
- editor: LSP-first structural folding (8d3a618)
- editor: LSP-first structural folding (2e8ad65), closes #1008
- extensibility: add command palette foundation (34ebb93)
- extensibility: complete command palette and registry (a954b6d)
- extensibility: complete command palette and registry (#1117) (b21d5ed)
- extensibility: keybinding override suppression, config reload, and error UI (#1117 slice) (#1203) (99c4236)
- tabs: complete unified interaction restoration (#1210) (cea2560)
- tabs: transient preview tabs and MRU switcher (#1202) (406ad62)
- agent: bound verified patch planning (31160dc)
- agent: cap patch revalidation work (6b51f09)
- agent: checked undo engine for verified Agent History entries (#1183) (5cc6d75)
- agent: harden patch mapping and version chains (eeb4365)
- agent: harden session liveness polling (#1224) (684bb86)
- agent: harden verified checked undo (#1183) (241ef53)
- agent: harden verified patch boundaries (e858c7d)
- agent: harden verified patch preparation (a88fb76)
- agent: keep ambiguous activity unattributed (#1208) (3ba521e)
- agent: make prepared undo previews byte- and mode-truthful (#1223) (e95796a)
- concurrency: clear residual Xcode warnings (#1212) (8714697)
- editor: complete structural folding fallbacks (184601c)
- editor: make LSP folding revision-safe (66c8285)
- isolation: align structural providers with MainActor default (4caa81c)
- localization: make symbol labels locale-deterministic (bc1983c)
1.35.0 (2026-07-24)
- add exact tab insertion targets (#1186) (2806efc)
- lsp: add language server settings (#1198) (d3e4920)
- tabs: stabilize drag geometry and auto-scroll (#1199) (acb6720)
- avoid synchronous main hops in syntax highlighting (#1184) (577ec84)
- disable unsafe heuristic agent history undo (#1187) (5cc0334)
- extensibility: validate configuration reloads atomically (#1192) (a23b644)
- lsp: harden streaming transport framing (#1188) (349e071)
- tabs: bound destination focus retries (#1190) (56e1a19)
- choose structural intelligence providers (#1193) (f6bb2f2)
- refresh landing page positioning (#1175) (2510af9)
1.34.0 (2026-07-22)
- editor: unify the editor canvas background (#1166) (c61d3ef)
- preserve tab state across pane interactions (#1170) (5e4a936)
1.33.4 (2026-07-22)
1.33.3 (2026-07-21)
- editor: compile notification observers with Xcode 27 (d900b6a)
- editor: restore Python declaration highlighting (#1144) (3d3d615)
- lsp: parse bare code action commands (#1142) (8839537)
- lsp: reject invalid workspace edit ranges (#1154) (a119185)
- tasks: close dangerous command validator bypasses (#1155) (b9d8fdd)
- terminal: improve light ANSI palette contrast (#1153) (322f598)
- terminal: recover blank tab after delayed first output (2246ee7)
1.33.2 (2026-07-15)
1.33.1 (2026-07-14)
1.33.0 (2026-07-14)
- agent: per-tab status glyphs + global attention indicator (#1120) (b8bcd8f)
- terminal: global hotkey drop-down (quick) terminal (#1121) (e73eb05)
- terminal: opt into SwiftTerm Metal renderer to eliminate black-screen class (#1118) (06c6d38)
- terminal: OSC 8 hyperlinks + file:// reveal-in-Finder (#1122) (e5ab3ea)
- terminal: zoom-to-fullscreen pane toggle (#1123) (6010012)
1.32.4 (2026-07-10)
- terminal: stop clearing layer.contents outside forceFullRedraw in appearance apply (#1109) (4bdf3e3)
1.32.3 (2026-07-10)
1.32.2 (2026-07-09)
1.32.1 (2026-07-06)
1.32.0 (2026-07-05)
- a11y: VoiceOver labels, differentiate-without-color, reduce-motion (#1003) (#1081) (360fc78)
- agent: Agent Activity Panel (#1072) (#1074) (f237048)
- agent: Agent History & Undo (#1073) (#1075) (bd2219f)
- lightweight extensibility — user grammars, tasks, keybindings (#1009) (#1083) (83a894d)
- lsp: Phase 1 — Diagnostics (LSP client foundation) (#1010) (#1082) (ea9893d)
- lsp: Phase 2 — Hover + Go-to-Definition (#1011) (#1084) (4167def)
- lsp: Phase 3 — Completion (#1012) (#1086) (b4233be)
- lsp: Phase 4 — Code actions + Rename (#1013) (#1087) (294ed8a)
- lsp: UI integration — hover, go-to-definition, code actions, rename (#1088) (#1091) (d7618cc)
- add security validation layer to UserTaskRunner (#1088) (#1089) (ebf14f2)
- agent: detect interpreter-wrapped agent CLIs (node/python/bun/…) (#1078) (51deafb)
- i18n: add localizations for a11y labels, Go-to-Line, and Problems panel (#1093) (b7a70d5)
- i18n: add missing localizations for Tasks, Agent Activity, and rename-error (#1092) (2b7d54c)
- terminal: fix root cause of black screen — setNeedsDisplay race condition (#1094) (#1095) (bdce6b1)
1.31.2 (2026-06-29)
1.31.1 (2026-06-29)
- agent: boot detection coordinator on first terminal creation (#1064) (29ae9c4)
- editor: break save-path reentrancy causing macOS exclusivity abort (#1066) (#1067) (dae439c)
1.31.0 (2026-06-25)
- editor: break fold-observer reentrancy causing macOS exclusivity abort (#1056) (#1057) (80a35a7)
- editor: break menu-save reentrancy causing macOS exclusivity abort (#1058) (#1059) (837ffa5)
1.30.1 (2026-06-24)
1.30.0 (2026-06-23)
- agent: add AgentDetector for process-name detection (#1036) (08c0b63)
- agent: show agent badge and color coding on terminal tabs (#1048) (bb90df7)
- checkout main in screenshots workflow to avoid detached HEAD (#1037) (fbf656e)
- editor: break @Observable reentrancy causing macOS 27 exclusivity abort (#1047) (c2334e4)
- sidebar: force tree re-render after external refresh (#1043) (7bd80bd)
- build: align macOS deployment target to 26.0 (#1040) (266795f)
- ignore .pi agent artifacts and group agent ignores (#1033) (4165087)
1.29.0 (2026-06-20)
- perf: Instruments template + OSSignposter tracing + input-latency rig (#1023) (eef658b), closes #1005
- ci: repair screenshots.yml + add failure notification (#1019) (66e430a)
- concurrency: cancel outstanding highlight work in Coordinator.deinit (#1016) (e48bd84), closes #1007
- perf: move shallow loadTree off main thread in refreshFileTree (#1022) (ff17ec9)
- split-pane: route commands through active pane + fix TabManager leak (#1024) (c0bd8da)
1.28.1 (2026-06-18)
- terminal: accumulate residual delta for alternate-screen arrow-key scroll (#991) (508bb1f)
- terminal: flush residual delta on scroll gesture phase boundaries (#992) (53020ec)
- terminal: pixel-precise mouse forwarding for TUI scroll (#989) (9c1d8d2)
- document milestone-driven subagent orchestration workflow (#993) (50f7885)
- move CLAUDE.md to AGENTS.md and document maintainer workflow (#988) (0e358c8)
1.28.0 (2026-06-17)
- git: add branch switch command (#977) (65ab725)
- terminal: make file:line references clickable in terminal output (#949) (#983) (7be53ba)
- keyboard: make global shortcuts independent of keyboard layout (#981) (94b7e53)
- terminal: confirm before stopping foreground processes (#970) (#982) (a66f89e)
1.27.2 (2026-06-11)
1.27.1 (2026-06-09)
1.27.0 (2026-06-06)
- editor: Shell script format-on-save via shfmt (#855) (85023a5)
- syntax: improve Python grammar — f-strings, prefixes, builtins, exceptions (#958) (0324c39)
- config: split ConfigValidator.swift (798 LOC) into per-language files (522e894)
- git: split GitStatusProvider.swift (959 LOC) into focused modules (#946) (8f9dac0)
- introduce AlertTemplate builder to deduplicate NSAlert boilerplate (8055bed)
- syntax: split SyntaxHighlighter.swift (1266 LOC) into 5 focused modules + facade (61fab81)
1.26.3 (2026-06-01)
1.26.2 (2026-05-27)
1.26.1 (2026-05-24)
- editor: cursor jumps to wrong position after pressing Enter (#935) (a946eac)
- editor: eliminate syntax highlighting flicker on Enter (#863) (#936) (aeba6de)
1.26.0 (2026-05-24)
- editor: YAML format-on-save via prettier (#929) (215a64d)
- terminal: light theme for system light appearance (#931) (#932) (e80a2d3)
1.25.8 (2026-05-19)
1.25.7 (2026-05-13)
1.25.6 (2026-05-08)
1.25.5 (2026-05-04)
- remove ProcessRunning protocol, force defaults, contentPreparedForSave overload (#902) (#907) (249bdcf)
1.25.4 (2026-05-04)
1.25.3 (2026-04-28)
- add runOnBackground helper, migrate withCheckedContinuation call-sites (#898) (#908) (16b078d)
- extract UITimings constants for delays and debounces (#899) (#906) (de5b36d)
1.25.2 (2026-04-27)
1.25.1 (2026-04-24)
- sidebar: suppress progress indicator flicker during incremental file tree refresh (#877) (#879) (d526722)
- workspace: clean up ProgressTracker operations on cancelled loads (#882) (e3c5156)
1.25.0 (2026-04-21)
- editor: external formatter infrastructure (#860) (8d4dab4)
- editor: HCL/Terraform format-on-save with OpenTofu fallback (#869) (9a0f900)
- editor: dispatch ExternalFileFormatter to background queue (#874) (1159ede)
- terminal: force needsDisplay after re-parenting to prevent blank terminal (#871) (579a37a)
1.24.0 (2026-04-18)
- editor: refresh syntax highlighting after format-on-save (#859) (830e98f)
- enable PinePerformanceTests in scheme to fix nightly CI (#850) (66aaf9b)
- use suggestedHumanReadableName for screenshot manifest parsing (#849) (3e1f25f)
1.23.2 (2026-04-17)
- workspace: restore external file change detection and sidebar refresh (#840) (24921cf), closes #838 #839
1.23.1 (2026-04-14)
- terminal: normalize embedded terminal env (#834) (1bd8f4c)
- test: replace polling with CheckedContinuation in LayoutStabilityTests (#824) (015a3fb)
1.23.0 (2026-04-13)
- terminal: use One Dark background for proper TUI contrast (#819) (4c640e4)
- test: increase LayoutStabilityTests timeout to 60s for CI (#821) (#822) (78e307a)
1.22.0 (2026-04-13)
- editor: insert final newline on save (#799) (5cc2f5d)
- terminal: add terminal theme picker with 6 built-in palettes (#817) (b165ae2)
- editor: constrain diagnostic icon to fixed rect to prevent overlap (#811) (528997d)
- editor: force diff gutter refresh via diffVersion counter (#810) (39df7ab)
- test: resolve flaky LayoutStabilityTests on CI (#818) (7996d3f)
1.21.0 (2026-04-10)
- editor: add SmartListContinuation pure logic (#803) (c74bf85)
- grammar: add setext headings, image links, nested emphasis to markdown (#786) (8a71f7c)
- editor: diagnostic gutter icon hover/click regression (#784) (87840cb)
- editor: guard SyntaxHighlighter against nil attribute values and concurrent access (#801) (fb46272), closes #790
- editor: restore git diff gutter updates in split panes (#782) (609773b)
- grammar: scan full text for multiline rules (fenced code interiors) (#789) (5584225)
- sidebar: refresh tree promptly for changes from built-in terminal (#774) (#777) (0485df3)
- app: split PineApp.swift into menu commands and notifications (#785) (2ea3bc3)
- editor: split CodeEditorView.swift into focused files (#797) (370c91c)
1.20.1 (2026-04-09)
- sidebar: align file-leaf icons with folder icons via chevron-width spacer (#770) (770fe2f)
- sidebar: flatten file tree alignment by removing chevron (#778) (1690758)
- sidebar: unify vertical rhythm across nesting levels (#766) (e69c5d6)
- terminal: match Terminal.app Basic palette for TUI parity (#768) (7b091bc)
1.20.0 (2026-04-07)
1.19.0 (2026-04-07)
- grammars: unify dict key scope across Python, Ruby, JSON, YAML (#745) (2f96059)
- sidebar: align inline rename row with siblings (#748) (8733b36)
- terminal: restore readable bright-black for zsh autosuggestions (#754) (748ddc5)
1.18.3 (2026-04-07)
- ci: make Detect Changes fail-safe on unreachable base SHA (#752) (3e38e3a), closes #751
- ci: repair screenshots workflow (Swift 6 race + xcresult extraction) (#746) (b6f29e1)
- git: stop status indicator flicker on rapid updates (#744) (f150928), closes #738
- grammar: markdown syntax highlighting hierarchy (#735) (79a2959)
- reload editor content on external file change (#734) (#743) (a6afebf)
- terminal: align SwiftTerm ANSI palette with macOS system colors (#741) (e2faef3), closes #733
1.18.2 (2026-04-06)
- concurrency: nonisolated InlineDiffProvider + CI guard for background queues (#719) (576e150)
- diagnostic icons show explanation via tooltip and popover (#679) (#720) (3a22964)
1.18.1 (2026-04-06)
1.18.0 (2026-04-06)
- cross-type center drop creates auto-split pane (#714) (#715) (32b254b)
- drag files from sidebar to open in specific editor pane (#709) (48a5cf3)
- root-level drop zones for full-width/height pane splits (#713) (9ff1755)
- split panes with terminal integration (#543) (#707) (d04be74)
- terminal tab drag-and-drop reorder and cross-pane move (#711) (859a813)
1.17.0 (2026-03-31)
1.16.1 (2026-03-31)
1.16.0 (2026-03-31)
- allow docs-only PRs to pass required CI checks (#656) (#682) (87beb8c)
- improve inline diff rendering — remove strikethrough, yellow markers (#678) (#681) (6e94088)
- move git fetch operations to non-MainActor GitFetcher enum (#613) (#683) (2e2feaa)
- remove broken accept/revert buttons from gutter (#690) (2e6b87e)
- remove phantom overlay for modified lines (#681) (#685) (4a674d3)
- stabilize gutter width and add diagnostic tooltips (#677, #679) (#680) (6f8e74e)
1.15.0 (2026-03-30)
- add file type icon colors in sidebar, tab bar, and quick open (#644) (61106a0)
- add inline config validation for YAML, Terraform, shell scripts, and Dockerfiles (#314) (#627) (85ddb19)
- add tab context menu with close, copy path, reveal actions (#634) (#641) (9f5bfa9)
- add toast notifications for live file reload (#312) (#628) (3077b22)
- add validation diagnostic icons in editor gutter (#648) (#658) (7845636)
- inline diff review with Accept/Revert for AI agent changes (#313) (#632) (2982e9b)
- migrate Pine app target to Swift 6 and tighten concurrency (#626) (d4789fc)
- prepare codebase for Swift 6 strict concurrency (#574) (#625) (56d0cf8)
- send selected code to terminal via Cmd+Shift+Enter (#311) (#630) (c89e27d)
- show inline diff on gutter click instead of always visible (#672) (#676) (0aa4c31)
- add built-in validators so diagnostic icons appear without external tools (#663) (#666) (454e6fb)
- add visual before/after comparison for inline diff review (#664) (09ef5da)
- capture editedRange via NSTextStorageDelegate for incremental highlighting (#655) (bb452b2)
- improve config validator accuracy and add fallback (#663) (#667) (cfeef3a)
- make screenshot extraction work on macOS 26 with fallback strategies (#622) (af2d0b5)
- prevent blank terminal by deferring PTY start until non-zero size (#662) (f6f1fef)
- prevent diagnostic icon from overlapping line numbers in gutter (#669) (#670) (84199e4)
- prevent EXC_BAD_ACCESS crash on Cmd+Z by deferring syntax highlighting during undo (#650) (#653) (1ca7864)
- prevent stale highlight from overwriting colors after newline insertion (#665) (f2f0b7b)
- trigger highlighting for session-restored tabs (#671) (#674) (06edb9b)
- work around QuickLookUI crash on macOS 26 (#675) (7de8b75)
1.14.0 (2026-03-28)
- add clickable line endings indicator with LF/CRLF conversion (#277) (#615) (960b16a)
- auto-update screenshots in assets/ via UI tests (#608) (17d180f)
- migrate PineUITests target to Swift 6 mode (#614) (2980094), closes #578
- disable code signing in screenshot script for CI runners (#621) (76f4f8d)
- guard against nil previewItem in QLPreviewView to prevent crash (#618) (#619) (1d7ea4b)
- make About panel tests locale-independent (#576) (#604) (94ba892)
- redesign screenshot tests with XCTAttachment and CI automation (#289) (#620) (0a8100a)
- stabilize flaky debounceCoalescesRapidUpdates test on CI (#603) (c226405)
1.13.1 (2026-03-27)
- align indent guides correctly for tab-indented files (#587) (#601) (c0a194b)
- correct match highlighting in project search results (#575) (#598) (e4baa3e)
- eliminate scroll position jump when switching editor tabs (#595) (#599) (174f660)
- prevent editor tabs from overlapping with long file names (#596) (c8c43cb)
- remove broken Unicode branch icon from toolbar subtitle (#594) (#597) (3ef4e46)
1.13.0 (2026-03-26)
- add pane tree data model for flexible split layout (#569) (7fcd478)
- add symbol navigation for quick jump to functions and classes (#306) (#573) (26129d3)
- convert scroll to arrow keys for TUI apps on alternate screen (#567) (4e562fb)
- pass editor context to terminal via environment variables (#571) (7f2904b)
- add missing Symbol Navigator localizations for all 9 languages (#582) (#583) (92dc833)
- auto-focus terminal on new tab creation and tab switch (#558) (#560) (129d121)
- make terminal view first responder on mouse click in scroll interceptor (#565) (6fe111a)
- move context file from project root to Application Support (#590) (#592) (089ac4b)
- prevent minimap viewport jump when adding lines at end of file (#586) (#591) (2c82454)
- prevent syntax highlighting from disappearing after initial display (#556) (#562) (f8cc976)
- rename DocumentSymbol/SymbolKind to resolve type ambiguity with swift-markdown (#588) (#589) (21e1f67)
- use scroll interceptor overlay to forward mouse events to TUI apps (#561) (e85d0ec)
1.12.0 (2026-03-25)
- add Helm and Jinja2 grammars, enrich Groovy/HCL/Nginx grammars (#318) (#540) (bf17977)
- add tab pinning support (#334) (#548) (cb31cc2)
- breadcrumb path bar above editor (#335) (#536) (cf4b180)
- CLI tool pine command to open files from terminal (#419) (#535) (15529c6)
- highlight matching brackets at cursor (#338) (#537) (c48bd69)
- improve drag & drop tab reorder with visual feedback and spring animations (#538) (e88005d), closes #279
- register file type associations for Open With in Finder (#421) (#534) (a86591d)
- word wrap toggle (Option+Z) (#416) (#533) (a818313)
- add docs workflow to unblock docs-only PRs (#552) (#553) (ccf4c82)
- forward mouse scroll events to TUI apps in terminal (#524) (#544) (a2dc514)
- group create+rename into single undo step via beginUndoGrouping (#527) (#545) (6246528)
- use getpwuid to detect user's default shell instead of $SHELL (#550) (54f1e61)
1.11.0 (2026-03-24)
- About Pine window with version, build, and credits (#414) (#515) (bf74939)
- add defensive coding — depth limits, iteration guards, assertions (#501) (4725c10), closes #474
- add keyboard tab navigation (Cmd+1..9, Ctrl+Tab) and first responder flow (#518) (a3d062f)
- data migration system for UserDefaults schema changes (#471) (#505) (f90b7ce)
- drag & drop files and folders to open in Pine (#420) (#523) (441ee4f)
- progress indicators for long operations (#470) (#500) (9355a8e)
- remove project from recent list via context menu (#301) (#514) (494601d)
- restore scroll position, cursor, and fold state per tab (#468) (#495) (2ca4ee5)
- search in recent projects list on Welcome screen (#300) (#513) (93266e3)
- undo support for file operations (#469) (#502) (e9bb73a)
- unified logging with os_log / Logger (#466) (#492) (5a9ff1d)
- update Welcome screen tagline to "A code editor that belongs on your Mac." (#520) (9a043cf), closes #519
- add NSLock synchronization to SyntaxHighlighter (#462) (#489) (b4aac12)
- auto-scroll sidebar to newly created file (#528) (#530) (9b488d4)
- eliminate layout jitter during project load, sidebar refresh, and tab switching (#509) (#517) (3cea969)
- eliminate syntax highlight flash on tab switch (#529) (#531) (91d6062)
- new files not appearing in sidebar until manual interaction (#439) (#493) (b2e572d)
- prevent .js and .ts files from being treated as binary (#479) (#490) (10c8c2e)
- prevent QuickOpenProvider from indexing files outside project root via symlinks (#486) (#491) (fa68b74)
- Quick Open index goes stale after file tree changes (#477) (#494) (c7db89a)
- replace class LoadContext with struct to prevent use-after-free (#405) (#504) (c555705)
- replace silent try? with proper error logging (#463) (#496) (ee07336)
- use static methods in FileOperationUndoManager to prevent use-after-free (#525) (#526) (f84048c)
- extract magic numbers into named constants (#499) (a02e1e7), closes #464
- standardize animations and transitions across UI flows (#506) (#510) (6a55877)
1.10.1 (2026-03-24)
- editor tab bar overflows without scroll or collapse when many tabs open (#453) (f846d58)
- prevent infinite loops in Finder-style copy URL generation (#484) (ab253a5)
- repair PineTests target dependencies for clean builds (#480) (737dbaf)
- replace force cast with safe cast and add defer for FileHandle (#461) (#485) (80d9cd3)
- resolve Swift 6 concurrency warnings in GitStatusProvider and ProjectSearchProvider (#481) (fe9f678)
- scope NotificationCenter observers to specific scroll views (#487) (a8245cb)
- show correct file content when switching editor tabs (#455) (#456) (64cbd3c)
1.10.0 (2026-03-23)
- add Go to Line dialog (Cmd+L) (#432) (cd87484)
- Quick Open file search (Cmd+P) (#433) (2cd2bc9)
- strip trailing whitespace on save (#427) (3c6b3c2)
- re-highlight syntax after external file changes (#451) (5ab6c0b)
- reset cosmetic xcstrings changes after build (#434) (61c7bcb)
1.9.2 (2026-03-22)
1.9.1 (2026-03-22)
1.9.0 (2026-03-22)
- add creator story section to landing page with i18n (#371) (b0fd2bc), closes #344
- find in terminal (Cmd+F) (#372) (62a8a69)
- i18n: add missing translations for 14 strings across 7 languages (#367) (4b99ba6), closes #327
- editor find bar overlaps line numbers (#387) (cf6d395)
- tests: add isSelected accessibility trait to active editor tab (#378) (f9134e6)
1.8.0 (2026-03-21)
- crash recovery for unsaved editor content (#363) (b6837a1)
- i18n: add Japanese localization (#360) (6a31926)
- ci: grant write permissions to Claude CI workflows (#356) (760f020)
- correct upside-down branch icon in git blame annotations (#359) (c04c40f)
- i18n: fix translation bugs in zh-Hans, de, and ru (#352) (b2b9652)
- i18n: remove orphaned xcstrings keys that break Xcode 26 build (#355) (8b69059)
- prevent line number gutter from overlapping native find bar (#354) (878bd62)
- prevent Xcode from modifying Localizable.xcstrings on build (#350) (c6a7b38)
- add MIT license (#366) (3362374)
- update CLAUDE.md to reflect current architecture and features (#353) (42df37a)
1.7.0 (2026-03-21)
- add auto-save files after delay (#329) (1bde1d9)
- add code folding for collapsible regions (#276) (#287) (9583dcd)
- add dedicated Terraform syntax highlighting grammar (#286) (a88925b)
- add find & replace in editor via native macOS find bar (#341) (c49b729)
- add git blame view with toggle via View menu (#288) (db303a0)
- show line/column, indentation, line ending and file size in status bar (#339) (43330eb)
- replace List with ScrollView+LazyVStack in welcome recent projects (#285) (faca3c1)
- resolve corrupted rendering and multi-region fold issues (#291) (#321) (0c1ddee)
- resolve performance regression in code folding (#320) (1a722d2)
- cache line number offsets for O(log n) lookups (#326) (24c578a)
- make file tree loading async and incremental (#325) (4a3d0ca)
- make git operations async to unblock main thread (#319) (846fd01)
- make syntax highlighting async and incremental (#322) (95e38c4)
1.6.1 (2026-03-20)
1.6.0 (2026-03-20)
- configurable terminal shell (#267) (276166c)
- navigate between git changes in editor (#265) (2ec7a80)
- support file encoding detection beyond UTF-8 (#271) (ee17cfd)
- add SF Symbol icons to all menu items for consistent alignment (#269) (f21d688)
- resolve session restore UI test flaky on CI (#272) (691308e)
- scope all session metadata to project root files only (#270) (42ac8bd)
1.5.1 (2026-03-20)
- add bottom inset to editor so last line is not clipped (#264) (b21a5d7)
- remove contentMargins that clips first item in Welcome recent projects list (#263) (1b58c22), closes #207
1.5.0 (2026-03-19)
- add 18 syntax grammars, pattern-based filename matching, and CSS-in-HTML highlighting (#239) (6d47261)
- add global project search (Cmd+Shift+F) (#226) (2482421)
- replace sidebar segmented picker with native .searchable (#246) (598162a)
- support block comments (Cmd+/) for HTML, CSS, Markdown, and SQL (#238) (d047755)
- copy ignoredPaths from background git provider (#211) (e9dfb30)
- place comment character at column 0, preserving indentation after it (#255) (da68b3b)
- prevent cursor jumping to end of file after deleting a character (#253) (75531bb), closes #250
- prevent deadlock by disabling undo registration during syntax highlighting (#254) (32a1283)
- run git refresh asynchronously to prevent SIGSEGV on folder delete (#213) (96ad0cc)
1.4.0 (2026-03-18)
- add lightbox for landing page screenshots (#202) (97f3665)
- show recent projects in Dock context menu (#206) (7d2d845)
- propagate untracked status to files and subdirectories inside untracked dirs (#205) (ea75208)
- update Homebrew tap with versioned DMG filename (#198) (29fced4)
1.3.0 (2026-03-18)
- update README and landing page for v1.1.0 (#186) (9b9b5b6)
- update screenshots for macOS 26 Liquid Glass UI (#193) (18bdcee)
1.2.1 (2026-03-18)
1.2.0 (2026-03-18)
- integrate Sparkle for in-app auto-updates (#152) (8f2f477)
- polish project window chrome (#181) (fd3a51a)
1.1.0 (2026-03-17)
- add C and C++ syntax highlighting grammars (#156) (03743e8), closes #70
- add Cmd+T shortcut for new terminal tab (#175) (3582aa7)
- add minimap to code editor (#171) (4a43512)
- add SQL syntax highlighting grammar (#177) (9349efa)
- add toggle line comment with Cmd+/ (#178) (3c68f20)
- bracket matching and highlight (#176) (b726adf)
- editor font size zoom (Cmd+Plus/Minus) (#180) (22e41d6)
- large file warning before opening (#179) (9bcf5b7)
- persist terminal sessions across window close and app restart (#173) (e0e9374)
1.0.0 (2026-03-17)
- prepare for 1.0.0 release (#137)
0.12.8 (2026-03-17)
0.12.7 (2026-03-17)
- add missing localizations for menu.togglePreview (#148) (fadb9f0)
- implement Xcode-style branch switching (#145) (e25fc24)
- reset top content margins on Welcome recent projects list (#114) (#151) (959710f)
- show file save errors in UI instead of console (#150) (ebfbcf0)
0.12.6 (2026-03-16)
- show line number for trailing empty line (#142) (30120a2), closes #128
- show text content for files with unrecognized extensions (#144) (35f6eb7), closes #143
0.12.5 (2026-03-15)
- add native Markdown preview with source/preview/split modes (#56) (#136) (f0c008f)
- add Quick Look preview for non-text files (#135) (4823424)
- improve YAML syntax highlighting for nested keys, block scalars, and tags (#132) (455c7f3), closes #129
- sync sidebar selection after session restore (#127) (8192a14)
0.12.4 (2026-03-15)
0.12.3 (2026-03-15)
- close button closes window instead of tabs one by one (#111) (9ad8f4c)
- ensure Welcome window always reappears after closing project window (#121) (4a7f000)
- highlight active file in sidebar file tree (#118) (a1ba1ae), closes #115
0.12.2 (2026-03-14)
- add Release Please for automated versioning and changelog (79fa83f)
- address review remarks in manager tests (bbf0acb)
- use PAT token in release-please and handle existing releases (ad2abae)
- fix review remarks for release-please setup (45fc987)
- main: release 0.12.1 (5a49267)
- main: release 0.12.1 (aca8151)
0.12.1 (2026-03-14)
- add Release Please for automated versioning and changelog (79fa83f)
- fix review remarks for release-please setup (45fc987)