@chrysb/alphaclaw 0.8.5 → 0.8.7-beta.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.
Files changed (45) hide show
  1. package/bin/alphaclaw.js +56 -20
  2. package/lib/public/css/explorer.css +48 -0
  3. package/lib/public/css/shell.css +149 -0
  4. package/lib/public/css/tailwind.generated.css +1 -1
  5. package/lib/public/css/theme.css +265 -0
  6. package/lib/public/dist/app.bundle.js +2441 -2352
  7. package/lib/public/js/app.js +7 -0
  8. package/lib/public/js/components/gateway.js +6 -3
  9. package/lib/public/js/components/general/index.js +2 -0
  10. package/lib/public/js/components/icons.js +38 -0
  11. package/lib/public/js/components/models-tab/provider-auth-card.js +60 -49
  12. package/lib/public/js/components/models-tab/use-models.js +74 -9
  13. package/lib/public/js/components/models.js +52 -37
  14. package/lib/public/js/components/onboarding/use-welcome-codex.js +34 -24
  15. package/lib/public/js/components/onboarding/welcome-config.js +76 -10
  16. package/lib/public/js/components/onboarding/welcome-form-step.js +31 -11
  17. package/lib/public/js/components/onboarding/welcome-header.js +12 -14
  18. package/lib/public/js/components/onboarding/welcome-setup-step.js +3 -3
  19. package/lib/public/js/components/providers.js +53 -42
  20. package/lib/public/js/components/routes/general-route.js +2 -0
  21. package/lib/public/js/components/routes/watchdog-route.js +2 -0
  22. package/lib/public/js/components/sidebar.js +29 -8
  23. package/lib/public/js/components/theme-toggle.js +113 -0
  24. package/lib/public/js/components/update-modal-helpers.js +12 -0
  25. package/lib/public/js/components/update-modal.js +2 -1
  26. package/lib/public/js/components/watchdog-tab/index.js +2 -0
  27. package/lib/public/js/components/welcome/index.js +1 -2
  28. package/lib/public/js/components/welcome/use-welcome.js +153 -38
  29. package/lib/public/js/hooks/use-app-shell-controller.js +33 -9
  30. package/lib/public/js/lib/api.js +35 -0
  31. package/lib/public/js/lib/codex-oauth-window.js +22 -0
  32. package/lib/public/js/lib/model-catalog.js +20 -0
  33. package/lib/public/js/lib/storage-keys.js +1 -1
  34. package/lib/public/login.html +8 -4
  35. package/lib/public/setup.html +9 -0
  36. package/lib/server/alphaclaw-version.js +30 -127
  37. package/lib/server/db/webhooks/index.js +48 -8
  38. package/lib/server/model-catalog-cache.js +251 -0
  39. package/lib/server/openclaw-version.js +59 -130
  40. package/lib/server/pending-alphaclaw-update.js +71 -0
  41. package/lib/server/pending-openclaw-update.js +71 -0
  42. package/lib/server/routes/models.js +14 -23
  43. package/lib/server/routes/system.js +6 -1
  44. package/lib/server/routes/webhooks.js +12 -1
  45. package/package.json +1 -1
@@ -52,6 +52,52 @@
52
52
  --status-info-border: rgba(14, 116, 144, 0.8);
53
53
  }
54
54
 
55
+ /* ── Light theme ─────────────────────────────────── */
56
+ [data-theme="light"] {
57
+ --bg: #f8f9fb;
58
+ --bg-sidebar: #f0f2f5;
59
+ --bg-content: #ffffff;
60
+ --bg-hover: rgba(0, 0, 0, 0.04);
61
+ --bg-active: rgba(8, 145, 178, 0.08);
62
+ --border: rgba(0, 0, 0, 0.08);
63
+ --border-strong: rgba(0, 0, 0, 0.15);
64
+ --text: #1f2937;
65
+ --text-muted: #6b7280;
66
+ --text-dim: #9ca3af;
67
+ --text-bright: #111827;
68
+ --card-label-bright: #1f2937;
69
+ --accent: #0891b2;
70
+ --accent-dim: rgba(8, 145, 178, 0.3);
71
+ --accent-link: #0e7490;
72
+ --orange: #c2410c;
73
+ --comment: #9ca3af;
74
+ --keyword: #dc2626;
75
+ --string: #2563eb;
76
+ --number: #0284c7;
77
+ --panel-bg-contrast: rgba(0, 0, 0, 0.02);
78
+ --panel-border-contrast: rgba(0, 0, 0, 0.1);
79
+ --field-bg-contrast: rgba(0, 0, 0, 0.04);
80
+ --field-border-contrast: rgba(0, 0, 0, 0.15);
81
+ --overlay: rgba(0, 0, 0, 0.5);
82
+
83
+ --status-error: #dc2626;
84
+ --status-error-muted: #ef4444;
85
+ --status-error-bg: rgba(254, 226, 226, 0.95);
86
+ --status-error-border: rgba(252, 165, 165, 0.8);
87
+ --status-warning: #a16207;
88
+ --status-warning-muted: #854d0e;
89
+ --status-warning-bg: rgba(254, 249, 195, 0.95);
90
+ --status-warning-border: rgba(202, 138, 4, 0.5);
91
+ --status-success: #16a34a;
92
+ --status-success-muted: #22c55e;
93
+ --status-success-bg: rgba(220, 252, 231, 0.95);
94
+ --status-success-border: rgba(134, 239, 172, 0.8);
95
+ --status-info: #0891b2;
96
+ --status-info-muted: #06b6d4;
97
+ --status-info-bg: rgba(207, 250, 254, 0.95);
98
+ --status-info-border: rgba(103, 232, 249, 0.8);
99
+ }
100
+
55
101
  html, body { height: 100%; }
