Skip to content

Latest commit

Β 

History

History
668 lines (517 loc) Β· 40.4 KB

File metadata and controls

668 lines (517 loc) Β· 40.4 KB

Changelog

[0.25.0] β€” 2026-04-29

Features

  • Tracker on a dedicated branch β€” .pair/ migrated from per-branch versioning to a worktree of an orphan pair-tracker branch. Tickets persist across git checkout and no longer appear in code-branch git status. One-click in-app migration with backup tag for rollback. Cross-branch divergence detection merges tickets scattered across legacy branches into the orphan during migration. Auto-trigger dialog at project switch when legacy state is detected
  • Branch filter & column β€” New branch column in IssueTable (visible by default, after favorite). New BranchFilterDropdown with 3-tier layout: "Current branch [HEAD]" pseudo-entry mapping to @head sentinel that follows git checkout automatically, alphabetic by-name pins. Backend .git/HEAD watcher emits git-head-changed for live UI sync
  • "Track issues in git" toggle at init β€” Opt-out of git versioning for tickets; the toggle conditions whether pair-tracker is created at all
  • Workflow rule update β€” On migrated projects, the legacy "two separate commits" rule (code + .pair/) becomes "two separate pushes": git push then git -C .pair push. Auto-deployed to every PaiR-managed project via .pair/AGENTS.md

Fixes

  • Dashboard Last Edit β€” Consistent cross-project ordering
  • Orchestration β€” Internal session flash propagates correctly to SessionNode
  • Update Download & Quit β€” Uses destroy() to bypass the quit-confirmation dialog
  • Tracker migration β€” Multiple hardenings: SQLite cache rebuilt from JSONL post-migration, tombstones excluded from issue count, untracked files no longer block working-tree-clean check, Engine cache invalidated after migration/rollback, porcelain leading byte preserved, .pair/.gitignore self-healed at every Engine open
  • Migration on fresh repo β€” git symbolic-ref --short HEAD resolves the branch even on a 0-commit repo; backup tag silently skipped when there's nothing to roll back to
  • Filters legacy schema β€” useFilters now re-normalizes FilterState on every project switch, fixing a silent throw when projects had a stored filters predating later fields (e.g. branch === undefined)

[0.24.0] β€” 2026-04-21

Features

  • Paused status β€” New paused status in the issue workflow for work temporarily set aside
  • Search field highlight β€” Populated search inputs now stand out with a neon yellow style
  • Table scrollToIssue β€” Programmatic navigation to any issue, with automatic section expand, page pagination, and parent epic unfold
  • Workspace orchestration coverage β€” Workspace mode graph now includes projects associated with workspace-pinned projects, even when those associates have no pinned session (bidirectional)
  • Release scripts β€” Auto-detect CLAUDECODE to trim verbose output during release workflows

Fixes

  • Search reliability β€” external_ref is now indexed in FTS5; silent search errors are surfaced
  • Preview sidebar β€” Sidebar stays open when navigating to a closed child issue
  • Terminal detach β€” Cross-window sync for active tab, workspace mode, and current project between main app and detached terminal panels. Single-location invariant: the internal section hides whenever any terminal is detached, and clicking the internal header re-attaches unconditionally. AI notifications and focus actions target the detached window when present. Detached header now surfaces tmux/Claude status badges

[0.23.0] β€” 2026-04-12

Features

  • Orchestration view β€” New graphical canvas (VueFlow) showing projects and their terminal sessions as interactive nodes with puzzle-piece connectors for cross-session communication
  • Bidirectional session sync β€” Clicking a session in the graph focuses the terminal tab (and switches project); clicking a terminal tab highlights the session in the graph. Powered by a new useActiveSession global store
  • Workspace mode in graph β€” When workspace is active, the graph shows all projects with workspace-pinned sessions alongside the current project and associations
  • Cross-session journal push β€” Linked tmux sessions can broadcast journal entries to each other, including PTY sessions. Link/unlink events are notified
  • Cross-project favorites β€” Star issues from any project; favorites are stored globally in the catalog and displayed in the dashboard
  • Auto-fit graph β€” ResizeObserver detects container changes (terminal open/close, sidebar resize) and auto-fits the viewport. Toggle button in bottom-right corner
  • Issue title in graph β€” Sessions launched via Play show the issue title below the session name
  • In-app documentation β€” New "Orchestration View" section in terminal docs (EN + FR)

Fixes

  • tmux issue ID persistence β€” PAIR_ISSUE_ID was never written to tmux env for root issue IDs. Sessions now survive app restarts with their issue association intact
  • Session click cross-project β€” Clicking a session in a non-active project now correctly switches both the project and the terminal tab
  • VueFlow fitView timing β€” Replaced nextTick with setTimeout(150ms) for fitView after node changes
  • Handle border masking β€” Added missing masking rects on source handles that caused border bleed
  • Edge z-index β€” Edges now render above project nodes instead of being hidden behind backgrounds
  • Session badge count β€” Corrected session badge count and cleanup logic

