@aion0/forge 0.5.43 → 0.5.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/RELEASE_NOTES.md CHANGED
@@ -1,11 +1,8 @@
1
- # Forge v0.5.43
1
+ # Forge v0.5.46
2
2
 
3
- Released: 2026-04-25
3
+ Released: 2026-04-26
4
4
 
5
- ## Changes since v0.5.42
5
+ ## Changes since v0.5.45
6
6
 
7
- ### Features
8
- - feat: smith pause/resume + agent_status watch event-driven + primary session picker
9
7
 
10
-
11
- **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.5.42...v0.5.43
8
+ **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.5.45...v0.5.46
@@ -98,6 +98,20 @@ function FloatingBrowser({ onClose }: { onClose: () => void }) {
98
98
 
99
99
  export default function Dashboard({ user }: { user: any }) {
100
100
  const [viewMode, setViewMode] = useState<'tasks' | 'sessions' | 'terminal' | 'docs' | 'projects' | 'pipelines' | 'workspace' | 'skills' | 'logs' | 'usage'>('terminal');
101
+
102
+ // Honour `?view=<mode>` from the URL so external links (eg the VSCode
103
+ // extension) can deep-link straight into a section. Only views that have a
104
+ // top-level render branch are accepted. `workspace` and `sessions` live
105
+ // inside ProjectDetail, so they alias to `projects` (where you pick the
106
+ // project that contains the workspace/session).
107
+ useEffect(() => {
108
+ const raw = new URLSearchParams(window.location.search).get('view');
109
+ if (!raw) return;
110
+ const aliases: Record<string, string> = { workspace: 'projects', sessions: 'projects' };
111
+ const v = aliases[raw] || raw;
112
+ const valid = ['tasks', 'terminal', 'docs', 'projects', 'pipelines', 'skills', 'logs', 'usage'];
113
+ if (valid.includes(v)) setViewMode(v as any);
114
+ }, []);
101
115
  // workspaceProject state kept for forge:open-terminal event compatibility
102
116
  const [workspaceProject, setWorkspaceProject] = useState<{ name: string; path: string } | null>(null);
103
117
  const [browserMode, setBrowserMode] = useState<'none' | 'float' | 'right' | 'left'>('none');
@@ -209,7 +209,7 @@ export function resolveTerminalLaunch(agentId?: string): TerminalLaunchInfo {
209
209
 
210
210
  // Determine CLI command and capabilities from cliType
211
211
  const cliMap: Record<string, { cmd: string; session: boolean; resume: string }> = {
212
- 'claude-code': { cmd: 'claude', session: true, resume: '-c' },
212
+ 'claude-code': { cmd: 'claude', session: true, resume: '--resume' },
213
213
  'codex': { cmd: 'codex', session: false, resume: '' },
214
214
  'aider': { cmd: 'aider', session: false, resume: '' },
215
215
  'generic': { cmd: agentCfg.path || agentId || 'claude', session: false, resume: '' },
@@ -17,6 +17,7 @@ Forge is a self-hosted Vibe Coding platform for Claude Code. It provides a brows
17
17
  | **Remote Access** | One-click Cloudflare tunnel for remote browsing |
18
18
  | **GitHub Issue Auto-fix** | Scan issues, auto-fix, create PRs |
19
19
  | **Memory (optional)** | Code graph + knowledge via `@aion0/temper` MCP server |
20
+ | **IDE Plugins** | First-party VSCode extension and IntelliJ plugin — drive workspaces, agents, terminals, pipelines and docs from inside the editor (see `13-ide-plugins.md`) |
20
21
 
21
22
  ## Quick Start
22
23
 
@@ -0,0 +1,90 @@
1
+ # IDE Plugins
2
+
3
+ Forge ships with two first-party IDE plugins that mirror the web UI's feature set so you can drive workspaces, agent terminals, pipelines and docs without leaving the editor. Both are **thin clients** — they require a Forge server running locally (or reachable over a tunnel).
4
+
5
+ | | VSCode extension | IntelliJ plugin |
6
+ |---|---|---|
7
+ | Marketplace ID | `aion0.forge-vibecoding` | `Forge Vibe Coding` (`com.aion0.forge`) |
8
+ | Install | VSCode → Extensions → search `Forge Vibe Coding` | IDE → Settings → Plugins → Marketplace → search `Forge Vibe Coding` |
9
+ | Source | `vscode-extension/` | `intellij-plugin/` |
10
+ | Min IDE | VSCode ≥ 1.80 | IntelliJ Platform ≥ 2024.1 (build 241) |
11
+
12
+ ## Prerequisites
13
+
14
+ The plugins do **not** ship Forge — install it once first:
15
+
16
+ ```bash
17
+ npm install -g @aion0/forge
18
+ forge server start
19
+ ```
20
+
21
+ Default port `8403`. The plugins auto-detect `http://localhost:8403`. For remote forges (over Cloudflare tunnel or LAN), add a connection in plugin settings (see below).
22
+
23
+ ## Tool Window / Sidebar Layout
24
+
25
+ Both plugins expose four tabs:
26
+
27
+ | Tab | Shows | Right-click actions | Double-click |
28
+ |---|---|---|---|
29
+ | **Workspaces** | Forge workspaces with daemon status (🟢/○) and per-smith status emoji (▶ running / ⏸ paused / ✓ done / ✕ failed / ◐ starting) | Workspace: start / stop / restart daemon. Smith: open terminal, send message, pause/resume, mark done/failed/idle, retry. | Smith → attach to its tmux session in an IDE terminal |
30
+ | **Terminals** | Each forge project as a folder with its claude sessions (★ = bound/pinned default). | Project: **Open With ▸** submenu of every configured agent (claude/codex/aider/...) — fresh launch; New Session… (pick agent); Plain Terminal Here. Session: Resume; Resume With… submenu; Pin as Default Session. | Session row resumes that exact session via `claude --resume <id>` |
31
+ | **Pipelines** | Forge projects with their pipeline bindings (⚙ enabled / ⊘ disabled) and recent runs (▶/✓/✕/⊘). | Project: Add Pipeline…; Binding: Trigger Now, Enable/Disable, Remove; Run: Show Nodes; Node: Show Result. | Binding: trigger; Run: expand to see nodes; Node: open prompt/result/diff/log as a markdown buffer |
32
+ | **Docs** | Configured doc roots → file/dir tree. | Dir: Open Terminal Here (runs claude); File: Open. | File: open in IDE editor |
33
+
34
+ ## Multi-Connection (Local + Remote forges)
35
+
36
+ Both plugins support multiple Forge servers — useful when you have one Forge running locally for `~/.forge` and a second running on an office Mac mini exposed via tunnel.
37
+
38
+ **VSCode**: edit `forge.connections` in settings.json:
39
+ ```json
40
+ {
41
+ "forge.connections": [
42
+ { "name": "Local", "serverUrl": "http://localhost:8403", "terminalUrl": "ws://localhost:8404" },
43
+ { "name": "Office", "serverUrl": "https://forge-office.trycloudflare.com", "terminalUrl": "wss://forge-office.trycloudflare.com" }
44
+ ],
45
+ "forge.activeConnection": "Local"
46
+ }
47
+ ```
48
+ Click the status-bar entry (bottom right, `Forge: <name>`) to switch.
49
+
50
+ **IntelliJ**: Settings → Tools → Forge → Connections list. Status-bar widget toggles active connection.
51
+
52
+ Tokens are stored per-connection: VSCode uses `SecretStorage`, IntelliJ uses `PasswordSafe`. `Forge: Login` (command palette / Tools menu) prompts for the admin password and caches the bearer token.
53
+
54
+ ## How agent terminals work
55
+
56
+ When you double-click a session row or pick `Open With ▸ <agent>`:
57
+
58
+ 1. Plugin calls `GET /api/agents?resolve=<agentId>` → gets `cliCmd`, `cliType`, `supportsSession`, `env`, `model`.
59
+ 2. For specific-session resume: `claude --resume <sid>` (forced regardless of API's `resumeFlag` — `-c` is wrong for specific resume).
60
+ 3. Profile env vars are forwarded to the spawned process.
61
+ 4. `model` is passed as `--model <name>` for claude-code agents (so a "sonnet" profile actually runs sonnet).
62
+ 5. **IntelliJ** spawns the agent CLI directly as the pty's primary process (`LocalTerminalDirectRunner` subclass with `enableShellIntegration = false` + `configureStartupOptions` override) — no shell, no `executeCommand` race. The user's login shell (`$SHELL -l`) is wrapped around it so `.zprofile` / `.bash_profile` is sourced for PATH.
63
+ 6. **VSCode** uses the existing terminal-server WebSocket (`forge.terminalUrl`) to attach.
64
+
65
+ Workspace smith terminals attach to a pre-existing tmux session via `tmux -2 -u attach -t <session>` (UTF-8 + 256-color forced, otherwise JediTerm/xterm.js render boxes wrong).
66
+
67
+ ## Releasing new versions (maintainers)
68
+
69
+ Each plugin has a `publish.sh` in its directory:
70
+
71
+ ```bash
72
+ # VSCode — needs `vsce login aion0` cached, or $VSCE_PAT env var
73
+ cd vscode-extension
74
+ ./publish.sh patch # bump 0.2.x → 0.2.(x+1) and publish
75
+
76
+ # IntelliJ — needs $JETBRAINS_MARKETPLACE_TOKEN env var
77
+ cd intellij-plugin
78
+ ./publish.sh patch
79
+ ```
80
+
81
+ VSCode goes live in 1–2 minutes. IntelliJ goes through human moderation: 1–3 business days for the first publish, hours-to-1-day for subsequent updates of an already-approved plugin.
82
+
83
+ ## Troubleshooting
84
+
85
+ - **"Not connected" / "401" in tree** — Forge server isn't running or the token expired. Run `Forge: Login` (or `forge server start` if the server is down).
86
+ - **Terminal opens but agent CLI fails** ("`claude: command not found`") — IDE inherited a stripped PATH. The IntelliJ plugin spawns under `$SHELL -l -c …` to source `.zprofile`/`.bash_profile`; if your PATH is set in `.zshrc` only (not `.zprofile`), move it.
87
+ - **Smith terminal shows garbled output** — make sure tmux ≥ 3.0 and the IDE terminal supports UTF-8 + 256-color. The plugin already passes `tmux -2 -u attach`; if it still looks broken, check `$LANG` is `*.UTF-8`.
88
+ - **Picked a session, claude opens a different one** — Forge ≤ 0.5.43 had `resume: '-c'` hardcoded for claude (which is `--continue`, zero-arg). Upgrade Forge or pull the latest `lib/agents/index.ts`.
89
+ - **JetBrains plugin install fails with "incompatible build"** — verify your IDE is build 241+ (Help → About → Build #). The plugin's `sinceBuild = 241`.
90
+ - **Tree keeps collapsing folders I expanded** — fixed in IntelliJ plugin v0.1.17 (full path expansion is preserved across the 5-second poll, not just top-level).
@@ -43,6 +43,7 @@ The token is valid for 24 hours. Store it in a variable and reuse for all API ca
43
43
  | `10-troubleshooting.md` | Common issues and solutions |
44
44
  | `11-workspace.md` | Workspace (Forge Smiths) — multi-agent orchestration, daemon, message bus, profiles |
45
45
  | `12-usage.md` | Token usage analytics — charts, heatmap, cost estimation, by model/project/source |
46
+ | `13-ide-plugins.md` | VSCode extension + IntelliJ plugin — install, tabs, multi-connection, agent terminal launching |
46
47
 
47
48
  ## Matching questions to docs
48
49
 
@@ -64,3 +65,5 @@ The token is valid for 24 hours. Store it in a variable and reuse for all API ca
64
65
  - Usage/cost/tokens/spending/billing/analytics → `12-usage.md`
65
66
  - Terminal dock/float/mouse toggle/reconnect → `07-projects.md` + `11-workspace.md`
66
67
  - Sidebar collapse/project tabs/favorites → `07-projects.md`
68
+ - VSCode/IntelliJ/IDE plugin/extension/marketplace → `13-ide-plugins.md`
69
+ - vsce/vsix/JetBrains marketplace publish → `13-ide-plugins.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aion0/forge",
3
- "version": "0.5.43",
3
+ "version": "0.5.46",
4
4
  "description": "Unified AI workflow platform — multi-model task orchestration, persistent sessions, web terminal, remote access",
5
5
  "type": "module",
6
6
  "scripts": {
package/tsconfig.json CHANGED
@@ -37,6 +37,8 @@
37
37
  ".next/dev/dev/types/**/*.ts"
38
38
  ],
39
39
  "exclude": [
40
- "node_modules"
40
+ "node_modules",
41
+ "vscode-extension",
42
+ "intellij-plugin"
41
43
  ]
42
44
  }