56
102
 
57
103
  body {
@@ -62,6 +108,20 @@ body {
62
108
  line-height: 1.6;
63
109
  }
64
110
 
111
+ .ac-logo-mark {
112
+ display: inline-block;
113
+ flex: 0 0 auto;
114
+ width: var(--ac-logo-width, 20px);
115
+ height: var(--ac-logo-height, 20px);
116
+ background: #00efff;
117
+ -webkit-mask: url("../img/logo.svg") center / contain no-repeat;
118
+ mask: url("../img/logo.svg") center / contain no-repeat;
119
+ }
120
+
121
+ [data-theme="light"] .ac-logo-mark {
122
+ background: var(--accent);
123
+ }
124
+
65
125
  /* Subtle grid texture overlay */
66
126
  body::before {
67
127
  content: '';
@@ -738,3 +798,208 @@ textarea:focus {
738
798
  overflow-y: auto !important;
739
799
  }
740
800
 
801
+ /* ── Light theme overrides for hardcoded dark patterns ── */
802
+
803
+ [data-theme="light"] body::before {
804
+ background-image:
805
+ linear-gradient(rgba(0, 0, 0, 0.03) 1px, transparent 1px),
806
+ linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px);
807
+ }
808
+
809
+ [data-theme="light"] .ac-history-item {
810
+ background: rgba(0, 0, 0, 0.02);
811
+ }
812
+
813
+ [data-theme="light"] .ac-history-summary {
814
+ color: var(--text);
815
+ }
816
+
817
+ [data-theme="light"] .ac-history-item[open] > .ac-history-summary .ac-history-toggle {
818
+ color: var(--text);
819
+ }
820
+
821
+ [data-theme="light"] .ac-surface-inset {
822
+ background: rgba(0, 0, 0, 0.02);
823
+ }
824
+
825
+ [data-theme="light"] .snippet-collapse-fade {
826
+ background: linear-gradient(to bottom, transparent 0%, rgba(255, 255, 255, 0.85) 70%);
827
+ }
828
+
829
+ [data-theme="light"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus,
830
+ [data-theme="light"] select:focus,
831
+ [data-theme="light"] textarea:focus {
832
+ border-color: rgba(0, 0, 0, 0.35);
833
+ }
834
+
835
+ [data-theme="light"] ::-webkit-scrollbar-thumb {
836
+ background: rgba(0, 0, 0, 0.12);
837
+ }
838
+
839
+ [data-theme="light"] .scope-btn { background: rgba(0, 0, 0, 0.03); }
840
+ [data-theme="light"] .scope-btn-read.active,
841
+ [data-theme="light"] .scope-btn-write.active {
842
+ background: rgba(0, 0, 0, 0.03);
843
+ color: var(--text-bright);
844
+ border-color: rgba(0, 0, 0, 0.35);
845
+ }
846
+
847
+ [data-theme="light"] .ac-btn-cyan {
848
+ border: 1px solid var(--accent-dim);
849
+ background: linear-gradient(180deg, rgba(8, 145, 178, 0.1) 0%, rgba(8, 145, 178, 0.05) 100%);
850
+ color: var(--accent);
851
+ box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.08);
852
+ }
853
+
854
+ [data-theme="light"] .ac-btn-cyan:hover:not(:disabled) {
855
+ border-color: rgba(8, 145, 178, 0.6);
856
+ background: linear-gradient(180deg, rgba(8, 145, 178, 0.16) 0%, rgba(8, 145, 178, 0.08) 100%);
857
+ color: #065666;
858
+ box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.15), 0 0 12px rgba(8, 145, 178, 0.1);
859
+ }
860
+
861
+ [data-theme="light"] .ac-btn-cyan-ghost {
862
+ border: 1px solid var(--accent-dim);
863
+ color: var(--accent);
864
+ background: rgba(8, 145, 178, 0.04);
865
+ }
866
+
867
+ [data-theme="light"] .ac-btn-cyan-ghost:hover {
868
+ border-color: rgba(8, 145, 178, 0.5);
869
+ color: #065666;
870
+ background: rgba(8, 145, 178, 0.08);
871
+ }
872
+
873
+ [data-theme="light"] .ac-btn-secondary {
874
+ color: var(--text);
875
+ background: rgba(0, 0, 0, 0.02);
876
+ }
877
+
878
+ [data-theme="light"] .ac-btn-secondary:hover:not(:disabled) {
879
+ border-color: rgba(0, 0, 0, 0.25);
880
+ color: var(--text-bright);
881
+ background: rgba(0, 0, 0, 0.04);
882
+ }
883
+
884
+ [data-theme="light"] .ac-btn-ghost:hover:not(:disabled) {
885
+ color: var(--text-bright);
886
+ }
887
+
888
+ [data-theme="light"] .ac-btn-danger {
889
+ border: 1px solid rgba(220, 38, 38, 0.3);
890
+ background: rgba(220, 38, 38, 0.06);
891
+ color: #dc2626;
892
+ }
893
+
894
+ [data-theme="light"] .ac-btn-danger:hover:not(:disabled) {
895
+ border-color: rgba(220, 38, 38, 0.5);
896
+ background: rgba(220, 38, 38, 0.1);
897
+ color: #b91c1c;
898
+ }
899
+
900
+ [data-theme="light"] .ac-btn-green {
901
+ border: 1px solid rgba(22, 163, 74, 0.3);
902
+ background: linear-gradient(180deg, rgba(22, 163, 74, 0.1) 0%, rgba(22, 163, 74, 0.05) 100%);
903
+ color: #16a34a;
904
+ box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.08);
905
+ }
906
+
907
+ [data-theme="light"] .ac-btn-green:hover:not(:disabled) {
908
+ border-color: rgba(22, 163, 74, 0.5);
909
+ background: linear-gradient(180deg, rgba(22, 163, 74, 0.16) 0%, rgba(22, 163, 74, 0.08) 100%);
910
+ color: #15803d;
911
+ box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.15), 0 0 12px rgba(22, 163, 74, 0.08);
912
+ }
913
+
914
+ [data-theme="light"] .ac-toggle-track {
915
+ background: rgba(0, 0, 0, 0.1);
916
+ }
917
+
918
+ [data-theme="light"] .ac-toggle-thumb {
919
+ background: #9ca3af;
920
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
921
+ }
922
+
923
+ [data-theme="light"] .ac-toggle-input:checked + .ac-toggle-track {
924
+ border-color: rgba(8, 145, 178, 0.6);
925
+ background: rgba(8, 145, 178, 0.12);
926
+ box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.15);
927
+ }
928
+
929
+ [data-theme="light"] .ac-toggle-input:checked + .ac-toggle-track .ac-toggle-thumb {
930
+ background: #0891b2;
931
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08);
932
+ }
933
+
934
+ [data-theme="light"] .ac-toggle-label {
935
+ color: var(--text);
936
+ }
937
+
938
+ [data-theme="light"] .ac-path-card {
939
+ background: rgba(0, 0, 0, 0.02);
940
+ }
941
+
942
+ [data-theme="light"] .ac-path-card:hover {
943
+ border-color: rgba(8, 145, 178, 0.4);
944
+ background: rgba(8, 145, 178, 0.04);
945
+ box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.08), 0 0 12px rgba(8, 145, 178, 0.06);
946
+ }
947
+
948
+ [data-theme="light"] .ac-path-card:hover .ac-path-title {
949
+ color: #065666;
950
+ }
951
+
952
+ [data-theme="light"] .ac-path-card:hover .ac-path-desc {
953
+ color: var(--text-muted);
954
+ }
955
+
956
+ [data-theme="light"] .ac-segmented-control {
957
+ background: rgba(0, 0, 0, 0.02);
958
+ border-color: rgba(0, 0, 0, 0.12);
959
+ }
960
+
961
+ [data-theme="light"] .ac-segmented-control-button:hover {
962
+ background: rgba(0, 0, 0, 0.04);
963
+ }
964
+
965
+ [data-theme="light"] .ac-segmented-control-button.active {
966
+ background: rgba(8, 145, 178, 0.12);
967
+ color: #0e7490;
968
+ }
969
+
970
+ [data-theme="light"] .ac-segmented-control-dark {
971
+ background: rgba(0, 0, 0, 0.04);
972
+ }
973
+
974
+ /* Modal and link overrides for light mode */
975
+ [data-theme="light"] .bg-modal {
976
+ background: #ffffff;
977
+ }
978
+
979
+ [data-theme="light"] a[style*="color: rgba(99, 235, 255"] {
980
+ color: #0e7490 !important;
981
+ }
982
+
983
+ [data-theme="light"] a[style*="color: rgba(99, 235, 255"]:hover {
984
+ color: var(--text-bright) !important;
985
+ }
986
+
987
+ [data-theme="light"] .text-cyan-400 {
988
+ color: #0e7490 !important;
989
+ }
990
+
991
+ [data-theme="light"] .text-cyan-300 {
992
+ color: #0e7490 !important;
993
+ }
994
+
995
+ [data-theme="light"] .text-blue-400 {
996
+ color: #1d4ed8 !important;
997
+ }
998
+
999
+ [data-theme="light"] .text-indigo-300 {
1000
+ color: #4338ca !important;
1001
+ }
1002
+
1003
+ [data-theme="light"] .text-purple-400 {
1004
+ color: #7e22ce !important;
1005
+ }