@sayknow-cli/coding-agent 0.6.5 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.6.6] - 2026-09-28
6
+
7
+ ### Added
8
+
9
+ - `ctrl+q` (`app.session.continue`) continues the most recent saved session in one keystroke, from the launch card or mid-session; it never resumes the live session into itself and refuses while a turn is running. The launch card marks that session with `›` and names the key next to `alt+r` for the full list. It is a Control chord on purpose: many macOS terminals turn Option into composed text, so Option shortcuts such as `alt+r` only work where the terminal sends Option as Meta.
10
+
11
+ ### Changed
12
+
13
+ - The launch screen is a compact card instead of the two-column ledger. The Sayknow pet — the same octopus sprite as the composer pet, drawn in half blocks so it needs no image protocol — sits beside four lines — version, tagline, model with reasoning level, and project path with branch and change counts — followed by one line after an update with the new version and its first note (pointing at `/changelog`), the three most recent sessions (with the key that opens the full list), and a single row of keys. Commits, preset, role models, MCP/skill/rule/LSP status, workflows, and the full keymap are no longer on it; they are one key or command away. The card stays within 76 columns on wide terminals and, when rows run short, drops the keys row first, then the release line, then the sessions. The pet is the one you keep beside the composer (`pet.mode`), or, with the pet off, blue on `blue-octopus` and red elsewhere. The intro has the pet sway its tentacles and lets color spread for about half a second; every fact is readable from the first frame, and `startup.skipLogoAnimation` still turns it off.
14
+
5
15
  ## [0.6.5] - 2026-09-26
6
16
 
7
17
  ### Added
