Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
56d0baa
Document Extract Pro execution plan
joesobo May 19, 2026
143b3bf
Add Extract Pro plugin API contracts
joesobo May 19, 2026
05eae74
Add Core plugin access checks
joesobo May 19, 2026
fd9db7d
Add workspace plugin data host
joesobo May 19, 2026
c307619
Add Graph View runtime contributions
joesobo May 19, 2026
188c9bb
Add Graph View projection contributions
joesobo May 19, 2026
80ed272
Add Graph View force adapter host
joesobo May 19, 2026
071d87f
Add Graph View context menu contributions
joesobo May 19, 2026
730b4bd
Add named Graph View UI slots
joesobo May 19, 2026
29f3e47
Add Pro access plugin package
joesobo May 19, 2026
0976920
Add CodeGraphy web app target
joesobo May 19, 2026
9ba34c2
Add local plugin link command
joesobo May 19, 2026
b9ffd7d
Document Extract Pro plugin surfaces
joesobo May 19, 2026
17b9c52
Align Extract Pro release tests
joesobo May 19, 2026
c383b3a
Inject data hosts into package plugin factories
joesobo May 19, 2026
e35967d
Keep Organize graph sections plugin-owned
joesobo May 19, 2026
de5c133
Fix package plugin toggle regressions
joesobo May 19, 2026
9a20f15
Fix clean CI e2e plugin setup lint
joesobo May 19, 2026
e1b0767
fix organize graph view contribution gating
joesobo May 19, 2026
28e7d8d
fix organize section runtime regressions
joesobo May 19, 2026
138fe67
fix organize plugin section toggling
joesobo May 19, 2026
11f7e79
fix organize toggle section and pin visibility
joesobo May 19, 2026
e52ec4a
fix graph view contributions for installed organize plugin
joesobo May 19, 2026
29b3b56
Extract Organize from public extension
joesobo May 20, 2026
1f034ed
Generalize public paid plugin fixtures
joesobo May 20, 2026
3ad3c42
Update plugin API release guard
joesobo May 20, 2026
005e4f5
Extract pin behavior into Organize plugin
joesobo May 20, 2026
ba51319
Update examples graph settings
joesobo May 20, 2026
310268c
Fix package plugin webview injection lifecycle
joesobo May 20, 2026
d915693
Fix organize plugin lifecycle toggles
joesobo May 20, 2026
a5f6df8
Genericize package plugin e2e coverage
joesobo May 20, 2026
8b7da02
Expose graph viewport state to webview plugins
joesobo May 20, 2026
71c405c
Pass live graph context to drag plugins
joesobo May 20, 2026
03ae6e3
Generalize graph viewport plugin payloads
joesobo May 20, 2026
699e1a8
Preserve plugin data when toggling packages
joesobo May 20, 2026
265728a
Add plugin pointer areas for custom nodes
joesobo May 21, 2026
582c514
Add sized rectangle graph nodes
joesobo May 21, 2026
8b559dd
Support live plugin runtime node updates
joesobo May 21, 2026
2b15c9c
Pass graph mode to plugin menu actions
joesobo May 21, 2026
7b5438e
Fix graph context test expectations
joesobo May 21, 2026
7781808
Hide internal plugins from status panel
joesobo May 21, 2026
c602e36
Respect runtime node fixed positions
joesobo May 21, 2026
2a8751c
Expose runtime node position state
joesobo May 21, 2026
e1210d6
Clean up plugin viewport listeners
joesobo May 21, 2026
d11c799
Expose graph snapshot to plugin host API
joesobo May 21, 2026
4e4a1ac
Allow clearing runtime node coordinates
joesobo May 21, 2026
18ffbe5
Clarify plugin API host surfaces
joesobo May 21, 2026
46a3197
Update plugin status test fixtures
joesobo May 21, 2026
7690f77
Merge remote-tracking branch 'origin/main' into codex/extract-pro
joesobo May 21, 2026
e5da100
Merge remote-tracking branch 'origin/main' into codex/extract-pro
joesobo May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .changeset/bright-sections-resize.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/plugin-api": minor
"@codegraphy/extension": patch
---

Add sized 2D rectangle node presentation so plugin nodes can render, pick, and collide at their expanded visual bounds.
11 changes: 11 additions & 0 deletions .changeset/extract-pro-foundation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@codegraphy/plugin-api": minor
"@codegraphy/core": minor
"@codegraphy/extension": minor
"@codegraphy/mcp": minor
"@codegraphy/pro": minor
---

