Repository navigation
Releases
Pathfinder v0.1.6
Pathfinder v0.1.6
Release notes for changes since v0.1.5, prepared on 2026-11-12.
Published packages are built by GitHub Actions from the v0.1.6 tag.
Summary
- Scan exclusions: choose folders to leave out of scans from a folder tree,
or skip a file's folder right from the graph or the Reconcile list. Excluded
files leave the graph cleanly instead of turning missing. - A redesigned graph UI: teal theme, regrouped top bar, canvas controls, a
single filter panel, a project overview in the inspector, and a status bar. - Lighter change requests: step-by-step progress tracking, optional
verification, plain-description drafts, and fewer rescan-related blocks. - Portable MCP setup: client configs are no longer committed, and broken
or foreign entries can be detected and repaired.
Scan exclusions
Open Project ▾ → Scan exclusions…, also available in Project settings…,
to see the project's folders as a tree read from disk, each with its file count.
Tick a folder to exclude it and everything beneath it. Changes are staged and
the footer shows how many files will be removed or added back. Nothing is
written until Apply & rescan.
On the rescan, nodes for excluded files are deleted together with their symbols
and connections, so they never show up as missing in the Reconcile list. Any
description, comment or tags on those nodes are deleted too. Untick a folder and
apply again to bring its files back as freshly scanned nodes.
To skip noise where you see it, use Skip folder on a node's right-click
menu, the Skip folder… button in the inspector, or the button on each
Reconcile row. They offer the file's parent folders (or just that file) and open
the tree with your choice ticked.
Rules are stored in a plain-text .pathfinderignore file at the project root
using .gitignore syntax, so they can be committed, shared, and edited by hand.
Advanced patterns in the panel accept globs and negation (*.vsix,
/review.md, !CLAUDE.md). Rules that no longer match anything are flagged
stale. Built-in skips such as node_modules, .git and other dot-folders
still always apply.
From the command line, use pathfinder ignore list|add|remove <path> [folder_or_pattern]. Changing exclusions is deliberately not exposed as an MCP
tool: what gets scanned stays a human decision.
Graph UI revamp
- The top bar groups project, branch picker, Explore, Compare, Plan, Settings,
Export, Help and search. - Canvas controls cover 3D/2D, centering, filters, display and the legend.
Filters are one panel with Nodes, Connections, Admin and Tags rows. - With nothing selected, the inspector shows a project overview. With a node
selected, it shows collapsible sections with Focus, Deep dive and Reconcile
actions. - A status bar shows counts, the current git branch, operation timings, the
last scan time and Rescan. The git branch is read from.git/HEAD; Pathfinder
never runs git. - The default view and whether the legend opens are saved per browser in
Settings.
Change requests
- Steps can be marked pending, in progress, done, blocked or skipped from the UI
or the MCPstep_progressaction. Each step can carry a longer detail and
shows as an expandable card with a progress summary. - Closing a request only requires every step to be done or skipped. Validation
evidence, scope review and a fresh scan are shown as advisories but no longer
block closure. - Drafts can start as a plain description. Submitting still requires at least
one change, one step and one validation. - A rescan only blocks approval or starting work when it changed a file inside
the request's scope. Otherwise the baseline moves forward automatically. - MCP write tools return a compact summary by default. Pass
verbose: truefor
the full request.
MCP integrations
.mcp.json,.vscode/mcp.jsonand.codex/config.tomlhold paths specific to
one machine. They are no longer tracked in git; each machine enables the
integration once.pathfinder integrations listmarks broken entries, andpathfinder integrations repairfixes their command and arguments for the running
install. The graph UI and the VS Code extension offer the same Repair action.
Validation and upgrade notes
- The development test suite passed on 2026-11-12: 149 tests, no failures or
skips, including new scan-exclusion unit, scan, and server API tests. The scan
exclusions UI was also exercised end to end in Chromium. - Before tagging, all four archives (Windows x64, Linux x64, macOS Intel, macOS
Apple Silicon) were built locally withscripts/package.js. The Windows
packaged executable passed the smoke test and was checked withignore add,
scanandreporton a sample project. - The release workflow builds each platform on its own runner and smoke-tests
the Windows executable. Linux and macOS packages are built but not
runtime-tested by the workflow. macOS packages remain unsigned; see the
first-launch steps in the releases README. - MCP client setup moved to Settings → Configure MCP clients… with the UI
revamp. - Restart Pathfinder and any connected AI client sessions to load the new code.
- Projects without a
.pathfinderignorescan exactly as before. - The new
ignorenpm dependency implements.gitignorematching.
Pathfinder v0.1.5
Pathfinder v0.1.5
Release notes for changes since v0.1.4, prepared on 2026-11-02.
Compiled packages built from source commit 32a49fc on 2026-11-02.
Summary
- Optional change requests connect an agent's proposed work to the architecture
graph, with human review, validation evidence, and an audit history. - Initial C# parsing records namespaces, type declarations, and using directives.
- Graph navigation and layout improvements clarify focus, deep dives, and test
placement. - Live scans report progress through the scan worker.
Optional planning and review
Open Plan > Change requests to review a proposal or ask a connected agent to
create one. Plans record the problem, intended outcome, assumptions, risks,
node/edge changes, ordered steps, and validation criteria against a baseline scan.
The map distinguishes proposed additions, modifications, and removals from the
scanned architecture.
The workflow supports draft, review, approval, implementation, verification, and
closure. A new scan checks structural changes and identifies files changed
outside the proposed scope. Validation evidence records its submitter and
reference; a matching graph does not prove behavioral correctness.
Change requests are optional. Normal development and agent-assisted edits do
not require a change request. The workflow does not lock source files or execute
changes. When a request is used, revising its plan requires fresh approval and
validation evidence. Approval, scope decisions, and closure are human UI actions.
Connected agents can use pathfinder_propose_change,
pathfinder_change_requests, and pathfinder_update_change. Requests and their
history are stored in the project's local database and covered by its normal
pre-scan backups.
Initial C# support
Scanning .cs files now records block/file-scoped namespaces, classes, structs,
interfaces, enums, and record types. Findings preserve source lines, namespace
context, nested containers, and separate partial declarations. Ordinary, global,
static, and alias using directives are retained as metadata.
Select a C# file and inspect General > Technical details to see its csharp
metadata, or inspect the JSON graph export. Type summaries also appear in exports.
This first tier does not infer file dependencies from namespace names. It does
not provide C# method-call graphs, project/assembly evaluation, NuGet resolution,
implicit usings, or framework-specific routes. Simple ASCII qualified names are
supported; complex type aliases and compiler semantics remain outside this tier.
Comments and strings are opaque, and conditional compilation is not evaluated.
Graph and scanning experience
- General information and connection-focused controls are separated in the
inspector, with focus and deep-dive controls grouped together. - Layout tests cover placement of test satellites around their related modules,
preservation of existing positions, and collision enumeration. - Live scan progress is streamed through the worker, with regression coverage
for ordered phase boundaries and test coverage reporting. - The Windows source launcher checks for missing runtime dependencies and keeps
startup failures visible with guidance for copied installations.
Validation and upgrade notes
- The development test suite passed on 2026-11-02: 113 tests, no failures or skips,
including 13 new C# parser and scan checks. - GitHub Actions built Windows x64, Linux x64, macOS Intel, and macOS Apple
Silicon archives. The Windows packaged-executable smoke test passed. - Linux and macOS packages were built successfully but were not runtime
smoke-tested by this workflow. macOS packages remain unsigned. - Restart Pathfinder to load updated code, and rescan C# projects to populate the
new metadata. Restart connected AI client sessions to load new MCP tools. - Existing planning branches remain available alongside optional change requests.
Pathfinder v0.1.4
Pathfinder v0.1.4
Release notes for the changes since v0.1.3, reviewed on 2026-10-22.
Summary
- Scans of the same project now wait for one another across the UI, CLI, MCP,
and library API. - Queries accept bare method names and list candidates when a name is ambiguous.
- Deep dives and briefings identify a structural centre for modules without a
recognized entry point. - Descriptions record when they were written.
- The live graph saves 3D depth in the project database, and symbol cells use
fuller 3D layouts. - AI briefings separate test fixtures from runtime architecture and show named
CommonJS exports. - Core MCP orientation tools carry metadata requesting upfront loading in
supporting clients. - Opening the packaged executable without arguments starts the browser UI.
Scanning and queries
Concurrent scans
Scans started through the UI, CLI, MCP scan command, or lib/api.js now share a
per-project lock in .pathfinder/scan.lock. A scan waits while another scan of
that project runs; different projects can still scan independently. The CLI
reports when it is waiting. Locks are released on completion or failure, and
locks left by dead processes can be recovered.
Method names and module entries
A bare method name such as compact can resolve to a symbol labelled
Memory.compact. Exact labels and stable keys still work. Ambiguous names now
report candidate stable keys rather than only asking for a more precise target.
When a module has no recognized entry point, deep-dive summary/full views and
the AI brief use its most-connected symbol as a structural entry. Results label
the basis as most_connected; this is not proof of runtime invocation.
Diagnostics reserve the missing-entry finding for modules with no detected
symbol calls. Deep-dive cells also centre on a connected hub when the recognized
entry does not participate in the local call structure.
Descriptions and AI briefings
- Writing a node or edge description records
descriptionUpdatedAt; clearing
the description clears its date. Node description dates survive rescans. - The inspector displays description dates. The current-state report and AI
brief show dates beside the descriptions they include. Older descriptions
remain undated until rewritten. - Test and fixture paths are excluded from runtime module, route, service, and
connectivity summaries in the AI brief. A separate test-evidence section
keeps their presence visible; they remain in the graph and targeted queries. - Npm script listings identify the package file they came from.
- CommonJS export detection names public members from object assignments,
aliases, property assignments, and direct identifier exports instead of
reporting onlymodule.exports. Spreads and computed keys remain unresolved.
3D graph and placement
- Module depth is saved as
pos_zalongside X/Y in the project database. It now
survives switching between the CLI'slocalhostURL and the VS Code
extension's127.0.0.1URL. - Existing browser-stored depth is read as a migration fallback. Modules with
saved X/Y but no depth receive depth without moving their X/Y positions. - Reset Layout clears saved depth too. Position updates that omit Z preserve
the saved depth. - Symbol-cell call structures spread through a volume, with unconnected
symbols arranged around an outer shell. Deterministic depth offsets prevent
call trees from remaining flat during layout. - Planned modules created from the context menu retain the clicked position,
including depth in 3D, after reloading the live graph.
MCP integration
The server adds anthropic/alwaysLoad metadata to six read-only orientation
tools: brief, working set, callers, context, impact, and deep dive. This requests
upfront loading from clients that support that metadata; it does not establish
the behavior of every client. Other tools receive no such flag.
The MCP developer documentation explains this metadata and possible client
configuration overrides. Automatically writing a server-level alwaysLoad
setting from the integration toggle remains a proposal, not an implemented
feature.
Portable package and release workflow
- A packaged executable launched with no arguments now runs
serve --reuse,
opening the UI or reusing the current build. Explicit command-line commands
retain their behavior. Windows quick-start instructions include the.exe. - The Windows ZIP smoke test now extracts the archive, checks help, starts the
bundled server, and loads the project picker over HTTP. - The automated Windows build runs this smoke test before uploading its ZIP.
- The CLI's
--versionnow reads the package version instead of reporting
the hard-coded 0.1.0. - Since the v0.1.3 tag, the GitHub workflow has also changed dependency setup
and builds both macOS architectures in the macOS 14 job, replacing the
separate macOS 13 Intel job. This describes the workflow configuration;
it is not evidence of a successful hosted build.
Developer documentation and validation
- The known-issues tracker records resolved method lookups, entry reporting,
scan coordination, and description dates, with remaining scanner gaps kept
separate. - A new A/B benchmark protocol specifies fresh contexts, identical repository
states, and evidence collection for comparing exploration with and without
Pathfinder. No benchmark outcome is claimed here. - Added test coverage includes scan coordination and lock recovery, bare and
ambiguous method names, connectivity-based entries, CommonJS export names,
and Python scan/query behavior across repeated scans. - The full test suite passed on 2026-10-22: 89 tests, zero failures or skips.
- On 2026-10-22, the Windows package was rebuilt locally. The extracted ZIP
passed help and HTTP project-picker checks, and launching the executable
without arguments started the server. Other platforms were not rebuilt or
verified during this packaging fix.
Upgrade notes
Restart Pathfinder to load the changed code. The database adds the depth column
automatically when opened. Existing descriptions do not acquire historical
dates. Restart the AI client session to pick up changed MCP tool definitions.
Pathfinder v0.1.3
Pathfinder v0.1.3
Release notes for the changes made after v0.1.2, the last release shipped to testers. They include the interim v0.1.2c work (basic PHP support).
Summary
v0.1.3 makes Pathfinder work better with AI assistants and brings deep dive to the new 3D view.
- AI assistants are now told when to use Pathfinder instead of searching files, and receive smaller, drill-down results.
- Long scans no longer cut off an AI's tool call.
- The 3D perspective view is new, and deep dive works in it with the same gestures as 2D.
- The module map and deep-dive symbol cells now share one placement logic.
- Pathfinder shows when it is working.
launch.batreuses a running server or replaces it with the current build.- PHP projects are now scanned.
- HTML, PHP and CSS files now link to the assets they reference.
AI assistant integration
Pathfinder tells the assistant when to use it
Before this release, enabling an integration only registered Pathfinder's MCP server. The assistant received the tools but no guidance on when they beat searching files, so it usually fell back to grep. Pathfinder now delivers that guidance itself:
- On connect. The MCP server sends instructions with its handshake: use Pathfinder before grep for "what uses X", "what does X connect to", "what breaks if I change X", or an unfamiliar area. Claude Code loads these at session start, even while the tools themselves are deferred. This reaches every project that is already enabled; no action needed.
- In each tool description. Each description now opens with the question it answers, for example "Who uses, imports, or calls this file or node?". Tool search matches on this text.
- In the project's instruction file. Enabling an integration also writes a marked section to the client's instruction file. Disabling removes only that section. Your own content in the file is never changed, and the file is deleted only if Pathfinder's section was all it contained.
| Client | Configuration (as before) | Instruction file (new) |
|---|---|---|
| Claude Code | .mcp.json |
CLAUDE.md |
| Codex | .codex/config.toml |
AGENTS.md |
| VS Code (Copilot) | .vscode/mcp.json |
.github/copilot-instructions.md |
The integration panel and the integrations enable command now say which files they write.
Progressive deep dive
pathfinder_deep_dive now works the way the deep-dive UI does: open the module, then focus one symbol at a time.
| Target | Result |
|---|---|
| A module with up to 60 symbols | Every symbol and call, as before |
| A larger module | An overview: entry points, the most-connected symbols, the boundary with other modules, orphans, and a one-line index of every symbol |
| A symbol's stable key or label | That symbol in focus: what it calls and what calls it, with call sites |
Any module with view: "full" |
Every symbol and call |
On Pathfinder's own 234-symbol client file, the overview is 9.6KB and one symbol's focus is 5KB. The previous single result was 319KB.
Smaller results
All MCP results are now written compactly, without losing anything. Defaults, nulls, repeated fields and repeated key prefixes are stated once, and each result begins with a short legend explaining the rules. Measured on this repository:
| Tool | Before | After |
|---|---|---|
pathfinder_deep_dive, full view of a 234-symbol file |
319KB | 81KB |
pathfinder_working_set, three files |
51KB | 21KB |
pathfinder_impact |
47KB | 23KB |
lib/api.js still returns the full, uncompacted shapes. Compaction applies only to what an MCP client receives.
Scans no longer cut off a tool call
pathfinder_scanno longer blocks the MCP server. Other tool calls keep being answered while a scan runs.- A scan still running after 45 seconds continues in the background. The call returns "still running" instead of hitting the client's timeout.
pathfinder_statusreports the scan's state (running,doneorfailed) and its elapsed time.- A second scan request while one is running joins the running scan instead of starting another.
- Clients that request progress receive an update every 5 seconds.
- The 45-second wait can be changed with the
PATHFINDER_MCP_SCAN_WAIT_MSenvironment variable.
Assistants can keep module descriptions current
A new MCP tool, pathfinder_set_description, lets an assistant update a file's or module's description: the same field as the Description panel in the graph. Everything it writes starts with "[AI generated]", so it is never mistaken for a description a person wrote. It can't clear a description; use the graph UI or pathfinder describe for that.
Protocol
The MCP server now accepts MCP protocol versions 2025-06-18, 2025-03-26 and 2024-11-05, answering with the client's requested version when supported.
3D perspective view
New: View > 3D perspective
The graph can be viewed in perspective. Right-drag to orbit; a right-click without dragging still opens the context menu. Double-click a module to deep dive into it, and double-click empty space to leave. An axis gizmo shows the current orientation. Nodes dragged in 3D move in the plane you are looking at, and depth is kept per browser.
Deep dive works in 3D
Before this release, deep dive in 3D was unusable. Symbols drew about 23 times too large and covered the cell, and neighbouring modules could fill the screen. 3D now uses the same zoom model as 2D, so the deep-dive experience carries over:
- Symbols and labels are the same size as in 2D, with perspective making nearer ones larger.
- Scrolling into a module enters its deep dive, and scrolling back out leaves it.
- Entering a cell, warping across a call and leaving all animate, and Back/Forward (the mouse's side buttons) work.
- Panning moves the orbit centre, so orbiting always pivots on what is in the middle of the view.
- Switching between 2D and 3D keeps the same view and zoom, including mid deep-dive.
- Anything behind the camera is no longer drawn. Things very close to the camera fade out, connections are cut cleanly at the camera, and nearer nodes draw over farther ones.
Layout
One placement logic for the module map and symbol cells
Deep-dive cells now use the same placement engine as the module map: connected things are pulled together, and the most-connected symbol sits at the centre. On top of that, cells:
- set aside symbols with no calls inside the file in a ring around the call structure, the same way the module map sets aside unconnected modules;
- spread the result evenly across the cell, and keep symbols far enough apart that their labels don't stack in the flat view.
Measured across eight files of this repository, no two symbols now sit closer than about one label's height, where previously 91 pairs did.
- The module map's own layout is unchanged; it was verified identical module by module.
- New modules found by a rescan are now placed with the same engine, in all three axes. They previously always landed at depth 0.
- Hand-placed symbols keep their positions, and a symbol dragged in 3D now keeps its depth.
- Reset Layout also clears hand-placed symbol positions inside deep-dive cells.
Scanning
PHP support
PHP files are now part of the graph at file level:
requireandincludeconnect files, including the common__DIR__ . '/path'anddirname(__FILE__) . '/path'forms.usestatements connect to the file named after the class, following the usual PSR-4 convention. Groupusestatements aren't handled yet.- Top-level functions and classes are recorded.
Deep dive into PHP symbols isn't available yet; diagnostics say so for each PHP file.
Asset references
HTML and PHP files now link to the scripts, stylesheets and images they load (<script src>, <link href>, <img src>). CSS files now link to what they @import or reference with url(...). These appear as references_asset connections between files. Only references that resolve to a file in the project are recorded.
Interface
Working indicator
A small "working" pill appears in the bottom-left corner during anything slow: scanning, building the AI brief, generating a report, exporting JSON, comparing snapshots, reconciling, loading a deep dive and laying out the graph. It shows only for operations that take longer than a quarter of a second, so quick saves don't flicker it. The Rescan button is disabled while a scan runs.
Documentation files filter
Declutter has a new "Documentation files" option covering .md, .rst, .txt and similar files. Like test files, these are hidden by default.
Launching
Running launch.bat while Pathfinder is already running no longer opens the old server and then crashes. It now checks what is running on the port:
| Already running | Result |
|---|---|
| Nothing | Starts normally |
| Pathfinder, current build | Opens it in the browser and exits |
| Pathfinder, older build | Shuts it down and starts the current one |
| Another program | Leaves it alone and says so |
"Current build" means the running server's code matches the code on disk, so any change since it started counts as older. The packaged release's launchers (pathfinder.bat, pathfinder.sh) behave the same way. The same behavior is available from the command line as pathfinder serve --reuse.
Starting pathfinder serve on a port that's already taken now prints a plain explanation instead of a stack trace.
Fixes
- Database stall during scans. Every query made while a scan was writing waited about 5.5 seconds for a database lock, then carried on. Queries during a scan now take a few milliseconds.
- Deep dive ignored symbol targets. Asking for one symbol returned its whole file.
- Deep dive
limitdidn't limit output. It capped the symbol list ...
win-64_v0.1.2
Pathfinder v0.1.2
Release notes for the improvements completed after v0.1.1.
Summary
v0.1.2 improves Pathfinder as a cross-platform project browser and an architectural investigation tool. It strengthens static, source-evidenced detection, documents how that detection works, and makes graph exploration more predictable.
Cross-platform project browsing
Project-folder selection and reveal actions are now supported across the desktop platforms Pathfinder targets.
| Platform | Browse for a project folder | Reveal a folder or file |
|---|---|---|
| Windows | Native WinForms picker through PowerShell in STA mode | Explorer, including file selection where supported |
| macOS | Finder picker through osascript |
open, or open -R to reveal a file in Finder |
| Linux | zenity, then kdialog fallback |
xdg-open; files open their containing folder because there is no portable cross-desktop reveal-and-select command |
Cancellation is treated as a normal cancellation rather than an application error. Linux displays a clear fallback message when neither picker is installed, so the project path can still be entered manually.
Scanner methodology and evidence model
The new maintainer-facing detection methodology documents scan order, language-specific extraction, project-wide resolution, known limits, and reconciliation. The shorter scanner detection guide links to it.
Every scan creates a snapshot, extracts evidence across the target, resolves relationships at project scope, and reconciles confirmed facts with the project database. The database is a history of scan results; Pathfinder does not rely on a separate connector-only expansion pass.
JavaScript and TypeScript
- Babel-backed symbol extraction records top-level declarations and bounded same-file and project-import calls.
- Synthetic execution roots represent source-visible ownership for module startup calls, browser event callbacks, embedded browser script startup, and literal Commander command handlers.
- Browser event roots require DOM evidence so Node event emitters are not mislabeled as browser behavior.
- Subprocess detection requires a proven
child_processbinding. Calls such asdb.exec('ALTER TABLE ...')no longer become false subprocess nodes. - Interpolated URL strings are not emitted as literal external URL services.
- Generic local-service correlation joins a binding-proven subprocess port to a local HTTP client using resolved literals, same-file constants, or a shared environment-variable token. It is marked as static evidence, not process-liveness proof.
- A shared endpoint configuration key now connects a process manager and an adapter/provider even when the user-selected address is unavailable at scan time.
- Config-derived JavaScript endpoint accessors used by HTTP templates are folded into their configured-service evidence instead of creating duplicate dynamic-service placeholders.
Python
- Tree-sitter-backed symbol extraction records functions, classes, methods, source spans, and conservative call edges.
- Supported literal FastAPI and Flask-style route decorators mark handlers as
http_routeentries. This is framework-invocation evidence, not an invented source call. - Direct calls to a local function at module scope, including conventional
if __name__ == '__main__'blocks, receive a syntheticmoduleStartupowner. Imported and dynamic calls remain unresolved. - Symbol-detail diagnostics distinguish no symbols recorded from an asserted parse failure.
- Python subprocess and HTTP evidence participates in the same generic local-service correlation.
AI briefing improvements
- Connected Electron IPC entries render their actual channel arrays rather than an undefined singular-channel field.
- Symbolic evidence explains synthetic roots as scanner-created ownership markers rather than named source functions or runtime proof.
- HTTP route entries are identified in the symbolic evidence index.
- Host lifecycle exports such as
activateanddeactivatereceive a caveat so reviewing agents do not mistake host-invoked code for safe-to-delete code. - Local-service correlations state the resolved endpoint and launch location, with an explicit static-evidence caveat.
- Configured-service contracts identify the shared key and distinguish symbolic configuration evidence from a concrete reachable URL.
Graph interaction and presentation
Declutter and deep dive
Deep-dive symbols inherit the visibility state of their parent file. Hiding a test, missing, or planned-for-removal module through Declutter also hides its symbol cell and associated visible edges.
Focus and deep dive work in either order
Entering Deep Dive while Focus is active adds the expanded module to the focus lens. A focused module projects its focus to its expanded symbols, keeping the opened cell legible rather than dimming it as unrelated context.
More deliberate scroll-driven deep dive
Mouse-wheel Deep Dive begins only after zooming past 6x, rather than 2.2x. It preserves the pointer-centered camera position and does not recenter the view. Explicit Deep Dive toggles retain the centering animation.
Group movement
Dragging a node in a multi-selection now moves and persists the full group. When a parent module and an expanded symbol are selected together, the symbol moves only with its parent, preventing doubled movement or an unintended local symbol-layout change.
Verification
- JavaScript graph client syntax check passes.
- Full test suite passes: 50 tests.
- Regression coverage covers Python framework and startup entries, constrained subprocess detection, literal versus dynamic URL handling, and graph query evidence.
Upgrade notes
No project source changes are required. Rescan a project after upgrading to populate new route entries and synthetic ownership evidence. Restart the Pathfinder process before rescanning if it was already running so the updated scanner and report modules are loaded.
The rescan also removes the retired, application-specific runtime-capability
rows from early v0.1.2 builds, so they do not remain as misleading missing
elements in the graph.
win-64_v0.1.1
Pathfinder maps a codebase into a durable, interactive architecture graph—files, symbols, calls, imports, dependencies, and historical changes—so developers and AI assistants can understand, navigate, and safely evolve complex software.
Recent changes
- Extracted the graph viewer into a first-class client module, making Pathfinder’s own UI code fully scanner-visible instead of hiding inside a generated HTML template.
- Improved Reconcile so planning intent, factual missing state, orphaned symbols, and planned deletion remain distinct and persist correctly across rescans.
- Added richer symbol and connection investigation through the sidebar, including relationship-level reconciliation context.
- Improved JavaScript symbol/call recovery for browser startup code, event handlers, inline callbacks, and embedded client behavior.
- Added generated-release support for the companion VS Code extension: every packaged release now includes a prebuilt .vsix, allowing users to install it without Node, VSCE, or extension source files.
- Preserved cross-platform standalone builds for Windows, Linux, and macOS, with the usual macOS signing requirement before distribution.
mac_v0.1.2
Pathfinder v0.1.2
Release notes for the improvements completed after v0.1.1.
Summary
v0.1.2 improves Pathfinder as a cross-platform project browser and an architectural investigation tool. It strengthens static, source-evidenced detection, documents how that detection works, and makes graph exploration more predictable.
Cross-platform project browsing
Project-folder selection and reveal actions are now supported across the desktop platforms Pathfinder targets.
| Platform | Browse for a project folder | Reveal a folder or file |
|---|---|---|
| Windows | Native WinForms picker through PowerShell in STA mode | Explorer, including file selection where supported |
| macOS | Finder picker through osascript |
open, or open -R to reveal a file in Finder |
| Linux | zenity, then kdialog fallback |
xdg-open; files open their containing folder because there is no portable cross-desktop reveal-and-select command |
Cancellation is treated as a normal cancellation rather than an application error. Linux displays a clear fallback message when neither picker is installed, so the project path can still be entered manually.
Scanner methodology and evidence model
The new maintainer-facing detection methodology documents scan order, language-specific extraction, project-wide resolution, known limits, and reconciliation. The shorter scanner detection guide links to it.
Every scan creates a snapshot, extracts evidence across the target, resolves relationships at project scope, and reconciles confirmed facts with the project database. The database is a history of scan results; Pathfinder does not rely on a separate connector-only expansion pass.
JavaScript and TypeScript
- Babel-backed symbol extraction records top-level declarations and bounded same-file and project-import calls.
- Synthetic execution roots represent source-visible ownership for module startup calls, browser event callbacks, embedded browser script startup, and literal Commander command handlers.
- Browser event roots require DOM evidence so Node event emitters are not mislabeled as browser behavior.
- Subprocess detection requires a proven
child_processbinding. Calls such asdb.exec('ALTER TABLE ...')no longer become false subprocess nodes. - Interpolated URL strings are not emitted as literal external URL services.
- Generic local-service correlation joins a binding-proven subprocess port to a local HTTP client using resolved literals, same-file constants, or a shared environment-variable token. It is marked as static evidence, not process-liveness proof.
- A shared endpoint configuration key now connects a process manager and an adapter/provider even when the user-selected address is unavailable at scan time.
- Config-derived JavaScript endpoint accessors used by HTTP templates are folded into their configured-service evidence instead of creating duplicate dynamic-service placeholders.
Python
- Tree-sitter-backed symbol extraction records functions, classes, methods, source spans, and conservative call edges.
- Supported literal FastAPI and Flask-style route decorators mark handlers as
http_routeentries. This is framework-invocation evidence, not an invented source call. - Direct calls to a local function at module scope, including conventional
if __name__ == '__main__'blocks, receive a syntheticmoduleStartupowner. Imported and dynamic calls remain unresolved. - Symbol-detail diagnostics distinguish no symbols recorded from an asserted parse failure.
- Python subprocess and HTTP evidence participates in the same generic local-service correlation.
AI briefing improvements
- Connected Electron IPC entries render their actual channel arrays rather than an undefined singular-channel field.
- Symbolic evidence explains synthetic roots as scanner-created ownership markers rather than named source functions or runtime proof.
- HTTP route entries are identified in the symbolic evidence index.
- Host lifecycle exports such as
activateanddeactivatereceive a caveat so reviewing agents do not mistake host-invoked code for safe-to-delete code. - Local-service correlations state the resolved endpoint and launch location, with an explicit static-evidence caveat.
- Configured-service contracts identify the shared key and distinguish symbolic configuration evidence from a concrete reachable URL.
Graph interaction and presentation
Declutter and deep dive
Deep-dive symbols inherit the visibility state of their parent file. Hiding a test, missing, or planned-for-removal module through Declutter also hides its symbol cell and associated visible edges.
Focus and deep dive work in either order
Entering Deep Dive while Focus is active adds the expanded module to the focus lens. A focused module projects its focus to its expanded symbols, keeping the opened cell legible rather than dimming it as unrelated context.
More deliberate scroll-driven deep dive
Mouse-wheel Deep Dive begins only after zooming past 6x, rather than 2.2x. It preserves the pointer-centered camera position and does not recenter the view. Explicit Deep Dive toggles retain the centering animation.
Group movement
Dragging a node in a multi-selection now moves and persists the full group. When a parent module and an expanded symbol are selected together, the symbol moves only with its parent, preventing doubled movement or an unintended local symbol-layout change.
Verification
- JavaScript graph client syntax check passes.
- Full test suite passes: 50 tests.
- Regression coverage covers Python framework and startup entries, constrained subprocess detection, literal versus dynamic URL handling, and graph query evidence.
Upgrade notes
No project source changes are required. Rescan a project after upgrading to populate new route entries and synthetic ownership evidence. Restart the Pathfinder process before rescanning if it was already running so the updated scanner and report modules are loaded.
The rescan also removes the retired, application-specific runtime-capability
rows from early v0.1.2 builds, so they do not remain as misleading missing
elements in the graph.
mac_v0.1.1
Pathfinder maps a codebase into a durable, interactive architecture graph—files, symbols, calls, imports, dependencies, and historical changes—so developers and AI assistants can understand, navigate, and safely evolve complex software.
Recent changes
Extracted the graph viewer into a first-class client module, making Pathfinder’s own UI code fully scanner-visible instead of hiding inside a generated HTML template.
Improved Reconcile so planning intent, factual missing state, orphaned symbols, and planned deletion remain distinct and persist correctly across rescans.
Added richer symbol and connection investigation through the sidebar, including relationship-level reconciliation context.
Improved JavaScript symbol/call recovery for browser startup code, event handlers, inline callbacks, and embedded client behavior.
Added generated-release support for the companion VS Code extension: every packaged release now includes a prebuilt .vsix, allowing users to install it without Node, VSCE, or extension source files.
Preserved cross-platform standalone builds for Windows, Linux, and macOS, with the usual macOS signing requirement before distribution.
Linux-x64_v0.1.2
Pathfinder v0.1.2
Release notes for the improvements completed after v0.1.1.
Summary
v0.1.2 improves Pathfinder as a cross-platform project browser and an architectural investigation tool. It strengthens static, source-evidenced detection, documents how that detection works, and makes graph exploration more predictable.
Cross-platform project browsing
Project-folder selection and reveal actions are now supported across the desktop platforms Pathfinder targets.
| Platform | Browse for a project folder | Reveal a folder or file |
|---|---|---|
| Windows | Native WinForms picker through PowerShell in STA mode | Explorer, including file selection where supported |
| macOS | Finder picker through osascript |
open, or open -R to reveal a file in Finder |
| Linux | zenity, then kdialog fallback |
xdg-open; files open their containing folder because there is no portable cross-desktop reveal-and-select command |
Cancellation is treated as a normal cancellation rather than an application error. Linux displays a clear fallback message when neither picker is installed, so the project path can still be entered manually.
Scanner methodology and evidence model
The new maintainer-facing detection methodology documents scan order, language-specific extraction, project-wide resolution, known limits, and reconciliation. The shorter scanner detection guide links to it.
Every scan creates a snapshot, extracts evidence across the target, resolves relationships at project scope, and reconciles confirmed facts with the project database. The database is a history of scan results; Pathfinder does not rely on a separate connector-only expansion pass.
JavaScript and TypeScript
- Babel-backed symbol extraction records top-level declarations and bounded same-file and project-import calls.
- Synthetic execution roots represent source-visible ownership for module startup calls, browser event callbacks, embedded browser script startup, and literal Commander command handlers.
- Browser event roots require DOM evidence so Node event emitters are not mislabeled as browser behavior.
- Subprocess detection requires a proven
child_processbinding. Calls such asdb.exec('ALTER TABLE ...')no longer become false subprocess nodes. - Interpolated URL strings are not emitted as literal external URL services.
- Generic local-service correlation joins a binding-proven subprocess port to a local HTTP client using resolved literals, same-file constants, or a shared environment-variable token. It is marked as static evidence, not process-liveness proof.
- A shared endpoint configuration key now connects a process manager and an adapter/provider even when the user-selected address is unavailable at scan time.
- Config-derived JavaScript endpoint accessors used by HTTP templates are folded into their configured-service evidence instead of creating duplicate dynamic-service placeholders.
Python
- Tree-sitter-backed symbol extraction records functions, classes, methods, source spans, and conservative call edges.
- Supported literal FastAPI and Flask-style route decorators mark handlers as
http_routeentries. This is framework-invocation evidence, not an invented source call. - Direct calls to a local function at module scope, including conventional
if __name__ == '__main__'blocks, receive a syntheticmoduleStartupowner. Imported and dynamic calls remain unresolved. - Symbol-detail diagnostics distinguish no symbols recorded from an asserted parse failure.
- Python subprocess and HTTP evidence participates in the same generic local-service correlation.
AI briefing improvements
- Connected Electron IPC entries render their actual channel arrays rather than an undefined singular-channel field.
- Symbolic evidence explains synthetic roots as scanner-created ownership markers rather than named source functions or runtime proof.
- HTTP route entries are identified in the symbolic evidence index.
- Host lifecycle exports such as
activateanddeactivatereceive a caveat so reviewing agents do not mistake host-invoked code for safe-to-delete code. - Local-service correlations state the resolved endpoint and launch location, with an explicit static-evidence caveat.
- Configured-service contracts identify the shared key and distinguish symbolic configuration evidence from a concrete reachable URL.
Graph interaction and presentation
Declutter and deep dive
Deep-dive symbols inherit the visibility state of their parent file. Hiding a test, missing, or planned-for-removal module through Declutter also hides its symbol cell and associated visible edges.
Focus and deep dive work in either order
Entering Deep Dive while Focus is active adds the expanded module to the focus lens. A focused module projects its focus to its expanded symbols, keeping the opened cell legible rather than dimming it as unrelated context.
More deliberate scroll-driven deep dive
Mouse-wheel Deep Dive begins only after zooming past 6x, rather than 2.2x. It preserves the pointer-centered camera position and does not recenter the view. Explicit Deep Dive toggles retain the centering animation.
Group movement
Dragging a node in a multi-selection now moves and persists the full group. When a parent module and an expanded symbol are selected together, the symbol moves only with its parent, preventing doubled movement or an unintended local symbol-layout change.
Verification
- JavaScript graph client syntax check passes.
- Full test suite passes: 50 tests.
- Regression coverage covers Python framework and startup entries, constrained subprocess detection, literal versus dynamic URL handling, and graph query evidence.
Upgrade notes
No project source changes are required. Rescan a project after upgrading to populate new route entries and synthetic ownership evidence. Restart the Pathfinder process before rescanning if it was already running so the updated scanner and report modules are loaded.
The rescan also removes the retired, application-specific runtime-capability
rows from early v0.1.2 builds, so they do not remain as misleading missing
elements in the graph.
Linux-x64_v0.1.1
Pathfinder maps a codebase into a durable, interactive architecture graph—files, symbols, calls, imports, dependencies, and historical changes—so developers and AI assistants can understand, navigate, and safely evolve complex software.
Recent changes
Extracted the graph viewer into a first-class client module, making Pathfinder’s own UI code fully scanner-visible instead of hiding inside a generated HTML template.
Improved Reconcile so planning intent, factual missing state, orphaned symbols, and planned deletion remain distinct and persist correctly across rescans.
Added richer symbol and connection investigation through the sidebar, including relationship-level reconciliation context.
Improved JavaScript symbol/call recovery for browser startup code, event handlers, inline callbacks, and embedded client behavior.
Added generated-release support for the companion VS Code extension: every packaged release now includes a prebuilt .vsix, allowing users to install it without Node, VSCE, or extension source files.
Preserved cross-platform standalone builds for Windows, Linux, and macOS, with the usual macOS signing requirement before distribution.