Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: shdennlin/issue-graph

v1.4.0 — Quick switcher, workspace notes, navigation history, i18n

14 May 04:35
@shdennlin shdennlin

Choose a tag to compare

[v1.4.0] - 2026年05月14日

What's New

Quick Switcher — jump to any issue instantly
Press Cmd+K (or click the new toolbar button) to open the quick switcher palette. Start typing and a fuzzy search surfaces matching issues across every open tab in real time. Each row shows the issue's title, ID, and current state chip so you can confirm the right item at a glance. Recent picks are remembered and float to the top the next time you open it. Selecting an item pans the canvas to that issue and keeps the detail panel open if it was already visible.

Workspace notes
A lightweight markdown notepad scoped to each workspace is now built in. Press n to open the notes modal, write in Markdown, and flip between Edit and Preview with Cmd+E (or Cmd+/). Notes are organised in a grid or list view, can be archived with a one-step undo, and persist alongside the rest of your workspace state. Anywhere you mention an issue ID inside a note, its current status renders inline next to the ID so you always know where things stand.

Navigation history — back and forward on the canvas
Cmd+[ and Cmd+] (or Ctrl+[ / Ctrl+] on Windows/Linux) step backward and forward through your view, filter, focus, and chain changes, viewport position included. It works exactly like browser history but scoped to your graph session.

Linear comments in the detail panel
The detail panel now surfaces the comment thread from Linear directly inside the app. You no longer need to switch context to Linear to read or reference discussion on an issue.

Internationalisation — English and Traditional Chinese
The full UI is now available in Traditional Chinese. Switch languages from Settings → Language; the preference is saved across sessions. English remains the default. The keyboard shortcut cheat sheet, filter panel, detail panel, notes modal, toolbar, onboarding flow, and sync banner are all translated. User-facing documentation (README, docs/, ROADMAP) also ships Traditional Chinese companions.

Improved

Detail panel is wider and more flexible
Wide mode can now stretch up to 75% of the window width (previously capped lower) with a maximum of 1200 px. Resize by dragging the left edge; the panel remembers your chosen width. The text size inside the panel cycles through four grades independently of the global font setting — press the text-size button in the panel header. While the wide panel is open, the canvas inline search automatically hides to avoid overlap. A shimmering skeleton placeholder replaces the plain "Loading..." text while issue data is fetching.

Click any metadata value in the detail panel to filter the canvas
Tapping a state, priority, assignee, project, or primary label chip in the detail panel immediately applies that value as a canvas filter. It is the fastest way to jump from a single issue to all related work.

Keyboard shortcut d toggles detail panel auto-open
Press d to flip the auto-open preference for the detail panel. When enabled, focusing an issue opens the panel automatically; when disabled, the panel only opens when you explicitly click through.

OS-aware keyboard labels
Shortcut labels now reflect the keyboard you are actually using. Cmd/⌘ shows as Ctrl on Windows and Linux; Delete shows as Backspace. The correct glyphs appear throughout the app — toolbar tooltips, the shortcuts cheat sheet, and inline hints — without any configuration needed.

Chain isolation works across all views
Entering and exiting chain isolation now works consistently in every view (dependency, mix, project), and the viewport position is preserved when you leave isolation mode.

Filter sidebar overhaul
Filter sections are now collapsible — click a section header to fold it away and keep the sidebar tidy. Active filter count badges on collapsed headers tell you at a glance what is filtering without expanding. Each section has its own clear button so you can reset one dimension without touching others. Sections are separated by dividers with semantic icons for faster scanning.

Markdown tables look like tables
Tables in design docs and notes now render with visible borders and alternating row shading, making structured data readable at a glance.

Settings label-group surface
The active bucket or type label group is now visible directly in Settings and in the Mix tooltip, so it is always clear which label schema is driving the current layout.

UI polish throughout
Icons across the toolbar, context menu, inline find, and issue node glyphs have been unified to the Lucide icon set. The toolbar collapses lower-frequency actions into an overflow menu to keep the primary bar uncluttered. Mix view containers are tinted with a per-bucket accent colour for quicker visual grouping. Modal headers follow a shared layout. The Settings panel has visually delimited sections and a sticky footer for action buttons. The keyboard shortcuts modal is wider and uses a responsive two-column layout.

Fixed

  • Switching workspaces now correctly clears the focused note, preventing a note from a previous workspace appearing briefly in the new one.
  • Opening the quick switcher and selecting an issue pans the canvas to that issue even when starting from a different position, and leaves the detail panel state intact.
  • The canvas inline search no longer overlaps the wide-mode detail panel when both would otherwise be visible simultaneously.
  • Camera centering (including F5 / focus-on-issue) now uses the final built node positions rather than pre-layout estimates, eliminating off-center jumps when switching views.
Assets 2
Loading

v1.3.0 — workspaces, Project view, PWA, and stability

09 May 09:29
@shdennlin shdennlin
19e1104
This commit was signed with the committer’s verified signature.
shdennlin Shawn Lin
GPG key ID: 36635EAC06AA630B
Verified
Learn about vigilant mode.

