ccphoto 0.2.0 → 0.3.0-beta.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.
package/README.md CHANGED
@@ -84,6 +84,62 @@ This enables hands-free workflows: ask a question while holding a soldering
84
84
  iron, and hear the answer without looking at a screen. The mic button
85
85
  appears only on browsers that support Speech Recognition (Android Chrome).
86
86
 
87
+ ### MCP Channels (Beta)
88
+
89
+ When running on the beta branch with channels enabled, CCPhoto pushes events
90
+ directly into your Claude Code session. Photos, voice messages, and mode
91
+ switches arrive as `<channel>` notifications without any polling or blocking
92
+ tool calls.
93
+
94
+ **Setup:**
95
+
96
+ ```bash
97
+ # Install beta version
98
+ npx ccphoto@beta --setup
99
+
100
+ # Start Claude Code with channels enabled
101
+ claude --dangerously-load-development-channels server:ccphoto
102
+ ```
103
+
104
+ **What you see in Claude Code:**
105
+
106
+ When a photo is uploaded:
107
+ ```xml
108
+ <channel source="ccphoto" event="photo" file_name="photo-2026-03-23.jpg" size_kb="1500">
109
+ Photo captured: photo-2026-03-23.jpg (1500 KB)
110
+ </channel>
111
+ ```
112
+
113
+ When the user speaks into the mic:
114
+ ```xml
115
+ <channel source="ccphoto" event="voice" speaker="user">
116
+ What is this component?
117
+ </channel>
118
+ ```
119
+
120
+ Claude can then call `get_latest_photo` or `get_live_frame` to see the image,
121
+ and `send_to_phone` with `speak: true` to respond with voice.
122
+
123
+ **Note:** Channels are an MCP research preview feature. The
124
+ `--dangerously-load-development-channels` flag is required during the preview
125
+ period.
126
+
127
+ ### Stable vs Beta
128
+
129
+ | Feature | Stable (main, v0.2.0) | Beta (beta, v0.3.0-beta) |
130
+ |---------|:---:|:---:|
131
+ | Photo capture + auto-upload | Yes | Yes |
132
+ | Photo annotations | Yes | Yes |
133
+ | Bidirectional messaging | Yes | Yes |
134
+ | Toast notifications | Yes | Yes |
135
+ | Live video streaming | Yes | Yes |
136
+ | Voice (mic + TTS) | Yes | Yes |
137
+ | Phone-driven actions | Yes | Yes |
138
+ | MCP Channels (push events) | -- | Yes |
139
+
140
+ Install stable: `npx ccphoto --setup`
141
+ Install beta: `npx ccphoto@beta --setup`
142
+
87
143
  ## Installation
88
144
 
89
145
  ### npx (recommended, no install)
@@ -197,7 +253,7 @@ personal hotspot or home network instead.
197
253
  npm install # Install dependencies
198
254
  npm run build # Compile TypeScript
199
255
  npm run dev # Watch mode (recompile on change)
