hammoc 1.1.6 → 1.2.1

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 (117) hide show
  1. package/README.md +8 -2
  2. package/bin/hammoc.js +12 -0
  3. package/package.json +3 -3
  4. package/packages/client/dist/assets/index-Cb8l58mq.js +1451 -0
  5. package/packages/client/dist/assets/index-Cc_AX5QV.css +32 -0
  6. package/packages/client/dist/assets/{index-BQASJJka.js → index-G9znBi60.js} +1 -1
  7. package/packages/client/dist/index.html +2 -2
  8. package/packages/client/dist/sw.js +1 -1
  9. package/packages/server/dist/app.d.ts.map +1 -1
  10. package/packages/server/dist/app.js +3 -0
  11. package/packages/server/dist/app.js.map +1 -1
  12. package/packages/server/dist/controllers/queueController.d.ts +1 -0
  13. package/packages/server/dist/controllers/queueController.d.ts.map +1 -1
  14. package/packages/server/dist/controllers/queueController.js +12 -0
  15. package/packages/server/dist/controllers/queueController.js.map +1 -1
  16. package/packages/server/dist/controllers/serverController.d.ts.map +1 -1
  17. package/packages/server/dist/controllers/serverController.js +20 -2
  18. package/packages/server/dist/controllers/serverController.js.map +1 -1
  19. package/packages/server/dist/controllers/sessionController.d.ts +5 -10
  20. package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
  21. package/packages/server/dist/controllers/sessionController.js +65 -80
  22. package/packages/server/dist/controllers/sessionController.js.map +1 -1
  23. package/packages/server/dist/handlers/streamCallbacks.d.ts +4 -0
  24. package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
  25. package/packages/server/dist/handlers/streamCallbacks.js +9 -3
  26. package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
  27. package/packages/server/dist/handlers/websocket.d.ts +9 -15
  28. package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
  29. package/packages/server/dist/handlers/websocket.js +668 -120
  30. package/packages/server/dist/handlers/websocket.js.map +1 -1
  31. package/packages/server/dist/locales/en/server.json +3 -1
  32. package/packages/server/dist/locales/es/server.json +3 -1
  33. package/packages/server/dist/locales/ja/server.json +3 -1
  34. package/packages/server/dist/locales/ko/server.json +3 -1
  35. package/packages/server/dist/locales/pt/server.json +3 -1
  36. package/packages/server/dist/locales/zh-CN/server.json +3 -1
  37. package/packages/server/dist/routes/images.d.ts +7 -0
  38. package/packages/server/dist/routes/images.d.ts.map +1 -0
  39. package/packages/server/dist/routes/images.js +51 -0
  40. package/packages/server/dist/routes/images.js.map +1 -0
  41. package/packages/server/dist/routes/queue.d.ts.map +1 -1
  42. package/packages/server/dist/routes/queue.js +2 -1
  43. package/packages/server/dist/routes/queue.js.map +1 -1
  44. package/packages/server/dist/routes/sessions.d.ts.map +1 -1
  45. package/packages/server/dist/routes/sessions.js +2 -3
  46. package/packages/server/dist/routes/sessions.js.map +1 -1
  47. package/packages/server/dist/services/chatService.d.ts +2 -0
  48. package/packages/server/dist/services/chatService.d.ts.map +1 -1
  49. package/packages/server/dist/services/chatService.js +33 -1
  50. package/packages/server/dist/services/chatService.js.map +1 -1
  51. package/packages/server/dist/services/historyParser.d.ts +1 -11
  52. package/packages/server/dist/services/historyParser.d.ts.map +1 -1
  53. package/packages/server/dist/services/historyParser.js +148 -182
  54. package/packages/server/dist/services/historyParser.js.map +1 -1
  55. package/packages/server/dist/services/imageStorageService.d.ts +28 -0
  56. package/packages/server/dist/services/imageStorageService.d.ts.map +1 -0
  57. package/packages/server/dist/services/imageStorageService.js +108 -0
  58. package/packages/server/dist/services/imageStorageService.js.map +1 -0
  59. package/packages/server/dist/services/ptyService.d.ts +6 -0
  60. package/packages/server/dist/services/ptyService.d.ts.map +1 -1
  61. package/packages/server/dist/services/ptyService.js +59 -0
  62. package/packages/server/dist/services/ptyService.js.map +1 -1
  63. package/packages/server/dist/services/queueService.d.ts.map +1 -1
  64. package/packages/server/dist/services/queueService.js +23 -2
  65. package/packages/server/dist/services/queueService.js.map +1 -1
  66. package/packages/server/dist/services/sessionBufferManager.d.ts +26 -0
  67. package/packages/server/dist/services/sessionBufferManager.d.ts.map +1 -0
  68. package/packages/server/dist/services/sessionBufferManager.js +113 -0
  69. package/packages/server/dist/services/sessionBufferManager.js.map +1 -0
  70. package/packages/server/dist/services/sessionService.d.ts +26 -1
  71. package/packages/server/dist/services/sessionService.d.ts.map +1 -1
  72. package/packages/server/dist/services/sessionService.js +168 -39
  73. package/packages/server/dist/services/sessionService.js.map +1 -1
  74. package/packages/server/dist/services/summarizeService.d.ts +25 -0
  75. package/packages/server/dist/services/summarizeService.d.ts.map +1 -0
  76. package/packages/server/dist/services/summarizeService.js +122 -0
  77. package/packages/server/dist/services/summarizeService.js.map +1 -0
  78. package/packages/server/dist/utils/imageUtils.d.ts +11 -0
  79. package/packages/server/dist/utils/imageUtils.d.ts.map +1 -0
  80. package/packages/server/dist/utils/imageUtils.js +37 -0
  81. package/packages/server/dist/utils/imageUtils.js.map +1 -0
  82. package/packages/server/dist/utils/messageTree.d.ts +56 -0
  83. package/packages/server/dist/utils/messageTree.d.ts.map +1 -0
  84. package/packages/server/dist/utils/messageTree.js +370 -0
  85. package/packages/server/dist/utils/messageTree.js.map +1 -0
  86. package/packages/server/package.json +3 -1
  87. package/packages/shared/dist/constants/index.d.ts +3 -0
  88. package/packages/shared/dist/constants/index.d.ts.map +1 -0
  89. package/packages/shared/dist/constants/index.js +3 -0
  90. package/packages/shared/dist/constants/index.js.map +1 -0
  91. package/packages/shared/dist/constants/messageTree.d.ts +6 -0
  92. package/packages/shared/dist/constants/messageTree.d.ts.map +1 -0
  93. package/packages/shared/dist/constants/messageTree.js +7 -0
  94. package/packages/shared/dist/constants/messageTree.js.map +1 -0
  95. package/packages/shared/dist/index.d.ts +1 -1
  96. package/packages/shared/dist/index.d.ts.map +1 -1
  97. package/packages/shared/dist/index.js +1 -1
  98. package/packages/shared/dist/index.js.map +1 -1
  99. package/packages/shared/dist/types/history.d.ts +21 -8
  100. package/packages/shared/dist/types/history.d.ts.map +1 -1
  101. package/packages/shared/dist/types/message.d.ts +10 -0
  102. package/packages/shared/dist/types/message.d.ts.map +1 -1
  103. package/packages/shared/dist/types/message.js.map +1 -1
  104. package/packages/shared/dist/types/preferences.d.ts +2 -1
  105. package/packages/shared/dist/types/preferences.d.ts.map +1 -1
  106. package/packages/shared/dist/types/preferences.js.map +1 -1
  107. package/packages/shared/dist/types/sdk.d.ts +8 -0
  108. package/packages/shared/dist/types/sdk.d.ts.map +1 -1
  109. package/packages/shared/dist/types/sdk.js.map +1 -1
  110. package/packages/shared/dist/types/session.d.ts +1 -0
  111. package/packages/shared/dist/types/session.d.ts.map +1 -1
  112. package/packages/shared/dist/types/session.js.map +1 -1
  113. package/packages/shared/dist/types/websocket.d.ts +59 -5
  114. package/packages/shared/dist/types/websocket.d.ts.map +1 -1
  115. package/scripts/spike-25.9-output.log +47 -0
  116. package/packages/client/dist/assets/index-Dr2X4keZ.css +0 -32
  117. package/packages/client/dist/assets/index-zjjTVZ6W.js +0 -1418
