@hienlh/ppm 0.13.4 → 0.13.6

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 (35) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/http-api.md +1 -1
  4. package/dist/web/assets/{audio-preview-BSAe2WQB.js → audio-preview-DEJiSXcO.js} +1 -1
  5. package/dist/web/assets/{chat-tab-UFEFOnpl.js → chat-tab-DQBl8oq4.js} +7 -7
  6. package/dist/web/assets/{code-editor-BJ1tSNWA.js → code-editor-JxVGEgWY.js} +2 -2
  7. package/dist/web/assets/{conflict-editor-CrgrMZ2F.js → conflict-editor-BZ4mdQJX.js} +1 -1
  8. package/dist/web/assets/{database-viewer-e_NAkIL_.js → database-viewer-CBfw4hkk.js} +1 -1
  9. package/dist/web/assets/{diff-viewer-C2eOczTs.js → diff-viewer-4hobWs-B.js} +1 -1
  10. package/dist/web/assets/{extension-webview-B95nOfj-.js → extension-webview-DEOG3sef.js} +1 -1
  11. package/dist/web/assets/{image-preview-DAuPOzYl.js → image-preview-YNpn3xj7.js} +1 -1
  12. package/dist/web/assets/{index-DSOP0R0s.css → index-BJ76xcQz.css} +1 -1
  13. package/dist/web/assets/index-C7gvr4Xo.js +27 -0
  14. package/dist/web/assets/keybindings-store-BhvgfX51.js +1 -0
  15. package/dist/web/assets/{markdown-renderer-DwINRWo4.js → markdown-renderer-B7yiCjpQ.js} +1 -1
  16. package/dist/web/assets/{pdf-preview-CqoQE09t.js → pdf-preview-D3u3Hr2R.js} +1 -1
  17. package/dist/web/assets/{port-forwarding-tab-De7qxkjp.js → port-forwarding-tab-CSGpa5Bk.js} +1 -1
  18. package/dist/web/assets/{postgres-viewer-Dd6rLb8b.js → postgres-viewer-Cf4sjXxY.js} +1 -1
  19. package/dist/web/assets/{settings-tab-BdTEumwU.js → settings-tab-BLlfwRRc.js} +1 -1
  20. package/dist/web/assets/{sqlite-viewer-Ccz2crvN.js → sqlite-viewer-WAA8mf_X.js} +1 -1
  21. package/dist/web/assets/{terminal-tab-D7u7wsyb.js → terminal-tab-Bn8wLy9d.js} +1 -1
  22. package/dist/web/assets/{video-preview-BSDzqlzk.js → video-preview-CRDjNIVX.js} +1 -1
  23. package/dist/web/index.html +2 -2
  24. package/dist/web/sw.js +1 -1
  25. package/package.json +1 -1
  26. package/src/server/routes/chat.ts +27 -17
  27. package/src/services/jsonl-transcript-parser.ts +10 -1
  28. package/src/services/supervisor.ts +35 -35
  29. package/src/web/components/chat/message-list.tsx +49 -2
  30. package/src/web/components/layout/draggable-tab.tsx +1 -1
  31. package/src/web/components/layout/mobile-nav.tsx +39 -4
  32. package/src/web/hooks/use-chat.ts +8 -1
  33. package/dist/web/assets/index-DJOjXTcq.js +0 -27
  34. package/dist/web/assets/keybindings-store-V12kZZHO.js +0 -1
  35. package/docs/journals/2026-04-22-compare-files-feature-ship.md +0 -53
