@mooncompany/uplink-chat 0.32.3 → 0.34.0
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/bin/uplink.js +1 -1
- package/middleware/error-handler.js +1 -1
- package/package.json +1 -1
- package/public/css/{app.bc7e7484.css → app.09572269.css} +14 -13
- package/public/css/markdown.css +28 -0
- package/public/css/mobile.540efab9.css +610 -0
- package/public/css/mobile.css +9 -13
- package/public/css/{split-view.4bc23474.css → split-view.4e286356.css} +145 -9
- package/public/css/themes.css +687 -19
- package/public/dist/bundle.9b202855.js +1 -0
- package/public/img/wordmark.svg +2 -16
- package/public/index.html +107 -7
- package/public/js/agents-data.js +1 -1
- package/public/js/agents-ui.js +1 -1
- package/public/js/agents.js +1 -1
- package/public/js/app.js +1 -1
- package/public/js/appearance-settings.js +1 -1
- package/public/js/artifacts.js +1 -1
- package/public/js/audio-pcm-processor.js +1 -1
- package/public/js/audio-queue.js +1 -1
- package/public/js/bootstrap.js +1 -1
- package/public/js/chat.js +1 -1
- package/public/js/commands.js +1 -1
- package/public/js/connection-api.js +1 -1
- package/public/js/connection.js +1 -1
- package/public/js/context-tracker.js +1 -1
- package/public/js/core.js +1 -1
- package/public/js/cron-panel.js +1 -1
- package/public/js/dashboard.js +1 -1
- package/public/js/developer.js +1 -1
- package/public/js/encryption.js +1 -1
- package/public/js/errors.js +1 -1
- package/public/js/event-bus.js +1 -1
- package/public/js/fetch-utils.js +1 -1
- package/public/js/file-handler.js +1 -1
- package/public/js/files.js +1 -1
- package/public/js/gateway-chat.js +1 -1
- package/public/js/logger.js +1 -1
- package/public/js/markdown.js +1 -1
- package/public/js/message-actions.js +1 -1
- package/public/js/message-renderer.js +1 -1
- package/public/js/missed-messages.js +1 -1
- package/public/js/mobile-debug.js +1 -1
- package/public/js/notifications.js +1 -1
- package/public/js/offline-queue.js +1 -1
- package/public/js/onboarding.js +1 -1
- package/public/js/panels.js +1 -1
- package/public/js/premium.js +1 -1
- package/public/js/primary-header.js +1 -1
- package/public/js/realtime-voice.js +1 -1
- package/public/js/satellite-sync.js +1 -1
- package/public/js/satellite-ui.js +1 -1
- package/public/js/satellites.js +1 -1
- package/public/js/settings.js +1 -1
- package/public/js/shortcuts.js +1 -1
- package/public/js/split-chat.js +1 -1
- package/public/js/split-resize.js +1 -1
- package/public/js/splitview.js +1 -1
- package/public/js/storage.js +1 -1
- package/public/js/streaming-handler.js +1 -1
- package/public/js/stt-settings.js +1 -1
- package/public/js/themes.js +1 -1
- package/public/js/timestamps.js +1 -1
- package/public/js/tts-settings.js +1 -1
- package/public/js/ui.js +1 -1
- package/public/js/update-notifier.js +1 -1
- package/public/js/utils/constants.js +1 -1
- package/public/js/utils/icons.js +1 -1
- package/public/js/utils/sanitize.js +1 -1
- package/public/js/utils/sse-parser.js +1 -1
- package/public/js/vad.js +1 -1
- package/public/js/vendor/dompurify.min.js +1 -1
- package/public/js/voice-settings-v2.js +1 -1
- package/public/js/voice.js +1 -1
- package/public/sw.js +1 -1
- package/server/channel.js +1 -1
- package/server/chat.js +1 -1
- package/server/config-store.js +1 -1
- package/server/config.js +1 -1
- package/server/context.js +1 -1
- package/server/gateway-api-proxy.js +1 -1
- package/server/gateway-commands.js +1 -1
- package/server/gateway-proxy.js +1 -1
- package/server/index.js +1 -1
- package/server/logger.js +1 -1
- package/server/message-store.js +1 -1
- package/server/middleware/auth.js +1 -1
- package/server/middleware.js +1 -1
- package/server/openclaw-discover.js +1 -1
- package/server/premium/index.js +1 -1
- package/server/premium/license.js +1 -1
- package/server/realtime/bridge.js +1 -1
- package/server/realtime/index.js +1 -1
- package/server/realtime/tts-stream.js +1 -1
- package/server/routes/agents.js +1 -1
- package/server/routes/artifacts.js +1 -1
- package/server/routes/chat.js +1 -1
- package/server/routes/config-settings.js +1 -1
- package/server/routes/config.js +1 -1
- package/server/routes/cron.js +1 -1
- package/server/routes/files.js +1 -1
- package/server/routes/index.js +1 -1
- package/server/routes/media.js +1 -1
- package/server/routes/missed-messages.js +1 -1
- package/server/routes/premium.js +1 -1
- package/server/routes/push.js +1 -1
- package/server/routes/satellite.js +1 -1
- package/server/routes/status.js +1 -1
- package/server/routes/stt.js +1 -1
- package/server/routes/voice.js +1 -1
- package/server/routes/webhooks.js +1 -1
- package/server/routes.js +1 -1
- package/server/runtime-config.js +1 -1
- package/server/share.js +1 -1
- package/server/stt/faster-whisper.js +1 -1
- package/server/stt/groq.js +1 -1
- package/server/stt/index.js +1 -1
- package/server/stt/openai.js +1 -1
- package/server/sync.js +1 -1
- package/server/tailscale-https.js +1 -1
- package/server/tts.js +1 -1
- package/server/update-checker.js +1 -1
- package/server/utils/filename.js +1 -1
- package/server/utils.js +1 -1
- package/server/watchdog.js +1 -1
- package/server/websocket/broadcast.js +1 -1
- package/server/websocket/connections.js +1 -1
- package/server/websocket/index.js +1 -1
- package/server/websocket/routing.js +1 -1
- package/server/websocket/sync.js +1 -1
- package/server.js +1 -1
- package/utils/detect-tool-usage.js +1 -1
- package/utils/errors.js +1 -1
- package/utils/html-escape.js +1 -1
- package/utils/id-sanitize.js +1 -1
- package/utils/response.js +1 -1
- package/utils/with-retry.js +1 -1
- package/public/dist/bundle.493af136.js +0 -1
|
@@ -114,7 +114,7 @@ body.split-view-active #splitViewBtn::after {
|
|
|
114
114
|
.split-pane-secondary {
|
|
115
115
|
display: none;
|
|
116
116
|
flex-direction: column;
|
|
117
|
-
background:
|
|
117
|
+
background: transparent;
|
|
118
118
|
overflow: hidden;
|
|
119
119
|
min-width: 0;
|
|
120
120
|
border-left: 1px solid var(--border);
|
|
@@ -218,7 +218,9 @@ body.split-view-active #splitViewBtn::after {
|
|
|
218
218
|
justify-content: space-between;
|
|
219
219
|
padding: var(--space-3) var(--space-4);
|
|
220
220
|
border-bottom: 1px solid var(--border);
|
|
221
|
-
background:
|
|
221
|
+
background: color-mix(in srgb, var(--bg) 70%, transparent);
|
|
222
|
+
-webkit-backdrop-filter: blur(12px) saturate(1.2);
|
|
223
|
+
backdrop-filter: blur(12px) saturate(1.2);
|
|
222
224
|
flex-shrink: 0;
|
|
223
225
|
min-height: 48px;
|
|
224
226
|
}
|
|
@@ -293,12 +295,48 @@ body.split-view-active #splitViewBtn::after {
|
|
|
293
295
|
color: var(--accent);
|
|
294
296
|
}
|
|
295
297
|
|
|
298
|
+
|
|
299
|
+
/* Resync button — matches close button dimensions */
|
|
300
|
+
.split-secondary-resync {
|
|
301
|
+
margin-left: var(--space-2);
|
|
302
|
+
display: flex;
|
|
303
|
+
align-items: center;
|
|
304
|
+
justify-content: center;
|
|
305
|
+
width: 28px;
|
|
306
|
+
height: 28px;
|
|
307
|
+
border: none;
|
|
308
|
+
background: transparent;
|
|
309
|
+
color: var(--text-muted);
|
|
310
|
+
cursor: pointer;
|
|
311
|
+
border-radius: var(--radius-md);
|
|
312
|
+
transition: all 0.2s ease;
|
|
313
|
+
flex-shrink: 0;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.split-secondary-resync:hover {
|
|
317
|
+
background: var(--accent-10);
|
|
318
|
+
color: var(--accent);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.split-secondary-resync:active {
|
|
322
|
+
transform: scale(0.95);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.split-secondary-resync.spinning svg {
|
|
326
|
+
animation: resync-spin 0.8s ease-in-out;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@keyframes resync-spin {
|
|
330
|
+
from { transform: rotate(0deg); }
|
|
331
|
+
to { transform: rotate(360deg); }
|
|
332
|
+
}
|
|
333
|
+
|
|
296
334
|
.split-secondary-close {
|
|
297
335
|
display: flex;
|
|
298
336
|
align-items: center;
|
|
299
337
|
justify-content: center;
|
|
300
|
-
width:
|
|
301
|
-
height:
|
|
338
|
+
width: 28px;
|
|
339
|
+
height: 28px;
|
|
302
340
|
border: none;
|
|
303
341
|
background: transparent;
|
|
304
342
|
color: var(--text-muted);
|
|
@@ -411,7 +449,9 @@ body.split-view-active #splitViewBtn::after {
|
|
|
411
449
|
|
|
412
450
|
.split-secondary-input {
|
|
413
451
|
padding: var(--space-3) var(--space-4);
|
|
414
|
-
background: transparent;
|
|
452
|
+
background: color-mix(in srgb, var(--bg) 70%, transparent);
|
|
453
|
+
-webkit-backdrop-filter: blur(12px) saturate(1.2);
|
|
454
|
+
backdrop-filter: blur(12px) saturate(1.2);
|
|
415
455
|
border-top: 1px solid var(--border);
|
|
416
456
|
flex-shrink: 0;
|
|
417
457
|
}
|
|
@@ -522,10 +562,11 @@ body.split-view-active #splitViewBtn::after {
|
|
|
522
562
|
padding: var(--space-3) var(--space-4);
|
|
523
563
|
border-bottom: 1px solid var(--border);
|
|
524
564
|
flex-shrink: 0;
|
|
565
|
+
min-height: 48px;
|
|
525
566
|
}
|
|
526
567
|
|
|
527
568
|
.split-chat-picker-title {
|
|
528
|
-
font-size: var(--text-
|
|
569
|
+
font-size: var(--text-sm);
|
|
529
570
|
font-weight: 600;
|
|
530
571
|
color: var(--text);
|
|
531
572
|
text-transform: uppercase;
|
|
@@ -533,8 +574,8 @@ body.split-view-active #splitViewBtn::after {
|
|
|
533
574
|
}
|
|
534
575
|
|
|
535
576
|
.split-chat-picker-close {
|
|
536
|
-
width:
|
|
537
|
-
height:
|
|
577
|
+
width: 28px;
|
|
578
|
+
height: 28px;
|
|
538
579
|
display: flex;
|
|
539
580
|
align-items: center;
|
|
540
581
|
justify-content: center;
|
|
@@ -833,6 +874,26 @@ body.split-view-active #splitViewBtn::after {
|
|
|
833
874
|
/* Artifacts panel header shows its own close button in split mode */
|
|
834
875
|
body.split-artifacts-active .split-artifacts-pane .artifacts-panel-header {
|
|
835
876
|
display: flex;
|
|
877
|
+
padding: var(--space-3) var(--space-4);
|
|
878
|
+
padding-top: var(--space-3);
|
|
879
|
+
min-height: 48px;
|
|
880
|
+
background: var(--bg);
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
/* Shrink panel buttons in split mode to match chat header buttons */
|
|
884
|
+
body.split-artifacts-active .split-artifacts-pane .panel-close,
|
|
885
|
+
body.split-artifacts-active .split-artifacts-pane .artifacts-panel-refresh {
|
|
886
|
+
min-width: 28px;
|
|
887
|
+
min-height: 28px;
|
|
888
|
+
width: 28px;
|
|
889
|
+
height: 28px;
|
|
890
|
+
font-size: var(--text-lg);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
body.split-artifacts-active .split-artifacts-pane .artifacts-tab {
|
|
894
|
+
padding: var(--space-1) var(--space-3);
|
|
895
|
+
font-size: var(--text-xs);
|
|
896
|
+
min-height: unset;
|
|
836
897
|
}
|
|
837
898
|
|
|
838
899
|
/* Override the panel-content to fill the pane */
|
|
@@ -855,4 +916,79 @@ body.split-artifacts-active #artifactsBtn {
|
|
|
855
916
|
position: relative;
|
|
856
917
|
border: 1px solid transparent;
|
|
857
918
|
animation: streamingRainbow 4s linear infinite;
|
|
858
|
-
}
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
/* Session selector — border-top to match border-bottom on mobile */
|
|
922
|
+
@media (max-width: 1023px) {
|
|
923
|
+
.split-primary-header {
|
|
924
|
+
border-top: 1px solid var(--border);
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
/* ==========================================================================
|
|
929
|
+
Split Chat File Upload
|
|
930
|
+
========================================================================== */
|
|
931
|
+
|
|
932
|
+
.split-image-preview {
|
|
933
|
+
display: none;
|
|
934
|
+
position: relative;
|
|
935
|
+
padding: var(--space-2) var(--space-4);
|
|
936
|
+
border-top: 1px solid var(--border);
|
|
937
|
+
background: var(--bg-secondary);
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
.split-image-preview.visible {
|
|
941
|
+
display: flex;
|
|
942
|
+
align-items: center;
|
|
943
|
+
gap: var(--space-3);
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
.split-image-preview img {
|
|
947
|
+
max-height: 120px;
|
|
948
|
+
max-width: 200px;
|
|
949
|
+
border-radius: var(--radius-md);
|
|
950
|
+
object-fit: contain;
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
.split-file-label {
|
|
954
|
+
font-size: var(--text-sm);
|
|
955
|
+
color: var(--text-muted);
|
|
956
|
+
display: flex;
|
|
957
|
+
align-items: center;
|
|
958
|
+
gap: var(--space-2);
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
.split-file-label .file-size {
|
|
962
|
+
color: var(--text-dim);
|
|
963
|
+
font-size: var(--text-xs);
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
.split-preview-remove {
|
|
967
|
+
position: absolute;
|
|
968
|
+
top: var(--space-2);
|
|
969
|
+
right: var(--space-4);
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.split-attach-btn {
|
|
973
|
+
display: flex;
|
|
974
|
+
align-items: center;
|
|
975
|
+
justify-content: center;
|
|
976
|
+
width: 36px;
|
|
977
|
+
height: 36px;
|
|
978
|
+
border: none;
|
|
979
|
+
background: transparent;
|
|
980
|
+
color: var(--text-muted);
|
|
981
|
+
cursor: pointer;
|
|
982
|
+
border-radius: var(--radius-md);
|
|
983
|
+
transition: all 0.15s ease;
|
|
984
|
+
flex-shrink: 0;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
.split-attach-btn:hover {
|
|
988
|
+
background: var(--accent-10);
|
|
989
|
+
color: var(--accent);
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.split-attach-btn:active {
|
|
993
|
+
transform: scale(0.95);
|
|
994
|
+
}
|