mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-03 11:10:23 +02:00
* feat(issues): confirm assignment without a pre-flight run preview (MUL-5010) RunConfirmModal called POST /api/issues/preview-trigger on open and blocked the entire dialog behind a "检查中…" spinner until it landed. That query is keyed per issue id with staleTime 0, so every new issue was a guaranteed cache miss — the wait was structural, not incidental. The dialog also promised "会立即开始工作" while still checking whether anything would start. Redefine it as "dialog = confirm the assignment", not "confirm N runs": - Open fires no request. Note box and both buttons are usable on frame one. - Title/primary action become 确认指派; copy states the assignment as certain and the run as conditional, with no predicted count. - The write reports what actually happened: UpdateIssue returns runs_started (0/1) and batch-update returns the batch total, surfaced as one short toast — "已指派给 X,已启动 N 个 run", or just "已指派给 X". runs_started counts successful enqueues rather than predicate hits, since an insert can still no-op on the pending unique index. It is pointer+omitempty like Labels, so only the PUT reply carries it, and it is stripped in useUpdateIssue's onSuccess so a write-scoped fact never lands in the cache. The handoff-note version gate stays local and synchronous, now covering squads too by resolving the leader's runtime from the warm squad list — removing the last reason the dialog needed the server round-trip. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> * test(issues): assert runs_started on the write responses (MUL-5010) The assign-confirm dialog now reports the enqueue outcome from the write reply instead of predicting it, so the number itself is the contract. Pin it directly on the responses: - single assign that enqueues → runs_started 1 - single assign that starts nothing → 0, via both routes (suppress_run, and assigning into backlog), so a client can tell "no run" apart from "old backend omitting the field" - batch → the real aggregate, asserted against a mixed selection where updated=3 but runs_started=2; the divergence from `updated` is the point - absent on GET, guarding the pointer+omitempty contract that keeps a write-scoped fact off every read path Each count is cross-checked against agent_task_queue so the assertions track real enqueues rather than the predicate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> * refactor(issues): drop runs_started + result toast, keep silent completion (MUL-5010) Final scope: the dialog only removes the preview wait; it does not add a post-submit result toast. Per the confirmed decision, revert everything that existed solely to report "N runs started" and keep completion silent, exactly as it was before this PR — the assignee and any run already surface through the issue's normal updates. Removed: - the success toast on submit and its two i18n keys (all four locales) - the `runs_started` response field on IssueResponse, the single/batch write counting, and dispatchIssueRun's bool return (back to void) - the `runs_started` type/schema/api-client additions and the onSuccess strip - server/internal/handler/issue_runs_started_test.go (only served the field) Kept: preview-trigger removal and the instant-usable dialog — note box and buttons live on the first frame, agent/squad handoff-note version gate resolved locally, and "确认指派" copy. Net diff vs base is now frontend-only; the backend and packages/core files are byte-identical to base again. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> * docs(issues): fix stale headline comment referencing removed result toast (MUL-5010) The result toast was removed with runs_started, but the headline comment still said "the real one arrives in the result toast". Reword to state only what remains true: the copy names no run count because the run is conditional. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai>
221 lines
13 KiB
JSON
221 lines
13 KiB
JSON
{
|
||
"common": {
|
||
"back": "戻る",
|
||
"close": "閉じる",
|
||
"cancel": "キャンセル",
|
||
"expand_tooltip": "展開",
|
||
"collapse_tooltip": "折りたたむ"
|
||
},
|
||
"create_workspace": {
|
||
"title": "新しいワークスペースを作成",
|
||
"description": "ワークスペースは、チームがプロジェクトやイシューに取り組む共有環境です。"
|
||
},
|
||
"delete_issue": {
|
||
"title": "イシューを削除",
|
||
"description": "このイシューとすべてのコメントが完全に削除されます。この操作は元に戻せません。",
|
||
"hint": "ワークスペースのメンバーであれば誰でもイシューを削除できます。",
|
||
"cancel": "キャンセル",
|
||
"confirm": "削除",
|
||
"deleting": "削除中...",
|
||
"toast_deleted": "イシューを削除しました",
|
||
"toast_delete_failed": "イシューを削除できませんでした"
|
||
},
|
||
"feedback": {
|
||
"title": "フィードバック",
|
||
"placeholder": "使用感、見つけたバグ、追加してほしい機能などをお聞かせください…",
|
||
"toast_uploading": "アップロードが完了するまでお待ちください…",
|
||
"toast_too_long": "メッセージが長すぎます",
|
||
"toast_sent": "フィードバックをありがとうございます!",
|
||
"toast_failed": "フィードバックを送信できませんでした",
|
||
"send": "フィードバックを送信",
|
||
"sending": "送信中…",
|
||
"github_hint_prefix": "より迅速な対応とオープンな議論をご希望ですか?こちらへ ",
|
||
"github_hint_link": "GitHub"
|
||
},
|
||
"issue_picker": {
|
||
"search_placeholder": "イシューを検索...",
|
||
"searching": "検索中...",
|
||
"no_results": "イシューが見つかりません。",
|
||
"prompt_to_search": "イシューを検索するには入力してください"
|
||
},
|
||
"set_parent": {
|
||
"title": "親イシューを設定",
|
||
"description": "このイシューの親に設定するイシューを検索してください",
|
||
"toast_failed": "イシューを更新できませんでした",
|
||
"toast_success": "{{identifier}} を親イシューに設定しました"
|
||
},
|
||
"add_child": {
|
||
"title": "サブイシューを追加",
|
||
"description": "サブイシューとして追加するイシューを検索してください",
|
||
"toast_failed": "サブイシューを追加できませんでした",
|
||
"toast_success": "{{identifier}} をサブイシューとして追加しました"
|
||
},
|
||
"run_confirm": {
|
||
"title_assign": "割り当てを確認しますか?",
|
||
"assign_single": "このイシューを {{name}} に割り当てます。実行条件を満たす場合はすぐに作業を開始します。",
|
||
"assign_batch": "{{count}} 件のイシューを {{name}} に割り当てます。実行条件を満たす場合はすぐに作業を開始します。",
|
||
"note_label": "引き継ぎメモ(任意)",
|
||
"note_placeholder": "範囲・重点・触れてほしくない点などを一言で…",
|
||
"note_unsupported": "相手の実行環境が古いため、この引き継ぎメモは読み取れない可能性があります。",
|
||
"confirm_assign": "割り当てを確認",
|
||
"dont_start": "まだ開始しない",
|
||
"toast_failed": "操作に失敗しました",
|
||
"create_will_start": "作成後、{{name}} がすぐに作業を開始します。",
|
||
"create_will_start_squad": "作成後、{{name}} のリーダーが内容を評価し、タスクの割り振りを開始します。",
|
||
"create_parked": "割り当て済み — バックログでは作業を開始しません。"
|
||
},
|
||
"create_squad": {
|
||
"title": "スクワッドを作成",
|
||
"description": "リーダーエージェントと任意の追加メンバーで協働スクワッドを作成します。",
|
||
"name_label": "名前",
|
||
"name_placeholder": "例: フロントエンドチーム",
|
||
"description_label": "説明",
|
||
"description_placeholder": "このスクワッドが担当する内容を説明してください...",
|
||
"leader_label": "リーダーエージェント",
|
||
"leader_hint": "リーダーはこのスクワッドに割り当てられたすべてのタスクを受け取り、チームを調整します。",
|
||
"leader_placeholder": "リーダーエージェントを選択",
|
||
"members_label": "追加メンバー",
|
||
"members_optional": "(任意)",
|
||
"members_hint": "リーダーがサブタスクを委任できるメンバーです。後から追加できます。",
|
||
"members_placeholder": "エージェントまたはワークスペースメンバーを追加",
|
||
"members_selected_count_other": "{{count}} 件選択中",
|
||
"members_more_count": "+{{count}}",
|
||
"members_remove_aria": "{{name}} を削除",
|
||
"picker_search_placeholder": "エージェントとメンバーを検索...",
|
||
"group_my_agents": "マイエージェント",
|
||
"group_workspace_agents": "ワークスペースエージェント",
|
||
"group_members": "メンバー",
|
||
"no_agents": "利用可能なアクティブエージェントがありません。先にエージェントを作成してください。",
|
||
"no_results": "結果なし",
|
||
"cancel": "キャンセル",
|
||
"submit": "スクワッドを作成",
|
||
"submitting": "作成中...",
|
||
"toast_created": "スクワッドを作成しました",
|
||
"toast_failed": "スクワッドを作成できませんでした",
|
||
"toast_member_add_failed": "{{name}} を追加できませんでした: {{error}}"
|
||
},
|
||
"create_project": {
|
||
"title": "新規プロジェクト",
|
||
"title_breadcrumb": "新規プロジェクト",
|
||
"icon_tooltip": "アイコンを選択",
|
||
"title_placeholder": "プロジェクトのタイトル",
|
||
"description_placeholder": "説明を追加...",
|
||
"description_hint": "このプロジェクトのすべてのタスクで、コンテキストとしてエージェントに共有されます。",
|
||
"lead": "リード",
|
||
"no_lead": "リードなし",
|
||
"set_start_date": "開始日を設定...",
|
||
"set_due_date": "期限を設定...",
|
||
"more_options_aria": "その他のオプション",
|
||
"lead_placeholder": "リードを指定...",
|
||
"members_group": "メンバー",
|
||
"agents_group": "エージェント",
|
||
"no_results": "結果なし",
|
||
"submit": "プロジェクトを作成",
|
||
"submitting": "作成中...",
|
||
"toast_created": "プロジェクトを作成しました",
|
||
"toast_failed": "プロジェクトを作成できませんでした",
|
||
"repos_pill": "リポジトリ",
|
||
"repos_pill_count_other": "{{count}} 個のリポジトリ",
|
||
"repos_heading": "このプロジェクトに GitHub リポジトリを接続",
|
||
"repos_empty": "まだワークスペースレベルのリポジトリがありません。下に URL を貼り付けてアドホックに接続してください。",
|
||
"repos_search_placeholder": "リポジトリを検索...",
|
||
"repos_search_empty": "検索に一致するリポジトリがありません。",
|
||
"repos_url_placeholder": "https://github.com/owner/repo または git@github.com:owner/repo.git",
|
||
"repos_add": "追加",
|
||
"repos_selected": "選択済み",
|
||
"source_pill_local": "ローカルディレクトリ",
|
||
"source_tab_repos": "GitHub リポジトリ",
|
||
"source_tab_local": "ローカルディレクトリ",
|
||
"local_heading": "このマシンのローカル作業ディレクトリを使用",
|
||
"local_on_device": "{{device}} にバインド済み",
|
||
"local_this_machine": "このマシン",
|
||
"local_daemon_offline": "デーモンがオフラインです。ローカルディレクトリをバインドするには起動してください。",
|
||
"local_pick": "ディレクトリを選択…",
|
||
"local_picking": "選択画面を開いています…",
|
||
"local_change": "ディレクトリを変更…",
|
||
"local_clear": "クリア",
|
||
"local_pick_failed": "ディレクトリ選択画面を開けませんでした。",
|
||
"local_invalid_dir": "このディレクトリは使用できません。別のものを選択してください。",
|
||
"local_hint": "他のマシンのエージェントはこのパスを参照できず、起動に失敗します。共有作業にはリポジトリを使用してください。"
|
||
},
|
||
"create_issue": {
|
||
"sr_manual": "新規イシュー",
|
||
"sr_agent": "イシューをクイック作成",
|
||
"manual_breadcrumb": "手動で作成",
|
||
"agent_breadcrumb": "エージェントで作成",
|
||
"title_placeholder": "イシューのタイトル",
|
||
"description_placeholder": "説明を追加...",
|
||
"more_options_aria": "その他のオプション",
|
||
"title_required": "作成するにはタイトルを入力してください",
|
||
"submit": "イシューを作成",
|
||
"submitting": "作成中...",
|
||
"toast_created": "イシューを作成しました",
|
||
"view_issue": "イシューを表示",
|
||
"toast_failed": "イシューを作成できませんでした",
|
||
"toast_duplicate_title": "重複イシュー",
|
||
"toast_duplicate_view": "既存のイシューを表示",
|
||
"toast_link_subissues_all_failed": "サブイシューをリンクできませんでした",
|
||
"toast_link_subissues_partial": "サブイシュー {{total}} 件中 {{failed}} 件をリンクできませんでした",
|
||
"toast_link_labels_failed": "ラベルを付けられませんでした",
|
||
"toast_set_properties_failed": "{{count}} 件のカスタムプロパティを設定できませんでした",
|
||
"switch_to_agent": "エージェントに切り替え",
|
||
"switch_to_agent_tooltip": "エージェントで作成に切り替えます。一行で説明すれば、エージェントがイシューを作成します",
|
||
"switch_to_manual": "手動に切り替え",
|
||
"switch_to_manual_tooltip": "手動作成に切り替えます。フィールドを自分で入力します",
|
||
"create_another": "もう 1 つ作成",
|
||
"remove_parent_aria": "親を削除",
|
||
"remove_subissue_aria": "サブイシュー {{identifier}} を削除",
|
||
"subissue_of": "{{identifier}} のサブイシュー",
|
||
"subissue_chip": "サブイシュー: {{identifier}}",
|
||
"parent_with_id": "親: {{identifier}}",
|
||
"set_due_date": "期限を設定...",
|
||
"set_start_date": "開始日を設定...",
|
||
"set_parent": "親イシューを設定...",
|
||
"add_subissue": "サブイシューを追加...",
|
||
"set_status": "ステータスを設定...",
|
||
"set_priority": "優先度を設定...",
|
||
"set_assignee": "担当者を設定...",
|
||
"set_labels": "ラベルを設定...",
|
||
"set_project": "プロジェクトを設定...",
|
||
"customize_fields": "フィールドをカスタマイズ...",
|
||
"custom_properties": "カスタムプロパティ",
|
||
"remove_parent": "親を削除",
|
||
"set_parent_picker": {
|
||
"title": "親イシューを設定",
|
||
"description": "新しいイシューの親に設定するイシューを検索してください"
|
||
},
|
||
"add_subissue_picker": {
|
||
"title": "サブイシューを追加",
|
||
"description": "新しいイシューのサブイシューとして追加するイシューを検索してください"
|
||
},
|
||
"agent": {
|
||
"created_by": "作成者",
|
||
"select_agent_aria": "エージェントを選択",
|
||
"pick_an_agent": "エージェントを選択…",
|
||
"no_agents": "利用可能なエージェントまたはスクワッドがありません。",
|
||
"search_placeholder": "エージェントとスクワッドを検索…",
|
||
"agents_group": "エージェント",
|
||
"squads_group": "スクワッド",
|
||
"version_missing": "このエージェントのデーモンは CLI バージョンを報告していません。エージェントで作成には multica CLI {{min}} 以上が必要です。デーモンをアップグレードして再接続するか、手動作成に切り替えてください。",
|
||
"version_below": "このエージェントのデーモン CLI は {{current}} です。エージェントで作成には {{min}} 以上が必要です。デーモンをアップグレードするか、手動作成に切り替えてください。",
|
||
"prompt_placeholder": "エージェントにやってほしいことを伝えてください。例: 「Bohan に Web プロジェクトのインボックス読み込みの遅さを直してもらう」",
|
||
"more_fields_aria": "その他のフィールド",
|
||
"set_project": "プロジェクトを設定...",
|
||
"set_priority": "優先度を設定...",
|
||
"set_due_date": "期限を設定...",
|
||
"customize_fields": "フィールドをカスタマイズ...",
|
||
"submit": "作成",
|
||
"sending": "送信中…",
|
||
"uploading": "アップロード中…",
|
||
"sent_label": "送信済み",
|
||
"sent_count": "{{count}} 件送信済み",
|
||
"version_blocked_tooltip": "デーモン CLI は {{min}} 以上である必要があります",
|
||
"toast_sent": "エージェントに送信しました。完了するとインボックス通知が届きます",
|
||
"error_agent_unavailable_fallback": "エージェントを利用できません。別のエージェントを選択してください。",
|
||
"error_daemon_version": "このエージェントのデーモン CLI({{current}})が必要なバージョン {{min}} を下回っています。エージェントで作成を使用するには、デーモンをアップグレードしてください。",
|
||
"error_unknown": "送信できませんでした。再試行してください。",
|
||
"sub_issue_of": "{{identifier}} のサブイシュー"
|
||
}
|
||
}
|
||
}
|