Add the Extract Pro foundation: Access Provider contracts, plugin-owned data persistence delivered to package plugin factories, Graph View runtime/projection/context-menu/UI/force-adapter contribution contracts and hosts, a Pro account/access plugin shell, and local plugin linking for private paid plugins.

Graph View contribution callbacks receive live host context such as the current graph mode and timeline state.
6 changes: 6 additions & 0 deletions .changeset/live-graph-view-context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/extension": patch
"@codegraphy/plugin-api": patch
---

Expose graph mode and timeline state to Graph View context menu contributions so plugins can hide mode-specific actions.
6 changes: 6 additions & 0 deletions .changeset/live-section-node-updates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/plugin-api": minor
"@codegraphy/extension": patch
---

Expose live Graph View viewport node updates and per-node physics overrides so plugins can resize runtime nodes without restarting graph physics.
5 changes: 5 additions & 0 deletions .changeset/nice-runtime-node-undefined.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/plugin-api": patch
---

Allow runtime node coordinate fields to be explicitly cleared with `undefined` in exact-optional TypeScript projects.
5 changes: 5 additions & 0 deletions .changeset/plugin-webview-injections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Re-send linked package plugin webview assets after workspace plugin loading so enabled plugins can activate their graph UI contributions.
5 changes: 5 additions & 0 deletions .changeset/preserve-plugin-data-on-toggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Preserve plugin-owned workspace data when package plugins are toggled off.
5 changes: 5 additions & 0 deletions .changeset/private-feature-plugin-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Keep feature-specific Graph View nodes, context menu actions, and physics package-owned so disabling or removing a plugin removes those contributions from the graph.
5 changes: 5 additions & 0 deletions .changeset/quiet-internal-plugins.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Hide internal built-in runtime plugins from the Plugins panel.
6 changes: 6 additions & 0 deletions .changeset/quiet-pins-move.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/plugin-api": minor
"@codegraphy/core": minor
---

Add a Graph View node drag-end contribution so plugins can own fixed-position drag behavior without hard-coding plugin features in the host graph.
5 changes: 5 additions & 0 deletions .changeset/silent-viewport-listeners.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Clean up plugin-scoped Graph View viewport listeners when a plugin is removed or toggled off.
5 changes: 5 additions & 0 deletions .changeset/slim-runtime-node-positions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/extension": patch
---

Respect plugin runtime node fixed coordinates when building graph physics state.
6 changes: 6 additions & 0 deletions .changeset/steady-package-plugin-toggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/extension": patch
"@codegraphy/plugin-api": minor
---

Fix package plugin toggles so Graph View contributions are added and removed immediately, add create-menu placement for plugin context menu actions, and keep plugin contribution snapshots stable while rendering the graph.
5 changes: 5 additions & 0 deletions .changeset/tender-runtime-node-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/plugin-api": patch
---

Expose runtime node coordinate, fixed-position, and velocity fields in the public Graph View API.
5 changes: 5 additions & 0 deletions .changeset/tidy-host-graph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codegraphy/plugin-api": patch
---

Expose the current graph snapshot on the plugin host API for plugin-owned exporters and host actions.
6 changes: 6 additions & 0 deletions .changeset/witty-sections-pull.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@codegraphy/plugin-api": minor
"@codegraphy/extension": patch
---

Add plugin runtime node pointer areas so custom-shaped nodes can use graph-owned pointer picking.
6 changes: 1 addition & 5 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionDevelopmentPath=${workspaceFolder}/packages/plugin-typescript",
"--extensionDevelopmentPath=${workspaceFolder}/packages/plugin-python",
"--extensionDevelopmentPath=${workspaceFolder}/packages/plugin-csharp",
"--extensionDevelopmentPath=${workspaceFolder}/packages/plugin-godot"
"--extensionDevelopmentPath=${workspaceFolder}"
],
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"preLaunchTask": "npm: build:devhost"
Expand Down
87 changes: 0 additions & 87 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,28 +168,6 @@ _Avoid_: Permanent open, full open
To open a file node as a persistent VS Code editor tab.
_Avoid_: Preview file

### Layout Organization

**Graph Section**:
A user-created graph organization area represented by a physics-participating **Section Node** that can expand to show members or collapse to a single node.
_Avoid_: Subgraph, group, container, compound node when speaking in product terms

**Section Frame**:
The expanded visual form of a **Section Node**, including its resizable rectangle, label, color, edge resize handles, and selection chrome.
_Avoid_: Container

**Section Member**:
A **Node** assigned to a **Graph Section** for user-controlled layout organization.
_Avoid_: Child node unless discussing prior-art parent-child graph models

**Section Node**:
The **Graph View** node that represents a **Graph Section** in the force layout while expanded or collapsed.
_Avoid_: Folder Node, indexed Node when discussing graph analysis