Choose a tag to compare

What's New

Tabs — open multiple workspaces side by side
The app now has a full tab bar at the top of the window. Each tab holds its own workspace, its own view, and its own graph position. You can open as many tabs as you need, drag them into any order, and switch between them with Cmd+1 through Cmd+9. Everything about the current session — which tabs are open, which workspace each one points to, the graph's zoom level and scroll position — is saved automatically and restored exactly as you left it when you reload or reopen the app.

Project view
A new "Project" grouping mode organises your issues by Linear project rather than by status or assignee. Switch to it from the view selector in the toolbar to get a clear per-project breakdown of what is blocked, blocking, or in flight.

Filter by project
The filter panel now includes a Project dimension alongside the existing Team, Assignee, and Label filters. You can combine it with any other filter to narrow the graph to just the issues that belong to a particular initiative.

Multi-column container layout
Wide buckets — such as "In Progress" columns with many issues — are now packed into two or three columns automatically. Tall single-column stacks are gone; the layout breathes horizontally and is much easier to scan.

Design doc support for git worktrees
If you work with git worktree to check out multiple branches simultaneously, the design doc panel now scans every worktree rooted at your repository and surfaces the right spec file for each issue, deduplicating entries so nothing appears twice.

OpenSpec and Spectra adapters separated
The two design-doc backends (OpenSpec and Spectra) are now fully independent modules. Spectra picks up the new default spec_dir introduced in Spectra v2.2.5+, and the spec_dir path is configurable for teams that keep specs in a non-standard location.

Install as a desktop app (PWA)
The app ships a web app manifest and service worker, so browsers that support Progressive Web Apps can install it to the dock or taskbar. Once installed it opens in its own window, without browser chrome, and works as a first-class desktop app.

Improved

Graph position survives tab switches
Switching tabs no longer resets your zoom level or scroll position. When you come back to a tab the graph is exactly where you left it. Viewport state is also saved to local storage, so a page reload or browser restart brings you back to the same position.

Viewport restore is reliable
A timing conflict between the app's saved viewport and ReactFlow's own startup animation has been resolved. The saved position now reliably wins, so the graph no longer snaps to a different location a fraction of a second after loading.

Hover highlighting works at full cursor speed
Rapidly moving the cursor across the graph no longer leaves nodes or edges stuck in a half-highlighted state. The highlight now self-heals instantly as the cursor moves, even on dense graphs with many overlapping edges.

Consistent arrowhead sizes
Dependency arrowheads are now the same size in every view mode. Previously, switching views could cause arrowheads to render at different scales.

Data isolation between development and production
When running locally, the app now keeps developer data in a separate data-dev/ directory that is never committed to the repository. The Docker container always writes to /app/data/graph.db, eliminating the risk of a host path leaking into the container or corrupting a production database.

Fixed

  • SQLite corruption that could occur when the container was started without an explicit SQLITE_PATH has been resolved. The path is now pinned inside the container so it is always consistent.
  • Switching tabs no longer briefly applies the outgoing tab's filters or view settings to the incoming tab before that tab's own state loads.
  • The graph no longer flickers or jumps when switching workspaces via the tab bar.

Loading

v1.2.0

04 May 10:26
@shdennlin shdennlin
3fca216
This commit was signed with the committer’s verified signature.
shdennlin Shawn Lin
GPG key ID: 36635EAC06AA630B
Verified
Learn about vigilant mode.

Choose a tag to compare

[v1.2.0] - 2026年05月04日

What's New

Chain isolation
Right-click any issue in the dependency view and choose "Isolate chain" to focus on just that issue and the sequence of work it belongs to. The root of the chain is visually accented, and a counter chip shows how many issues are in it. Press C to enter chain mode from the keyboard. If some chain members haven't been loaded yet, the graph will offer a "Load full history" prompt so nothing is silently missing. Clearing chain isolation smoothly re-fits the layout so you land back in context.

Related edges
A new toggle overlays "related" links as dashed lines alongside the normal blocking/blocked-by arrows. When the Related toggle is on, chain isolation automatically expands one hop to include related neighbors — so you see the full picture without leaving focus mode. The detail panel also now shows a dedicated "Related" section next to "Blocks", so related issues are visible even without the overlay.

Hover highlight and auto-dim
Hovering over any issue in the graph now highlights its direct connections and softly dims everything else. This makes it much easier to trace dependencies in a busy graph without having to click in.

Connectivity badges
Each node now displays a small badge showing how many connections it has, with glyphs and sizing that scale to the count. At a glance you can tell which issues are hubs versus leaves.

Keyboard shortcuts and cheat sheet
A full set of keyboard shortcuts is now available. Press ? or click the keyboard icon in the toolbar to open the cheat sheet. Key bindings include:

  • C — enter chain isolation mode
  • R — toggle the Related overlay
  • Shift+R — re-run the auto-layout
  • Cmd+Shift+F — jump directly to the toolbar filter search
  • Esc — step back one layer at a time (search → context menu → chain)