[0.22.1] β€” 2026-04-10

Fixes

  • Read-only directory handling β€” FolderPicker now detects write permissions and adapts the UI: on read-only directories, clicking "Init as PaiR" opens a terminal with pair init pre-filled instead of failing silently
  • Real error messages β€” Tauri invoke errors now display the actual error message instead of a generic "Failed to initialize tracker"
  • Catalog registration on init β€” tracker_init (app) now calls catalog::auto_register like the CLI does, ensuring the project appears in the global catalog
  • CLI path resolution β€” Fixed CLI subprocess path resolution in production app (sidecar + extended PATH)

[0.22.0] β€” 2026-04-07

Features

  • Video demo on website β€” Interactive demo player on the landing page: play/pause/stop overlay on the screenshot, theme-aware (dark/light), auto-returns to image on end or theme/locale change
  • CLI as single source of truth β€” All mutations (status changes, attachments, issue creation) now route through the CLI, ensuring consistent journal tracking and push notifications
  • Enriched journal β€” Journal now tracks status_changed, attachment_added, and attachment_removed events in addition to issue creation/closing
  • Pagination indicator β€” Dashboard shows a visible count of displayed vs total issues above the table, with critical issues always visible regardless of pagination

Fixes

  • Dashboard refresh on CLI mutations β€” Status changes and attachments from CLI/agents now trigger immediate dashboard refresh
  • Screenshot automation β€” Tmux sessions are cleaned before capture to prevent stale session badges

Automation

  • Video capture system β€” New capture-video.py script with scenario-based recording, journal polling for timing, variable interpolation (--var theme=light), pre-layout setup, and automatic speed-up (--speed 2)
  • Remote control commands β€” Added terminal-type, terminal-close, terminal-switch, journal-open/close, pomodoro-open/start/reset, toast-dismiss-all for screenshot and video automation

[0.21.5] β€” 2026-04-06

Features

  • Last Edit section β€” New collapsible section showing the 10 most recently modified issues. Populated automatically from journal entries and live push events (create, close, update, comment)

Fixes

  • Dashboard push event tracking β€” Issue create/update events from CLI and agents now correctly trigger a poll refresh and appear in Last Edit
  • Cross-platform paths β€” Replaced hardcoded $HOME paths with dirs:: crate for proper cross-platform support (Windows, Linux, macOS)
  • Terminal auto-start default β€” Auto-start is now disabled by default for new users, preventing unexpected Claude launches
  • Terminal multi-tab race condition β€” Replaced singleton callbacks (shellReadyResolve, claudeReadyResolve, pendingCommand) with per-session Maps, fixing race conditions when launching multiple terminal tabs rapidly

[0.21.3] β€” 2026-04-02

Features

  • Terminal session naming β€” Sessions now use the project folder name as prefix (e.g., MyProject 1, MyProject zsju.2). Visible in both PaiR tabs and tmux ls, making it easy to identify which project a session belongs to β€” especially useful in workspace mode
  • Hooks auto-journal β€” Git commits and session stops are automatically logged to the project journal via Claude Code hooks
  • Journal context injection β€” Journal entries are auto-injected as context on Edit/Write tool calls via PreToolUse hooks
  • Journal auto-refresh β€” Journal panel refreshes automatically on push events from external agents

Fixes

  • First keypress lost in tmux β€” Removed a stray Escape character sent during tmux initialization that was consumed by the shell, causing the first keystroke to be silently dropped
  • Isolated tmux socket β€” PaiR sessions now run on a dedicated tmux socket (pair), preventing interference with user's personal tmux sessions
  • Terminal section auto-open β€” Terminal panel no longer opens unexpectedly on hot-reload
  • Comments panel visibility β€” Comments panel stays visible and resizes correctly in split screen
  • Hook deduplication β€” Removed session_stop noise and deduplicated auto_commit journal entries

Performance

  • Debounced resize β€” Terminal resize events are debounced, keydown handlers consolidated, and deep watchers replaced with targeted ones

[0.20.0] β€” 2026-03-29

Features

  • Activity journal β€” Every project gets a live activity feed. Issues created, changes made, decisions taken β€” logged automatically and manually via pair journal. Collapsible panel in the footer with scroll-to-bottom, project name header, and auto-export to JSONL
  • Project catalog & associations β€” Global project catalog stored in Application Support. Link related projects together via pair associate or the app settings. Bidirectional associations with UUID-based catalog
  • Cross-project orchestration β€” AI agents automatically read associated projects' journals at session start. Reply-to protocol enables asynchronous agent-to-agent communication across codebases
  • Workspace mode β€” Pin terminal sessions from multiple projects side by side. Workspace toggle in terminal header, smart "+" button to attach existing sessions, chain link indicator between associated project tabs
  • Workspace journal view β€” Merged chronological view of journal entries from all associated projects in the journal panel
  • Detachable terminal window β€” Pop out terminal sessions into independent windows (PTY mode). Per-project geometry persistence, dynamic window title, and proper session sync
  • Epics section β€” Dedicated Epics section in the issue table with automatic in-progress status when children are active
  • Full-text search on comments & labels β€” FTS5 index now covers comments and labels, not just titles and descriptions
  • Terminal session count badge β€” Sidebar shows the number of active terminal sessions per project
  • Storage adapter abstraction β€” New storage layer for future migration to centralized catalog-based settings