**Pinned Node**:
A **Node** with a persisted graph-space position that the graph layout treats as fixed until the pin is moved or removed.
_Avoid_: Favorite, locked node

### Indexing And Cache

**Indexing**:
Expand Down Expand Up @@ -453,76 +431,11 @@ _Avoid_: Graph export
- **Collapse** does not absorb a downstream node that is still related to by a visible node outside the collapsed subgraph.
- **Boundary Paths** stay visible so collapse does not invent false direct edges or break existing relationships to shared relationship targets.
- **Collapse Projection** runs after the **Visible Graph** exists because users need a rendered graph before deciding what to collapse.
- A **Graph Section** organizes **Section Members** on the **Graph Stage** and is represented by a **Section Node** in the force layout.
- A **Section Frame** is the editable expanded visual form of a **Section Node**.
- A **Section Node** can be expanded into its **Section Frame** or collapsed into a single node; it must not be confused with a **Folder Node**, which represents a real workspace directory.
- An expanded **Graph Section** shows its **Section Members**, and those members use section-local physics centered on that section's origin instead of participating directly in the root graph physics simulation.
- **Section Members** interact physically with other visible members in the same **Graph Section** and use hard visual bounds inside the **Section Frame**.
- **Section Members** remain renderable graph nodes on the single React Force Graph surface so they keep normal hit testing, labels, edges, and built-in node dragging.
- The root graph physics simulation can contain different node geometries, including circular ordinary nodes and rectangular expanded **Section Nodes**, and those visible root actors should collide according to their visible geometry.
- Moving an expanded **Section Frame** moves its visible **Section Members** by the same graph-space delta before physics resumes.
- Moving an expanded **Section Frame** also moves visible pinned **Section Members** and updates their persisted pin positions by the same graph-space delta.
- Moving a collapsed **Section Node** moves its hidden **Section Members** and any persisted member pin positions by the same graph-space delta for the next expansion.
- A pinned **Section Member** moves relative to its owning **Section Frame** when the section moves.
- Dragging a pinned **Section Member** outside its owning **Section Frame** updates the pin to the dropped graph-space position and removes that node from the **Graph Section**.
- A **Section Frame** has a content minimum size based on its members, chrome, and padding; resizing below that minimum collapses the **Graph Section**.
- A parent **Section Frame** includes child **Section Frames** in its content minimum size.
- Expanding a collapsed **Graph Section** restores a **Section Frame** at least as large as its current content minimum size.
- Collapsing a parent **Graph Section** hides its descendant sections without changing their own expanded or collapsed state.
- Expanding a parent **Graph Section** restores each descendant section to the expanded or collapsed state it had before the parent was collapsed.
- Collapsing a **Graph Section** stops its section-local simulation and preserves latest direct-child local positions.
- Expanding a **Graph Section** restores saved direct-child local positions and gently restarts its section-local simulation.
- A **Node** becomes a **Section Member** only through explicit user intent, such as dropping it into a **Section Frame** or using a Graph Context Menu action.
- A **Node** stops being a **Section Member** only through explicit user intent, such as dropping it outside its **Section Frame** or using a Graph Context Menu action.
- Dragging across **Section Frame** boundaries previews the candidate target, but membership changes only when the user drops the dragged item.
- Dragging any **Section Member** outside its owning **Section Frame** and dropping it removes the item from that **Graph Section**.
- Any visible **Node Type** can become a **Section Member**, including File Nodes, Folder Nodes, Package nodes, and Plugin Nodes.
- **Section Member** assignment survives temporary node visibility changes from **Graph Scope**, **Search**, **Filter**, **Show Orphans**, or similar view settings.
- If a hidden **Section Member** becomes visible again and its owning **Graph Section** still exists, it returns to that **Graph Section**.
- If a hidden **Section Member** becomes visible again after its owning **Graph Section** was deleted, it returns to the root graph.
- **Pinned Node** and **Section Member** records can remain dormant while their graph item is hidden or temporarily absent, and should apply again if that graph item returns.
- Explicitly deleting a graph item through CodeGraphy should remove that item's pin and section ownership records.
- **Depth Mode** does not mutate **Section Member** assignment and should preserve section context for visible **Section Members**.
- When **Depth Mode** shows a **Section Member**, its owning **Graph Section** should remain visible enough to show containment context even when the section itself is outside the hop depth.
- **Timeline Snapshots** do not show or allow editing **Pinned Nodes** or **Graph Sections** in v1.
- Physics drift across a **Section Frame** boundary must not add or remove **Section Member** assignment.
- Nested **Graph Sections** form an ownership hierarchy: a node in Section 2 inside Section 1 is directly a **Section Member** of Section 2, while Section 2 is the member within Section 1.
- Nested **Graph Section** support is recursive: a **Graph Section** can contain another **Graph Section**, which can contain its own **Section Members** or nested sections.
- Nested **Graph Section** coordinates are local to the direct parent, recursively, rather than flattened into root graph coordinates.
- A **Graph Section** or **Node** must have at most one direct section owner, and nested section ownership must not form cycles.
- **Section Member** ownership is persisted in a normalized ownership index, while **Graph Sections** store their own visual and layout state separately.
- Deleting only a **Graph Section** removes that section and promotes its direct child nodes and child sections to the deleted section's parent owner.
- Promoted children keep their current graph-space positions when their owning **Graph Section** is deleted.
- Deleting an explicit multi-selection that includes a **Graph Section** and its contents can delete the whole selected set.
- Any delete action requires confirmation.
- An **Edge** to a visible **Section Member** renders to that member while its **Graph Section** is expanded.
- A cross-boundary **Edge** to a visible **Section Member** renders to and physically influences the real member endpoint, while that member remains scoped to its section-local physics and **Section Frame** bounds.
- Cross-boundary **Edge** physics is symmetric while a **Graph Section** is expanded: the outside endpoint and the **Section Member** endpoint both feel the relationship through coordinate conversion between root graph space and section-local graph space.
- Cross-boundary **Edge** physics must not pull the **Section Node** as a proxy for a visible **Section Member**.
- **Section Frame** bounds win over cross-boundary **Edge** pull.
- When a **Graph Section** is collapsed, cross-boundary **Edges** render to each endpoint's nearest visible representative as a projection of the original relationships.
- Projected cross-boundary **Edges** with the same visible source, visible target, and **Edge Type** render as one aggregated edge that preserves the original edge list for inspection.
- Projected cross-boundary **Edges** with different **Edge Types** remain visually distinct.
- A **Graph Section** membership relationship is layout state, not a rendered **Edge**; CodeGraphy should not render **Section Node** to **Section Member** edges.
- A **Graph Section** does not create, remove, or change **Relationships** in the **Relationship Graph**.
- A **Pinned Node** keeps a user-chosen graph-space position while preserving the node's normal **Relationships**.
- **Pinned Node** positions are stored in graph-space coordinates relative to the graph origin, not viewport pan or zoom.
- A **Pinned Node** is not moved by physics while the pin is active.
- A pinned **Section Member** or nested **Section Node** stores a direct-parent-local position and is not moved by its section-local physics while the pin is active.
- 2D and 3D **Pinned Node** positions are separate; a 2D pin applies only in 2D and a 3D pin applies only in 3D.
- **Pinned Nodes** show a small pin badge; collapsed **Section Nodes** show a collapsed-section badge and hidden-descendant count.
- A **Graph Section** has a required label and optional free-form color; the label appears on both the expanded **Section Frame** and collapsed **Section Node**.
- **Graph Section** identity comes from a generated stable id, not its editable label.
- **Graph Section** color tints the **Section Frame** border and header without flood-filling the whole section; users can choose any color from the color picker.
- A selected expanded **Section Frame** shows an accent border, subtly tinted header, and visible resize handles.
- Active marquee selection shows a visible desktop-style selection rectangle while the user click-drags.
- A selected **Section Frame** can be a graph placement target for creating a nested **Graph Section** or placing a newly created File Node or Folder Node.
- A selected **Folder Node** can be a filesystem destination for creating a new file or folder.
- When both a **Folder Node** and **Section Frame** are selected for file or folder creation, the **Folder Node** supplies the filesystem destination and the **Section Frame** supplies the graph placement owner.
- Creating a **Graph Section** from selection changes only graph ownership and layout; it must not create, remove, or change **Edges**.
- Renaming or moving a file or folder should preserve its **Section Member** assignment when CodeGraphy can identify the moved graph item as the same logical item.
- A **Section Node** can be a **Pinned Node**; pinning a **Section Node** fixes the section's graph-space position without automatically pinning its **Section Members**.
- **Graph Section** editing is 2D-only in v1; 3D does not render **Graph Sections** or **Section Nodes** in v1.
- The force graph renderer handles layout, physics, and interaction for the graph produced by **Collapse Projection**.
- **Filter** applies persistent include/exclude criteria to graph consideration; **Collapse** keeps important graph items available behind a collapsed node.
- **Indexing** starts with **File Discovery**, then runs **Tree-sitter Analysis**, then **Plugin Analysis**, then **Graph Projection**.
Expand Down
Loading
Loading