package/README.md CHANGED
@@ -124,10 +124,15 @@ Real-time conversations with Claude through a rich web UI.
124
124
 
125
125
  - **Streaming responses** — Messages appear progressively as Claude generates them
126
126
  - **Markdown rendering** — Full markdown support with syntax-highlighted code blocks and copy buttons
127
- - **Image attachments** — Attach up to 5 images (PNG, JPEG, GIF, WebP) per message
127
+ - **Image attachments** — Attach up to 5 images (PNG, JPEG, GIF, WebP) per message with thumbnail display
128
128
  - **Tool call visualization** — See what tools Claude uses, with inputs, outputs, and execution time
129
129
  - **Diff viewer** — Side-by-side file diff display for code changes
130
130
  - **Extended thinking** — View Claude's reasoning process in collapsible blocks
131
+ - **Message edit** — Edit previous messages to branch the conversation into alternative paths
132
+ - **Summarize & Continue** — Compress long conversations with AI-generated summaries
133
+ - **Code rewind** — Restore project files to any earlier point in the conversation
134
+ - **Session fork** — Branch into a new session from any assistant response
135
+ - **Conversation branching** — Navigate between branches with pagination controls, and browse all branches in a read-only viewer
131
136
  - **Prompt history** — Navigate previous inputs with arrow keys