200
- npm test # Run the test suite (87 tests)
256
+ npm test # Run the test suite (89 tests)
201
257
  ```
202
258
 
203
259
  Tests use the Node.js built-in test runner and require the `tsx` dev dependency
@@ -219,6 +275,9 @@ src/
219
275
 
220
276
  ## Roadmap
221
277
 
278
+ - **MCP Channels** -- Available on beta branch. Push photo/voice events directly
279
+ into Claude Code sessions. Will move to stable when the MCP channels API
280
+ graduates from research preview.
222
281
  - **Real domain + Let's Encrypt certs** -- Use a registered domain with valid
223
282
  certificates for zero browser warnings on any device, including iOS Safari.
224
283
  - **iOS live video support** -- Live video streaming currently works on
@@ -227,7 +286,6 @@ src/
227
286
  camera view in real-time.
228
287
  - **Multi-camera support** -- Connect multiple phones simultaneously for
229
288
  different viewing angles.
230
- - **npm publish to registry** -- Make CCPhoto installable via `npx ccphoto`.
231
289
  - **WebRTC streaming** -- Replace HTTP frame polling with WebRTC when Claude's
232
290
  vision processing latency improves.
233
291
 
package/dist/mcp.js CHANGED
@@ -5,7 +5,7 @@ import fs from "node:fs";
5
5
  import os from "node:os";
6
6
  import path from "node:path";
7
7
  import qrcode from "qrcode-terminal";
8
- import { startServer, isServerRunning, getServerConfig, waitForPhoto, requestPhoto, hasConnectedClients, sendToPhone, startHttpsServer, isHttpsServerRunning, getLatestFrame, switchToLiveMode } from "./server.js";
8
+ import { startServer, isServerRunning, getServerConfig, waitForPhoto, requestPhoto, hasConnectedClients, sendToPhone, startHttpsServer, isHttpsServerRunning, getLatestFrame, switchToLiveMode, setChannelNotifier } from "./server.js";
9
9
  import { getLocalIPv4 } from "./network.js";
10
10
  import { generateToken } from "./token.js";
11
11
  import { ensureCerts } from "./cert.js";
@@ -55,7 +55,12 @@ async function ensureHttpsServer() {
55
55
  export async function runMcpServer() {
56
56
  const server = new McpServer({
57
57
  name: "ccphoto",
58
- version: "0.2.0",
58
+ version: "0.3.0-beta.0",
59
+ }, {
60
+ capabilities: {
61
+ experimental: { "claude/channel": {} },
62
+ },
63
+ instructions: `CCPhoto is a phone camera bridge. Events from the phone arrive as <channel source="ccphoto"> tags when channels are enabled. Photo uploads include file_name and size metadata — call get_latest_photo to see the image. Voice messages include the transcribed text. Use send_to_phone to reply (with speak:true for TTS).`,
59
64
  });
60
65
  server.tool("capture_photo", "Start the camera server and return a QR code for the user to scan with their phone. The server stays running for the entire session — the user only needs to scan once, then they can take photos anytime and switch between Photo and Live modes. If a phone is already connected, it will be notified that a photo is requested (the button will pulse). CRITICAL: You MUST paste the QR code directly in your response text (inside a code block) so the user can see and scan it. After showing the QR, IMMEDIATELY call wait_for_photo to receive the photo.", {}, async () => {
61
66
  const alreadyRunning = isServerRunning();
@@ -217,10 +222,11 @@ export async function runMcpServer() {
217
222
  image_base64: z.string().optional().describe("Base64-encoded image data to display on the phone."),
218
223
  image_mime_type: z.string().optional().describe("MIME type of the image (e.g. 'image/png'). Required when image_base64 is provided."),
219
224
  speak: z.preprocess((v) => v === "true" || v === true, z.boolean()).optional().describe("If true, the phone will speak the text aloud using text-to-speech."),
220
- }, async ({ text, image_base64, image_mime_type, speak }) => {
221
- if (!text && !image_base64) {
225
+ ui_spec: z.string().optional().describe("JSON UI specification for rendering rich, contextual UI on the phone. Generate a spec with root + elements map. Available component types: Card (title, subtitle), Text (content with markdown), Image (src, caption), Metric (label, value, unit), MetricGrid (columns: 2|3, children are Metric elements), Checklist (items: [{text, checked}]), StepByStep (steps: string[], currentStep: number), Alert (message, variant: info|warning|success|error), Table (headers: string[], rows: string[][]), Timer (seconds, label), Badge (text, color), Divider. Example: {\"root\":\"c\",\"elements\":{\"c\":{\"type\":\"Card\",\"props\":{\"title\":\"Result\"},\"children\":[\"t\"]},\"t\":{\"type\":\"Text\",\"props\":{\"content\":\"Hello\"}}}} The children array contains element IDs (keys from the elements map), not inline objects."),
226
+ }, async ({ text, image_base64, image_mime_type, speak, ui_spec }) => {
227
+ if (!text && !image_base64 && !ui_spec) {
222
228
  return {
223
- content: [{ type: "text", text: "Error: provide at least 'text' or 'image_base64'." }],
229
+ content: [{ type: "text", text: "Error: provide at least 'text', 'image_base64', or 'ui_spec'." }],
224
230
  };
225
231
  }
226
232
  if (image_base64 && !image_mime_type) {
@@ -242,12 +248,24 @@ export async function runMcpServer() {
242
248
  }
243
249
  if (speak)
244
250
  message.speak = true;
251
+ if (ui_spec) {
252
+ try {
253
+ message.uiSpec = JSON.parse(ui_spec);
254
+ }
255
+ catch {
256
+ return {
257
+ content: [{ type: "text", text: "Error: ui_spec is not valid JSON." }],
258
+ };
259
+ }
260
+ }
245
261
  sendToPhone(message);
246
262
  const parts = [];
247
263
  if (text)
248
264
  parts.push(`text (${text.length} chars)`);
249
265
  if (image_base64)
250
266
  parts.push(`image (${image_mime_type})`);
267
+ if (ui_spec)
268
+ parts.push("UI spec");
251
269
  if (speak)
252
270
  parts.push("(spoken)");
253
271
  return {
@@ -305,5 +323,13 @@ export async function runMcpServer() {
305
323
  });
306
324
  const transport = new StdioServerTransport();
307
325
  await server.connect(transport);
326
+ // Wire up channel notifications — pushes photo/voice events to Claude
327
+ // when running with --channels flag (beta feature)
328
+ setChannelNotifier((content, meta) => {
329
+ server.server.notification({
330
+ method: "notifications/claude/channel",
331
+ params: { content, meta },
332
+ });
333
+ });
308
334
  }
309
335
  //# sourceMappingURL=mcp.js.map
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -665,6 +665,298 @@ export function renderMobilePage(token) {
665
665
  text-align: center;
666
666
  pointer-events: none;
667
667
  }
668
+
669
+ /* JSON Render Panel */
670
+ .render-panel {
671
+ position: fixed;
672
+ inset: 0;
673
+ z-index: 210;
674
+ background: #111;
675
+ overflow-y: auto;
676
+ -webkit-overflow-scrolling: touch;
677
+ padding: 16px;
678
+ padding-top: 56px;
679
+ }
680
+
681
+ .render-close {
682
+ position: fixed;
683
+ top: 12px;
684
+ right: 12px;
685
+ z-index: 211;
686
+ width: 40px;
687
+ height: 40px;
688
+ border-radius: 50%;
689
+ border: none;
690
+ background: #333;
691
+ color: #fff;
692
+ font-size: 20px;
693
+ cursor: pointer;
694
+ display: flex;
695
+ align-items: center;
696
+ justify-content: center;
697
+ }
698
+
699
+ /* Components */
700
+ .jr-card {
701
+ background: #1a1a1a;
702
+ border: 1px solid #2a2a2a;
703
+ border-radius: 16px;
704
+ padding: 20px;
705
+ margin-bottom: 12px;
706
+ }
707
+
708
+ .jr-card-title {
709
+ font-size: 20px;
710
+ font-weight: 700;
711
+ color: #fff;
712
+ margin-bottom: 4px;
713
+ }
714
+
715
+ .jr-card-subtitle {
716
+ font-size: 14px;
717
+ color: #888;
718
+ margin-bottom: 16px;
719
+ }
720
+
721
+ .jr-text {
722
+ font-size: 15px;
723
+ line-height: 1.6;
724
+ color: #ddd;
725
+ margin-bottom: 12px;
726
+ }
727
+
728
+ .jr-text strong { color: #fff; }
729
+ .jr-text code { background: #000; padding: 1px 5px; border-radius: 4px; font-size: 13px; }
730
+ .jr-text pre { background: #000; padding: 10px; border-radius: 8px; overflow-x: auto; margin: 8px 0; }
731
+
732
+ .jr-image {
733
+ width: 100%;
734
+ border-radius: 12px;
735
+ margin-bottom: 12px;
736
+ }
737
+
738
+ .jr-image-caption {
739
+ font-size: 12px;
740
+ color: #888;
741
+ text-align: center;
742
+ margin-top: -8px;
743
+ margin-bottom: 12px;
744
+ }
745
+
746
+ .jr-metric {
747
+ display: flex;
748
+ flex-direction: column;
749
+ gap: 2px;
750
+ padding: 12px;
751
+ background: #222;
752
+ border-radius: 10px;
753
+ }
754
+
755
+ .jr-metric-label {
756
+ font-size: 11px;
757
+ color: #888;
758
+ text-transform: uppercase;
759
+ letter-spacing: 0.5px;
760
+ }
761
+
762
+ .jr-metric-value {
763
+ font-size: 22px;
764
+ font-weight: 700;
765
+ color: #fff;
766
+ }
767
+
768
+ .jr-metric-unit {
769
+ font-size: 14px;
770
+ color: #888;
771
+ font-weight: 400;
772
+ }
773
+
774
+ .jr-metric-grid {
775
+ display: grid;
776
+ gap: 8px;
777
+ margin-bottom: 12px;
778
+ }
779
+
780
+ .jr-checklist {
781
+ list-style: none;
782
+ padding: 0;
783
+ margin: 0 0 12px 0;
784
+ }
785
+
786
+ .jr-checklist-item {
787
+ display: flex;
788
+ align-items: center;
789
+ gap: 10px;
790
+ padding: 10px 0;
791
+ border-bottom: 1px solid #222;
792
+ font-size: 15px;
793
+ color: #ddd;
794
+ cursor: pointer;
795
+ }
796
+
797
+ .jr-checklist-item:last-child { border-bottom: none; }
798
+
799
+ .jr-check {
800
+ width: 22px;
801
+ height: 22px;
802
+ border-radius: 6px;
803
+ border: 2px solid #444;
804
+ display: flex;
805
+ align-items: center;
806
+ justify-content: center;
807
+ flex-shrink: 0;
808
+ transition: all 0.15s;
809
+ }
810
+
811
+ .jr-check.checked {
812
+ background: #2563eb;
813
+ border-color: #2563eb;
814
+ color: #fff;
815
+ }
816
+
817
+ .jr-checklist-text.checked {
818
+ text-decoration: line-through;
819
+ color: #666;
820
+ }
821
+
822
+ .jr-steps {
823
+ margin-bottom: 12px;
824
+ }
825
+
826
+ .jr-step {
827
+ display: flex;
828
+ align-items: flex-start;
829
+ gap: 12px;
830
+ padding: 10px 0;
831
+ }
832
+
833
+ .jr-step-num {
834
+ width: 28px;
835
+ height: 28px;
836
+ border-radius: 50%;
837
+ background: #333;
838
+ color: #888;
839
+ display: flex;
840
+ align-items: center;
841
+ justify-content: center;
842
+ font-size: 13px;
843
+ font-weight: 700;
844
+ flex-shrink: 0;
845
+ }
846
+
847
+ .jr-step.active .jr-step-num {
848
+ background: #2563eb;
849
+ color: #fff;
850
+ }
851
+
852
+ .jr-step.completed .jr-step-num {
853
+ background: #22c55e;
854
+ color: #fff;
855
+ }
856
+
857
+ .jr-step-text {
858
+ font-size: 15px;
859
+ color: #888;
860
+ padding-top: 3px;
861
+ }
862
+
863
+ .jr-step.active .jr-step-text {
864
+ color: #fff;
865
+ font-weight: 600;
866
+ }
867
+
868
+ .jr-step.completed .jr-step-text {
869
+ color: #666;
870
+ text-decoration: line-through;
871
+ }
872
+
873
+ .jr-alert {
874
+ padding: 12px 16px;
875
+ border-radius: 10px;
876
+ font-size: 14px;
877
+ margin-bottom: 12px;
878
+ display: flex;
879
+ align-items: center;
880
+ gap: 10px;
881
+ }
882
+
883
+ .jr-alert.info { background: #172554; color: #93c5fd; border: 1px solid #1e3a5f; }
884
+ .jr-alert.warning { background: #422006; color: #fbbf24; border: 1px solid #5c3a0a; }
885
+ .jr-alert.success { background: #052e16; color: #86efac; border: 1px solid #0a4a25; }
886
+ .jr-alert.error { background: #450a0a; color: #fca5a5; border: 1px solid #6b1010; }
887
+
888
+ .jr-table {
889
+ width: 100%;
890
+ border-collapse: collapse;
891
+ margin-bottom: 12px;
892
+ font-size: 14px;
893
+ }
894
+
895
+ .jr-table th {
896
+ text-align: left;
897
+ padding: 10px 12px;
898
+ background: #222;
899
+ color: #888;
900
+ font-weight: 600;
901
+ font-size: 12px;
902
+ text-transform: uppercase;
903
+ letter-spacing: 0.5px;
904
+ }
905
+
906
+ .jr-table td {
907
+ padding: 10px 12px;
908
+ color: #ddd;
909
+ border-bottom: 1px solid #222;
910
+ }
911
+
912
+ .jr-timer {
913
+ display: flex;
914
+ flex-direction: column;
915
+ align-items: center;
916
+ gap: 8px;
917
+ padding: 20px;
918
+ background: #222;
919
+ border-radius: 12px;
920
+ margin-bottom: 12px;
921
+ }
922
+
923
+ .jr-timer-display {
924
+ font-size: 48px;
925
+ font-weight: 700;
926
+ font-variant-numeric: tabular-nums;
927
+ color: #fff;
928
+ }
929
+
930
+ .jr-timer-label {
931
+ font-size: 14px;
932
+ color: #888;
933
+ }
934
+
935
+ .jr-timer-btn {
936
+ padding: 8px 24px;
937
+ border-radius: 8px;
938
+ border: none;
939
+ background: #2563eb;
940
+ color: #fff;
941
+ font-size: 14px;
942
+ font-weight: 600;
943
+ cursor: pointer;
944
+ }
945
+
946
+ .jr-badge {
947
+ display: inline-block;
948
+ padding: 3px 10px;
949
+ border-radius: 12px;
950
+ font-size: 12px;
951
+ font-weight: 600;
952
+ margin: 0 4px 8px 0;
953
+ }
954
+
955
+ .jr-divider {
956
+ height: 1px;
957
+ background: #2a2a2a;
958
+ margin: 16px 0;
959
+ }
668
960
  </style>
669
961
  </head>
670
962
  <body>
@@ -700,6 +992,11 @@ export function renderMobilePage(token) {
700
992
  <!-- Toast container -->
701
993
  <div class="toast-container" id="toast-container"></div>
702
994
 
995
+ <div id="render-panel" class="render-panel" style="display:none;">
996
+ <button class="render-close" id="render-close" type="button">&times;</button>
997
+ <div id="render-content"></div>
998
+ </div>
999
+
703
1000
  <button class="voice-btn hidden" id="voice-btn" type="button" aria-label="Voice message">
704
1001
  <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
705
1002
  <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/>
@@ -1126,8 +1423,12 @@ export function renderMobilePage(token) {
1126
1423
  // Store in history
1127
1424
  messageHistory.push(data);
1128
1425
 
1129
- // Show toast
1130
- showToast(data);
1426
+ // Route UI specs to renderer, text/images to toast
1427
+ if (data.uiSpec) {
1428
+ renderUISpec(data.uiSpec);
1429
+ } else {
1430
+ showToast(data);
1431
+ }
1131
1432
 
1132
1433
  // TTS: speak the message if requested
1133
1434
  if (data.speak && data.text && window.speechSynthesis) {
@@ -1546,6 +1847,267 @@ export function renderMobilePage(token) {
1546
1847
  function hideVoiceStatus() {
1547
1848
  voiceStatusEl.style.display = 'none';
1548
1849
  }
1850
+ // --- JSON Render UI ---
1851
+ var renderPanel = document.getElementById('render-panel');
1852
+ var renderContent = document.getElementById('render-content');
1853
+ var renderCloseBtn = document.getElementById('render-close');
1854
+ var activeTimers = [];
1855
+
1856
+ renderCloseBtn.addEventListener('click', function() {
1857
+ activeTimers.forEach(function(id) { clearInterval(id); });
1858
+ activeTimers = [];
1859
+ renderPanel.style.display = 'none';
1860
+ });
1861
+
1862
+ var COMPONENT_RENDERERS = {
1863
+ Card: function(props, children) {
1864
+ var div = document.createElement('div');
1865
+ div.className = 'jr-card';
1866
+ if (props.title) {
1867
+ var t = document.createElement('div');
1868
+ t.className = 'jr-card-title';
1869
+ t.textContent = props.title;
1870
+ div.appendChild(t);
1871
+ }
1872
+ if (props.subtitle) {
1873
+ var s = document.createElement('div');
1874
+ s.className = 'jr-card-subtitle';
1875
+ s.textContent = props.subtitle;
1876
+ div.appendChild(s);
1877
+ }
1878
+ children.forEach(function(c) { div.appendChild(c); });
1879
+ return div;
1880
+ },
1881
+
1882
+ Text: function(props) {
1883
+ var div = document.createElement('div');
1884
+ div.className = 'jr-text';
1885
+ div.innerHTML = renderBasicMarkdown(props.content || '');
1886
+ return div;
1887
+ },
1888
+
1889
+ Image: function(props) {
1890
+ var frag = document.createDocumentFragment();
1891
+ var img = document.createElement('img');
1892
+ img.className = 'jr-image';
1893
+ var src = props.src || '';
1894
+ if (src && !/^(https?:|data:image\/)/.test(src)) src = '';
1895
+ img.src = src;
1896
+ img.alt = props.alt || '';
1897
+ frag.appendChild(img);
1898
+ if (props.caption) {
1899
+ var cap = document.createElement('div');
1900
+ cap.className = 'jr-image-caption';
1901
+ cap.textContent = props.caption;
1902
+ frag.appendChild(cap);
1903
+ }
1904
+ return frag;
1905
+ },
1906
+
1907
+ Metric: function(props) {
1908
+ var div = document.createElement('div');
1909
+ div.className = 'jr-metric';
1910
+ var label = document.createElement('div');
1911
+ label.className = 'jr-metric-label';
1912
+ label.textContent = props.label || '';
1913
+ div.appendChild(label);
1914
+ var val = document.createElement('div');
1915
+ val.className = 'jr-metric-value';
1916
+ val.textContent = String(props.value || '');
1917
+ if (props.unit) {
1918
+ var unit = document.createElement('span');
1919
+ unit.className = 'jr-metric-unit';
1920
+ unit.textContent = ' ' + props.unit;
1921
+ val.appendChild(unit);
1922
+ }
1923
+ div.appendChild(val);
1924
+ return div;
1925
+ },
1926
+
1927
+ MetricGrid: function(props, children) {
1928
+ var div = document.createElement('div');
1929
+ div.className = 'jr-metric-grid';
1930
+ div.style.gridTemplateColumns = 'repeat(' + (props.columns || 2) + ', 1fr)';
1931
+ children.forEach(function(c) { div.appendChild(c); });
1932
+ return div;
1933
+ },
1934
+
1935
+ Checklist: function(props) {
1936
+ var ul = document.createElement('ul');
1937
+ ul.className = 'jr-checklist';
1938
+ (props.items || []).forEach(function(item, i) {
1939
+ var li = document.createElement('li');
1940
+ li.className = 'jr-checklist-item';
1941
+ var check = document.createElement('div');
1942
+ check.className = 'jr-check' + (item.checked ? ' checked' : '');
1943
+ check.textContent = item.checked ? '\u2713' : '';
1944
+ var text = document.createElement('span');
1945
+ text.className = 'jr-checklist-text' + (item.checked ? ' checked' : '');
1946
+ text.textContent = typeof item === 'string' ? item : (item.text || '');
1947
+ li.appendChild(check);
1948
+ li.appendChild(text);
1949
+ li.addEventListener('click', function() {
1950
+ item.checked = !item.checked;
1951
+ check.className = 'jr-check' + (item.checked ? ' checked' : '');
1952
+ check.textContent = item.checked ? '\u2713' : '';
1953
+ text.className = 'jr-checklist-text' + (item.checked ? ' checked' : '');
1954
+ emitUIAction('checklist_toggle', { index: i, checked: item.checked });
1955
+ });
1956
+ ul.appendChild(li);
1957
+ });
1958
+ return ul;
1959
+ },
1960
+
1961
+ StepByStep: function(props) {
1962
+ var div = document.createElement('div');
1963
+ div.className = 'jr-steps';
1964
+ var current = props.currentStep || 0;
1965
+ (props.steps || []).forEach(function(step, i) {
1966
+ var row = document.createElement('div');
1967
+ row.className = 'jr-step' + (i === current ? ' active' : '') + (i < current ? ' completed' : '');
1968
+ var num = document.createElement('div');
1969
+ num.className = 'jr-step-num';
1970
+ num.textContent = i < current ? '\u2713' : String(i + 1);
1971
+ var text = document.createElement('div');
1972
+ text.className = 'jr-step-text';
1973
+ text.textContent = step;
1974
+ row.appendChild(num);
1975
+ row.appendChild(text);
1976
+ div.appendChild(row);
1977
+ });
1978
+ return div;
1979
+ },
1980
+
1981
+ Alert: function(props) {
1982
+ var div = document.createElement('div');
1983
+ div.className = 'jr-alert ' + (props.variant || 'info');
1984
+ var icons = { info: '\u2139', warning: '\u26A0', success: '\u2713', error: '\u2717' };
1985
+ div.textContent = (icons[props.variant] || '') + ' ' + (props.message || '');
1986
+ return div;
1987
+ },
1988
+
1989
+ Table: function(props) {
1990
+ var table = document.createElement('table');
1991
+ table.className = 'jr-table';
1992
+ if (props.headers) {
1993
+ var thead = document.createElement('thead');
1994
+ var tr = document.createElement('tr');
1995
+ props.headers.forEach(function(h) {
1996
+ var th = document.createElement('th');
1997
+ th.textContent = h;
1998
+ tr.appendChild(th);
1999
+ });
2000
+ thead.appendChild(tr);
2001
+ table.appendChild(thead);
2002
+ }
2003
+ var tbody = document.createElement('tbody');
2004
+ (props.rows || []).forEach(function(row) {
2005
+ var tr = document.createElement('tr');
2006
+ row.forEach(function(cell) {
2007
+ var td = document.createElement('td');
2008
+ td.textContent = String(cell);
2009
+ tr.appendChild(td);
2010
+ });
2011
+ tbody.appendChild(tr);
2012
+ });
2013
+ table.appendChild(tbody);
2014
+ return table;
2015
+ },
2016
+
2017
+ Timer: function(props) {
2018
+ var div = document.createElement('div');
2019
+ div.className = 'jr-timer';
2020
+ var remaining = props.seconds || 0;
2021
+ var display = document.createElement('div');
2022
+ display.className = 'jr-timer-display';
2023
+ function fmt(s) {
2024
+ var m = Math.floor(s / 60);
2025
+ var sec = s % 60;
2026
+ return (m < 10 ? '0' : '') + m + ':' + (sec < 10 ? '0' : '') + sec;
2027
+ }
2028
+ display.textContent = fmt(remaining);
2029
+ div.appendChild(display);
2030
+ if (props.label) {
2031
+ var label = document.createElement('div');
2032
+ label.className = 'jr-timer-label';
2033
+ label.textContent = props.label;
2034
+ div.appendChild(label);
2035
+ }
2036
+ var btn = document.createElement('button');
2037
+ btn.className = 'jr-timer-btn';
2038
+ btn.textContent = 'Start';
2039
+ var interval = null;
2040
+ btn.addEventListener('click', function() {
2041
+ if (interval) {
2042
+ clearInterval(interval);
2043
+ interval = null;
2044
+ btn.textContent = 'Start';
2045
+ } else {
2046
+ btn.textContent = 'Pause';
2047
+ interval = setInterval(function() {
2048
+ remaining--;
2049
+ display.textContent = fmt(Math.max(0, remaining));
2050
+ if (remaining <= 0) {
2051
+ clearInterval(interval);
2052
+ interval = null;
2053
+ btn.textContent = 'Done';
2054
+ if (navigator.vibrate) navigator.vibrate([200, 100, 200]);
2055
+ emitUIAction('timer_complete', { label: props.label });
2056
+ }
2057
+ }, 1000);
2058
+ activeTimers.push(interval);
2059
+ }
2060
+ });
2061
+ div.appendChild(btn);
2062
+ return div;
2063
+ },
2064
+
2065
+ Badge: function(props) {
2066
+ var span = document.createElement('span');
2067
+ span.className = 'jr-badge';
2068
+ span.textContent = props.text || '';
2069
+ span.style.background = props.color || '#333';
2070
+ span.style.color = '#fff';
2071
+ return span;
2072
+ },
2073
+
2074
+ Divider: function() {
2075
+ var div = document.createElement('div');
2076
+ div.className = 'jr-divider';
2077
+ return div;
2078
+ }
2079
+ };
2080
+
2081
+ function renderUISpec(spec) {
2082
+ activeTimers.forEach(function(id) { clearInterval(id); });
2083
+ activeTimers = [];
2084
+ renderContent.innerHTML = '';
2085
+ if (!spec || !spec.root || !spec.elements) return;
2086
+ var rootEl = renderElement(spec, spec.root);
2087
+ if (rootEl) renderContent.appendChild(rootEl);
2088
+ renderPanel.style.display = '';
2089
+ }
2090
+
2091
+ function renderElement(spec, id, depth) {
2092
+ if (!depth) depth = 0;
2093
+ if (depth > 20) return null;
2094
+ var el = spec.elements[id];
2095
+ if (!el) return null;
2096
+ var renderer = COMPONENT_RENDERERS[el.type];
2097
+ if (!renderer) return null;
2098
+ var children = (el.children || []).map(function(cid) {
2099
+ return renderElement(spec, cid, depth + 1);
2100
+ }).filter(Boolean);
2101
+ return renderer(el.props || {}, children);
2102
+ }
2103
+
2104
+ function emitUIAction(action, data) {
2105
+ fetch(origin + '/mode-switch?token=' + encodeURIComponent(token), {
2106
+ method: 'POST',
2107
+ headers: { 'Content-Type': 'application/json' },
2108
+ body: JSON.stringify({ action: 'ui_action', uiAction: action, data: data })
2109
+ }).catch(function() {});
2110
+ }
1549
2111
  })();
1550
2112
  </script>
1551
2113
  </body>
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-page.js","sourceRoot":"","sources":["../src/mobile-page.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+sBW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+zBjC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"mobile-page.js","sourceRoot":"","sources":["../src/mobile-page.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAw/BW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwkCjC,CAAC;AACT,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { PhotoMeta, ServerConfig, OutgoingMessage, FrameData, CertPems } from "./types.js";
2
+ type ChannelNotifier = (content: string, meta: Record<string, string>) => void;
3
+ export declare function setChannelNotifier(notifier: ChannelNotifier): void;
2
4
  export interface UserAction {
3
5
  action: string;
4
6
  data?: Record<string, unknown>;
@@ -16,3 +18,4 @@ export declare function hasConnectedClients(): boolean;
16
18
  export declare function sendToPhone(message: OutgoingMessage): boolean;
17
19
  export declare function _resetState(): void;
18
20
  export declare function stopServer(): void;
21
+ export {};
package/dist/server.js CHANGED
@@ -13,6 +13,10 @@ const photoListeners = [];
13
13
  let pendingPhoto = null;
14
14
  let latestFrame = null;
15
15
  const sseClients = new Set();
16
+ let channelNotifier = null;
17
+ export function setChannelNotifier(notifier) {
18
+ channelNotifier = notifier;
19
+ }
16
20
  const actionListeners = [];
17
21
  let pendingAction = null;
18
22
  export function waitForPhoto(timeoutMs) {
@@ -55,6 +59,15 @@ export function waitForPhoto(timeoutMs) {
55
59
  });
56
60
  }
57
61
  function notifyPhotoListeners(meta) {
62
+ // Push channel notification (if channels enabled)
63
+ if (channelNotifier) {
64
+ channelNotifier(`Photo captured: ${meta.filename} (${Math.round(meta.sizeBytes / 1024)} KB)`, {
65
+ event: "photo",
66
+ file_name: meta.filename,
67
+ file_path: meta.absolutePath,
68
+ size_kb: String(Math.round(meta.sizeBytes / 1024)),
69
+ });
70
+ }
58
71
  if (photoListeners.length === 0) {
59
72
  pendingPhoto = meta;
60
73
  return;
@@ -65,6 +78,15 @@ function notifyPhotoListeners(meta) {
65
78
  }
66
79
  }
67
80
  function notifyActionListeners(action) {
81
+ // Push channel notifications for all user actions
82
+ if (channelNotifier) {
83
+ if (action.action === "voice_message") {
84
+ channelNotifier(action.data?.text || "(voice)", { event: "voice", speaker: "user" });
85
+ }
86
+ else {
87
+ channelNotifier(`User action: ${action.action}`, { event: action.action });
88
+ }
89
+ }
68
90
  if (actionListeners.length === 0) {
69
91
  pendingAction = action;
70
92
  return;
@@ -369,6 +391,7 @@ export function _resetState() {
369
391
  latestFrame = null;
370
392
  photoListeners.length = 0;
371
393
  actionListeners.length = 0;
394
+ channelNotifier = null;
372
395
  for (const client of sseClients) {
373
396
  client.end();
374
397
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -17,6 +17,7 @@ export interface OutgoingMessage {
17
17
  imageData?: string;
18
18
  mimeType?: string;
19
19
  speak?: boolean;
20
+ uiSpec?: UISpec;
20
21
  }
21
22
  export interface FrameData {
22
23
  data: Buffer;
@@ -29,3 +30,12 @@ export interface CertPems {
29
30
  key: string;
30
31
  cert: string;
31
32
  }
33
+ export interface UISpec {
34
+ root: string;
35
+ elements: Record<string, UIElement>;
36
+ }
37
+ export interface UIElement {
38
+ type: string;
39
+ props?: Record<string, unknown>;
40
+ children?: string[];
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccphoto",
3
- "version": "0.2.0",
3
+ "version": "0.3.0-beta.1",
4
4
  "description": "Bridge your phone camera to Claude Code over the local network",
5
5
  "license": "MIT",
6
6
  "type": "module",