Fixes

  • Journal panel β€” Entries now display in chronological order (oldest first) with UTC-to-local time conversion
  • Terminal tmux rendering β€” Resize-bounce workaround for reliable rendering on project switch
  • Log timestamps β€” Application logs now use local timezone instead of UTC
  • Search on poll β€” FTS search re-runs on poll instead of silently overwriting results
  • Detached window focus β€” AI notifications focus the detached window instead of reopening internally
  • Catalog self-association β€” Prevented linking a project to itself

[0.12.2] β€” 2026-03-23

Fixes

  • App freeze on project switch β€” Column config watcher (deep: true) triggered an infinite reactive loop when switching projects, causing Maximum recursive updates exceeded. Replaced with a stable ID-based watcher
  • Thread starvation on startup β€” TRACKER_ENGINES global mutex blocked all concurrent project access. Replaced with per-project Arc<Mutex<Engine>> locking so different projects don't block each other
  • Startup overload β€” initialScan fired cliList for all projects in parallel via Promise.allSettled, saturating the Tauri thread pool. Serialized to sequential calls
  • Migration dialog crash β€” useIssues() was called inside event handlers (switchWithoutMigration, migrate) instead of at setup level, causing useI18n to throw
  • Filter watcher race β€” reloadProjectStorage updated filters during project switch, triggering a redundant fetchIssues call that raced with doPathChange. Added isSwitchingProject guard

[0.12.1] β€” 2026-03-23

Fixes

  • Play button missing β€” Run column now re-syncs when switching projects (no more Cmd+R needed)
  • Shift+Enter in terminal β€” Works in both PTY and tmux modes (kitty keyboard protocol + tmux send-keys bypass)
  • Claude Code icons β€” MesloLGS NF font loaded for Nerd Font glyphs (no more red rectangles)
  • Accents in tmux β€” UTF-8 locale forced on all terminal sessions (LANG/LC_ALL + tmux -u flag)

[0.12.0] β€” 2026-03-23

Features

  • Pomodoro timer β€” Built-in timer in the footer bar (heart icon) with work/break cycles, persistent notifications with contextual actions, and a popover with play/pause/stop/skip controls
  • "Start with app" setting β€” Optionally auto-launch a Pomodoro cycle when the app starts
  • State persistence β€” Timer state survives app refreshes and restarts, resuming where it left off
  • Healthy settings β€” New collapsible "Healthy" section in Settings with configurable work/break durations, cycle count, auto-start, and notification sound
  • Website "Takes care of you" β€” New feature card combining sound alerts and Pomodoro, hero section mentions developer well-being

Fixes

  • Vue warnings β€” Fixed missing isDev in SettingsDialog and missing rendered emit in IssueTable
  • Silent notifications β€” Added silent option to useNotification to prevent double sounds when the caller plays its own

UI

  • Settings uniformization β€” All settings sections (Language, Theme, Sound, AI Agent, Terminal, Healthy, Onboarding) now have consistent bordered containers

[0.11.2] β€” 2026-03-23

Fixes

  • "Visit Website" button β€” Clicking the button in the Check for Updates dialog caused an unhandled error on all platforms. The shell plugin was missing the open scope configuration in tauri.conf.json.
  • tmux terminal display β€” CLI tools (e.g. Claude Code) rendered degraded ASCII logos inside tmux sessions. Now forces TERM=xterm-256color inside tmux for consistent Unicode rendering.

[0.11.1] β€” 2026-03-23

Fixes

  • tmux 3.6+ compatibility β€” Terminal tmux mode failed with immediate EOF on systems with tmux 3.6+. The PTY attach command was missing the TERM environment variable, causing tmux to refuse the connection.

[0.11.0] β€” 2026-03-22

Features

  • tmux mode β€” Persistent terminal sessions that survive app restarts and can be accessed from external terminals (Zed, iTerm, VS Code) via tmux attach
  • Issue-named sessions β€” tmux sessions are automatically named after the issue ID (e.g., pair-xein-16 in tmux ls)
  • Smart session close β€” Detects when a tmux session is attached in another terminal and warns before killing. Switch defaults to "detach only" when session is used elsewhere
  • Auto-close on issue close β€” Closing an issue automatically closes its associated terminal session, with persistent toast notification for poll-detected closes
  • Natural language Run prompt β€” "Work on bug pair-xein.23: Fix login" instead of generic commands
  • Mode switch confirmation β€” Changing terminal mode (PTY ↔ tmux) shows a confirmation when sessions are open
  • Kill switch on tab close β€” Toggle to also terminate the tmux session when closing a tab (enabled by default)