@@ -30,6 +30,7 @@ interface AppKeybindings {
30
30
  "app.session.tree": true;
31
31
  "app.session.fork": true;
32
32
  "app.session.resume": true;
33
+ "app.session.continue": true;
33
34
  "app.session.observe": true;
34
35
  "app.session.dashboard": true;
35
36
  "app.jobs.open": true;
@@ -167,6 +168,10 @@ export declare const KEYBINDINGS: {
167
168
  readonly defaultKeys: "alt+r";
168
169
  readonly description: "Resume session";
169
170
  };
171
+ readonly "app.session.continue": {
172
+ readonly defaultKeys: "ctrl+q";
173
+ readonly description: "Continue the most recent session";
174
+ };
170
175
  readonly "app.session.observe": {
171
176
  readonly defaultKeys: "ctrl+s";
172
177
  readonly description: "Observe subagent sessions";
@@ -8,41 +8,16 @@ export declare const en: {
8
8
  readonly "lang.fr": "Français";
9
9
  readonly "lang.de": "Deutsch";
10
10
  readonly "welcome.tagline": "Coding should feel like thinking.";
11
- readonly "welcome.workflows": "Workflows";
12
- readonly "welcome.wf.deepInterview": "scope · interview → spec";
13
- readonly "welcome.wf.ralplan": "consensus plan";
14
- readonly "welcome.wf.ultragoal": "autonomous build";
15
- readonly "welcome.wf.team": "parallel agents";
16
- readonly "welcome.flowKeys": "Flow keys";
17
11
  readonly "welcome.commands": "commands";
18
- readonly "welcome.actions": "actions";
19
- readonly "welcome.shell": "shell";
20
- readonly "welcome.python": "python";
21
12
  readonly "welcome.keymap": "keymap";
22
13
  readonly "welcome.model": "model";
23
- readonly "welcome.reasoning": "reasoning";
24
- readonly "welcome.projectPulse": "Project pulse";
25
- readonly "welcome.noLsp": "No LSP servers";
26
- readonly "welcome.sessionTrail": "Session trail";
27
- readonly "welcome.noSessions": "No saved trails";
14
+ readonly "welcome.sessionTrail": "Recent sessions";
15
+ readonly "welcome.noSessions": "No saved sessions";
28
16
  readonly "welcome.allSessions": "{key} all sessions";
17
+ readonly "welcome.continue": "{key} continue";
18
+ readonly "welcome.sessions": "sessions";
29
19
  readonly "welcome.chooseModel": "choose a model";
30
20
  readonly "welcome.modelHint": "ctrl+l to pick · / for commands";
31
- readonly "welcome.label.workspace": "workspace";
32
- readonly "welcome.label.branch": "branch";
33
- readonly "welcome.label.commits": "commits";
34
- readonly "welcome.label.model": "model";
35
- readonly "welcome.label.reasoning": "reasoning";
36
- readonly "welcome.label.preset": "preset";
37
- readonly "welcome.label.roles": "roles";
38
- readonly "welcome.label.tools": "tools";
39
- readonly "welcome.noGit": "not a git repository";
40
- readonly "welcome.rolesInherit": "roles follow the default model";
41
- readonly "welcome.skills": "skills";
42
- readonly "welcome.rules": "rules";
43
- readonly "welcome.clean": "clean";
44
- readonly "welcome.whatsNew": "What's new";
45
- readonly "welcome.readyPrompt": "Ready for your next prompt";
46
21
  readonly "settings.tab.appearance": "Appearance";
47
22
  readonly "settings.tab.model": "Model";
48
23
  readonly "settings.tab.interaction": "Interaction";
@@ -1,23 +1,13 @@
1
1
  import type { ThinkingLevel } from "@sayknow-cli/agent-core";
2
- import { type Component } from "@sayknow-cli/tui";
2
+ import { type Component, type PetSkinId } from "@sayknow-cli/tui";
3
3
  import { type KeyDisplayContext } from "../../config/keybindings";
4
4
  export interface RecentSession {
5
5
  name: string;
6
6
  timeAgo: string;
7
7
  }
8
- export interface LspServerInfo {
9
- name: string;
10
- status: "idle" | "ready" | "error" | "connecting";
11
- fileTypes: string[];
12
- }
13
- export interface WelcomeRoleBinding {
14
- role: string;
15
- model: string;
16
- }
17
8
  /**
18
- * Workspace and runtime facts shown in the launch ledger. Every field is
19
- * optional: the ledger renders what is known and fills the rest in as the
20
- * asynchronous probes (git status, context files, MCP) settle.
9
+ * Workspace facts on the launch card. Every field is optional: the card renders
10
+ * what is known and fills in git state once the asynchronous probe settles.
21
11
  */
22
12
  export interface WelcomeSnapshot {
23
13
  /** Display path of the project directory (already home-shortened). */
@@ -29,19 +19,7 @@ export interface WelcomeSnapshot {
29
19
  unstaged: number;
30
20
  untracked: number;
31
21
  } | null;
32
- /** Latest commits as `<short-sha> <subject>` onelines, newest first. */
33
- recentCommits?: readonly string[];
34
22
  thinkingLevel?: ThinkingLevel | string;
35
- /** Display name of the active model preset. */
36
- profile?: string;
37
- roles?: readonly WelcomeRoleBinding[];
38
- mcp?: {
39
- connected: number;
40
- total: number;
41
- };
42
- skills?: number;
43
- /** Display names of the loaded project instruction files (AGENTS.md, …). */
44
- contextFiles?: readonly string[];
45
23
  }
46
24
  export type WelcomeLogoMode = "unicode" | "square" | "ascii";
47
25
  export interface WelcomeComponentOptions {
@@ -49,21 +27,24 @@ export interface WelcomeComponentOptions {
49
27
  getReservedBottomRows?: (termWidth: number) => number;
50
28
  changelogMarkdown?: string;
51
29
  rightGutterWidth?: number;
30
+ /** Show only the version on the release line, without its first note. */
52
31
  collapseChangelog?: boolean;
53
32
  buildLabel?: string;
54
33
  keyDisplayContext?: KeyDisplayContext;
55
34
  skipLogoAnimation?: boolean;
56
35
  snapshot?: WelcomeSnapshot;
57
- /** Key bound to the resume picker (`app.session.resume`); the sessions heading names it. */
36
+ /** Key bound to the resume picker (`app.session.resume`); the card names it. */
58
37
  resumeKey?: string;
38
+ /** Key bound to `app.session.continue`, which resumes the first session on the card. */
39
+ continueKey?: string;
40
+ /** Which Sayknow pet stands on the card (default red). */
41
+ petSkin?: PetSkinId;
59
42
  }
60
43
  /**
61
- * Sayknow-CLI launch surface: an open, borderless ledger. The left column is
62
- * the state of this workspace — path, branch, model, reasoning, preset, role
63
- * agents, tooling — so the first screen answers "what am I about to run with".
64
- * The right column carries activity: what changed, recent sessions, workflows
65
- * and keys. No enclosing box and no hero wordmark: the octopus mark and the
66
- * facts carry the identity.
44
+ * Sayknow-CLI launch card: the octopus mark beside who and where you are
45
+ * (version, model and reasoning, project and branch), then the three most recent
46
+ * sessions and a single row of keys. Everything else — the full session list,
47
+ * workflows, the keymap, release notes — is one key away, not on the card.
67
48
  */
68
49
  export declare class WelcomeComponent implements Component {
69
50
  #private;
@@ -71,23 +52,19 @@ export declare class WelcomeComponent implements Component {
71
52
  private modelName;
72
53
  private providerName;
73
54
  private recentSessions;
74
- private lspServers;
75
55
  private readonly logoMode;
76
56
  private readonly options;
77
- constructor(version: string, modelName: string, providerName: string, recentSessions?: RecentSession[], lspServers?: LspServerInfo[], logoMode?: WelcomeLogoMode, options?: WelcomeComponentOptions);
57
+ constructor(version: string, modelName: string, providerName: string, recentSessions?: RecentSession[], logoMode?: WelcomeLogoMode, options?: WelcomeComponentOptions);
78
58
  invalidate(): void;
79
59
  /**
80
- * Play a short one-shot reveal: sections appear top to bottom a few frames
81
- * apart, each settling from dim into its colors. Launch happens once per
82
- * session, so a sub-second reveal is affordable; it never blocks input.
83
- * Safe to call multiple times — subsequent calls reset and replay.
60
+ * Play the short launch intro. Content is fully readable from the first frame;
61
+ * only color and the tentacles move. Safe to call again — it restarts.
84
62
  */
85
63
  playIntro(requestRender: () => void): void;
86
64
  dispose(): void;
87
65
  setModel(modelName: string, providerName: string): void;
88
66
  setRecentSessions(sessions: RecentSession[]): void;
89
- setLspServers(servers: LspServerInfo[]): void;
90
- /** Merge newly probed workspace facts into the ledger. */
67
+ /** Merge newly probed workspace facts into the card. */
91
68
  setSnapshot(patch: WelcomeSnapshot): void;
92
69
  render(termWidth: number): string[];
93
70
  }
@@ -22,7 +22,7 @@ import type { EvalExecutionComponent } from "./components/eval-execution";
22
22
  import type { HookEditorComponent } from "./components/hook-editor";
23
23
  import type { HookInputComponent } from "./components/hook-input";
24
24
  import type { HookSelectorComponent } from "./components/hook-selector";
25
- import { type PetMode, SayknowPetWidget } from "./components/sayknow-pet-widget";
25
+ import { type PetMode, type PetSkinId, SayknowPetWidget } from "./components/sayknow-pet-widget";
26
26
  import type { ToolExecutionHandle } from "./components/tool-execution";
27
27
  import { StatusLineComponent } from "./components/tool-status-header";
28
28
  import { type WelcomeLogoMode } from "./components/welcome";
@@ -41,6 +41,11 @@ export declare function getComposerPlaceholder(keybindings: Pick<KeybindingsMana
41
41
  readonly busyPromptMode: "steer" | "queue";
42
42
  }): string;
43
43
  export declare function getWelcomeTranscriptReservedRows(chatContainer: Container, width: number): number;
44
+ /**
45
+ * The pet on the launch card: the one the user keeps beside the composer, or —
46
+ * with the pet off — the skin that matches the theme (blue for blue-octopus).
47
+ */
48
+ export declare function resolveWelcomePetSkin(petMode: PetMode, themeName: string | undefined): PetSkinId;
44
49
  /**
45
50
  * The composer is an open rail, not a box: every input row starts with the same
46
51
  * rail glyph a submitted prompt keeps in the transcript, colored by the editor's
@@ -276,6 +281,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
276
281
  showUserMessageSelector(): void;
277
282
  showTreeSelector(): void;
278
283
  showSessionSelector(): void;
284
+ continueRecentSession(): Promise<void>;
279
285
  handleResumeSession(sessionPath: string, options?: {
280
286
  requireIdle?: boolean;
281
287
  }): Promise<boolean>;
@@ -286,6 +286,8 @@ export interface InteractiveModeContext {
286
286
  showUserMessageSelector(): void;
287
287
  showTreeSelector(): void;
288
288
  showSessionSelector(): void;
289
+ /** Resume the most recent saved session other than this one (the launch card's first row). */
290
+ continueRecentSession(): Promise<void>;
289
291
  showSessionsDashboard(): void;
290
292
  handleResumeSession(sessionPath: string, options?: {
291
293
  requireIdle?: boolean;
@@ -8,6 +8,7 @@ import type { OutputMeta } from "./output-meta";
8
8
  declare const debugSchema: z.ZodObject<{
9
9
  action: z.ZodEnum<{
10
10
  output: "output";
11
+ sessions: "sessions";
11
12
  pause: "pause";
12
13
  scopes: "scopes";
13
14
  variables: "variables";
@@ -34,7 +35,6 @@ declare const debugSchema: z.ZodObject<{
34
35
  loaded_sources: "loaded_sources";
35
36
  custom_request: "custom_request";
36
37
  terminate: "terminate";
37
- sessions: "sessions";
38
38
  }>;
39
39
  program: z.ZodOptional<z.ZodString>;
40
40
  args: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -131,6 +131,7 @@ export declare class DebugTool implements AgentTool<typeof debugSchema, DebugToo
131
131
  readonly parameters: z.ZodObject<{
132
132
  action: z.ZodEnum<{
133
133
  output: "output";
134
+ sessions: "sessions";
134
135
  pause: "pause";
135
136
  scopes: "scopes";
136
137
  variables: "variables";
@@ -157,7 +158,6 @@ export declare class DebugTool implements AgentTool<typeof debugSchema, DebugToo
157
158
  loaded_sources: "loaded_sources";
158
159
  custom_request: "custom_request";
159
160
  terminate: "terminate";
160
- sessions: "sessions";
161
161
  }>;
162
162
  program: z.ZodOptional<z.ZodString>;
163
163
  args: z.ZodOptional<z.ZodArray<z.ZodString>>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sayknow-cli/coding-agent",
4
- "version": "0.6.5",
4
+ "version": "0.6.6",
5
5
  "description": "Sayknow-CLI CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://sayknow-cli.com",
7
7
  "author": "jaybeyond",
@@ -54,12 +54,12 @@
54
54
  "@agentclientprotocol/sdk": "1.3.0",
55
55
  "@babel/parser": "^7.29.3",
56
56
  "@mozilla/readability": "^0.6.0",
57
- "@sayknow-cli/stats": "0.6.5",
58
- "@sayknow-cli/agent-core": "0.6.5",
59
- "@sayknow-cli/ai": "0.6.5",
60
- "@sayknow-cli/natives": "0.6.5",
61
- "@sayknow-cli/tui": "0.6.5",
62
- "@sayknow-cli/utils": "0.6.5",
57
+ "@sayknow-cli/stats": "0.6.6",
58
+ "@sayknow-cli/agent-core": "0.6.6",
59
+ "@sayknow-cli/ai": "0.6.6",
60
+ "@sayknow-cli/natives": "0.6.6",
61
+ "@sayknow-cli/tui": "0.6.6",
62
+ "@sayknow-cli/utils": "0.6.6",
63
63
  "@puppeteer/browsers": "^2.13.0",
64
64
  "@types/turndown": "5.0.6",
65
65
  "@xterm/headless": "^6.0.0",
@@ -43,6 +43,7 @@ interface AppKeybindings {
43
43
  "app.session.tree": true;
44
44
  "app.session.fork": true;
45
45
  "app.session.resume": true;
46
+ "app.session.continue": true;
46
47
  "app.session.observe": true;
47
48
  "app.session.dashboard": true;
48
49
  "app.jobs.open": true;
@@ -189,6 +190,12 @@ export const KEYBINDINGS = {
189
190
  defaultKeys: "alt+r",
190
191
  description: "Resume session",
191
192
  },
193
+ // A Control chord on purpose: macOS terminals often turn Option into composed text,
194
+ // and continuing the last session is the one launch action that must always work.
195
+ "app.session.continue": {
196
+ defaultKeys: "ctrl+q",
197
+ description: "Continue the most recent session",
198
+ },
192
199
  "app.session.observe": {
193
200
  defaultKeys: "ctrl+s",
194
201
  description: "Observe subagent sessions",
@@ -8,41 +8,16 @@ export const de: Partial<Record<MsgKey, string>> = {
8
8
  "lang.zh": "中文 (简体)",
9
9
  "lang.ja": "日本語",
10
10
  "welcome.tagline": "Programmieren sollte sich wie Denken anfühlen.",
11
- "welcome.workflows": "Workflows",
12
- "welcome.wf.deepInterview": "Umfang · Interview → Spec",
13
- "welcome.wf.ralplan": "Konsensplan",
14
- "welcome.wf.ultragoal": "autonomer Build",
15
- "welcome.wf.team": "parallele Agenten",
16
- "welcome.flowKeys": "Flow-Tasten",
17
11
  "welcome.commands": "Befehle",
18
- "welcome.actions": "Aktionen",
19
- "welcome.shell": "Shell",
20
- "welcome.python": "Python",
21
12
  "welcome.keymap": "Keymap",
22
13
  "welcome.model": "Modell",
23
- "welcome.reasoning": "Reasoning",
24
- "welcome.projectPulse": "Projektpuls",
25
- "welcome.noLsp": "Keine LSP-Server",
26
14
  "welcome.sessionTrail": "Sitzungsverlauf",
27
15
  "welcome.noSessions": "Keine gespeicherten Verläufe",
28
16
  "welcome.allSessions": "{key} alle Sitzungen",
17
+ "welcome.continue": "{key} fortsetzen",
18
+ "welcome.sessions": "Sitzungen",
29
19
  "welcome.chooseModel": "Modell auswählen",
30
20
  "welcome.modelHint": "ctrl+l zum Auswählen · / für Befehle",
31
- "welcome.label.workspace": "Arbeitsbereich",
32
- "welcome.label.branch": "Branch",
33
- "welcome.label.commits": "Commits",
34
- "welcome.label.model": "Modell",
35
- "welcome.label.reasoning": "Reasoning",
36
- "welcome.label.preset": "Preset",
37
- "welcome.label.roles": "Rollen",
38
- "welcome.label.tools": "Werkzeuge",
39
- "welcome.noGit": "kein Git-Repository",
40
- "welcome.rolesInherit": "Rollen folgen dem Standardmodell",
41
- "welcome.skills": "Skills",
42
- "welcome.rules": "Regeln",
43
- "welcome.clean": "sauber",
44
- "welcome.whatsNew": "Neu",
45
- "welcome.readyPrompt": "Bereit für den nächsten Prompt",
46
21
  "settings.tab.appearance": "Darstellung",
47
22
  "settings.tab.model": "Modell",
48
23
  "settings.tab.interaction": "Interaktion",
@@ -13,41 +13,16 @@ export const en = {
13
13
 
14
14
  // ── Welcome surface ──
15
15
  "welcome.tagline": "Coding should feel like thinking.",
16
- "welcome.workflows": "Workflows",
17
- "welcome.wf.deepInterview": "scope · interview → spec",
18
- "welcome.wf.ralplan": "consensus plan",
19
- "welcome.wf.ultragoal": "autonomous build",
20
- "welcome.wf.team": "parallel agents",
21
- "welcome.flowKeys": "Flow keys",
22
16
  "welcome.commands": "commands",
23
- "welcome.actions": "actions",
24
- "welcome.shell": "shell",
25
- "welcome.python": "python",
26
17
  "welcome.keymap": "keymap",
27
18
  "welcome.model": "model",
28
- "welcome.reasoning": "reasoning",
29
- "welcome.projectPulse": "Project pulse",
30
- "welcome.noLsp": "No LSP servers",
31
- "welcome.sessionTrail": "Session trail",
32
- "welcome.noSessions": "No saved trails",
19
+ "welcome.sessionTrail": "Recent sessions",
20
+ "welcome.noSessions": "No saved sessions",
33
21
  "welcome.allSessions": "{key} all sessions",
22
+ "welcome.continue": "{key} continue",
23
+ "welcome.sessions": "sessions",
34
24
  "welcome.chooseModel": "choose a model",
35
25
  "welcome.modelHint": "ctrl+l to pick · / for commands",
36
- "welcome.label.workspace": "workspace",
37
- "welcome.label.branch": "branch",
38
- "welcome.label.commits": "commits",
39
- "welcome.label.model": "model",
40
- "welcome.label.reasoning": "reasoning",
41
- "welcome.label.preset": "preset",
42
- "welcome.label.roles": "roles",
43
- "welcome.label.tools": "tools",
44
- "welcome.noGit": "not a git repository",
45
- "welcome.rolesInherit": "roles follow the default model",
46
- "welcome.skills": "skills",
47
- "welcome.rules": "rules",
48
- "welcome.clean": "clean",
49
- "welcome.whatsNew": "What's new",
50
- "welcome.readyPrompt": "Ready for your next prompt",
51
26
 
52
27
  // ── Settings tabs ──
53
28
  "settings.tab.appearance": "Appearance",
@@ -8,41 +8,16 @@ export const es: Partial<Record<MsgKey, string>> = {
8
8
  "lang.zh": "中文 (简体)",
9
9
  "lang.ja": "日本語",
10
10
  "welcome.tagline": "Programar debería sentirse como pensar.",
11
- "welcome.workflows": "Flujos de trabajo",
12
- "welcome.wf.deepInterview": "alcance · entrevista → spec",
13
- "welcome.wf.ralplan": "plan por consenso",
14
- "welcome.wf.ultragoal": "build autónomo",
15
- "welcome.wf.team": "agentes paralelos",
16
- "welcome.flowKeys": "Teclas de flujo",
17
11
  "welcome.commands": "comandos",
18
- "welcome.actions": "acciones",
19
- "welcome.shell": "shell",
20
- "welcome.python": "python",
21
12
  "welcome.keymap": "keymap",
22
13
  "welcome.model": "modelo",
23
- "welcome.reasoning": "razonamiento",
24
- "welcome.projectPulse": "Pulso del proyecto",
25
- "welcome.noLsp": "Sin servidores LSP",
26
14
  "welcome.sessionTrail": "Historial de sesión",
27
15
  "welcome.noSessions": "Sin historiales guardados",
28
16
  "welcome.allSessions": "{key} todas las sesiones",
17
+ "welcome.continue": "{key} continuar",
18
+ "welcome.sessions": "sesiones",
29
19
  "welcome.chooseModel": "elige un modelo",
30
20
  "welcome.modelHint": "ctrl+l para elegir · / para comandos",
31
- "welcome.label.workspace": "espacio",
32
- "welcome.label.branch": "rama",
33
- "welcome.label.commits": "commits",
34
- "welcome.label.model": "modelo",
35
- "welcome.label.reasoning": "razonamiento",
36
- "welcome.label.preset": "preset",
37
- "welcome.label.roles": "roles",
38
- "welcome.label.tools": "herramientas",
39
- "welcome.noGit": "no es un repositorio git",
40
- "welcome.rolesInherit": "los roles usan el modelo por defecto",
41
- "welcome.skills": "skills",
42
- "welcome.rules": "reglas",
43
- "welcome.clean": "limpio",
44
- "welcome.whatsNew": "Novedades",
45
- "welcome.readyPrompt": "Listo para tu próximo prompt",
46
21
  "settings.tab.appearance": "Apariencia",
47
22
  "settings.tab.model": "Modelo",
48
23
  "settings.tab.interaction": "Interacción",
@@ -8,41 +8,16 @@ export const fr: Partial<Record<MsgKey, string>> = {
8
8
  "lang.zh": "中文 (简体)",
9
9
  "lang.ja": "日本語",
10
10
  "welcome.tagline": "Coder devrait être aussi naturel que penser.",
11
- "welcome.workflows": "Workflows",
12
- "welcome.wf.deepInterview": "périmètre · entretien → spec",
13
- "welcome.wf.ralplan": "plan par consensus",
14
- "welcome.wf.ultragoal": "build autonome",
15
- "welcome.wf.team": "agents parallèles",
16
- "welcome.flowKeys": "Touches de flux",
17
11
  "welcome.commands": "commandes",
18
- "welcome.actions": "actions",
19
- "welcome.shell": "shell",
20
- "welcome.python": "python",
21
12
  "welcome.keymap": "keymap",
22
13
  "welcome.model": "modèle",
23
- "welcome.reasoning": "raisonnement",
24
- "welcome.projectPulse": "Pouls du projet",
25
- "welcome.noLsp": "Aucun serveur LSP",
26
14
  "welcome.sessionTrail": "Historique de session",
27
15
  "welcome.noSessions": "Aucun historique enregistré",
28
16
  "welcome.allSessions": "{key} toutes les sessions",
17
+ "welcome.continue": "{key} reprendre",
18
+ "welcome.sessions": "sessions",
29
19
  "welcome.chooseModel": "choisir un modèle",
30
20
  "welcome.modelHint": "ctrl+l pour choisir · / pour les commandes",
31
- "welcome.label.workspace": "espace",
32
- "welcome.label.branch": "branche",
33
- "welcome.label.commits": "commits",
34
- "welcome.label.model": "modèle",
35
- "welcome.label.reasoning": "raisonnement",
36
- "welcome.label.preset": "preset",
37
- "welcome.label.roles": "rôles",
38
- "welcome.label.tools": "outils",
39
- "welcome.noGit": "pas un dépôt git",
40
- "welcome.rolesInherit": "les rôles suivent le modèle par défaut",
41
- "welcome.skills": "skills",
42
- "welcome.rules": "règles",
43
- "welcome.clean": "propre",
44
- "welcome.whatsNew": "Nouveautés",
45
- "welcome.readyPrompt": "Prêt pour le prochain prompt",
46
21
  "settings.tab.appearance": "Apparence",
47
22
  "settings.tab.model": "Modèle",
48
23
  "settings.tab.interaction": "Interaction",
@@ -5,41 +5,16 @@ export const ja: Partial<Record<MsgKey, string>> = {
5
5
  "lang.auto": "自動 (システム)",
6
6
 
7
7
  "welcome.tagline": "コーディングは、思考のように。",
8
- "welcome.workflows": "ワークフロー",
9
- "welcome.wf.deepInterview": "要件インタビュー → 仕様",
10
- "welcome.wf.ralplan": "合意ベースの計画",
11
- "welcome.wf.ultragoal": "自律ビルド",
12
- "welcome.wf.team": "並列エージェント",
13
- "welcome.flowKeys": "ショートカット",
14
8
  "welcome.commands": "コマンド",
15
- "welcome.actions": "アクション",
16
- "welcome.shell": "シェル",
17
- "welcome.python": "Python",
18
9
  "welcome.keymap": "キーマップ",
19
10
  "welcome.model": "モデル",
20
- "welcome.reasoning": "推論",
21
- "welcome.projectPulse": "プロジェクト状況",
22
- "welcome.noLsp": "LSP サーバーなし",
23
11
  "welcome.sessionTrail": "セッション履歴",
24
12
  "welcome.noSessions": "保存されたセッションなし",
25
13
  "welcome.allSessions": "{key} すべて表示",
14
+ "welcome.continue": "{key} 続ける",
15
+ "welcome.sessions": "セッション",
26
16
  "welcome.chooseModel": "モデルを選択",
27
17
  "welcome.modelHint": "ctrl+l で選択 · / でコマンド",
28
- "welcome.label.workspace": "ワークスペース",
29
- "welcome.label.branch": "ブランチ",
30
- "welcome.label.commits": "コミット",
31
- "welcome.label.model": "モデル",
32
- "welcome.label.reasoning": "推論",
33
- "welcome.label.preset": "プリセット",
34
- "welcome.label.roles": "ロール",
35
- "welcome.label.tools": "ツール",
36
- "welcome.noGit": "git リポジトリではありません",
37
- "welcome.rolesInherit": "ロールは既定モデルに従う",
38
- "welcome.skills": "スキル",
39
- "welcome.rules": "ルール",
40
- "welcome.clean": "変更なし",
41
- "welcome.whatsNew": "新着",
42
- "welcome.readyPrompt": "次のプロンプトを待機中",
43
18
 
44
19
  "settings.tab.appearance": "外観",
45
20
  "settings.tab.model": "モデル",
@@ -5,41 +5,16 @@ export const ko: Partial<Record<MsgKey, string>> = {
5
5
  "lang.auto": "자동 (시스템)",
6
6
 
7
7
  "welcome.tagline": "생각하듯, 코딩하다.",
8
- "welcome.workflows": "워크플로",
9
- "welcome.wf.deepInterview": "요구사항 인터뷰 → 명세",
10
- "welcome.wf.ralplan": "합의 기반 계획",
11
- "welcome.wf.ultragoal": "자율 목표 실행",
12
- "welcome.wf.team": "병렬 에이전트",
13
- "welcome.flowKeys": "단축키",
14
8
  "welcome.commands": "명령",
15
- "welcome.actions": "액션",
16
- "welcome.shell": "셸",
17
- "welcome.python": "파이썬",
18
9
  "welcome.keymap": "키맵",
19
10
  "welcome.model": "모델",
20
- "welcome.reasoning": "추론",
21
- "welcome.projectPulse": "프로젝트 상태",
22
- "welcome.noLsp": "LSP 서버 없음",
23
- "welcome.sessionTrail": "세션 기록",
11
+ "welcome.sessionTrail": "최근 세션",
24
12
  "welcome.noSessions": "저장된 세션 없음",
25
13
  "welcome.allSessions": "{key} 전체 보기",
14
+ "welcome.continue": "{key} 이어하기",
15
+ "welcome.sessions": "세션",
26
16
  "welcome.chooseModel": "모델 선택",
27
17
  "welcome.modelHint": "ctrl+l 선택 · / 명령",
28
- "welcome.label.workspace": "작업공간",
29
- "welcome.label.branch": "브랜치",
30
- "welcome.label.commits": "커밋",
31
- "welcome.label.model": "모델",
32
- "welcome.label.reasoning": "추론",
33
- "welcome.label.preset": "프리셋",
34
- "welcome.label.roles": "역할",
35
- "welcome.label.tools": "도구",
36
- "welcome.noGit": "git 저장소 아님",
37
- "welcome.rolesInherit": "역할은 기본 모델을 따름",
38
- "welcome.skills": "스킬",
39
- "welcome.rules": "규칙",
40
- "welcome.clean": "깨끗함",
41
- "welcome.whatsNew": "새 소식",
42
- "welcome.readyPrompt": "다음 프롬프트를 기다리는 중",
43
18
 
44
19
  "settings.tab.appearance": "외관",
45
20
  "settings.tab.model": "모델",
@@ -5,41 +5,16 @@ export const zh: Partial<Record<MsgKey, string>> = {
5
5
  "lang.auto": "自动 (跟随系统)",
6
6
 
7
7
  "welcome.tagline": "写代码,本该如思考。",
8
- "welcome.workflows": "工作流",
9
- "welcome.wf.deepInterview": "需求访谈 → 规格",
10
- "welcome.wf.ralplan": "共识规划",
11
- "welcome.wf.ultragoal": "自主构建",
12
- "welcome.wf.team": "并行智能体",
13
- "welcome.flowKeys": "快捷键",
14
8
  "welcome.commands": "命令",
15
- "welcome.actions": "操作",
16
- "welcome.shell": "终端",
17
- "welcome.python": "Python",
18
9
  "welcome.keymap": "按键表",
19
10
  "welcome.model": "模型",
20
- "welcome.reasoning": "推理",
21
- "welcome.projectPulse": "项目状态",
22
- "welcome.noLsp": "无 LSP 服务器",
23
11
  "welcome.sessionTrail": "会话记录",
24
12
  "welcome.noSessions": "暂无已保存会话",
25
13
  "welcome.allSessions": "{key} 查看全部",
14
+ "welcome.continue": "{key} 继续",
15
+ "welcome.sessions": "会话",
26
16
  "welcome.chooseModel": "选择模型",
27
17
  "welcome.modelHint": "ctrl+l 选择 · / 命令",
28
- "welcome.label.workspace": "工作区",
29
- "welcome.label.branch": "分支",
30
- "welcome.label.commits": "提交",
31
- "welcome.label.model": "模型",
32
- "welcome.label.reasoning": "推理",
33
- "welcome.label.preset": "预设",
34
- "welcome.label.roles": "角色",
35
- "welcome.label.tools": "工具",
36
- "welcome.noGit": "不是 git 仓库",
37
- "welcome.rolesInherit": "角色沿用默认模型",
38
- "welcome.skills": "技能",
39
- "welcome.rules": "规则",
40
- "welcome.clean": "干净",
41
- "welcome.whatsNew": "新变化",
42
- "welcome.readyPrompt": "等待下一个提示",
43
18
 
44
19
  "settings.tab.appearance": "外观",
45
20
  "settings.tab.model": "模型",