@rexvane/piweb 0.3.24 → 0.3.26
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +11 -11
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +5 -5
- package/.next/react-loadable-manifest.json +13 -20
- package/.next/required-server-files.js +2 -1
- package/.next/required-server-files.json +2 -1
- package/.next/routes-manifest.json +6 -8
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/resources/route.js +1 -0
- package/.next/server/app/api/agent/resources/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/resources/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/config/route.js +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/files/route.js +1 -1
- package/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/route.js +1 -1
- package/.next/server/app/api/fs/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route.js +4 -4
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/github/route.js +4 -4
- package/.next/server/app/api/github/route.js.nft.json +1 -1
- package/.next/server/app/api/growth/route.js +1 -1
- package/.next/server/app/api/growth/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/models/defaults/route.js +1 -1
- package/.next/server/app/api/models/defaults/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/pi-settings/route.js +1 -1
- package/.next/server/app/api/pi-settings/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/prompts/route.js +1 -1
- package/.next/server/app/api/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/remote/route.js +4 -3
- package/.next/server/app/api/security/route.js +1 -1
- package/.next/server/app/api/security/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/import/route.js +2 -2
- package/.next/server/app/api/sessions/import/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route.js +2 -2
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/web-auth/route.js +2 -2
- package/.next/server/app/api/workspaces/route.js +1 -1
- package/.next/server/app/api/workspaces/route.js.nft.json +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -7
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -7
- package/.next/server/app/index.segments/_full.segment.rsc +6 -7
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -3
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +11 -11
- package/.next/server/chunks/3924.js +3 -3
- package/.next/server/chunks/538.js +1 -1
- package/.next/server/chunks/620.js +1 -0
- package/.next/server/chunks/6229.js +1 -1
- package/.next/server/chunks/7496.js +1 -1
- package/.next/server/chunks/7662.js +2 -2
- package/.next/server/chunks/8686.js +1 -1
- package/.next/server/functions-config-manifest.json +1 -2
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/preview-props.json +3 -3
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/QJCtqgDKzGS2BdKABd9ch/_buildManifest.js +1 -0
- package/.next/static/chunks/2577.86c8538fbf05a8b2.js +1 -0
- package/.next/static/chunks/2716.fa561519675a3ff1.js +1 -0
- package/.next/static/chunks/2906.8a0e09bb47605cf1.js +1 -0
- package/.next/static/chunks/4673.ea36e55005c0f82f.js +1 -0
- package/.next/static/chunks/4686-4dc565817a160351.js +1 -0
- package/.next/static/chunks/4778.0d2c5d75b791d352.js +1 -0
- package/.next/static/chunks/{618.949981da99be7182.js → 618.9a22656b863f242b.js} +2 -2
- package/.next/static/chunks/app/_global-error/page-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/tree/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/resources/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/config/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/files/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/fs/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/git/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/github/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/growth/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/health/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/models/defaults/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/models/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/pi-settings/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/prompts/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/remote/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/security/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/skills/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/update/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/version/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/workspaces/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/page-71f2d3b3ed864b3d.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/webpack-ffc09b5fcc8aaa6d.js +1 -0
- package/.next/static/css/014eb1f21414e615.css +1 -0
- package/.next/static/css/56b129a13637fcfd.css +1 -0
- package/.next/static/css/7e3caf797e4cb19a.css +1 -0
- package/.next/types/app/api/agent/{[id]/side-chat → resources}/route.ts +3 -3
- package/.next/types/routes.d.ts +2 -2
- package/.next/types/validator.ts +9 -9
- package/README.md +1 -1
- package/next.config.ts +1 -1
- package/package.json +9 -9
- package/scripts/apply-global.mjs +87 -0
- package/scripts/launcher.mjs +21 -0
- package/scripts/testing/prepare-sdk-tools.mjs +19 -0
- package/src/app/api/agent/new/route.ts +2 -1
- package/src/app/api/agent/resources/route.ts +18 -0
- package/src/app/api/models/route.ts +22 -1
- package/src/app/api/plugins/route.ts +3 -2
- package/src/app/api/prompts/route.ts +3 -2
- package/src/app/api/remote/route.ts +22 -4
- package/src/app/api/sessions/[id]/export/route.ts +3 -1
- package/src/app/api/skills/route.ts +3 -2
- package/src/app/globals.css +1002 -1765
- package/src/components/AppShell.tsx +128 -93
- package/src/components/ChatInput.tsx +177 -98
- package/src/components/ChatWindow.tsx +189 -56
- package/src/components/ContextMeter.tsx +33 -9
- package/src/components/CustomSelect.module.css +142 -0
- package/src/components/CustomSelect.tsx +157 -0
- package/src/components/DrawerPanel.tsx +1 -1
- package/src/components/ExtensionUI.tsx +9 -3
- package/src/components/FileViewer.tsx +24 -21
- package/src/components/GitPanel.tsx +35 -13
- package/src/components/GrowthTree.tsx +6 -2
- package/src/components/ImageViewer.tsx +72 -0
- package/src/components/MarkdownBlock.tsx +67 -96
- package/src/components/ModelSelector.tsx +36 -39
- package/src/components/PiMark.tsx +76 -41
- package/src/components/PreviewImage.tsx +33 -0
- package/src/components/ProjectPanel.tsx +8 -5
- package/src/components/PromptPanel.tsx +85 -20
- package/src/components/ProviderSetupModal.module.css +12 -11
- package/src/components/ProviderSetupModal.tsx +107 -36
- package/src/components/RemoteSection.tsx +53 -2
- package/src/components/SessionImportSection.tsx +30 -15
- package/src/components/SessionSidebar.tsx +72 -62
- package/src/components/SettingsPanel.tsx +49 -151
- package/src/components/TrajectoryAnalyzer.module.css +26 -11
- package/src/components/TrajectoryView.tsx +11 -3
- package/src/components/chat/markdown-actions.tsx +23 -0
- package/src/components/composer/ComposerFiles.tsx +224 -0
- package/src/components/composer/ComposerImages.tsx +59 -127
- package/src/hooks/usePiWeb.ts +47 -2
- package/src/i18n.tsx +62 -80
- package/src/lib/agent-manager.ts +365 -33
- package/src/lib/chat/file-path.ts +54 -0
- package/src/lib/chat/skill-expansion.ts +51 -0
- package/src/lib/extension-ui.ts +25 -1
- package/src/lib/font.ts +37 -39
- package/src/lib/git-service.ts +4 -2
- package/src/lib/growth-turns.ts +3 -1
- package/src/lib/model-draft.ts +69 -2
- package/src/lib/models-service.ts +53 -3
- package/src/lib/pi.ts +2 -2
- package/src/lib/remote/assets.json +1 -1
- package/src/lib/remote/supervisor.ts +48 -5
- package/src/lib/security-service.ts +2 -1
- package/src/lib/session-reader.ts +25 -13
- package/src/lib/session-retention.ts +11 -8
- package/src/lib/skills-service.ts +2 -1
- package/src/lib/slash-command-token.ts +14 -0
- package/src/lib/trajectory.ts +111 -15
- package/src/lib/types.ts +28 -3
- package/src/lib/update-service.ts +29 -9
- package/src/lib/workspace-store.ts +36 -1
- package/.next/server/app/api/agent/[id]/side-chat/route.js +0 -5
- package/.next/server/app/api/agent/[id]/side-chat/route.js.nft.json +0 -1
- package/.next/server/app/api/agent/[id]/side-chat/route_client-reference-manifest.js +0 -1
- package/.next/server/chunks/3421.js +0 -1
- package/.next/static/chunks/2716.44fdf1b21454b961.js +0 -1
- package/.next/static/chunks/4673.e261707dce391be7.js +0 -1
- package/.next/static/chunks/4686-0cd87513f9ea3538.js +0 -1
- package/.next/static/chunks/4778.eddd3a5813f85824.js +0 -1
- package/.next/static/chunks/7411.5f79671208209b13.js +0 -1
- package/.next/static/chunks/8552.25c39ef4c995eba0.js +0 -1
- package/.next/static/chunks/app/_global-error/page-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/side-chat/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/tree/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/config/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/files/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/fs/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/git/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/github/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/growth/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/health/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/models/defaults/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/models/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/pi-settings/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/prompts/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/remote/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/security/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/skills/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/update/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/version/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/web-auth/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/api/workspaces/route-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/app/page-dc3cb41d91c7432e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbaaee0d7aacb85a.js +0 -1
- package/.next/static/chunks/webpack-2ac3d76b81895f5b.js +0 -1
- package/.next/static/css/08815507594e8b8d.css +0 -1
- package/.next/static/css/9fc559c2c4ad1d0f.css +0 -1
- package/.next/static/css/c6e2227c36ec2fd6.css +0 -1
- package/.next/static/css/f15a853af8b5127f.css +0 -1
- package/.next/static/lvKCJmjFj8LuqSojRVLRF/_buildManifest.js +0 -1
- package/src/app/api/agent/[id]/side-chat/route.ts +0 -77
- package/src/components/side-chat/SideChatPanel.module.css +0 -131
- package/src/components/side-chat/SideChatPanel.tsx +0 -189
- package/src/components/side-chat/icons.tsx +0 -8
- package/src/components/side-chat/request-history.ts +0 -29
- package/src/components/side-chat/store.ts +0 -248
- package/src/lib/chat/stream-settings.ts +0 -192
- package/src/lib/side-chat/context.ts +0 -123
- package/src/lib/side-chat/service.ts +0 -191
- package/src/lib/side-chat/types.ts +0 -61
- /package/.next/static/{lvKCJmjFj8LuqSojRVLRF → QJCtqgDKzGS2BdKABd9ch}/_ssgManifest.js +0 -0
package/src/i18n.tsx
CHANGED
|
@@ -34,6 +34,15 @@ const zh = {
|
|
|
34
34
|
compacting: "正在压缩上下文…",
|
|
35
35
|
compactionComplete: "上下文压缩完成",
|
|
36
36
|
compactionFailed: "上下文压缩失败",
|
|
37
|
+
compactedTitle: "上下文已压缩",
|
|
38
|
+
compactedTitleTokens: "上下文已压缩 · 压缩前约 {tokens} tokens",
|
|
39
|
+
compactedHint: "以上内容模型只看得到摘要",
|
|
40
|
+
branchSummaryTitle: "分支摘要",
|
|
41
|
+
branchSummaryHint: "切换分支时,离开的那条分支以摘要形式发给模型",
|
|
42
|
+
showSummary: "查看摘要",
|
|
43
|
+
hideSummary: "收起摘要",
|
|
44
|
+
externalSessionReloaded: "终端在这个会话里写了 {n} 条新内容,已重新载入",
|
|
45
|
+
externalSessionWriting: "终端也在写这个会话({n} 条)。两边同时写会分叉,这一轮结束后自动重新载入",
|
|
37
46
|
pickWorkspaceFirst: "请先选择工作区",
|
|
38
47
|
capacityFields: "容量",
|
|
39
48
|
contextWindowLabel: "上下文窗口",
|
|
@@ -49,9 +58,15 @@ const zh = {
|
|
|
49
58
|
visionInputImageHint: "勾上表示该模型能收图(写进 models.json 的 input);不勾则按纯文本处理",
|
|
50
59
|
visionOn: "有视觉",
|
|
51
60
|
visionOff: "纯文本",
|
|
61
|
+
reasoningLabel: "推理",
|
|
62
|
+
reasoningHint: "该模型是否支持推理(思考档位)。未声明时 pi 按不支持处理,模型选择器里的思考档位会整个消失",
|
|
63
|
+
reasoningUnset: "未声明",
|
|
64
|
+
reasoningOn: "支持推理",
|
|
65
|
+
reasoningOff: "不支持",
|
|
52
66
|
imagePreview: "点击放大预览",
|
|
53
67
|
imageViewer: "图片预览",
|
|
54
68
|
imageClearAll: "清空图片",
|
|
69
|
+
filesClearAll: "清空文件",
|
|
55
70
|
imagePrev: "上一张",
|
|
56
71
|
imageNext: "下一张",
|
|
57
72
|
chipExpandMore: "展开 {n}",
|
|
@@ -82,6 +97,8 @@ const zh = {
|
|
|
82
97
|
stepSearched: "搜索",
|
|
83
98
|
stepEdited: "编辑了",
|
|
84
99
|
stepWrote: "写入了",
|
|
100
|
+
skillStep: "使用技能",
|
|
101
|
+
skillStepTitle: "技能",
|
|
85
102
|
resultRead: "读取了 {n} 行",
|
|
86
103
|
resultFound: "找到 {n} 处",
|
|
87
104
|
resultWrote: "{n} 行",
|
|
@@ -207,6 +224,8 @@ const zh = {
|
|
|
207
224
|
archiveSession: "归档会话",
|
|
208
225
|
unarchiveSession: "取消归档",
|
|
209
226
|
archivedSessions: "已归档",
|
|
227
|
+
archiveRetentionHint: "归档满 30 天自动删除",
|
|
228
|
+
archiveRetentionDetail: "归档的会话从归档那天起保留 30 天,之后自动删除;归档后又用过的,从最后一次使用起算。打开中的会话不会被删。",
|
|
210
229
|
deleteAllSessions: "删除全部会话",
|
|
211
230
|
deleteAllConfirm: "删除此工作区的全部会话?不可恢复。",
|
|
212
231
|
contextInject: "上下文注入",
|
|
@@ -320,7 +339,6 @@ const zh = {
|
|
|
320
339
|
contextUnknown: "上下文用量未知",
|
|
321
340
|
contextEstimated: "上下文估算",
|
|
322
341
|
contextMeasured: "上下文用量",
|
|
323
|
-
contextBackground: "Main Conversation",
|
|
324
342
|
contextApiInput: "最近请求输入(API)",
|
|
325
343
|
contextChars: "字符",
|
|
326
344
|
contextSystem: "系统提示词",
|
|
@@ -468,24 +486,15 @@ const zh = {
|
|
|
468
486
|
drawerPanel: "右侧抽屉",
|
|
469
487
|
drawerSections: "抽屉入口",
|
|
470
488
|
drawerPrompts: "提示词",
|
|
471
|
-
sideChat: "旁聊",
|
|
472
|
-
sideChatModel: "旁聊模型",
|
|
473
|
-
sideChatFollowMain: "跟随主会话",
|
|
474
|
-
sideChatNew: "新旁聊",
|
|
475
|
-
sideChatHistory: "旁聊记录",
|
|
476
|
-
sideChatMessages: "旁聊消息",
|
|
477
|
-
sideChatQuestion: "旁聊提问",
|
|
478
|
-
sideChatPlaceholder: "读到哪里有疑问,就在这里问…",
|
|
479
|
-
sideChatEmpty: "边读边问,主会话停在原处",
|
|
480
|
-
sideChatHint: "参考主会话,问答独立。记录仅保存在此浏览器。",
|
|
481
|
-
sideChatPickSession: "打开一个主会话后,就可以旁聊",
|
|
482
|
-
sideChatAnswering: "正在回答…",
|
|
483
|
-
sideChatContextTruncated: "背景较长,本次仅参考了部分主会话或旁聊记录。",
|
|
484
|
-
sideChatLengthLimited: "已达到本次输出上限,可以继续追问。",
|
|
485
|
-
sideChatStorageFailed: "浏览器未能保存旁聊记录,请先保留需要的内容。",
|
|
486
489
|
setPlugins: "插件",
|
|
487
490
|
setRemote: "远程连接",
|
|
488
491
|
remoteBuiltin: "内置插件",
|
|
492
|
+
remotePluginToggle: "启用内置远程连接插件",
|
|
493
|
+
remotePluginOn: "已启用",
|
|
494
|
+
remotePluginOff: "已关闭",
|
|
495
|
+
remotePluginHint: "关闭后不再注入手机排版、也不能开公网入口;局域网入口保留为纯转发,你自己的插件或自建反代指向同一个端口照旧可用。",
|
|
496
|
+
remoteLanPlain: "纯转发(未注入手机排版)",
|
|
497
|
+
remotePublicNeedsPlugin: "需要先启用内置插件",
|
|
489
498
|
remoteLanTitle: "局域网入口",
|
|
490
499
|
remoteLanHint: "同一个 WiFi 下的设备直接打开下面地址即可,手机排版已适配。默认开启。链接带登录令牌:点「复制」发到手机,打开就直接登录;令牌即凭据,别发给别人。",
|
|
491
500
|
remotePublicTitle: "公网入口",
|
|
@@ -523,8 +532,6 @@ const zh = {
|
|
|
523
532
|
fontChatSizeDesc: "消息正文、用户气泡与输入框",
|
|
524
533
|
fontUiFamily: "界面字体族",
|
|
525
534
|
fontUiFamilyDesc: "侧栏、按钮、标签等界面文字使用的字体",
|
|
526
|
-
fontMonoFamily: "代码字体族",
|
|
527
|
-
fontMonoFamilyDesc: "代码块、diff、行内代码使用的等宽字体",
|
|
528
535
|
fontCustom: "自定义…",
|
|
529
536
|
fontCustomPlaceholder: "输入字体栈,如 Fira Code, monospace",
|
|
530
537
|
language: "界面语言",
|
|
@@ -543,6 +550,11 @@ const zh = {
|
|
|
543
550
|
modelConfigReopen: "模型配置已保存并立即生效;正在回答的会话在本轮结束后生效。",
|
|
544
551
|
customModelIdentityNotice: "自定义模型 ID 只是发往该 API 地址的路由名;PiWeb 不会自动下载、接入或识别本机 Ollama 模型。",
|
|
545
552
|
customApiKeyHint: "可留空改用 auth.json;指向本机/私网的无鉴权服务(Ollama 等)保存时自动填占位值。",
|
|
553
|
+
customHeaders: "自定义请求头",
|
|
554
|
+
customHeadersHint: "需要额外认证头的网关在这里填;探测模型目录与发消息都会带上。值支持 $ENV 或 ${ENV} 读环境变量、!命令 取命令输出,与 models.json 的写法一致。",
|
|
555
|
+
customHeaderName: "名字,如 X-Api-Version",
|
|
556
|
+
customHeaderValue: "值,如 $MY_GATEWAY_TOKEN",
|
|
557
|
+
customHeaderAdd: "添加请求头",
|
|
546
558
|
modelsTitle: "模型",
|
|
547
559
|
modelsDesc: "填入各提供方的 API 密钥即可使用其模型。",
|
|
548
560
|
addProvider: "添加提供方",
|
|
@@ -571,8 +583,6 @@ const zh = {
|
|
|
571
583
|
displayNameOptional: "显示名称(可选)",
|
|
572
584
|
modelCatalog: "模型目录",
|
|
573
585
|
discoverModels: "获取可用模型",
|
|
574
|
-
allowPrivateDiscovery: "允许本机/私网",
|
|
575
|
-
allowPrivateHint: "模型地址指向本机或私有网络(如 Ollama、LM Studio、one-api 本地网关)时勾选,本次探测放行;发消息不受此限制",
|
|
576
586
|
discoveringModels: "获取中...",
|
|
577
587
|
autoDiscovering: "正在自动识别模型…",
|
|
578
588
|
autoDiscovered: "已自动识别 {n} 个模型(端点报了容量与视觉的已一并填好)",
|
|
@@ -646,6 +656,7 @@ const zh = {
|
|
|
646
656
|
uninstall: "卸载",
|
|
647
657
|
confirmUninstallPackage: "确定卸载“{source}”吗?",
|
|
648
658
|
update: "更新",
|
|
659
|
+
updateNeedsEnable: "已停用的插件要先启用才能更新",
|
|
649
660
|
pluginConfig: "插件配置",
|
|
650
661
|
pluginList: "插件列表",
|
|
651
662
|
pluginPageDesc: "配置和查看本部署已安装的插件。",
|
|
@@ -742,26 +753,6 @@ const zh = {
|
|
|
742
753
|
viewerOpenFolder: "打开文件夹预览",
|
|
743
754
|
viewerDirHint: "文件夹:共 {n} 项(已按 .gitignore 过滤)",
|
|
744
755
|
viewerDirMore: "加载更多",
|
|
745
|
-
// 流式输出
|
|
746
|
-
streamStyleTitle: "流式输出样式",
|
|
747
|
-
streamStyleDesc: "回答逐字出现的方式;改完立刻生效,正在流出的回答也一并换",
|
|
748
|
-
streamStyleSmooth: "平滑",
|
|
749
|
-
streamStyleSmoothDesc: "匀速长出,不跳字",
|
|
750
|
-
streamStyleTypewriter: "打字机",
|
|
751
|
-
streamStyleTypewriterDesc: "固定节奏逐字敲出",
|
|
752
|
-
streamStyleFade: "渐显",
|
|
753
|
-
streamStyleFadeDesc: "整词推进,段落柔和淡入",
|
|
754
|
-
streamStyleInstant: "即时",
|
|
755
|
-
streamStyleInstantDesc: "立即显示,不做平滑",
|
|
756
|
-
streamSpeedTitle: "推进速度",
|
|
757
|
-
streamSpeedDesc: "平滑 / 打字机 / 渐显的节奏快慢;即时样式不受影响",
|
|
758
|
-
streamSpeed1: "慢",
|
|
759
|
-
streamSpeed2: "较慢",
|
|
760
|
-
streamSpeed3: "标准",
|
|
761
|
-
streamSpeed4: "快",
|
|
762
|
-
streamSpeed5: "极快",
|
|
763
|
-
streamCaretTitle: "打字光标",
|
|
764
|
-
streamCaretDesc: "流式期间在文字末尾显示闪烁光标",
|
|
765
756
|
} as const;
|
|
766
757
|
|
|
767
758
|
type Dict = { [K in keyof typeof zh]: string };
|
|
@@ -793,6 +784,15 @@ const en: Dict = {
|
|
|
793
784
|
compacting: "Compacting context…",
|
|
794
785
|
compactionComplete: "Context compaction complete",
|
|
795
786
|
compactionFailed: "Context compaction failed",
|
|
787
|
+
compactedTitle: "Context compacted",
|
|
788
|
+
compactedTitleTokens: "Context compacted · about {tokens} tokens before",
|
|
789
|
+
compactedHint: "The model only sees a summary of everything above",
|
|
790
|
+
branchSummaryTitle: "Branch summary",
|
|
791
|
+
branchSummaryHint: "The branch you left is sent to the model as a summary",
|
|
792
|
+
showSummary: "Show summary",
|
|
793
|
+
hideSummary: "Hide summary",
|
|
794
|
+
externalSessionReloaded: "The terminal added {n} new entries to this session — reloaded",
|
|
795
|
+
externalSessionWriting: "The terminal is also writing to this session ({n} entries). Writing from both sides forks it; it reloads after this turn",
|
|
796
796
|
pickWorkspaceFirst: "Select a workspace first",
|
|
797
797
|
capacityFields: "Capacities",
|
|
798
798
|
contextWindowLabel: "Context window",
|
|
@@ -808,9 +808,15 @@ const en: Dict = {
|
|
|
808
808
|
visionInputImageHint: "Checked means this model accepts images (written into models.json input); unchecked is treated as text-only",
|
|
809
809
|
visionOn: "Vision",
|
|
810
810
|
visionOff: "Text only",
|
|
811
|
+
reasoningLabel: "Reasoning",
|
|
812
|
+
reasoningHint: "Whether this model supports reasoning. Left unset, pi treats it as unsupported and the thinking levels disappear from the model picker.",
|
|
813
|
+
reasoningUnset: "Not declared",
|
|
814
|
+
reasoningOn: "Reasoning",
|
|
815
|
+
reasoningOff: "No reasoning",
|
|
811
816
|
imagePreview: "Click to preview",
|
|
812
817
|
imageViewer: "Image preview",
|
|
813
818
|
imageClearAll: "Clear images",
|
|
819
|
+
filesClearAll: "Clear files",
|
|
814
820
|
imagePrev: "Previous image",
|
|
815
821
|
imageNext: "Next image",
|
|
816
822
|
chipExpandMore: "Show {n} more",
|
|
@@ -841,6 +847,8 @@ const en: Dict = {
|
|
|
841
847
|
stepSearched: "Searched",
|
|
842
848
|
stepEdited: "Edited",
|
|
843
849
|
stepWrote: "Wrote",
|
|
850
|
+
skillStep: "Used skill",
|
|
851
|
+
skillStepTitle: "Skill",
|
|
844
852
|
resultRead: "Read {n} lines",
|
|
845
853
|
resultFound: "Found {n} matches",
|
|
846
854
|
resultWrote: "{n} lines",
|
|
@@ -966,6 +974,8 @@ const en: Dict = {
|
|
|
966
974
|
archiveSession: "Archive session",
|
|
967
975
|
unarchiveSession: "Unarchive",
|
|
968
976
|
archivedSessions: "Archived",
|
|
977
|
+
archiveRetentionHint: "Deleted 30 days after archiving",
|
|
978
|
+
archiveRetentionDetail: "Archived sessions are kept for 30 days from the day they were archived, then deleted automatically. If you use one after archiving, the 30 days restart from its last use. Open sessions are never deleted.",
|
|
969
979
|
deleteAllSessions: "Delete all sessions",
|
|
970
980
|
deleteAllConfirm: "Delete ALL sessions in this workspace? This cannot be undone.",
|
|
971
981
|
contextInject: "Context",
|
|
@@ -1077,7 +1087,6 @@ const en: Dict = {
|
|
|
1077
1087
|
contextUnknown: "Context usage unknown",
|
|
1078
1088
|
contextEstimated: "estimated context usage",
|
|
1079
1089
|
contextMeasured: "context usage",
|
|
1080
|
-
contextBackground: "Main Conversation",
|
|
1081
1090
|
contextApiInput: "Last request input (API)",
|
|
1082
1091
|
contextChars: "chars",
|
|
1083
1092
|
contextSystem: "System prompt",
|
|
@@ -1220,24 +1229,15 @@ const en: Dict = {
|
|
|
1220
1229
|
drawerPanel: "Drawer",
|
|
1221
1230
|
drawerSections: "Drawer sections",
|
|
1222
1231
|
drawerPrompts: "Prompts",
|
|
1223
|
-
sideChat: "Side chat",
|
|
1224
|
-
sideChatModel: "Side-chat model",
|
|
1225
|
-
sideChatFollowMain: "Follow main chat",
|
|
1226
|
-
sideChatNew: "New side chat",
|
|
1227
|
-
sideChatHistory: "Side-chat history",
|
|
1228
|
-
sideChatMessages: "Side-chat messages",
|
|
1229
|
-
sideChatQuestion: "Side-chat question",
|
|
1230
|
-
sideChatPlaceholder: "Ask about anything you're reading…",
|
|
1231
|
-
sideChatEmpty: "Ask as you read. Keep your place.",
|
|
1232
|
-
sideChatHint: "Uses the main chat as background. Separate answers, saved only in this browser.",
|
|
1233
|
-
sideChatPickSession: "Open a main conversation to start a side chat",
|
|
1234
|
-
sideChatAnswering: "Answering…",
|
|
1235
|
-
sideChatContextTruncated: "The background is long; this answer uses part of the main or side-chat history.",
|
|
1236
|
-
sideChatLengthLimited: "This answer reached its output limit. You can ask it to continue.",
|
|
1237
|
-
sideChatStorageFailed: "Your browser could not save the side chat. Keep a copy of anything you need.",
|
|
1238
1232
|
setPlugins: "Plugins",
|
|
1239
1233
|
setRemote: "Remote access",
|
|
1240
1234
|
remoteBuiltin: "Built-in plugin",
|
|
1235
|
+
remotePluginToggle: "Enable the built-in remote access plugin",
|
|
1236
|
+
remotePluginOn: "Enabled",
|
|
1237
|
+
remotePluginOff: "Disabled",
|
|
1238
|
+
remotePluginHint: "When disabled, PiWeb stops injecting the mobile layout and cannot open the public tunnel. The local-network entry stays as a plain forwarder, so your own plugin or reverse proxy can keep pointing at the same port.",
|
|
1239
|
+
remoteLanPlain: "plain forwarding (no mobile layout injected)",
|
|
1240
|
+
remotePublicNeedsPlugin: "Enable the built-in plugin first",
|
|
1241
1241
|
remoteLanTitle: "Local network",
|
|
1242
1242
|
remoteLanHint: "Devices on the same Wi-Fi can open the address below; the mobile layout is already applied. On by default. Links carry the login token: copy one to your phone and it signs in directly. The token is a credential — don't share it.",
|
|
1243
1243
|
remotePublicTitle: "Public access",
|
|
@@ -1275,8 +1275,6 @@ const en: Dict = {
|
|
|
1275
1275
|
fontChatSizeDesc: "Message body, user bubbles and the composer",
|
|
1276
1276
|
fontUiFamily: "UI font family",
|
|
1277
1277
|
fontUiFamilyDesc: "Font used by the sidebar, buttons, labels and other UI text",
|
|
1278
|
-
fontMonoFamily: "Code font family",
|
|
1279
|
-
fontMonoFamilyDesc: "Monospace font used by code blocks, diffs and inline code",
|
|
1280
1278
|
fontCustom: "Custom…",
|
|
1281
1279
|
fontCustomPlaceholder: "Font stack, e.g. Fira Code, monospace",
|
|
1282
1280
|
language: "Language",
|
|
@@ -1295,6 +1293,11 @@ const en: Dict = {
|
|
|
1295
1293
|
modelConfigReopen: "Model configuration saved and applied. Sessions that are answering pick it up after the current turn.",
|
|
1296
1294
|
customModelIdentityNotice: "A custom model ID is only a route name sent to that API endpoint. PiWeb does not automatically download, attach, or identify local Ollama models.",
|
|
1297
1295
|
customApiKeyHint: "Leave blank to use auth.json. Keyless local/private services (Ollama etc.) get a placeholder key automatically on save.",
|
|
1296
|
+
customHeaders: "Custom headers",
|
|
1297
|
+
customHeadersHint: "For gateways that need extra auth headers. They are sent for both model discovery and chat requests. Values accept $ENV / ${ENV} for environment variables and a leading !command, the same syntax as models.json.",
|
|
1298
|
+
customHeaderName: "Name, e.g. X-Api-Version",
|
|
1299
|
+
customHeaderValue: "Value, e.g. $MY_GATEWAY_TOKEN",
|
|
1300
|
+
customHeaderAdd: "Add header",
|
|
1298
1301
|
modelsTitle: "Models",
|
|
1299
1302
|
modelsDesc: "Enter an API key for each provider to use its models.",
|
|
1300
1303
|
addProvider: "Add provider",
|
|
@@ -1323,8 +1326,6 @@ const en: Dict = {
|
|
|
1323
1326
|
displayNameOptional: "Display name (optional)",
|
|
1324
1327
|
modelCatalog: "Model catalog",
|
|
1325
1328
|
discoverModels: "Fetch available models",
|
|
1326
|
-
allowPrivateDiscovery: "Allow local/private",
|
|
1327
|
-
allowPrivateHint: "Check this when the model address points to loopback or a private network (Ollama, LM Studio, one-api gateways) to allow this probe; chat requests are not affected",
|
|
1328
1329
|
discoveringModels: "Fetching...",
|
|
1329
1330
|
autoDiscovering: "Detecting models…",
|
|
1330
1331
|
autoDiscovered: "Detected {n} models (capacity and vision filled in where the endpoint reports them)",
|
|
@@ -1398,6 +1399,7 @@ const en: Dict = {
|
|
|
1398
1399
|
uninstall: "Uninstall",
|
|
1399
1400
|
confirmUninstallPackage: "Uninstall \"{source}\"?",
|
|
1400
1401
|
update: "Update",
|
|
1402
|
+
updateNeedsEnable: "Enable this plugin before updating it",
|
|
1401
1403
|
pluginConfig: "Plugin config",
|
|
1402
1404
|
pluginList: "Plugin list",
|
|
1403
1405
|
pluginPageDesc: "Configure and view installed plugins for this deployment.",
|
|
@@ -1493,26 +1495,6 @@ const en: Dict = {
|
|
|
1493
1495
|
viewerOpenFolder: "Preview folder",
|
|
1494
1496
|
viewerDirHint: "Folder: {n} items (ignored files hidden)",
|
|
1495
1497
|
viewerDirMore: "Load more",
|
|
1496
|
-
// Streaming text
|
|
1497
|
-
streamStyleTitle: "Streaming text",
|
|
1498
|
-
streamStyleDesc: "How the answer appears while it arrives; applies to the stream already running",
|
|
1499
|
-
streamStyleSmooth: "Smooth",
|
|
1500
|
-
streamStyleSmoothDesc: "Even pace, no jumps",
|
|
1501
|
-
streamStyleTypewriter: "Typewriter",
|
|
1502
|
-
streamStyleTypewriterDesc: "Fixed cadence, character by character",
|
|
1503
|
-
streamStyleFade: "Fade in",
|
|
1504
|
-
streamStyleFadeDesc: "Whole words, paragraphs fade in",
|
|
1505
|
-
streamStyleInstant: "Instant",
|
|
1506
|
-
streamStyleInstantDesc: "Show immediately, no smoothing",
|
|
1507
|
-
streamSpeedTitle: "Streaming speed",
|
|
1508
|
-
streamSpeedDesc: "Cadence for Smooth / Typewriter / Fade in; Instant ignores it",
|
|
1509
|
-
streamSpeed1: "Slow",
|
|
1510
|
-
streamSpeed2: "Relaxed",
|
|
1511
|
-
streamSpeed3: "Standard",
|
|
1512
|
-
streamSpeed4: "Fast",
|
|
1513
|
-
streamSpeed5: "Fastest",
|
|
1514
|
-
streamCaretTitle: "Typing caret",
|
|
1515
|
-
streamCaretDesc: "Blinking caret at the end of the text while streaming",
|
|
1516
1498
|
};
|
|
1517
1499
|
|
|
1518
1500
|
const dicts: Record<string, Dict> = { zh, en };
|