Fixes

  • tmux path resolution β€” Apps launched from Finder (not terminal) now correctly find the tmux binary
  • tmux session restore β€” Fixed input routing, resize, and status bar on restored sessions
  • tmux prompt detection β€” Fixed latency in Claude prompt detection and stale state
  • Split border β€” Hidden border in single-tab mode
  • tmux prefix key β€” Disabled tmux prefix to avoid conflicts with PaiR shortcuts
  • Active tab persistence β€” Active tab is correctly persisted when closing an issue session
  • Windows PTY PATH β€” CLI pair is now in the PTY shell PATH on Windows
  • Parent validation β€” Creating a child issue on a non-existent parent is now rejected

Docs

  • tmux mode documented in in-app help (EN/FR)
  • tmux mode mentioned in website features and FAQ
  • Issue comments traΓ§ability guidelines added to CLAUDE.md

[0.10.2] β€” 2026-03-21

Fixes

  • Windows CLI PATH β€” CLI install directory is now automatically added to user PATH on Windows
  • Windows/Linux update dialog β€” "Download & Quit" button only shown on macOS; Windows/Linux show "Visit website" instead
  • Linux PATH fix message β€” Onboarding PATH instructions now shown on Linux too (was macOS-only)
  • Cross-platform PATH resolution β€” get_extended_path() now uses correct separator and paths on Windows

[0.10.1] β€” 2026-03-21

Features

  • Windows terminal support β€” Terminal now detects and uses PowerShell Core, Windows PowerShell, or cmd.exe automatically
  • Review onboarding β€” New button in Settings to review the getting started steps at any time

Fixes

  • Onboarding scroll on small screens β€” Onboarding panel now scrolls properly on low-resolution displays (Windows/small screens)
  • CLI symlink auto-repair β€” App automatically repairs broken CLI symlink at startup
  • French locale β€” Replaced "issues" with "tickets" throughout French locale for consistency

Docs

  • Windows unsigned app notice on website download page (SmartScreen instructions)
  • Updated in-app docs: hooks-setup, sync-conflicts, terminal β€” clarify Unix socket vs Windows polling
  • Updated terminal shortcut to mention Linux/Windows

[0.10.0] β€” 2026-03-20

Features

  • Integrated multi-session terminals β€” Run multiple terminal sessions per project with tabbed interface. Launch Claude Code directly from issues, monitor AI agents in real time with visual and sound notifications when they need attention
  • Terminal split view β€” Pin tabs to display terminals side by side. Built-in multiplexer experience with per-project persistence
  • AI notification routing β€” Internal sessions flash and turn red, external sessions (Zed, Cursor, VS Code) show toast + sound only
  • AI Text Transform β€” Transform text in any input field using AI. Smart interpretation: reformulate, translate, summarize. Works with any Claude subscription

Fixes

  • Markdown zoom β€” Zoom now scales all elements (headings, code, tables), not just normal text
  • Dashboard charts β€” Charts expanded by default on first launch

Docs

  • New "AI Text Transform" dedicated help page (EN/FR)
  • Updated terminal docs (split view, pins, notifications, shortcuts) β€” EN/FR
  • Added terminal section to keyboard shortcuts doc

[0.9.3] β€” 2026-03-17

Features

  • Issue focus borders β€” Active issue row highlighted with a visible focus border for better accessibility
  • Project path navigation β€” PathSelector now supports keyboard navigation and direct project switching
  • Keyboard shortcuts docs β€” Added keyboard shortcuts documentation page (EN/FR)

Fixes

  • Attachment list refresh β€” Attachment list in preview now refreshes correctly on add/delete

Dependencies

  • Updated 15 dependencies (Nuxt, Vue, Tailwind, Vitest, Reka UI, etc.)

[0.9.2] β€” 2026-03-16

Features

  • Panel keyboard shortcuts β€” Navigate between panels with 1/2/3 (+ Numpad, F13/F14/F15), Escape closes details preview, Cmd/Ctrl+R refreshes issues
  • Mobile auto-focus β€” Switching tabs in mobile mode auto-focuses the container for immediate arrow key navigation
  • Focused panel indicator β€” Subtle border-top highlight shows which panel is active on desktop
  • Markdown preview refresh β€” Refresh button and external change detection for attached markdown files
  • Blocked icon β€” Replaced blocked status icon with LockKeyhole padlock for better clarity

Cleanup

  • Internal code cleanup and legacy naming removal

[0.9.1] β€” 2026-03-14