@@ -1 +0,0 @@
1
- import"./vendor-markdown-0Mxgxy0L.js";import"./api-client-r4nyVy7H.js";import{E as e}from"./index-DJOjXTcq.js";export{e as useKeybindingsStore};
@@ -1,53 +0,0 @@
1
- # Compare-Files Feature Ship
2
-
3
- **Date**: 2026-04-22 14:35
4
- **Severity**: Low
5
- **Component**: Web IDE / Diff Viewer
6
- **Status**: Resolved
7
-
8
- ## What Happened
9
-
10
- Shipped compare-files feature (file diff picker) for PPM web IDE. Four trigger paths — tab context menu, file-tree context menu, command palette, keyboard shortcut `Mod+Alt+D`. Reused existing DiffViewer + git-diff tab type; zero backend changes. Added zustand store with persist middleware, ComparePicker singleton at App root, and in-flight guard to prevent double-invoke race.
11
-
12
- ## Technical Details
13
-
14
- - **370 new lines of code** across 3 new files + 6 edited files
15
- - **Zustand store** (`useCompareStore`) with `persist` middleware that strips dirty content >500KB
16
- - **Dirty-buffer semantic**: snapshot at select-time, not compare-time (closing the tab doesn't invalidate selection)
17
- - **Custom event** (`open-compare-picker`) dispatched from 4 trigger points, singleton listener mounted at App root
18
- - **Keyboard shortcut**: `Mod+Alt+D` single-stroke (chord parser doesn't support `Cmd+K D` yet)
19
- - **Module-scope subscription**: `useProjectStore.subscribe` auto-clears selection on project switch
20
- - **In-flight guard**: ref-based tracking in `handlePick` to block concurrent invocations (reviewer comment M5)
21
- - **Test coverage**: 1698 pass, 48 pre-existing unrelated failures, 0 new regressions
22
- - **Code review**: 7.5/10, 0 critical, 6 major (1 addressed: M5; 3 deferred: M3/M4/M6)
23
-
24
- ## Why This Matters
25
-
26
- Snapshot-at-select semantics felt risky initially but aligns with user mental model: "I'm picking a version to diff." Closing the tab doesn't invalidate the selection — this is more intuitive than invalidating on every interaction. Deferring byte-accurate persist limit (M4), clear-on-error (M3), and legacy multi-select-compare unification (M6) kept scope tight; all are low-risk YAGNI.
27
-
28
- ## Key Decisions
29
-
30
- 1. **Same-project only**: Cross-project selection auto-cleared rather than supported. Reduces state complexity; users can switch projects and re-pick.
31
- 2. **Single-stroke `Mod+Alt+D`**: Chord parser limitation means `Cmd+K D` unsupported. Single-stroke is good enough; avoiding yak-shave on chord parsing.
32
- 3. **Snapshot timing**: Capturing dirty buffer at select-time (not compare-time) prevents stale diffs after file edits. User closes tab; selection still valid.
33
- 4. **Defer judgment calls**: M3/M4/M6 are correctness edge-cases, not showstoppers. Shipping first; addressing in follow-up if telemetry justifies.
34
-
35
- ## Lessons Learned
36
-
37
- - **Persist middleware footprint**: 500KB strip limit is conservative but safe; no observed bloat in dev.
38
- - **Custom events + singleton**: Avoids prop-drilling 4 trigger points through component tree. Event-driven pattern cleaner than callback props.
39
- - **In-flight guard as ref**: Simpler than promise-based debounce; prevents race without async complexity.
40
- - **Deferred ≠ broken**: 6 major review comments sound high, but only 1 was blocking (M5). Others are judgment-calls; shipping with known trade-offs is valid.
41
-
42
- ## Next Steps
43
-
44
- - Monitor telemetry for M3 (clear-on-error) if users report stale diffs
45
- - Consider byte-accurate persist limit (M4) if DB bloat observed
46
- - Unify legacy multi-select-compare path (M6) in v0.14 if feature gains adoption
47
-
48
- Commit: `cc09bb5b9e652a2feefde4e533934a6f53301895`
49
-
50
- ---
51
-
52
- **Status:** Resolved
53
- **Summary:** Shipped compare-files feature with 4 trigger paths, zustand persist store, and event-driven ComparePicker. 370 new LOC, 0 new test regressions, 1 review blocker addressed (M5), 3 judgment-calls deferred (M3/M4/M6). Snapshot-at-select semantics and same-project-only scope kept complexity tight.