meta-sovereign 0.53.0 → 0.53.2
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 +1 -1
- package/js/src/crm/reengage.js +18 -5
- package/js/src/replies/reply-cache.js +30 -26
- package/js/src/server/live-subset.js +46 -0
- package/js/src/server/local-tls.js +14 -3
- package/js/src/server/routes-automations.js +9 -1
- package/js/src/server/routes-derived.js +36 -20
- package/js/src/server/routes-events.js +1 -1
- package/js/src/server/routes-telegram.js +7 -0
- package/js/src/sources/telegram-account.js +8 -3
- package/js/src/sources/telegram-backfill.js +5 -4
- package/js/src/sources/telegram-business-bots.js +1 -1
- package/js/src/sources/telegram-chat-info.js +6 -1
- package/js/src/sources/telegram-chat-url.js +34 -0
- package/js/src/sources/telegram-dialog-state.js +60 -0
- package/js/src/sources/telegram-forum.js +48 -1
- package/js/src/storage/app-directory.js +4 -3
- package/js/src/storage/dual-store.js +6 -0
- package/js/src/storage/secret-store.js +6 -1
- package/js/src/web/api-errors.js +4 -1
- package/js/src/web/app.css +51 -26
- package/js/src/web/app.min.js +95 -95
- package/js/src/web/chat-automation.js +8 -1
- package/js/src/web/chat-business-bots.js +9 -2
- package/js/src/web/chat-drag.js +26 -2
- package/js/src/web/chat-feed.js +165 -0
- package/js/src/web/chat-follow.js +22 -6
- package/js/src/web/chat-live.js +23 -140
- package/js/src/web/chat-model.js +27 -5
- package/js/src/web/chat-row.js +3 -1
- package/js/src/web/chat-sidebar.js +6 -4
- package/js/src/web/chat-state.js +9 -3
- package/js/src/web/chat-suggest.js +4 -7
- package/js/src/web/chat-view.js +126 -71
- package/js/src/web/client.js +33 -83
- package/js/src/web/connections/index.js +1 -1
- package/js/src/web/discover.js +19 -9
- package/js/src/web/dom.js +14 -5
- package/js/src/web/locales/en-chat.js +15 -11
- package/js/src/web/locales/en.js +17 -0
- package/js/src/web/locales/hi-chat.js +16 -10
- package/js/src/web/locales/hi.js +15 -0
- package/js/src/web/locales/ru-chat.js +16 -10
- package/js/src/web/locales/ru.js +17 -0
- package/js/src/web/locales/zh-chat.js +15 -9
- package/js/src/web/locales/zh.js +15 -0
- package/js/src/web/navigation-counts.js +7 -5
- package/js/src/web/operator-model.js +7 -3
- package/js/src/web/operator-prefs.js +58 -0
- package/js/src/web/operator-unread.js +97 -0
- package/js/src/web/operator-view.js +64 -40
- package/js/src/web/person-panel.js +20 -26
- package/js/src/web/profile-stories.js +5 -2
- package/js/src/web/server-availability.js +71 -0
- package/js/src/web/settings-view.js +38 -0
- package/js/src/web/shell/app-shell.js +5 -1
- package/js/src/web/stories-pref.js +5 -0
- package/js/src/web/stories.js +1 -1
- package/js/src/web/telegram-status.js +36 -0
- package/package.json +1 -1
- package/js/src/web/chat-history-status.js +0 -94
package/js/src/web/api-errors.js
CHANGED
|
@@ -35,7 +35,10 @@ export const KNOWN_CODES = [
|
|
|
35
35
|
// inline by the panel that asked. Codes outside KNOWN_CODES are the panels'.
|
|
36
36
|
const INLINE_ONLY = new Set(['unsupported', 'unsupported-chat']);
|
|
37
37
|
// This read-only POST also supplies the background missed-call badge.
|
|
38
|
-
const READ_POSTS = new Set([
|
|
38
|
+
const READ_POSTS = new Set([
|
|
39
|
+
'/api/telegram/calls',
|
|
40
|
+
'/api/telegram/dialog-state',
|
|
41
|
+
]);
|
|
39
42
|
|
|
40
43
|
const seen = new Set();
|
|
41
44
|
|
package/js/src/web/app.css
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
/* One height for every button, input and select; one header height
|
|
16
16
|
the sticky drawer, rail and full-height chat measure against. */
|
|
17
17
|
--control-h: 2.25rem;
|
|
18
|
+
--control-gap: 0.5rem;
|
|
19
|
+
--control-pad: 0.4rem 0.9rem;
|
|
18
20
|
--radius: 8px;
|
|
19
21
|
--topbar-h: 3.5rem;
|
|
20
22
|
--bottom-nav-h: 4rem;
|
|
@@ -174,7 +176,7 @@ body {
|
|
|
174
176
|
}
|
|
175
177
|
.header-btn {
|
|
176
178
|
width: var(--control-h);
|
|
177
|
-
padding: 0;
|
|
179
|
+
padding: 0.25rem;
|
|
178
180
|
}
|
|
179
181
|
.btn-label {
|
|
180
182
|
display: none;
|
|
@@ -193,7 +195,16 @@ body {
|
|
|
193
195
|
flex-wrap: wrap;
|
|
194
196
|
gap: 0.25rem;
|
|
195
197
|
}
|
|
196
|
-
.topbar nav
|
|
198
|
+
.topbar nav /* Action containers inherit a nonzero gap even when a new toolbar omits it.
|
|
199
|
+
Named layouts can choose a denser spacing; no margins fight their alignment. */
|
|
200
|
+
:where(*:has(> :is(button, a.button, [role='button']) ~ :is(button, a.button, [role='button']))) {
|
|
201
|
+
gap: var(--control-gap);
|
|
202
|
+
}
|
|
203
|
+
/* Inline actions in prose/table cells do not participate in flex/grid gaps. */
|
|
204
|
+
:where(p, td, dd, .meta) > :is(button, a.button) + :is(button, a.button) {
|
|
205
|
+
margin-inline-start: var(--control-gap);
|
|
206
|
+
}
|
|
207
|
+
button {
|
|
197
208
|
background: transparent;
|
|
198
209
|
color: var(--text-muted);
|
|
199
210
|
border: 1px solid transparent;
|
|
@@ -426,6 +437,9 @@ main[data-view='chat'] > .web-mode-banner {
|
|
|
426
437
|
min-height: 1px;
|
|
427
438
|
}
|
|
428
439
|
|
|
440
|
+
.chat-list > .chat-item + .chat-item {
|
|
441
|
+
margin-block-start: 0.25rem;
|
|
442
|
+
}
|
|
429
443
|
.chat-item {
|
|
430
444
|
/* Rows out of sight are not laid out or painted (R-Y71). */
|
|
431
445
|
content-visibility: auto;
|
|
@@ -1197,8 +1211,10 @@ main[data-view='chat'] > .web-mode-banner {
|
|
|
1197
1211
|
a.button {
|
|
1198
1212
|
display: inline-flex;
|
|
1199
1213
|
align-items: center;
|
|
1214
|
+
justify-content: center;
|
|
1215
|
+
gap: var(--control-gap);
|
|
1200
1216
|
min-height: var(--control-h);
|
|
1201
|
-
padding:
|
|
1217
|
+
padding: var(--control-pad);
|
|
1202
1218
|
border: 1px solid var(--border);
|
|
1203
1219
|
border-radius: var(--radius);
|
|
1204
1220
|
background: var(--bg-active);
|
|
@@ -1409,7 +1425,7 @@ a.button {
|
|
|
1409
1425
|
}
|
|
1410
1426
|
.icon-btn {
|
|
1411
1427
|
width: var(--control-h);
|
|
1412
|
-
padding: 0;
|
|
1428
|
+
padding: 0.25rem;
|
|
1413
1429
|
border-color: transparent;
|
|
1414
1430
|
background: transparent;
|
|
1415
1431
|
}
|
|
@@ -1522,7 +1538,7 @@ button {
|
|
|
1522
1538
|
color: inherit;
|
|
1523
1539
|
border: 1px solid var(--border);
|
|
1524
1540
|
border-radius: var(--radius);
|
|
1525
|
-
padding:
|
|
1541
|
+
padding: var(--control-pad);
|
|
1526
1542
|
font: inherit;
|
|
1527
1543
|
font-size: 0.9rem;
|
|
1528
1544
|
line-height: 1.2;
|
|
@@ -1551,7 +1567,7 @@ button.primary:hover:not(:disabled) {
|
|
|
1551
1567
|
}
|
|
1552
1568
|
.row {
|
|
1553
1569
|
display: flex;
|
|
1554
|
-
gap:
|
|
1570
|
+
gap: var(--control-gap);
|
|
1555
1571
|
align-items: center;
|
|
1556
1572
|
flex-wrap: wrap;
|
|
1557
1573
|
}
|
|
@@ -2833,6 +2849,10 @@ button.primary .recommended-tag {
|
|
|
2833
2849
|
flex-direction: column;
|
|
2834
2850
|
gap: 0.3rem;
|
|
2835
2851
|
}
|
|
2852
|
+
.automation-list li {
|
|
2853
|
+
display: grid;
|
|
2854
|
+
gap: var(--control-gap);
|
|
2855
|
+
}
|
|
2836
2856
|
.automation-list button {
|
|
2837
2857
|
width: 100%;
|
|
2838
2858
|
text-align: left;
|
|
@@ -3608,6 +3628,9 @@ button.primary .recommended-tag {
|
|
|
3608
3628
|
rounded, frosted, an icon before each item; it grows from the corner
|
|
3609
3629
|
it opened at. */
|
|
3610
3630
|
.msg-context-menu {
|
|
3631
|
+
display: flex;
|
|
3632
|
+
flex-direction: column;
|
|
3633
|
+
gap: 0.25rem;
|
|
3611
3634
|
position: fixed;
|
|
3612
3635
|
/* Above a dialog: the files' Send button has a menu too (R-Y102). */
|
|
3613
3636
|
z-index: 2100;
|
|
@@ -4564,7 +4587,7 @@ button.primary .recommended-tag {
|
|
|
4564
4587
|
flex: none;
|
|
4565
4588
|
width: 1.1em;
|
|
4566
4589
|
height: 1.1em;
|
|
4567
|
-
color: var(--
|
|
4590
|
+
color: var(--text);
|
|
4568
4591
|
vertical-align: -0.2em;
|
|
4569
4592
|
}
|
|
4570
4593
|
.spinner svg {
|
|
@@ -6791,7 +6814,7 @@ button[aria-busy='true']::before {
|
|
|
6791
6814
|
scrollbar-width: thin;
|
|
6792
6815
|
}
|
|
6793
6816
|
.stories-strip.is-compact .stories-list {
|
|
6794
|
-
gap: 0;
|
|
6817
|
+
gap: 0.25rem;
|
|
6795
6818
|
}
|
|
6796
6819
|
.story-peer {
|
|
6797
6820
|
display: flex;
|
|
@@ -9184,7 +9207,7 @@ span.bubble-effect {
|
|
|
9184
9207
|
left: 50%;
|
|
9185
9208
|
top: 50%;
|
|
9186
9209
|
transform: translate(-50%, -50%);
|
|
9187
|
-
padding:
|
|
9210
|
+
padding: var(--control-pad);
|
|
9188
9211
|
border: 0;
|
|
9189
9212
|
border-radius: 999px;
|
|
9190
9213
|
background: rgba(0, 0, 0, 0.6);
|
|
@@ -12908,23 +12931,6 @@ audio.remote-player {
|
|
|
12908
12931
|
flex-shrink: 0;
|
|
12909
12932
|
scrollbar-width: thin;
|
|
12910
12933
|
}
|
|
12911
|
-
.chat-history-status {
|
|
12912
|
-
display: flex;
|
|
12913
|
-
flex: 0 0 auto;
|
|
12914
|
-
align-items: center;
|
|
12915
|
-
gap: 0.5rem;
|
|
12916
|
-
padding: 0.5rem 0.75rem;
|
|
12917
|
-
border-bottom: 1px solid var(--border);
|
|
12918
|
-
color: var(--text);
|
|
12919
|
-
background: var(--chat-sidebar);
|
|
12920
|
-
font-size: 0.85rem;
|
|
12921
|
-
}
|
|
12922
|
-
.chat-history-status span {
|
|
12923
|
-
flex: 1;
|
|
12924
|
-
}
|
|
12925
|
-
.chat-history-status button {
|
|
12926
|
-
flex-shrink: 0;
|
|
12927
|
-
}
|
|
12928
12934
|
.calls-content {
|
|
12929
12935
|
min-height: 12rem;
|
|
12930
12936
|
}
|
|
@@ -12955,6 +12961,8 @@ audio.remote-player {
|
|
|
12955
12961
|
}
|
|
12956
12962
|
/* Default dark controls use neutral surfaces and white line icons. */
|
|
12957
12963
|
:root[data-theme='dark'][data-skin='t3'] {
|
|
12964
|
+
--msg-select-overlay: rgba(255, 255, 255, 0.16);
|
|
12965
|
+
--msg-select-check: #fff;
|
|
12958
12966
|
--bg: #08090b;
|
|
12959
12967
|
--bg-elev: #121315;
|
|
12960
12968
|
--bg-active: #292a2d;
|
|
@@ -13094,3 +13102,20 @@ main[data-view='operator']:has(> .operator-workspace) {
|
|
|
13094
13102
|
.marketplace-account {
|
|
13095
13103
|
overflow-wrap: anywhere;
|
|
13096
13104
|
}
|
|
13105
|
+
|
|
13106
|
+
.automation-state {
|
|
13107
|
+
display: block;
|
|
13108
|
+
font-weight: 600;
|
|
13109
|
+
color: var(--text);
|
|
13110
|
+
}
|
|
13111
|
+
.automation-active-count {
|
|
13112
|
+
border-radius: 50%;
|
|
13113
|
+
background: var(--text);
|
|
13114
|
+
color: var(--bg);
|
|
13115
|
+
min-width: 1.4em;
|
|
13116
|
+
text-align: center;
|
|
13117
|
+
}
|
|
13118
|
+
|
|
13119
|
+
:root[data-theme='dark'][data-skin='t3'] .bubble-check.is-checked {
|
|
13120
|
+
color: #000;
|
|
13121
|
+
}
|