Features

  • Pinned issues in DB β€” Pin state moved from localStorage to SQLite, synced via git, visible from CLI and AI agents
  • CLI pin/unpin β€” pair pin <id>, pair unpin <id>, pair list --pinned
  • Undo on unpin β€” Toast with undo button + Cmd/Ctrl+Z keyboard shortcut (8s window)
  • Notification action buttons β€” Toast notifications now support visible action buttons

Improvements

  • Campaign badge color β€” Changed from amber to pink to avoid confusion with P2 priority
  • README rewrite β€” Features section restructured into themed subsections

Cleanup

  • Removed hooked status β€” Dead status type never used in production, fully removed from types, CSS, i18n, and tests
  • Removed pinned status β€” Pin is now a boolean flag, not a status value
  • Removed pinned sort modes β€” Simplified to updatedAt sort, removed drag-and-drop reorder
  • Updated in-app docs β€” Dashboard, CLI reference, and AGENTS.md updated for pin/unpin

[0.9.0] β€” 2026-03-13

Features

  • Resizable comments panel β€” Comments split into dedicated resizable panel with source badges
  • Unified zoom controls β€” New ZoomControl component, compact header/footer, sound toggle moved to footer
  • Uniformized section buttons β€” Consistent collapsible section UI across all table sections
  • Sync integration tests β€” Full roundtrip sync test coverage

