@hienlh/ppm 0.7.26 → 0.7.28
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/CHANGELOG.md +21 -0
- package/CLAUDE.md +18 -0
- package/dist/web/assets/chat-tab-B0UcLXFA.js +7 -0
- package/dist/web/assets/{code-editor-Gf5j24XD.js → code-editor-Bb-RxKRW.js} +1 -1
- package/dist/web/assets/{database-viewer-CavLUDcg.js → database-viewer-B4pr_bwC.js} +1 -1
- package/dist/web/assets/{diff-viewer-DCtD7LAK.js → diff-viewer-DuHuqbG4.js} +1 -1
- package/dist/web/assets/{git-graph-ihMFS2VR.js → git-graph-BkTGWVMA.js} +1 -1
- package/dist/web/assets/index-BCibi3mV.css +2 -0
- package/dist/web/assets/index-BWVej31S.js +28 -0
- package/dist/web/assets/keybindings-store-DoOYThSa.js +1 -0
- package/dist/web/assets/{markdown-renderer-BQoBZBCF.js → markdown-renderer-CyObkWZ-.js} +1 -1
- package/dist/web/assets/{postgres-viewer-SV4HmMM_.js → postgres-viewer-CHVUVt7c.js} +1 -1
- package/dist/web/assets/{settings-tab-omvX466u.js → settings-tab-C1Uj7t80.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-CZz6cYBU.js → sqlite-viewer-D1ohxjF9.js} +1 -1
- package/dist/web/assets/{switch-PAf5UhcN.js → switch-UODDpwuO.js} +1 -1
- package/dist/web/assets/{terminal-tab-C-fMaKoC.js → terminal-tab-DGzY_K3A.js} +1 -1
- package/dist/web/index.html +3 -3
- package/dist/web/sw.js +1 -1
- package/docs/design-guidelines.md +79 -0
- package/docs/project-roadmap.md +121 -397
- package/package.json +1 -1
- package/src/cli/commands/restart.ts +59 -10
- package/src/lib/account-crypto.ts +52 -1
- package/src/server/routes/accounts.ts +18 -9
- package/src/services/account.service.ts +46 -9
- package/src/web/components/chat/usage-badge.tsx +1 -1
- package/src/web/components/settings/accounts-settings-section.tsx +237 -165
- package/src/web/lib/api-settings.ts +4 -0
- package/dist/web/assets/chat-tab-RhAZhVvp.js +0 -7
- package/dist/web/assets/index-DVuyQcnI.css +0 -2
- package/dist/web/assets/index-bndwgasB.js +0 -28
- package/dist/web/assets/keybindings-store-C69-mCE5.js +0 -1
|
@@ -14,6 +14,85 @@
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## Mobile-First UI Rules (MANDATORY)
|
|
18
|
+
|
|
19
|
+
These rules MUST be followed when creating or modifying any UI component. PPM is primarily used on phones and tablets.
|
|
20
|
+
|
|
21
|
+
### 1. Dialogs → Bottom Sheet on Mobile
|
|
22
|
+
- **NEVER** use `<Dialog>` alone. All dialogs MUST render as bottom sheets on mobile (`md:` breakpoint).
|
|
23
|
+
- Desktop (`md:` and above): centered dialog is fine
|
|
24
|
+
- Mobile (below `md:`): full-width bottom sheet, slides up from bottom, max-height 85vh, rounded top corners
|
|
25
|
+
- Pattern: use `hidden md:block` for desktop dialog, `md:hidden` for mobile bottom sheet, or a responsive wrapper
|
|
26
|
+
|
|
27
|
+
### 2. No Hover States on Mobile
|
|
28
|
+
- **NEVER** rely on `hover:` for essential interactions or information disclosure
|
|
29
|
+
- Hover states are acceptable for desktop enhancement but must have a touch alternative
|
|
30
|
+
- Use `active:` or `pressed` states for touch feedback instead
|
|
31
|
+
- Action buttons hidden behind `hover:` MUST be always-visible on mobile (use `md:opacity-0 md:group-hover:opacity-100`)
|
|
32
|
+
|
|
33
|
+
### 3. Touch Targets
|
|
34
|
+
- Minimum touch target: **44×44px** (Apple HIG)
|
|
35
|
+
- Minimum spacing between interactive elements: **8px**
|
|
36
|
+
- Prefer `py-3 px-4` over `py-1 px-2` for buttons on mobile
|
|
37
|
+
- Icon-only buttons: minimum `size-10` (40px) with padding
|
|
38
|
+
|
|
39
|
+
### 4. Context Menus → Long-Press or Inline Actions
|
|
40
|
+
- **NEVER** use right-click context menus as the only way to access actions on mobile
|
|
41
|
+
- Use long-press (400ms) with `select-none` to prevent text selection
|
|
42
|
+
- Or show inline action buttons that are always visible on mobile
|
|
43
|
+
- Pattern: `useLongPress` hook for touch, `onContextMenu` for desktop
|
|
44
|
+
|
|
45
|
+
### 5. Scrolling & Overflow
|
|
46
|
+
- Lists MUST scroll independently, not the whole page
|
|
47
|
+
- Use `overflow-y-auto` on scroll containers, not on body
|
|
48
|
+
- Avoid horizontal scroll unless explicitly needed (tab bars)
|
|
49
|
+
- Test that touch scrolling doesn't accidentally trigger tap actions
|
|
50
|
+
|
|
51
|
+
### 6. Text & Spacing
|
|
52
|
+
- Body text: minimum `text-sm` (14px) on mobile, `text-xs` (12px) only for metadata/labels
|
|
53
|
+
- Line spacing: `leading-relaxed` for readability on small screens
|
|
54
|
+
- Padding: `p-4` minimum for content areas on mobile, `p-2` acceptable for compact lists
|
|
55
|
+
|
|
56
|
+
### 7. Layout Patterns
|
|
57
|
+
- Mobile: single-column layout, full-width components
|
|
58
|
+
- Desktop: multi-column, sidebars, split views
|
|
59
|
+
- Use `flex-col md:flex-row` for responsive layouts
|
|
60
|
+
- Sidebar content → drawer/bottom sheet on mobile
|
|
61
|
+
|
|
62
|
+
### 8. Forms
|
|
63
|
+
- Input fields: full width on mobile (`w-full`)
|
|
64
|
+
- Labels above inputs, not beside (saves horizontal space)
|
|
65
|
+
- Use native `<select>` or bottom sheet pickers on mobile, not custom dropdowns
|
|
66
|
+
- Auto-focus first input on dialog/sheet open
|
|
67
|
+
|
|
68
|
+
### 9. Thumb Zone — One-Handed Reachability
|
|
69
|
+
- Primary actions (submit, confirm, navigate) MUST be in the **bottom 1/3** of the screen on mobile
|
|
70
|
+
- Navigation bars → bottom, not top
|
|
71
|
+
- Destructive/secondary actions can be in upper areas (harder to reach = harder to accidentally tap)
|
|
72
|
+
- FABs (floating action buttons) → bottom-right corner
|
|
73
|
+
- Avoid placing frequently-used buttons in top corners — unreachable with one thumb
|
|
74
|
+
```
|
|
75
|
+
┌─────────────────────┐
|
|
76
|
+
│ ❌ Hard to reach │ ← Secondary/rare actions only
|
|
77
|
+
│ │
|
|
78
|
+
├─────────────────────┤
|
|
79
|
+
│ ⚠️ Stretch zone │ ← Content, read-only info
|
|
80
|
+
│ │
|
|
81
|
+
├─────────────────────┤
|
|
82
|
+
│ ✅ Thumb zone │ ← Primary actions, navigation,
|
|
83
|
+
│ Submit, confirm, │ inputs, frequently-used buttons
|
|
84
|
+
│ tab bar, FAB │
|
|
85
|
+
└─────────────────────┘
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 10. Existing Patterns to Follow
|
|
89
|
+
- `MobileDrawer` (`src/web/components/layout/mobile-drawer.tsx`) — slide-in drawer for sidebar
|
|
90
|
+
- `ProjectBottomSheet` (`src/web/components/layout/project-bottom-sheet.tsx`) — bottom sheet pattern
|
|
91
|
+
- `useLongPress` in `git-status-panel.tsx` — long-press for context menus
|
|
92
|
+
- `hidden md:block` / `md:hidden` — responsive show/hide pattern
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
17
96
|
## UI Framework Stack
|
|
18
97
|
|
|
19
98
|
### Tailwind CSS 4.2
|
package/docs/project-roadmap.md
CHANGED
|
@@ -1,455 +1,179 @@
|
|
|
1
|
-
# PPM Project Roadmap
|
|
1
|
+
# PPM Project Roadmap
|
|
2
2
|
|
|
3
|
-
**Last Updated:** March
|
|
3
|
+
**Last Updated:** March 22, 2026
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Vision
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Multi-project, project-scoped API refactor with improved UX, Monaco Editor, auto-title chat sessions.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Phase Breakdown
|
|
14
|
-
|
|
15
|
-
### Phase 1: Project Skeleton ✅ Complete
|
|
16
|
-
- Bun runtime setup, TypeScript configuration
|
|
17
|
-
- CLI with Commander.js
|
|
18
|
-
- Hono server basic structure
|
|
19
|
-
- React frontend with Vite
|
|
20
|
-
|
|
21
|
-
**Status:** Done (v1 foundation)
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
### Phase 2: Backend Core ✅ Complete
|
|
26
|
-
- Services: ProjectService, ConfigService, FileService, GitService
|
|
27
|
-
- YAML-based project registry
|
|
28
|
-
- Path traversal protection
|
|
29
|
-
- Auth middleware (token-based)
|
|
30
|
-
|
|
31
|
-
**Status:** Done, enhanced in v2
|
|
32
|
-
|
|
33
|
-
**Latest Work (260315):**
|
|
34
|
-
- Project-scoped API refactor: `/api/project/:name/*` routes
|
|
35
|
-
- ProviderRegistry singleton pattern
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
### Phase 3: Frontend Shell ✅ Complete
|
|
40
|
-
- React layout (Sidebar, TabBar, MainArea)
|
|
41
|
-
- Zustand stores (project, tab, file, settings)
|
|
42
|
-
- Theme switcher (dark/light/system)
|
|
43
|
-
- Mobile responsive navigation
|
|
44
|
-
|
|
45
|
-
**Status:** Done, improved in v2
|
|
46
|
-
|
|
47
|
-
**Latest Work (260315):**
|
|
48
|
-
- Mobile nav refactor, tab bar auto-scroll
|
|
49
|
-
- URL sync for project/tab/file state
|
|
50
|
-
- Tab metadata persistence in localStorage
|
|
51
|
-
|
|
52
|
-
**Latest Work (260317):**
|
|
53
|
-
- Project Switcher Bar: 52px left sidebar with project avatars, drag-to-reorder
|
|
54
|
-
- Project color customization (12-color palette or custom hex)
|
|
55
|
-
- Mobile ProjectBottomSheet for project selection
|
|
56
|
-
- Keep-alive workspace switching (hide/show instead of unmount, preserves xterm DOM)
|
|
57
|
-
- Sidebar tab system: Explorer / Git / History tabs (removed projects/git-status tab types)
|
|
58
|
-
- Smart project initials with collision detection (1-char, 2-char, or index fallback)
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
### Phase 4: File Explorer & Editor ✅ Complete
|
|
63
|
-
- FileTree component with directory expansion
|
|
64
|
-
- Monaco Editor integration with syntax highlighting and IntelliSense
|
|
65
|
-
- File read/write operations
|
|
66
|
-
- Monaco diff viewer for git diffs
|
|
67
|
-
|
|
68
|
-
**Status:** Done, CodeMirror fully removed (v0.5.17+)
|
|
69
|
-
|
|
70
|
-
**Latest Work (260317):**
|
|
71
|
-
- Migrated CodeMirror → Monaco Editor (@monaco-editor/react) for better syntax highlighting and diff viewer
|
|
72
|
-
- Alt+Z keyboard shortcut for word wrap toggle in editor and diff viewer
|
|
73
|
-
- Improved code completion and IntelliSense
|
|
74
|
-
|
|
75
|
-
**Latest Work (260319):**
|
|
76
|
-
- CodeMirror fully removed from codebase
|
|
77
|
-
- Monaco Editor polishing for large file performance
|
|
7
|
+
PPM is the **lightest path from phone to code** — a self-hosted, BYOK, multi-device web IDE with AI. No desktop app install needed. No subscription. Everything on your machine, accessible from any browser.
|
|
78
8
|
|
|
79
9
|
---
|
|
80
10
|
|
|
81
|
-
|
|
82
|
-
- xterm.js integration
|
|
83
|
-
- Bun native PTY (Bun.spawn with shell)
|
|
84
|
-
- Terminal I/O via WebSocket
|
|
85
|
-
- Resize handling (SIGWINCH)
|
|
86
|
-
|
|
87
|
-
**Status:** Done
|
|
88
|
-
|
|
89
|
-
**Latest Work:**
|
|
90
|
-
- Multiple terminal sessions per project
|
|
91
|
-
- Terminal session persistence in tabs
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### Phase 6: Git Integration ✅ Complete
|
|
96
|
-
- GitService with simple-git
|
|
97
|
-
- Status view (staged, unstaged, untracked)
|
|
98
|
-
- Diff viewer (file-level and project-level)
|
|
99
|
-
- Commit graph (Mermaid-based visualization)
|
|
100
|
-
|
|
101
|
-
**Status:** Done
|
|
102
|
-
|
|
103
|
-
**Latest Work (260315):**
|
|
104
|
-
- Git staging UI improvements
|
|
105
|
-
- Commit graph performance optimization
|
|
106
|
-
- Branch list, PR URL detection
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
### Phase 7: AI Chat ✅ Complete
|
|
111
|
-
- Claude Agent SDK integration
|
|
112
|
-
- Message streaming (async generators)
|
|
113
|
-
- Tool use (file_read, file_write, git commands)
|
|
114
|
-
- Tool approval flow
|
|
115
|
-
|
|
116
|
-
**Status:** Done
|
|
117
|
-
|
|
118
|
-
**Latest Work (260315):**
|
|
119
|
-
- File attachments in chat
|
|
120
|
-
- Slash command detection (/help, /git, /file)
|
|
121
|
-
- Usage badge (token tracking)
|
|
122
|
-
- Session management (save/load)
|
|
123
|
-
|
|
124
|
-
**Latest Work (260319):**
|
|
125
|
-
- Auto-generate session title from SDK summary on first message
|
|
126
|
-
- Inline session rename in chat UI
|
|
127
|
-
- Session history tab persistence
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
### Phase 8: CLI Commands ✅ Complete
|
|
132
|
-
- `ppm start` — Start server (foreground/daemon)
|
|
133
|
-
- `ppm stop` — Graceful shutdown
|
|
134
|
-
- `ppm open` — Launch browser
|
|
135
|
-
- `ppm init` — Initialize config
|
|
136
|
-
- `ppm projects {add,remove,list}` — Project management
|
|
137
|
-
- `ppm config {get,set}` — Configuration
|
|
138
|
-
- `ppm git {status,commit,branch}` — Git operations
|
|
139
|
-
- `ppm chat {send,sessions,delete}` — Chat CLI
|
|
140
|
-
|
|
141
|
-
**Status:** Done
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
### Phase 9: Database Management ✅ Complete (260319)
|
|
146
|
-
|
|
147
|
-
**Features:**
|
|
148
|
-
- Unified database viewer for SQLite & PostgreSQL
|
|
149
|
-
- DatabaseAdapter extensible pattern
|
|
150
|
-
- Connection CRUD (create, edit, delete, color-code)
|
|
151
|
-
- Query execution with readonly safety
|
|
152
|
-
- Table browser with pagination & schema inspection
|
|
153
|
-
- CLI support (ppm db commands)
|
|
154
|
-
- Credentials stored securely in SQLite (never exposed in API)
|
|
155
|
-
- readonly=true by default (safe-by-default)
|
|
156
|
-
|
|
157
|
-
**Latest Work (260319):**
|
|
158
|
-
- SQLiteAdapter & PostgresAdapter implementations
|
|
159
|
-
- /api/db routes with connection sanitization
|
|
160
|
-
- Database sidebar UI with connection form, color picker
|
|
161
|
-
- TableCacheService for metadata caching & search
|
|
162
|
-
- isReadOnlyQuery() CTE-safe safety checks
|
|
163
|
-
- CLI db-cmd for database management
|
|
11
|
+
## Completed Milestones
|
|
164
12
|
|
|
165
|
-
|
|
13
|
+
### v0.1–v0.5 — Foundation (Released)
|
|
14
|
+
- Bun runtime, Hono server, React + Vite frontend
|
|
15
|
+
- File explorer, Monaco editor, xterm.js terminal
|
|
16
|
+
- AI chat (Claude Agent SDK), git integration, PWA
|
|
17
|
+
- Multi-project, project-scoped API, CLI commands
|
|
18
|
+
- Database management (SQLite/PostgreSQL)
|
|
166
19
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
- Service worker (vite-plugin-pwa)
|
|
172
|
-
- Offline support (cached assets)
|
|
173
|
-
- Manifest.json (installable)
|
|
174
|
-
- Binary compilation (`bun build --compile`)
|
|
20
|
+
### v0.6 — Polish (Released)
|
|
21
|
+
- Project Switcher Bar, keep-alive workspace switching
|
|
22
|
+
- Auto-generate chat session titles, inline rename
|
|
23
|
+
- Database adapters, connection UI, query execution
|
|
175
24
|
|
|
176
|
-
|
|
25
|
+
### v0.7 — Multi-Account & Mobile (Current — v0.7.25)
|
|
26
|
+
- Multi-account credential management (OAuth + API key)
|
|
27
|
+
- Account routing (round-robin, fill-first)
|
|
28
|
+
- Usage tracking per account with visual dashboard
|
|
29
|
+
- Account import/export with encryption + clipboard fallback
|
|
30
|
+
- Mobile UX: horizontal tab scroll, long-press context menus, touch optimization
|
|
31
|
+
- Cloudflare tunnel, push notifications, Telegram alerts
|
|
177
32
|
|
|
178
33
|
---
|
|
179
34
|
|
|
180
|
-
|
|
35
|
+
## Upcoming Roadmap
|
|
181
36
|
|
|
182
|
-
|
|
183
|
-
- [x] Mock provider tests
|
|
184
|
-
- [x] ChatService tests
|
|
185
|
-
- [x] ConfigService tests
|
|
186
|
-
- [x] DbService tests (SQLite)
|
|
187
|
-
- [ ] FileService tests
|
|
188
|
-
- [ ] GitService tests
|
|
189
|
-
- [x] Zustand store tests
|
|
190
|
-
- [x] SessionLogService tests (redaction)
|
|
37
|
+
### v0.8.0 — "Always On" (Q2 2026)
|
|
191
38
|
|
|
192
|
-
|
|
193
|
-
- [x] Claude Agent SDK integration
|
|
194
|
-
- [x] Chat WebSocket flow
|
|
195
|
-
- [x] SQLite migration validation
|
|
196
|
-
- [ ] Terminal WebSocket flow
|
|
197
|
-
- [ ] Git operations
|
|
198
|
-
- [ ] File operations
|
|
39
|
+
**Theme:** Multi-device access + AI chat improvements. Solve the "I can't reach my PPM from my phone" problem.
|
|
199
40
|
|
|
200
|
-
|
|
41
|
+
| Feature | Priority | Description |
|
|
42
|
+
|---------|----------|-------------|
|
|
43
|
+
| **PPM Cloud** | Critical | Separate cloud service for device registry + tunnel URL sync. Google OAuth login. CLI `ppm cloud link` syncs tunnel URL. Open cloud dashboard on any device → see machines → tap to connect. NO code/data through cloud — only URLs + metadata. |
|
|
44
|
+
| **Auto-start** | High | PPM starts on boot. macOS launchd, Linux systemd, Windows Task Scheduler. CLI: `ppm autostart enable/disable`. Required for "always accessible" story. |
|
|
45
|
+
| **AI Chat enhancements** | High | Tool allow/deny config per session. Chat modes (plan/code/ask). Model selector (opus/sonnet/haiku). Effort level. Max turns. System prompt customization. Better streaming UX (collapsible tool calls). |
|
|
201
46
|
|
|
202
|
-
**
|
|
47
|
+
**PPM Cloud — scope guard:**
|
|
48
|
+
- Cloud is OPTIONAL convenience, never a dependency. PPM works 100% without it.
|
|
49
|
+
- Razor-thin: device registry + tunnel URL sync + heartbeat. Nothing more.
|
|
50
|
+
- Hosting: Cloudflare Workers or Fly.io
|
|
51
|
+
- CLI: `ppm cloud link`, `ppm cloud unlink`, `ppm cloud status`
|
|
52
|
+
- Dashboard: list machines, status (online/offline), click to open
|
|
203
53
|
|
|
204
54
|
---
|
|
205
55
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
### Critical (Blocking)
|
|
209
|
-
1. **Terminal on Windows** — Node-pty complexity; Bun PTY may not work
|
|
210
|
-
- Mitigation: Document Linux/macOS support, add Windows detection
|
|
211
|
-
- Fix: Evaluate node-pty or WSL fallback
|
|
212
|
-
|
|
213
|
-
2. **Chat streaming cancellation** — Cancel button partially working
|
|
214
|
-
- Issue: Async generator hard to interrupt mid-stream
|
|
215
|
-
- Fix: Implement CancellationToken pattern
|
|
216
|
-
|
|
217
|
-
### High Priority (Should Fix)
|
|
218
|
-
3. **File path encoding** — Unicode filenames may break
|
|
219
|
-
- Fix: Validate UTF-8, handle encoding edge cases
|
|
220
|
-
|
|
221
|
-
4. **Large file handling** — No streaming for large files (>10MB)
|
|
222
|
-
- Fix: Chunk file reads, show progress bar
|
|
56
|
+
### v0.9.0 — "Open Platform" (Q2–Q3 2026)
|
|
223
57
|
|
|
224
|
-
|
|
225
|
-
- Fix: Limit graph depth, add pagination
|
|
58
|
+
**Theme:** Multi-provider AI + extension system. Expand user base beyond Claude-only developers.
|
|
226
59
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
60
|
+
| Feature | Priority | Description |
|
|
61
|
+
|---------|----------|-------------|
|
|
62
|
+
| **Multi-provider AI** | Critical | Refactor `ProviderInterface` for clean provider abstraction. Tiered support: Tier 1 (full agentic) = Claude Agent SDK; Tier 2 (chat + tools) = Gemini CLI, OpenAI Codex; Tier 3 (chat-only) = any OpenAI-compatible API. Clean base code for future Chinese providers (DeepSeek, Qwen). |
|
|
63
|
+
| **Extension architecture** | High | Dynamic extension loading system. Extensions = npm packages exporting skills + optional UI panels. First extension: extract DB viewer from core. Extension API: register routes, UI panels, sidebar tabs, skills. Config: `"extensions": ["@ppm/ext-database", "@ppm/ext-docker"]`. |
|
|
64
|
+
| **MCP Management** | Medium | UI to add/remove/configure MCP servers. Test connection. Per-project MCP overrides. Store in SQLite. Pass to Agent SDK via `mcpServers`. |
|
|
230
65
|
|
|
231
|
-
|
|
232
|
-
|
|
66
|
+
**Multi-provider — tiered approach:**
|
|
67
|
+
- Tier 1 (full agentic): Claude Agent SDK — file edit, terminal, git, full autonomy
|
|
68
|
+
- Tier 2 (chat + tools): Provider-specific CLIs (Gemini CLI, Codex) — agentic via their own tool system
|
|
69
|
+
- Tier 3 (chat-only): Any OpenAI-compatible API — conversation only, no tools
|
|
70
|
+
- Provider interface refactor is foundation work — do it clean now, avoid painful refactor later
|
|
233
71
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
10. **Mobile terminal** — Terminal hard to use on small screens
|
|
241
|
-
- Fix: Optimize touch input, add virtual keyboard
|
|
72
|
+
**Extension architecture — design principles:**
|
|
73
|
+
- Extensions are npm packages: `ppm ext install @ppm/ext-database`
|
|
74
|
+
- Extension manifest defines: skills, UI panels, sidebar tabs, routes, settings schema
|
|
75
|
+
- DB viewer = first official extension, proves the architecture
|
|
76
|
+
- Keep PPM core lightweight, features are opt-in via extensions
|
|
77
|
+
- No marketplace yet (just npm), marketplace comes in v1.0
|
|
242
78
|
|
|
243
79
|
---
|
|
244
80
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
- [x] Project-scoped API refactor
|
|
248
|
-
- [x] Per-project chat sessions
|
|
249
|
-
- [x] Per-project git operations
|
|
250
|
-
- [x] Multi-tab UI with state persistence
|
|
251
|
-
- [x] File attachments in chat
|
|
252
|
-
- [x] Mobile responsive improvements
|
|
253
|
-
- [x] URL sync for bookmarking/sharing
|
|
254
|
-
- [x] Project Switcher Bar (52px sidebar, avatars, colors, reordering) (260317)
|
|
255
|
-
- [x] Keep-alive workspace switching (preserve xterm DOM) (260317)
|
|
256
|
-
- [x] Sidebar tab system (Explorer/Git/History/Database tabs) (260317, 260319)
|
|
257
|
-
- [x] Monaco Editor migration (CodeMirror → Monaco, fully removed) (260317-260319)
|
|
258
|
-
- [x] Project color customization (12-color palette + custom hex) (260317)
|
|
259
|
-
- [x] Auto-generate chat session titles from SDK summary (260319)
|
|
260
|
-
- [x] Inline session rename UI (260319)
|
|
261
|
-
- [x] Database Management (SQLite/PostgreSQL, adapters, UI, CLI) (260319)
|
|
262
|
-
- [x] SQLite migration (db.service.ts, backward YAML compat, connection tables v3) (260319)
|
|
263
|
-
- [ ] Complete test coverage (65% complete)
|
|
264
|
-
- [x] Documentation updates (260319)
|
|
265
|
-
- [ ] Security audit (planned)
|
|
266
|
-
|
|
267
|
-
**Release Status:** v0.6.3 released, v2.0 + database management complete
|
|
268
|
-
|
|
269
|
-
---
|
|
81
|
+
### v0.10.0 — "Intelligence" (Q3 2026)
|
|
270
82
|
|
|
271
|
-
|
|
83
|
+
**Theme:** PPM's own AI layer. Built-in bot + programmable skills.
|
|
272
84
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
-
|
|
277
|
-
|
|
85
|
+
| Feature | Priority | Description |
|
|
86
|
+
|---------|----------|-------------|
|
|
87
|
+
| **PPM Skills API** | High | Stable internal API for AI to control PPM: file.read/write/search, terminal.run, git.status/commit/diff, db.query, editor.open/goto, project.switch. Skills are the bridge between AI and PPM features. |
|
|
88
|
+
| **Built-in Clawbot** | High | Lightweight AI agent built into PPM using Anthropic Messages API (not Agent SDK). Uses Skills API + MCP tools. Instant response, no external CLI deps. For quick tasks: file search, code explanation, simple refactors. |
|
|
89
|
+
| **Inline SQL** | Medium | Select text in Monaco → run as SQL. Connection picker in editor context menu. Results panel below editor. Leverages existing DB service. |
|
|
278
90
|
|
|
279
|
-
**
|
|
280
|
-
|
|
91
|
+
**Built-in Clawbot — why it matters:**
|
|
92
|
+
- Claude Agent SDK spawns subprocess — heavy, slow startup, requires CLI installed
|
|
93
|
+
- Clawbot = instant, lightweight, works with any LLM via Messages API
|
|
94
|
+
- Users can use Clawbot to create extensions → zero-friction extension authoring
|
|
95
|
+
- Foundation for "AI creates extensions on demand" vision
|
|
281
96
|
|
|
282
97
|
---
|
|
283
98
|
|
|
284
|
-
###
|
|
285
|
-
- Allow users to define custom AI tools (shell scripts, HTTP endpoints)
|
|
286
|
-
- Tool UI generator based on JSON schema
|
|
287
|
-
- Rate limiting and sandboxing
|
|
288
|
-
|
|
289
|
-
**Estimated Effort:** 2 weeks
|
|
290
|
-
**Dependencies:** JSON Schema library
|
|
99
|
+
### v1.0.0 — "Production Ready" (Q4 2026)
|
|
291
100
|
|
|
292
|
-
|
|
101
|
+
**Theme:** Enterprise, marketplace, stability.
|
|
293
102
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
**Estimated Effort:** 2 weeks
|
|
300
|
-
**Dependencies:** Plugin loader (Rollup, Module Federation)
|
|
103
|
+
| Feature | Priority | Description |
|
|
104
|
+
|---------|----------|-------------|
|
|
105
|
+
| **Self-hosted PPM Cloud** | High | Docker image of PPM Cloud for enterprise/team. Same codebase, self-hosted config flag. `docker-compose up` and it works. LDAP/SSO integration. |
|
|
106
|
+
| **PPM Marketplace** | High | Publish/install/update extensions. Browse community extensions. Revenue sharing for paid extensions. Clawbot can create extension → test → publish in minutes. |
|
|
107
|
+
| **Stability & hardening** | Critical | Security audit, performance optimization, comprehensive test coverage (>80%), documentation for contributors, CI/CD pipeline. |
|
|
301
108
|
|
|
302
109
|
---
|
|
303
110
|
|
|
304
|
-
|
|
305
|
-
- Flamegraph viewer for CPU profiling
|
|
306
|
-
- Memory allocation tracking
|
|
307
|
-
- Network waterfall visualization
|
|
308
|
-
|
|
309
|
-
**Estimated Effort:** 1 week
|
|
310
|
-
**Dependencies:** Profiling library (speedscope, Clinic.js)
|
|
311
|
-
|
|
312
|
-
---
|
|
111
|
+
## Post-v1.0 — Feature Backlog (To Be Prioritized)
|
|
313
112
|
|
|
314
|
-
|
|
315
|
-
- Interactive rebase UI
|
|
316
|
-
- Cherry-pick/squash support
|
|
317
|
-
- Stash management
|
|
318
|
-
- Rebase conflict resolution
|
|
319
|
-
- Submodule support
|
|
113
|
+
Features to pick from after v1.0. Will be reviewed and scheduled based on user feedback and strategic priorities.
|
|
320
114
|
|
|
321
|
-
|
|
322
|
-
|
|
115
|
+
| Feature | Category | Description |
|
|
116
|
+
|---------|----------|-------------|
|
|
117
|
+
| **Collaborative viewing** | Social | Read-only live session sharing via tunnel. Others watch terminal/editor real-time. High demo value. |
|
|
118
|
+
| **Workspace snapshots** | UX | Save/restore full state (open files, terminals, chat). Critical for mobile where browser kills tabs. |
|
|
119
|
+
| **Ollama / local models** | AI | Run AI offline with local models. No API cost, privacy-first. Plugs into Clawbot as a provider. |
|
|
120
|
+
| **Project templates** | DX | `ppm init --template react/nest/go`. Community templates from Marketplace. |
|
|
121
|
+
| **AI command palette** | AI | Natural language commands ("deploy production", "run tests") → Skills API. |
|
|
122
|
+
| **Notification hub** | UX | Push notification "AI task finished" on mobile. Webhook integrations (Slack, Discord). |
|
|
123
|
+
| **Layout customization** | UX | User arranges panels freely. Save separate desktop vs mobile layouts. |
|
|
124
|
+
| **Git advanced** | Git | Interactive rebase UI, cherry-pick, stash management, conflict resolution. |
|
|
125
|
+
| **Performance profiling** | DevTools | Flamegraph viewer, memory tracking, network waterfall. |
|
|
126
|
+
| **Multi-user workspace** | Enterprise | Shared project access, role-based permissions, team features. |
|
|
127
|
+
| **Mobile terminal UX** | Mobile | Virtual keyboard shortcuts, gesture controls, better touch input. |
|
|
128
|
+
| **CI/CD integration** | DevOps | GitHub Actions / pipeline status in PPM, trigger builds from UI. |
|
|
129
|
+
| **Cross-platform binaries** | Distribution | Compile macOS/Linux/Windows binaries via `bun build --compile`. `npx ppm` without Bun. |
|
|
130
|
+
| **OLED dark mode** | UX | True black background for OLED screens. |
|
|
131
|
+
| **Collaborative editing** | Social | Real-time multi-user file editing with CRDT (yjs/automerge). |
|
|
323
132
|
|
|
324
133
|
---
|
|
325
134
|
|
|
326
|
-
|
|
327
|
-
- Compile platform-specific binaries via `bun build --compile` (macOS, Linux, Windows)
|
|
328
|
-
- Publish npm package with wrapper script that auto-detects platform and downloads correct binary
|
|
329
|
-
- Enables `npx ppm init` without requiring Bun on the target machine
|
|
330
|
-
- CI/CD pipeline for automated multi-platform builds on release
|
|
135
|
+
## Release Schedule
|
|
331
136
|
|
|
332
|
-
|
|
333
|
-
|
|
137
|
+
| Version | Theme | Key Features | Target |
|
|
138
|
+
|---------|-------|-------------|--------|
|
|
139
|
+
| **v0.7** | Multi-Account & Mobile | Account management, usage tracking, mobile UX | ✅ Current |
|
|
140
|
+
| **v0.8** | Always On | PPM Cloud, auto-start, AI chat enhancements | Q2 2026 |
|
|
141
|
+
| **v0.9** | Open Platform | Multi-provider AI, extension architecture, MCP | Q2–Q3 2026 |
|
|
142
|
+
| **v0.10** | Intelligence | Skills API, built-in Clawbot, inline SQL | Q3 2026 |
|
|
143
|
+
| **v1.0** | Production Ready | Self-hosted Cloud, Marketplace, stability | Q4 2026 |
|
|
334
144
|
|
|
335
145
|
---
|
|
336
146
|
|
|
337
|
-
|
|
338
|
-
- Optional cloud backup of chat sessions
|
|
339
|
-
- Cross-device session sync
|
|
340
|
-
- Settings synchronization
|
|
147
|
+
## Strategic Principles
|
|
341
148
|
|
|
342
|
-
**
|
|
343
|
-
**
|
|
344
|
-
**
|
|
149
|
+
1. **Own "phone to code"** — PPM wins on multi-device access. Don't chase Cursor/Windsurf feature parity.
|
|
150
|
+
2. **PPM Cloud stays razor-thin** — Device registry + tunnel URLs only. No code storage. No cloud execution.
|
|
151
|
+
3. **Multi-provider is tiered** — Full agentic = Claude SDK. Other providers get appropriate tier. Clean interface for future providers.
|
|
152
|
+
4. **Extensions keep core lightweight** — Features are opt-in. DB viewer, future tools = extensions. Core stays fast.
|
|
153
|
+
5. **Clawbot enables the ecosystem** — Users create extensions with AI, publish to Marketplace. Zero-friction.
|
|
154
|
+
6. **Self-hosted first, always** — Cloud is optional convenience. PPM works 100% offline/local.
|
|
345
155
|
|
|
346
156
|
---
|
|
347
157
|
|
|
348
158
|
## Technical Debt
|
|
349
159
|
|
|
350
|
-
| Item | Priority |
|
|
351
|
-
|
|
352
|
-
|
|
|
353
|
-
|
|
|
354
|
-
|
|
|
355
|
-
|
|
|
356
|
-
|
|
|
357
|
-
| Remove unused provider fallbacks | Low | 0.5d | Clean up mock/claude-cli code |
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## Testing Coverage Targets
|
|
362
|
-
|
|
363
|
-
| Area | Current | Target v2 | Target v3 |
|
|
364
|
-
|------|---------|-----------|-----------|
|
|
365
|
-
| **Services** | 60% | 90% | 95% |
|
|
366
|
-
| **Routes** | 40% | 80% | 95% |
|
|
367
|
-
| **Hooks** | 30% | 70% | 90% |
|
|
368
|
-
| **Components** | 10% | 50% | 80% |
|
|
369
|
-
| **Overall** | 35% | 75% | 90% |
|
|
370
|
-
|
|
371
|
-
---
|
|
372
|
-
|
|
373
|
-
## Community & Contribution Roadmap
|
|
374
|
-
|
|
375
|
-
### v2 (Current)
|
|
376
|
-
- [ ] GitHub issue templates
|
|
377
|
-
- [ ] Contribution guidelines (CONTRIBUTING.md)
|
|
378
|
-
- [ ] Developer setup guide
|
|
379
|
-
- [ ] Automated CI/CD (GitHub Actions)
|
|
380
|
-
|
|
381
|
-
### v3
|
|
382
|
-
- [ ] Plugin development guide
|
|
383
|
-
- [ ] API documentation (OpenAPI/Swagger)
|
|
384
|
-
- [ ] Example plugins repository
|
|
385
|
-
- [ ] Community provider registry
|
|
386
|
-
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
## Release Schedule (Target Dates)
|
|
390
|
-
|
|
391
|
-
| Version | Status | Features | Target Date |
|
|
392
|
-
|---------|--------|----------|-------------|
|
|
393
|
-
| **v1.0** | Released | Single project, basic chat, terminal | Feb 28, 2025 |
|
|
394
|
-
| **v2.0** | Complete (v0.6.3) | Multi-project, project-scoped API, improved UX, Monaco Editor, auto-title, database management | Mar 19, 2026 |
|
|
395
|
-
| **v2.1** | Planned | Complete test coverage, SQLite finalization, bug fixes | Apr 15, 2026 |
|
|
396
|
-
| **v3.0** | Planned | Collaborative editing, custom tools, plugins | Jun 30, 2026 |
|
|
397
|
-
| **v4.0** | Planned | Cloud sync, advanced git, profiling UI | Sep 30, 2026 |
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## Success Metrics
|
|
402
|
-
|
|
403
|
-
### Adoption (By v2 Release)
|
|
404
|
-
- 10+ active users (internal + early adopters)
|
|
405
|
-
- 100+ GitHub stars
|
|
406
|
-
- 50+ questions/issues on GitHub
|
|
407
|
-
|
|
408
|
-
### Performance
|
|
409
|
-
- Server startup: <500ms
|
|
410
|
-
- API response: <200ms (50th percentile)
|
|
411
|
-
- WebSocket latency: <50ms
|
|
412
|
-
- Frontend bundle: <800KB gzipped
|
|
413
|
-
|
|
414
|
-
### Quality
|
|
415
|
-
- Test coverage: >75%
|
|
416
|
-
- Security vulnerabilities: 0
|
|
417
|
-
- Critical bugs in v2: <3
|
|
418
|
-
|
|
419
|
-
### Developer Experience
|
|
420
|
-
- Time to first commit: <30 minutes
|
|
421
|
-
- Documentation completeness: 90%
|
|
422
|
-
- Contribution acceptance rate: >80%
|
|
160
|
+
| Item | Priority | Notes |
|
|
161
|
+
|------|----------|-------|
|
|
162
|
+
| Refactor ProviderInterface for multi-provider | High | Foundation for v0.9 |
|
|
163
|
+
| Simplify ChatService streaming | Medium | Reduce async generator complexity |
|
|
164
|
+
| Extract WebSocket common logic | Low | DRY for chat/terminal WS |
|
|
165
|
+
| Round-robin cursor bug in AccountSelector | Medium | Positional cursor not advancing correctly |
|
|
166
|
+
| Windows terminal support | Medium | Evaluate node-pty or WSL fallback |
|
|
423
167
|
|
|
424
168
|
---
|
|
425
169
|
|
|
426
170
|
## Dependencies to Monitor
|
|
427
171
|
|
|
428
|
-
| Dependency | Version | Risk |
|
|
429
|
-
|
|
172
|
+
| Dependency | Version | Risk | Notes |
|
|
173
|
+
|-----------|---------|------|-------|
|
|
430
174
|
| Bun | 1.3.6+ | Medium | Check security advisories weekly |
|
|
431
|
-
| Claude Agent SDK | 0.2.76+ |
|
|
432
|
-
| React | 19.2.4 | Low | Monitor
|
|
433
|
-
| TypeScript | 5.9.3+ | Low |
|
|
434
|
-
| xterm.js | 6.0 | Low |
|
|
435
|
-
| Monaco Editor | 4.7.0+ | Low |
|
|
436
|
-
|
|
437
|
-
---
|
|
438
|
-
|
|
439
|
-
## Q&A
|
|
440
|
-
|
|
441
|
-
**Q: Why no cloud sync in v2?**
|
|
442
|
-
A: Complexity & scope. Single-machine focus allows faster iteration. Cloud features are v4+ when user base justifies.
|
|
443
|
-
|
|
444
|
-
**Q: When will Windows be fully supported?**
|
|
445
|
-
A: Investigating Bun PTY behavior. Windows support likely in v3 pending testing.
|
|
446
|
-
|
|
447
|
-
**Q: Can I self-host on a server?**
|
|
448
|
-
A: Yes, but no user isolation. Each user would need their own instance. Multi-user hosting planned for v4.
|
|
449
|
-
|
|
450
|
-
**Q: Will there be mobile apps (iOS/Android)?**
|
|
451
|
-
A: Web PWA first (installed on home screen). Native apps only if there's strong demand.
|
|
452
|
-
|
|
453
|
-
**Q: How do I contribute?**
|
|
454
|
-
A: v2 first focuses on internal stability. Contribution guidelines coming in v2.1. For now, open issues for bugs/features.
|
|
455
|
-
|
|
175
|
+
| Claude Agent SDK | 0.2.76+ | Medium | Follow for API changes, new features |
|
|
176
|
+
| React | 19.2.4 | Low | Monitor breaking changes |
|
|
177
|
+
| TypeScript | 5.9.3+ | Low | Quarterly upgrades |
|
|
178
|
+
| xterm.js | 6.0 | Low | Terminal rendering bugs |
|
|
179
|
+
| Monaco Editor | 4.7.0+ | Low | Accessibility improvements |
|