create-walle 0.9.21 → 0.9.22

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 (52) hide show
  1. package/README.md +5 -5
  2. package/package.json +2 -2
  3. package/template/claude-task-manager/api-prompts.js +13 -0
  4. package/template/claude-task-manager/api-reviews.js +5 -2
  5. package/template/claude-task-manager/db.js +348 -15
  6. package/template/claude-task-manager/docs/app-update-refresh-protocol.md +69 -0
  7. package/template/claude-task-manager/docs/image-paste-ux.md +3 -0
  8. package/template/claude-task-manager/docs/ipad-web-preview.md +88 -0
  9. package/template/claude-task-manager/git-utils.js +146 -17
  10. package/template/claude-task-manager/lib/auth-rate-limit.js +23 -3
  11. package/template/claude-task-manager/lib/auth-rules.js +3 -0
  12. package/template/claude-task-manager/lib/document-review.js +33 -2
  13. package/template/claude-task-manager/lib/microsoft-dev-tunnel-setup.js +83 -0
  14. package/template/claude-task-manager/lib/mobile-auth-api.js +14 -0
  15. package/template/claude-task-manager/lib/restart-guard.js +68 -0
  16. package/template/claude-task-manager/lib/session-standup.js +36 -13
  17. package/template/claude-task-manager/lib/session-stream.js +11 -4
  18. package/template/claude-task-manager/lib/transport-security.js +50 -0
  19. package/template/claude-task-manager/lib/walle-transcript.js +16 -0
  20. package/template/claude-task-manager/lib/worktree-active-sync.js +6 -3
  21. package/template/claude-task-manager/public/css/reviews.css +10 -0
  22. package/template/claude-task-manager/public/css/setup.css +13 -0
  23. package/template/claude-task-manager/public/css/walle.css +145 -0
  24. package/template/claude-task-manager/public/index.html +539 -44
  25. package/template/claude-task-manager/public/ipad.html +363 -0
  26. package/template/claude-task-manager/public/js/document-review-links.js +196 -0
  27. package/template/claude-task-manager/public/js/message-renderer.js +14 -3
  28. package/template/claude-task-manager/public/js/reviews.js +30 -6
  29. package/template/claude-task-manager/public/js/setup.js +42 -2
  30. package/template/claude-task-manager/public/js/stream-view.js +20 -1
  31. package/template/claude-task-manager/public/js/walle.js +314 -18
  32. package/template/claude-task-manager/public/m/app.css +789 -11
  33. package/template/claude-task-manager/public/m/app.js +1070 -67
  34. package/template/claude-task-manager/public/m/claim.html +9 -2
  35. package/template/claude-task-manager/public/m/index.html +17 -10
  36. package/template/claude-task-manager/public/m/sw.js +1 -1
  37. package/template/claude-task-manager/server.js +365 -95
  38. package/template/claude-task-manager/session-integrity.js +4 -0
  39. package/template/docs/designs/2026-05-17-portkey-gateway-provider-ux.md +86 -35
  40. package/template/package.json +1 -1
  41. package/template/wall-e/api-walle.js +19 -1
  42. package/template/wall-e/brain.js +152 -6
  43. package/template/wall-e/chat.js +85 -0
  44. package/template/wall-e/coding-orchestrator.js +106 -12
  45. package/template/wall-e/http/model-admin.js +131 -0
  46. package/template/wall-e/lib/service-health.js +194 -0
  47. package/template/wall-e/llm/anthropic.js +7 -0
  48. package/template/wall-e/llm/client.js +46 -12
  49. package/template/wall-e/llm/openai.js +17 -2
  50. package/template/wall-e/llm/portkey-sync.js +201 -0
  51. package/template/wall-e/server.js +13 -0
  52. package/template/website/index.html +10 -10
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
6
6
  <title>Pair Phone - CTM</title>
7
7
  <link rel="manifest" href="/manifest.json">
8
- <link rel="stylesheet" href="/m/app.css?v=20260519-walle-phone-model-picker">
8
+ <link rel="stylesheet" href="/m/app.css?v=20260519-update-refresh">
9
9
  </head>
10
10
  <body>
11
11
  <main class="claim-shell">
@@ -25,6 +25,7 @@
25
25
  var params = new URLSearchParams(location.search);
26
26
  var claim = params.get('claim') || '';
27
27
  var secret = params.get('secret') || '';
28
+ var reason = params.get('reason') || '';
28
29
  var statusEl = document.getElementById('claim-status');
29
30
  var summaryEl = document.getElementById('claim-summary');
30
31
  var actionEl = document.getElementById('claim-action');
@@ -85,7 +86,13 @@
85
86
 