Fixes

  • CLI sidecar lookup β€” Look for sidecar in exe dir instead of resource dir (GitHub #1)
  • Linux Wayland β€” Auto-disable WebKitGTK compositing on Wayland
  • Resync updates in-place β€” No longer deletes and recreates issues on resync
  • Sync-repo config β€” Fix sync-repo detection without explicit sync-provider
  • Reopen clears closed_at β€” Reopening an issue properly clears the closed date

[0.8.0] β€” 2026-03-12

Features

  • GitHub issue sync β€” One-way GitHub β†’ PaiR issue synchronization with single-issue resync
  • GitLab provider β€” GitLab issue sync support via API, auto-detected from git remote
  • Spec issue type β€” Dedicated spec type with its own table section and pair children command
  • Comments fullscreen dialog β€” Expand comments in a full dialog with search (Cmd+F) and print (Cmd+P)
  • AI session count β€” Dashboard shows active AI session count per project
  • Specs dashboard section β€” New Specs panel in the project dashboard

Improvements

  • Issue title in all preview dialogs β€” Image, Markdown, PDF, and Comments dialogs now show the issue title in the header
  • Shared search/print utilities β€” Extracted duplicated DOM search and print code into reusable modules
  • Search highlight colors β€” Blue-themed highlights with proper dark/light mode contrast
  • In-app help β€” Documented single-issue resync and spec type

Fixes

  • Sound alerts persistence β€” Fixed sound alerts saving to the wrong project path
  • Dashboard AI column β€” Hidden when no AI sessions detected

[0.7.6] β€” 2026-03-11

Fixes

  • App freeze on rapid project switching β€” Prevent the app from freezing when switching between projects quickly

[0.7.5] β€” 2026-03-11

Features

  • Attachment downloads β€” Download button added to image and PDF preview modals
  • PDF attachments β€” Full PDF support with preview, migrated to Tauri asset protocol
  • In-progress badge β€” Sidebar project list shows count of in-progress issues

Fixes

  • Search regression β€” Fixed crash when searching (useI18n called outside setup), also resets pagination on search

[0.7.4] β€” 2026-03-11

Features

  • Deferred section β€” Issues with "deferred" status now appear in their own collapsible table section, placed after "Ready to Work"

[0.7.3] β€” 2026-03-10

Features

  • Bilingual interface (EN/FR) β€” Full i18n support with language switcher, all UI labels and table section headers translated
  • Automated screenshot capture β€” Screenshots generated for the website with theme and locale variants (dark/light x en/fr)
  • ConflictDialog visual testing β€” Mock conflict dialog for design iteration

Improvements

  • Website screenshots by locale β€” Website now serves screenshots matching the visitor's language and theme
  • Screenshot deployment checks β€” Deploy and verify scripts validate all 4 theme/locale combinations

Fixes

  • Duplicate log entries β€” Eliminated redundant log lines in the native logger
  • Table section headers β€” Section headers now properly translated in all locales
  • Linux platform info β€” Corrected Linux installation instructions in FAQ
  • Git sync safety β€” Skip git operations when .pair is gitignored

[0.7.2] β€” 2026-03-10

Features

  • User-facing changelog page β€” Bilingual (EN/FR) changelog page on the website at /changelog, with version badges and grouped features/fixes
  • Scroll spy navigation β€” Header nav links highlight based on visible section when scrolling the homepage
  • Website-first approach β€” Release notes and changelog now live on the website, no longer synced to GitHub pair-dist

Improvements

  • Check for updates β€” Now uses release body directly instead of fetching CHANGELOG.md from GitHub. "View on GitHub" replaced by "Visit website"
  • Centralized website URL β€” WWW_BASE_URL from .env used as single source of truth across frontend (runtimeConfig) and scripts (changelog_utils.py)
  • Frontend constants β€” Added app/utils/constants.ts for shared GitHub distribution repo references
  • Release notes generation β€” New scripts/changelog_utils.py generates user-facing release bodies from www/app/data/changelog.ts
  • FAQ updated β€” Added "Is PaiR open source?" and "Does PaiR work offline?" questions, reordered logically, clarified AI hooks support and Beads migration

Cleanup

  • Removed CHANGELOG.md from pair-dist sync (SYNC_FILES in sync-releases.py and publish-local.py)
  • Removed "All releases available on GitHub" mention from download section
  • Removed GitHub link from header navigation (kept in footer)

[0.7.1] β€” 2026-03-10

Features

  • Soft delete by default β€” Deleting an issue now archives it (tombstone) instead of permanently removing it. Check "Delete permanently" in the confirmation dialog for hard delete. Dialog wording adapts contextually ("Archive" vs "Delete permanently").

Documentation

  • Updated in-app help docs (issue workflow, issue details) to reflect soft delete as default behavior

[0.7.0] β€” 2026-03-09

Features

  • Embedded help documentation β€” 10-page help system accessible via ? shortcut or Help menu, with table of contents navigation, cross-page search, and print support
  • Clickable AI toast notifications β€” Click on an AI notification toast to focus the agent's session window (macOS only)

Improvements

  • Help viewer UX β€” Wider dialog, resizable TOC sidebar, scroll spy, arrow key navigation between pages and sections
  • Hidden internal statuses β€” Internal statuses (pinned, hooked) no longer appear in filters and edit form

Fixes

  • Mute icon zoom β€” Mute icon no longer scales disproportionately when zooming the interface
  • Help viewer overflow β€” Content no longer overflows on narrow windows
  • Website screenshot β€” Website now uses the most recent screenshot by date instead of a version-based path that could break on patch releases

Documentation

  • Why PaiR? β€” Project philosophy and manifesto
  • Getting Started, Dashboard, Issue Details, Issue Workflow
  • AI Agent Hooks, Sync & Conflicts, CLI Reference
  • Settings (global + per-project), Keyboard Shortcuts

[0.6.1] β€” 2026-03-09

Features

  • AI agent hooks settings β€” Configure AI agent hooks (Claude Code, Cursor, Codex) directly from the global settings page

Fixes

  • Notification sound fallback β€” Fall back to global sound preset when a project has no notification config
  • Linux audio crash β€” Prevent audio playback error from blocking toast notifications on Linux

[0.6.0] β€” 2026-03-09

Features

  • AI sound notifications β€” Per-project sound alerts when AI agents need attention, with 5 sound presets (Bell, Double beep, Rising, Soft chime, Alert), per-project volume override, and global mute toggle in header

Improvements

  • Centralized localStorage β€” All keys managed through storage-keys.ts with active registries and automatic cleanup of stale keys
  • Non-destructive storage migration β€” beads: β†’ pair: key migration at boot, old keys preserved for backward compatibility
  • Path normalization β€” hashPath() now strips trailing slashes, fixing per-project settings mismatches
  • Legacy rename β€” useBeadsPath β†’ useCliPath across the entire codebase
  • Cargo cache added to all CI builds (Windows, macOS, Linux)

Tests

  • Added 21 tests for hash normalization, storage key registry, and migration logic

[0.5.0] β€” 2026-03-07

Features

  • Collapsible sections β€” Issue list organized into In Progress, Pinned, and Current sections with collapsible headers
  • AI panel: unknown project/agent detection β€” Flag events from unrecognized projects or AI agents

Improvements

  • Compact header layout and refined table typography
  • Harmonized primary color and simplified neon default theme
  • Epic borders restored with child in_progress group promotion
  • Centered KPI card content, neutral label badges
  • Backend split into command modules for maintainability
  • Frontend refactoring: extracted reusable utils, composables, and badge configs
  • Linux build script now produces both amd64 and arm64

Tests

  • Added tests for partition helpers, toggle/enrich utilities, and short ID generation

[0.4.4] β€” 2026-03-07

Features

  • Project pinning β€” Pin/unpin projects in sidebar, toggle "pinned only" filter to focus on starred projects. Drag-and-drop and sort hidden when filtered
  • AI panel: brand icons β€” Per-event SVG icons for Claude, Cursor, Codex, Gemini, Vibe (+ generic fallback)
  • AI panel: project name β€” Display project name (last path segment) after AI icon
  • AI panel: Copy button β€” Copy filtered events to clipboard as text
  • AI panel: cost & tokens on Stop β€” Show total cost and token counts when AI session ends
  • AI panel: tool error detection β€” Highlight failed tool calls in red via tool_error event type
  • AI panel: tool_use_id via meta β€” Pass tool_use_id on all tool events for future duration tracking
  • SubagentStop hook β€” Capture agent completion events (agent_stop in AI panel)
  • PreCompact hook β€” Capture context compaction events (compact in AI panel)
  • --ai-name flag β€” pair notify --ai-name claude for testing AI icons without actual AI process

Improvements

  • Throttle activity LED re-renders (200ms) to reduce DOM updates
  • Increase AI panel MAX_EVENTS from 200 to 500
  • Dual-theme colors for all event types (light + dark mode)
  • Zoom support for AI and Debug panels (.zoomable-panel)
  • Soften verbose event opacity (60% β†’ 80%)
  • Expand AI detection: add Gemini and Vibe to PPID chain walker

Docs

  • Add disclaimer section to README
  • Clarify non-destructive migration in README
  • Add Features section and improve hero layout on website

[0.4.3] β€” 2026-03-06

Features

  • Add pair --version / -V to CLI (clap version flag)

Fixes

  • Fix CLI binary missing execute permission in Linux .deb package
  • Fix log file path for Linux (~/.local/share/com.pair.app/logs/pair.log)
  • Rename log file from beads.log to pair.log
  • Fix push socket stale detection (non-blocking connect check)
  • Set socket permissions to world-writable so CLI can always connect
  • Auto-fix CLI permissions on app startup (Linux .deb workaround)

Docs

  • README: add "Why PaiR?" section, mark AI features as experimental (macOS only), update platform availability (Windows coming soon)
  • Claude Code hooks: recommend absolute path to pair binary on all platforms
  • Add Linux-specific note to AGENTS.md template

[0.4.2] β€” 2026-03-06

Docs

  • Add notify command and Claude Code hooks configuration to AGENTS.md template

[0.4.1] β€” 2026-03-06

Fixes

  • Fix stale data when external process (CLI script) modifies the database β€” invalidate cached SQLite connection on mtime change
  • Add relate/unrelate commands to AGENTS.md template

[0.4.0] β€” 2026-03-06

Features

  • AI session tracking β€” Associate AI session PID with projects via push notifications. Walk PPID chain to detect AI CLI (Claude, Cursor, Codex) and editor (Zed, VS Code)
  • Per-project activity LED β€” Each project line shows a LED that blinks green on AI notifications (replaces folder icon)
  • Focus AI session window β€” Click the focus button or press βŒ˜β‡§F to switch to the editor window where AI is working (uses editor CLI for precise window targeting)
  • AI Events panel β€” Renamed from "Claude Events" to "AI Events". Shows AI name badge (claude/cursor/codex) per event. Toggle with βŒ˜β‡§A
  • Keyboard shortcuts β€” βŒ˜β‡§A (AI panel), βŒ˜β‡§F (focus AI session) added to app menu
  • Blocked badge β€” Visual badge for blocked issues in the issue list
  • README β€” Added Features section, merged Background & Compatibility

Improvements

  • AI name (ai_name) and editor name (editor) fields added to PushEvent for richer notifications
  • Focus window uses 3 strategies: editor CLI from notification β†’ detect editor from PID tree β†’ AppleScript fallback
  • Session focus button uses neutral gray style (white when project selected)

[0.3.4] β€” 2026-03-04

Features

  • pair attach CLI command β€” attach files to issues from the command line, with real-time attachment refresh in the app

Fixes

  • Fix toast notification contrast in light theme
  • Rename release artifacts + disable unavailable downloads on website

[0.3.3] β€” 2026-03-04

Features

  • Claude Events: native hook integration β€” pair notify --hook <hook_type> reads JSON from stdin, classifies events (significant vs verbose), and forwards to the app. Replaces the bash/jq bridge script.
  • pair notify CLI β€” new --hook flag for Claude Code hooks, plus existing manual mode (-t/-m) preserved for backward compatibility
  • Self-call detection: Bash commands starting with pair notify are automatically skipped to prevent echo loops

Docs

  • Mark scripts/claude-hook.sh as legacy (kept as reference)
  • Update AGENTS.md with --hook mode documentation and simplified Claude Code config

[0.3.2] β€” 2026-03-03

Features

  • Print Markdown β€” print button + Cmd+P in Markdown preview modal (uses native print dialog via Tauri WebView)
  • Custom relations CLI β€” pair relate <id1> <id2> --type <type> and pair unrelate for non-blocking relations (relates-to, duplicates, supersedes, etc.)
  • Custom relations exported/imported in JSONL (relations field) β€” survives sync round-trips

Fixes

  • Fix dynamic window title β€” add missing core:window:allow-set-title permission
  • Fix print in Tauri WebView β€” rewrite from iframe (blocked) to permanent @media print styles
  • Print page breaks: break-inside: avoid on code blocks, tables, headings

Docs

  • Rebrand all docs from Beads to PaiR
  • Rewrite README for public distribution + sync automation
  • Document pair relate / pair unrelate in AGENTS.md

[0.3.1] β€” 2026-03-03

Features

  • New Maintenance section in project settings dialog (separate from Actions)
    • Repair database β€” re-sync SQLite with JSONL (auto-backup before repair)
    • Fix CLI permissions β€” restore +x on the pair binary (resolves symlink)
    • Re-initialize moved to Maintenance section (most destructive = last)
  • Dynamic window title β€” shows "PaiR β€” ProjectName" when a project is selected
  • Parse .pair/config.yaml for issue-prefix (was hardcoded to defaults)
  • Toast notifications on all maintenance actions (success/error)

[0.3.0] β€” 2026-03-02

Features

  • Per-project settings dialog β€” click the cog icon on any project in the sidebar
    • Project info: path, database status, issue count, legacy .beads/ detection
    • Actions: remove from list, re-initialize database, migrate from .beads/
    • All actions require confirmation before executing
    • Read-only settings display (prefix, git tracking) β€” editing in a future version

Fixes

  • Migration dialog: add "Start fresh" option + skip if .pair/ already exists
  • Onboarding: folder select triggers migration + remove "switch without migrating"
  • Onboarding: cancel migration no longer creates .pair/ + git tracking choice preserved
  • Check-for-updates broken on all platforms

[0.2.2] β€” 2026-03-02

Fixes

  • Fix sidecar binary not found on Linux β€” Tauri uses full target triple (pair-x86_64-unknown-linux-gnu) but lookup only checked pair and pair-x86_64

[0.2.1] β€” 2026-03-02

CLI

  • New pair dep tree <id> β€” recursive dependency tree with cycle detection
  • New pair dep list <id> β€” direct blocks/blocked_by with issue details
  • Both commands support --json for structured output

UI

  • App icon now uses dark background (#1E1E2E) for better dock visibility
  • Header logo aligned with left sidebar
  • Search field now overrides status filters to show matching results

[0.2.0] β€” 2026-03-01

Branding

  • New PaiR app icon (blue silhouette) for macOS dock, Windows taskbar, and all platforms
  • New PaiR logo with name in app header (theme-aware: light/dark variants)
  • New PaiR logo in About dialog (replaces plain icon)
  • Chevron separator between logo and project name in header
  • Added logo assets: light, dark, mono, and PSD sources

Cleanup

  • Removed legacy bd/br backend code
  • Removed unused Rust functions (4 compiler warnings fixed)
  • Removed legacy attachment refs migration code
  • Removed unused backendMode watcher in index.vue

[0.1.0] β€” 2026-02-28

First pre-release of PaiR β€” standalone issue tracker with built-in Rust engine.

Core Engine

  • SQLite-based issue tracker with full CRUD (create, update, close, delete)
  • Schema v1β†’v5 with automatic migrations
  • Full-text search (FTS5) across titles, bodies, and notes
  • JSONL export/import for portable data exchange
  • Git sync cycle: export β†’ commit β†’ pull β†’ import β†’ push
  • Merge conflict detection and resolution

Child Issues & Ordering

  • Sequential child IDs: parent.1, parent.2, parent.3
  • Auto-position on child creation
  • reorder_child() with sequential re-numbering
  • list_children() ordered by position (legacy fallback on created_at)

Dependencies

  • Block dependencies: blocked_by / blocks
  • list_ready_issues() β€” open issues not blocked by any open issue
  • is_blocked() β€” real-time blocking check
  • JSONL format: blocked_by (replaces legacy dependencies)

CLI (pair)

  • pair init/list/show/create/update/close/delete
  • pair search β€” full-text search
  • pair ready β€” unblocked open issues
  • pair export β€” force DBβ†’JSONL re-export
  • pair import β€” JSONL import with merge
  • pair reorder β€” reorder child position
  • pair migrate β€” unidirectional .beads β†’ .pair migration
  • pair comments add/delete, pair label add/remove, pair dep add/remove
  • JSON output mode (--json)

Push Notifications

  • Unix socket (/tmp/pair.sock) for CLIβ†’App instant notifications
  • Event batching with selective toasts
  • Auto-refresh on push events

App Features

  • Tauri 2 desktop app (macOS)
  • Vue 3 + Nuxt 4 frontend with shadcn UI
  • Dashboard with KPIs, priority/status charts
  • Issue table with filters (status, type, priority, assignee, labels)
  • Keyboard navigation, sidebar resize, dark/light theme
  • Attachment system (filesystem-based)
  • AGENTS.md auto-update on project open

Testing

  • 107 backend tests (Rust)
  • 215 frontend tests (Vitest)
  • Integration test suite (scripts/test-suite.py)

Project

  • Rebranded from Beads Task-Issue Tracker to PaiR
  • CLI binary: pair, data folder: .pair/, prefix: pair-xxxx
  • App identifier: com.pair.app