@lemonriver/core 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{build-f-fM2ZY4.js → build-Df_xwIpg.js} +1 -1
- package/dist/cli/bin.js +4 -4
- package/dist/{config-DO45GU3e.js → config-BjWCLoMQ.js} +2343 -363
- package/dist/{config-B6JaKJM4.d.ts → config-rMGCkz6i.d.ts} +6 -2
- package/dist/{dev-CqS2xpgE.js → dev-Ctsx9IeO.js} +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -3
- package/dist/locale/index.d.ts +5 -2
- package/dist/locale/index.js +2 -2
- package/dist/{preview-BihgMlEl.js → preview-CJgcqsPk.js} +1 -1
- package/dist/{types-BjW4glip.d.ts → types-8VUyA2bu.d.ts} +133 -5
- package/dist/{update-C_R0ycVC.js → update-BKOA3Z6o.js} +153 -21
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.js +1 -1
- package/dist/{zh-tw-Ci0jK8eg.js → zh-tw-CeLrYwRE.js} +1178 -25
- package/package.json +13 -6
- package/skills/apply-comments/SKILL.md +10 -6
- package/skills/create-slide/SKILL.md +2 -0
- package/skills/current-slide/SKILL.md +1 -0
- package/skills/slide-authoring/SKILL.md +31 -1
- package/src/agent/prompt.ts +141 -0
- package/src/agent/provider.ts +123 -0
- package/src/agent/types.ts +151 -0
- package/src/app/app.tsx +2 -0
- package/src/app/assets/open-slide.svg +39 -0
- package/src/app/components/agent/agent-dock.tsx +35 -0
- package/src/app/components/agent/agent-markdown.tsx +45 -0
- package/src/app/components/agent/agent-panel.tsx +692 -0
- package/src/app/components/agent/agent-presence.tsx +74 -0
- package/src/app/components/agent/composer.tsx +120 -0
- package/src/app/components/agent/connect-view.tsx +184 -0
- package/src/app/components/agent/history-view.tsx +135 -0
- package/src/app/components/agent/provider-logo.tsx +34 -0
- package/src/app/components/agent/transcript.tsx +609 -0
- package/src/app/components/board/board-canvas.tsx +143 -12
- package/src/app/components/board/board.css +51 -0
- package/src/app/components/board/layout.test.ts +53 -1
- package/src/app/components/board/layout.ts +50 -2
- package/src/app/components/board/page-node.tsx +287 -13
- package/src/app/components/board/use-board-cards.ts +210 -0
- package/src/app/components/board/use-page-order.ts +17 -9
- package/src/app/components/command/slide-command-menu.tsx +10 -0
- package/src/app/components/icon-switcher-indicator.tsx +1 -1
- package/src/app/components/inspector/comment-layer.tsx +1011 -0
- package/src/app/components/inspector/image-crop-dialog.tsx +1 -5
- package/src/app/components/inspector/inspect-overlay.tsx +2 -39
- package/src/app/components/inspector/inspector-panel.tsx +10 -93
- package/src/app/components/inspector/inspector-provider.tsx +121 -47
- package/src/app/components/panel/editor-sidebar.tsx +85 -16
- package/src/app/components/panel/panel-shell.tsx +2 -2
- package/src/app/components/panel/resize-handle.tsx +129 -0
- package/src/app/components/player.tsx +0 -1
- package/src/app/components/preview-step-host.tsx +16 -0
- package/src/app/components/sidebar/sidebar.tsx +2 -2
- package/src/app/components/style-panel/style-panel.tsx +3 -2
- package/src/app/components/thumbnail-rail.tsx +76 -1
- package/src/app/favicon.ico +0 -0
- package/src/app/favicon.svg +39 -0
- package/src/app/index.html +2 -1
- package/src/app/lib/agent/use-agent.ts +543 -0
- package/src/app/lib/inspector/freeze-motion.ts +61 -0
- package/src/app/lib/inspector/use-comments.ts +32 -3
- package/src/app/lib/locale-store.ts +6 -1
- package/src/app/lib/print-ready.ts +9 -6
- package/src/app/lib/use-auto-grow.ts +15 -0
- package/src/app/lib/utils.ts +4 -0
- package/src/app/routes/board.tsx +48 -11
- package/src/app/routes/home.tsx +43 -7
- package/src/app/routes/presenter.tsx +1 -16
- package/src/app/routes/preview.tsx +169 -0
- package/src/app/routes/slide.tsx +221 -173
- package/src/app/styles.css +234 -80
- package/src/editing/placeholder-id.ts +1 -0
- package/src/locale/en.ts +127 -5
- package/src/locale/es.ts +692 -0
- package/src/locale/index.ts +1 -0
- package/src/locale/ja.ts +120 -6
- package/src/locale/types.ts +132 -5
- package/src/locale/zh-cn.ts +117 -5
- package/src/locale/zh-tw.ts +117 -5
- package/src/app/assets/open-slide.png +0 -0
- package/src/app/components/inspector/comment-widget.tsx +0 -119
package/src/locale/index.ts
CHANGED
package/src/locale/ja.ts
CHANGED
|
@@ -96,6 +96,7 @@ export const ja: Locale = {
|
|
|
96
96
|
},
|
|
97
97
|
|
|
98
98
|
slide: {
|
|
99
|
+
resizeSidePanel: 'サイドパネルの幅を調整',
|
|
99
100
|
agentConnected: 'エージェント接続中',
|
|
100
101
|
agentConnectedTooltip:
|
|
101
102
|
'現在のスライドと Inspector の選択はエージェントにリアルタイムで同期されています。',
|
|
@@ -290,10 +291,9 @@ export const ja: Locale = {
|
|
|
290
291
|
agentNotWatching: 'エージェント未接続',
|
|
291
292
|
agentNotWatchingTooltip:
|
|
292
293
|
'dev server との接続が切れたため、選択中の要素がエージェントに見えなくなっています。dev server を再起動して接続を復旧してください。',
|
|
293
|
-
|
|
294
|
+
commentMode: 'コメント',
|
|
294
295
|
commentPlaceholder: 'エージェントに依頼する変更を記述…',
|
|
295
|
-
|
|
296
|
-
addComment: 'コメントを追加',
|
|
296
|
+
commentPost: '投稿',
|
|
297
297
|
unsavedChanges: {
|
|
298
298
|
one: '未保存の変更 {count} 件',
|
|
299
299
|
other: '未保存の変更 {count} 件',
|
|
@@ -303,11 +303,14 @@ export const ja: Locale = {
|
|
|
303
303
|
other: 'コメント {count} 件',
|
|
304
304
|
},
|
|
305
305
|
commentLineLabel: '行 {n}',
|
|
306
|
-
|
|
307
|
-
|
|
306
|
+
commentRegionLabel: '範囲',
|
|
307
|
+
commentEmptyHint: '要素をクリックするか、範囲をドラッグしてコメントを残せます。',
|
|
308
308
|
commentsApplyHintPrefix: 'エージェントで ',
|
|
309
309
|
commentsApplyHintSuffix: ' を実行して適用してください。',
|
|
310
310
|
commentDeleteAria: '削除',
|
|
311
|
+
commentUpdateFailed: 'コメントを更新できませんでした:',
|
|
312
|
+
commentAddFailed: 'コメントを追加できませんでした:',
|
|
313
|
+
commentRegionNoTarget: 'この範囲を付けられる要素が見つかりませんでした。',
|
|
311
314
|
saveFailed: '保存に失敗しました:',
|
|
312
315
|
decreaseFontSize: 'フォントサイズを縮小',
|
|
313
316
|
increaseFontSize: 'フォントサイズを拡大',
|
|
@@ -461,7 +464,7 @@ export const ja: Locale = {
|
|
|
461
464
|
title: 'ストーリーボード',
|
|
462
465
|
openBoard: 'ストーリーボード (B)',
|
|
463
466
|
backToDeck: 'スライドに戻る',
|
|
464
|
-
hint: 'カードをドラッグして並べ替え · ダブルクリックで編集',
|
|
467
|
+
hint: 'カードをドラッグして並べ替え · ダブルクリックで編集 · 丸をドラッグして関連付け',
|
|
465
468
|
loading: '読み込み中…',
|
|
466
469
|
columnFallback: 'パート {n}',
|
|
467
470
|
moveToEnd: '最後に移動',
|
|
@@ -476,6 +479,19 @@ export const ja: Locale = {
|
|
|
476
479
|
notesPlaceholder: '発表者ノート…',
|
|
477
480
|
toastInserted: 'ページ {n} に白紙ページを追加しました',
|
|
478
481
|
insertFailed: 'ページを追加できませんでした',
|
|
482
|
+
cardTitlePlaceholder: 'カードに名前を付ける',
|
|
483
|
+
renameCard: 'カード名を変更',
|
|
484
|
+
status: 'ステータス',
|
|
485
|
+
statusNone: 'なし',
|
|
486
|
+
statusTodo: '未着手',
|
|
487
|
+
statusDoing: '進行中',
|
|
488
|
+
statusReview: '確認待ち',
|
|
489
|
+
statusDone: '完了',
|
|
490
|
+
memoPlaceholder: '作業メモ…(ボードだけに残ります)',
|
|
491
|
+
linkHandle: '別のカードにドラッグして関連付け',
|
|
492
|
+
showLinks: '関連線を表示',
|
|
493
|
+
hideLinks: '関連線を隠す',
|
|
494
|
+
removeLink: 'この関連を削除',
|
|
479
495
|
},
|
|
480
496
|
|
|
481
497
|
pdfToast: {
|
|
@@ -566,4 +582,102 @@ export const ja: Locale = {
|
|
|
566
582
|
expandPromptAria: 'プロンプトを展開',
|
|
567
583
|
collapsePromptAria: 'プロンプトを折りたたむ',
|
|
568
584
|
},
|
|
585
|
+
agent: {
|
|
586
|
+
title: 'エージェント',
|
|
587
|
+
beta: 'Beta',
|
|
588
|
+
betaTitle: 'プレビュー版',
|
|
589
|
+
betaHint: '返答・編集・ツール実行が失敗したり、思わぬ動作をしたりすることがあります。',
|
|
590
|
+
open: 'エージェント',
|
|
591
|
+
openTitle: 'エージェントパネルを開く',
|
|
592
|
+
close: 'エージェントパネルを閉じる',
|
|
593
|
+
newSession: '新しいチャット',
|
|
594
|
+
sessions: '履歴',
|
|
595
|
+
noSessions: 'まだ会話はありません。',
|
|
596
|
+
deleteSession: '会話を削除',
|
|
597
|
+
historyThisDeck: 'このデッキ',
|
|
598
|
+
historyOtherDecks: '他のデッキ',
|
|
599
|
+
historyEmptyHint: 'このパネルで始めた会話がここに表示されます。',
|
|
600
|
+
sessionRunning: '実行中',
|
|
601
|
+
composerPlaceholder: '{provider} にスライドの作成や編集を依頼…',
|
|
602
|
+
send: '送信',
|
|
603
|
+
stop: '停止',
|
|
604
|
+
working: '処理中',
|
|
605
|
+
contextPage: '{n} ページ目',
|
|
606
|
+
contextSelection: '選択中',
|
|
607
|
+
pendingComments: { one: '{count} 件のコメント', other: '{count} 件のコメント' },
|
|
608
|
+
applyComments: 'コメントを適用',
|
|
609
|
+
applyCommentsWith: '{provider} で適用',
|
|
610
|
+
createDeck: '新しいデッキ',
|
|
611
|
+
createDeckWith: '{provider} でデッキを作成',
|
|
612
|
+
quickCreate: '新しいデッキを下書き',
|
|
613
|
+
quickCreateHint: '空のデッキを開き、内容を伝えるとエージェントが 1 ページずつ作成します。',
|
|
614
|
+
quickApply: '未処理のコメントを適用',
|
|
615
|
+
quickApplyHint: 'このスライドの @slide-comment マーカーをすべて処理します。',
|
|
616
|
+
quickTheme: 'テーマを作成',
|
|
617
|
+
quickThemeHint: 'themes/ に再利用できるテーマを抽出・設計します。',
|
|
618
|
+
quickEdit: 'このページを編集',
|
|
619
|
+
quickEditHint: '表示中のページへの変更内容を書いてください。',
|
|
620
|
+
emptyTitle: '何を作りますか?',
|
|
621
|
+
emptyHint: 'デッキの内容を書くか、下から出発点を選んでください。',
|
|
622
|
+
questionSubmit: '続ける',
|
|
623
|
+
questionOther: 'その他',
|
|
624
|
+
questionOtherPlaceholder: '自由に入力',
|
|
625
|
+
questionCancelled: 'スキップ',
|
|
626
|
+
permissionTitle: '承認が必要です',
|
|
627
|
+
allow: '許可',
|
|
628
|
+
deny: '拒否',
|
|
629
|
+
allowed: '許可済み',
|
|
630
|
+
denied: '拒否済み',
|
|
631
|
+
autoApprove: '自動承認',
|
|
632
|
+
autoApproveHint: '確認なしでコマンドを実行します。ワークスペース内の編集は常に許可されます。',
|
|
633
|
+
resultDone: '完了',
|
|
634
|
+
resultStopped: '停止',
|
|
635
|
+
resultSeconds: '{seconds} 秒',
|
|
636
|
+
errorEyebrow: 'エラー',
|
|
637
|
+
statusLoading: 'エージェントを確認中',
|
|
638
|
+
disabled: 'エージェントパネルは lemonriver.config.ts で無効化されています。',
|
|
639
|
+
connectTitle: 'エージェントを接続',
|
|
640
|
+
connectDescription:
|
|
641
|
+
'ターミナルの代わりにここからコーディングエージェントを操作できます。このマシンにインストール済みのエージェントは自動で接続され、そのログインを再利用します。',
|
|
642
|
+
connect: '接続',
|
|
643
|
+
connecting: '接続中',
|
|
644
|
+
connected: '接続済み',
|
|
645
|
+
connectInstallHint: '{pm} で {pkg} をこのワークスペースに追加します。',
|
|
646
|
+
cliFound: 'CLI を検出 · v{version}',
|
|
647
|
+
cliFoundNoVersion: 'CLI を検出',
|
|
648
|
+
cliMissing: 'PATH に CLI が見つかりません',
|
|
649
|
+
cliHint:
|
|
650
|
+
'{name} CLI をインストールして一度ログインしてください。パネルはそのログインを再利用します。',
|
|
651
|
+
needCliTitle: '先に Claude Code か Codex をインストールしてください',
|
|
652
|
+
needCliDescription:
|
|
653
|
+
'パネルはこのマシンのコーディングエージェント CLI を操作しますが、PATH に見つかりませんでした。どちらかをインストールしてターミナルで一度ログインし、もう一度確認してください。',
|
|
654
|
+
checkAgain: 'もう一度確認',
|
|
655
|
+
retry: '再試行',
|
|
656
|
+
toastConnected: '{name} を接続しました',
|
|
657
|
+
toastConnectFailed: '{pkg} をインストールできませんでした',
|
|
658
|
+
manageConnections: 'エージェントを管理',
|
|
659
|
+
backToChat: '戻る',
|
|
660
|
+
toastSendFailed: 'メッセージを送信できませんでした',
|
|
661
|
+
newDeckTitle: 'どんなデッキにしますか?',
|
|
662
|
+
newDeckHint:
|
|
663
|
+
'テーマ、対象、トーンを伝えてください。{provider} が 1 ページずつ作成する様子を見られます。',
|
|
664
|
+
newDeckPlaceholder: '10 分間のトーク:…',
|
|
665
|
+
toastCreateDeckFailed: 'デッキを作成できませんでした',
|
|
666
|
+
steps: { one: '{count} ステップ', other: '{count} ステップ' },
|
|
667
|
+
questionSkip: 'スキップ',
|
|
668
|
+
copyMessage: 'コピー',
|
|
669
|
+
copied: 'コピーしました',
|
|
670
|
+
editMessage: '編集',
|
|
671
|
+
cancelEdit: 'キャンセル',
|
|
672
|
+
sendEdit: '送信',
|
|
673
|
+
editHint:
|
|
674
|
+
'送信すると、このメッセージ以降の会話が置き換わります。ファイルへの変更は元に戻りません。',
|
|
675
|
+
modelDefault: 'デフォルト',
|
|
676
|
+
reasoning: '推論',
|
|
677
|
+
effortAuto: '自動',
|
|
678
|
+
efforts: { minimal: '最小', low: '低', medium: '中', high: '高', xhigh: '最高', max: '最大' },
|
|
679
|
+
presenceEditing: '{provider} が編集中',
|
|
680
|
+
presenceThinking: '考え中',
|
|
681
|
+
presenceWaiting: 'あなたの回答待ち',
|
|
682
|
+
},
|
|
569
683
|
};
|
package/src/locale/types.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { AgentEffort } from '../agent/types.ts';
|
|
2
|
+
|
|
1
3
|
export type Plural = { one: string; other: string };
|
|
2
4
|
|
|
3
5
|
export type Locale = {
|
|
4
|
-
id: 'en' | 'zh-TW' | 'zh-CN' | 'ja';
|
|
6
|
+
id: 'en' | 'zh-TW' | 'zh-CN' | 'ja' | 'es';
|
|
5
7
|
|
|
6
8
|
common: {
|
|
7
9
|
cancel: string;
|
|
@@ -100,6 +102,7 @@ export type Locale = {
|
|
|
100
102
|
};
|
|
101
103
|
|
|
102
104
|
slide: {
|
|
105
|
+
resizeSidePanel: string;
|
|
103
106
|
home: string;
|
|
104
107
|
backToHome: string;
|
|
105
108
|
agentConnected: string;
|
|
@@ -287,20 +290,25 @@ export type Locale = {
|
|
|
287
290
|
cropFitCover: string;
|
|
288
291
|
cropFitContain: string;
|
|
289
292
|
cropApply: string;
|
|
290
|
-
|
|
293
|
+
commentMode: string;
|
|
291
294
|
commentPlaceholder: string;
|
|
292
|
-
|
|
293
|
-
addComment: string;
|
|
295
|
+
commentPost: string;
|
|
294
296
|
/** templates: "{count} unsaved change" / "{count} unsaved changes" */
|
|
295
297
|
unsavedChanges: Plural;
|
|
296
298
|
/** templates: "{count} comment" / "{count} comments" */
|
|
297
299
|
commentsCount: Plural;
|
|
298
300
|
/** template: "line {n}" */
|
|
299
301
|
commentLineLabel: string;
|
|
300
|
-
|
|
302
|
+
commentRegionLabel: string;
|
|
303
|
+
commentEmptyHint: string;
|
|
301
304
|
commentsApplyHintPrefix: string;
|
|
302
305
|
commentsApplyHintSuffix: string;
|
|
303
306
|
commentDeleteAria: string;
|
|
307
|
+
/** Prefix for the toast shown when a comment edit fails to write to disk. */
|
|
308
|
+
commentUpdateFailed: string;
|
|
309
|
+
/** Prefix for the toast shown when a comment fails to write to disk. */
|
|
310
|
+
commentAddFailed: string;
|
|
311
|
+
commentRegionNoTarget: string;
|
|
304
312
|
/** Prefix for the toast shown when one or more buffered edits fail to write to disk. */
|
|
305
313
|
saveFailed: string;
|
|
306
314
|
decreaseFontSize: string;
|
|
@@ -495,6 +503,19 @@ export type Locale = {
|
|
|
495
503
|
/** template: "Added a blank page at {n}" */
|
|
496
504
|
toastInserted: string;
|
|
497
505
|
insertFailed: string;
|
|
506
|
+
cardTitlePlaceholder: string;
|
|
507
|
+
renameCard: string;
|
|
508
|
+
status: string;
|
|
509
|
+
statusNone: string;
|
|
510
|
+
statusTodo: string;
|
|
511
|
+
statusDoing: string;
|
|
512
|
+
statusReview: string;
|
|
513
|
+
statusDone: string;
|
|
514
|
+
memoPlaceholder: string;
|
|
515
|
+
linkHandle: string;
|
|
516
|
+
showLinks: string;
|
|
517
|
+
hideLinks: string;
|
|
518
|
+
removeLink: string;
|
|
498
519
|
};
|
|
499
520
|
|
|
500
521
|
pdfToast: {
|
|
@@ -593,4 +614,110 @@ export type Locale = {
|
|
|
593
614
|
expandPromptAria: string;
|
|
594
615
|
collapsePromptAria: string;
|
|
595
616
|
};
|
|
617
|
+
|
|
618
|
+
agent: {
|
|
619
|
+
title: string;
|
|
620
|
+
beta: string;
|
|
621
|
+
betaTitle: string;
|
|
622
|
+
betaHint: string;
|
|
623
|
+
open: string;
|
|
624
|
+
openTitle: string;
|
|
625
|
+
close: string;
|
|
626
|
+
newSession: string;
|
|
627
|
+
sessions: string;
|
|
628
|
+
noSessions: string;
|
|
629
|
+
deleteSession: string;
|
|
630
|
+
historyThisDeck: string;
|
|
631
|
+
historyOtherDecks: string;
|
|
632
|
+
historyEmptyHint: string;
|
|
633
|
+
sessionRunning: string;
|
|
634
|
+
/** template: "Ask {provider} to create or edit slides…" */
|
|
635
|
+
composerPlaceholder: string;
|
|
636
|
+
send: string;
|
|
637
|
+
stop: string;
|
|
638
|
+
working: string;
|
|
639
|
+
/** template: "Page {n}" */
|
|
640
|
+
contextPage: string;
|
|
641
|
+
contextSelection: string;
|
|
642
|
+
/** plural, template: "{count} comments" */
|
|
643
|
+
pendingComments: Plural;
|
|
644
|
+
applyComments: string;
|
|
645
|
+
/** template: "Apply with {provider}" */
|
|
646
|
+
applyCommentsWith: string;
|
|
647
|
+
createDeck: string;
|
|
648
|
+
/** template: "Create a deck with {provider}" */
|
|
649
|
+
createDeckWith: string;
|
|
650
|
+
quickCreate: string;
|
|
651
|
+
quickCreateHint: string;
|
|
652
|
+
quickApply: string;
|
|
653
|
+
quickApplyHint: string;
|
|
654
|
+
quickTheme: string;
|
|
655
|
+
quickThemeHint: string;
|
|
656
|
+
quickEdit: string;
|
|
657
|
+
quickEditHint: string;
|
|
658
|
+
emptyTitle: string;
|
|
659
|
+
emptyHint: string;
|
|
660
|
+
questionSubmit: string;
|
|
661
|
+
questionOther: string;
|
|
662
|
+
questionOtherPlaceholder: string;
|
|
663
|
+
questionCancelled: string;
|
|
664
|
+
permissionTitle: string;
|
|
665
|
+
allow: string;
|
|
666
|
+
deny: string;
|
|
667
|
+
allowed: string;
|
|
668
|
+
denied: string;
|
|
669
|
+
autoApprove: string;
|
|
670
|
+
autoApproveHint: string;
|
|
671
|
+
resultDone: string;
|
|
672
|
+
resultStopped: string;
|
|
673
|
+
/** template: "{seconds}s" */
|
|
674
|
+
resultSeconds: string;
|
|
675
|
+
errorEyebrow: string;
|
|
676
|
+
statusLoading: string;
|
|
677
|
+
disabled: string;
|
|
678
|
+
connectTitle: string;
|
|
679
|
+
connectDescription: string;
|
|
680
|
+
connect: string;
|
|
681
|
+
connecting: string;
|
|
682
|
+
connected: string;
|
|
683
|
+
/** template: "Adds {pkg} to this workspace with {pm}." */
|
|
684
|
+
connectInstallHint: string;
|
|
685
|
+
/** template: "CLI found · v{version}" */
|
|
686
|
+
cliFound: string;
|
|
687
|
+
cliFoundNoVersion: string;
|
|
688
|
+
cliMissing: string;
|
|
689
|
+
/** template: "Install the {name} CLI and sign in once; the panel reuses its login." */
|
|
690
|
+
cliHint: string;
|
|
691
|
+
needCliTitle: string;
|
|
692
|
+
needCliDescription: string;
|
|
693
|
+
checkAgain: string;
|
|
694
|
+
retry: string;
|
|
695
|
+
/** template: "{name} connected" */
|
|
696
|
+
toastConnected: string;
|
|
697
|
+
/** template: "Could not install {pkg}" */
|
|
698
|
+
toastConnectFailed: string;
|
|
699
|
+
manageConnections: string;
|
|
700
|
+
backToChat: string;
|
|
701
|
+
toastSendFailed: string;
|
|
702
|
+
newDeckTitle: string;
|
|
703
|
+
newDeckHint: string;
|
|
704
|
+
newDeckPlaceholder: string;
|
|
705
|
+
toastCreateDeckFailed: string;
|
|
706
|
+
steps: Plural;
|
|
707
|
+
questionSkip: string;
|
|
708
|
+
copyMessage: string;
|
|
709
|
+
copied: string;
|
|
710
|
+
editMessage: string;
|
|
711
|
+
cancelEdit: string;
|
|
712
|
+
sendEdit: string;
|
|
713
|
+
editHint: string;
|
|
714
|
+
modelDefault: string;
|
|
715
|
+
reasoning: string;
|
|
716
|
+
effortAuto: string;
|
|
717
|
+
efforts: Record<AgentEffort, string>;
|
|
718
|
+
/** template: "{provider} is editing" */
|
|
719
|
+
presenceEditing: string;
|
|
720
|
+
presenceThinking: string;
|
|
721
|
+
presenceWaiting: string;
|
|
722
|
+
};
|
|
596
723
|
};
|
package/src/locale/zh-cn.ts
CHANGED
|
@@ -96,6 +96,7 @@ export const zhCN: Locale = {
|
|
|
96
96
|
},
|
|
97
97
|
|
|
98
98
|
slide: {
|
|
99
|
+
resizeSidePanel: '调整侧栏宽度',
|
|
99
100
|
agentConnected: 'Agent 已连接',
|
|
100
101
|
agentConnectedTooltip: '目前的 slide 与 Inspector 选择会即时同步给 agent。',
|
|
101
102
|
agentDisconnected: 'Agent 已断开',
|
|
@@ -284,10 +285,9 @@ export const zhCN: Locale = {
|
|
|
284
285
|
agentNotWatching: 'Agent 没在关注',
|
|
285
286
|
agentNotWatchingTooltip:
|
|
286
287
|
'已和 dev server 断开连接,agent 看不到你选的元素了。请重新启动 dev server 来恢复连接。',
|
|
287
|
-
|
|
288
|
+
commentMode: '评论',
|
|
288
289
|
commentPlaceholder: '描述你希望代理执行的更改…',
|
|
289
|
-
|
|
290
|
-
addComment: '添加 comment',
|
|
290
|
+
commentPost: '发送',
|
|
291
291
|
unsavedChanges: {
|
|
292
292
|
one: '{count} 项未保存的更改',
|
|
293
293
|
other: '{count} 项未保存的更改',
|
|
@@ -297,10 +297,14 @@ export const zhCN: Locale = {
|
|
|
297
297
|
other: '{count} 条评论',
|
|
298
298
|
},
|
|
299
299
|
commentLineLabel: '第 {n} 行',
|
|
300
|
-
|
|
300
|
+
commentRegionLabel: '区域',
|
|
301
|
+
commentEmptyHint: '点击元素或拖拽框选一个区域来评论。',
|
|
301
302
|
commentsApplyHintPrefix: '在你的代理中运行 ',
|
|
302
303
|
commentsApplyHintSuffix: ' 以应用这些更改。',
|
|
303
304
|
commentDeleteAria: '删除',
|
|
305
|
+
commentUpdateFailed: '无法更新评论:',
|
|
306
|
+
commentAddFailed: '无法添加评论:',
|
|
307
|
+
commentRegionNoTarget: '找不到可以附加该区域的元素。',
|
|
304
308
|
saveFailed: '保存失败:',
|
|
305
309
|
decreaseFontSize: '缩小字号',
|
|
306
310
|
increaseFontSize: '放大字号',
|
|
@@ -451,7 +455,7 @@ export const zhCN: Locale = {
|
|
|
451
455
|
title: '故事看板',
|
|
452
456
|
openBoard: '故事看板 (B)',
|
|
453
457
|
backToDeck: '返回幻灯片',
|
|
454
|
-
hint: '拖动卡片调整顺序 · 双击进入该页编辑',
|
|
458
|
+
hint: '拖动卡片调整顺序 · 双击进入该页编辑 · 拖动圆点关联两页',
|
|
455
459
|
loading: '正在加载…',
|
|
456
460
|
columnFallback: '第 {n} 部分',
|
|
457
461
|
moveToEnd: '移到末尾',
|
|
@@ -466,6 +470,19 @@ export const zhCN: Locale = {
|
|
|
466
470
|
notesPlaceholder: '讲稿…',
|
|
467
471
|
toastInserted: '已在第 {n} 页新建空白页',
|
|
468
472
|
insertFailed: '新建页面失败',
|
|
473
|
+
cardTitlePlaceholder: '给这张卡片起个名字',
|
|
474
|
+
renameCard: '重命名这张卡片',
|
|
475
|
+
status: '状态',
|
|
476
|
+
statusNone: '无状态',
|
|
477
|
+
statusTodo: '待做',
|
|
478
|
+
statusDoing: '进行中',
|
|
479
|
+
statusReview: '待确认',
|
|
480
|
+
statusDone: '已完成',
|
|
481
|
+
memoPlaceholder: '工作备注…(只在看板上,不进材料)',
|
|
482
|
+
linkHandle: '拖到另一张卡片上建立关联',
|
|
483
|
+
showLinks: '显示关联线',
|
|
484
|
+
hideLinks: '隐藏关联线',
|
|
485
|
+
removeLink: '删除这条关联',
|
|
469
486
|
},
|
|
470
487
|
|
|
471
488
|
pdfToast: {
|
|
@@ -555,4 +572,99 @@ export const zhCN: Locale = {
|
|
|
555
572
|
expandPromptAria: '展开 prompt',
|
|
556
573
|
collapsePromptAria: '收起 prompt',
|
|
557
574
|
},
|
|
575
|
+
agent: {
|
|
576
|
+
title: 'Agent',
|
|
577
|
+
beta: 'Beta',
|
|
578
|
+
betaTitle: '抢先体验版',
|
|
579
|
+
betaHint: '回复、编辑或工具调用偶尔可能失败,或出现预期之外的结果。',
|
|
580
|
+
open: 'Agent',
|
|
581
|
+
openTitle: '打开 agent 面板',
|
|
582
|
+
close: '关闭 agent 面板',
|
|
583
|
+
newSession: '新对话',
|
|
584
|
+
sessions: '对话记录',
|
|
585
|
+
noSessions: '还没有任何对话。',
|
|
586
|
+
deleteSession: '删除对话',
|
|
587
|
+
historyThisDeck: '这份幻灯片',
|
|
588
|
+
historyOtherDecks: '其他幻灯片',
|
|
589
|
+
historyEmptyHint: '在这个面板开始的对话会列在这里。',
|
|
590
|
+
sessionRunning: '进行中',
|
|
591
|
+
composerPlaceholder: '让 {provider} 创建或修改幻灯片…',
|
|
592
|
+
send: '发送',
|
|
593
|
+
stop: '停止',
|
|
594
|
+
working: '处理中',
|
|
595
|
+
contextPage: '第 {n} 页',
|
|
596
|
+
contextSelection: '选中元素',
|
|
597
|
+
pendingComments: { one: '{count} 条评论', other: '{count} 条评论' },
|
|
598
|
+
applyComments: '应用评论',
|
|
599
|
+
applyCommentsWith: '用 {provider} 应用',
|
|
600
|
+
createDeck: '新幻灯片',
|
|
601
|
+
createDeckWith: '用 {provider} 创建幻灯片',
|
|
602
|
+
quickCreate: '起草一份新幻灯片',
|
|
603
|
+
quickCreateHint: '打开一份空白幻灯片,描述需求后 agent 会逐页生成。',
|
|
604
|
+
quickApply: '应用待处理的评论',
|
|
605
|
+
quickApplyHint: '处理这份幻灯片中所有的 @slide-comment 标记。',
|
|
606
|
+
quickTheme: '创建主题',
|
|
607
|
+
quickThemeHint: '在 themes/ 下提取或设计可复用的主题。',
|
|
608
|
+
quickEdit: '编辑当前页',
|
|
609
|
+
quickEditHint: '描述你想对当前页面做的修改。',
|
|
610
|
+
emptyTitle: '想做什么?',
|
|
611
|
+
emptyHint: '描述一份幻灯片,或从下面选一个起点。',
|
|
612
|
+
questionSubmit: '继续',
|
|
613
|
+
questionOther: '其他',
|
|
614
|
+
questionOtherPlaceholder: '输入你自己的答案',
|
|
615
|
+
questionCancelled: '已跳过',
|
|
616
|
+
permissionTitle: '需要批准',
|
|
617
|
+
allow: '允许',
|
|
618
|
+
deny: '拒绝',
|
|
619
|
+
allowed: '已允许',
|
|
620
|
+
denied: '已拒绝',
|
|
621
|
+
autoApprove: '自动批准',
|
|
622
|
+
autoApproveHint: '不询问直接执行命令。工作区内的文件编辑始终允许。',
|
|
623
|
+
resultDone: '完成',
|
|
624
|
+
resultStopped: '已停止',
|
|
625
|
+
resultSeconds: '{seconds} 秒',
|
|
626
|
+
errorEyebrow: '错误',
|
|
627
|
+
statusLoading: '正在检查 agent',
|
|
628
|
+
disabled: 'agent 面板已在 lemonriver.config.ts 中禁用。',
|
|
629
|
+
connectTitle: '连接 agent',
|
|
630
|
+
connectDescription:
|
|
631
|
+
'直接在这里驱动你的 coding agent,无需切换到终端。这台电脑上已安装的 agent 会自动连接,并复用它的登录状态。',
|
|
632
|
+
connect: '连接',
|
|
633
|
+
connecting: '连接中',
|
|
634
|
+
connected: '已连接',
|
|
635
|
+
connectInstallHint: '会用 {pm} 把 {pkg} 添加到这个工作区。',
|
|
636
|
+
cliFound: '已找到 CLI · v{version}',
|
|
637
|
+
cliFoundNoVersion: '已找到 CLI',
|
|
638
|
+
cliMissing: 'PATH 中找不到 CLI',
|
|
639
|
+
cliHint: '请安装 {name} CLI 并登录一次;面板会复用它的登录状态。',
|
|
640
|
+
needCliTitle: '请先安装 Claude Code 或 Codex',
|
|
641
|
+
needCliDescription:
|
|
642
|
+
'面板会驱动这台电脑上的 coding agent CLI,但 PATH 中找不到任何一个。请先安装其中一个并在终端登录一次,再重新检查。',
|
|
643
|
+
checkAgain: '重新检查',
|
|
644
|
+
retry: '重试',
|
|
645
|
+
toastConnected: '{name} 已连接',
|
|
646
|
+
toastConnectFailed: '无法安装 {pkg}',
|
|
647
|
+
manageConnections: '管理 agent',
|
|
648
|
+
backToChat: '返回',
|
|
649
|
+
toastSendFailed: '消息发送失败',
|
|
650
|
+
newDeckTitle: '这份幻灯片要讲什么?',
|
|
651
|
+
newDeckHint: '描述主题、受众和风格,{provider} 会逐页生成,你可以边看边调整。',
|
|
652
|
+
newDeckPlaceholder: '一场 10 分钟的分享,主题是…',
|
|
653
|
+
toastCreateDeckFailed: '无法创建幻灯片',
|
|
654
|
+
steps: { one: '{count} 个步骤', other: '{count} 个步骤' },
|
|
655
|
+
questionSkip: '跳过',
|
|
656
|
+
copyMessage: '复制',
|
|
657
|
+
copied: '已复制',
|
|
658
|
+
editMessage: '编辑',
|
|
659
|
+
cancelEdit: '取消',
|
|
660
|
+
sendEdit: '发送',
|
|
661
|
+
editHint: '发送后会替换这条消息之后的对话,已改动的文件不会还原。',
|
|
662
|
+
modelDefault: '默认',
|
|
663
|
+
reasoning: '推理强度',
|
|
664
|
+
effortAuto: '自动',
|
|
665
|
+
efforts: { minimal: '最低', low: '低', medium: '中', high: '高', xhigh: '超高', max: '最高' },
|
|
666
|
+
presenceEditing: '{provider} 正在编辑',
|
|
667
|
+
presenceThinking: '思考中',
|
|
668
|
+
presenceWaiting: '等待你的回复',
|
|
669
|
+
},
|
|
558
670
|
};
|
package/src/locale/zh-tw.ts
CHANGED
|
@@ -96,6 +96,7 @@ export const zhTW: Locale = {
|
|
|
96
96
|
},
|
|
97
97
|
|
|
98
98
|
slide: {
|
|
99
|
+
resizeSidePanel: '調整側欄寬度',
|
|
99
100
|
agentConnected: 'Agent 已連線',
|
|
100
101
|
agentConnectedTooltip: '目前的 slide 與 Inspector 選擇會即時同步給 agent。',
|
|
101
102
|
agentDisconnected: 'Agent 已斷線',
|
|
@@ -284,10 +285,9 @@ export const zhTW: Locale = {
|
|
|
284
285
|
agentNotWatching: 'Agent 沒在關注',
|
|
285
286
|
agentNotWatchingTooltip:
|
|
286
287
|
'已和 dev server 斷線,agent 看不到你選的元素了。請重新啟動 dev server 來恢復連線。',
|
|
287
|
-
|
|
288
|
+
commentMode: '留言',
|
|
288
289
|
commentPlaceholder: '描述你希望代理進行的修改…',
|
|
289
|
-
|
|
290
|
-
addComment: '新增 comment',
|
|
290
|
+
commentPost: '送出',
|
|
291
291
|
unsavedChanges: {
|
|
292
292
|
one: '{count} 項未儲存的變更',
|
|
293
293
|
other: '{count} 項未儲存的變更',
|
|
@@ -297,10 +297,14 @@ export const zhTW: Locale = {
|
|
|
297
297
|
other: '{count} 則留言',
|
|
298
298
|
},
|
|
299
299
|
commentLineLabel: '第 {n} 行',
|
|
300
|
-
|
|
300
|
+
commentRegionLabel: '範圍',
|
|
301
|
+
commentEmptyHint: '點選元件或拖曳框選一個範圍來留言。',
|
|
301
302
|
commentsApplyHintPrefix: '在你的代理中執行 ',
|
|
302
303
|
commentsApplyHintSuffix: ' 以套用這些變更。',
|
|
303
304
|
commentDeleteAria: '刪除',
|
|
305
|
+
commentUpdateFailed: '無法更新留言:',
|
|
306
|
+
commentAddFailed: '無法新增留言:',
|
|
307
|
+
commentRegionNoTarget: '找不到可以附加這個範圍的元件。',
|
|
304
308
|
saveFailed: '儲存失敗:',
|
|
305
309
|
decreaseFontSize: '縮小字級',
|
|
306
310
|
increaseFontSize: '放大字級',
|
|
@@ -451,7 +455,7 @@ export const zhTW: Locale = {
|
|
|
451
455
|
title: '故事看板',
|
|
452
456
|
openBoard: '故事看板 (B)',
|
|
453
457
|
backToDeck: '返回投影片',
|
|
454
|
-
hint: '拖動卡片調整順序 · 雙擊進入該頁編輯',
|
|
458
|
+
hint: '拖動卡片調整順序 · 雙擊進入該頁編輯 · 拖動圓點關聯兩頁',
|
|
455
459
|
loading: '正在載入…',
|
|
456
460
|
columnFallback: '第 {n} 部分',
|
|
457
461
|
moveToEnd: '移到最後',
|
|
@@ -466,6 +470,19 @@ export const zhTW: Locale = {
|
|
|
466
470
|
notesPlaceholder: '講稿…',
|
|
467
471
|
toastInserted: '已於第 {n} 頁新增空白頁',
|
|
468
472
|
insertFailed: '新增頁面失敗',
|
|
473
|
+
cardTitlePlaceholder: '幫這張卡片取個名字',
|
|
474
|
+
renameCard: '重新命名這張卡片',
|
|
475
|
+
status: '狀態',
|
|
476
|
+
statusNone: '無狀態',
|
|
477
|
+
statusTodo: '待做',
|
|
478
|
+
statusDoing: '進行中',
|
|
479
|
+
statusReview: '待確認',
|
|
480
|
+
statusDone: '已完成',
|
|
481
|
+
memoPlaceholder: '工作備註…(只在看板上,不進投影片)',
|
|
482
|
+
linkHandle: '拖到另一張卡片上建立關聯',
|
|
483
|
+
showLinks: '顯示關聯線',
|
|
484
|
+
hideLinks: '隱藏關聯線',
|
|
485
|
+
removeLink: '刪除這條關聯',
|
|
469
486
|
},
|
|
470
487
|
|
|
471
488
|
pdfToast: {
|
|
@@ -555,4 +572,99 @@ export const zhTW: Locale = {
|
|
|
555
572
|
expandPromptAria: '展開 prompt',
|
|
556
573
|
collapsePromptAria: '收合 prompt',
|
|
557
574
|
},
|
|
575
|
+
agent: {
|
|
576
|
+
title: 'Agent',
|
|
577
|
+
beta: 'Beta',
|
|
578
|
+
betaTitle: '搶先體驗版',
|
|
579
|
+
betaHint: '回覆、編輯或工具呼叫偶爾可能失敗,或出現預期之外的結果。',
|
|
580
|
+
open: 'Agent',
|
|
581
|
+
openTitle: '開啟 agent 面板',
|
|
582
|
+
close: '關閉 agent 面板',
|
|
583
|
+
newSession: '新對話',
|
|
584
|
+
sessions: '對話紀錄',
|
|
585
|
+
noSessions: '還沒有任何對話。',
|
|
586
|
+
deleteSession: '刪除對話',
|
|
587
|
+
historyThisDeck: '這份簡報',
|
|
588
|
+
historyOtherDecks: '其他簡報',
|
|
589
|
+
historyEmptyHint: '在這個面板開始的對話會列在這裡。',
|
|
590
|
+
sessionRunning: '進行中',
|
|
591
|
+
composerPlaceholder: '請 {provider} 建立或修改簡報…',
|
|
592
|
+
send: '送出',
|
|
593
|
+
stop: '停止',
|
|
594
|
+
working: '處理中',
|
|
595
|
+
contextPage: '第 {n} 頁',
|
|
596
|
+
contextSelection: '選取元件',
|
|
597
|
+
pendingComments: { one: '{count} 則留言', other: '{count} 則留言' },
|
|
598
|
+
applyComments: '套用留言',
|
|
599
|
+
applyCommentsWith: '用 {provider} 套用',
|
|
600
|
+
createDeck: '新簡報',
|
|
601
|
+
createDeckWith: '用 {provider} 建立簡報',
|
|
602
|
+
quickCreate: '草擬一份新簡報',
|
|
603
|
+
quickCreateHint: '開啟一份空白簡報,描述需求後 agent 會逐頁產生。',
|
|
604
|
+
quickApply: '套用待處理的留言',
|
|
605
|
+
quickApplyHint: '處理這份簡報裡所有的 @slide-comment 標記。',
|
|
606
|
+
quickTheme: '建立主題',
|
|
607
|
+
quickThemeHint: '在 themes/ 下萃取或設計可重用的主題。',
|
|
608
|
+
quickEdit: '編輯這一頁',
|
|
609
|
+
quickEditHint: '描述你想對目前頁面做的修改。',
|
|
610
|
+
emptyTitle: '想做什麼?',
|
|
611
|
+
emptyHint: '描述一份簡報,或從下面選一個起點。',
|
|
612
|
+
questionSubmit: '繼續',
|
|
613
|
+
questionOther: '其他',
|
|
614
|
+
questionOtherPlaceholder: '輸入你自己的答案',
|
|
615
|
+
questionCancelled: '已略過',
|
|
616
|
+
permissionTitle: '需要核准',
|
|
617
|
+
allow: '允許',
|
|
618
|
+
deny: '拒絕',
|
|
619
|
+
allowed: '已允許',
|
|
620
|
+
denied: '已拒絕',
|
|
621
|
+
autoApprove: '自動核准',
|
|
622
|
+
autoApproveHint: '不詢問就執行指令。工作區內的檔案編輯一律允許。',
|
|
623
|
+
resultDone: '完成',
|
|
624
|
+
resultStopped: '已停止',
|
|
625
|
+
resultSeconds: '{seconds} 秒',
|
|
626
|
+
errorEyebrow: '錯誤',
|
|
627
|
+
statusLoading: '正在檢查 agent',
|
|
628
|
+
disabled: 'agent 面板已在 lemonriver.config.ts 中停用。',
|
|
629
|
+
connectTitle: '連接 agent',
|
|
630
|
+
connectDescription:
|
|
631
|
+
'直接在這裡操作你的 coding agent,不用再切到終端機。這台電腦上已安裝的 agent 會自動連接,並沿用它的登入狀態。',
|
|
632
|
+
connect: '連接',
|
|
633
|
+
connecting: '連接中',
|
|
634
|
+
connected: '已連接',
|
|
635
|
+
connectInstallHint: '會用 {pm} 把 {pkg} 加進這個工作區。',
|
|
636
|
+
cliFound: '已找到 CLI · v{version}',
|
|
637
|
+
cliFoundNoVersion: '已找到 CLI',
|
|
638
|
+
cliMissing: 'PATH 中找不到 CLI',
|
|
639
|
+
cliHint: '請安裝 {name} CLI 並登入一次;面板會沿用它的登入狀態。',
|
|
640
|
+
needCliTitle: '請先安裝 Claude Code 或 Codex',
|
|
641
|
+
needCliDescription:
|
|
642
|
+
'面板會操作這台電腦上的 coding agent CLI,但 PATH 中找不到任何一個。請先安裝其中一個並在終端機登入一次,再重新檢查。',
|
|
643
|
+
checkAgain: '重新檢查',
|
|
644
|
+
retry: '重試',
|
|
645
|
+
toastConnected: '{name} 已連接',
|
|
646
|
+
toastConnectFailed: '無法安裝 {pkg}',
|
|
647
|
+
manageConnections: '管理 agent',
|
|
648
|
+
backToChat: '返回',
|
|
649
|
+
toastSendFailed: '訊息送出失敗',
|
|
650
|
+
newDeckTitle: '這份簡報要講什麼?',
|
|
651
|
+
newDeckHint: '描述主題、對象和風格,{provider} 會逐頁產生,你可以邊看邊調整。',
|
|
652
|
+
newDeckPlaceholder: '一場 10 分鐘的分享,主題是…',
|
|
653
|
+
toastCreateDeckFailed: '無法建立簡報',
|
|
654
|
+
steps: { one: '{count} 個步驟', other: '{count} 個步驟' },
|
|
655
|
+
questionSkip: '略過',
|
|
656
|
+
copyMessage: '複製',
|
|
657
|
+
copied: '已複製',
|
|
658
|
+
editMessage: '編輯',
|
|
659
|
+
cancelEdit: '取消',
|
|
660
|
+
sendEdit: '送出',
|
|
661
|
+
editHint: '送出後會取代這則訊息之後的對話,已改動的檔案不會還原。',
|
|
662
|
+
modelDefault: '預設',
|
|
663
|
+
reasoning: '推理強度',
|
|
664
|
+
effortAuto: '自動',
|
|
665
|
+
efforts: { minimal: '最低', low: '低', medium: '中', high: '高', xhigh: '超高', max: '最高' },
|
|
666
|
+
presenceEditing: '{provider} 正在編輯',
|
|
667
|
+
presenceThinking: '思考中',
|
|
668
|
+
presenceWaiting: '等待你的回覆',
|
|
669
|
+
},
|
|
558
670
|
};
|