132
137
  - **Prompt chaining** — Queue up to 10 prompts for sequential execution (server-synced, multi-browser)
133
138
  - **Voice input** — Dictate messages using browser speech recognition (Chrome, Edge, Safari)
@@ -153,6 +158,7 @@ Real-time conversations with Claude through a rich web UI.
153
158
  ### Model & Permission Control
154
159
 
155
160
  - **Model selector** — Choose between Claude Sonnet, Opus, and Haiku variants
161
+ - **Thinking effort** — Adjust reasoning intensity (Low / Medium / High / Max on Opus 4.6)
156
162
  - **Permission modes** — Plan, Ask (default), Auto, or Bypass
157
163
  - **Per-project overrides** — Different settings per project
158
164
 
@@ -170,7 +176,7 @@ Real-time conversations with Claude through a rich web UI.
170
176
  - **Tree navigation** — Directory hierarchy with breadcrumbs
171
177
  - **Text editor** — Syntax highlighting with save (Ctrl+S)
172
178
  - **Markdown preview** — Toggle between edit and preview modes
173
- - **Image viewer** — Full-screen image viewing with zoom controls
179
+ - **Image viewer** — Full-screen image viewing with zoom controls and multi-image navigation
174
180
  - **File operations** — Create, rename, and delete files and folders
175
181
 
176
182
  ### Git Integration
package/bin/hammoc.js CHANGED
@@ -71,6 +71,18 @@ if (rateLimitIndex !== -1 && args[rateLimitIndex + 1]) {
71
71
  // Always run in production mode
72
72
  process.env.NODE_ENV = 'production';
73
73
 
74
+ // Ensure @hammoc/shared is resolvable (postinstall may be skipped by npx)
75
+ import { existsSync, mkdirSync, symlinkSync } from 'fs';
76
+ const root = path.resolve(__dirname, '..');
77
+ const sharedPkg = path.resolve(root, 'packages', 'shared');
78
+ const nmScope = path.resolve(root, 'node_modules', '@hammoc');
79
+ const nmTarget = path.resolve(nmScope, 'shared');
80
+ if (existsSync(sharedPkg) && !existsSync(nmTarget)) {
81
+ mkdirSync(nmScope, { recursive: true });
82
+ const type = process.platform === 'win32' ? 'junction' : 'dir';
83
+ symlinkSync(sharedPkg, nmTarget, type);
84
+ }
85
+
74
86
  // Start the server
75
87
  const serverEntry = path.resolve(__dirname, '..', 'packages', 'server', 'dist', 'index.js');
76
88
  await import(pathToFileURL(serverEntry).href);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hammoc",
3
- "version": "1.1.6",
3
+ "version": "1.2.1",
4
4
  "description": "Web-based IDE for managing Claude Code sessions, projects, and workflows",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
@@ -55,7 +55,7 @@
55
55
  "bmad:validate": "bmad-method validate"
56
56
  },
57
57
  "dependencies": {
58
- "@anthropic-ai/claude-agent-sdk": "^0.2.34",
58
+ "@anthropic-ai/claude-agent-sdk": "^0.2.91",
59
59
  "bcrypt": "^6.0.0",
60
60
  "cookie-session": "^2.1.1",
61
61
  "cors": "^2.8.5",
@@ -81,7 +81,7 @@
81
81
  "tsx": "^4.21.0",
82
82
  "typescript": "^5.9.3",
83
83
  "typescript-eslint": "^8.0.0",
84
- "vitest": "^4.0.18"
84
+ "vitest": "^2.1.9"
85
85
  },
86
86
  "overrides": {
87
87
  "@types/react": "^18.3.0",