micro-models-agent 2.15.0 → 2.16.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/CHANGELOG.md +27 -0
- package/dist/assets/app.js +6 -2
- package/dist/assets/index.html +1 -0
- package/dist/assets/js/feed.js +67 -51
- package/dist/assets/js/format.js +8 -0
- package/dist/assets/js/settings.js +74 -8
- package/dist/assets/js/sidebar.js +198 -5
- package/dist/assets/js/tabs.js +105 -18
- package/dist/assets/md.js +14 -0
- package/dist/assets/styles.css +79 -30
- package/dist/i18n/en.json +20 -1
- package/dist/i18n/ru.json +20 -1
- package/dist/main.js +355 -134
- package/package.json +1 -1
package/dist/assets/styles.css
CHANGED
|
@@ -244,11 +244,14 @@ body[data-font="large"] { font-size: 17px; }
|
|
|
244
244
|
|
|
245
245
|
/* chat */
|
|
246
246
|
.chat { flex: 1; display: flex; flex-direction: column; min-width: 0; position: relative; }
|
|
247
|
-
.msgs { flex: 1; overflow-y: auto; overflow-x: hidden; padding:
|
|
247
|
+
.msgs { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 0 22px; display: flex; flex-direction: column; gap: 11px; }
|
|
248
248
|
.msgs > * { flex-shrink: 0; min-height: fit-content; }
|
|
249
249
|
/* messages live inside a per-tab `.feed` wrapper; it must mirror the `.msgs`
|
|
250
|
-
column gap so turns are separated instead of running together
|
|
251
|
-
|
|
250
|
+
column gap so turns are separated instead of running together.
|
|
251
|
+
Vertical breathing lives on `.feed`, NOT on the scroller: sticky edge fades
|
|
252
|
+
are constrained to the content box, so scroller padding would offset them
|
|
253
|
+
from the header/composer edges. */
|
|
254
|
+
.feed { display: flex; flex-direction: column; gap: 11px; padding: 18px 0; }
|
|
252
255
|
.feed > * { flex-shrink: 0; min-height: fit-content; }
|
|
253
256
|
.u {
|
|
254
257
|
color: var(--u-fg); background: var(--u-bg); border-left: 2px solid var(--u-border);
|
|
@@ -270,7 +273,7 @@ body[data-font="large"] { font-size: 17px; }
|
|
|
270
273
|
font-size: 12.5px; overflow-wrap: anywhere;
|
|
271
274
|
}
|
|
272
275
|
.metaln.warn { color: var(--yellow); }
|
|
273
|
-
.act { display: flex; gap: 8px; min-width: 0; }
|
|
276
|
+
.act { display: flex; gap: 8px; min-width: 0; line-height: 1.35; }
|
|
274
277
|
.act .lab { white-space: nowrap; }
|
|
275
278
|
.act .args { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
|
|
276
279
|
.act.recon .g, .act.recon .lab { color: var(--cyan); }
|
|
@@ -311,7 +314,15 @@ body.light .code { border: 1px solid var(--border); }
|
|
|
311
314
|
.toolout .more { color: var(--dim-b); cursor: pointer; font-size: 12px; }
|
|
312
315
|
.toolout .more:hover { color: var(--dim-a); }
|
|
313
316
|
|
|
314
|
-
/* markdown answers (streamed by md.js) — lines and glyphs, no boxes
|
|
317
|
+
/* markdown answers (streamed by md.js) — lines and glyphs, no boxes.
|
|
318
|
+
Top-level answers carry a quiet accent rail (mirrors the user's `> ` block),
|
|
319
|
+
so the finished message reads instantly apart from the dim work process
|
|
320
|
+
(tool/think rows stay plain). Scoped to `.feed >` — code blocks inside keep
|
|
321
|
+
their own styling. */
|
|
322
|
+
.feed > .md, .feed > .ans {
|
|
323
|
+
border-left: 2px solid var(--accent);
|
|
324
|
+
padding-left: 12px;
|
|
325
|
+
}
|
|
315
326
|
.md { color: var(--ans); overflow-wrap: anywhere; }
|
|
316
327
|
.md > * { flex-shrink: 0; }
|
|
317
328
|
.md p { margin: 4px 0; white-space: pre-wrap; }
|
|
@@ -391,7 +402,14 @@ body.light .codeblock { border: 1px solid var(--border); }
|
|
|
391
402
|
}
|
|
392
403
|
body.light .imgcard .ph { background: var(--ph-light); }
|
|
393
404
|
.imgcard .cap { padding: 6px 10px; color: var(--dim-a); font-size: 12px; }
|
|
394
|
-
.filerow { margin-left: 26px; display: flex; gap: 8px; align-items: baseline; min-width: 0; font-size: 12.5px; color: var(--muted); }
|
|
405
|
+
.filerow { margin-left: 26px; display: flex; gap: 8px; align-items: baseline; min-width: 0; font-size: 12.5px; line-height: 1.35; color: var(--muted); }
|
|
406
|
+
/* Compact tool lists: consecutive action/file rows sit tight (~4px visual),
|
|
407
|
+
// while turns keep the airy 11px feed gap. Negative margin compensates the
|
|
408
|
+
// `.feed { gap: 11px }` only between siblings in a run. */
|
|
409
|
+
.feed > .filerow + .filerow,
|
|
410
|
+
.feed > .act + .act,
|
|
411
|
+
.feed > .filerow + .act,
|
|
412
|
+
.feed > .act + .filerow { margin-top: -7px; }
|
|
395
413
|
.filerow .g { flex: 0 0 auto; }
|
|
396
414
|
.filerow.recon .g, .filerow.recon .lab { color: var(--cyan); }
|
|
397
415
|
.filerow.mutate .g, .filerow.mutate .lab { color: var(--magenta); }
|
|
@@ -404,10 +422,6 @@ body.light .imgcard .ph { background: var(--ph-light); }
|
|
|
404
422
|
@media (pointer: coarse) { .filerow .copy-btn { opacity: 1; } }
|
|
405
423
|
.filerow .copy-btn:focus-visible { opacity: 1; outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
406
424
|
.filerow .copy-btn .svg-icon { width: 14px; height: 14px; }
|
|
407
|
-
.filegroup { margin-left: 26px; font-size: 12.5px; color: var(--muted); }
|
|
408
|
-
.filegroup .head { background: transparent; border: 0; color: inherit; font: inherit; cursor: pointer; display: flex; gap: 6px; align-items: baseline; padding: 0; }
|
|
409
|
-
.filegroup .items.hidden { display: none; }
|
|
410
|
-
.filegroup .items > .filerow { margin-left: 0; }
|
|
411
425
|
.linkline { margin-left: 26px; min-width: 0; overflow-wrap: anywhere; }
|
|
412
426
|
.linkline a { color: var(--accent); text-decoration: none; overflow-wrap: anywhere; word-break: break-word; }
|
|
413
427
|
.linkline a:hover { text-decoration: underline; }
|
|
@@ -522,6 +536,16 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
522
536
|
color: var(--fg); font: inherit; font-size: 12.5px; padding: 4px 8px;
|
|
523
537
|
}
|
|
524
538
|
.menu .ctx-custom .linkbtn { flex: 0 0 auto; }
|
|
539
|
+
/* Dropdown search fields (composer model menu, sessions menu): sticky on top
|
|
540
|
+
so the query stays visible while the list scrolls underneath. */
|
|
541
|
+
.menu .searchbox {
|
|
542
|
+
margin-bottom: 4px; position: sticky; top: 0; z-index: 1;
|
|
543
|
+
}
|
|
544
|
+
.model-menu-list { display: contents; }
|
|
545
|
+
.dd-menu .searchbox {
|
|
546
|
+
margin: 2px 2px 6px; width: calc(100% - 4px);
|
|
547
|
+
position: sticky; top: 0; z-index: 1;
|
|
548
|
+
}
|
|
525
549
|
|
|
526
550
|
.inp {
|
|
527
551
|
width: 100%; padding: 12px 14px; resize: none; display: block;
|
|
@@ -619,7 +643,7 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
619
643
|
|
|
620
644
|
/* new rows rise in softly (a bulk history render animates once as a whole —
|
|
621
645
|
one shared fade, still cheap: opacity/transform only) */
|
|
622
|
-
.feed > :is(.u, .md, .act, .think, .q, .filerow, .
|
|
646
|
+
.feed > :is(.u, .md, .act, .think, .q, .filerow, .planblock, .imgcard, .linkline,
|
|
623
647
|
.toolout, .metric, .detail, .metaln, .warnline, .errline, .cmdout, .sysline,
|
|
624
648
|
.startbanner, .grouped, .msg-actions, .busy) {
|
|
625
649
|
animation: rise .18s ease-out;
|
|
@@ -632,6 +656,12 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
632
656
|
content: "▌"; color: var(--accent); margin-left: 2px;
|
|
633
657
|
animation: blink 1s steps(2, start) infinite;
|
|
634
658
|
}
|
|
659
|
+
/* per-chunk typewriter fade for live markdown (md.js wraps each streamed
|
|
660
|
+
text chunk in `span.tk` when `opts.animate` is set; history render and
|
|
661
|
+
code blocks skip it). Opacity-only: `.tk` stays inline so wrapping is
|
|
662
|
+
untouched. Killed by the `prefers-reduced-motion` block below. */
|
|
663
|
+
@keyframes tkIn { from { opacity: 0; } }
|
|
664
|
+
.md.streaming .tk { animation: tkIn .15s ease-out backwards; }
|
|
635
665
|
/* alive labels: in-feed spinner, the *live* think block, rail phase,
|
|
636
666
|
a running tool. Finished blocks stay static — a pulsing "думаю" after
|
|
637
667
|
the turn reads as hung. */
|
|
@@ -646,20 +676,25 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
646
676
|
.overlay.open .modal { animation: rise .18s ease-out; }
|
|
647
677
|
|
|
648
678
|
/* hover/active blends */
|
|
649
|
-
.sel > button, .menu .mi, .stab, .q .qopt, .q .qsend, .filerow, .
|
|
679
|
+
.sel > button, .menu .mi, .stab, .q .qopt, .q .qsend, .filerow, .icon-btn,
|
|
650
680
|
.btn, .linkbtn, .chip, .cb-copy, .act-btn, .copy-btn, .composer .attach-btn,
|
|
651
681
|
.composer .send-btn, .dd-menu .si, .dd-menu .act, .cmdk-item, .toggle {
|
|
652
682
|
transition: background-color .12s, color .12s, border-color .12s;
|
|
653
683
|
}
|
|
654
684
|
.composer { transition: border-color .15s, box-shadow .15s; }
|
|
655
685
|
|
|
656
|
-
/* scroll edge fades on the transcript (classes from the feed scroll hook)
|
|
686
|
+
/* scroll edge fades on the transcript (classes from the feed scroll hook).
|
|
687
|
+
Sticky in-flow pseudos glued exactly to the scrollport edges: they sit in
|
|
688
|
+
the scroller's padding-free content box (breathing lives on `.feed`), so
|
|
689
|
+
`top: 0` / `bottom: 0` meet the header above and the composer below with
|
|
690
|
+
no visible offset. Negative margins neutralize their flow height plus the
|
|
691
|
+
flex gap, so hidden fades take no space. */
|
|
657
692
|
.msgs::before, .msgs::after {
|
|
658
693
|
content: ""; position: sticky; display: block; height: 22px; flex: 0 0 auto;
|
|
659
694
|
pointer-events: none; z-index: 5; opacity: 0; transition: opacity .25s;
|
|
660
695
|
}
|
|
661
|
-
.msgs::before { top: 0; margin-bottom: -
|
|
662
|
-
.msgs::after { bottom: 0; margin-top: -
|
|
696
|
+
.msgs::before { top: 0; margin-bottom: -33px; background: linear-gradient(var(--bg), transparent); }
|
|
697
|
+
.msgs::after { bottom: 0; margin-top: -33px; background: linear-gradient(transparent, var(--bg)); }
|
|
663
698
|
.msgs.scrolled::before { opacity: 1; }
|
|
664
699
|
.msgs.unfollowed::after { opacity: 1; }
|
|
665
700
|
|
|
@@ -734,12 +769,16 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
734
769
|
@keyframes rlFlash { 0% { filter: brightness(1.9); } 100% { filter: brightness(1); } }
|
|
735
770
|
|
|
736
771
|
/* ---- sidebar — plan / usage / environment sections ---- */
|
|
772
|
+
/* Sidebar never scrolls horizontally, in any tab: long paths / model names /
|
|
773
|
+
ids wrap or ellipsize inside their rows, never widening the pane. */
|
|
737
774
|
.sb {
|
|
738
775
|
width: 340px; min-width: 340px; display: flex; flex-direction: column;
|
|
739
776
|
border-left: 1px solid var(--border); background: var(--sb-bg); min-height: 0;
|
|
777
|
+
overflow-x: hidden;
|
|
740
778
|
}
|
|
741
779
|
.sec {
|
|
742
|
-
display: flex; flex-direction: column; min-height: 0;
|
|
780
|
+
display: flex; flex-direction: column; min-height: 0; min-width: 0;
|
|
781
|
+
max-width: 100%; overflow-x: hidden;
|
|
743
782
|
border-bottom: 1px solid var(--border);
|
|
744
783
|
}
|
|
745
784
|
.sec:last-child { border-bottom: none; }
|
|
@@ -751,8 +790,8 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
751
790
|
.sec-h:hover { color: var(--sec-h-hover); }
|
|
752
791
|
.sec-h .n { margin-left: auto; color: var(--dim-b); }
|
|
753
792
|
.sec-body {
|
|
754
|
-
overflow-y: auto; padding: 0 16px 12px;
|
|
755
|
-
min-height: 0;
|
|
793
|
+
overflow-y: auto; overflow-x: hidden; padding: 0 16px 12px;
|
|
794
|
+
min-height: 0; min-width: 0; max-width: 100%;
|
|
756
795
|
}
|
|
757
796
|
.sec-body.collapsed { display: none; }
|
|
758
797
|
/* plan section takes the lion's share and scrolls */
|
|
@@ -786,7 +825,7 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
786
825
|
}
|
|
787
826
|
.sb-name .sb-ico svg { width: 14px; height: 14px; color: var(--accent); }
|
|
788
827
|
|
|
789
|
-
.sb-pane { display: flex; flex-direction: column; flex: 1; min-height: 0; }
|
|
828
|
+
.sb-pane { display: flex; flex-direction: column; flex: 1; min-height: 0; min-width: 0; max-width: 100%; overflow-x: hidden; }
|
|
790
829
|
.sb-pane[hidden] { display: none; }
|
|
791
830
|
|
|
792
831
|
/* master-detail expansion */
|
|
@@ -794,25 +833,26 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
794
833
|
.sb.sb-expanded { width: 680px; min-width: 680px; }
|
|
795
834
|
#pane-trace { flex-direction: row; }
|
|
796
835
|
.sb-expanded #pane-trace { position: relative; }
|
|
797
|
-
.trace-list { flex: 1; min-width: 0; overflow-y: auto; padding: 6px 10px 12px; display: flex; flex-direction: column; gap: 1px; }
|
|
798
|
-
.trace-turn { color: var(--dim-c); font-size: 11px; margin: 8px 6px 2px; }
|
|
799
|
-
.trc { display: flex; gap: 8px; align-items: baseline; padding: 4px 6px; font-size: 12px; color: var(--muted); border-radius: 4px; cursor: pointer; }
|
|
836
|
+
.trace-list { flex: 1; min-width: 0; max-width: 100%; overflow-y: auto; overflow-x: hidden; padding: 6px 10px 12px; display: flex; flex-direction: column; gap: 1px; }
|
|
837
|
+
.trace-turn { color: var(--dim-c); font-size: 11px; margin: 8px 6px 2px; overflow-wrap: anywhere; }
|
|
838
|
+
.trc { display: flex; gap: 8px; align-items: baseline; padding: 4px 6px; font-size: 12px; color: var(--muted); border-radius: 4px; cursor: pointer; min-width: 0; max-width: 100%; overflow: hidden; }
|
|
800
839
|
.trc:hover { background: var(--hover-bg); }
|
|
801
840
|
.trc.sel { background: var(--accent-bg); }
|
|
802
841
|
.trc .g { flex: 0 0 auto; }
|
|
803
842
|
.trc.recon .g { color: var(--cyan); } .trc.mutate .g { color: var(--purple); }
|
|
804
843
|
.trc.execute .g { color: var(--accent); } .trc.meta .g { color: var(--meta); } .trc.phase .g { color: var(--think); }
|
|
805
|
-
.trc .lab { color: var(--fg); white-space: nowrap; }
|
|
844
|
+
.trc .lab { color: var(--fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 0 1 auto; }
|
|
806
845
|
.trc .args { color: var(--args); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }
|
|
807
846
|
.trc .t { color: var(--dim-b); margin-left: auto; flex: 0 0 auto; }
|
|
808
847
|
.trc.warn .g, .trc.warn .lab { color: var(--yellow); }
|
|
809
848
|
.trc.phase .lab { color: var(--think); }
|
|
810
|
-
.trc-detail { display: flex; flex-direction: column; flex: 0 0 340px; min-width: 0; border-left: 1px solid var(--border); }
|
|
849
|
+
.trc-detail { display: flex; flex-direction: column; flex: 0 0 340px; min-width: 0; max-width: 100%; overflow-x: hidden; border-left: 1px solid var(--border); }
|
|
811
850
|
.trc-detail[hidden] { display: none; }
|
|
812
|
-
.detail-h { display: flex; gap: 8px; align-items: center; padding: 10px 14px; border-bottom: 1px solid var(--border); color: var(--fg); font-size: 12.5px; flex-shrink: 0; }
|
|
851
|
+
.detail-h { display: flex; gap: 8px; align-items: center; padding: 10px 14px; border-bottom: 1px solid var(--border); color: var(--fg); font-size: 12.5px; flex-shrink: 0; min-width: 0; max-width: 100%; overflow: hidden; }
|
|
813
852
|
.detail-h .g { color: var(--accent); }
|
|
814
853
|
.detail-h .x { margin-left: auto; color: var(--dim-b); cursor: pointer; }
|
|
815
|
-
.detail-b { padding: 10px 14px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; }
|
|
854
|
+
.detail-b { padding: 10px 14px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; overflow-x: hidden; min-width: 0; max-width: 100%; }
|
|
855
|
+
.detail-b .code { max-width: 100%; }
|
|
816
856
|
.detail-b h5 { margin: 0 0 4px; font-size: 10.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--sec-h); font-weight: 600; }
|
|
817
857
|
.map-sec { flex: 1 1 auto; }
|
|
818
858
|
.map-reindex { margin-top: 10px; font: inherit; font-size: 12px; color: var(--accent); background: transparent; border: 1px solid var(--border-2); border-radius: 5px; padding: 4px 10px; cursor: pointer; width: fit-content; }
|
|
@@ -832,8 +872,15 @@ body.light .sel > button { border: 1px solid var(--border); }
|
|
|
832
872
|
.plan-step::before { content: ""; position: absolute; left: 4px; top: 0; bottom: 0; width: 1px; background: var(--plan-line); }
|
|
833
873
|
.plan-step .sub { display: block; color: var(--dim-b); font-size: 11.5px; padding-left: 0; }
|
|
834
874
|
|
|
835
|
-
.kv { display: flex; justify-content: space-between; padding: 2px 0; color: var(--muted); gap: 10px; }
|
|
836
|
-
.kv
|
|
875
|
+
.kv { display: flex; justify-content: space-between; padding: 2px 0; color: var(--muted); gap: 10px; min-width: 0; max-width: 100%; }
|
|
876
|
+
.kv > * { min-width: 0; }
|
|
877
|
+
/* Подпись строки никогда не сжимается — иначе её текст наезжает на значение. */
|
|
878
|
+
.kv > span:first-child { flex-shrink: 0; }
|
|
879
|
+
.kv b { font-weight: 400; color: var(--fg); text-align: right; overflow-wrap: anywhere; word-break: break-word; min-width: 0; max-width: 100%; }
|
|
880
|
+
/* Корень карты: подпись сверху, длинный путь снизу на всю ширину. */
|
|
881
|
+
.map-path { display: flex; flex-direction: column; gap: 2px; padding: 2px 0; min-width: 0; max-width: 100%; color: var(--muted); }
|
|
882
|
+
.map-path .dim { color: var(--dim-a); }
|
|
883
|
+
.map-path b { font-weight: 400; color: var(--fg); overflow-wrap: anywhere; word-break: break-word; min-width: 0; max-width: 100%; }
|
|
837
884
|
body.light .kv b { color: var(--fg); }
|
|
838
885
|
.kv .dim { color: var(--dim-a); }
|
|
839
886
|
.kv .wn { color: var(--yellow); }
|
|
@@ -1372,7 +1419,8 @@ button.toggle:disabled { opacity: .5; cursor: default; }
|
|
|
1372
1419
|
border-left: 1px solid var(--border); border-top: none;
|
|
1373
1420
|
box-shadow: var(--shadow-dd);
|
|
1374
1421
|
}
|
|
1375
|
-
.msgs { padding: 14px; }
|
|
1422
|
+
.msgs { padding: 0 14px; }
|
|
1423
|
+
.feed { padding: 14px 0; }
|
|
1376
1424
|
.input-area { margin: 10px 14px 12px; }
|
|
1377
1425
|
.inp-meta { flex-wrap: wrap; gap: 8px; }
|
|
1378
1426
|
}
|
|
@@ -1395,7 +1443,8 @@ button.toggle:disabled { opacity: .5; cursor: default; }
|
|
|
1395
1443
|
.content-col { padding: 14px; }
|
|
1396
1444
|
.row { font-size: 12.5px; }
|
|
1397
1445
|
.input-area { margin: 8px 10px 10px; }
|
|
1398
|
-
.msgs { padding:
|
|
1446
|
+
.msgs { padding: 0 10px; }
|
|
1447
|
+
.feed { padding: 12px 0; }
|
|
1399
1448
|
/* narrow phones: rail stacks vertically, track takes the full row */
|
|
1400
1449
|
.rail-wrap.l-line, .rail-wrap.l-meta {
|
|
1401
1450
|
flex-direction: column; align-items: stretch; gap: 6px;
|
package/dist/i18n/en.json
CHANGED
|
@@ -1087,6 +1087,18 @@
|
|
|
1087
1087
|
"web.sidebar.trace_text": "composing… {count} chars",
|
|
1088
1088
|
"web.sidebar.trace_plan": "plan update",
|
|
1089
1089
|
"web.sidebar.trace_question": "question",
|
|
1090
|
+
"web.sidebar.trace_status": "status",
|
|
1091
|
+
"web.sidebar.trace_log": "log · {level}",
|
|
1092
|
+
"web.sidebar.trace_retract": "draft retracted",
|
|
1093
|
+
"web.sidebar.trace_index": "index · {phase}",
|
|
1094
|
+
"web.sidebar.trace_critic": "critic · {status}",
|
|
1095
|
+
"web.sidebar.trace_moe": "moe",
|
|
1096
|
+
"web.sidebar.trace_compaction": "compaction",
|
|
1097
|
+
"web.sidebar.trace_probe": "context probe",
|
|
1098
|
+
"web.sidebar.trace_usage": "llm usage",
|
|
1099
|
+
"web.sidebar.trace_audit": "audit",
|
|
1100
|
+
"web.sidebar.trace_claim": "claim retry · {kind}",
|
|
1101
|
+
"web.sidebar.trace_output": "output",
|
|
1090
1102
|
"web.sidebar.detail_metadata": "metadata",
|
|
1091
1103
|
"web.sidebar.detail_arguments": "arguments",
|
|
1092
1104
|
"web.sidebar.detail_output": "output",
|
|
@@ -1101,6 +1113,10 @@
|
|
|
1101
1113
|
"web.sidebar.detail_time": "time",
|
|
1102
1114
|
"web.sidebar.detail_tool_call": "tool call",
|
|
1103
1115
|
"web.sidebar.detail_session": "session",
|
|
1116
|
+
"web.sidebar.detail_turn": "turn",
|
|
1117
|
+
"web.sidebar.detail_iteration": "iteration",
|
|
1118
|
+
"web.sidebar.detail_provenance": "session-log provenance",
|
|
1119
|
+
"web.sidebar.detail_provenance_count": "{n} assistant messages in log",
|
|
1104
1120
|
"web.env.dir": "dir",
|
|
1105
1121
|
"web.env.agents": "AGENTS.md",
|
|
1106
1122
|
"web.env.map": "map",
|
|
@@ -1420,9 +1436,10 @@
|
|
|
1420
1436
|
"web.input.shift_enter": "Shift+Enter — newline",
|
|
1421
1437
|
"web.input.esc": "Esc — stop",
|
|
1422
1438
|
"web.input.attach": "Ctrl+V — attach",
|
|
1423
|
-
"web.input.busy": "still working — Esc to stop",
|
|
1424
1439
|
"web.input.send": "send",
|
|
1425
1440
|
"web.input.stop": "stop",
|
|
1441
|
+
"web.input.queued": "queued · position {n}",
|
|
1442
|
+
"web.input.queue_full": "message queue is full — wait for the turn to end",
|
|
1426
1443
|
"web.empty.title": "new chat",
|
|
1427
1444
|
"web.empty.hint": "type a message below · / — commands · model and context are chosen above the input",
|
|
1428
1445
|
"web.attach.title": "attach image",
|
|
@@ -1439,6 +1456,7 @@
|
|
|
1439
1456
|
"web.sessions.none_active": "— no active session —",
|
|
1440
1457
|
"web.sessions.none": "— none —",
|
|
1441
1458
|
"web.sessions.delete": "delete",
|
|
1459
|
+
"web.sessions.search": "search sessions…",
|
|
1442
1460
|
"web.sessions.create_failed": "session create failed",
|
|
1443
1461
|
"web.sessions.delete_failed": "delete failed",
|
|
1444
1462
|
"web.sessions.confirm_title": "Delete session?",
|
|
@@ -1451,6 +1469,7 @@
|
|
|
1451
1469
|
"web.selectors.switch_busy": "switch in progress, please wait",
|
|
1452
1470
|
"web.selectors.reasoning_off": "off (backend ignores it)",
|
|
1453
1471
|
"web.selectors.no_models": "no models",
|
|
1472
|
+
"web.selectors.search_models": "search models…",
|
|
1454
1473
|
"web.selectors.refresh_list": "↻ refresh list",
|
|
1455
1474
|
"web.selectors.custom": "custom…",
|
|
1456
1475
|
"web.selectors.current": "current",
|
package/dist/i18n/ru.json
CHANGED
|
@@ -1090,6 +1090,18 @@
|
|
|
1090
1090
|
"web.sidebar.trace_text": "печатает… {count} симв.",
|
|
1091
1091
|
"web.sidebar.trace_plan": "обновление плана",
|
|
1092
1092
|
"web.sidebar.trace_question": "вопрос",
|
|
1093
|
+
"web.sidebar.trace_status": "статус",
|
|
1094
|
+
"web.sidebar.trace_log": "лог · {level}",
|
|
1095
|
+
"web.sidebar.trace_retract": "черновик отозван",
|
|
1096
|
+
"web.sidebar.trace_index": "индекс · {phase}",
|
|
1097
|
+
"web.sidebar.trace_critic": "критик · {status}",
|
|
1098
|
+
"web.sidebar.trace_moe": "moe",
|
|
1099
|
+
"web.sidebar.trace_compaction": "компакция",
|
|
1100
|
+
"web.sidebar.trace_probe": "проба контекста",
|
|
1101
|
+
"web.sidebar.trace_usage": "расход llm",
|
|
1102
|
+
"web.sidebar.trace_audit": "аудит",
|
|
1103
|
+
"web.sidebar.trace_claim": "перепроверка · {kind}",
|
|
1104
|
+
"web.sidebar.trace_output": "вывод",
|
|
1093
1105
|
"web.sidebar.detail_metadata": "метаданные",
|
|
1094
1106
|
"web.sidebar.detail_arguments": "аргументы",
|
|
1095
1107
|
"web.sidebar.detail_output": "вывод",
|
|
@@ -1104,6 +1116,10 @@
|
|
|
1104
1116
|
"web.sidebar.detail_time": "время",
|
|
1105
1117
|
"web.sidebar.detail_tool_call": "вызов тула",
|
|
1106
1118
|
"web.sidebar.detail_session": "сессия",
|
|
1119
|
+
"web.sidebar.detail_turn": "ход",
|
|
1120
|
+
"web.sidebar.detail_iteration": "итерация",
|
|
1121
|
+
"web.sidebar.detail_provenance": "сверка с логом",
|
|
1122
|
+
"web.sidebar.detail_provenance_count": "assistant-сообщений в логе: {n}",
|
|
1107
1123
|
"web.env.dir": "директория",
|
|
1108
1124
|
"web.env.agents": "AGENTS.md",
|
|
1109
1125
|
"web.env.map": "карта",
|
|
@@ -1396,9 +1412,10 @@
|
|
|
1396
1412
|
"web.input.shift_enter": "Shift+Enter — новая строка",
|
|
1397
1413
|
"web.input.esc": "Esc — стоп",
|
|
1398
1414
|
"web.input.attach": "Ctrl+V — вложить",
|
|
1399
|
-
"web.input.busy": "ещё работаю — Esc для остановки",
|
|
1400
1415
|
"web.input.send": "отправить",
|
|
1401
1416
|
"web.input.stop": "остановить",
|
|
1417
|
+
"web.input.queued": "в очереди · позиция {n}",
|
|
1418
|
+
"web.input.queue_full": "очередь сообщений полна — дождись конца хода",
|
|
1402
1419
|
"web.empty.title": "новый чат",
|
|
1403
1420
|
"web.empty.hint": "введи сообщение ниже · / — команды · модель и контекст выбираются над полем",
|
|
1404
1421
|
"web.attach.title": "прикрепить изображение",
|
|
@@ -1415,6 +1432,7 @@
|
|
|
1415
1432
|
"web.sessions.none_active": "— нет активной сессии —",
|
|
1416
1433
|
"web.sessions.none": "— нет —",
|
|
1417
1434
|
"web.sessions.delete": "удалить",
|
|
1435
|
+
"web.sessions.search": "поиск сессий…",
|
|
1418
1436
|
"web.sessions.create_failed": "не удалось создать сессию",
|
|
1419
1437
|
"web.sessions.delete_failed": "не удалось удалить",
|
|
1420
1438
|
"web.sessions.confirm_title": "Удалить сессию?",
|
|
@@ -1427,6 +1445,7 @@
|
|
|
1427
1445
|
"web.selectors.switch_busy": "переключение уже идёт, подождите",
|
|
1428
1446
|
"web.selectors.reasoning_off": "выкл (бэкенд игнорирует)",
|
|
1429
1447
|
"web.selectors.no_models": "нет моделей",
|
|
1448
|
+
"web.selectors.search_models": "поиск моделей…",
|
|
1430
1449
|
"web.selectors.refresh_list": "↻ обновить список",
|
|
1431
1450
|
"web.selectors.custom": "другое…",
|
|
1432
1451
|
"web.selectors.current": "текущее",
|