@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.
Files changed (32) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CLAUDE.md +18 -0
  3. package/dist/web/assets/chat-tab-B0UcLXFA.js +7 -0
  4. package/dist/web/assets/{code-editor-Gf5j24XD.js → code-editor-Bb-RxKRW.js} +1 -1
  5. package/dist/web/assets/{database-viewer-CavLUDcg.js → database-viewer-B4pr_bwC.js} +1 -1
  6. package/dist/web/assets/{diff-viewer-DCtD7LAK.js → diff-viewer-DuHuqbG4.js} +1 -1
  7. package/dist/web/assets/{git-graph-ihMFS2VR.js → git-graph-BkTGWVMA.js} +1 -1
  8. package/dist/web/assets/index-BCibi3mV.css +2 -0
  9. package/dist/web/assets/index-BWVej31S.js +28 -0
  10. package/dist/web/assets/keybindings-store-DoOYThSa.js +1 -0
  11. package/dist/web/assets/{markdown-renderer-BQoBZBCF.js → markdown-renderer-CyObkWZ-.js} +1 -1
  12. package/dist/web/assets/{postgres-viewer-SV4HmMM_.js → postgres-viewer-CHVUVt7c.js} +1 -1
  13. package/dist/web/assets/{settings-tab-omvX466u.js → settings-tab-C1Uj7t80.js} +1 -1
  14. package/dist/web/assets/{sqlite-viewer-CZz6cYBU.js → sqlite-viewer-D1ohxjF9.js} +1 -1
  15. package/dist/web/assets/{switch-PAf5UhcN.js → switch-UODDpwuO.js} +1 -1
  16. package/dist/web/assets/{terminal-tab-C-fMaKoC.js → terminal-tab-DGzY_K3A.js} +1 -1
  17. package/dist/web/index.html +3 -3
  18. package/dist/web/sw.js +1 -1
  19. package/docs/design-guidelines.md +79 -0
  20. package/docs/project-roadmap.md +121 -397
  21. package/package.json +1 -1
  22. package/src/cli/commands/restart.ts +59 -10
  23. package/src/lib/account-crypto.ts +52 -1
  24. package/src/server/routes/accounts.ts +18 -9
  25. package/src/services/account.service.ts +46 -9
  26. package/src/web/components/chat/usage-badge.tsx +1 -1
  27. package/src/web/components/settings/accounts-settings-section.tsx +237 -165
  28. package/src/web/lib/api-settings.ts +4 -0
  29. package/dist/web/assets/chat-tab-RhAZhVvp.js +0 -7
  30. package/dist/web/assets/index-DVuyQcnI.css +0 -2
  31. package/dist/web/assets/index-bndwgasB.js +0 -28
  32. 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
@@ -1,455 +1,179 @@
1
- # PPM Project Roadmap & Status
1
+ # PPM Project Roadmap
2
2
 
3
- **Last Updated:** March 19, 2026
3
+ **Last Updated:** March 22, 2026
4
4
 
5
- ## Current Version: v2.0 (Complete v0.5.21)
5
+ ## Vision
6
6
 
7
- ### Overall Progress: 95%
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
- ### Phase 5: Web Terminal ✅ Complete
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
- **Status:** Complete, fully integrated with v0.6.3
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
- ### Phase 10: PWA & Build ✅ Complete
170
- - Vite build configuration
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
- **Status:** Done
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
- ### Phase 11: Testing ✅ In Progress (65%)
35
+ ## Upcoming Roadmap
181
36
 
182
- #### Unit Tests (50% complete)
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
- #### Integration Tests (40% complete)
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
- #### E2E Tests (0% Planned for v3)
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
- **Status:** Making progress, good coverage for core services
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
- ## Known Issues & Gaps (v2)
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
- 5. **Git performance** `git log --graph` slow on large repos
225
- - Fix: Limit graph depth, add pagination
58
+ **Theme:** Multi-provider AI + extension system. Expand user base beyond Claude-only developers.
226
59
 
227
- ### Medium Priority (Nice to Have)
228
- 6. **Dark mode OLED** — No true black background
229
- - Fix: Add separate OLED mode in settings
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
- 7. **Keyboard shortcuts** Limited shortcuts defined
232
- - Fix: Add Cmd+K, Cmd+P (file search), Cmd+/ (comment)
66
+ **Multi-providertiered 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
- 8. **Session persistence**Chat history lost on server restart
235
- - Fix: Persist sessions to filesystem or localStorage with IndexedDB
236
-
237
- 9. **Collaborative editing** No multi-user support
238
- - Status: Planned for v3
239
-
240
- 10. **Mobile terminal** — Terminal hard to use on small screens
241
- - Fix: Optimize touch input, add virtual keyboard
72
+ **Extension architecturedesign 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
- ## v2.0 Checklist
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
- ## Upcoming Features (v3.0)
83
+ **Theme:** PPM's own AI layer. Built-in bot + programmable skills.
272
84
 
273
- ### Collaborative Editing (High Priority)
274
- - Real-time multi-user file editing
275
- - Cursor synchronization via WebSocket
276
- - Conflict resolution (OT or CRDT)
277
- - User presence indicators
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
- **Estimated Effort:** 3 weeks
280
- **Dependencies:** CRDT library (yjs or automerge)
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
- ### Custom Tool Registry
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
- ### Plugin Architecture
295
- - Load custom providers from npm or local plugins
296
- - Provider discovery and versioning
297
- - Hot-reload support
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
- ### Performance Profiling UI
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
- ### Advanced Git Features
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
- **Estimated Effort:** 2 weeks
322
- **Dependencies:** Existing simple-git wrapper
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
- ### Cross-Platform Distribution (Planned)
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
- **Estimated Effort:** 1 week
333
- **Dependencies:** CI/CD (GitHub Actions), npm publish pipeline
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
- ### Cloud Sync (Future)
338
- - Optional cloud backup of chat sessions
339
- - Cross-device session sync
340
- - Settings synchronization
147
+ ## Strategic Principles
341
148
 
342
- **Estimated Effort:** 3 weeks
343
- **Dependencies:** Cloud storage API (AWS S3, Dropbox)
344
- **Note:** Single-machine only in v2; this would be v4+
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 | Effort | Notes |
351
- |------|----------|--------|-------|
352
- | Simplify ChatService streaming | Medium | 1d | Reduce async generator complexity |
353
- | Extract WebSocket common logic | Low | 1d | DRY principle for chat/terminal WS |
354
- | Improve error messages | Medium | 2d | More actionable error text |
355
- | Add request logging | Low | 0.5d | Debugging aid |
356
- | Refactor FileService validation | Low | 1d | Centralize path checks |
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 | Monitoring |
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+ | Low | Follow Anthropic releases for model updates |
432
- | React | 19.2.4 | Low | Monitor for breaking changes |
433
- | TypeScript | 5.9.3+ | Low | Plan upgrades quarterly |
434
- | xterm.js | 6.0 | Low | Check for terminal rendering bugs |
435
- | Monaco Editor | 4.7.0+ | Low | Monitor for accessibility improvements |
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 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.7.26",
3
+ "version": "0.7.28",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "MIT",