Re-layout keeps your place
Triggering an auto-layout (via the toolbar button or Shift+R) now re-centers the view on whichever issue you have focused, so you don't lose your spot in a large graph.

Design doc live updates
The design doc panel now watches the underlying spec file for changes and refreshes automatically via a server-sent event stream. No more manual reloads when you edit a spec outside the app. If an issue is linked to more than one spec, an amber warning is shown so the ambiguity is immediately visible.

Inline search flow improvements
Selecting an item from the inline search now smoothly transitions into the next action, reducing the number of clicks needed to find an issue and act on it.

Improved

Workspace identity in Settings
The Settings panel now shows the name of the connected Linear workspace prominently, above the API key field. This makes it much easier to confirm at a glance which account you are working against — especially useful when switching between workspaces.

Safer cache reset
The "Reset cache and re-sync" action in Settings now shows a blocking overlay while the sync runs and automatically reloads the app when it finishes, preventing any interaction with stale data mid-sync.

Honest loading states
The top banner now accurately distinguishes between the initial "Loading..." state (no data yet) and "Syncing..." (data is present but a background refresh is in progress).

Clearer dependency arrows
Arrowheads in the dependency view are larger and more readable, so the direction of a dependency is unambiguous even on dense graphs.

Fixed

  • Pressing Esc now steps back in the correct order: dismiss search first, then context menu, then chain isolation — rather than jumping straight to the outermost level.
  • Edge clicks no longer accidentally pin nodes on desktop; pin-on-tap is now restricted to touch devices where it is intentional.
  • Related edges are now drawn without arrowheads, visually distinguishing them from directional blocking edges.
  • The layout no longer jumps or reflows unexpectedly when chain isolation is cleared.
  • The dev server no longer serves a stale build from dist/ when the port is in use, ensuring the live Vite server is always what you see during development.

Loading

v1.1.0 — Workspace switching, REPO_PATH unification, demo repo

02 May 17:59
@shdennlin shdennlin
0835f7d
This commit was signed with the committer’s verified signature.
shdennlin Shawn Lin
GPG key ID: 36635EAC06AA630B
Verified
Learn about vigilant mode.

Choose a tag to compare

First feature release after v1.0.0. Mostly polish + one real bug fix for users who switch Linear workspaces.

Highlights

REPO_PATH is now one variable

The old split between REPO_HOST_PATH (host-side, for Docker bind-mount) and REPO_PATH (in-container, hardcoded to /repo) caused friction for anyone running both bun run dev and docker compose up. Now there's just one absolute path that works identically in both modes — the container bind-mounts it at the same location inside.

⚠️ Breaking change for Docker users: if your .env has REPO_HOST_PATH=..., rename it to REPO_PATH=.... The old name is silently ignored — design-doc integration will appear broken until renamed.

Workspace-switch recovery

A real bug from v1.0.0: switching LINEAR_API_KEY to a different workspace left old issues in the SQLite cache (their identifiers don't collide with the new workspace's), polluting the graph.

Three additions guide users to the fix:

  • POST /api/reset-cache endpoint — wipes issue/label cache + workspace-tied meta, preserves annotations + snapshots + sync history
  • Settings → "Reset cache & re-sync" button — one-click recovery from the UI
  • Sync-time warning when cached count >> synced count (heuristic for "you probably switched workspaces")

Sample design-doc proposals shipped with the repo

New demo-repo/openspec/ directory contains 4 sample proposals demonstrating all three Linear-linkage strategies (frontmatter, folder name, regex line). Useful for screenshots, evaluating the design-doc integration, or as a template for your own proposals.

Documentation

  • README hero + design-doc screenshots
  • GitHub [!WARNING] and [!TIP] alert syntax for the security warning and the demo-repo hint
  • Linked Spectra and OpenSpec project sites
  • Mention of Spec-Driven Development (SDD) in the design-doc paragraph
  • Plain-English subsection headings ("Quick override (env vars)" / "Full control (label-schema.yaml)")
  • Switched all dev commands to bun (matches the actual project)
  • docs/PRD.md marked as a historical snapshot with explicit shipped-vs-planned drift list

Upgrade

git pull
# If you're on Docker and your .env has REPO_HOST_PATH:
sed -i '' 's/REPO_HOST_PATH/REPO_PATH/' .env
docker compose up -d --build

After upgrade, if you've ever switched LINEAR_API_KEY between workspaces, hit Settings → "Reset cache & re-sync" once to clear stale data.

Full Changelog: v1.0.0...v1.1.0

Loading

v1.0.0 — First public release

02 May 15:21
@shdennlin shdennlin
a5ab1bf
This commit was signed with the committer’s verified signature.
shdennlin Shawn Lin
GPG key ID: 36635EAC06AA630B
Verified
Learn about vigilant mode.

Choose a tag to compare

Loading

AltStyle によって変換されたページ (->オリジナル) /