86
87
  async function begin() {
87
88
  if (!claim || !secret) {
88
- setStatus('This pairing link is missing its claim secret.', true);
89
+ if (reason) {
90
+ setStatus(reason === 'ip_locked'
91
+ ? 'This phone session was locked after failed authentication. Create a fresh Pair Phone QR on the Mac and open it here.'
92
+ : 'This phone session was signed out. Create a fresh Pair Phone QR on the Mac and open it here.', true);
93
+ } else {
94
+ setStatus('This pairing link is missing its claim secret.', true);
95
+ }
89
96
  return;
90
97
  }
91
98
  if (!window.isSecureContext) {
@@ -48,7 +48,7 @@
48
48
  <link rel="icon" type="image/png" sizes="32x32" href="/icon-32.png">
49
49
  <link rel="apple-touch-icon" sizes="180x180" href="/icon-180.png">
50
50
  <link rel="manifest" href="/manifest.json">
51
- <link rel="stylesheet" href="/m/app.css?v=20260519-walle-phone-model-picker">
51
+ <link rel="stylesheet" href="/m/app.css?v=20260519-walle-default-chat">
52
52
  </head>
53
53
  <body class="mobile-app">
54
54
  <header class="app-topbar">
@@ -61,6 +61,13 @@
61
61
  <button id="refresh-btn" class="icon-btn" type="button" aria-label="Refresh" title="Refresh">↻</button>
62
62
  </div>
63
63
  </header>
64
+ <section id="app-reload-banner" class="app-reload-banner" role="status" aria-live="polite" aria-atomic="true" hidden>
65
+ <div>
66
+ <strong>Update installed</strong>
67
+ <span id="app-reload-msg">Reload to use the latest CTM / Wall-E UI.</span>
68
+ </div>
69
+ <button id="app-reload-now-btn" type="button">Reload</button>
70
+ </section>
64
71
 
65
72
  <main id="app-main" class="app-main" tabindex="-1">
66
73
  <section id="view-status" class="mobile-view active" aria-labelledby="status-heading">
@@ -148,16 +155,16 @@
148
155
  <div id="mobile-skill-picker" class="mobile-skill-picker" role="listbox" aria-label="Skill suggestions" hidden></div>
149
156
  <div id="composer-status" class="composer-status" aria-live="polite"></div>
150
157
  </div>
151
- <button id="detail-model" class="model-picker-btn" type="button" aria-label="Choose model for this Wall-E session" aria-haspopup="dialog" aria-expanded="false" hidden>
152
- <span class="model-picker-btn-kicker">Model</span>
153
- <span id="detail-model-label" class="model-picker-btn-label">Auto</span>
154
- </button>
155
158
  <button id="detail-send" class="send-btn" type="submit" aria-label="Send" aria-haspopup="menu" aria-expanded="false"><span aria-hidden="true">➤</span></button>
156
159
  <div id="send-menu" class="send-menu" role="menu" hidden>
157
160
  <div class="send-menu-header" role="presentation">
158
161
  <strong>Session actions</strong>
159
- <span>Recall a prompt, attach context, or control the live terminal.</span>
162
+ <span>Recall a prompt, choose a model, attach context, or control the live terminal.</span>
160
163
  </div>
164
+ <button id="send-model-option" class="send-menu-item send-menu-model" type="button" role="menuitem" aria-haspopup="dialog" aria-expanded="false" hidden>
165
+ <span class="send-menu-item-kicker">Model</span>
166
+ <span id="send-model-label" class="send-menu-item-main">Auto model</span>
167
+ </button>
161
168
  <button id="send-prev-prompt-option" class="send-menu-item" type="button" role="menuitem" data-send-menu-control="previous">Previous prompt</button>
162
169
  <button id="send-next-prompt-option" class="send-menu-item" type="button" role="menuitem" data-send-menu-control="next">Next prompt</button>
163
170
  <button id="send-copy-url-option" class="send-menu-item" type="button" role="menuitem" data-send-menu-copy>Copy session URL</button>
@@ -239,9 +246,9 @@
239
246
  </script>
240
247
  <script src="https://cdn.jsdelivr.net/npm/marked@15.0.7/marked.min.js"></script>
241
248
  <script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.4/dist/purify.min.js"></script>
242
- <script src="/js/session-search-utils.js?v=20260519-walle-phone-model-picker"></script>
243
- <script src="/js/image-normalize.js?v=20260519-walle-phone-model-picker"></script>
244
- <script src="/js/message-renderer.js?v=20260519-walle-phone-model-picker"></script>
245
- <script src="/m/app.js?v=20260519-walle-phone-model-picker"></script>
249
+ <script src="/js/session-search-utils.js?v=20260519-update-refresh"></script>
250
+ <script src="/js/image-normalize.js?v=20260519-update-refresh"></script>
251
+ <script src="/js/message-renderer.js?v=20260519-update-refresh"></script>
252
+ <script src="/m/app.js?v=20260519-walle-default-chat"></script>
246
253
  </body>
247
254
  </html>
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CACHE_NAME = 'ctm-mobile-shell-v32';
3
+ const CACHE_NAME = 'ctm-mobile-shell-v39';
4
4
  const SHELL_ASSETS = [
5
5
  '/m/',
6
6
  '/m/index.html',