local-operator-ui 0.39.3 → 0.39.5
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/out/main/index.js +579 -280
- package/out/preload/index.js +12 -0
- package/out/renderer/assets/{_basePickBy-BQMfGht5.js → _basePickBy-BgM1I5lG.js} +1 -1
- package/out/renderer/assets/{_baseUniq-Dv70naya.js → _baseUniq-Bmkgy85v.js} +1 -1
- package/out/renderer/assets/{agent-details-page-DTBUFPuD.js → agent-details-page-Du26ZU6E.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-6oqikRpa.js → agent-hub-page-BwVMuSzt.js} +1 -1
- package/out/renderer/assets/{agents-page-CxBd14fL.js → agents-page-BhSbjEpr.js} +3 -3
- package/out/renderer/assets/{arc-R8kdOMtJ.js → arc-3zNC_x2n.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CC7TXv-5.js → architectureDiagram-IEHRJDOE-CtDg0QNg.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BLTo7dpx.js → blockDiagram-JOT3LUYC-4XryKcIu.js} +1 -1
- package/out/renderer/assets/{book-open-DdgHaS4y.js → book-open-lnC7oth0.js} +1 -1
- package/out/renderer/assets/browser-page-CsoEGi9k.js +1 -0
- package/out/renderer/assets/{browser-webauthn-prompt-BSc4_7rS.js → browser-webauthn-prompt-BTC3LWcr.js} +1 -1
- package/out/renderer/assets/{building-2-OmcVyW28.js → building-2-CRI7K1ut.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-CYLDJskY.js → c4Diagram-VJAJSXHY-n2cPdK4v.js} +1 -1
- package/out/renderer/assets/channel-MJ9Q5Gdp.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-Cc72jGue.js → chunk-4BMEZGHF-P7BOtABr.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-Bqnf-4fz.js → chunk-A2AXSNBT-BmO2P02x.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-BdV4SaHz.js → chunk-AEK57VVT-KMJMGzZF.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-EMkspRi-.js → chunk-D6G4REZN-WA3nwEd_.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-BwAJ3QjL.js → chunk-RZ5BOZE2-C4md2pdG.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-DSg5QHY7.js → chunk-XZIHB7SX-MPSf1VFR.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-PYFoG-nl.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-PYFoG-nl.js +1 -0
- package/out/renderer/assets/clone-BWjAp2XI.js +1 -0
- package/out/renderer/assets/{console-mirror-BFQaHp1b.js → console-mirror-CnVv9rOt.js} +1 -1
- package/out/renderer/assets/{consoleCapture-L2qaS8a8.js → consoleCapture-B_hi3E9g.js} +1 -1
- package/out/renderer/assets/{conversation-input-sync-CfBw1Wlu.js → conversation-input-sync-CQ0nQbSV.js} +275 -275
- package/out/renderer/assets/{dagre-OKDRZEBW-CtW50ipp.js → dagre-OKDRZEBW-QrYk8i27.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-Nywu5ejb.js → diagram-SSKATNLV-CpIwEDtE.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-v9L_idGI.js → diagram-VNBRO52H-DtHOhSDJ.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-ZOhIsx5J.js → erDiagram-Q7BY3M3F-AEs8Bb_A.js} +1 -1
- package/out/renderer/assets/{error-boundary-BniUpzhs.js → error-boundary-CU2PiR3H.js} +3 -3
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-DaWBsPcU.js → flowDiagram-4HSFHLVR-CliaNR7R.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-CfAA_hPy.js → ganttDiagram-APWFNJXF-Br5lLrlI.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-DE6YI0wv.js → gitGraphDiagram-7IBYFJ6S-D68CT6c8.js} +1 -1
- package/out/renderer/assets/{graph-DQFpiHd-.js → graph-LIDYSJHC.js} +1 -1
- package/out/renderer/assets/{hash-Ys0vWpoG.js → hash-5VU7fofJ.js} +1 -1
- package/out/renderer/assets/index-B_mT8ft1.js +57 -0
- package/out/renderer/assets/index-BoQsbSXg.js +830 -0
- package/out/renderer/assets/{index-Co7PaTk5.js → index-BpJ3H71K.js} +1 -1
- package/out/renderer/assets/{index-Do841VPR.js → index-Bpi83aqM.js} +1 -1
- package/out/renderer/assets/index-ZC-NNW64.css +1 -0
- package/out/renderer/assets/{infoDiagram-PH2N3AL5-B2fZk_WF.js → infoDiagram-PH2N3AL5-U0UUgi63.js} +1 -1
- package/out/renderer/assets/{installer-tfJaRCRe.js → installer-9uv2KfFf.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-CN0DeNzP.js → journeyDiagram-U35MCT3I-FFIRpntM.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-BvzxG3jZ.js → kanban-definition-NDS4AKOZ-BRpcp-A3.js} +1 -1
- package/out/renderer/assets/{layout-SFDVNJcb.js → layout-MxBLCasM.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-B9ci3YOy.js → legacy-agents-page-D-vnYlfr.js} +1 -1
- package/out/renderer/assets/{library-page-BfAUfHgo.js → library-page-D5TOCNDL.js} +5 -5
- package/out/renderer/assets/{mermaid.core-Eee0iAWr.js → mermaid.core-D0JYobPd.js} +5 -5
- package/out/renderer/assets/{mesh-page-DyDL3zXZ.js → mesh-page-MMyOu2-i.js} +1 -1
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-ByaL59Vi.js → mindmap-definition-ALO5MXBD-BSmr1_Tl.js} +1 -1
- package/out/renderer/assets/{mini-_lUPmZx0.js → mini-DX97EGZ9.js} +1 -1
- package/out/renderer/assets/{notebook-pen-BLGuNdTQ.js → notebook-pen-CaY2CqYY.js} +1 -1
- package/out/renderer/assets/{org-access-j752f9Kq.js → org-access-D-BFcZvI.js} +1 -1
- package/out/renderer/assets/{org-surface-gate-C43ieS-R.js → org-surface-gate-BmRiAyd4.js} +1 -1
- package/out/renderer/assets/{page-header-BY6LFXsV.js → page-header-B078STNU.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-BirqKS6w.js → pieDiagram-IB7DONF6-DkC-Pw7E.js} +1 -1
- package/out/renderer/assets/{projects-page-BjTj-Yy5.js → projects-page-2kYMpXGt.js} +2 -2
- package/out/renderer/assets/{publication-validation-Bq0okvsG.js → publication-validation-Cp6mINOP.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DPdG3Mef.js → quadrantDiagram-7GDLP6J5-IVRMgBez.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-CodAvQpC.js → radar-MK3ICKWK-sedwCyEl.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-Bfi-gODU.js → radient-auth-buttons-vFQgdlYP.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-DNwBoN6L.js → requirementDiagram-KVF5MWMF-DwdfgrvA.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-BKcMIL5R.js → sankeyDiagram-QLVOVGJD-BPvKdY7g.js} +1 -1
- package/out/renderer/assets/{schedules-page-Dx3JLJ-D.js → schedules-page-BWxSAtp5.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-iFncdbSV.js → sequenceDiagram-X6HHIX6F-swhS4JaV.js} +1 -1
- package/out/renderer/assets/{settings-page-Ct33Iqgn.js → settings-page-CNeq8zEo.js} +1 -1
- package/out/renderer/assets/smartart-h3hobM9P.js +1 -0
- package/out/renderer/assets/{stateDiagram-DGXRK772-B3acnLAd.js → stateDiagram-DGXRK772-DQjtzeCn.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BoHuPFVZ.js +1 -0
- package/out/renderer/assets/{team-bridge-page-HiQbmXBo.js → team-bridge-page-DwXTOl4x.js} +1 -1
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-DLy6Im8g.js → timeline-definition-BDJGKUSR-BE4DUnJN.js} +1 -1
- package/out/renderer/assets/{ui-preferences-store-YyZ50qSr.js → ui-preferences-store-DUB1goHr.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-CqvNHh1L.js → use-download-agent-mutation-C_zKpXBu.js} +1 -1
- package/out/renderer/assets/{use-session-snapshot-ByP4HQXn.js → use-session-snapshot-B6UGWZI5.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Ckw01A5I.js → xychartDiagram-VJFVF3MP-D6nHKfw6.js} +1 -1
- package/out/renderer/console-capture.html +5 -5
- package/out/renderer/index.html +7 -7
- package/out/renderer/installer.html +4 -4
- package/out/renderer/mini.html +7 -7
- package/package.json +3 -3
- package/out/renderer/assets/arrow-up-B5uAoxB1.js +0 -6
- package/out/renderer/assets/browser-page-BNTfcuxQ.js +0 -1
- package/out/renderer/assets/channel-B1bCkk-9.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-uWs_8tRW.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-uWs_8tRW.js +0 -1
- package/out/renderer/assets/clone-Cwi2BJPt.js +0 -1
- package/out/renderer/assets/index-BUzMwM-n.css +0 -1
- package/out/renderer/assets/index-CZ72e--B.js +0 -825
- package/out/renderer/assets/index-YWHAePtd.js +0 -57
- package/out/renderer/assets/smartart-BbCFn_FJ.js +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DcgfkdmI.js +0 -1
package/out/main/index.js
CHANGED
|
@@ -28839,6 +28839,7 @@ const ADDRESS_LIST_ROWS_MAX = 5;
|
|
|
28839
28839
|
const ADDRESS_LIST_MAX_HEIGHT_DIP = 212;
|
|
28840
28840
|
const ADDRESS_LIST_NOTICE_HEIGHT_DIP = 104;
|
|
28841
28841
|
const ADDRESS_LIST_ANCHOR_GAP_MAX = 24;
|
|
28842
|
+
const ADDRESS_LIST_MIN_WIDTH_DIP = 240;
|
|
28842
28843
|
const ADDRESS_LIST_MAX_PAYLOAD_BYTES = 16 * 1024;
|
|
28843
28844
|
const ADDRESS_LIST_MAX_TEXT = 512;
|
|
28844
28845
|
const ADDRESS_LIST_MAX_TITLE = 256;
|
|
@@ -28853,7 +28854,7 @@ const NOTICE_KINDS = [
|
|
|
28853
28854
|
];
|
|
28854
28855
|
const HOSTILE_STRING = /[\p{Cc}\u2028\u2029\u202A-\u202E\u2066-\u2069]/gu;
|
|
28855
28856
|
const COLOR = /^(#[0-9a-f]{6}|rgb\(\d{1,3}, ?\d{1,3}, ?\d{1,3}\))$/i;
|
|
28856
|
-
const
|
|
28857
|
+
const PROJECTION_KEYS_V1 = /* @__PURE__ */ new Set([
|
|
28857
28858
|
"v",
|
|
28858
28859
|
"seq",
|
|
28859
28860
|
"tabId",
|
|
@@ -28867,6 +28868,20 @@ const PROJECTION_KEYS = /* @__PURE__ */ new Set([
|
|
|
28867
28868
|
"dir",
|
|
28868
28869
|
"theme"
|
|
28869
28870
|
]);
|
|
28871
|
+
const PROJECTION_KEYS_V2 = /* @__PURE__ */ new Set([
|
|
28872
|
+
"v",
|
|
28873
|
+
"seq",
|
|
28874
|
+
"tabId",
|
|
28875
|
+
"visible",
|
|
28876
|
+
"pageRect",
|
|
28877
|
+
"anchor",
|
|
28878
|
+
"active",
|
|
28879
|
+
"view",
|
|
28880
|
+
"label",
|
|
28881
|
+
"dir",
|
|
28882
|
+
"theme"
|
|
28883
|
+
]);
|
|
28884
|
+
const ANCHOR_KEYS = ["x", "width"];
|
|
28870
28885
|
const RECT_KEYS = ["x", "y", "width", "height"];
|
|
28871
28886
|
const THEME_KEYS = [
|
|
28872
28887
|
"elevated",
|
|
@@ -28947,10 +28962,10 @@ function sanitizeProjection(raw) {
|
|
|
28947
28962
|
return { ok: false, reason: "payload_too_large" };
|
|
28948
28963
|
}
|
|
28949
28964
|
if (!isRecord$1(raw)) return { ok: false, reason: "not_an_object" };
|
|
28950
|
-
if (
|
|
28951
|
-
|
|
28952
|
-
|
|
28953
|
-
if (raw
|
|
28965
|
+
if (raw.v !== 1 && raw.v !== 2) return { ok: false, reason: "bad_version" };
|
|
28966
|
+
const version = raw.v;
|
|
28967
|
+
const keys = version === 2 ? PROJECTION_KEYS_V2 : PROJECTION_KEYS_V1;
|
|
28968
|
+
if (!hasOnlyKeys(raw, keys)) return { ok: false, reason: "unknown_key" };
|
|
28954
28969
|
if (!Number.isInteger(raw.seq) || raw.seq < 1) {
|
|
28955
28970
|
return { ok: false, reason: "bad_seq" };
|
|
28956
28971
|
}
|
|
@@ -28959,15 +28974,29 @@ function sanitizeProjection(raw) {
|
|
|
28959
28974
|
return { ok: false, reason: "bad_visible" };
|
|
28960
28975
|
}
|
|
28961
28976
|
if (!raw.visible) {
|
|
28977
|
+
const empty = { x: 0, y: 0, width: 0, height: 0 };
|
|
28962
28978
|
return {
|
|
28963
28979
|
ok: true,
|
|
28964
|
-
projection: {
|
|
28980
|
+
projection: version === 2 ? {
|
|
28981
|
+
v: 2,
|
|
28982
|
+
seq: raw.seq,
|
|
28983
|
+
tabId: raw.tabId,
|
|
28984
|
+
visible: false,
|
|
28985
|
+
pageRect: empty,
|
|
28986
|
+
anchor: { x: 0, width: 0 },
|
|
28987
|
+
active: -1,
|
|
28988
|
+
view: { kind: "notice", notice: "empty", text: "" },
|
|
28989
|
+
label: "",
|
|
28990
|
+
dir: "ltr",
|
|
28991
|
+
theme: null,
|
|
28992
|
+
themeFact: "absent"
|
|
28993
|
+
} : {
|
|
28965
28994
|
v: 1,
|
|
28966
28995
|
seq: raw.seq,
|
|
28967
28996
|
tabId: raw.tabId,
|
|
28968
28997
|
visible: false,
|
|
28969
|
-
pageRect:
|
|
28970
|
-
field:
|
|
28998
|
+
pageRect: empty,
|
|
28999
|
+
field: empty,
|
|
28971
29000
|
listTop: 0,
|
|
28972
29001
|
active: -1,
|
|
28973
29002
|
view: { kind: "notice", notice: "empty", text: "" },
|
|
@@ -28979,14 +29008,30 @@ function sanitizeProjection(raw) {
|
|
|
28979
29008
|
};
|
|
28980
29009
|
}
|
|
28981
29010
|
const pageRect = rect(raw.pageRect);
|
|
28982
|
-
|
|
28983
|
-
|
|
28984
|
-
|
|
28985
|
-
|
|
28986
|
-
|
|
28987
|
-
|
|
28988
|
-
|
|
28989
|
-
|
|
29011
|
+
if (pageRect === null) return { ok: false, reason: "bad_rect" };
|
|
29012
|
+
let field = null;
|
|
29013
|
+
let listTop = 0;
|
|
29014
|
+
let anchor = null;
|
|
29015
|
+
if (version === 2) {
|
|
29016
|
+
if (!isRecord$1(raw.anchor) || !hasOnlyKeys(raw.anchor, ANCHOR_KEYS)) {
|
|
29017
|
+
return { ok: false, reason: "bad_anchor" };
|
|
29018
|
+
}
|
|
29019
|
+
const x = finite(raw.anchor.x);
|
|
29020
|
+
const width = finite(raw.anchor.width);
|
|
29021
|
+
if (x === null || width === null) {
|
|
29022
|
+
return { ok: false, reason: "bad_anchor" };
|
|
29023
|
+
}
|
|
29024
|
+
if (width <= 0) return { ok: false, reason: "bad_anchor" };
|
|
29025
|
+
anchor = { x, width };
|
|
29026
|
+
} else {
|
|
29027
|
+
field = rect(raw.field);
|
|
29028
|
+
if (field === null) return { ok: false, reason: "bad_rect" };
|
|
29029
|
+
const top = finite(raw.listTop);
|
|
29030
|
+
if (top === null) return { ok: false, reason: "bad_list_top" };
|
|
29031
|
+
listTop = top;
|
|
29032
|
+
if (field.width <= 0 || field.height <= 0) {
|
|
29033
|
+
return { ok: false, reason: "bad_field" };
|
|
29034
|
+
}
|
|
28990
29035
|
}
|
|
28991
29036
|
if (!Number.isInteger(raw.active)) return { ok: false, reason: "bad_active" };
|
|
28992
29037
|
const active = raw.active;
|
|
@@ -29026,6 +29071,27 @@ function sanitizeProjection(raw) {
|
|
|
29026
29071
|
return { ok: false, reason: "bad_dir" };
|
|
29027
29072
|
}
|
|
29028
29073
|
const { theme, fact } = sanitizeTheme(raw.theme);
|
|
29074
|
+
if (version === 2) {
|
|
29075
|
+
if (anchor === null) return { ok: false, reason: "bad_anchor" };
|
|
29076
|
+
return {
|
|
29077
|
+
ok: true,
|
|
29078
|
+
projection: {
|
|
29079
|
+
v: 2,
|
|
29080
|
+
seq: raw.seq,
|
|
29081
|
+
tabId: raw.tabId,
|
|
29082
|
+
visible: true,
|
|
29083
|
+
pageRect,
|
|
29084
|
+
anchor,
|
|
29085
|
+
active,
|
|
29086
|
+
view,
|
|
29087
|
+
label,
|
|
29088
|
+
dir: raw.dir,
|
|
29089
|
+
theme,
|
|
29090
|
+
themeFact: fact
|
|
29091
|
+
}
|
|
29092
|
+
};
|
|
29093
|
+
}
|
|
29094
|
+
if (field === null) return { ok: false, reason: "bad_rect" };
|
|
29029
29095
|
return {
|
|
29030
29096
|
ok: true,
|
|
29031
29097
|
projection: {
|
|
@@ -29079,6 +29145,26 @@ function addressListBoundsFor(field, listTop, view, owner) {
|
|
|
29079
29145
|
if (bottom - top !== height) return null;
|
|
29080
29146
|
return { x: left, y: top, width: right - left, height };
|
|
29081
29147
|
}
|
|
29148
|
+
function addressListBoundsV2For(anchor, pageRect, view, owner) {
|
|
29149
|
+
const ax = int32$1(anchor.x);
|
|
29150
|
+
const aw = int32$1(anchor.width);
|
|
29151
|
+
const px = int32$1(pageRect.x);
|
|
29152
|
+
const pw = int32$1(pageRect.width);
|
|
29153
|
+
const py = int32$1(pageRect.y);
|
|
29154
|
+
const ownerWidth = int32$1(owner.width);
|
|
29155
|
+
const ownerHeight = int32$1(owner.height);
|
|
29156
|
+
if (ax === null || aw === null || px === null || pw === null || py === null || ownerWidth === null || ownerHeight === null) {
|
|
29157
|
+
return null;
|
|
29158
|
+
}
|
|
29159
|
+
if (aw <= 0 || pw <= 0 || ownerWidth <= 0 || ownerHeight <= 0) return null;
|
|
29160
|
+
const left = Math.max(0, Math.max(ax, px));
|
|
29161
|
+
const right = Math.min(ownerWidth, Math.min(ax + aw, px + pw));
|
|
29162
|
+
if (right - left < ADDRESS_LIST_MIN_WIDTH_DIP) return null;
|
|
29163
|
+
const height = addressListHeightFor(view);
|
|
29164
|
+
if (height > ADDRESS_LIST_MAX_HEIGHT_DIP) return null;
|
|
29165
|
+
if (py < 0 || py + height > ownerHeight) return null;
|
|
29166
|
+
return { x: left, y: py, width: right - left, height };
|
|
29167
|
+
}
|
|
29082
29168
|
function addressListRowIndexAt(view, offsetY) {
|
|
29083
29169
|
if (view.kind !== "rows") return null;
|
|
29084
29170
|
if (!Number.isFinite(offsetY)) return null;
|
|
@@ -29391,6 +29477,10 @@ function layoutKeyOf(snapshot2) {
|
|
|
29391
29477
|
const rect2 = snapshot2.contentRect;
|
|
29392
29478
|
return `${snapshot2.activeTabId}:${snapshot2.presented ? 1 : 0}:${rect2 ? `${rect2.x},${rect2.y},${rect2.width},${rect2.height}` : "null"}`;
|
|
29393
29479
|
}
|
|
29480
|
+
function layoutContentKeyOf(snapshot2) {
|
|
29481
|
+
const rect2 = snapshot2.contentRect;
|
|
29482
|
+
return `${snapshot2.activeTabId}:${rect2 ? `${rect2.x},${rect2.y},${rect2.width},${rect2.height}` : "null"}`;
|
|
29483
|
+
}
|
|
29394
29484
|
function sameRect(a, b) {
|
|
29395
29485
|
if (b === null) return false;
|
|
29396
29486
|
return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
|
|
@@ -29437,6 +29527,7 @@ class AddressOverlayController {
|
|
|
29437
29527
|
createView;
|
|
29438
29528
|
javascript;
|
|
29439
29529
|
onEvent;
|
|
29530
|
+
onHealthChange;
|
|
29440
29531
|
readinessTimeoutMs;
|
|
29441
29532
|
log;
|
|
29442
29533
|
now;
|
|
@@ -29452,6 +29543,9 @@ class AddressOverlayController {
|
|
|
29452
29543
|
lastShow;
|
|
29453
29544
|
layout;
|
|
29454
29545
|
layoutKey;
|
|
29546
|
+
/** The layout's content identity (tab + rect), the fact a product dismissal
|
|
29547
|
+
* is allowed to rest on; see `layoutContentKeyOf`. */
|
|
29548
|
+
layoutContentKey;
|
|
29455
29549
|
boundTabId;
|
|
29456
29550
|
domReady;
|
|
29457
29551
|
finished;
|
|
@@ -29492,14 +29586,25 @@ class AddressOverlayController {
|
|
|
29492
29586
|
/** The launch gate's `visible` fact, copied in so `facts()` can report it
|
|
29493
29587
|
* without re-deriving the gate (which it must never do: one pure decision). */
|
|
29494
29588
|
visibleMode;
|
|
29589
|
+
product;
|
|
29590
|
+
warmScheduled;
|
|
29495
29591
|
lastRejected;
|
|
29496
29592
|
projectQueue;
|
|
29593
|
+
/** The native page is hidden for a reason that says nothing about the popout
|
|
29594
|
+
* (the page menu suppresses it while its panel is open). The row stays
|
|
29595
|
+
* raised, so the child's paint stops and its "shown" state does not. */
|
|
29596
|
+
presentationSuspended;
|
|
29597
|
+
/** A projection that arrived while the page was suppressed. Applied on
|
|
29598
|
+
* resume rather than refused: a refusal would make the mirror re-project
|
|
29599
|
+
* every frame until the menu closed. */
|
|
29600
|
+
deferredProjection;
|
|
29497
29601
|
constructor(deps) {
|
|
29498
29602
|
this.window = deps.window;
|
|
29499
29603
|
this.documentUrl = deps.documentUrl;
|
|
29500
29604
|
this.createView = deps.createView ?? (() => createHardenedView({ javascript: deps.javascript === true }));
|
|
29501
29605
|
this.javascript = deps.javascript === true;
|
|
29502
29606
|
this.onEvent = deps.onEvent ?? null;
|
|
29607
|
+
this.onHealthChange = deps.onHealthChange ?? null;
|
|
29503
29608
|
this.readinessTimeoutMs = deps.readinessTimeoutMs ?? ADDRESS_OVERLAY_READY_TIMEOUT_MS;
|
|
29504
29609
|
this.log = deps.log ?? (() => {
|
|
29505
29610
|
});
|
|
@@ -29521,6 +29626,7 @@ class AddressOverlayController {
|
|
|
29521
29626
|
revision: 0
|
|
29522
29627
|
};
|
|
29523
29628
|
this.layoutKey = "none";
|
|
29629
|
+
this.layoutContentKey = "none";
|
|
29524
29630
|
this.boundTabId = null;
|
|
29525
29631
|
this.domReady = false;
|
|
29526
29632
|
this.finished = false;
|
|
@@ -29552,8 +29658,12 @@ class AddressOverlayController {
|
|
|
29552
29658
|
this.childFocusEvents = 0;
|
|
29553
29659
|
this.childBlurEvents = 0;
|
|
29554
29660
|
this.visibleMode = deps.visible === true;
|
|
29661
|
+
this.product = deps.product === true;
|
|
29662
|
+
this.warmScheduled = false;
|
|
29555
29663
|
this.lastRejected = null;
|
|
29556
29664
|
this.projectQueue = Promise.resolve();
|
|
29665
|
+
this.presentationSuspended = false;
|
|
29666
|
+
this.deferredProjection = null;
|
|
29557
29667
|
this.attachOwnerListeners();
|
|
29558
29668
|
}
|
|
29559
29669
|
// ---- observer hooks ------------------------------------------------------
|
|
@@ -29561,25 +29671,41 @@ class AddressOverlayController {
|
|
|
29561
29671
|
* The registry's post-layout hook. Called after every page layout pass,
|
|
29562
29672
|
* including null and suppressed ones.
|
|
29563
29673
|
*
|
|
29564
|
-
* A changed key (tab, presentation or rectangle)
|
|
29565
|
-
*
|
|
29566
|
-
*
|
|
29567
|
-
*
|
|
29568
|
-
*
|
|
29569
|
-
* and
|
|
29570
|
-
*
|
|
29674
|
+
* A changed key (tab, presentation or rectangle) is handled by ONE of two
|
|
29675
|
+
* rules, and the split is load-bearing (agent review round 1, MAJOR-1):
|
|
29676
|
+
* a CONTENT change (tab or rectangle) hides and invalidates, while a
|
|
29677
|
+
* PRESENTATION-only change is a suppression that belongs to someone else —
|
|
29678
|
+
* the page menu, which paints into the content rect — so it only stops the
|
|
29679
|
+
* child's paint and keeps the shown state. Collapsing the two made opening
|
|
29680
|
+
* the menu dismiss the popout it was opened from. An unchanged key is the
|
|
29681
|
+
* background-page-creation case: the layout pass may have added a page above
|
|
29682
|
+
* the child, so the child is re-added last and given the same rectangle. It
|
|
29683
|
+
* never re-opens by itself; showing again is always an explicit probe call.
|
|
29571
29684
|
*/
|
|
29572
29685
|
onLayout(snapshot2) {
|
|
29573
29686
|
if (this.disposed) return;
|
|
29574
29687
|
const next = copyLayout(snapshot2);
|
|
29575
29688
|
const nextKey = layoutKeyOf(next);
|
|
29576
29689
|
const previousKey = this.layoutKey;
|
|
29690
|
+
const nextContentKey = layoutContentKeyOf(next);
|
|
29691
|
+
const previousContentKey = this.layoutContentKey;
|
|
29577
29692
|
this.layout = next;
|
|
29578
29693
|
this.layoutKey = nextKey;
|
|
29694
|
+
this.layoutContentKey = nextContentKey;
|
|
29579
29695
|
if (previousKey !== nextKey) {
|
|
29696
|
+
const contentChanged = previousContentKey !== nextContentKey;
|
|
29697
|
+
if (!contentChanged) {
|
|
29698
|
+
if (next.presented) this.resumePresentation();
|
|
29699
|
+
else this.suspendPresentation();
|
|
29700
|
+
return;
|
|
29701
|
+
}
|
|
29580
29702
|
this.hide("layout");
|
|
29703
|
+
if (this.product && previousKey !== "none") this.emitDismiss("layout");
|
|
29581
29704
|
return;
|
|
29582
29705
|
}
|
|
29706
|
+
if (this.product && next.presented && next.contentRect !== null) {
|
|
29707
|
+
this.ensureChild();
|
|
29708
|
+
}
|
|
29583
29709
|
if (this.state !== "shown") return;
|
|
29584
29710
|
const view = this.view;
|
|
29585
29711
|
if (!view || this.viewUsable(view) === false) return;
|
|
@@ -29596,6 +29722,40 @@ class AddressOverlayController {
|
|
|
29596
29722
|
this.log(`[browser] address overlay layout failed: ${String(error)}`);
|
|
29597
29723
|
}
|
|
29598
29724
|
}
|
|
29725
|
+
/** Hide the child's paint without dropping the popout's state; see `onLayout`. */
|
|
29726
|
+
suspendPresentation() {
|
|
29727
|
+
this.presentationSuspended = true;
|
|
29728
|
+
const view = this.view;
|
|
29729
|
+
if (!view || this.viewUsable(view) === false) return;
|
|
29730
|
+
try {
|
|
29731
|
+
view.setVisible(false);
|
|
29732
|
+
} catch {
|
|
29733
|
+
}
|
|
29734
|
+
}
|
|
29735
|
+
/** The page is back. Re-present the child from the bounds last applied, or
|
|
29736
|
+
* apply the projection that arrived while the page was hidden. */
|
|
29737
|
+
resumePresentation() {
|
|
29738
|
+
if (!this.presentationSuspended) return;
|
|
29739
|
+
this.presentationSuspended = false;
|
|
29740
|
+
const deferred = this.deferredProjection;
|
|
29741
|
+
this.deferredProjection = null;
|
|
29742
|
+
if (deferred !== null) {
|
|
29743
|
+
void this.project(deferred);
|
|
29744
|
+
return;
|
|
29745
|
+
}
|
|
29746
|
+
if (this.state !== "shown") return;
|
|
29747
|
+
const bounds = this.lastAppliedBounds ?? overlayBoundsFor(this.layout.contentRect, this.ownerSize());
|
|
29748
|
+
if (bounds === null) return;
|
|
29749
|
+
const view = this.view;
|
|
29750
|
+
if (!view || this.viewUsable(view) === false) return;
|
|
29751
|
+
try {
|
|
29752
|
+
view.setBounds(bounds);
|
|
29753
|
+
this.raiseChild(view);
|
|
29754
|
+
view.setVisible(true);
|
|
29755
|
+
} catch {
|
|
29756
|
+
this.releaseChild("layout_error");
|
|
29757
|
+
}
|
|
29758
|
+
}
|
|
29599
29759
|
/** The bound page is going away. Dispose the child before the page release. */
|
|
29600
29760
|
onTabReleased(tabId) {
|
|
29601
29761
|
if (this.disposed) return;
|
|
@@ -29610,6 +29770,63 @@ class AddressOverlayController {
|
|
|
29610
29770
|
if (this.boundTabId !== tabId) return;
|
|
29611
29771
|
this.releaseChild("page-crash");
|
|
29612
29772
|
}
|
|
29773
|
+
/**
|
|
29774
|
+
* The popout's current health, in the one shape the renderer reads.
|
|
29775
|
+
*
|
|
29776
|
+
* `suspend` is sticky for the app run: the child is either latched failed or
|
|
29777
|
+
* gone, and the restart that would clear it is a new process. A conditional
|
|
29778
|
+
* refusal (`zoomed`, `anchor_too_narrow`, `stale_*`) is NOT reported here —
|
|
29779
|
+
* those clear themselves, and the projection answer names them while they
|
|
29780
|
+
* last.
|
|
29781
|
+
*/
|
|
29782
|
+
mode() {
|
|
29783
|
+
if (this.disposed) return { mode: "suspend", reason: "disposed" };
|
|
29784
|
+
if (this.failedReason)
|
|
29785
|
+
return { mode: "suspend", reason: this.failedReason };
|
|
29786
|
+
return { mode: "popout", reason: null };
|
|
29787
|
+
}
|
|
29788
|
+
/**
|
|
29789
|
+
* A main-decided dismissal (the page took focus, the bound tab's main frame
|
|
29790
|
+
* navigated, the tab went away). Idempotent: a second reason for a popout that
|
|
29791
|
+
* is already hidden sends nothing.
|
|
29792
|
+
*/
|
|
29793
|
+
dismiss(reason) {
|
|
29794
|
+
if (this.disposed) return;
|
|
29795
|
+
this.hide(reason);
|
|
29796
|
+
if (this.product) this.emitDismiss(reason);
|
|
29797
|
+
}
|
|
29798
|
+
/** The page `tabId` took focus. Only the bound tab can dismiss its own list;
|
|
29799
|
+
* a background tab's focus event is not this popout's business. */
|
|
29800
|
+
dismissForTab(tabId, reason) {
|
|
29801
|
+
if (this.disposed) return;
|
|
29802
|
+
if (this.boundTabId !== null && this.boundTabId !== tabId) return;
|
|
29803
|
+
if (this.layout.activeTabId !== null && this.layout.activeTabId !== tabId)
|
|
29804
|
+
return;
|
|
29805
|
+
this.dismiss(reason);
|
|
29806
|
+
}
|
|
29807
|
+
/**
|
|
29808
|
+
* Warm the list child once the page has a presented layout, so the first
|
|
29809
|
+
* raise finds a loaded document instead of paying the load after Cmd+L. The
|
|
29810
|
+
* child is created hidden and stays hidden until a projection shows it.
|
|
29811
|
+
*/
|
|
29812
|
+
ensureChild() {
|
|
29813
|
+
if (!this.product || this.view || this.failedReason || this.warmScheduled)
|
|
29814
|
+
return;
|
|
29815
|
+
const bounds = overlayBoundsFor(this.layout.contentRect, this.ownerSize());
|
|
29816
|
+
if (bounds === null || !this.layout.presented) return;
|
|
29817
|
+
this.warmScheduled = true;
|
|
29818
|
+
setTimeout(() => {
|
|
29819
|
+
this.warmScheduled = false;
|
|
29820
|
+
if (this.disposed || this.view || this.failedReason) return;
|
|
29821
|
+
if (!this.layout.presented) return;
|
|
29822
|
+
const rect2 = overlayBoundsFor(this.layout.contentRect, this.ownerSize());
|
|
29823
|
+
if (rect2 === null) return;
|
|
29824
|
+
if (this.createChild(rect2)) this.state = "loading";
|
|
29825
|
+
}, 0);
|
|
29826
|
+
}
|
|
29827
|
+
emitDismiss(reason) {
|
|
29828
|
+
this.onEvent?.({ type: "dismiss", reason });
|
|
29829
|
+
}
|
|
29613
29830
|
// ---- probe surface ------------------------------------------------------
|
|
29614
29831
|
async showOverlay() {
|
|
29615
29832
|
if (this.showInFlight) return this.showInFlight;
|
|
@@ -29627,6 +29844,8 @@ class AddressOverlayController {
|
|
|
29627
29844
|
}
|
|
29628
29845
|
hide(reason = "hide") {
|
|
29629
29846
|
if (this.disposed) return;
|
|
29847
|
+
this.presentationSuspended = false;
|
|
29848
|
+
this.deferredProjection = null;
|
|
29630
29849
|
this.generation += 1;
|
|
29631
29850
|
this.settleReady(false);
|
|
29632
29851
|
this.hiddenReason = reason;
|
|
@@ -29793,6 +30012,15 @@ class AddressOverlayController {
|
|
|
29793
30012
|
* controller, so a burst between frames costs one apply each in arrival order.
|
|
29794
30013
|
*/
|
|
29795
30014
|
project(raw) {
|
|
30015
|
+
if (this.presentationSuspended) {
|
|
30016
|
+
this.deferredProjection = raw;
|
|
30017
|
+
return Promise.resolve({
|
|
30018
|
+
accepted: true,
|
|
30019
|
+
shown: false,
|
|
30020
|
+
reason: null,
|
|
30021
|
+
bounds: null
|
|
30022
|
+
});
|
|
30023
|
+
}
|
|
29796
30024
|
const run = () => this.projectOnce(raw);
|
|
29797
30025
|
const next = this.projectQueue.then(run, run);
|
|
29798
30026
|
this.projectQueue = next.then(
|
|
@@ -29855,13 +30083,23 @@ class AddressOverlayController {
|
|
|
29855
30083
|
if (!layout.presented || !sameRect(projection.pageRect, layout.contentRect)) {
|
|
29856
30084
|
return this.refuseProjection("stale_layout");
|
|
29857
30085
|
}
|
|
29858
|
-
const bounds =
|
|
30086
|
+
const bounds = projection.v === 2 ? projection.anchor.width < ADDRESS_LIST_MIN_WIDTH_DIP ? null : addressListBoundsV2For(
|
|
30087
|
+
projection.anchor,
|
|
30088
|
+
projection.pageRect,
|
|
30089
|
+
projection.view,
|
|
30090
|
+
this.ownerSize()
|
|
30091
|
+
) : addressListBoundsFor(
|
|
29859
30092
|
projection.field,
|
|
29860
30093
|
projection.listTop,
|
|
29861
30094
|
projection.view,
|
|
29862
30095
|
this.ownerSize()
|
|
29863
30096
|
);
|
|
29864
|
-
if (bounds === null)
|
|
30097
|
+
if (bounds === null) {
|
|
30098
|
+
const tooNarrow = projection.v === 2 && projection.anchor.width < ADDRESS_LIST_MIN_WIDTH_DIP;
|
|
30099
|
+
return this.refuseProjection(
|
|
30100
|
+
tooNarrow ? "anchor_too_narrow" : "anchor_inconsistent"
|
|
30101
|
+
);
|
|
30102
|
+
}
|
|
29865
30103
|
this.generation += 1;
|
|
29866
30104
|
const generation = this.generation;
|
|
29867
30105
|
this.boundTabId = projection.tabId;
|
|
@@ -30307,6 +30545,7 @@ class AddressOverlayController {
|
|
|
30307
30545
|
this.settleReady(false);
|
|
30308
30546
|
this.destroyChild();
|
|
30309
30547
|
this.log(`[browser] address overlay failed: ${reason}`);
|
|
30548
|
+
this.onHealthChange?.();
|
|
30310
30549
|
}
|
|
30311
30550
|
/** Recoverable: the child goes, a later explicit show may lazily recreate one. */
|
|
30312
30551
|
releaseChild(reason) {
|
|
@@ -30319,6 +30558,7 @@ class AddressOverlayController {
|
|
|
30319
30558
|
this.finished = false;
|
|
30320
30559
|
this.loadStartedAt = null;
|
|
30321
30560
|
this.log(`[browser] address overlay child released: ${reason}`);
|
|
30561
|
+
this.onHealthChange?.();
|
|
30322
30562
|
}
|
|
30323
30563
|
destroyChild() {
|
|
30324
30564
|
const view = this.view;
|
|
@@ -35135,6 +35375,7 @@ const enUiBrowser = {
|
|
|
35135
35375
|
"ui.browser.browser_url_bar.home_destination": "Home — go to the start page (blank)",
|
|
35136
35376
|
"ui.browser.browser_url_bar.latest_download": "Open downloads folder — {name} was saved there",
|
|
35137
35377
|
"ui.browser.browser_url_bar.newest_download": "Open downloads folder — {name} was the newest saved there ({count, plural, other {{count, number, ::group-off} this session}})",
|
|
35378
|
+
"ui.browser.browser_url_bar.page_menu": "Page options",
|
|
35138
35379
|
"ui.browser.browser_url_bar.page_zoom_reset": "Page zoom {zoom, number, ::group-off}%, reset to 100%",
|
|
35139
35380
|
"ui.browser.browser_url_bar.print_page": "Print page",
|
|
35140
35381
|
"ui.browser.browser_url_bar.reload": "Reload",
|
|
@@ -35356,6 +35597,12 @@ const enUiChat = {
|
|
|
35356
35597
|
"ui.chat.skill_invocation.trigger_label": "{token} skill instructions",
|
|
35357
35598
|
"ui.chat.highlights.file_resolution_failed": "Couldn't resolve this file in the session working directory. Use Copy file path to check its location against this session's workspace before trying again."
|
|
35358
35599
|
};
|
|
35600
|
+
const enUiChatLiveUpdates = {
|
|
35601
|
+
"ui.chat.live_updates.paused": "Live updates are paused, so this conversation may be out of date.",
|
|
35602
|
+
"ui.chat.live_updates.reload": "Reload from history",
|
|
35603
|
+
"ui.chat.live_updates.reloading": "Reloading…",
|
|
35604
|
+
"ui.chat.live_updates.reload_failed": "Couldn't reload this conversation. Try again."
|
|
35605
|
+
};
|
|
35359
35606
|
const enUiChatPickers = {
|
|
35360
35607
|
"ui.chat.pickers.approvals.title": "Tool approvals",
|
|
35361
35608
|
"ui.chat.pickers.commands.title": "Commands",
|
|
@@ -35469,9 +35716,6 @@ const enUiChatSidebarView = {
|
|
|
35469
35716
|
"ui.chat.sidebar_view.section.teams": "Teams"
|
|
35470
35717
|
};
|
|
35471
35718
|
const enUiChatTagDialogs = {
|
|
35472
|
-
"ui.chat.tag_dialogs.picker_description": "Changes save immediately. Select a tag to add it, or deselect it to remove it.",
|
|
35473
|
-
"ui.chat.tag_dialogs.manage_description": "Create, rename, reorder and delete tags. Changes save immediately.",
|
|
35474
|
-
"ui.chat.tag_dialogs.close": "Close",
|
|
35475
35719
|
"ui.chat.tag_dialogs.deleted_name": "Deleted “{name}”",
|
|
35476
35720
|
"ui.chat.tag_dialogs.created_assigned": "Created “{name}” and added it to this conversation",
|
|
35477
35721
|
"ui.chat.tag_dialogs.assign_created_failed": "“{name}” was created, but it could not be added to this conversation. Select it from the list to add it.",
|
|
@@ -35481,61 +35725,42 @@ const enUiChatTags = {
|
|
|
35481
35725
|
"ui.chat.tags.label": "Tags",
|
|
35482
35726
|
"ui.chat.tags.menu": "Tags…",
|
|
35483
35727
|
"ui.chat.tags.group": "Group chats by tag",
|
|
35484
|
-
"ui.chat.tags.manage": "Manage tags…",
|
|
35485
35728
|
"ui.chat.tags.mode_hint": "Tag groups use Time section grouping.",
|
|
35486
35729
|
"ui.chat.tags.use_time": "Use Time section",
|
|
35487
35730
|
"ui.chat.tags.auto_tag": "Auto-tag forked sessions",
|
|
35488
35731
|
"ui.chat.tags.auto_tag_help": "Uses your existing tags when naming a fork.",
|
|
35489
|
-
"ui.chat.tags.discovery": "Right-click a conversation and choose Tags
|
|
35490
|
-
"ui.chat.tags.picker_title": "Tags for “{title}”",
|
|
35491
|
-
"ui.chat.tags.picker_description": "Choose tags, then Apply. New tags are saved immediately.",
|
|
35732
|
+
"ui.chat.tags.discovery": "Right-click a conversation and choose Tags…, or press Command+Shift+L or Ctrl+Shift+L on a focused conversation.",
|
|
35492
35733
|
"ui.chat.tags.search": "Search tags",
|
|
35493
|
-
"ui.chat.tags.empty": "
|
|
35734
|
+
"ui.chat.tags.empty": "Create a tag to get started.",
|
|
35494
35735
|
"ui.chat.tags.loading": "Loading tags…",
|
|
35495
35736
|
"ui.chat.tags.applying": "Applying tags…",
|
|
35496
35737
|
"ui.chat.tags.retry": "Retry",
|
|
35497
35738
|
"ui.chat.tags.cancel": "Cancel",
|
|
35498
|
-
"ui.chat.tags.apply": "Apply",
|
|
35499
|
-
"ui.chat.tags.clear": "Clear tags",
|
|
35500
|
-
"ui.chat.tags.new": "New tag…",
|
|
35501
35739
|
"ui.chat.tags.new_name": "New tag name",
|
|
35502
35740
|
"ui.chat.tags.add": "Add",
|
|
35503
35741
|
"ui.chat.tags.primary": "Primary",
|
|
35504
|
-
"ui.chat.tags.group_under": "Group under",
|
|
35505
35742
|
"ui.chat.tags.untagged": "Untagged",
|
|
35506
35743
|
"ui.chat.tags.rename": "Rename",
|
|
35507
|
-
"ui.chat.tags.save": "Save",
|
|
35508
35744
|
"ui.chat.tags.delete": "Delete",
|
|
35509
35745
|
"ui.chat.tags.delete_tag": "Delete tag",
|
|
35510
35746
|
"ui.chat.tags.delete_title": "Delete “{name}”?",
|
|
35511
|
-
"ui.chat.tags.delete_description": "Remove this tag from {count, plural, one {# conversation} other {# conversations}}. Conversations
|
|
35747
|
+
"ui.chat.tags.delete_description": "Remove this tag from {count, plural, one {# conversation} other {# conversations}}. Conversations are not deleted.",
|
|
35512
35748
|
"ui.chat.tags.move_up": "Move {name} up",
|
|
35513
35749
|
"ui.chat.tags.move_down": "Move {name} down",
|
|
35514
|
-
"ui.chat.tags.manage_description": "Create, rename and order tags, then Apply. Cancel discards these changes.",
|
|
35515
35750
|
"ui.chat.tags.rename_label": "Rename {name}",
|
|
35516
35751
|
"ui.chat.tags.no_matches": "No tags match “{query}”.",
|
|
35517
35752
|
"ui.chat.tags.save_failed": "Tags were not saved. Try again.",
|
|
35518
35753
|
"ui.chat.tags.load_failed": "Tags could not be loaded. Try again.",
|
|
35519
35754
|
"ui.chat.tags.duplicate_name": "A tag named “{name}” already exists.",
|
|
35520
|
-
"ui.chat.tags.updated_grouped": "Tags updated. Grouped under {tag}.",
|
|
35521
|
-
"ui.chat.tags.updated_untagged": "Tags updated. Shown under Untagged.",
|
|
35522
|
-
"ui.chat.tags.none_yet": "No tags yet",
|
|
35523
|
-
"ui.chat.tags.manage_title": "Manage tags",
|
|
35524
|
-
"ui.chat.tags.apply_deletion_first": "Apply the deletion first, then add “{name}” again.",
|
|
35525
|
-
"ui.chat.tags.moved_to": "Moved to “{name}”",
|
|
35526
35755
|
"ui.chat.tags.removed_all": "Removed all tags",
|
|
35527
35756
|
"ui.chat.tags.remove_all": "{count, plural, one {Remove tag (#)} other {Remove all tags (#)}}",
|
|
35528
|
-
"ui.chat.tags.move_menu": "Move to tag…",
|
|
35529
35757
|
"ui.chat.tags.changed_elsewhere": "Tags changed elsewhere",
|
|
35530
35758
|
"ui.chat.tags.move_armed": "Move “{name}”",
|
|
35531
35759
|
"ui.chat.tags.move_cancelled": "Move cancelled",
|
|
35532
35760
|
"ui.chat.tags.undo": "Undo",
|
|
35533
35761
|
"ui.chat.tags.move_undone": "Tag move undone",
|
|
35534
|
-
"ui.chat.tags.move_title": "Move “{title}”",
|
|
35535
|
-
"ui.chat.tags.move_description": "Choose a tag to make it primary, or Untagged to remove all tags.",
|
|
35536
35762
|
"ui.chat.tags.move_failed": "Tags were not moved. Try again.",
|
|
35537
35763
|
"ui.chat.tags.selection_count": "{count} of 8",
|
|
35538
|
-
"ui.chat.tags.registry_count": "{count} of 32",
|
|
35539
35764
|
"ui.chat.tags.create_name": "Create “{name}”",
|
|
35540
35765
|
"ui.chat.tags.create_helper": "Saved for all conversations",
|
|
35541
35766
|
"ui.chat.tags.selection_limit": "Choose up to 8 tags",
|
|
@@ -35544,15 +35769,26 @@ const enUiChatTags = {
|
|
|
35544
35769
|
"ui.chat.tags.name_reserved": "“Untagged” is reserved",
|
|
35545
35770
|
"ui.chat.tags.create_failed": "Tag was not created. Try again.",
|
|
35546
35771
|
"ui.chat.tags.remove_named": "Remove {name}",
|
|
35547
|
-
"ui.chat.tags.reorder_filtered": "Clear search to reorder tags",
|
|
35548
35772
|
"ui.chat.tags.created_name": "Created “{name}”",
|
|
35549
|
-
"ui.chat.tags.selection_status": "{count} selected.
|
|
35550
|
-
"ui.chat.tags.tag_usage": "{count, plural, one {# conversation} other {# conversations}}",
|
|
35551
|
-
"ui.chat.tags.create_pending": "Saving tag…",
|
|
35773
|
+
"ui.chat.tags.selection_status": "{count} selected. Shown under {name}.",
|
|
35552
35774
|
"ui.chat.tags.remote": "Tags cannot be changed on a remote conversation.",
|
|
35553
35775
|
"ui.chat.tags.renamed_name": "Renamed to “{name}”",
|
|
35554
|
-
"ui.chat.tags.
|
|
35555
|
-
"ui.chat.tags.
|
|
35776
|
+
"ui.chat.tags.registry_changed": "Some tags changed elsewhere. Review your selection.",
|
|
35777
|
+
"ui.chat.tags.dropped_on": "Added “{name}” and grouped under it",
|
|
35778
|
+
"ui.chat.tags.show_under": "Show under",
|
|
35779
|
+
"ui.chat.tags.shown_under": "Shown under {tag}",
|
|
35780
|
+
"ui.chat.tags.shown_untagged": "Shown under Untagged",
|
|
35781
|
+
"ui.chat.tags.hidden": "Tags are hidden.",
|
|
35782
|
+
"ui.chat.tags.show_groups": "Show groups",
|
|
35783
|
+
"ui.chat.tags.header_actions": "Tag actions: {name}",
|
|
35784
|
+
"ui.chat.tags.header_first": "“{name}” is already the first tag here",
|
|
35785
|
+
"ui.chat.tags.header_last": "“{name}” is already the last tag here",
|
|
35786
|
+
"ui.chat.tags.moved_tag": "Moved “{name}”",
|
|
35787
|
+
"ui.chat.tags.new_tag": "New tag",
|
|
35788
|
+
"ui.chat.tags.name_placeholder": "Tag name",
|
|
35789
|
+
"ui.chat.tags.unused": "Unused tags ({count})",
|
|
35790
|
+
"ui.chat.tags.empty_title": "Group chats by tag.",
|
|
35791
|
+
"ui.chat.tags.empty_hint": "Press {chord} on a chat, or create one here."
|
|
35556
35792
|
};
|
|
35557
35793
|
const enUiChatTranscriptCopy = {
|
|
35558
35794
|
"ui.chat.transcript_copy.menu.copy_text": "Copy text",
|
|
@@ -38847,6 +39083,7 @@ const esUiBrowser = {
|
|
|
38847
39083
|
"ui.browser.browser_url_bar.print_page": "Imprimir página",
|
|
38848
39084
|
"ui.browser.browser_url_bar.forward": "Adelante",
|
|
38849
39085
|
"ui.browser.browser_url_bar.reset_page_zoom_shortcut": "Restablecer zoom de la página ({shortcut})",
|
|
39086
|
+
"ui.browser.browser_url_bar.page_menu": "Opciones de página",
|
|
38850
39087
|
"ui.browser.browser_url_bar.page_zoom_reset": "Zoom de la página al {zoom, number, ::group-off}%, restablecer al 100%",
|
|
38851
39088
|
"ui.browser.browser_url_bar.stop_loading": "Detener carga",
|
|
38852
39089
|
"ui.browser.browser_url_bar.reload": "Recargar",
|
|
@@ -39041,6 +39278,12 @@ const esUiChat = {
|
|
|
39041
39278
|
"ui.chat.skill_invocation.trigger_label": "Instrucciones de la habilidad {token}",
|
|
39042
39279
|
"ui.chat.highlights.file_resolution_failed": "No se pudo resolver este archivo en el directorio de trabajo de la sesión. Usa Copiar ruta del archivo para comprobar su ubicación frente al espacio de trabajo de esta sesión antes de volver a intentarlo."
|
|
39043
39280
|
};
|
|
39281
|
+
const esUiChatLiveUpdates = {
|
|
39282
|
+
"ui.chat.live_updates.paused": "Las actualizaciones en directo están en pausa, así que esta conversación puede estar desactualizada.",
|
|
39283
|
+
"ui.chat.live_updates.reload": "Recargar desde el historial",
|
|
39284
|
+
"ui.chat.live_updates.reloading": "Recargando…",
|
|
39285
|
+
"ui.chat.live_updates.reload_failed": "No se pudo recargar esta conversación. Inténtalo de nuevo."
|
|
39286
|
+
};
|
|
39044
39287
|
const esUiChatResponseActions = {
|
|
39045
39288
|
"ui.chat.response_actions.label": "Acciones de la respuesta"
|
|
39046
39289
|
};
|
|
@@ -39072,61 +39315,42 @@ const esUiChatTags = {
|
|
|
39072
39315
|
"ui.chat.tags.label": "Etiquetas",
|
|
39073
39316
|
"ui.chat.tags.menu": "Etiquetas…",
|
|
39074
39317
|
"ui.chat.tags.group": "Agrupar chats por etiqueta",
|
|
39075
|
-
"ui.chat.tags.manage": "Gestionar…",
|
|
39076
39318
|
"ui.chat.tags.mode_hint": "Los grupos de etiquetas usan la sección temporal.",
|
|
39077
39319
|
"ui.chat.tags.use_time": "Usar la sección temporal",
|
|
39078
39320
|
"ui.chat.tags.auto_tag": "Etiquetar automáticamente las conversaciones bifurcadas",
|
|
39079
39321
|
"ui.chat.tags.auto_tag_help": "Usa tus etiquetas existentes al nombrar una bifurcación.",
|
|
39080
|
-
"ui.chat.tags.discovery": "Haz clic derecho en una conversación y elige Etiquetas
|
|
39081
|
-
"ui.chat.tags.picker_title": "Etiquetas de “{title}”",
|
|
39082
|
-
"ui.chat.tags.picker_description": "Elige etiquetas y pulsa Aplicar. Las etiquetas nuevas se guardan al instante.",
|
|
39322
|
+
"ui.chat.tags.discovery": "Haz clic derecho en una conversación y elige Etiquetas…, o pulsa Command+Shift+L o Ctrl+Shift+L cuando una conversación tenga el foco del teclado.",
|
|
39083
39323
|
"ui.chat.tags.search": "Buscar etiquetas",
|
|
39084
|
-
"ui.chat.tags.empty": "
|
|
39324
|
+
"ui.chat.tags.empty": "Crea una etiqueta para empezar.",
|
|
39085
39325
|
"ui.chat.tags.loading": "Cargando etiquetas…",
|
|
39086
39326
|
"ui.chat.tags.applying": "Aplicando etiquetas…",
|
|
39087
39327
|
"ui.chat.tags.retry": "Reintentar",
|
|
39088
39328
|
"ui.chat.tags.cancel": "Cancelar",
|
|
39089
|
-
"ui.chat.tags.apply": "Aplicar",
|
|
39090
|
-
"ui.chat.tags.clear": "Quitar etiquetas",
|
|
39091
|
-
"ui.chat.tags.new": "Nueva etiqueta…",
|
|
39092
39329
|
"ui.chat.tags.new_name": "Nombre de la nueva etiqueta",
|
|
39093
39330
|
"ui.chat.tags.add": "Añadir",
|
|
39094
39331
|
"ui.chat.tags.primary": "Principal",
|
|
39095
|
-
"ui.chat.tags.group_under": "Agrupar en",
|
|
39096
39332
|
"ui.chat.tags.untagged": "Sin etiqueta",
|
|
39097
39333
|
"ui.chat.tags.rename": "Renombrar",
|
|
39098
|
-
"ui.chat.tags.save": "Guardar",
|
|
39099
39334
|
"ui.chat.tags.delete": "Eliminar",
|
|
39100
39335
|
"ui.chat.tags.delete_tag": "Eliminar etiqueta",
|
|
39101
39336
|
"ui.chat.tags.delete_title": "¿Eliminar “{name}”?",
|
|
39102
|
-
"ui.chat.tags.delete_description": "Quita esta etiqueta de {count, plural, one {{count, number, ::group-off} conversación} many {{count, number, ::group-off} de conversaciones} other {{count, number, ::group-off} conversaciones}}. Las conversaciones
|
|
39337
|
+
"ui.chat.tags.delete_description": "Quita esta etiqueta de {count, plural, one {{count, number, ::group-off} conversación} many {{count, number, ::group-off} de conversaciones} other {{count, number, ::group-off} conversaciones}}. Las conversaciones no se eliminarán.",
|
|
39103
39338
|
"ui.chat.tags.move_up": "Subir {name}",
|
|
39104
39339
|
"ui.chat.tags.move_down": "Bajar {name}",
|
|
39105
|
-
"ui.chat.tags.manage_description": "Crea, renombra y ordena etiquetas, y luego pulsa Aplicar. Cancelar descarta estos cambios.",
|
|
39106
39340
|
"ui.chat.tags.rename_label": "Renombrar {name}",
|
|
39107
39341
|
"ui.chat.tags.no_matches": "Ninguna etiqueta coincide con “{query}”.",
|
|
39108
39342
|
"ui.chat.tags.save_failed": "No se guardaron las etiquetas. Inténtalo de nuevo.",
|
|
39109
39343
|
"ui.chat.tags.load_failed": "No se pudieron cargar las etiquetas. Inténtalo de nuevo.",
|
|
39110
39344
|
"ui.chat.tags.duplicate_name": "Ya existe una etiqueta llamada “{name}”.",
|
|
39111
|
-
"ui.chat.tags.updated_grouped": "Etiquetas actualizadas. Agrupadas en {tag}.",
|
|
39112
|
-
"ui.chat.tags.updated_untagged": "Etiquetas actualizadas. Se muestran en Sin etiqueta.",
|
|
39113
|
-
"ui.chat.tags.none_yet": "Aún no hay etiquetas",
|
|
39114
|
-
"ui.chat.tags.manage_title": "Gestionar etiquetas",
|
|
39115
|
-
"ui.chat.tags.apply_deletion_first": "Aplica primero la eliminación y luego vuelve a añadir “{name}”.",
|
|
39116
|
-
"ui.chat.tags.moved_to": "Movido a «{name}»",
|
|
39117
39345
|
"ui.chat.tags.removed_all": "Se han eliminado todas las etiquetas",
|
|
39118
39346
|
"ui.chat.tags.remove_all": "{count, plural, one {Eliminar etiqueta (#)} other {Eliminar todas las etiquetas (#)}}",
|
|
39119
|
-
"ui.chat.tags.move_menu": "Mover a una etiqueta…",
|
|
39120
39347
|
"ui.chat.tags.changed_elsewhere": "Las etiquetas han cambiado en otro lugar",
|
|
39121
39348
|
"ui.chat.tags.move_armed": "Mover «{name}»",
|
|
39122
39349
|
"ui.chat.tags.move_cancelled": "Movimiento cancelado",
|
|
39123
39350
|
"ui.chat.tags.undo": "Deshacer",
|
|
39124
39351
|
"ui.chat.tags.move_undone": "Movimiento de etiquetas deshecho",
|
|
39125
|
-
"ui.chat.tags.move_title": "Mover «{title}»",
|
|
39126
|
-
"ui.chat.tags.move_description": "Elige una etiqueta para hacerla principal, o Sin etiqueta para eliminar todas las etiquetas.",
|
|
39127
39352
|
"ui.chat.tags.move_failed": "No se han movido las etiquetas. Inténtalo de nuevo.",
|
|
39128
39353
|
"ui.chat.tags.selection_count": "{count} de 8",
|
|
39129
|
-
"ui.chat.tags.registry_count": "{count} de 32",
|
|
39130
39354
|
"ui.chat.tags.create_name": "Crear «{name}»",
|
|
39131
39355
|
"ui.chat.tags.create_helper": "Se guarda para todas las conversaciones",
|
|
39132
39356
|
"ui.chat.tags.selection_limit": "Elige hasta 8 etiquetas",
|
|
@@ -39135,15 +39359,26 @@ const esUiChatTags = {
|
|
|
39135
39359
|
"ui.chat.tags.name_reserved": "«Untagged» es un nombre reservado",
|
|
39136
39360
|
"ui.chat.tags.create_failed": "No se ha creado la etiqueta. Inténtalo de nuevo.",
|
|
39137
39361
|
"ui.chat.tags.remove_named": "Quitar {name}",
|
|
39138
|
-
"ui.chat.tags.reorder_filtered": "Borra la búsqueda para reordenar las etiquetas",
|
|
39139
39362
|
"ui.chat.tags.created_name": "Se ha creado «{name}»",
|
|
39140
|
-
"ui.chat.tags.selection_status": "Selección: {count}.
|
|
39141
|
-
"ui.chat.tags.tag_usage": "{count, plural, one {# conversación} many {# de conversaciones} other {# conversaciones}}",
|
|
39142
|
-
"ui.chat.tags.create_pending": "Guardando etiqueta…",
|
|
39363
|
+
"ui.chat.tags.selection_status": "Selección: {count}. Se muestra en {name}.",
|
|
39143
39364
|
"ui.chat.tags.remote": "No se pueden cambiar las etiquetas de una conversación remota.",
|
|
39144
39365
|
"ui.chat.tags.renamed_name": "Se ha cambiado el nombre a «{name}»",
|
|
39145
|
-
"ui.chat.tags.
|
|
39146
|
-
"ui.chat.tags.
|
|
39366
|
+
"ui.chat.tags.registry_changed": "Algunas etiquetas han cambiado en otro lugar. Revisa la selección.",
|
|
39367
|
+
"ui.chat.tags.dropped_on": "Se añadió «{name}» y se agrupó en ella",
|
|
39368
|
+
"ui.chat.tags.show_under": "Mostrar en",
|
|
39369
|
+
"ui.chat.tags.shown_under": "Se muestra en {tag}",
|
|
39370
|
+
"ui.chat.tags.shown_untagged": "Se muestra en Sin etiqueta",
|
|
39371
|
+
"ui.chat.tags.hidden": "Las etiquetas están ocultas.",
|
|
39372
|
+
"ui.chat.tags.show_groups": "Mostrar grupos",
|
|
39373
|
+
"ui.chat.tags.header_actions": "Acciones de etiqueta: {name}",
|
|
39374
|
+
"ui.chat.tags.header_first": "«{name}» ya es la primera etiqueta aquí",
|
|
39375
|
+
"ui.chat.tags.header_last": "«{name}» ya es la última etiqueta aquí",
|
|
39376
|
+
"ui.chat.tags.moved_tag": "Se movió «{name}»",
|
|
39377
|
+
"ui.chat.tags.new_tag": "Nueva etiqueta",
|
|
39378
|
+
"ui.chat.tags.name_placeholder": "Nombre de la etiqueta",
|
|
39379
|
+
"ui.chat.tags.unused": "Etiquetas sin usar ({count})",
|
|
39380
|
+
"ui.chat.tags.empty_title": "Agrupa las conversaciones por etiqueta.",
|
|
39381
|
+
"ui.chat.tags.empty_hint": "Pulsa {chord} en una conversación o crea una etiqueta aquí."
|
|
39147
39382
|
};
|
|
39148
39383
|
const esUiChatTranscriptCopy = {
|
|
39149
39384
|
"ui.chat.transcript_copy.menu.copy_text": "Copiar texto",
|
|
@@ -42425,6 +42660,7 @@ const frUiBrowser = {
|
|
|
42425
42660
|
"ui.browser.browser_url_bar.print_page": "Imprimer la page",
|
|
42426
42661
|
"ui.browser.browser_url_bar.forward": "Avancer",
|
|
42427
42662
|
"ui.browser.browser_url_bar.reset_page_zoom_shortcut": "Réinitialiser le zoom de la page ({shortcut})",
|
|
42663
|
+
"ui.browser.browser_url_bar.page_menu": "Options de la page",
|
|
42428
42664
|
"ui.browser.browser_url_bar.page_zoom_reset": "Zoom de la page {zoom, number, ::group-off} %, réinitialiser à 100 %",
|
|
42429
42665
|
"ui.browser.browser_url_bar.stop_loading": "Arrêter le chargement",
|
|
42430
42666
|
"ui.browser.browser_url_bar.reload": "Recharger",
|
|
@@ -42619,6 +42855,12 @@ const frUiChat = {
|
|
|
42619
42855
|
"ui.chat.skill_invocation.trigger_label": "Instructions de la compétence {token}",
|
|
42620
42856
|
"ui.chat.highlights.file_resolution_failed": "Impossible de résoudre ce fichier dans le dossier de travail de la session. Utilisez Copier le chemin du fichier pour comparer son emplacement avec l’espace de travail de cette session, puis réessayez."
|
|
42621
42857
|
};
|
|
42858
|
+
const frUiChatLiveUpdates = {
|
|
42859
|
+
"ui.chat.live_updates.paused": "Les mises à jour en direct sont en pause, cette conversation peut donc être obsolète.",
|
|
42860
|
+
"ui.chat.live_updates.reload": "Recharger depuis l’historique",
|
|
42861
|
+
"ui.chat.live_updates.reloading": "Rechargement…",
|
|
42862
|
+
"ui.chat.live_updates.reload_failed": "Impossible de recharger cette conversation. Réessayez."
|
|
42863
|
+
};
|
|
42622
42864
|
const frUiChatResponseActions = {
|
|
42623
42865
|
"ui.chat.response_actions.label": "Actions de la réponse"
|
|
42624
42866
|
};
|
|
@@ -42650,61 +42892,42 @@ const frUiChatTags = {
|
|
|
42650
42892
|
"ui.chat.tags.label": "Étiquettes",
|
|
42651
42893
|
"ui.chat.tags.menu": "Étiquettes…",
|
|
42652
42894
|
"ui.chat.tags.group": "Grouper les conversations par étiquette",
|
|
42653
|
-
"ui.chat.tags.manage": "Gérer…",
|
|
42654
42895
|
"ui.chat.tags.mode_hint": "Les groupes d’étiquettes utilisent la section temporelle.",
|
|
42655
42896
|
"ui.chat.tags.use_time": "Utiliser la section temporelle",
|
|
42656
42897
|
"ui.chat.tags.auto_tag": "Étiqueter automatiquement les conversations bifurquées",
|
|
42657
42898
|
"ui.chat.tags.auto_tag_help": "Utilise vos étiquettes existantes lors de l’attribution du nom à une bifurcation.",
|
|
42658
|
-
"ui.chat.tags.discovery": "Cliquez avec le bouton droit sur une conversation, puis choisissez Étiquettes
|
|
42659
|
-
"ui.chat.tags.picker_title": "Étiquettes de « {title} »",
|
|
42660
|
-
"ui.chat.tags.picker_description": "Choisissez des étiquettes, puis cliquez sur Appliquer. Les nouvelles étiquettes sont enregistrées immédiatement.",
|
|
42899
|
+
"ui.chat.tags.discovery": "Cliquez avec le bouton droit sur une conversation, puis choisissez Étiquettes…, ou appuyez sur Command+Shift+L ou Ctrl+Shift+L lorsqu’une conversation a le focus clavier.",
|
|
42661
42900
|
"ui.chat.tags.search": "Rechercher des étiquettes",
|
|
42662
|
-
"ui.chat.tags.empty": "
|
|
42901
|
+
"ui.chat.tags.empty": "Créez une étiquette pour commencer.",
|
|
42663
42902
|
"ui.chat.tags.loading": "Chargement des étiquettes…",
|
|
42664
42903
|
"ui.chat.tags.applying": "Application des étiquettes…",
|
|
42665
42904
|
"ui.chat.tags.retry": "Réessayer",
|
|
42666
42905
|
"ui.chat.tags.cancel": "Annuler",
|
|
42667
|
-
"ui.chat.tags.apply": "Appliquer",
|
|
42668
|
-
"ui.chat.tags.clear": "Retirer les étiquettes",
|
|
42669
|
-
"ui.chat.tags.new": "Nouvelle étiquette…",
|
|
42670
42906
|
"ui.chat.tags.new_name": "Nom de la nouvelle étiquette",
|
|
42671
42907
|
"ui.chat.tags.add": "Ajouter",
|
|
42672
42908
|
"ui.chat.tags.primary": "Principale",
|
|
42673
|
-
"ui.chat.tags.group_under": "Regrouper sous",
|
|
42674
42909
|
"ui.chat.tags.untagged": "Sans étiquette",
|
|
42675
42910
|
"ui.chat.tags.rename": "Renommer",
|
|
42676
|
-
"ui.chat.tags.save": "Enregistrer",
|
|
42677
42911
|
"ui.chat.tags.delete": "Supprimer",
|
|
42678
42912
|
"ui.chat.tags.delete_tag": "Supprimer l’étiquette",
|
|
42679
42913
|
"ui.chat.tags.delete_title": "Supprimer « {name} » ?",
|
|
42680
|
-
"ui.chat.tags.delete_description": "Retirez cette étiquette de {count, plural, one {{count, number, ::group-off} conversation} many {{count, number, ::group-off} de conversations} other {{count, number, ::group-off} conversations}}. Les conversations
|
|
42914
|
+
"ui.chat.tags.delete_description": "Retirez cette étiquette de {count, plural, one {{count, number, ::group-off} conversation} many {{count, number, ::group-off} de conversations} other {{count, number, ::group-off} conversations}}. Les conversations ne seront pas supprimées.",
|
|
42681
42915
|
"ui.chat.tags.move_up": "Déplacer {name} vers le haut",
|
|
42682
42916
|
"ui.chat.tags.move_down": "Déplacer {name} vers le bas",
|
|
42683
|
-
"ui.chat.tags.manage_description": "Créez, renommez et ordonnez les étiquettes, puis cliquez sur Appliquer. Annuler abandonne ces modifications.",
|
|
42684
42917
|
"ui.chat.tags.rename_label": "Renommer {name}",
|
|
42685
42918
|
"ui.chat.tags.no_matches": "Aucune étiquette ne correspond à « {query} ».",
|
|
42686
42919
|
"ui.chat.tags.save_failed": "Les étiquettes n’ont pas été enregistrées. Réessayez.",
|
|
42687
42920
|
"ui.chat.tags.load_failed": "Impossible de charger les étiquettes. Réessayez.",
|
|
42688
42921
|
"ui.chat.tags.duplicate_name": "Une étiquette nommée « {name} » existe déjà.",
|
|
42689
|
-
"ui.chat.tags.updated_grouped": "Étiquettes mises à jour. Regroupées sous {tag}.",
|
|
42690
|
-
"ui.chat.tags.updated_untagged": "Étiquettes mises à jour. Affichées sous Sans étiquette.",
|
|
42691
|
-
"ui.chat.tags.none_yet": "Aucune étiquette pour l’instant",
|
|
42692
|
-
"ui.chat.tags.manage_title": "Gérer les étiquettes",
|
|
42693
|
-
"ui.chat.tags.apply_deletion_first": "Appliquez d’abord la suppression, puis ajoutez à nouveau « {name} ».",
|
|
42694
|
-
"ui.chat.tags.moved_to": "Déplacé vers « {name} »",
|
|
42695
42922
|
"ui.chat.tags.removed_all": "Toutes les étiquettes ont été retirées",
|
|
42696
42923
|
"ui.chat.tags.remove_all": "{count, plural, one {Retirer l’étiquette (#)} other {Retirer toutes les étiquettes (#)}}",
|
|
42697
|
-
"ui.chat.tags.move_menu": "Déplacer vers une étiquette…",
|
|
42698
42924
|
"ui.chat.tags.changed_elsewhere": "Les étiquettes ont été modifiées ailleurs",
|
|
42699
42925
|
"ui.chat.tags.move_armed": "Déplacer « {name} »",
|
|
42700
42926
|
"ui.chat.tags.move_cancelled": "Déplacement annulé",
|
|
42701
42927
|
"ui.chat.tags.undo": "Annuler",
|
|
42702
42928
|
"ui.chat.tags.move_undone": "Déplacement des étiquettes annulé",
|
|
42703
|
-
"ui.chat.tags.move_title": "Déplacer « {title} »",
|
|
42704
|
-
"ui.chat.tags.move_description": "Choisissez une étiquette principale, ou Sans étiquette pour retirer toutes les étiquettes.",
|
|
42705
42929
|
"ui.chat.tags.move_failed": "Les étiquettes n’ont pas été déplacées. Réessayez.",
|
|
42706
42930
|
"ui.chat.tags.selection_count": "{count} sur 8",
|
|
42707
|
-
"ui.chat.tags.registry_count": "{count} sur 32",
|
|
42708
42931
|
"ui.chat.tags.create_name": "Créer « {name} »",
|
|
42709
42932
|
"ui.chat.tags.create_helper": "Enregistré pour toutes les conversations",
|
|
42710
42933
|
"ui.chat.tags.selection_limit": "Choisissez jusqu’à 8 étiquettes",
|
|
@@ -42713,15 +42936,26 @@ const frUiChatTags = {
|
|
|
42713
42936
|
"ui.chat.tags.name_reserved": "« Untagged » est un nom réservé",
|
|
42714
42937
|
"ui.chat.tags.create_failed": "L’étiquette n’a pas été créée. Réessayez.",
|
|
42715
42938
|
"ui.chat.tags.remove_named": "Retirer {name}",
|
|
42716
|
-
"ui.chat.tags.reorder_filtered": "Effacez la recherche pour réordonner les étiquettes",
|
|
42717
42939
|
"ui.chat.tags.created_name": "« {name} » a été créée",
|
|
42718
|
-
"ui.chat.tags.selection_status": "{count} sélectionnées.
|
|
42719
|
-
"ui.chat.tags.tag_usage": "{count, plural, one {# conversation} many {# de conversations} other {# conversations}}",
|
|
42720
|
-
"ui.chat.tags.create_pending": "Enregistrement de l’étiquette…",
|
|
42940
|
+
"ui.chat.tags.selection_status": "{count} sélectionnées. Affichage sous {name}.",
|
|
42721
42941
|
"ui.chat.tags.remote": "Les étiquettes d’une conversation distante ne peuvent pas être modifiées.",
|
|
42722
42942
|
"ui.chat.tags.renamed_name": "Renommée « {name} »",
|
|
42723
|
-
"ui.chat.tags.
|
|
42724
|
-
"ui.chat.tags.
|
|
42943
|
+
"ui.chat.tags.registry_changed": "Des étiquettes ont été modifiées ailleurs. Vérifiez votre sélection.",
|
|
42944
|
+
"ui.chat.tags.dropped_on": "Étiquette « {name} » ajoutée et utilisée pour le regroupement",
|
|
42945
|
+
"ui.chat.tags.show_under": "Afficher sous",
|
|
42946
|
+
"ui.chat.tags.shown_under": "Affichage sous {tag}",
|
|
42947
|
+
"ui.chat.tags.shown_untagged": "Affichage sous Sans étiquette",
|
|
42948
|
+
"ui.chat.tags.hidden": "Les étiquettes sont masquées.",
|
|
42949
|
+
"ui.chat.tags.show_groups": "Afficher les groupes",
|
|
42950
|
+
"ui.chat.tags.header_actions": "Actions de l’étiquette : {name}",
|
|
42951
|
+
"ui.chat.tags.header_first": "« {name} » est déjà la première étiquette ici",
|
|
42952
|
+
"ui.chat.tags.header_last": "« {name} » est déjà la dernière étiquette ici",
|
|
42953
|
+
"ui.chat.tags.moved_tag": "« {name} » déplacée",
|
|
42954
|
+
"ui.chat.tags.new_tag": "Nouvelle étiquette",
|
|
42955
|
+
"ui.chat.tags.name_placeholder": "Nom de l’étiquette",
|
|
42956
|
+
"ui.chat.tags.unused": "Étiquettes inutilisées ({count})",
|
|
42957
|
+
"ui.chat.tags.empty_title": "Regroupez les conversations par étiquette.",
|
|
42958
|
+
"ui.chat.tags.empty_hint": "Appuyez sur {chord} sur une conversation, ou créez une étiquette ici."
|
|
42725
42959
|
};
|
|
42726
42960
|
const frUiChatTranscriptCopy = {
|
|
42727
42961
|
"ui.chat.transcript_copy.menu.copy_text": "Copier le texte",
|
|
@@ -46024,6 +46258,7 @@ const hiUiBrowser = {
|
|
|
46024
46258
|
"ui.browser.browser_url_bar.home_destination": "होम — शुरुआती पेज पर जाएँ (खाली)",
|
|
46025
46259
|
"ui.browser.browser_url_bar.latest_download": "डाउनलोड फ़ोल्डर खोलें — {name} वहाँ सहेजी गई थी",
|
|
46026
46260
|
"ui.browser.browser_url_bar.newest_download": "डाउनलोड फ़ोल्डर खोलें — {name} वहाँ सबसे हाल में सहेजी गई थी ({count, plural, other {इस सत्र में {count, number, ::group-off}}})",
|
|
46261
|
+
"ui.browser.browser_url_bar.page_menu": "पेज विकल्प",
|
|
46027
46262
|
"ui.browser.browser_url_bar.page_zoom_reset": "पेज ज़ूम {zoom, number, ::group-off}%, 100% पर रीसेट करें",
|
|
46028
46263
|
"ui.browser.browser_url_bar.print_page": "पेज प्रिंट करें",
|
|
46029
46264
|
"ui.browser.browser_url_bar.reload": "फिर लोड करें",
|
|
@@ -46197,6 +46432,12 @@ const hiUiChat = {
|
|
|
46197
46432
|
"ui.chat.skill_invocation.trigger_label": "{token} कौशल के निर्देश",
|
|
46198
46433
|
"ui.chat.highlights.file_resolution_failed": "इस सत्र के कार्य फ़ोल्डर में यह फ़ाइल नहीं मिली। दोबारा कोशिश करने से पहले फ़ाइल का पाथ कॉपी करके इस सत्र के कार्यक्षेत्र में उसकी जगह जाँचें।"
|
|
46199
46434
|
};
|
|
46435
|
+
const hiUiChatLiveUpdates = {
|
|
46436
|
+
"ui.chat.live_updates.paused": "लाइव अपडेट रुके हुए हैं, इसलिए यह बातचीत पुरानी हो सकती है।",
|
|
46437
|
+
"ui.chat.live_updates.reload": "इतिहास से फिर से लोड करें",
|
|
46438
|
+
"ui.chat.live_updates.reloading": "फिर से लोड हो रहा है…",
|
|
46439
|
+
"ui.chat.live_updates.reload_failed": "यह बातचीत फिर से लोड नहीं हो सकी। फिर कोशिश करें।"
|
|
46440
|
+
};
|
|
46200
46441
|
const hiUiChatResponseActions = {
|
|
46201
46442
|
"ui.chat.response_actions.label": "प्रतिक्रिया की कार्रवाइयाँ"
|
|
46202
46443
|
};
|
|
@@ -46228,61 +46469,42 @@ const hiUiChatTags = {
|
|
|
46228
46469
|
"ui.chat.tags.label": "टैग",
|
|
46229
46470
|
"ui.chat.tags.menu": "टैग…",
|
|
46230
46471
|
"ui.chat.tags.group": "चैट को टैग के हिसाब से समूहों में रखें",
|
|
46231
|
-
"ui.chat.tags.manage": "टैग सँभालें…",
|
|
46232
46472
|
"ui.chat.tags.mode_hint": "टैग के समूह समय के खंड वाले समूह इस्तेमाल करते हैं।",
|
|
46233
46473
|
"ui.chat.tags.use_time": "समय के खंड चुनें",
|
|
46234
46474
|
"ui.chat.tags.auto_tag": "फ़ोर्क की गई बातचीत को स्वतः टैग करें",
|
|
46235
46475
|
"ui.chat.tags.auto_tag_help": "किसी फ़ोर्क को नाम देते समय आपके मौजूदा टैग इस्तेमाल होते हैं।",
|
|
46236
|
-
"ui.chat.tags.discovery": "किसी बातचीत पर राइट-क्लिक करें और टैग…
|
|
46237
|
-
"ui.chat.tags.picker_title": "“{title}” के टैग",
|
|
46238
|
-
"ui.chat.tags.picker_description": "टैग चुनें, फिर लागू करें। नए टैग तुरंत सहेजे जाते हैं।",
|
|
46476
|
+
"ui.chat.tags.discovery": "किसी बातचीत पर राइट-क्लिक करें और टैग… चुनें, या जब बातचीत पर कीबोर्ड फ़ोकस हो, तब Command+Shift+L या Ctrl+Shift+L दबाएँ।",
|
|
46239
46477
|
"ui.chat.tags.search": "टैग खोजें",
|
|
46240
|
-
"ui.chat.tags.empty": "
|
|
46478
|
+
"ui.chat.tags.empty": "शुरू करने के लिए टैग बनाएँ।",
|
|
46241
46479
|
"ui.chat.tags.loading": "टैग लोड हो रहे हैं…",
|
|
46242
46480
|
"ui.chat.tags.applying": "टैग लागू हो रहे हैं…",
|
|
46243
46481
|
"ui.chat.tags.retry": "फिर कोशिश करें",
|
|
46244
46482
|
"ui.chat.tags.cancel": "रद्द करें",
|
|
46245
|
-
"ui.chat.tags.apply": "लागू करें",
|
|
46246
|
-
"ui.chat.tags.clear": "टैग हटाएँ",
|
|
46247
|
-
"ui.chat.tags.new": "नया टैग…",
|
|
46248
46483
|
"ui.chat.tags.new_name": "नए टैग का नाम",
|
|
46249
46484
|
"ui.chat.tags.add": "जोड़ें",
|
|
46250
46485
|
"ui.chat.tags.primary": "मुख्य",
|
|
46251
|
-
"ui.chat.tags.group_under": "इसमें समूह बनाएँ",
|
|
46252
46486
|
"ui.chat.tags.untagged": "बिना टैग",
|
|
46253
46487
|
"ui.chat.tags.rename": "नाम बदलें",
|
|
46254
|
-
"ui.chat.tags.save": "सहेजें",
|
|
46255
46488
|
"ui.chat.tags.delete": "हटाएँ",
|
|
46256
46489
|
"ui.chat.tags.delete_tag": "टैग हटाएँ",
|
|
46257
46490
|
"ui.chat.tags.delete_title": "“{name}” हटाएँ?",
|
|
46258
|
-
"ui.chat.tags.delete_description": "यह टैग {count, plural, one {# बातचीत} other {# बातचीतों}} से हटाएँ।
|
|
46491
|
+
"ui.chat.tags.delete_description": "यह टैग {count, plural, one {# बातचीत} other {# बातचीतों}} से हटाएँ। बातचीतें नहीं हटेंगी।",
|
|
46259
46492
|
"ui.chat.tags.move_up": "{name} ऊपर ले जाएँ",
|
|
46260
46493
|
"ui.chat.tags.move_down": "{name} नीचे ले जाएँ",
|
|
46261
|
-
"ui.chat.tags.manage_description": "टैग बनाएँ, नाम बदलें और क्रम चुनें, फिर लागू करें। रद्द करें से ये बदलाव हट जाते हैं।",
|
|
46262
46494
|
"ui.chat.tags.rename_label": "{name} का नाम बदलें",
|
|
46263
46495
|
"ui.chat.tags.no_matches": "“{query}” से कोई टैग नहीं मिला।",
|
|
46264
46496
|
"ui.chat.tags.save_failed": "टैग सहेजे नहीं गए। फिर कोशिश करें।",
|
|
46265
46497
|
"ui.chat.tags.load_failed": "टैग लोड नहीं हो सके। फिर कोशिश करें।",
|
|
46266
46498
|
"ui.chat.tags.duplicate_name": "“{name}” नाम का टैग पहले से है।",
|
|
46267
|
-
"ui.chat.tags.updated_grouped": "टैग अपडेट हुए। {tag} में समूह बनाया गया।",
|
|
46268
|
-
"ui.chat.tags.updated_untagged": "टैग अपडेट हुए। बिना टैग में दिखाए गए।",
|
|
46269
|
-
"ui.chat.tags.none_yet": "अभी कोई टैग नहीं",
|
|
46270
|
-
"ui.chat.tags.manage_title": "टैग सँभालें",
|
|
46271
|
-
"ui.chat.tags.apply_deletion_first": "पहले हटाने का बदलाव लागू करें, फिर “{name}” दोबारा जोड़ें।",
|
|
46272
|
-
"ui.chat.tags.moved_to": "“{name}” में ले जाया गया",
|
|
46273
46499
|
"ui.chat.tags.removed_all": "सभी टैग हटा दिए गए",
|
|
46274
46500
|
"ui.chat.tags.remove_all": "{count, plural, one {टैग हटाएँ (#)} other {सभी टैग हटाएँ (#)}}",
|
|
46275
|
-
"ui.chat.tags.move_menu": "टैग में ले जाएँ…",
|
|
46276
46501
|
"ui.chat.tags.changed_elsewhere": "टैग कहीं और बदले गए",
|
|
46277
46502
|
"ui.chat.tags.move_armed": "“{name}” ले जाएँ",
|
|
46278
46503
|
"ui.chat.tags.move_cancelled": "ले जाना रद्द हुआ",
|
|
46279
46504
|
"ui.chat.tags.undo": "पूर्ववत करें",
|
|
46280
46505
|
"ui.chat.tags.move_undone": "टैग का ले जाना पूर्ववत किया गया",
|
|
46281
|
-
"ui.chat.tags.move_title": "“{title}” ले जाएँ",
|
|
46282
|
-
"ui.chat.tags.move_description": "किसी टैग को प्राथमिक बनाने के लिए उसे चुनें, या सभी टैग हटाने के लिए “बिना टैग” चुनें।",
|
|
46283
46506
|
"ui.chat.tags.move_failed": "टैग नहीं ले जाए गए। फिर कोशिश करें।",
|
|
46284
46507
|
"ui.chat.tags.selection_count": "8 में से {count}",
|
|
46285
|
-
"ui.chat.tags.registry_count": "32 में से {count}",
|
|
46286
46508
|
"ui.chat.tags.create_name": "“{name}” बनाएँ",
|
|
46287
46509
|
"ui.chat.tags.create_helper": "सभी बातचीतों के लिए सहेजा जाता है",
|
|
46288
46510
|
"ui.chat.tags.selection_limit": "अधिकतम 8 टैग चुनें",
|
|
@@ -46291,15 +46513,26 @@ const hiUiChatTags = {
|
|
|
46291
46513
|
"ui.chat.tags.name_reserved": "“Untagged” नाम आरक्षित है",
|
|
46292
46514
|
"ui.chat.tags.create_failed": "टैग नहीं बनाया गया। फिर कोशिश करें।",
|
|
46293
46515
|
"ui.chat.tags.remove_named": "{name} हटाएँ",
|
|
46294
|
-
"ui.chat.tags.reorder_filtered": "टैग का क्रम बदलने के लिए खोज साफ़ करें",
|
|
46295
46516
|
"ui.chat.tags.created_name": "“{name}” बनाया गया",
|
|
46296
|
-
"ui.chat.tags.selection_status": "{count, plural, =1 {# चुना गया} other {# चुने गए}}। {name}
|
|
46297
|
-
"ui.chat.tags.tag_usage": "{count} बातचीत",
|
|
46298
|
-
"ui.chat.tags.create_pending": "टैग सहेजा जा रहा है…",
|
|
46517
|
+
"ui.chat.tags.selection_status": "{count, plural, =1 {# चुना गया} other {# चुने गए}}। {name} समूह में।",
|
|
46299
46518
|
"ui.chat.tags.remote": "दूरस्थ बातचीत के टैग नहीं बदले जा सकते।",
|
|
46300
46519
|
"ui.chat.tags.renamed_name": "नाम बदलकर “{name}” किया गया",
|
|
46301
|
-
"ui.chat.tags.
|
|
46302
|
-
"ui.chat.tags.
|
|
46520
|
+
"ui.chat.tags.registry_changed": "कुछ टैग कहीं और बदले गए। अपना चयन जाँचें।",
|
|
46521
|
+
"ui.chat.tags.dropped_on": "“{name}” जोड़ा गया और इसी समूह में रखा गया",
|
|
46522
|
+
"ui.chat.tags.show_under": "इस समूह में रखें",
|
|
46523
|
+
"ui.chat.tags.shown_under": "{tag} समूह में",
|
|
46524
|
+
"ui.chat.tags.shown_untagged": "बिना टैग समूह में",
|
|
46525
|
+
"ui.chat.tags.hidden": "टैग छिपे हुए हैं।",
|
|
46526
|
+
"ui.chat.tags.show_groups": "समूह दिखाएँ",
|
|
46527
|
+
"ui.chat.tags.header_actions": "टैग कार्रवाइयाँ: {name}",
|
|
46528
|
+
"ui.chat.tags.header_first": "“{name}” यहाँ पहले से ही पहला टैग है",
|
|
46529
|
+
"ui.chat.tags.header_last": "“{name}” यहाँ पहले से ही आख़िरी टैग है",
|
|
46530
|
+
"ui.chat.tags.moved_tag": "“{name}” खिसकाया गया",
|
|
46531
|
+
"ui.chat.tags.new_tag": "नया टैग",
|
|
46532
|
+
"ui.chat.tags.name_placeholder": "टैग का नाम",
|
|
46533
|
+
"ui.chat.tags.unused": "अप्रयुक्त टैग ({count})",
|
|
46534
|
+
"ui.chat.tags.empty_title": "बातचीतों को टैग के अनुसार समूहों में रखें।",
|
|
46535
|
+
"ui.chat.tags.empty_hint": "किसी बातचीत पर {chord} दबाएँ, या यहाँ टैग बनाएँ।"
|
|
46303
46536
|
};
|
|
46304
46537
|
const hiUiCodeReview = {
|
|
46305
46538
|
"ui.code_review.activity.close": "बंद किया",
|
|
@@ -49379,6 +49612,7 @@ const ruUiBrowser = {
|
|
|
49379
49612
|
"ui.browser.browser_url_bar.home_destination": "Домой — перейти на стартовую страницу (пустую)",
|
|
49380
49613
|
"ui.browser.browser_url_bar.latest_download": "Открыть папку загрузок — {name} сохранён туда",
|
|
49381
49614
|
"ui.browser.browser_url_bar.newest_download": "Открыть папку загрузок — {name} сохранён туда последним ({count, plural, one {{count, number, ::group-off} за эту сессию} few {{count, number, ::group-off} за эту сессию} many {{count, number, ::group-off} за эту сессию} other {{count, number, ::group-off} за эту сессию}})",
|
|
49615
|
+
"ui.browser.browser_url_bar.page_menu": "Параметры страницы",
|
|
49382
49616
|
"ui.browser.browser_url_bar.page_zoom_reset": "Масштаб страницы {zoom, number, ::group-off}%, сбросить до 100%",
|
|
49383
49617
|
"ui.browser.browser_url_bar.print_page": "Печать страницы",
|
|
49384
49618
|
"ui.browser.browser_url_bar.reload": "Перезагрузить",
|
|
@@ -49552,6 +49786,12 @@ const ruUiChat = {
|
|
|
49552
49786
|
"ui.chat.usage.family_caps": "Ограничения семейства моделей по-прежнему действуют.",
|
|
49553
49787
|
"ui.chat.usage.unlimited": "Неограниченный оплаченный лимит"
|
|
49554
49788
|
};
|
|
49789
|
+
const ruUiChatLiveUpdates = {
|
|
49790
|
+
"ui.chat.live_updates.paused": "Обновления в реальном времени приостановлены, поэтому этот разговор может быть устаревшим.",
|
|
49791
|
+
"ui.chat.live_updates.reload": "Перезагрузить из истории",
|
|
49792
|
+
"ui.chat.live_updates.reloading": "Перезагрузка…",
|
|
49793
|
+
"ui.chat.live_updates.reload_failed": "Не удалось перезагрузить этот разговор. Повторите попытку."
|
|
49794
|
+
};
|
|
49555
49795
|
const ruUiChatResponseActions = {
|
|
49556
49796
|
"ui.chat.response_actions.label": "Действия с ответом"
|
|
49557
49797
|
};
|
|
@@ -49580,64 +49820,45 @@ const ruUiChatSidebarView = {
|
|
|
49580
49820
|
"ui.chat.sidebar_view.time_section": "По времени"
|
|
49581
49821
|
};
|
|
49582
49822
|
const ruUiChatTags = {
|
|
49583
|
-
"ui.chat.tags.
|
|
49584
|
-
"ui.chat.tags.
|
|
49585
|
-
"ui.chat.tags.
|
|
49586
|
-
"ui.chat.tags.
|
|
49823
|
+
"ui.chat.tags.label": "Теги",
|
|
49824
|
+
"ui.chat.tags.menu": "Теги…",
|
|
49825
|
+
"ui.chat.tags.group": "Группировать чаты по тегам",
|
|
49826
|
+
"ui.chat.tags.mode_hint": "Группы тегов используют группировку по времени.",
|
|
49827
|
+
"ui.chat.tags.use_time": "Перейти к разделам по времени",
|
|
49587
49828
|
"ui.chat.tags.auto_tag": "Автоматически помечать тегами форки разговоров",
|
|
49588
49829
|
"ui.chat.tags.auto_tag_help": "Использует ваши существующие теги при названии форка.",
|
|
49830
|
+
"ui.chat.tags.discovery": "Щёлкните разговор правой кнопкой и выберите «Теги…» или нажмите Command+Shift+L либо Ctrl+Shift+L когда разговор находится в фокусе клавиатуры.",
|
|
49831
|
+
"ui.chat.tags.search": "Поиск тегов",
|
|
49832
|
+
"ui.chat.tags.empty": "Создайте тег, чтобы начать.",
|
|
49833
|
+
"ui.chat.tags.loading": "Загрузка тегов…",
|
|
49834
|
+
"ui.chat.tags.applying": "Применение тегов…",
|
|
49835
|
+
"ui.chat.tags.retry": "Повторить",
|
|
49589
49836
|
"ui.chat.tags.cancel": "Отмена",
|
|
49590
|
-
"ui.chat.tags.
|
|
49837
|
+
"ui.chat.tags.new_name": "Название нового тега",
|
|
49838
|
+
"ui.chat.tags.add": "Добавить",
|
|
49839
|
+
"ui.chat.tags.primary": "Основной",
|
|
49840
|
+
"ui.chat.tags.untagged": "Без тега",
|
|
49841
|
+
"ui.chat.tags.rename": "Переименовать",
|
|
49591
49842
|
"ui.chat.tags.delete": "Удалить",
|
|
49592
|
-
"ui.chat.tags.delete_description": "Удалить этот тег у {count, plural, one {# разговора} few {# разговоров} many {# разговоров} other {# разговора}}. Разговоры, сгруппированные здесь, перейдут к самому старому оставшемуся тегу или в «Без тега». Сами разговоры не удаляются.",
|
|
49593
49843
|
"ui.chat.tags.delete_tag": "Удалить тег",
|
|
49594
49844
|
"ui.chat.tags.delete_title": "Удалить «{name}»?",
|
|
49595
|
-
"ui.chat.tags.
|
|
49596
|
-
"ui.chat.tags.duplicate_name": "Тег с именем «{name}» уже существует.",
|
|
49597
|
-
"ui.chat.tags.empty": "Теги упорядочивают разговоры, не меняя их названия. Создайте тег, чтобы начать.",
|
|
49598
|
-
"ui.chat.tags.group": "Группировать чаты по тегам",
|
|
49599
|
-
"ui.chat.tags.group_under": "Основной тег",
|
|
49600
|
-
"ui.chat.tags.label": "Теги",
|
|
49601
|
-
"ui.chat.tags.load_failed": "Не удалось загрузить теги. Повторите попытку.",
|
|
49602
|
-
"ui.chat.tags.loading": "Загрузка тегов…",
|
|
49603
|
-
"ui.chat.tags.manage": "Управление тегами…",
|
|
49604
|
-
"ui.chat.tags.manage_description": "Создавайте, переименовывайте и упорядочивайте теги, затем нажмите «Применить». Отмена отменит эти изменения.",
|
|
49605
|
-
"ui.chat.tags.manage_title": "Управление тегами",
|
|
49606
|
-
"ui.chat.tags.menu": "Теги…",
|
|
49607
|
-
"ui.chat.tags.mode_hint": "Группы тегов используют группировку по времени.",
|
|
49608
|
-
"ui.chat.tags.move_down": "Переместить {name} ниже",
|
|
49845
|
+
"ui.chat.tags.delete_description": "Удалить этот тег у {count, plural, one {# разговора} few {# разговоров} many {# разговоров} other {# разговора}}. Сами разговоры не удаляются.",
|
|
49609
49846
|
"ui.chat.tags.move_up": "Переместить {name} выше",
|
|
49610
|
-
"ui.chat.tags.
|
|
49611
|
-
"ui.chat.tags.new_name": "Название нового тега",
|
|
49612
|
-
"ui.chat.tags.no_matches": "Нет тегов по запросу «{query}».",
|
|
49613
|
-
"ui.chat.tags.none_yet": "Тегов пока нет",
|
|
49614
|
-
"ui.chat.tags.picker_description": "Выберите теги и нажмите «Применить». Новые теги сохраняются сразу.",
|
|
49615
|
-
"ui.chat.tags.picker_title": "Теги для «{title}»",
|
|
49616
|
-
"ui.chat.tags.primary": "Основной",
|
|
49617
|
-
"ui.chat.tags.rename": "Переименовать",
|
|
49847
|
+
"ui.chat.tags.move_down": "Переместить {name} ниже",
|
|
49618
49848
|
"ui.chat.tags.rename_label": "Переименовать {name}",
|
|
49619
|
-
"ui.chat.tags.
|
|
49620
|
-
"ui.chat.tags.save": "Сохранить",
|
|
49849
|
+
"ui.chat.tags.no_matches": "Нет тегов по запросу «{query}».",
|
|
49621
49850
|
"ui.chat.tags.save_failed": "Теги не сохранены. Повторите попытку.",
|
|
49622
|
-
"ui.chat.tags.
|
|
49623
|
-
"ui.chat.tags.
|
|
49624
|
-
"ui.chat.tags.updated_grouped": "Теги обновлены. Основной тег: {tag}.",
|
|
49625
|
-
"ui.chat.tags.updated_untagged": "Теги обновлены. Показано в «Без тега».",
|
|
49626
|
-
"ui.chat.tags.use_time": "Перейти к разделам по времени",
|
|
49627
|
-
"ui.chat.tags.moved_to": "Перемещено в «{name}»",
|
|
49851
|
+
"ui.chat.tags.load_failed": "Не удалось загрузить теги. Повторите попытку.",
|
|
49852
|
+
"ui.chat.tags.duplicate_name": "Тег с именем «{name}» уже существует.",
|
|
49628
49853
|
"ui.chat.tags.removed_all": "Все теги удалены",
|
|
49629
49854
|
"ui.chat.tags.remove_all": "{count, plural, =1 {Удалить тег (#)} other {Удалить все теги (#)}}",
|
|
49630
|
-
"ui.chat.tags.move_menu": "Переместить в тег…",
|
|
49631
49855
|
"ui.chat.tags.changed_elsewhere": "Теги изменены в другом месте",
|
|
49632
49856
|
"ui.chat.tags.move_armed": "Перемещение «{name}»",
|
|
49633
49857
|
"ui.chat.tags.move_cancelled": "Перемещение отменено",
|
|
49634
49858
|
"ui.chat.tags.undo": "Отменить",
|
|
49635
49859
|
"ui.chat.tags.move_undone": "Перемещение тега отменено",
|
|
49636
|
-
"ui.chat.tags.move_title": "Переместить «{title}»",
|
|
49637
|
-
"ui.chat.tags.move_description": "Выберите основной тег или «Без тега», чтобы удалить все теги.",
|
|
49638
49860
|
"ui.chat.tags.move_failed": "Не удалось переместить теги. Попробуйте ещё раз.",
|
|
49639
49861
|
"ui.chat.tags.selection_count": "{count} из 8",
|
|
49640
|
-
"ui.chat.tags.registry_count": "{count} из 32",
|
|
49641
49862
|
"ui.chat.tags.create_name": "Создать «{name}»",
|
|
49642
49863
|
"ui.chat.tags.create_helper": "Сохраняется для всех разговоров",
|
|
49643
49864
|
"ui.chat.tags.selection_limit": "Выберите не более 8 тегов",
|
|
@@ -49646,15 +49867,26 @@ const ruUiChatTags = {
|
|
|
49646
49867
|
"ui.chat.tags.name_reserved": "Имя «Untagged» зарезервировано",
|
|
49647
49868
|
"ui.chat.tags.create_failed": "Тег не создан. Попробуйте ещё раз.",
|
|
49648
49869
|
"ui.chat.tags.remove_named": "Убрать {name}",
|
|
49649
|
-
"ui.chat.tags.reorder_filtered": "Очистите поиск, чтобы изменить порядок тегов",
|
|
49650
49870
|
"ui.chat.tags.created_name": "Создан тег «{name}»",
|
|
49651
|
-
"ui.chat.tags.selection_status": "Выбрано: {count}.
|
|
49652
|
-
"ui.chat.tags.tag_usage": "{count, plural, one {# разговор} few {# разговора} many {# разговоров} other {# разговора}}",
|
|
49653
|
-
"ui.chat.tags.create_pending": "Сохранение тега…",
|
|
49871
|
+
"ui.chat.tags.selection_status": "Выбрано: {count}. В группе «{name}».",
|
|
49654
49872
|
"ui.chat.tags.remote": "Нельзя изменить теги удалённого разговора.",
|
|
49655
49873
|
"ui.chat.tags.renamed_name": "Новое имя: «{name}»",
|
|
49656
|
-
"ui.chat.tags.
|
|
49657
|
-
"ui.chat.tags.
|
|
49874
|
+
"ui.chat.tags.registry_changed": "Некоторые теги изменены в другом месте. Проверьте выбор.",
|
|
49875
|
+
"ui.chat.tags.dropped_on": "Добавлен тег «{name}»; разговор в его группе",
|
|
49876
|
+
"ui.chat.tags.show_under": "В эту группу",
|
|
49877
|
+
"ui.chat.tags.shown_under": "В группе «{tag}»",
|
|
49878
|
+
"ui.chat.tags.shown_untagged": "В группе «Без тега»",
|
|
49879
|
+
"ui.chat.tags.hidden": "Теги скрыты.",
|
|
49880
|
+
"ui.chat.tags.show_groups": "Показать группы",
|
|
49881
|
+
"ui.chat.tags.header_actions": "Действия с тегом: {name}",
|
|
49882
|
+
"ui.chat.tags.header_first": "«{name}» уже первый тег здесь",
|
|
49883
|
+
"ui.chat.tags.header_last": "«{name}» уже последний тег здесь",
|
|
49884
|
+
"ui.chat.tags.moved_tag": "Тег «{name}» перемещён",
|
|
49885
|
+
"ui.chat.tags.new_tag": "Новый тег",
|
|
49886
|
+
"ui.chat.tags.name_placeholder": "Название тега",
|
|
49887
|
+
"ui.chat.tags.unused": "Неиспользуемые теги ({count})",
|
|
49888
|
+
"ui.chat.tags.empty_title": "Группируйте разговоры по тегам.",
|
|
49889
|
+
"ui.chat.tags.empty_hint": "Нажмите {chord} на разговоре или создайте тег здесь."
|
|
49658
49890
|
};
|
|
49659
49891
|
const ruUiCodeReview = {
|
|
49660
49892
|
"ui.code_review.activity.close": "закрыли",
|
|
@@ -52840,6 +53072,7 @@ const urUiBrowser = {
|
|
|
52840
53072
|
"ui.browser.browser_url_bar.home_destination": "ابتدائی صفحہ — آغاز کے خالی صفحے پر جائیں",
|
|
52841
53073
|
"ui.browser.browser_url_bar.latest_download": "ڈاؤن لوڈ فولڈر کھولیں — {name} وہاں محفوظ ہوئی",
|
|
52842
53074
|
"ui.browser.browser_url_bar.newest_download": "ڈاؤن لوڈ فولڈر کھولیں — وہاں سب سے حال میں {name} محفوظ ہوئی ({count, plural, other {اس سیشن میں {count, number, ::group-off}}})",
|
|
53075
|
+
"ui.browser.browser_url_bar.page_menu": "صفحے کے اختیارات",
|
|
52843
53076
|
"ui.browser.browser_url_bar.page_zoom_reset": "صفحے کا زوم {zoom, number, ::group-off}%، 100% پر ری سیٹ کریں",
|
|
52844
53077
|
"ui.browser.browser_url_bar.print_page": "صفحہ پرنٹ کریں",
|
|
52845
53078
|
"ui.browser.browser_url_bar.reload": "دوبارہ لوڈ کریں",
|
|
@@ -53013,6 +53246,12 @@ const urUiChat = {
|
|
|
53013
53246
|
"ui.chat.skill_invocation.trigger_label": "{token} کی مہارت کی ہدایات",
|
|
53014
53247
|
"ui.chat.highlights.file_resolution_failed": "سیشن کی ورکنگ ڈائریکٹری میں یہ فائل نہیں مل سکی۔ دوبارہ کوشش کرنے سے پہلے فائل کا پاتھ نقل کریں کا استعمال کر کے اس سیشن کی ورک اسپیس میں اس کا مقام جانچیں۔"
|
|
53015
53248
|
};
|
|
53249
|
+
const urUiChatLiveUpdates = {
|
|
53250
|
+
"ui.chat.live_updates.paused": "براہ راست اپ ڈیٹس معطل ہیں، اس لیے یہ گفتگو پرانی ہو سکتی ہے۔",
|
|
53251
|
+
"ui.chat.live_updates.reload": "تاریخچہ سے دوبارہ لوڈ کریں",
|
|
53252
|
+
"ui.chat.live_updates.reloading": "دوبارہ لوڈ ہو رہا ہے…",
|
|
53253
|
+
"ui.chat.live_updates.reload_failed": "یہ گفتگو دوبارہ لوڈ نہیں ہو سکی۔ دوبارہ کوشش کریں۔"
|
|
53254
|
+
};
|
|
53016
53255
|
const urUiChatResponseActions = {
|
|
53017
53256
|
"ui.chat.response_actions.label": "جواب کے اعمال"
|
|
53018
53257
|
};
|
|
@@ -53044,61 +53283,42 @@ const urUiChatTags = {
|
|
|
53044
53283
|
"ui.chat.tags.label": "ٹیگز",
|
|
53045
53284
|
"ui.chat.tags.menu": "ٹیگز…",
|
|
53046
53285
|
"ui.chat.tags.group": "ٹیگ کے لحاظ سے چیٹس کی گروہ بندی کریں",
|
|
53047
|
-
"ui.chat.tags.manage": "ٹیگز کا انتظام کریں…",
|
|
53048
53286
|
"ui.chat.tags.mode_hint": "ٹیگ گروہ وقت کے حصے کی گروہ بندی استعمال کرتے ہیں۔",
|
|
53049
53287
|
"ui.chat.tags.use_time": "وقت کا حصہ استعمال کریں",
|
|
53050
53288
|
"ui.chat.tags.auto_tag": "فورک شدہ گفتگوؤں کو خودکار ٹیگ کریں",
|
|
53051
53289
|
"ui.chat.tags.auto_tag_help": "فورک کا نام رکھتے وقت آپ کے موجودہ ٹیگز استعمال ہوتے ہیں۔",
|
|
53052
|
-
"ui.chat.tags.discovery": "گفتگو پر دایاں کلک کریں اور ٹیگز… منتخب
|
|
53053
|
-
"ui.chat.tags.picker_title": "“{title}” کے ٹیگز",
|
|
53054
|
-
"ui.chat.tags.picker_description": "ٹیگز منتخب کریں، پھر لاگو کریں۔ نئے ٹیگز فوراً محفوظ ہو جاتے ہیں۔",
|
|
53290
|
+
"ui.chat.tags.discovery": "گفتگو پر دایاں کلک کریں اور ٹیگز… منتخب کریں، یا جب کی بورڈ فوکس گفتگو پر ہو تو Command+Shift+L یا Ctrl+Shift+L دبائیں۔",
|
|
53055
53291
|
"ui.chat.tags.search": "ٹیگز تلاش کریں",
|
|
53056
|
-
"ui.chat.tags.empty": "
|
|
53292
|
+
"ui.chat.tags.empty": "شروع کرنے کے لیے ٹیگ بنائیں۔",
|
|
53057
53293
|
"ui.chat.tags.loading": "ٹیگز لوڈ ہو رہے ہیں…",
|
|
53058
53294
|
"ui.chat.tags.applying": "ٹیگز لاگو ہو رہے ہیں…",
|
|
53059
53295
|
"ui.chat.tags.retry": "دوبارہ کوشش کریں",
|
|
53060
53296
|
"ui.chat.tags.cancel": "منسوخ کریں",
|
|
53061
|
-
"ui.chat.tags.apply": "لاگو کریں",
|
|
53062
|
-
"ui.chat.tags.clear": "ٹیگز صاف کریں",
|
|
53063
|
-
"ui.chat.tags.new": "نیا ٹیگ…",
|
|
53064
53297
|
"ui.chat.tags.new_name": "نئے ٹیگ کا نام",
|
|
53065
53298
|
"ui.chat.tags.add": "شامل کریں",
|
|
53066
53299
|
"ui.chat.tags.primary": "بنیادی",
|
|
53067
|
-
"ui.chat.tags.group_under": "اس گروہ میں رکھیں",
|
|
53068
53300
|
"ui.chat.tags.untagged": "بغیر ٹیگ",
|
|
53069
53301
|
"ui.chat.tags.rename": "نام بدلیں",
|
|
53070
|
-
"ui.chat.tags.save": "محفوظ کریں",
|
|
53071
53302
|
"ui.chat.tags.delete": "حذف کریں",
|
|
53072
53303
|
"ui.chat.tags.delete_tag": "ٹیگ حذف کریں",
|
|
53073
53304
|
"ui.chat.tags.delete_title": "“{name}” حذف کریں؟",
|
|
53074
|
-
"ui.chat.tags.delete_description": "یہ ٹیگ {count, plural, one {# گفتگو} other {# گفتگوؤں}} سے ہٹائیں۔
|
|
53305
|
+
"ui.chat.tags.delete_description": "یہ ٹیگ {count, plural, one {# گفتگو} other {# گفتگوؤں}} سے ہٹائیں۔ گفتگوئیں حذف نہیں ہوں گی۔",
|
|
53075
53306
|
"ui.chat.tags.move_up": "{name} اوپر کریں",
|
|
53076
53307
|
"ui.chat.tags.move_down": "{name} نیچے کریں",
|
|
53077
|
-
"ui.chat.tags.manage_description": "ٹیگز بنائیں، نام بدلیں اور ترتیب دیں، پھر لاگو کریں۔ منسوخ کرنے سے یہ تبدیلیاں ضائع ہو جائیں گی۔",
|
|
53078
53308
|
"ui.chat.tags.rename_label": "{name} کا نام بدلیں",
|
|
53079
53309
|
"ui.chat.tags.no_matches": "“{query}” سے کوئی ٹیگ نہیں ملتا۔",
|
|
53080
53310
|
"ui.chat.tags.save_failed": "ٹیگز محفوظ نہیں ہوئے۔ دوبارہ کوشش کریں۔",
|
|
53081
53311
|
"ui.chat.tags.load_failed": "ٹیگز لوڈ نہیں ہو سکے۔ دوبارہ کوشش کریں۔",
|
|
53082
53312
|
"ui.chat.tags.duplicate_name": "“{name}” نام کا ٹیگ پہلے سے موجود ہے۔",
|
|
53083
|
-
"ui.chat.tags.updated_grouped": "ٹیگز اپ ڈیٹ ہو گئے۔ {tag} کے گروہ میں ہے۔",
|
|
53084
|
-
"ui.chat.tags.updated_untagged": "ٹیگز اپ ڈیٹ ہو گئے۔ بغیر ٹیگ میں دکھایا گیا ہے۔",
|
|
53085
|
-
"ui.chat.tags.none_yet": "ابھی کوئی ٹیگ نہیں",
|
|
53086
|
-
"ui.chat.tags.manage_title": "ٹیگز کا انتظام",
|
|
53087
|
-
"ui.chat.tags.apply_deletion_first": "پہلے حذف کرنے کی تبدیلی لاگو کریں، پھر “{name}” دوبارہ شامل کریں۔",
|
|
53088
|
-
"ui.chat.tags.moved_to": "“{name}” میں منتقل کر دیا گیا",
|
|
53089
53313
|
"ui.chat.tags.removed_all": "تمام ٹیگز ہٹا دیے گئے",
|
|
53090
53314
|
"ui.chat.tags.remove_all": "{count, plural, one {ٹیگ ہٹائیں (#)} other {تمام ٹیگز ہٹائیں (#)}}",
|
|
53091
|
-
"ui.chat.tags.move_menu": "ٹیگ میں منتقل کریں…",
|
|
53092
53315
|
"ui.chat.tags.changed_elsewhere": "ٹیگز کہیں اور تبدیل ہو گئے",
|
|
53093
53316
|
"ui.chat.tags.move_armed": "“{name}” منتقل کریں",
|
|
53094
53317
|
"ui.chat.tags.move_cancelled": "منتقلی منسوخ کر دی گئی",
|
|
53095
53318
|
"ui.chat.tags.undo": "واپس کریں",
|
|
53096
53319
|
"ui.chat.tags.move_undone": "ٹیگ کی منتقلی واپس کر دی گئی",
|
|
53097
|
-
"ui.chat.tags.move_title": "“{title}” منتقل کریں",
|
|
53098
|
-
"ui.chat.tags.move_description": "کسی ٹیگ کو بنیادی بنانے کے لیے اسے منتخب کریں، یا تمام ٹیگز ہٹانے کے لیے “بغیر ٹیگ” منتخب کریں۔",
|
|
53099
53320
|
"ui.chat.tags.move_failed": "ٹیگز منتقل نہیں ہوئے۔ دوبارہ کوشش کریں۔",
|
|
53100
53321
|
"ui.chat.tags.selection_count": "8 میں سے {count}",
|
|
53101
|
-
"ui.chat.tags.registry_count": "32 میں سے {count}",
|
|
53102
53322
|
"ui.chat.tags.create_name": "“{name}” بنائیں",
|
|
53103
53323
|
"ui.chat.tags.create_helper": "تمام گفتگوؤں کے لیے محفوظ",
|
|
53104
53324
|
"ui.chat.tags.selection_limit": "زیادہ سے زیادہ 8 ٹیگز منتخب کریں",
|
|
@@ -53107,15 +53327,26 @@ const urUiChatTags = {
|
|
|
53107
53327
|
"ui.chat.tags.name_reserved": "“Untagged” نام مخصوص ہے",
|
|
53108
53328
|
"ui.chat.tags.create_failed": "ٹیگ نہیں بنا۔ دوبارہ کوشش کریں۔",
|
|
53109
53329
|
"ui.chat.tags.remove_named": "{name} ہٹائیں",
|
|
53110
|
-
"ui.chat.tags.reorder_filtered": "ٹیگز کی ترتیب بدلنے کے لیے تلاش صاف کریں",
|
|
53111
53330
|
"ui.chat.tags.created_name": "“{name}” بنا دیا گیا",
|
|
53112
|
-
"ui.chat.tags.selection_status": "منتخب: {count}۔ {name} کے گروہ
|
|
53113
|
-
"ui.chat.tags.tag_usage": "{count, plural, one {# گفتگو} other {# گفتگوئیں}}",
|
|
53114
|
-
"ui.chat.tags.create_pending": "ٹیگ محفوظ ہو رہا ہے…",
|
|
53331
|
+
"ui.chat.tags.selection_status": "منتخب: {count}۔ {name} کے گروہ میں۔",
|
|
53115
53332
|
"ui.chat.tags.remote": "ریموٹ گفتگو کے ٹیگز تبدیل نہیں کیے جا سکتے۔",
|
|
53116
53333
|
"ui.chat.tags.renamed_name": "نام بدل کر “{name}” کر دیا گیا",
|
|
53117
|
-
"ui.chat.tags.
|
|
53118
|
-
"ui.chat.tags.
|
|
53334
|
+
"ui.chat.tags.registry_changed": "کچھ ٹیگز کہیں اور تبدیل ہو گئے ہیں۔ اپنے انتخاب کا جائزہ لیں۔",
|
|
53335
|
+
"ui.chat.tags.dropped_on": "“{name}” شامل کیا گیا اور اسی گروہ میں رکھا گیا",
|
|
53336
|
+
"ui.chat.tags.show_under": "اس گروہ میں رکھیں",
|
|
53337
|
+
"ui.chat.tags.shown_under": "{tag} کے گروہ میں",
|
|
53338
|
+
"ui.chat.tags.shown_untagged": "بغیر ٹیگ کے گروہ میں",
|
|
53339
|
+
"ui.chat.tags.hidden": "ٹیگز چھپے ہوئے ہیں۔",
|
|
53340
|
+
"ui.chat.tags.show_groups": "گروہ دکھائیں",
|
|
53341
|
+
"ui.chat.tags.header_actions": "ٹیگ کے اقدامات: {name}",
|
|
53342
|
+
"ui.chat.tags.header_first": "“{name}” یہاں پہلے ہی پہلا ٹیگ ہے",
|
|
53343
|
+
"ui.chat.tags.header_last": "“{name}” یہاں پہلے ہی آخری ٹیگ ہے",
|
|
53344
|
+
"ui.chat.tags.moved_tag": "“{name}” منتقل کیا گیا",
|
|
53345
|
+
"ui.chat.tags.new_tag": "نیا ٹیگ",
|
|
53346
|
+
"ui.chat.tags.name_placeholder": "ٹیگ کا نام",
|
|
53347
|
+
"ui.chat.tags.unused": "غیر استعمال شدہ ٹیگز ({count})",
|
|
53348
|
+
"ui.chat.tags.empty_title": "گفتگوؤں کو ٹیگ کے لحاظ سے گروہ بند کریں۔",
|
|
53349
|
+
"ui.chat.tags.empty_hint": "کسی گفتگو پر {chord} دبائیں، یا یہاں ٹیگ بنائیں۔"
|
|
53119
53350
|
};
|
|
53120
53351
|
const urUiCodeReview = {
|
|
53121
53352
|
"ui.code_review.activity.close": "بند کیا",
|
|
@@ -56215,6 +56446,7 @@ const viUiBrowser = {
|
|
|
56215
56446
|
"ui.browser.browser_url_bar.home_destination": "Trang chủ — đến trang bắt đầu (trống)",
|
|
56216
56447
|
"ui.browser.browser_url_bar.latest_download": "Mở thư mục tải xuống — {name} đã được lưu ở đó",
|
|
56217
56448
|
"ui.browser.browser_url_bar.newest_download": "Mở thư mục tải xuống — {name} là tệp mới nhất được lưu ở đó ({count, plural, other {{count, number, ::group-off} trong phiên này}})",
|
|
56449
|
+
"ui.browser.browser_url_bar.page_menu": "Tùy chọn trang",
|
|
56218
56450
|
"ui.browser.browser_url_bar.page_zoom_reset": "Thu phóng trang {zoom, number, ::group-off}%, đặt lại về 100%",
|
|
56219
56451
|
"ui.browser.browser_url_bar.print_page": "In trang",
|
|
56220
56452
|
"ui.browser.browser_url_bar.reload": "Tải lại",
|
|
@@ -56388,6 +56620,12 @@ const viUiChat = {
|
|
|
56388
56620
|
"ui.chat.skill_invocation.trigger_label": "Hướng dẫn kỹ năng {token}",
|
|
56389
56621
|
"ui.chat.highlights.file_resolution_failed": "Không xác định được tệp này trong thư mục làm việc của phiên. Dùng Sao chép đường dẫn tệp để kiểm tra vị trí của tệp trong không gian làm việc của phiên này trước khi thử lại."
|
|
56390
56622
|
};
|
|
56623
|
+
const viUiChatLiveUpdates = {
|
|
56624
|
+
"ui.chat.live_updates.paused": "Cập nhật trực tiếp đã tạm dừng, vì vậy cuộc trò chuyện này có thể đã lỗi thời.",
|
|
56625
|
+
"ui.chat.live_updates.reload": "Tải lại từ lịch sử",
|
|
56626
|
+
"ui.chat.live_updates.reloading": "Đang tải lại…",
|
|
56627
|
+
"ui.chat.live_updates.reload_failed": "Không thể tải lại cuộc trò chuyện này. Hãy thử lại."
|
|
56628
|
+
};
|
|
56391
56629
|
const viUiChatResponseActions = {
|
|
56392
56630
|
"ui.chat.response_actions.label": "Thao tác phản hồi"
|
|
56393
56631
|
};
|
|
@@ -56419,61 +56657,42 @@ const viUiChatTags = {
|
|
|
56419
56657
|
"ui.chat.tags.label": "Nhãn",
|
|
56420
56658
|
"ui.chat.tags.menu": "Nhãn…",
|
|
56421
56659
|
"ui.chat.tags.group": "Nhóm cuộc trò chuyện theo nhãn",
|
|
56422
|
-
"ui.chat.tags.manage": "Quản lý nhãn…",
|
|
56423
56660
|
"ui.chat.tags.mode_hint": "Các nhóm nhãn dùng cách nhóm của mục Thời gian.",
|
|
56424
56661
|
"ui.chat.tags.use_time": "Dùng mục Thời gian",
|
|
56425
56662
|
"ui.chat.tags.auto_tag": "Tự động gắn nhãn cuộc trò chuyện tách nhánh",
|
|
56426
56663
|
"ui.chat.tags.auto_tag_help": "Dùng nhãn hiện có của bạn khi đặt tên cho một nhánh.",
|
|
56427
|
-
"ui.chat.tags.discovery": "Nhấp chuột phải vào cuộc trò chuyện rồi chọn Nhãn
|
|
56428
|
-
"ui.chat.tags.picker_title": "Nhãn cho “{title}”",
|
|
56429
|
-
"ui.chat.tags.picker_description": "Chọn nhãn rồi nhấn Áp dụng. Nhãn mới được lưu ngay.",
|
|
56664
|
+
"ui.chat.tags.discovery": "Nhấp chuột phải vào cuộc trò chuyện rồi chọn Nhãn…, hoặc nhấn Command+Shift+L hay Ctrl+Shift+L khi tiêu điểm bàn phím nằm trên cuộc trò chuyện.",
|
|
56430
56665
|
"ui.chat.tags.search": "Tìm nhãn",
|
|
56431
|
-
"ui.chat.tags.empty": "
|
|
56666
|
+
"ui.chat.tags.empty": "Tạo nhãn để bắt đầu.",
|
|
56432
56667
|
"ui.chat.tags.loading": "Đang tải nhãn…",
|
|
56433
56668
|
"ui.chat.tags.applying": "Đang áp dụng nhãn…",
|
|
56434
56669
|
"ui.chat.tags.retry": "Thử lại",
|
|
56435
56670
|
"ui.chat.tags.cancel": "Hủy",
|
|
56436
|
-
"ui.chat.tags.apply": "Áp dụng",
|
|
56437
|
-
"ui.chat.tags.clear": "Gỡ hết nhãn",
|
|
56438
|
-
"ui.chat.tags.new": "Nhãn mới…",
|
|
56439
56671
|
"ui.chat.tags.new_name": "Tên nhãn mới",
|
|
56440
56672
|
"ui.chat.tags.add": "Thêm",
|
|
56441
56673
|
"ui.chat.tags.primary": "Chính",
|
|
56442
|
-
"ui.chat.tags.group_under": "Nhóm vào",
|
|
56443
56674
|
"ui.chat.tags.untagged": "Chưa gắn nhãn",
|
|
56444
56675
|
"ui.chat.tags.rename": "Đổi tên",
|
|
56445
|
-
"ui.chat.tags.save": "Lưu",
|
|
56446
56676
|
"ui.chat.tags.delete": "Xóa",
|
|
56447
56677
|
"ui.chat.tags.delete_tag": "Xóa nhãn",
|
|
56448
56678
|
"ui.chat.tags.delete_title": "Xóa “{name}”?",
|
|
56449
|
-
"ui.chat.tags.delete_description": "Gỡ nhãn này khỏi {count, plural, other {# cuộc trò chuyện}}.
|
|
56679
|
+
"ui.chat.tags.delete_description": "Gỡ nhãn này khỏi {count, plural, other {# cuộc trò chuyện}}. Cuộc trò chuyện sẽ không bị xóa.",
|
|
56450
56680
|
"ui.chat.tags.move_up": "Chuyển {name} lên",
|
|
56451
56681
|
"ui.chat.tags.move_down": "Chuyển {name} xuống",
|
|
56452
|
-
"ui.chat.tags.manage_description": "Tạo, đổi tên và sắp xếp nhãn rồi nhấn Áp dụng. Hủy sẽ bỏ các thay đổi này.",
|
|
56453
56682
|
"ui.chat.tags.rename_label": "Đổi tên {name}",
|
|
56454
56683
|
"ui.chat.tags.no_matches": "Không có nhãn nào khớp với “{query}”.",
|
|
56455
56684
|
"ui.chat.tags.save_failed": "Chưa lưu được nhãn. Hãy thử lại.",
|
|
56456
56685
|
"ui.chat.tags.load_failed": "Không tải được nhãn. Hãy thử lại.",
|
|
56457
56686
|
"ui.chat.tags.duplicate_name": "Đã có nhãn tên “{name}”.",
|
|
56458
|
-
"ui.chat.tags.updated_grouped": "Đã cập nhật nhãn. Được nhóm vào {tag}.",
|
|
56459
|
-
"ui.chat.tags.updated_untagged": "Đã cập nhật nhãn. Hiển thị trong Chưa gắn nhãn.",
|
|
56460
|
-
"ui.chat.tags.none_yet": "Chưa có nhãn",
|
|
56461
|
-
"ui.chat.tags.manage_title": "Quản lý nhãn",
|
|
56462
|
-
"ui.chat.tags.apply_deletion_first": "Áp dụng thao tác xóa trước, rồi thêm lại “{name}”.",
|
|
56463
|
-
"ui.chat.tags.moved_to": "Đã chuyển sang “{name}”",
|
|
56464
56687
|
"ui.chat.tags.removed_all": "Đã gỡ hết nhãn",
|
|
56465
56688
|
"ui.chat.tags.remove_all": "{count, plural, other {Gỡ hết nhãn (#)}}",
|
|
56466
|
-
"ui.chat.tags.move_menu": "Chuyển sang nhãn…",
|
|
56467
56689
|
"ui.chat.tags.changed_elsewhere": "Nhãn đã được thay đổi ở nơi khác",
|
|
56468
56690
|
"ui.chat.tags.move_armed": "Chuyển “{name}”",
|
|
56469
56691
|
"ui.chat.tags.move_cancelled": "Đã hủy thao tác chuyển",
|
|
56470
56692
|
"ui.chat.tags.undo": "Hoàn tác",
|
|
56471
56693
|
"ui.chat.tags.move_undone": "Đã hoàn tác thao tác chuyển nhãn",
|
|
56472
|
-
"ui.chat.tags.move_title": "Chuyển “{title}”",
|
|
56473
|
-
"ui.chat.tags.move_description": "Chọn một nhãn làm nhãn chính, hoặc chọn Chưa gắn nhãn để gỡ hết nhãn.",
|
|
56474
56694
|
"ui.chat.tags.move_failed": "Chưa chuyển được nhãn. Hãy thử lại.",
|
|
56475
56695
|
"ui.chat.tags.selection_count": "{count} trên 8",
|
|
56476
|
-
"ui.chat.tags.registry_count": "{count} trên 32",
|
|
56477
56696
|
"ui.chat.tags.create_name": "Tạo “{name}”",
|
|
56478
56697
|
"ui.chat.tags.create_helper": "Được lưu cho mọi cuộc trò chuyện",
|
|
56479
56698
|
"ui.chat.tags.selection_limit": "Chọn tối đa 8 nhãn",
|
|
@@ -56482,15 +56701,26 @@ const viUiChatTags = {
|
|
|
56482
56701
|
"ui.chat.tags.name_reserved": "“Untagged” là tên dành riêng",
|
|
56483
56702
|
"ui.chat.tags.create_failed": "Chưa tạo được nhãn. Hãy thử lại.",
|
|
56484
56703
|
"ui.chat.tags.remove_named": "Bỏ {name}",
|
|
56485
|
-
"ui.chat.tags.reorder_filtered": "Xóa tìm kiếm để sắp xếp lại nhãn",
|
|
56486
56704
|
"ui.chat.tags.created_name": "Đã tạo “{name}”",
|
|
56487
|
-
"ui.chat.tags.selection_status": "Đã chọn {count}.
|
|
56488
|
-
"ui.chat.tags.tag_usage": "{count} cuộc trò chuyện",
|
|
56489
|
-
"ui.chat.tags.create_pending": "Đang lưu nhãn…",
|
|
56705
|
+
"ui.chat.tags.selection_status": "Đã chọn {count}. Đang ở nhóm {name}.",
|
|
56490
56706
|
"ui.chat.tags.remote": "Không thể thay đổi nhãn của cuộc trò chuyện từ xa.",
|
|
56491
56707
|
"ui.chat.tags.renamed_name": "Đã đổi tên thành “{name}”",
|
|
56492
|
-
"ui.chat.tags.
|
|
56493
|
-
"ui.chat.tags.
|
|
56708
|
+
"ui.chat.tags.registry_changed": "Một số nhãn đã thay đổi ở nơi khác. Hãy kiểm tra lựa chọn.",
|
|
56709
|
+
"ui.chat.tags.dropped_on": "Đã thêm “{name}” và nhóm vào nhãn này",
|
|
56710
|
+
"ui.chat.tags.show_under": "Nhóm vào đây",
|
|
56711
|
+
"ui.chat.tags.shown_under": "Đang ở nhóm {tag}",
|
|
56712
|
+
"ui.chat.tags.shown_untagged": "Đang ở nhóm Chưa gắn nhãn",
|
|
56713
|
+
"ui.chat.tags.hidden": "Nhãn đang bị ẩn.",
|
|
56714
|
+
"ui.chat.tags.show_groups": "Hiện nhóm",
|
|
56715
|
+
"ui.chat.tags.header_actions": "Thao tác nhãn: {name}",
|
|
56716
|
+
"ui.chat.tags.header_first": "“{name}” đã là nhãn đầu tiên ở đây",
|
|
56717
|
+
"ui.chat.tags.header_last": "“{name}” đã là nhãn cuối cùng ở đây",
|
|
56718
|
+
"ui.chat.tags.moved_tag": "Đã chuyển “{name}”",
|
|
56719
|
+
"ui.chat.tags.new_tag": "Nhãn mới",
|
|
56720
|
+
"ui.chat.tags.name_placeholder": "Tên nhãn",
|
|
56721
|
+
"ui.chat.tags.unused": "Nhãn chưa dùng ({count})",
|
|
56722
|
+
"ui.chat.tags.empty_title": "Nhóm cuộc trò chuyện theo nhãn.",
|
|
56723
|
+
"ui.chat.tags.empty_hint": "Nhấn {chord} trên một cuộc trò chuyện, hoặc tạo nhãn tại đây."
|
|
56494
56724
|
};
|
|
56495
56725
|
const viUiCodeReview = {
|
|
56496
56726
|
"ui.code_review.activity.close": "đã đóng",
|
|
@@ -59485,6 +59715,7 @@ const zhCNUiBrowser = {
|
|
|
59485
59715
|
"ui.browser.browser_url_bar.home_destination": "主页——前往起始页(空白页)",
|
|
59486
59716
|
"ui.browser.browser_url_bar.latest_download": "打开下载文件夹——{name}已保存于此",
|
|
59487
59717
|
"ui.browser.browser_url_bar.newest_download": "打开下载文件夹——最新保存的文件为{name}(本次会话共{count, plural, other {{count, number, ::group-off}个}})",
|
|
59718
|
+
"ui.browser.browser_url_bar.page_menu": "页面选项",
|
|
59488
59719
|
"ui.browser.browser_url_bar.page_zoom_reset": "页面缩放{zoom, number, ::group-off}%,重置为100%",
|
|
59489
59720
|
"ui.browser.browser_url_bar.print_page": "打印页面",
|
|
59490
59721
|
"ui.browser.browser_url_bar.reload": "重新加载",
|
|
@@ -59658,6 +59889,12 @@ const zhCNUiChat = {
|
|
|
59658
59889
|
"ui.chat.skill_invocation.trigger_label": "{token}技能指令",
|
|
59659
59890
|
"ui.chat.highlights.file_resolution_failed": "无法在此会话的工作目录中定位该文件。请使用“复制文件路径”,对照当前会话的工作区核对文件位置后再重试。"
|
|
59660
59891
|
};
|
|
59892
|
+
const zhCNUiChatLiveUpdates = {
|
|
59893
|
+
"ui.chat.live_updates.paused": "实时更新已暂停,此对话可能已过时。",
|
|
59894
|
+
"ui.chat.live_updates.reload": "从历史记录重新加载",
|
|
59895
|
+
"ui.chat.live_updates.reloading": "正在重新加载……",
|
|
59896
|
+
"ui.chat.live_updates.reload_failed": "无法重新加载此对话,请重试。"
|
|
59897
|
+
};
|
|
59661
59898
|
const zhCNUiChatResponseActions = {
|
|
59662
59899
|
"ui.chat.response_actions.label": "回复操作"
|
|
59663
59900
|
};
|
|
@@ -59689,61 +59926,42 @@ const zhCNUiChatTags = {
|
|
|
59689
59926
|
"ui.chat.tags.label": "标签",
|
|
59690
59927
|
"ui.chat.tags.menu": "标签……",
|
|
59691
59928
|
"ui.chat.tags.group": "按标签分组对话",
|
|
59692
|
-
"ui.chat.tags.manage": "管理标签……",
|
|
59693
59929
|
"ui.chat.tags.mode_hint": "标签分组需使用“时间分区”分组方式。",
|
|
59694
59930
|
"ui.chat.tags.use_time": "使用时间分区",
|
|
59695
59931
|
"ui.chat.tags.auto_tag": "自动为分叉的对话添加标签",
|
|
59696
59932
|
"ui.chat.tags.auto_tag_help": "为分叉命名时使用你已有的标签。",
|
|
59697
|
-
"ui.chat.tags.discovery": "
|
|
59698
|
-
"ui.chat.tags.picker_title": "“{title}”的标签",
|
|
59699
|
-
"ui.chat.tags.picker_description": "选择标签后点击“应用”。新建标签会立即保存。",
|
|
59933
|
+
"ui.chat.tags.discovery": "右键点击对话,选择“标签……”;或在对话获得键盘焦点时按 Command+Shift+L 或 Ctrl+Shift+L。",
|
|
59700
59934
|
"ui.chat.tags.search": "搜索标签",
|
|
59701
|
-
"ui.chat.tags.empty": "
|
|
59935
|
+
"ui.chat.tags.empty": "先创建一个标签。",
|
|
59702
59936
|
"ui.chat.tags.loading": "正在加载标签……",
|
|
59703
59937
|
"ui.chat.tags.applying": "正在应用标签……",
|
|
59704
59938
|
"ui.chat.tags.retry": "重试",
|
|
59705
59939
|
"ui.chat.tags.cancel": "取消",
|
|
59706
|
-
"ui.chat.tags.apply": "应用",
|
|
59707
|
-
"ui.chat.tags.clear": "清除标签",
|
|
59708
|
-
"ui.chat.tags.new": "新建标签……",
|
|
59709
59940
|
"ui.chat.tags.new_name": "新标签名称",
|
|
59710
59941
|
"ui.chat.tags.add": "添加",
|
|
59711
59942
|
"ui.chat.tags.primary": "主标签",
|
|
59712
|
-
"ui.chat.tags.group_under": "分组到",
|
|
59713
59943
|
"ui.chat.tags.untagged": "无标签",
|
|
59714
59944
|
"ui.chat.tags.rename": "重命名",
|
|
59715
|
-
"ui.chat.tags.save": "保存",
|
|
59716
59945
|
"ui.chat.tags.delete": "删除",
|
|
59717
59946
|
"ui.chat.tags.delete_tag": "删除标签",
|
|
59718
59947
|
"ui.chat.tags.delete_title": "删除“{name}”?",
|
|
59719
|
-
"ui.chat.tags.delete_description": "将从{count, plural, other {#个对话}}
|
|
59948
|
+
"ui.chat.tags.delete_description": "将从{count, plural, other {#个对话}}中移除此标签。不会删除对话。",
|
|
59720
59949
|
"ui.chat.tags.move_up": "上移{name}",
|
|
59721
59950
|
"ui.chat.tags.move_down": "下移{name}",
|
|
59722
|
-
"ui.chat.tags.manage_description": "创建、重命名或调整标签顺序后,点击“应用”。点击“取消”将放弃这些更改。",
|
|
59723
59951
|
"ui.chat.tags.rename_label": "重命名{name}",
|
|
59724
59952
|
"ui.chat.tags.no_matches": "没有与“{query}”匹配的标签。",
|
|
59725
59953
|
"ui.chat.tags.save_failed": "标签未保存。请重试。",
|
|
59726
59954
|
"ui.chat.tags.load_failed": "无法加载标签。请重试。",
|
|
59727
59955
|
"ui.chat.tags.duplicate_name": "已存在名为“{name}”的标签。",
|
|
59728
|
-
"ui.chat.tags.updated_grouped": "标签已更新,已归入{tag}分组。",
|
|
59729
|
-
"ui.chat.tags.updated_untagged": "标签已更新,已归入“无标签”。",
|
|
59730
|
-
"ui.chat.tags.none_yet": "暂无标签",
|
|
59731
|
-
"ui.chat.tags.manage_title": "管理标签",
|
|
59732
|
-
"ui.chat.tags.apply_deletion_first": "请先应用删除操作,再重新添加“{name}”。",
|
|
59733
|
-
"ui.chat.tags.moved_to": "已移至“{name}”",
|
|
59734
59956
|
"ui.chat.tags.removed_all": "已移除所有标签",
|
|
59735
59957
|
"ui.chat.tags.remove_all": "{count, plural, =1 {移除标签(#)} other {移除所有标签(#)}}",
|
|
59736
|
-
"ui.chat.tags.move_menu": "移至标签…",
|
|
59737
59958
|
"ui.chat.tags.changed_elsewhere": "标签已在其他位置更改",
|
|
59738
59959
|
"ui.chat.tags.move_armed": "移动“{name}”",
|
|
59739
59960
|
"ui.chat.tags.move_cancelled": "已取消移动",
|
|
59740
59961
|
"ui.chat.tags.undo": "撤销",
|
|
59741
59962
|
"ui.chat.tags.move_undone": "已撤销标签移动",
|
|
59742
|
-
"ui.chat.tags.move_title": "移动“{title}”",
|
|
59743
|
-
"ui.chat.tags.move_description": "选择一个标签将其设为主标签,或选择“无标签”以移除所有标签。",
|
|
59744
59963
|
"ui.chat.tags.move_failed": "标签未移动。请重试。",
|
|
59745
59964
|
"ui.chat.tags.selection_count": "已选 {count}/8",
|
|
59746
|
-
"ui.chat.tags.registry_count": "{count}/32",
|
|
59747
59965
|
"ui.chat.tags.create_name": "创建“{name}”",
|
|
59748
59966
|
"ui.chat.tags.create_helper": "保存后可用于所有对话",
|
|
59749
59967
|
"ui.chat.tags.selection_limit": "最多选择 8 个标签",
|
|
@@ -59752,15 +59970,26 @@ const zhCNUiChatTags = {
|
|
|
59752
59970
|
"ui.chat.tags.name_reserved": "“Untagged”是保留名称",
|
|
59753
59971
|
"ui.chat.tags.create_failed": "未能创建标签。请重试。",
|
|
59754
59972
|
"ui.chat.tags.remove_named": "移除{name}",
|
|
59755
|
-
"ui.chat.tags.reorder_filtered": "清空搜索以调整标签顺序",
|
|
59756
59973
|
"ui.chat.tags.created_name": "已创建“{name}”",
|
|
59757
59974
|
"ui.chat.tags.selection_status": "已选择 {count} 个,归入{name}。",
|
|
59758
|
-
"ui.chat.tags.tag_usage": "{count} 个对话",
|
|
59759
|
-
"ui.chat.tags.create_pending": "正在保存标签…",
|
|
59760
59975
|
"ui.chat.tags.remote": "无法更改远程对话的标签。",
|
|
59761
59976
|
"ui.chat.tags.renamed_name": "已重命名为“{name}”",
|
|
59762
|
-
"ui.chat.tags.
|
|
59763
|
-
"ui.chat.tags.
|
|
59977
|
+
"ui.chat.tags.registry_changed": "部分标签已在别处更改。请检查所选标签。",
|
|
59978
|
+
"ui.chat.tags.dropped_on": "已添加“{name}”并归入该标签",
|
|
59979
|
+
"ui.chat.tags.show_under": "归入此标签",
|
|
59980
|
+
"ui.chat.tags.shown_under": "归入{tag}",
|
|
59981
|
+
"ui.chat.tags.shown_untagged": "归入“无标签”",
|
|
59982
|
+
"ui.chat.tags.hidden": "标签已隐藏。",
|
|
59983
|
+
"ui.chat.tags.show_groups": "显示分组",
|
|
59984
|
+
"ui.chat.tags.header_actions": "标签操作:{name}",
|
|
59985
|
+
"ui.chat.tags.header_first": "“{name}”已是此处第一个标签",
|
|
59986
|
+
"ui.chat.tags.header_last": "“{name}”已是此处最后一个标签",
|
|
59987
|
+
"ui.chat.tags.moved_tag": "已移动“{name}”",
|
|
59988
|
+
"ui.chat.tags.new_tag": "新建标签",
|
|
59989
|
+
"ui.chat.tags.name_placeholder": "标签名称",
|
|
59990
|
+
"ui.chat.tags.unused": "未使用的标签({count})",
|
|
59991
|
+
"ui.chat.tags.empty_title": "按标签对对话分组。",
|
|
59992
|
+
"ui.chat.tags.empty_hint": "在对话上按 {chord},或在此创建标签。"
|
|
59764
59993
|
};
|
|
59765
59994
|
const zhCNUiChatTranscriptCopy = {
|
|
59766
59995
|
"ui.chat.transcript_copy.menu.copy_text": "复制文本",
|
|
@@ -62567,6 +62796,7 @@ const bundledEnglish = {
|
|
|
62567
62796
|
...enUiChatDialogs,
|
|
62568
62797
|
...enUiChatHeader,
|
|
62569
62798
|
...enUiChat,
|
|
62799
|
+
...enUiChatLiveUpdates,
|
|
62570
62800
|
...enUiChatPickers,
|
|
62571
62801
|
...enUiChatResponseActions,
|
|
62572
62802
|
...enUiChatRunDetails,
|
|
@@ -62638,6 +62868,7 @@ const bundledCatalogues = {
|
|
|
62638
62868
|
...esUiChatDialogs,
|
|
62639
62869
|
...esUiChatHeader,
|
|
62640
62870
|
...esUiChat,
|
|
62871
|
+
...esUiChatLiveUpdates,
|
|
62641
62872
|
...esUiChatResponseActions,
|
|
62642
62873
|
...esUiChatSidebarView,
|
|
62643
62874
|
...esUiChatTags,
|
|
@@ -62701,6 +62932,7 @@ const bundledCatalogues = {
|
|
|
62701
62932
|
...frUiChatDialogs,
|
|
62702
62933
|
...frUiChatHeader,
|
|
62703
62934
|
...frUiChat,
|
|
62935
|
+
...frUiChatLiveUpdates,
|
|
62704
62936
|
...frUiChatResponseActions,
|
|
62705
62937
|
...frUiChatSidebarView,
|
|
62706
62938
|
...frUiChatTags,
|
|
@@ -62764,6 +62996,7 @@ const bundledCatalogues = {
|
|
|
62764
62996
|
...hiUiChatDialogs,
|
|
62765
62997
|
...hiUiChatHeader,
|
|
62766
62998
|
...hiUiChat,
|
|
62999
|
+
...hiUiChatLiveUpdates,
|
|
62767
63000
|
...hiUiChatResponseActions,
|
|
62768
63001
|
...hiUiChatSidebarView,
|
|
62769
63002
|
...hiUiChatTags,
|
|
@@ -62822,6 +63055,7 @@ const bundledCatalogues = {
|
|
|
62822
63055
|
...ruUiChatDialogs,
|
|
62823
63056
|
...ruUiChatHeader,
|
|
62824
63057
|
...ruUiChat,
|
|
63058
|
+
...ruUiChatLiveUpdates,
|
|
62825
63059
|
...ruUiChatResponseActions,
|
|
62826
63060
|
...ruUiChatSidebarView,
|
|
62827
63061
|
...ruUiChatTags,
|
|
@@ -62882,6 +63116,7 @@ const bundledCatalogues = {
|
|
|
62882
63116
|
...urUiChatDialogs,
|
|
62883
63117
|
...urUiChatHeader,
|
|
62884
63118
|
...urUiChat,
|
|
63119
|
+
...urUiChatLiveUpdates,
|
|
62885
63120
|
...urUiChatResponseActions,
|
|
62886
63121
|
...urUiChatSidebarView,
|
|
62887
63122
|
...urUiChatTags,
|
|
@@ -62941,6 +63176,7 @@ const bundledCatalogues = {
|
|
|
62941
63176
|
...viUiChatDialogs,
|
|
62942
63177
|
...viUiChatHeader,
|
|
62943
63178
|
...viUiChat,
|
|
63179
|
+
...viUiChatLiveUpdates,
|
|
62944
63180
|
...viUiChatResponseActions,
|
|
62945
63181
|
...viUiChatSidebarView,
|
|
62946
63182
|
...viUiChatTags,
|
|
@@ -63000,6 +63236,7 @@ const bundledCatalogues = {
|
|
|
63000
63236
|
...zhCNUiChatDialogs,
|
|
63001
63237
|
...zhCNUiChatHeader,
|
|
63002
63238
|
...zhCNUiChat,
|
|
63239
|
+
...zhCNUiChatLiveUpdates,
|
|
63003
63240
|
...zhCNUiChatResponseActions,
|
|
63004
63241
|
...zhCNUiChatSidebarView,
|
|
63005
63242
|
...zhCNUiChatTags,
|
|
@@ -66270,6 +66507,11 @@ class BrowserHost {
|
|
|
66270
66507
|
facts;
|
|
66271
66508
|
/** The session's per-origin storage clear, injected (see `BrowserHostOptions`). */
|
|
66272
66509
|
forgetSiteData;
|
|
66510
|
+
/** S4b's popout health, read from the controller (or the launch's platform
|
|
66511
|
+
* answer when no controller exists). The strip reads this from the same
|
|
66512
|
+
* projection as the tabs, so the renderer has one source for "child or
|
|
66513
|
+
* fallback" and never guesses from a failed IPC call. */
|
|
66514
|
+
addressOverlayMode;
|
|
66273
66515
|
/**
|
|
66274
66516
|
* The last main-frame load failure per tab, cleared by the next load.
|
|
66275
66517
|
*
|
|
@@ -66295,6 +66537,7 @@ class BrowserHost {
|
|
|
66295
66537
|
this.tabAudio = new TabAudioTracker(() => this.onChanged());
|
|
66296
66538
|
this.facts = options.facts;
|
|
66297
66539
|
this.forgetSiteData = options.forgetSiteData;
|
|
66540
|
+
this.addressOverlayMode = options.addressOverlayMode ?? (() => ({ mode: "suspend", reason: "unavailable" }));
|
|
66298
66541
|
}
|
|
66299
66542
|
/** Answer one wire request. The only place a method name becomes an action. */
|
|
66300
66543
|
async dispatch(method, params, requestId2) {
|
|
@@ -66575,6 +66818,7 @@ class BrowserHost {
|
|
|
66575
66818
|
new Set(this.registry.snapshot().map((entry) => entry.tabId))
|
|
66576
66819
|
);
|
|
66577
66820
|
return {
|
|
66821
|
+
addressOverlay: this.addressOverlayMode(),
|
|
66578
66822
|
pageControls: this.pageControls.state(active),
|
|
66579
66823
|
tabs: this.chromeTabOrder.project(this.registry.snapshot()).map((entry, displayOrder) => ({
|
|
66580
66824
|
...this.chromeTabOrder.hasCustomOrder ? { displayOrder } : {},
|
|
@@ -68289,6 +68533,7 @@ function tabIdOrThrow(value, name) {
|
|
|
68289
68533
|
return id2;
|
|
68290
68534
|
}
|
|
68291
68535
|
const CONTROL_CHARS = /[\p{Cc}]/u;
|
|
68536
|
+
const PRODUCT_ADDRESS_OVERLAY_EVENT = "browser-address-overlay-event";
|
|
68292
68537
|
const BROWSER_IPC_CHANNELS = [
|
|
68293
68538
|
"browser-state",
|
|
68294
68539
|
"browser-set-chord-focus",
|
|
@@ -68302,6 +68547,7 @@ const BROWSER_IPC_CHANNELS = [
|
|
|
68302
68547
|
"browser-close-tabs",
|
|
68303
68548
|
"browser-activate-tab",
|
|
68304
68549
|
"browser-address-history",
|
|
68550
|
+
"browser-address-overlay-project",
|
|
68305
68551
|
"browser-navigate",
|
|
68306
68552
|
"browser-home",
|
|
68307
68553
|
"browser-reload",
|
|
@@ -68602,6 +68848,21 @@ function registerBrowserIpc(options) {
|
|
|
68602
68848
|
}
|
|
68603
68849
|
);
|
|
68604
68850
|
}
|
|
68851
|
+
if (options.addressOverlayProduct) {
|
|
68852
|
+
electron.ipcMain.handle(
|
|
68853
|
+
"browser-address-overlay-project",
|
|
68854
|
+
(event, payload) => {
|
|
68855
|
+
authorizeSender(event);
|
|
68856
|
+
const project = options.addressOverlayProduct;
|
|
68857
|
+
if (!project) {
|
|
68858
|
+
throw new Error(
|
|
68859
|
+
"address_overlay_unavailable: the overlay projection is not running."
|
|
68860
|
+
);
|
|
68861
|
+
}
|
|
68862
|
+
return project(payload);
|
|
68863
|
+
}
|
|
68864
|
+
);
|
|
68865
|
+
}
|
|
68605
68866
|
if (options.addressOverlayProject) {
|
|
68606
68867
|
electron.ipcMain.handle(
|
|
68607
68868
|
DEV_DRIVER_ADDRESS_OVERLAY_PROJECT,
|
|
@@ -70599,6 +70860,17 @@ function startBrowserHost(options) {
|
|
|
70599
70860
|
* then it reads the current attempt's callback through `bindings` (a retry
|
|
70600
70861
|
* replaces it) rather than capturing a controller here.
|
|
70601
70862
|
*/
|
|
70863
|
+
...options.addressOverlay?.product === true ? {
|
|
70864
|
+
addressOverlayProduct: (payload) => {
|
|
70865
|
+
const project = bindings.addressOverlayProject;
|
|
70866
|
+
if (!project) {
|
|
70867
|
+
throw new Error(
|
|
70868
|
+
"address_overlay_unavailable: the overlay controller is not running."
|
|
70869
|
+
);
|
|
70870
|
+
}
|
|
70871
|
+
return project(payload);
|
|
70872
|
+
}
|
|
70873
|
+
} : {},
|
|
70602
70874
|
...options.addressOverlay?.enabled ? {
|
|
70603
70875
|
addressOverlayProbe: (action, argument) => {
|
|
70604
70876
|
const probe = bindings.addressOverlayProbe;
|
|
@@ -70689,8 +70961,18 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
70689
70961
|
return view;
|
|
70690
70962
|
}, wireView = function(view, tabId) {
|
|
70691
70963
|
const contents = view.webContents;
|
|
70692
|
-
contents.on("focus", () =>
|
|
70964
|
+
contents.on("focus", () => {
|
|
70965
|
+
host.setPageFocused(tabId, true);
|
|
70966
|
+
addressOverlay?.dismissForTab(tabId, "page_focus");
|
|
70967
|
+
});
|
|
70693
70968
|
contents.on("blur", () => host.setPageFocused(tabId, false));
|
|
70969
|
+
contents.on(
|
|
70970
|
+
"did-start-navigation",
|
|
70971
|
+
(_event, _url, isInPlace, isMainFrame) => {
|
|
70972
|
+
if (isMainFrame && !isInPlace)
|
|
70973
|
+
addressOverlay?.dismissForTab(tabId, "navigation");
|
|
70974
|
+
}
|
|
70975
|
+
);
|
|
70694
70976
|
const popupChildren = /* @__PURE__ */ new Set();
|
|
70695
70977
|
contents.setWindowOpenHandler((details) => {
|
|
70696
70978
|
const decision = decidePopup(
|
|
@@ -71010,21 +71292,26 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
71010
71292
|
const views = /* @__PURE__ */ new Map();
|
|
71011
71293
|
const releases = /* @__PURE__ */ new Set();
|
|
71012
71294
|
let stateWriter = null;
|
|
71295
|
+
let notifyAddressOverlayHealth = () => {
|
|
71296
|
+
};
|
|
71013
71297
|
const addressOverlay = options.addressOverlay?.enabled === true ? new AddressOverlayController({
|
|
71014
71298
|
window: options.window,
|
|
71015
71299
|
documentUrl: options.addressOverlay.documentUrl,
|
|
71016
71300
|
javascript: options.addressOverlay.list === true,
|
|
71017
71301
|
visible: options.addressOverlay.visible === true,
|
|
71302
|
+
product: options.addressOverlay.product === true,
|
|
71018
71303
|
// The only consumer of a validated row click: the owner window's own
|
|
71019
71304
|
// renderer. Guarded because a stop can race a queued mouse event.
|
|
71020
71305
|
onEvent: (event) => {
|
|
71021
|
-
if (
|
|
71022
|
-
|
|
71023
|
-
|
|
71024
|
-
|
|
71025
|
-
|
|
71026
|
-
}
|
|
71306
|
+
if (options.window.isDestroyed()) return;
|
|
71307
|
+
options.window.webContents.send(
|
|
71308
|
+
options.addressOverlay?.product === true ? PRODUCT_ADDRESS_OVERLAY_EVENT : DEV_DRIVER_ADDRESS_OVERLAY_EVENT,
|
|
71309
|
+
event
|
|
71310
|
+
);
|
|
71027
71311
|
},
|
|
71312
|
+
// The renderer reads Tier 1 out of the projection, so a child that
|
|
71313
|
+
// fails while the field is already raised must push one.
|
|
71314
|
+
onHealthChange: () => notifyAddressOverlayHealth(),
|
|
71028
71315
|
log: log2,
|
|
71029
71316
|
appMetrics: () => electron.app.getAppMetrics().map((metric) => ({
|
|
71030
71317
|
pid: metric.pid,
|
|
@@ -71076,6 +71363,7 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
71076
71363
|
}
|
|
71077
71364
|
captureSession();
|
|
71078
71365
|
};
|
|
71366
|
+
notifyAddressOverlayHealth = notifyChanged;
|
|
71079
71367
|
const registry = new TabRegistry(
|
|
71080
71368
|
(_createOptions, tabId) => {
|
|
71081
71369
|
const view = buildView(options.window);
|
|
@@ -71146,7 +71434,11 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
71146
71434
|
log: log2,
|
|
71147
71435
|
onChanged: notifyChanged,
|
|
71148
71436
|
facts: () => facts,
|
|
71149
|
-
forgetSiteData: (origin) => clearOriginData(browserSession, origin)
|
|
71437
|
+
forgetSiteData: (origin) => clearOriginData(browserSession, origin),
|
|
71438
|
+
addressOverlayMode: () => addressOverlay ? addressOverlay.mode() : {
|
|
71439
|
+
mode: "suspend",
|
|
71440
|
+
reason: options.addressOverlay?.product === true ? "unavailable" : "platform"
|
|
71441
|
+
}
|
|
71150
71442
|
});
|
|
71151
71443
|
const ownsChrome = () => browserChromeOwnsChord({
|
|
71152
71444
|
logicalFocus: host.chordFocus,
|
|
@@ -82726,6 +83018,12 @@ const addressOverlayGate = resolveAddressOverlayGate({
|
|
|
82726
83018
|
windowMode: windowLaunch.mode,
|
|
82727
83019
|
packaged: electron.app.isPackaged
|
|
82728
83020
|
});
|
|
83021
|
+
const addressOverlayProduct = process.platform === "darwin" && !addressOverlayGate.enabled;
|
|
83022
|
+
if (addressOverlayProduct) {
|
|
83023
|
+
console.log(
|
|
83024
|
+
"[address-overlay] product chrome armed (darwin): popout field over the tab strip, native list child"
|
|
83025
|
+
);
|
|
83026
|
+
}
|
|
82729
83027
|
if (addressOverlayGate.asked) {
|
|
82730
83028
|
console.log(
|
|
82731
83029
|
addressOverlayGate.enabled ? addressOverlayGate.visible ? "[address-overlay] ARMED (S3 VISIBLE probe, inactive window, 120 s cap, no product path)" : `[address-overlay] ARMED (S${addressOverlayGate.list ? "2 probe: mirror list" : "1 probe: native child"}, no product path)` : `[address-overlay] not armed: ${addressOverlayGate.reason}`
|
|
@@ -83148,7 +83446,7 @@ electron.app.whenReady().then(async () => {
|
|
|
83148
83446
|
});
|
|
83149
83447
|
const rendererUrl = rendererDocumentUrl();
|
|
83150
83448
|
const consoleCaptureUrl = consoleCaptureUrlFor(rendererUrl);
|
|
83151
|
-
const addressOverlayDocumentUrl = addressOverlayGate.list ? addressListDocumentUrlFor(rendererUrl) : addressOverlayDocumentUrlFor(rendererUrl);
|
|
83449
|
+
const addressOverlayDocumentUrl = addressOverlayGate.list || addressOverlayProduct ? addressListDocumentUrlFor(rendererUrl) : addressOverlayDocumentUrlFor(rendererUrl);
|
|
83152
83450
|
backendService.observeDesktopFeed(
|
|
83153
83451
|
(frame) => {
|
|
83154
83452
|
if (frame.type === "notification") {
|
|
@@ -83959,11 +84257,12 @@ electron.app.whenReady().then(async () => {
|
|
|
83959
84257
|
consoleCaptureUrl,
|
|
83960
84258
|
// S1: only a gated headless probe arm gets this option at all. The
|
|
83961
84259
|
// URL is this app's own packaged document, not a caller's string.
|
|
83962
|
-
...addressOverlayGate.enabled ? {
|
|
84260
|
+
...addressOverlayGate.enabled || addressOverlayProduct ? {
|
|
83963
84261
|
addressOverlay: {
|
|
83964
84262
|
enabled: true,
|
|
83965
|
-
list: addressOverlayGate.list,
|
|
84263
|
+
list: addressOverlayGate.list || addressOverlayProduct,
|
|
83966
84264
|
visible: addressOverlayGate.visible,
|
|
84265
|
+
product: addressOverlayProduct,
|
|
83967
84266
|
documentUrl: addressOverlayDocumentUrl
|
|
83968
84267
|
}
|
|
83969
84268
|
} : {},
|