Compare commits

...

21 Commits

Author SHA1 Message Date
Bryan Morgan a5e5a8544c fix(snapshots): update text snapshots after merge with main
Regenerate .snap files that became stale after merging latest
main (ModelDefinitions, command conflict handling, settings changes).
2026-03-15 14:28:14 -04:00
Bryan Morgan 1352bfdb42 Merge remote-tracking branch 'origin/main' into fix/pr-automation-permissions 2026-03-15 14:17:53 -04:00
Bryan Morgan cc30b82f6c fix(automation): normalize snapshots by removing trailing whitespace 2026-03-15 14:17:26 -04:00
Bryan Morgan ee04f5598f fix(automation): resolve yamllint errors and update snapshots for subtle color changes 2026-03-15 13:43:19 -04:00
Bryan Morgan 5be528efa7 fix(automation): remove invalid 'members' permission scope 2026-03-15 13:18:36 -04:00
Bryan Morgan 1971546b40 docs(automation): refine closure message to 'guarantee review and consideration' 2026-03-15 13:13:15 -04:00
Bryan Morgan 7794d9d044 docs(automation): update PR closure messaging and grace period 2026-03-15 13:12:12 -04:00
Bryan Morgan cc4ae828aa fix(automation): enforce help-wanted policy and harden maintainer detection 2026-03-15 13:08:38 -04:00
Abhi 6061d8cac7 fix(core): merge user settings with extension-provided MCP servers (#22484) 2026-03-15 02:46:06 +00:00
N. Taylor Mullen bd590bbde6 fix(cli): improve command conflict handling for skills (#21942) 2026-03-14 23:33:14 +00:00
kevinjwang1 0bf7ea60c5 Add ModelDefinitions to ModelConfigService (#22302) 2026-03-14 21:45:21 +00:00
kevinjwang1 8f2697c2e5 Add registry var (#22224) 2026-03-14 20:14:51 +00:00
Abhi c5502b2dc5 fix(core): fix manual deletion of subagent histories (#22407) 2026-03-14 20:09:43 +00:00
Abhijit Balaji 9f7691fd88 feat(prompts): implement Topic-Action-Summary model for verbosity reduction (#21503) 2026-03-14 05:10:30 +00:00
Sandy Tao 3682842a5d fix(core): deduplicate project memory when JIT context is enabled (#22234) 2026-03-14 04:34:53 +00:00
Christian Gunderman 64c50d32ac Fix issue where config was undefined. (#22397) 2026-03-14 01:36:25 +00:00
anj-s 604d4ded8d fix(core): use session-specific temp directory for task tracker (#22382) 2026-03-13 23:35:26 +00:00
Gal Zahavi f75bdba568 fix(mcp): handle equivalent root resource URLs in OAuth validation (#20231) 2026-03-13 23:32:40 +00:00
Sehoon Shon 8d68ece8d6 Revert "fix(cli): validate --model argument at startup" (#22378) 2026-03-13 23:17:29 +00:00
Gal Zahavi b49fc8122d feat(security): add disableAlwaysAllow setting to disable auto-approvals (#21941) 2026-03-13 23:02:09 +00:00
anj-s b0d151bd65 feat(tracker): add tracker policy (#22379) 2026-03-13 22:19:04 +00:00
125 changed files with 4577 additions and 2811 deletions
@@ -40,6 +40,8 @@ jobs:
github-token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
script: |
const dryRun = process.env.DRY_RUN === 'true';
const fourteenDaysAgo = new Date();
fourteenDaysAgo.setDate(fourteenDaysAgo.getDate() - 14);
const thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
@@ -56,48 +58,38 @@ jobs:
for (const m of members) maintainerLogins.add(m.login.toLowerCase());
core.info(`Successfully fetched ${members.length} team members from ${team_slug}`);
} catch (e) {
core.warning(`Failed to fetch team members from ${team_slug}: ${e.message}`);
// Silently skip if permissions are insufficient; we will rely on author_association
core.debug(`Skipped team fetch for ${team_slug}: ${e.message}`);
}
}
const isGooglerCache = new Map();
const isGoogler = async (login) => {
if (isGooglerCache.has(login)) return isGooglerCache.get(login);
const isMaintainer = async (login, assoc) => {
// Reliably identify maintainers using authorAssociation (provided by GitHub)
// and organization membership (if available).
const isTeamMember = maintainerLogins.has(login.toLowerCase());
const isRepoMaintainer = ['OWNER', 'MEMBER', 'COLLABORATOR'].includes(assoc);
if (isTeamMember || isRepoMaintainer) return true;
// Fallback: Check if user belongs to the 'google' or 'googlers' orgs (requires permission)
try {
// Check membership in 'googlers' or 'google' orgs
const orgs = ['googlers', 'google'];
for (const org of orgs) {
try {
await github.rest.orgs.checkMembershipForUser({
org: org,
username: login
});
core.info(`User ${login} is a member of ${org} organization.`);
isGooglerCache.set(login, true);
await github.rest.orgs.checkMembershipForUser({ org: org, username: login });
return true;
} catch (e) {
// 404 just means they aren't a member, which is fine
if (e.status !== 404) throw e;
}
}
} catch (e) {
core.warning(`Failed to check org membership for ${login}: ${e.message}`);
// Gracefully ignore failures here
}
isGooglerCache.set(login, false);
return false;
};
const isMaintainer = async (login, assoc) => {
const isTeamMember = maintainerLogins.has(login.toLowerCase());
const isRepoMaintainer = ['OWNER', 'MEMBER', 'COLLABORATOR'].includes(assoc);
if (isTeamMember || isRepoMaintainer) return true;
return await isGoogler(login);
};
// 2. Determine which PRs to check
// 2. Fetch all open PRs
let prs = [];
if (context.eventName === 'pull_request') {
const { data: pr } = await github.rest.pulls.get({
@@ -118,64 +110,77 @@ jobs:
for (const pr of prs) {
const maintainerPr = await isMaintainer(pr.user.login, pr.author_association);
const isBot = pr.user.type === 'Bot' || pr.user.login.endsWith('[bot]');
if (maintainerPr || isBot) continue;
// Detection Logic for Linked Issues
// Check 1: Official GitHub "Closing Issue" link (GraphQL)
const linkedIssueQuery = `query($owner:String!, $repo:String!, $number:Int!) {
// Helper: Fetch labels and linked issues via GraphQL
const prDetailsQuery = `query($owner:String!, $repo:String!, $number:Int!) {
repository(owner:$owner, name:$repo) {
pullRequest(number:$number) {
closingIssuesReferences(first: 1) { totalCount }
closingIssuesReferences(first: 10) {
nodes {
number
labels(first: 20) {
nodes { name }
}
}
}
}
}
}`;
let hasClosingLink = false;
let linkedIssues = [];
try {
const res = await github.graphql(linkedIssueQuery, {
const res = await github.graphql(prDetailsQuery, {
owner: context.repo.owner, repo: context.repo.repo, number: pr.number
});
hasClosingLink = res.repository.pullRequest.closingIssuesReferences.totalCount > 0;
} catch (e) {}
// Check 2: Regex for mentions (e.g., "Related to #123", "Part of #123", "#123")
// We check for # followed by numbers or direct URLs to issues.
const body = pr.body || '';
const mentionRegex = /(?:#|https:\/\/github\.com\/[^\/]+\/[^\/]+\/issues\/)(\d+)/i;
const hasMentionLink = mentionRegex.test(body);
const hasLinkedIssue = hasClosingLink || hasMentionLink;
// Logic for Closed PRs (Auto-Reopen)
if (pr.state === 'closed' && context.eventName === 'pull_request' && context.payload.action === 'edited') {
if (hasLinkedIssue) {
core.info(`PR #${pr.number} now has a linked issue. Reopening.`);
if (!dryRun) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
state: 'open'
});
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: "Thank you for linking an issue! This pull request has been automatically reopened."
});
}
}
continue;
linkedIssues = res.repository.pullRequest.closingIssuesReferences.nodes;
} catch (e) {
core.warning(`GraphQL fetch failed for PR #${pr.number}: ${e.message}`);
}
// Logic for Open PRs (Immediate Closure)
if (pr.state === 'open' && !maintainerPr && !hasLinkedIssue && !isBot) {
core.info(`PR #${pr.number} is missing a linked issue. Closing.`);
// Check for mentions in body as fallback (regex)
const body = pr.body || '';
const mentionRegex = /(?:#|https:\/\/github\.com\/[^\/]+\/[^\/]+\/issues\/)(\d+)/i;
const matches = body.match(mentionRegex);
if (matches && linkedIssues.length === 0) {
const issueNumber = parseInt(matches[1]);
try {
const { data: issue } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber
});
linkedIssues = [{ number: issueNumber, labels: { nodes: issue.labels.map(l => ({ name: l.name })) } }];
} catch (e) {}
}
// 3. Enforcement Logic
const prLabels = pr.labels.map(l => l.name.toLowerCase());
const hasHelpWanted = prLabels.includes('help wanted') ||
linkedIssues.some(issue => issue.labels.nodes.some(l => l.name.toLowerCase() === 'help wanted'));
const hasMaintainerOnly = prLabels.includes('🔒 maintainer only') ||
linkedIssues.some(issue => issue.labels.nodes.some(l => l.name.toLowerCase() === '🔒 maintainer only'));
const hasLinkedIssue = linkedIssues.length > 0;
// Closure Policy: No help-wanted label = Close after 14 days
if (pr.state === 'open' && !hasHelpWanted && !hasMaintainerOnly) {
const prCreatedAt = new Date(pr.created_at);
// We give a 14-day grace period for non-help-wanted PRs to be manually reviewed/labeled by an EM
if (prCreatedAt > fourteenDaysAgo) {
core.info(`PR #${pr.number} is new and lacks 'help wanted'. Giving 14-day grace period for EM review.`);
continue;
}
core.info(`PR #${pr.number} is older than 14 days and lacks 'help wanted' association. Closing.`);
if (!dryRun) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: "Hi there! Thank you for your contribution to Gemini CLI. \n\nTo improve our contribution process and better track changes, we now require all pull requests to be associated with an existing issue, as announced in our [recent discussion](https://github.com/google-gemini/gemini-cli/discussions/16706) and as detailed in our [CONTRIBUTING.md](https://github.com/google-gemini/gemini-cli/blob/main/CONTRIBUTING.md#1-link-to-an-existing-issue).\n\nThis pull request is being closed because it is not currently linked to an issue. **Once you have updated the description of this PR to link an issue (e.g., by adding `Fixes #123` or `Related to #123`), it will be automatically reopened.**\n\n**How to link an issue:**\nAdd a keyword followed by the issue number (e.g., `Fixes #123`) in the description of your pull request. For more details on supported keywords and how linking works, please refer to the [GitHub Documentation on linking pull requests to issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue).\n\nThank you for your understanding and for being a part of our community!"
body: "Hi there! Thank you for your interest in contributing to Gemini CLI. \n\nTo ensure we maintain high code quality and focus on our prioritized roadmap, we have updated our contribution policy (see [Discussion #17383](https://github.com/google-gemini/gemini-cli/discussions/17383)). \n\n**We only *guarantee* review and consideration of pull requests for issues that are explicitly labeled as 'help wanted'.** All other community pull requests are subject to closure after 14 days if they do not align with our current focus areas. For this reason, we strongly recommend that contributors only submit pull requests against issues explicitly labeled as **'help-wanted'**. \n\nThis pull request is being closed as it has been open for 14 days without a 'help wanted' designation. We encourage you to find and contribute to existing 'help wanted' issues in our backlog! Thank you for your understanding and for being part of our community!"
});
await github.rest.pulls.update({
owner: context.repo.owner,
@@ -187,27 +192,24 @@ jobs:
continue;
}
// Staleness check (Scheduled runs only)
// Also check for linked issue even if it has help wanted (redundant but safe)
if (pr.state === 'open' && !hasLinkedIssue) {
// Already covered by hasHelpWanted check above, but good for future-proofing
continue;
}
// 4. Staleness Check (Scheduled only)
if (pr.state === 'open' && context.eventName !== 'pull_request') {
const labels = pr.labels.map(l => l.name.toLowerCase());
if (labels.includes('help wanted') || labels.includes('🔒 maintainer only')) continue;
// PRs with help wanted/maintainer only labels are still checked for staleness
// but usually given more leeway. Here we stick to 30 days of no maintainer activity.
// Skip PRs that were created less than 30 days ago - they cannot be stale yet
const prCreatedAt = new Date(pr.created_at);
if (prCreatedAt > thirtyDaysAgo) {
const daysOld = Math.floor((Date.now() - prCreatedAt.getTime()) / (1000 * 60 * 60 * 24));
core.info(`PR #${pr.number} was created ${daysOld} days ago. Skipping staleness check.`);
continue;
}
if (prCreatedAt > thirtyDaysAgo) continue;
// Initialize lastActivity to PR creation date (not epoch) as a safety baseline.
// This ensures we never incorrectly mark a PR as stale due to failed activity lookups.
let lastActivity = new Date(pr.created_at);
try {
const reviews = await github.paginate(github.rest.pulls.listReviews, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number
owner: context.repo.owner, repo: context.repo.repo, pull_number: pr.number
});
for (const r of reviews) {
if (await isMaintainer(r.user.login, r.author_association)) {
@@ -216,9 +218,7 @@ jobs:
}
}
const comments = await github.paginate(github.rest.issues.listComments, {
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
owner: context.repo.owner, repo: context.repo.repo, issue_number: pr.number
});
for (const c of comments) {
if (await isMaintainer(c.user.login, c.author_association)) {
@@ -226,16 +226,7 @@ jobs:
if (d > lastActivity) lastActivity = d;
}
}
} catch (e) {
core.warning(`Failed to fetch reviews/comments for PR #${pr.number}: ${e.message}`);
}
// For maintainer PRs, the PR creation itself counts as maintainer activity.
// (Now redundant since we initialize to pr.created_at, but kept for clarity)
if (maintainerPr) {
const d = new Date(pr.created_at);
if (d > lastActivity) lastActivity = d;
}
} catch (e) {}
if (lastActivity < thirtyDaysAgo) {
core.info(`PR #${pr.number} is stale.`);
@@ -244,7 +235,7 @@ jobs:
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: "Hi there! Thank you for your contribution to Gemini CLI. We really appreciate the time and effort you've put into this pull request.\n\nTo keep our backlog manageable and ensure we're focusing on current priorities, we are closing pull requests that haven't seen maintainer activity for 30 days. Currently, the team is prioritizing work associated with **🔒 maintainer only** or **help wanted** issues.\n\nIf you believe this change is still critical, please feel free to comment with updated details. Otherwise, we encourage contributors to focus on open issues labeled as **help wanted**. Thank you for your understanding!"
body: "Hi there! Thank you for your contribution. To keep our backlog manageable, we are closing pull requests that haven't seen maintainer activity for 30 days. If you're still working on this, please let us know!"
});
await github.rest.pulls.update({
owner: context.repo.owner,
+2
View File
@@ -127,6 +127,7 @@ they appear in the UI.
| ------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
| Tool Sandboxing | `security.toolSandboxing` | Experimental tool-level sandboxing (implementation in progress). | `false` |
| Disable YOLO Mode | `security.disableYoloMode` | Disable YOLO mode, even if enabled by a flag. | `false` |
| Disable Always Allow | `security.disableAlwaysAllow` | Disable "Always allow" options in tool confirmation dialogs. | `false` |
| Allow Permanent Tool Approval | `security.enablePermanentToolApproval` | Enable the "Allow for all future sessions" option in tool confirmation dialogs. | `false` |
| Auto-add to Policy by Default | `security.autoAddToPolicyByDefault` | When enabled, the "Allow for all future sessions" option becomes the default choice for low-risk tools in trusted workspaces. | `false` |
| Blocks extensions from Git | `security.blockGitExtensions` | Blocks installing and loading extensions from Git. | `false` |
@@ -151,6 +152,7 @@ they appear in the UI.
| Plan | `experimental.plan` | Enable Plan Mode. | `true` |
| Model Steering | `experimental.modelSteering` | Enable model steering (user hints) to guide the model during tool execution. | `false` |
| Direct Web Fetch | `experimental.directWebFetch` | Enable web fetch behavior that bypasses LLM summarization. | `false` |
| Topic & Update Narration | `experimental.topicUpdateNarration` | Enable the experimental Topic & Update communication model for reduced chattiness and structured progress reporting. | `false` |
### Skills
+154 -1
View File
@@ -677,6 +677,141 @@ their corresponding top-level category object in your `settings.json` file.
used.
- **Default:** `[]`
- **`modelConfigs.modelDefinitions`** (object):
- **Description:** Registry of model metadata, including tier, family, and
features.
- **Default:**
```json
{
"gemini-3.1-pro-preview": {
"tier": "pro",
"family": "gemini-3",
"isPreview": true,
"dialogLocation": "manual",
"features": {
"thinking": true,
"multimodalToolUse": true
}
},
"gemini-3.1-pro-preview-customtools": {
"tier": "pro",
"family": "gemini-3",
"isPreview": true,
"features": {
"thinking": true,
"multimodalToolUse": true
}
},
"gemini-3-pro-preview": {
"tier": "pro",
"family": "gemini-3",
"isPreview": true,
"dialogLocation": "manual",
"features": {
"thinking": true,
"multimodalToolUse": true
}
},
"gemini-3-flash-preview": {
"tier": "flash",
"family": "gemini-3",
"isPreview": true,
"dialogLocation": "manual",
"features": {
"thinking": false,
"multimodalToolUse": true
}
},
"gemini-2.5-pro": {
"tier": "pro",
"family": "gemini-2.5",
"isPreview": false,
"dialogLocation": "manual",
"features": {
"thinking": false,
"multimodalToolUse": false
}
},
"gemini-2.5-flash": {
"tier": "flash",
"family": "gemini-2.5",
"isPreview": false,
"dialogLocation": "manual",
"features": {
"thinking": false,
"multimodalToolUse": false
}
},
"gemini-2.5-flash-lite": {
"tier": "flash-lite",
"family": "gemini-2.5",
"isPreview": false,
"dialogLocation": "manual",
"features": {
"thinking": false,
"multimodalToolUse": false
}
},
"auto": {
"tier": "auto",
"isPreview": true,
"features": {
"thinking": true,
"multimodalToolUse": false
}
},
"pro": {
"tier": "pro",
"isPreview": false,
"features": {
"thinking": true,
"multimodalToolUse": false
}
},
"flash": {
"tier": "flash",
"isPreview": false,
"features": {
"thinking": false,
"multimodalToolUse": false
}
},
"flash-lite": {
"tier": "flash-lite",
"isPreview": false,
"features": {
"thinking": false,
"multimodalToolUse": false
}
},
"auto-gemini-3": {
"displayName": "Auto (Gemini 3)",
"tier": "auto",
"isPreview": true,
"dialogLocation": "main",
"dialogDescription": "Let Gemini CLI decide the best model for the task: gemini-3.1-pro, gemini-3-flash",
"features": {
"thinking": true,
"multimodalToolUse": false
}
},
"auto-gemini-2.5": {
"displayName": "Auto (Gemini 2.5)",
"tier": "auto",
"isPreview": false,
"dialogLocation": "main",
"dialogDescription": "Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash",
"features": {
"thinking": false,
"multimodalToolUse": false
}
}
}
```
- **Requires restart:** Yes
#### `agents`
- **`agents.overrides`** (object):
@@ -901,6 +1036,12 @@ their corresponding top-level category object in your `settings.json` file.
- **Default:** `false`
- **Requires restart:** Yes
- **`security.disableAlwaysAllow`** (boolean):
- **Description:** Disable "Always allow" options in tool confirmation
dialogs.
- **Default:** `false`
- **Requires restart:** Yes
- **`security.enablePermanentToolApproval`** (boolean):
- **Description:** Enable the "Allow for all future sessions" option in tool
confirmation dialogs.
@@ -1085,6 +1226,12 @@ their corresponding top-level category object in your `settings.json` file.
- **Default:** `false`
- **Requires restart:** Yes
- **`experimental.dynamicModelConfiguration`** (boolean):
- **Description:** Enable dynamic model configuration (definitions,
resolutions, and chains) via settings.
- **Default:** `false`
- **Requires restart:** Yes
- **`experimental.gemmaModelRouter.enabled`** (boolean):
- **Description:** Enable the Gemma Model Router (experimental). Requires a
local endpoint serving Gemma via the Gemini API using LiteRT-LM shim.
@@ -1102,6 +1249,11 @@ their corresponding top-level category object in your `settings.json` file.
- **Default:** `"gemma3-1b-gpu-custom"`
- **Requires restart:** Yes
- **`experimental.topicUpdateNarration`** (boolean):
- **Description:** Enable the experimental Topic & Update communication model
for reduced chattiness and structured progress reporting.
- **Default:** `false`
#### `skills`
- **`skills.enabled`** (boolean):
@@ -1191,7 +1343,8 @@ their corresponding top-level category object in your `settings.json` file.
#### `admin`
- **`admin.secureModeEnabled`** (boolean):
- **Description:** If true, disallows yolo mode from being used.
- **Description:** If true, disallows YOLO mode and "Always allow" options
from being used.
- **Default:** `false`
- **`admin.extensions.enabled`** (boolean):
+37
View File
@@ -729,6 +729,43 @@ tools. The model will automatically:
The MCP integration tracks several states:
#### Overriding extension configurations
If an MCP server is provided by an extension (for example, the
`google-workspace` extension), you can still override its settings in your local
`settings.json`. Gemini CLI merges your local configuration with the extension's
defaults:
- **Tool lists:** Tool lists are merged securely to ensure the most restrictive
policy wins:
- **Exclusions (`excludeTools`):** Arrays are combined (unioned). If either
source blocks a tool, it remains disabled.
- **Inclusions (`includeTools`):** Arrays are intersected. If both sources
provide an allowlist, only tools present in **both** lists are enabled. If
only one source provides an allowlist, that list is respected.
- **Precedence:** `excludeTools` always takes precedence over `includeTools`.
This ensures you always have veto power over tools provided by an extension
and that an extension cannot re-enable tools you have omitted from your
personal allowlist.
- **Environment variables:** The `env` objects are merged. If the same variable
is defined in both places, your local value takes precedence.
- **Scalar properties:** Properties like `command`, `url`, and `timeout` are
replaced by your local values if provided.
**Example override:**
```json
{
"mcpServers": {
"google-workspace": {
"excludeTools": ["gmail.send"]
}
}
}
```
#### Server status (`MCPServerStatus`)
- **`DISCONNECTED`:** Server is not connected or has errors
+1 -25
View File
@@ -2195,7 +2195,6 @@
"integrity": "sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^9.0.2",
@@ -2376,7 +2375,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -2426,7 +2424,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz",
"integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -2801,7 +2798,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz",
"integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/core": "2.5.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -2835,7 +2831,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.5.0.tgz",
"integrity": "sha512-BeJLtU+f5Gf905cJX9vXFQorAr6TAfK3SPvTFqP+scfIpDQEJfRaGJWta7sJgP+m4dNtBf9y3yvBKVAZZtJQVA==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/core": "2.5.0",
"@opentelemetry/resources": "2.5.0"
@@ -2890,7 +2885,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.5.0.tgz",
"integrity": "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/core": "2.5.0",
"@opentelemetry/resources": "2.5.0",
@@ -4093,7 +4087,6 @@
"integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"csstype": "^3.0.2"
}
@@ -4368,7 +4361,6 @@
"integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.35.0",
"@typescript-eslint/types": "8.35.0",
@@ -5242,7 +5234,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -7774,7 +7765,6 @@
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -8285,7 +8275,6 @@
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
"license": "MIT",
"peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.1",
@@ -9570,7 +9559,6 @@
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.7.tgz",
"integrity": "sha512-jq9l1DM0zVIvsm3lv9Nw9nlJnMNPOcAtsbsgiUhWcFzPE99Gvo6yRTlszSLLYacMeQ6quHD6hMfId8crVHvexw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=16.9.0"
}
@@ -9850,7 +9838,6 @@
"resolved": "https://registry.npmjs.org/@jrichman/ink/-/ink-6.4.11.tgz",
"integrity": "sha512-93LQlzT7vvZ1XJcmOMwN4s+6W334QegendeHOMnEJBlhnpIzr8bws6/aOEHG8ZCuVD/vNeeea5m1msHIdAY6ig==",
"license": "MIT",
"peer": true,
"dependencies": {
"@alcalzone/ansi-tokenize": "^0.2.1",
"ansi-escapes": "^7.0.0",
@@ -13453,7 +13440,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
"integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -13464,7 +13450,6 @@
"integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"shell-quote": "^1.6.1",
"ws": "^7"
@@ -15512,7 +15497,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -15736,8 +15720,7 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
"license": "0BSD",
"peer": true
"license": "0BSD"
},
"node_modules/tsx": {
"version": "4.20.3",
@@ -15745,7 +15728,6 @@
"integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "~0.25.0",
"get-tsconfig": "^4.7.5"
@@ -15905,7 +15887,6 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -16128,7 +16109,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
"integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@@ -16242,7 +16222,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -16255,7 +16234,6 @@
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz",
"integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/chai": "^5.2.2",
"@vitest/expect": "3.2.4",
@@ -16897,7 +16875,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"license": "MIT",
"peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -17440,7 +17417,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
+57
View File
@@ -176,6 +176,7 @@ describe('GeminiAgent', () => {
getGemini31LaunchedSync: vi.fn().mockReturnValue(false),
getHasAccessToPreviewModel: vi.fn().mockReturnValue(false),
getCheckpointingEnabled: vi.fn().mockReturnValue(false),
getDisableAlwaysAllow: vi.fn().mockReturnValue(false),
} as unknown as Mocked<Awaited<ReturnType<typeof loadCliConfig>>>;
mockSettings = {
merged: {
@@ -654,6 +655,7 @@ describe('Session', () => {
getCheckpointingEnabled: vi.fn().mockReturnValue(false),
getGitService: vi.fn().mockResolvedValue({} as GitService),
waitForMcpInit: vi.fn(),
getDisableAlwaysAllow: vi.fn().mockReturnValue(false),
} as unknown as Mocked<Config>;
mockConnection = {
sessionUpdate: vi.fn(),
@@ -947,6 +949,61 @@ describe('Session', () => {
);
});
it('should exclude always allow options when disableAlwaysAllow is true', async () => {
mockConfig.getDisableAlwaysAllow = vi.fn().mockReturnValue(true);
const confirmationDetails = {
type: 'info',
onConfirm: vi.fn(),
};
mockTool.build.mockReturnValue({
getDescription: () => 'Test Tool',
toolLocations: () => [],
shouldConfirmExecute: vi.fn().mockResolvedValue(confirmationDetails),
execute: vi.fn().mockResolvedValue({ llmContent: 'Tool Result' }),
});
mockConnection.requestPermission.mockResolvedValue({
outcome: {
outcome: 'selected',
optionId: ToolConfirmationOutcome.ProceedOnce,
},
});
const stream1 = createMockStream([
{
type: StreamEventType.CHUNK,
value: {
functionCalls: [{ name: 'test_tool', args: {} }],
},
},
]);
const stream2 = createMockStream([
{
type: StreamEventType.CHUNK,
value: { candidates: [] },
},
]);
mockChat.sendMessageStream
.mockResolvedValueOnce(stream1)
.mockResolvedValueOnce(stream2);
await session.prompt({
sessionId: 'session-1',
prompt: [{ type: 'text', text: 'Call tool' }],
});
expect(mockConnection.requestPermission).toHaveBeenCalledWith(
expect.objectContaining({
options: expect.not.arrayContaining([
expect.objectContaining({
optionId: ToolConfirmationOutcome.ProceedAlways,
}),
]),
}),
);
});
it('should use filePath for ACP diff content in permission request', async () => {
const confirmationDetails = {
type: 'edit',
+56 -38
View File
@@ -908,7 +908,7 @@ export class Session {
const params: acp.RequestPermissionRequest = {
sessionId: this.id,
options: toPermissionOptions(confirmationDetails),
options: toPermissionOptions(confirmationDetails, this.config),
toolCall: {
toolCallId: callId,
status: 'pending',
@@ -1004,6 +1004,7 @@ export class Session {
callId,
toolResult.llmContent,
this.config.getActiveModel(),
this.config,
),
resultDisplay: toolResult.returnDisplay,
error: undefined,
@@ -1017,6 +1018,7 @@ export class Session {
callId,
toolResult.llmContent,
this.config.getActiveModel(),
this.config,
);
} catch (e) {
const error = e instanceof Error ? e : new Error(String(e));
@@ -1457,60 +1459,76 @@ const basicPermissionOptions = [
function toPermissionOptions(
confirmation: ToolCallConfirmationDetails,
config: Config,
): acp.PermissionOption[] {
switch (confirmation.type) {
case 'edit':
return [
{
const disableAlwaysAllow = config.getDisableAlwaysAllow();
const options: acp.PermissionOption[] = [];
if (!disableAlwaysAllow) {
switch (confirmation.type) {
case 'edit':
options.push({
optionId: ToolConfirmationOutcome.ProceedAlways,
name: 'Allow All Edits',
kind: 'allow_always',
},
...basicPermissionOptions,
];
case 'exec':
return [
{
});
break;
case 'exec':
options.push({
optionId: ToolConfirmationOutcome.ProceedAlways,
name: `Always Allow ${confirmation.rootCommand}`,
kind: 'allow_always',
},
...basicPermissionOptions,
];
case 'mcp':
return [
{
optionId: ToolConfirmationOutcome.ProceedAlwaysServer,
name: `Always Allow ${confirmation.serverName}`,
kind: 'allow_always',
},
{
optionId: ToolConfirmationOutcome.ProceedAlwaysTool,
name: `Always Allow ${confirmation.toolName}`,
kind: 'allow_always',
},
...basicPermissionOptions,
];
case 'info':
return [
{
});
break;
case 'mcp':
options.push(
{
optionId: ToolConfirmationOutcome.ProceedAlwaysServer,
name: `Always Allow ${confirmation.serverName}`,
kind: 'allow_always',
},
{
optionId: ToolConfirmationOutcome.ProceedAlwaysTool,
name: `Always Allow ${confirmation.toolName}`,
kind: 'allow_always',
},
);
break;
case 'info':
options.push({
optionId: ToolConfirmationOutcome.ProceedAlways,
name: `Always Allow`,
kind: 'allow_always',
},
...basicPermissionOptions,
];
});
break;
case 'ask_user':
case 'exit_plan_mode':
// askuser and exit_plan_mode don't need "always allow" options
break;
default:
// No "always allow" options for other types
break;
}
}
options.push(...basicPermissionOptions);
// Exhaustive check
switch (confirmation.type) {
case 'edit':
case 'exec':
case 'mcp':
case 'info':
case 'ask_user':
// askuser doesn't need "always allow" options since it's asking questions
return [...basicPermissionOptions];
case 'exit_plan_mode':
// exit_plan_mode doesn't need "always allow" options since it's a plan approval flow
return [...basicPermissionOptions];
break;
default: {
const unreachable: never = confirmation;
throw new Error(`Unexpected: ${unreachable}`);
}
}
return options;
}
/**
+4 -4
View File
@@ -1773,7 +1773,7 @@ describe('loadCliConfig model selection', () => {
});
it('always prefers model from argv', async () => {
process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash'];
process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash-preview'];
const argv = await parseArguments(createTestMergedSettings());
const config = await loadCliConfig(
createTestMergedSettings({
@@ -1785,11 +1785,11 @@ describe('loadCliConfig model selection', () => {
argv,
);
expect(config.getModel()).toBe('gemini-2.5-flash');
expect(config.getModel()).toBe('gemini-2.5-flash-preview');
});
it('selects the model from argv if provided', async () => {
process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash'];
process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash-preview'];
const argv = await parseArguments(createTestMergedSettings());
const config = await loadCliConfig(
createTestMergedSettings({
@@ -1799,7 +1799,7 @@ describe('loadCliConfig model selection', () => {
argv,
);
expect(config.getModel()).toBe('gemini-2.5-flash');
expect(config.getModel()).toBe('gemini-2.5-flash-preview');
});
it('selects the default auto model if provided via auto alias', async () => {
+9 -17
View File
@@ -31,8 +31,6 @@ import {
type HierarchicalMemory,
coreEvents,
GEMINI_MODEL_ALIAS_AUTO,
isValidModelOrAlias,
getValidModelsAndAliases,
getAdminErrorMessage,
isHeadlessMode,
Config,
@@ -498,9 +496,10 @@ export async function loadCliConfig(
const experimentalJitContext = settings.experimental?.jitContext ?? false;
let extensionRegistryURI: string | undefined = trustedFolder
? settings.experimental?.extensionRegistryURI
: undefined;
let extensionRegistryURI =
process.env['GEMINI_CLI_EXTENSION_REGISTRY_URI'] ??
(trustedFolder ? settings.experimental?.extensionRegistryURI : undefined);
if (extensionRegistryURI && !extensionRegistryURI.startsWith('http')) {
extensionRegistryURI = resolveToRealPath(
path.resolve(cwd, resolvePath(extensionRegistryURI)),
@@ -673,18 +672,6 @@ export async function loadCliConfig(
const specifiedModel =
argv.model || process.env['GEMINI_MODEL'] || settings.model?.name;
// Validate the model if one was explicitly specified
if (specifiedModel && specifiedModel !== GEMINI_MODEL_ALIAS_AUTO) {
if (!isValidModelOrAlias(specifiedModel)) {
const validModels = getValidModelsAndAliases();
throw new FatalConfigError(
`Invalid model: "${specifiedModel}"\n\n` +
`Valid models and aliases:\n${validModels.map((m) => ` - ${m}`).join('\n')}\n\n` +
`Use /model to switch models interactively.`,
);
}
}
const resolvedModel =
specifiedModel === GEMINI_MODEL_ALIAS_AUTO
? defaultModel
@@ -785,6 +772,9 @@ export async function loadCliConfig(
approvalMode,
disableYoloMode:
settings.security?.disableYoloMode || settings.admin?.secureModeEnabled,
disableAlwaysAllow:
settings.security?.disableAlwaysAllow ||
settings.admin?.secureModeEnabled,
showMemoryUsage: settings.ui?.showMemoryUsage || false,
accessibility: {
...settings.ui?.accessibility,
@@ -824,6 +814,7 @@ export async function loadCliConfig(
disabledSkills: settings.skills?.disabled,
experimentalJitContext: settings.experimental?.jitContext,
modelSteering: settings.experimental?.modelSteering,
topicUpdateNarration: settings.experimental?.topicUpdateNarration,
toolOutputMasking: settings.experimental?.toolOutputMasking,
noBrowser: !!process.env['NO_BROWSER'],
summarizeToolOutput: settings.model?.summarizeToolOutput,
@@ -858,6 +849,7 @@ export async function loadCliConfig(
disableLLMCorrection: settings.tools?.disableLLMCorrection,
rawOutput: argv.rawOutput,
acceptRawOutputRisk: argv.acceptRawOutputRisk,
dynamicModelConfiguration: settings.experimental?.dynamicModelConfiguration,
modelConfigServiceConfig: settings.modelConfigs,
// TODO: loading of hooks based on workspace trust
enableHooks: settings.hooksConfig.enabled,
+8 -6
View File
@@ -898,9 +898,10 @@ Would you like to attempt to install via "git clone" instead?`,
let skills = await loadSkillsFromDir(
path.join(effectiveExtensionPath, 'skills'),
);
skills = skills.map((skill) =>
recursivelyHydrateStrings(skill, hydrationContext),
);
skills = skills.map((skill) => ({
...recursivelyHydrateStrings(skill, hydrationContext),
extensionName: config.name,
}));
let rules: PolicyRule[] | undefined;
let checkers: SafetyCheckerRule[] | undefined;
@@ -923,9 +924,10 @@ Would you like to attempt to install via "git clone" instead?`,
const agentLoadResult = await loadAgentsFromDirectory(
path.join(effectiveExtensionPath, 'agents'),
);
agentLoadResult.agents = agentLoadResult.agents.map((agent) =>
recursivelyHydrateStrings(agent, hydrationContext),
);
agentLoadResult.agents = agentLoadResult.agents.map((agent) => ({
...recursivelyHydrateStrings(agent, hydrationContext),
extensionName: config.name,
}));
// Log errors but don't fail the entire extension load
for (const error of agentLoadResult.errors) {
+3
View File
@@ -63,6 +63,9 @@ export async function createPolicyEngineConfig(
policyPaths: settings.policyPaths,
adminPolicyPaths: settings.adminPolicyPaths,
workspacePoliciesDir,
disableAlwaysAllow:
settings.security?.disableAlwaysAllow ||
settings.admin?.secureModeEnabled,
};
return createCorePolicyEngineConfig(policySettings, approvalMode);
+4
View File
@@ -524,16 +524,19 @@ describe('Settings Loading and Merging', () => {
const userSettingsContent = {
security: {
disableYoloMode: false,
disableAlwaysAllow: false,
},
};
const workspaceSettingsContent = {
security: {
disableYoloMode: false, // This should be ignored
disableAlwaysAllow: false, // This should be ignored
},
};
const systemSettingsContent = {
security: {
disableYoloMode: true,
disableAlwaysAllow: true,
},
};
@@ -551,6 +554,7 @@ describe('Settings Loading and Merging', () => {
const settings = loadSettings(MOCK_WORKSPACE_DIR);
expect(settings.merged.security?.disableYoloMode).toBe(true); // System setting should be used
expect(settings.merged.security?.disableAlwaysAllow).toBe(true); // System setting should be used
});
it.each([
+65 -2
View File
@@ -1039,6 +1039,20 @@ const SETTINGS_SCHEMA = {
'Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used.',
showInDialog: false,
},
modelDefinitions: {
type: 'object',
label: 'Model Definitions',
category: 'Model',
requiresRestart: true,
default: DEFAULT_MODEL_CONFIGS.modelDefinitions,
description:
'Registry of model metadata, including tier, family, and features.',
showInDialog: false,
additionalProperties: {
type: 'object',
ref: 'ModelDefinition',
},
},
},
},
@@ -1541,6 +1555,16 @@ const SETTINGS_SCHEMA = {
description: 'Disable YOLO mode, even if enabled by a flag.',
showInDialog: true,
},
disableAlwaysAllow: {
type: 'boolean',
label: 'Disable Always Allow',
category: 'Security',
requiresRestart: true,
default: false,
description:
'Disable "Always allow" options in tool confirmation dialogs.',
showInDialog: true,
},
enablePermanentToolApproval: {
type: 'boolean',
label: 'Allow Permanent Tool Approval',
@@ -1933,6 +1957,16 @@ const SETTINGS_SCHEMA = {
'Enable web fetch behavior that bypasses LLM summarization.',
showInDialog: true,
},
dynamicModelConfiguration: {
type: 'boolean',
label: 'Dynamic Model Configuration',
category: 'Experimental',
requiresRestart: true,
default: false,
description:
'Enable dynamic model configuration (definitions, resolutions, and chains) via settings.',
showInDialog: false,
},
gemmaModelRouter: {
type: 'object',
label: 'Gemma Model Router',
@@ -1984,9 +2018,18 @@ const SETTINGS_SCHEMA = {
},
},
},
topicUpdateNarration: {
type: 'boolean',
label: 'Topic & Update Narration',
category: 'Experimental',
requiresRestart: false,
default: false,
description:
'Enable the experimental Topic & Update communication model for reduced chattiness and structured progress reporting.',
showInDialog: true,
},
},
},
extensions: {
type: 'object',
label: 'Extensions',
@@ -2267,7 +2310,8 @@ const SETTINGS_SCHEMA = {
category: 'Admin',
requiresRestart: false,
default: false,
description: 'If true, disallows yolo mode from being used.',
description:
'If true, disallows YOLO mode and "Always allow" options from being used.',
showInDialog: false,
mergeStrategy: MergeStrategy.REPLACE,
},
@@ -2749,6 +2793,25 @@ export const SETTINGS_SCHEMA_DEFINITIONS: Record<
},
},
},
ModelDefinition: {
type: 'object',
description: 'Model metadata registry entry.',
properties: {
displayName: { type: 'string' },
tier: { enum: ['pro', 'flash', 'flash-lite', 'custom', 'auto'] },
family: { type: 'string' },
isPreview: { type: 'boolean' },
dialogLocation: { enum: ['main', 'manual'] },
dialogDescription: { type: 'string' },
features: {
type: 'object',
properties: {
thinking: { type: 'boolean' },
multimodalToolUse: { type: 'boolean' },
},
},
},
},
};
export function getSettingsSchema(): SettingsSchemaType {
@@ -122,4 +122,16 @@ describe('SkillCommandLoader', () => {
const actionResult = (await commands[0].action!({} as any, '')) as any;
expect(actionResult.toolArgs).toEqual({ name: 'my awesome skill' });
});
it('should propagate extensionName to the generated slash command', async () => {
const mockSkills = [
{ name: 'skill1', description: 'desc', extensionName: 'ext1' },
];
mockSkillManager.getDisplayableSkills.mockReturnValue(mockSkills);
const loader = new SkillCommandLoader(mockConfig);
const commands = await loader.loadCommands(new AbortController().signal);
expect(commands[0].extensionName).toBe('ext1');
});
});
@@ -41,6 +41,7 @@ export class SkillCommandLoader implements ICommandLoader {
description: skill.description || `Activate the ${skill.name} skill`,
kind: CommandKind.SKILL,
autoExecute: true,
extensionName: skill.extensionName,
action: async (_context, args) => ({
type: 'tool',
toolName: ACTIVATE_SKILL_TOOL_NAME,
@@ -172,4 +172,23 @@ describe('SlashCommandConflictHandler', () => {
vi.advanceTimersByTime(600);
expect(coreEvents.emitFeedback).not.toHaveBeenCalled();
});
it('should display a descriptive message for a skill conflict', () => {
simulateEvent([
{
name: 'chat',
renamedTo: 'google-workspace.chat',
loserExtensionName: 'google-workspace',
loserKind: CommandKind.SKILL,
winnerKind: CommandKind.BUILT_IN,
},
]);
vi.advanceTimersByTime(600);
expect(coreEvents.emitFeedback).toHaveBeenCalledWith(
'info',
"Extension 'google-workspace' skill '/chat' was renamed to '/google-workspace.chat' because it conflicts with built-in command.",
);
});
});
@@ -154,6 +154,10 @@ export class SlashCommandConflictHandler {
return extensionName
? `extension '${extensionName}' command`
: 'extension command';
case CommandKind.SKILL:
return extensionName
? `extension '${extensionName}' skill`
: 'skill command';
case CommandKind.MCP_PROMPT:
return mcpServerName
? `MCP server '${mcpServerName}' command`
@@ -173,5 +173,30 @@ describe('SlashCommandResolver', () => {
expect(finalCommands.find((c) => c.name === 'gcp.deploy1')).toBeDefined();
});
it('should prefix skills with extension name when they conflict with built-in', () => {
const builtin = createMockCommand('chat', CommandKind.BUILT_IN);
const skill = {
...createMockCommand('chat', CommandKind.SKILL),
extensionName: 'google-workspace',
};
const { finalCommands } = SlashCommandResolver.resolve([builtin, skill]);
const names = finalCommands.map((c) => c.name);
expect(names).toContain('chat');
expect(names).toContain('google-workspace.chat');
});
it('should NOT prefix skills with "skill" when extension name is missing', () => {
const builtin = createMockCommand('chat', CommandKind.BUILT_IN);
const skill = createMockCommand('chat', CommandKind.SKILL);
const { finalCommands } = SlashCommandResolver.resolve([builtin, skill]);
const names = finalCommands.map((c) => c.name);
expect(names).toContain('chat');
expect(names).toContain('chat1');
});
});
});
@@ -174,6 +174,7 @@ export class SlashCommandResolver {
private static getPrefix(cmd: SlashCommand): string | undefined {
switch (cmd.kind) {
case CommandKind.EXTENSION_FILE:
case CommandKind.SKILL:
return cmd.extensionName;
case CommandKind.MCP_PROMPT:
return cmd.mcpServerName;
@@ -185,7 +186,6 @@ export class SlashCommandResolver {
return undefined;
}
}
/**
* Logs a conflict event.
*/
@@ -122,6 +122,7 @@ export const createMockConfig = (overrides: Partial<Config> = {}): Config =>
getBannerTextNoCapacityIssues: vi.fn().mockResolvedValue(''),
getBannerTextCapacityIssues: vi.fn().mockResolvedValue(''),
isInteractiveShellEnabled: vi.fn().mockReturnValue(false),
getDisableAlwaysAllow: vi.fn().mockReturnValue(false),
isSkillsSupportEnabled: vi.fn().mockReturnValue(false),
reloadSkills: vi.fn().mockResolvedValue(undefined),
reloadAgents: vi.fn().mockResolvedValue(undefined),
@@ -2,10 +2,10 @@
exports[`App > Snapshots > renders default layout correctly 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
Tips for getting started:
@@ -47,10 +47,10 @@ exports[`App > Snapshots > renders screen reader layout correctly 1`] = `
"Notifications
Footer
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
Tips for getting started:
@@ -64,10 +64,10 @@ Composer
exports[`App > Snapshots > renders with dialogs visible 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
@@ -107,10 +107,10 @@ DialogManager
exports[`App > should render ToolConfirmationQueue along with Composer when tool is confirming and experiment is on 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
Tips for getting started:
@@ -27,6 +27,7 @@ import {
} from '../utils/displayUtils.js';
import { computeSessionStats } from '../utils/computeStats.js';
import {
type Config,
type RetrieveUserQuotaResponse,
isActiveModel,
getDisplayString,
@@ -88,13 +89,16 @@ const Section: React.FC<SectionProps> = ({ title, children }) => (
// Logic for building the unified list of table rows
const buildModelRows = (
models: Record<string, ModelMetrics>,
config: Config,
quotas?: RetrieveUserQuotaResponse,
useGemini3_1 = false,
useCustomToolModel = false,
) => {
const getBaseModelName = (name: string) => name.replace('-001', '');
const usedModelNames = new Set(
Object.keys(models).map(getBaseModelName).map(getDisplayString),
Object.keys(models)
.map(getBaseModelName)
.map((name) => getDisplayString(name, config)),
);
// 1. Models with active usage
@@ -104,7 +108,7 @@ const buildModelRows = (
const inputTokens = metrics.tokens.input;
return {
key: name,
modelName: getDisplayString(modelName),
modelName: getDisplayString(modelName, config),
requests: metrics.api.totalRequests,
cachedTokens: cachedTokens.toLocaleString(),
inputTokens: inputTokens.toLocaleString(),
@@ -121,11 +125,11 @@ const buildModelRows = (
(b) =>
b.modelId &&
isActiveModel(b.modelId, useGemini3_1, useCustomToolModel) &&
!usedModelNames.has(getDisplayString(b.modelId)),
!usedModelNames.has(getDisplayString(b.modelId, config)),
)
.map((bucket) => ({
key: bucket.modelId!,
modelName: getDisplayString(bucket.modelId!),
modelName: getDisplayString(bucket.modelId!, config),
requests: '-',
cachedTokens: '-',
inputTokens: '-',
@@ -139,6 +143,7 @@ const buildModelRows = (
const ModelUsageTable: React.FC<{
models: Record<string, ModelMetrics>;
config: Config;
quotas?: RetrieveUserQuotaResponse;
cacheEfficiency: number;
totalCachedTokens: number;
@@ -150,6 +155,7 @@ const ModelUsageTable: React.FC<{
useCustomToolModel?: boolean;
}> = ({
models,
config,
quotas,
cacheEfficiency,
totalCachedTokens,
@@ -162,7 +168,13 @@ const ModelUsageTable: React.FC<{
}) => {
const { stdout } = useStdout();
const terminalWidth = stdout?.columns ?? 84;
const rows = buildModelRows(models, quotas, useGemini3_1, useCustomToolModel);
const rows = buildModelRows(
models,
config,
quotas,
useGemini3_1,
useCustomToolModel,
);
if (rows.length === 0) {
return null;
@@ -676,6 +688,7 @@ export const StatsDisplay: React.FC<StatsDisplayProps> = ({
</Section>
<ModelUsageTable
models={models}
config={config}
quotas={quotas}
cacheEfficiency={computed.cacheEfficiency}
totalCachedTokens={computed.totalCachedTokens}
@@ -42,6 +42,7 @@ describe('ToolConfirmationQueue', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
getModel: () => 'gemini-pro',
getDebugMode: () => false,
getTargetDir: () => '/mock/target/dir',
@@ -2,10 +2,10 @@
exports[`AlternateBufferQuittingDisplay > renders with a tool awaiting confirmation > with_confirming_tool 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -26,10 +26,10 @@ Action Required (was prompted):
exports[`AlternateBufferQuittingDisplay > renders with active and pending tool messages > with_history_and_pending 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -54,10 +54,10 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with empty history and no pending items > empty 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -70,10 +70,10 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with history but no pending items > with_history_no_pending 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -94,10 +94,10 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with pending items but no history > with_pending_no_history 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -114,10 +114,10 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with user and gemini messages > with_user_gemini_messages 1`] = `
"
▝▜▄ Gemini CLI v0.10.0
▝▜▄ Gemini CLI v0.10.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -126,7 +126,7 @@ Tips for getting started:
3. Ask coding questions, edit code or run commands
4. Be specific for the best results
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> Hello Gemini
> Hello Gemini
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
✦ Hello User!
"
@@ -2,10 +2,10 @@
exports[`<AppHeader /> > should not render the banner when no flags are set 1`] = `
"
▝▜▄ Gemini CLI v1.0.0
▝▜▄ Gemini CLI v1.0.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -18,10 +18,10 @@ Tips for getting started:
exports[`<AppHeader /> > should not render the default banner if shown count is 5 or more 1`] = `
"
▝▜▄ Gemini CLI v1.0.0
▝▜▄ Gemini CLI v1.0.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
Tips for getting started:
@@ -34,10 +34,10 @@ Tips for getting started:
exports[`<AppHeader /> > should render the banner with default text 1`] = `
"
▝▜▄ Gemini CLI v1.0.0
▝▜▄ Gemini CLI v1.0.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ This is the default banner │
@@ -53,10 +53,10 @@ Tips for getting started:
exports[`<AppHeader /> > should render the banner with warning text 1`] = `
"
▝▜▄ Gemini CLI v1.0.0
▝▜▄ Gemini CLI v1.0.0
▝▜▄
▗▟▀
▝▀
▗▟▀
▗▟▀
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ There are capacity issues │
@@ -4,25 +4,25 @@
</style>
<rect width="920" height="224" fill="#000000" />
<g transform="translate(10, 10)">
<text x="18" y="19" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="19" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="180" y="19" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.0.0</text>
<text x="36" y="36" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="19" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.0.0</text>
<text x="36" y="36" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">Tips for getting started:</text>
<text x="0" y="138" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">1. Create </text>
<text x="90" y="138" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">GEMINI.md</text>
<text x="171" y="138" fill="#ffffff" textLength="333" lengthAdjust="spacingAndGlyphs"> files to customize your interactions</text>
<text x="0" y="155" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">2. </text>
<text x="27" y="155" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">/help</text>
<text x="27" y="155" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">/help</text>
<text x="72" y="155" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs"> for more information</text>
<text x="0" y="172" fill="#ffffff" textLength="450" lengthAdjust="spacingAndGlyphs">3. Ask coding questions, edit code or run commands</text>
<text x="0" y="189" fill="#ffffff" textLength="315" lengthAdjust="spacingAndGlyphs">4. Be specific for the best results</text>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -4,26 +4,26 @@
</style>
<rect width="920" height="224" fill="#000000" />
<g transform="translate(10, 10)">
<text x="18" y="19" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="19" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="171" y="19" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.0.0</text>
<text x="36" y="36" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="53" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="70" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="19" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.0.0</text>
<text x="36" y="36" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="53" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="70" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">Tips for getting started:</text>
<text x="0" y="138" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">1. Create </text>
<text x="90" y="138" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">GEMINI.md</text>
<text x="171" y="138" fill="#ffffff" textLength="333" lengthAdjust="spacingAndGlyphs"> files to customize your interactions</text>
<text x="0" y="155" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">2. </text>
<text x="27" y="155" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">/help</text>
<text x="27" y="155" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">/help</text>
<text x="72" y="155" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs"> for more information</text>
<text x="0" y="172" fill="#ffffff" textLength="450" lengthAdjust="spacingAndGlyphs">3. Ask coding questions, edit code or run commands</text>
<text x="0" y="189" fill="#ffffff" textLength="315" lengthAdjust="spacingAndGlyphs">4. Be specific for the best results</text>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -18,20 +18,8 @@ Spinner Connecting to MCP servers... (0/5) - Waiting for: s1, s2, s3, +2 more
"
`;
exports[`ConfigInitDisplay > truncates list of waiting servers if too many 2`] = `
"
Spinner Connecting to MCP servers... (0/5) - Waiting for: s1, s2, s3, +2 more
"
`;
exports[`ConfigInitDisplay > updates message on McpClientUpdate event 1`] = `
"
Spinner Connecting to MCP servers... (1/2) - Waiting for: server2
"
`;
exports[`ConfigInitDisplay > updates message on McpClientUpdate event 2`] = `
"
Spinner Connecting to MCP servers... (1/2) - Waiting for: server2
"
`;
@@ -4,155 +4,155 @@
</style>
<rect width="920" height="700" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Configure Footer</text>
<text x="891" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#afafaf" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#a8a8a8" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="104" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs"> workspace</text>
<text x="891" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="121" fill="#afafaf" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<text x="891" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="121" fill="#a8a8a8" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<text x="891" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="138" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="138" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> git-branch</text>
<text x="891" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#afafaf" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#a8a8a8" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="172" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="172" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs"> sandbox</text>
<text x="891" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#afafaf" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#a8a8a8" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="206" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> model-name</text>
<text x="891" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="240" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="240" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs"> quota</text>
<text x="891" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#afafaf" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#a8a8a8" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="274" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> context-used</text>
<text x="891" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#afafaf" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#a8a8a8" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="308" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> memory-usage</text>
<text x="891" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="342" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> session-id</text>
<text x="891" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#afafaf" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="374" width="9" height="17" fill="#001a00" />
<text x="891" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#a8a8a8" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="374" width="9" height="17" fill="#005f00" />
<text x="27" y="376" fill="#00cd00" textLength="9" lengthAdjust="spacingAndGlyphs">&gt;</text>
<rect x="36" y="374" width="9" height="17" fill="#001a00" />
<rect x="45" y="374" width="27" height="17" fill="#001a00" />
<rect x="36" y="374" width="9" height="17" fill="#005f00" />
<rect x="45" y="374" width="27" height="17" fill="#005f00" />
<text x="45" y="376" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<rect x="72" y="374" width="117" height="17" fill="#001a00" />
<rect x="72" y="374" width="117" height="17" fill="#005f00" />
<text x="72" y="376" fill="#00cd00" textLength="117" lengthAdjust="spacingAndGlyphs"> code-changes</text>
<rect x="189" y="374" width="684" height="17" fill="#001a00" />
<text x="891" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="391" width="18" height="17" fill="#001a00" />
<rect x="45" y="391" width="513" height="17" fill="#001a00" />
<text x="45" y="393" fill="#afafaf" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<rect x="558" y="391" width="315" height="17" fill="#001a00" />
<text x="891" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<rect x="189" y="374" width="684" height="17" fill="#005f00" />
<text x="891" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="391" width="18" height="17" fill="#005f00" />
<rect x="45" y="391" width="513" height="17" fill="#005f00" />
<text x="45" y="393" fill="#a8a8a8" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<rect x="558" y="391" width="315" height="17" fill="#005f00" />
<text x="891" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="410" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs"> token-count</text>
<text x="891" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="444" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="444" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs"> Show footer labels</text>
<text x="891" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Reset to default footer</text>
<text x="891" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#afafaf" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#a8a8a8" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="580" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Preview:</text>
<text x="864" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="597" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">workspace (/directory)</text>
<text x="297" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">branch</text>
<text x="405" y="597" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">sandbox</text>
<text x="513" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">/model</text>
<text x="693" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">/stats</text>
<rect x="801" y="595" width="36" height="17" fill="#001a00" />
<text x="864" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="597" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">workspace (/directory)</text>
<text x="297" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">branch</text>
<text x="405" y="597" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">sandbox</text>
<text x="513" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">/model</text>
<text x="693" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">/stats</text>
<rect x="801" y="595" width="36" height="17" fill="#005f00" />
<text x="801" y="597" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">diff</text>
<rect x="837" y="595" width="18" height="17" fill="#001a00" />
<text x="864" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="837" y="595" width="18" height="17" fill="#005f00" />
<text x="864" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="614" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">~/project/path</text>
<text x="297" y="614" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">main</text>
<text x="405" y="614" fill="#00cd00" textLength="54" lengthAdjust="spacingAndGlyphs">docker</text>
<text x="513" y="614" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">gemini-2.5-pro</text>
<text x="693" y="614" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">97%</text>
<rect x="801" y="612" width="27" height="17" fill="#001a00" />
<rect x="801" y="612" width="27" height="17" fill="#005f00" />
<text x="801" y="614" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">+12</text>
<rect x="828" y="612" width="9" height="17" fill="#001a00" />
<rect x="837" y="612" width="18" height="17" fill="#001a00" />
<text x="837" y="614" fill="#ff87af" textLength="18" lengthAdjust="spacingAndGlyphs">-4</text>
<text x="864" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="631" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="648" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<rect x="828" y="612" width="9" height="17" fill="#005f00" />
<rect x="837" y="612" width="18" height="17" fill="#005f00" />
<text x="837" y="614" fill="#ffafaf" textLength="18" lengthAdjust="spacingAndGlyphs">-4</text>
<text x="864" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="631" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="648" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

@@ -4,150 +4,150 @@
</style>
<rect width="920" height="700" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Configure Footer</text>
<text x="891" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#afafaf" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="102" width="9" height="17" fill="#001a00" />
<text x="891" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#a8a8a8" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="102" width="9" height="17" fill="#005f00" />
<text x="27" y="104" fill="#00cd00" textLength="9" lengthAdjust="spacingAndGlyphs">&gt;</text>
<rect x="36" y="102" width="9" height="17" fill="#001a00" />
<rect x="45" y="102" width="27" height="17" fill="#001a00" />
<rect x="36" y="102" width="9" height="17" fill="#005f00" />
<rect x="45" y="102" width="27" height="17" fill="#005f00" />
<text x="45" y="104" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<rect x="72" y="102" width="90" height="17" fill="#001a00" />
<rect x="72" y="102" width="90" height="17" fill="#005f00" />
<text x="72" y="104" fill="#00cd00" textLength="90" lengthAdjust="spacingAndGlyphs"> workspace</text>
<rect x="162" y="102" width="711" height="17" fill="#001a00" />
<text x="891" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="119" width="18" height="17" fill="#001a00" />
<rect x="45" y="119" width="234" height="17" fill="#001a00" />
<text x="45" y="121" fill="#afafaf" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<rect x="279" y="119" width="594" height="17" fill="#001a00" />
<text x="891" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="102" width="711" height="17" fill="#005f00" />
<text x="891" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="119" width="18" height="17" fill="#005f00" />
<rect x="45" y="119" width="234" height="17" fill="#005f00" />
<text x="45" y="121" fill="#a8a8a8" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<rect x="279" y="119" width="594" height="17" fill="#005f00" />
<text x="891" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="138" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="138" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> git-branch</text>
<text x="891" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#afafaf" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#a8a8a8" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="172" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="172" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs"> sandbox</text>
<text x="891" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#afafaf" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#a8a8a8" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="206" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> model-name</text>
<text x="891" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="240" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="240" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs"> quota</text>
<text x="891" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#afafaf" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#a8a8a8" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="274" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> context-used</text>
<text x="891" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#afafaf" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#a8a8a8" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="308" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> memory-usage</text>
<text x="891" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="342" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> session-id</text>
<text x="891" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#afafaf" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#a8a8a8" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="376" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> code-changes</text>
<text x="891" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="393" fill="#afafaf" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<text x="891" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="393" fill="#a8a8a8" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<text x="891" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="410" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs"> token-count</text>
<text x="891" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="444" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="444" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs"> Show footer labels</text>
<text x="891" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Reset to default footer</text>
<text x="891" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#afafaf" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#a8a8a8" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="580" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Preview:</text>
<text x="864" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="45" y="595" width="198" height="17" fill="#001a00" />
<text x="864" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="45" y="595" width="198" height="17" fill="#005f00" />
<text x="45" y="597" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">workspace (/directory)</text>
<text x="324" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">branch</text>
<text x="459" y="597" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">sandbox</text>
<text x="594" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">/model</text>
<text x="801" y="597" fill="#afafaf" textLength="54" lengthAdjust="spacingAndGlyphs">/stats</text>
<text x="864" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="45" y="612" width="126" height="17" fill="#001a00" />
<text x="324" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">branch</text>
<text x="459" y="597" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">sandbox</text>
<text x="594" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">/model</text>
<text x="801" y="597" fill="#a8a8a8" textLength="54" lengthAdjust="spacingAndGlyphs">/stats</text>
<text x="864" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="45" y="612" width="126" height="17" fill="#005f00" />
<text x="45" y="614" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">~/project/path</text>
<rect x="171" y="612" width="72" height="17" fill="#001a00" />
<rect x="171" y="612" width="72" height="17" fill="#005f00" />
<text x="324" y="614" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">main</text>
<text x="459" y="614" fill="#00cd00" textLength="54" lengthAdjust="spacingAndGlyphs">docker</text>
<text x="594" y="614" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">gemini-2.5-pro</text>
<text x="801" y="614" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">97%</text>
<text x="864" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="631" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="648" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="864" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="631" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="648" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

@@ -4,140 +4,140 @@
</style>
<rect width="920" height="683" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Configure Footer</text>
<text x="891" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#afafaf" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#a8a8a8" textLength="396" lengthAdjust="spacingAndGlyphs">Select which items to display in the footer.</text>
<text x="891" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="104" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs"> workspace</text>
<text x="891" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="121" fill="#afafaf" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<text x="891" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="121" fill="#a8a8a8" textLength="234" lengthAdjust="spacingAndGlyphs"> Current working directory</text>
<text x="891" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="138" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="138" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> git-branch</text>
<text x="891" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#afafaf" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#a8a8a8" textLength="477" lengthAdjust="spacingAndGlyphs"> Current git branch name (not shown when unavailable)</text>
<text x="891" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="172" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="172" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs"> sandbox</text>
<text x="891" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#afafaf" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="189" fill="#a8a8a8" textLength="297" lengthAdjust="spacingAndGlyphs"> Sandbox type and trust indicator</text>
<text x="891" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="206" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> model-name</text>
<text x="891" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs"> Current model identifier</text>
<text x="891" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="240" fill="#d7ffd7" textLength="27" lengthAdjust="spacingAndGlyphs">[✓]</text>
<text x="72" y="240" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs"> quota</text>
<text x="891" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#afafaf" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#a8a8a8" textLength="540" lengthAdjust="spacingAndGlyphs"> Remaining usage on daily limit (not shown when unavailable)</text>
<text x="891" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="274" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> context-used</text>
<text x="891" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#afafaf" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="291" fill="#a8a8a8" textLength="306" lengthAdjust="spacingAndGlyphs"> Percentage of context window used</text>
<text x="891" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="308" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> memory-usage</text>
<text x="891" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="279" lengthAdjust="spacingAndGlyphs"> Memory used by the application</text>
<text x="891" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="342" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="342" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs"> session-id</text>
<text x="891" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#afafaf" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#a8a8a8" textLength="378" lengthAdjust="spacingAndGlyphs"> Unique identifier for the current session</text>
<text x="891" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="376" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs"> code-changes</text>
<text x="891" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="393" fill="#afafaf" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<text x="891" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="891" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="393" fill="#a8a8a8" textLength="513" lengthAdjust="spacingAndGlyphs"> Lines added/removed in the session (not shown when zero)</text>
<text x="891" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<text x="72" y="410" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs"> token-count</text>
<text x="891" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="442" width="9" height="17" fill="#001a00" />
<text x="891" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="495" lengthAdjust="spacingAndGlyphs"> Total tokens used in the session (not shown when zero)</text>
<text x="891" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="442" width="9" height="17" fill="#005f00" />
<text x="27" y="444" fill="#00cd00" textLength="9" lengthAdjust="spacingAndGlyphs">&gt;</text>
<rect x="36" y="442" width="9" height="17" fill="#001a00" />
<rect x="45" y="442" width="27" height="17" fill="#001a00" />
<text x="45" y="444" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<rect x="72" y="442" width="171" height="17" fill="#001a00" />
<rect x="36" y="442" width="9" height="17" fill="#005f00" />
<rect x="45" y="442" width="27" height="17" fill="#005f00" />
<text x="45" y="444" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">[ ]</text>
<rect x="72" y="442" width="171" height="17" fill="#005f00" />
<text x="72" y="444" fill="#00cd00" textLength="171" lengthAdjust="spacingAndGlyphs"> Show footer labels</text>
<rect x="243" y="442" width="630" height="17" fill="#001a00" />
<text x="891" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="459" width="846" height="17" fill="#001a00" />
<text x="891" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="243" y="442" width="630" height="17" fill="#005f00" />
<text x="891" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="459" width="846" height="17" fill="#005f00" />
<text x="891" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Reset to default footer</text>
<text x="891" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#afafaf" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="529" fill="#a8a8a8" textLength="585" lengthAdjust="spacingAndGlyphs">Enter to select · ↑/↓ to navigate · ←/→ to reorder · Esc to close</text>
<text x="891" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">┌────────────────────────────────────────────────────────────────────────────────────────────┐</text>
<text x="891" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="580" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Preview:</text>
<text x="864" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="597" fill="#afafaf" textLength="126" lengthAdjust="spacingAndGlyphs">~/project/path</text>
<text x="207" y="597" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="279" y="597" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">main</text>
<text x="351" y="597" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="864" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="597" fill="#a8a8a8" textLength="126" lengthAdjust="spacingAndGlyphs">~/project/path</text>
<text x="207" y="597" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="279" y="597" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">main</text>
<text x="351" y="597" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="432" y="597" fill="#00cd00" textLength="54" lengthAdjust="spacingAndGlyphs">docker</text>
<text x="522" y="597" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="594" y="597" fill="#afafaf" textLength="126" lengthAdjust="spacingAndGlyphs">gemini-2.5-pro</text>
<text x="756" y="597" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="828" y="597" fill="#afafaf" textLength="27" lengthAdjust="spacingAndGlyphs">97%</text>
<text x="864" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#333333" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="614" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#333333" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="522" y="597" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="594" y="597" fill="#a8a8a8" textLength="126" lengthAdjust="spacingAndGlyphs">gemini-2.5-pro</text>
<text x="756" y="597" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs"> · </text>
<text x="828" y="597" fill="#a8a8a8" textLength="27" lengthAdjust="spacingAndGlyphs">97%</text>
<text x="864" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="597" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="614" fill="#303030" textLength="846" lengthAdjust="spacingAndGlyphs">└────────────────────────────────────────────────────────────────────────────────────────────┘</text>
<text x="891" y="614" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#303030" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -389,7 +389,7 @@ exports[`<HistoryItemDisplay /> > renders InfoMessage for "info" type with multi
`;
exports[`<HistoryItemDisplay /> > thinking items > renders "Thinking..." header when isFirstThinking is true 1`] = `
" Thinking...
" Thinking...
│ Thinking
│ test
@@ -6,37 +6,37 @@
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="900" lengthAdjust="spacingAndGlyphs">ScrollableList </text>
<text x="0" y="19" fill="#ffffff" textLength="900" lengthAdjust="spacingAndGlyphs">AppHeader(full) </text>
<rect x="0" y="34" width="900" height="17" fill="#141414" />
<rect x="0" y="34" width="900" height="17" fill="#121212" />
<text x="0" y="36" fill="#000000" textLength="900" lengthAdjust="spacingAndGlyphs">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</text>
<rect x="0" y="51" width="9" height="17" fill="#141414" />
<rect x="9" y="51" width="18" height="17" fill="#141414" />
<rect x="0" y="51" width="9" height="17" fill="#121212" />
<rect x="9" y="51" width="18" height="17" fill="#121212" />
<text x="9" y="53" fill="#d7afff" textLength="18" lengthAdjust="spacingAndGlyphs">&gt; </text>
<rect x="27" y="51" width="135" height="17" fill="#141414" />
<rect x="27" y="51" width="135" height="17" fill="#121212" />
<text x="27" y="53" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">Plan a solution</text>
<rect x="162" y="51" width="738" height="17" fill="#141414" />
<rect x="0" y="68" width="900" height="17" fill="#141414" />
<rect x="162" y="51" width="738" height="17" fill="#121212" />
<rect x="0" y="68" width="900" height="17" fill="#121212" />
<text x="0" y="70" fill="#000000" textLength="900" lengthAdjust="spacingAndGlyphs">▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄</text>
<text x="0" y="87" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="104" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="121" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="104" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="121" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="121" fill="#ffffff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Initial analysis</text>
<text x="9" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="846" lengthAdjust="spacingAndGlyphs" font-style="italic">This is a multiple line paragraph for the first thinking message of how the model analyzes the</text>
<text x="9" y="155" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="155" fill="#afafaf" textLength="72" lengthAdjust="spacingAndGlyphs" font-style="italic">problem.</text>
<text x="9" y="172" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="189" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="846" lengthAdjust="spacingAndGlyphs" font-style="italic">This is a multiple line paragraph for the first thinking message of how the model analyzes the</text>
<text x="9" y="155" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="155" fill="#a8a8a8" textLength="72" lengthAdjust="spacingAndGlyphs" font-style="italic">problem.</text>
<text x="9" y="172" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="189" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="189" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Planning execution</text>
<text x="9" y="206" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="206" fill="#afafaf" textLength="828" lengthAdjust="spacingAndGlyphs" font-style="italic">This a second multiple line paragraph for the second thinking message explaining the plan in</text>
<text x="9" y="223" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="223" fill="#afafaf" textLength="468" lengthAdjust="spacingAndGlyphs" font-style="italic">detail so that it wraps around the terminal display.</text>
<text x="9" y="240" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="257" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="206" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="206" fill="#a8a8a8" textLength="828" lengthAdjust="spacingAndGlyphs" font-style="italic">This a second multiple line paragraph for the second thinking message explaining the plan in</text>
<text x="9" y="223" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="223" fill="#a8a8a8" textLength="468" lengthAdjust="spacingAndGlyphs" font-style="italic">detail so that it wraps around the terminal display.</text>
<text x="9" y="240" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="257" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="257" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Refining approach</text>
<text x="9" y="274" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="274" fill="#afafaf" textLength="792" lengthAdjust="spacingAndGlyphs" font-style="italic">And finally a third multiple line paragraph for the third thinking message to refine the</text>
<text x="9" y="291" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="291" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs" font-style="italic">solution.</text>
<text x="9" y="274" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="274" fill="#a8a8a8" textLength="792" lengthAdjust="spacingAndGlyphs" font-style="italic">And finally a third multiple line paragraph for the third thinking message to refine the</text>
<text x="9" y="291" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="291" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs" font-style="italic">solution.</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -6,7 +6,7 @@ exports[`SessionBrowser component > enters search mode, filters sessions, and re
Search: query (Esc to cancel)
Index │ Msgs │ Age │ Match
#1 │ 1 │ 10mo │ You: Query is here a… (+1 more)
#1 │ 1 │ 10mo │ You: Query is here a… (+1 more)
"
`;
@@ -17,7 +17,7 @@ exports[`SessionBrowser component > renders a list of sessions and marks current
Sort: s Reverse: r First/Last: g/G
Index │ Msgs │ Age │ Name
#1 │ 5 │ 10mo │ Second conversation about dogs (current)
#1 │ 5 │ 10mo │ Second conversation about dogs (current)
#2 │ 2 │ 10mo │ First conversation about cats
"
@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">true*</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="702" height="17" fill="#005f00" />
<rect x="819" y="153" width="54" height="17" fill="#005f00" />
<rect x="117" y="153" width="702" height="17" fill="#008700" />
<rect x="819" y="153" width="54" height="17" fill="#008700" />
<text x="819" y="155" fill="#d7ffd7" textLength="54" lengthAdjust="spacingAndGlyphs">false*</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="828" y="257" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">true*</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,136 +4,136 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#878787" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="87" fill="#afafaf" textLength="144" lengthAdjust="spacingAndGlyphs">Search to filter</text>
<text x="873" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#878787" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#808080" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="87" fill="#a8a8a8" textLength="144" lengthAdjust="spacingAndGlyphs">Search to filter</text>
<text x="873" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#808080" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="155" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<text x="828" y="155" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="155" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="597" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Apply To</text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="18" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="18" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="18" lengthAdjust="spacingAndGlyphs">1.</text>
<rect x="63" y="612" width="9" height="17" fill="#005f00" />
<rect x="72" y="612" width="117" height="17" fill="#005f00" />
<rect x="63" y="612" width="9" height="17" fill="#008700" />
<rect x="72" y="612" width="117" height="17" fill="#008700" />
<text x="72" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="189" y="612" width="684" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="189" y="612" width="684" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs">2.</text>
<text x="72" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs">3.</text>
<text x="72" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="702" height="17" fill="#005f00" />
<rect x="819" y="153" width="54" height="17" fill="#005f00" />
<rect x="117" y="153" width="702" height="17" fill="#008700" />
<rect x="819" y="153" width="54" height="17" fill="#008700" />
<text x="819" y="155" fill="#d7ffd7" textLength="54" lengthAdjust="spacingAndGlyphs">false*</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="819" y="257" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">false*</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="837" y="257" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -4,142 +4,142 @@
</style>
<rect width="920" height="751" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="2" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="19" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">&gt; Settings </text>
<text x="891" y="36" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="36" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="53" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="891" y="70" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="70" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="85" width="9" height="17" fill="#ffffff" />
<text x="36" y="87" fill="#000000" textLength="9" lengthAdjust="spacingAndGlyphs">S</text>
<text x="45" y="87" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="45" y="87" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs">earch to filter</text>
<text x="873" y="87" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="87" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#d7ffd7" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="104" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#005f00" />
<text x="891" y="104" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="121" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="138" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="153" width="9" height="17" fill="#008700" />
<text x="27" y="155" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="153" width="9" height="17" fill="#005f00" />
<rect x="45" y="153" width="72" height="17" fill="#005f00" />
<rect x="36" y="153" width="9" height="17" fill="#008700" />
<rect x="45" y="153" width="72" height="17" fill="#008700" />
<text x="45" y="155" fill="#d7ffd7" textLength="72" lengthAdjust="spacingAndGlyphs">Vim Mode</text>
<rect x="117" y="153" width="711" height="17" fill="#005f00" />
<rect x="828" y="153" width="45" height="17" fill="#005f00" />
<rect x="117" y="153" width="711" height="17" fill="#008700" />
<rect x="828" y="153" width="45" height="17" fill="#008700" />
<text x="828" y="155" fill="#d7ffd7" textLength="45" lengthAdjust="spacingAndGlyphs">true*</text>
<text x="891" y="155" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#005f00" />
<rect x="45" y="170" width="198" height="17" fill="#005f00" />
<text x="45" y="172" fill="#afafaf" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#005f00" />
<text x="891" y="172" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="155" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="170" width="18" height="17" fill="#008700" />
<rect x="45" y="170" width="198" height="17" fill="#008700" />
<text x="45" y="172" fill="#a8a8a8" textLength="198" lengthAdjust="spacingAndGlyphs">Enable Vim keybindings</text>
<rect x="243" y="170" width="630" height="17" fill="#008700" />
<text x="891" y="172" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="189" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="206" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Default Approval Mode</text>
<text x="810" y="206" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#afafaf" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="206" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs">Default</text>
<text x="891" y="206" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="223" fill="#a8a8a8" textLength="738" lengthAdjust="spacingAndGlyphs">The default approval mode for tool execution. &apos;default&apos; prompts for approval, &apos;au…</text>
<text x="891" y="223" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="240" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="257" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Enable Auto Update</text>
<text x="819" y="257" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">false*</text>
<text x="891" y="257" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#afafaf" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="257" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="274" fill="#a8a8a8" textLength="225" lengthAdjust="spacingAndGlyphs">Enable automatic updates.</text>
<text x="891" y="274" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="291" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="308" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Enable Notifications</text>
<text x="828" y="308" fill="#afafaf" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#afafaf" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="828" y="308" fill="#a8a8a8" textLength="45" lengthAdjust="spacingAndGlyphs">false</text>
<text x="891" y="308" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="325" fill="#a8a8a8" textLength="756" lengthAdjust="spacingAndGlyphs">Enable run-event notifications for action-required prompts and session completion. …</text>
<text x="891" y="325" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="342" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="359" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Plan Directory</text>
<text x="792" y="359" fill="#afafaf" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#afafaf" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="792" y="359" fill="#a8a8a8" textLength="81" lengthAdjust="spacingAndGlyphs">undefined</text>
<text x="891" y="359" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="376" fill="#a8a8a8" textLength="720" lengthAdjust="spacingAndGlyphs">The directory where planning artifacts are stored. If not specified, defaults t…</text>
<text x="891" y="376" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="393" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="410" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Plan Model Routing</text>
<text x="837" y="410" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#afafaf" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="410" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="410" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="427" fill="#a8a8a8" textLength="765" lengthAdjust="spacingAndGlyphs">Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pr…</text>
<text x="891" y="427" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="444" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="461" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Retry Fetch Errors</text>
<text x="837" y="461" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#afafaf" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs">true</text>
<text x="891" y="461" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="478" fill="#a8a8a8" textLength="612" lengthAdjust="spacingAndGlyphs">Retry on &quot;exception TypeError: fetch failed sending request&quot; errors.</text>
<text x="891" y="478" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="495" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">Max Chat Model Attempts</text>
<text x="855" y="512" fill="#afafaf" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#afafaf" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="512" fill="#a8a8a8" textLength="18" lengthAdjust="spacingAndGlyphs">10</text>
<text x="891" y="512" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="529" fill="#a8a8a8" textLength="729" lengthAdjust="spacingAndGlyphs">Maximum number of attempts for requests to the main chat model. Cannot exceed 10.</text>
<text x="891" y="529" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="546" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="563" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="563" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="580" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="597" fill="#ffffff" textLength="882" lengthAdjust="spacingAndGlyphs"> Apply To </text>
<text x="891" y="597" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#005f00" />
<text x="891" y="597" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="27" y="612" width="9" height="17" fill="#008700" />
<text x="27" y="614" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="36" y="612" width="9" height="17" fill="#005f00" />
<rect x="45" y="612" width="117" height="17" fill="#005f00" />
<rect x="36" y="612" width="9" height="17" fill="#008700" />
<rect x="45" y="612" width="117" height="17" fill="#008700" />
<text x="45" y="614" fill="#d7ffd7" textLength="117" lengthAdjust="spacingAndGlyphs">User Settings</text>
<rect x="162" y="612" width="711" height="17" fill="#005f00" />
<text x="891" y="614" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="162" y="612" width="711" height="17" fill="#008700" />
<text x="891" y="614" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="631" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Workspace Settings</text>
<text x="891" y="631" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="631" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="648" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">System Settings</text>
<text x="891" y="648" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#afafaf" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#878787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="891" y="648" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="665" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="682" fill="#a8a8a8" textLength="657" lengthAdjust="spacingAndGlyphs">(Use Enter to select, Ctrl+L to reset, Tab to change focus, Esc to close)</text>
<text x="891" y="682" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="891" y="699" fill="#808080" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="716" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -7,7 +7,7 @@ exports[`SuggestionsDisplay > handles scrolling 1`] = `
Cmd 7 Description 7
Cmd 8 Description 8
Cmd 9 Description 9
Cmd 10 Description 10
Cmd 10 Description 10
Cmd 11 Description 11
Cmd 12 Description 12
@@ -17,13 +17,13 @@ exports[`SuggestionsDisplay > handles scrolling 1`] = `
exports[`SuggestionsDisplay > highlights active item 1`] = `
" command1 Description 1
command2 Description 2
command2 Description 2
command3 Description 3
"
`;
exports[`SuggestionsDisplay > renders MCP tag for MCP prompts 1`] = `
" mcp-tool [MCP]
" mcp-tool [MCP]
"
`;
@@ -33,7 +33,7 @@ exports[`SuggestionsDisplay > renders loading state 1`] = `
`;
exports[`SuggestionsDisplay > renders suggestions list 1`] = `
" command1 Description 1
" command1 Description 1
command2 Description 2
command3 Description 3
"
@@ -6,7 +6,7 @@
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs" font-weight="bold">ID</text>
<text x="45" y="2" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Name</text>
<text x="0" y="19" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<text x="0" y="19" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<text x="0" y="36" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">1</text>
<text x="45" y="36" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Alice</text>
<text x="0" y="53" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">2</text>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -5,7 +5,7 @@
<rect width="920" height="71" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Value</text>
<text x="0" y="19" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<text x="0" y="19" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<text x="0" y="36" fill="#00cd00" textLength="18" lengthAdjust="spacingAndGlyphs">20</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 948 B

After

Width:  |  Height:  |  Size: 948 B

@@ -5,7 +5,7 @@
<rect width="920" height="71" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Status</text>
<text x="0" y="19" fill="#878787" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<text x="0" y="19" fill="#808080" textLength="900" lengthAdjust="spacingAndGlyphs">────────────────────────────────────────────────────────────────────────────────────────────────────</text>
<rect x="0" y="34" width="54" height="17" fill="#ffffff" />
<text x="0" y="36" fill="#000000" textLength="54" lengthAdjust="spacingAndGlyphs">Active</text>
</g>

Before

Width:  |  Height:  |  Size: 1017 B

After

Width:  |  Height:  |  Size: 1017 B

@@ -21,6 +21,7 @@ describe('ToolConfirmationMessage Redirection', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
it('should display redirection warning and tip for redirected commands', async () => {
@@ -37,6 +37,7 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
it('should not display urls if prompt and url are the same', async () => {
@@ -331,8 +332,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<ToolConfirmationMessage
callId="test-call-id"
@@ -353,6 +354,7 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => false,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
@@ -388,8 +390,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<ToolConfirmationMessage
callId="test-call-id"
@@ -415,8 +417,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<ToolConfirmationMessage
callId="test-call-id"
@@ -457,8 +459,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => false,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
vi.mocked(useToolActions).mockReturnValue({
confirm: vi.fn(),
cancel: vi.fn(),
@@ -485,8 +487,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => true,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
vi.mocked(useToolActions).mockReturnValue({
confirm: vi.fn(),
cancel: vi.fn(),
@@ -513,8 +515,8 @@ describe('ToolConfirmationMessage', () => {
const mockConfig = {
isTrustedFolder: () => true,
getIdeMode: () => true,
getDisableAlwaysAllow: () => false,
} as unknown as Config;
vi.mocked(useToolActions).mockReturnValue({
confirm: vi.fn(),
cancel: vi.fn(),
@@ -86,12 +86,14 @@ export const ToolConfirmationMessage: React.FC<
const settings = useSettings();
const allowPermanentApproval =
settings.merged.security.enablePermanentToolApproval;
settings.merged.security.enablePermanentToolApproval &&
!config.getDisableAlwaysAllow();
const handlesOwnUI =
confirmationDetails.type === 'ask_user' ||
confirmationDetails.type === 'exit_plan_mode';
const isTrustedFolder = config.isTrustedFolder();
const isTrustedFolder =
config.isTrustedFolder() && !config.getDisableAlwaysAllow();
const handleConfirm = useCallback(
(outcome: ToolConfirmationOutcome, payload?: ToolConfirmationPayload) => {
@@ -5,10 +5,10 @@
<rect width="920" height="88" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Thinking</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs" font-style="italic">Done</text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs" font-style="italic">Done</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1016 B

After

Width:  |  Height:  |  Size: 1016 B

@@ -5,10 +5,10 @@
<rect width="920" height="88" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Matching the Blocks</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="126" lengthAdjust="spacingAndGlyphs" font-style="italic">Some more text</text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="126" lengthAdjust="spacingAndGlyphs" font-style="italic">Some more text</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -5,10 +5,10 @@
<rect width="920" height="88" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Summary line</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="135" lengthAdjust="spacingAndGlyphs" font-style="italic">First body line</text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="135" lengthAdjust="spacingAndGlyphs" font-style="italic">First body line</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -5,10 +5,10 @@
<rect width="920" height="88" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Planning</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="243" lengthAdjust="spacingAndGlyphs" font-style="italic">I am planning the solution.</text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="243" lengthAdjust="spacingAndGlyphs" font-style="italic">I am planning the solution.</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -5,26 +5,26 @@
<rect width="920" height="241" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Initial analysis</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="675" lengthAdjust="spacingAndGlyphs" font-style="italic">This is a multiple line paragraph for the first thinking message of how the</text>
<text x="9" y="70" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#afafaf" textLength="243" lengthAdjust="spacingAndGlyphs" font-style="italic">model analyzes the problem.</text>
<text x="9" y="87" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="104" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="675" lengthAdjust="spacingAndGlyphs" font-style="italic">This is a multiple line paragraph for the first thinking message of how the</text>
<text x="9" y="70" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#a8a8a8" textLength="243" lengthAdjust="spacingAndGlyphs" font-style="italic">model analyzes the problem.</text>
<text x="9" y="87" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="104" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="104" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Planning execution</text>
<text x="9" y="121" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="121" fill="#afafaf" textLength="621" lengthAdjust="spacingAndGlyphs" font-style="italic">This a second multiple line paragraph for the second thinking message</text>
<text x="9" y="138" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#afafaf" textLength="675" lengthAdjust="spacingAndGlyphs" font-style="italic">explaining the plan in detail so that it wraps around the terminal display.</text>
<text x="9" y="155" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="172" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="121" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="121" fill="#a8a8a8" textLength="621" lengthAdjust="spacingAndGlyphs" font-style="italic">This a second multiple line paragraph for the second thinking message</text>
<text x="9" y="138" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="138" fill="#a8a8a8" textLength="675" lengthAdjust="spacingAndGlyphs" font-style="italic">explaining the plan in detail so that it wraps around the terminal display.</text>
<text x="9" y="155" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="172" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="172" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Refining approach</text>
<text x="9" y="189" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="189" fill="#afafaf" textLength="693" lengthAdjust="spacingAndGlyphs" font-style="italic">And finally a third multiple line paragraph for the third thinking message to</text>
<text x="9" y="206" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="206" fill="#afafaf" textLength="180" lengthAdjust="spacingAndGlyphs" font-style="italic">refine the solution.</text>
<text x="9" y="189" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="189" fill="#a8a8a8" textLength="693" lengthAdjust="spacingAndGlyphs" font-style="italic">And finally a third multiple line paragraph for the third thinking message to</text>
<text x="9" y="206" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="206" fill="#a8a8a8" textLength="180" lengthAdjust="spacingAndGlyphs" font-style="italic">refine the solution.</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -5,10 +5,10 @@
<rect width="920" height="88" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Planning</text>
<text x="9" y="53" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#afafaf" textLength="36" lengthAdjust="spacingAndGlyphs" font-style="italic">test</text>
<text x="9" y="53" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#a8a8a8" textLength="36" lengthAdjust="spacingAndGlyphs" font-style="italic">test</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1016 B

After

Width:  |  Height:  |  Size: 1016 B

@@ -5,8 +5,8 @@
<rect width="920" height="71" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="2" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs" font-style="italic"> Thinking... </text>
<text x="9" y="19" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#afafaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="19" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="9" y="36" fill="#a8a8a8" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="36" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Processing details</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 812 B

After

Width:  |  Height:  |  Size: 812 B

@@ -15,15 +15,15 @@
<text x="63" y="36" fill="#cd00cd" textLength="18" lengthAdjust="spacingAndGlyphs">$i</text>
<text x="0" y="53" fill="#0000ee" textLength="36" lengthAdjust="spacingAndGlyphs">done</text>
<text x="0" y="70" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">Allow execution of: &apos;echo&apos;?</text>
<rect x="0" y="102" width="9" height="17" fill="#001a00" />
<rect x="0" y="102" width="9" height="17" fill="#005f00" />
<text x="0" y="104" fill="#00cd00" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<rect x="9" y="102" width="9" height="17" fill="#001a00" />
<rect x="18" y="102" width="18" height="17" fill="#001a00" />
<rect x="9" y="102" width="9" height="17" fill="#005f00" />
<rect x="18" y="102" width="18" height="17" fill="#005f00" />
<text x="18" y="104" fill="#00cd00" textLength="18" lengthAdjust="spacingAndGlyphs">1.</text>
<rect x="36" y="102" width="9" height="17" fill="#001a00" />
<rect x="45" y="102" width="90" height="17" fill="#001a00" />
<rect x="36" y="102" width="9" height="17" fill="#005f00" />
<rect x="45" y="102" width="90" height="17" fill="#005f00" />
<text x="45" y="104" fill="#00cd00" textLength="90" lengthAdjust="spacingAndGlyphs">Allow once</text>
<rect x="135" y="102" width="135" height="17" fill="#001a00" />
<rect x="135" y="102" width="135" height="17" fill="#005f00" />
<text x="18" y="121" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs">2.</text>
<text x="45" y="121" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">Allow for this session</text>
<text x="18" y="138" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs">3.</text>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -325,9 +325,9 @@ export const useSlashCommandProcessor = (
(async () => {
const commandService = await CommandService.create(
[
new BuiltinCommandLoader(config),
new SkillCommandLoader(config),
new McpPromptLoader(config),
new BuiltinCommandLoader(config),
new FileCommandLoader(config),
],
controller.signal,
@@ -8,7 +8,7 @@
<text x="45" y="2" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs">1</text>
<text x="0" y="19" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">line </text>
<text x="45" y="19" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs">2</text>
<text x="63" y="19" fill="#87afff" textLength="36" lengthAdjust="spacingAndGlyphs">with</text>
<text x="63" y="19" fill="#afafff" textLength="36" lengthAdjust="spacingAndGlyphs">with</text>
<text x="99" y="19" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs"> red background</text>
<text x="0" y="36" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">line </text>
<text x="45" y="36" fill="#d7ffd7" textLength="9" lengthAdjust="spacingAndGlyphs">3</text>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -4,36 +4,36 @@
</style>
<rect width="380" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="252" lengthAdjust="spacingAndGlyphs">┌────────┬────────┬────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="81" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="162" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="243" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="252" lengthAdjust="spacingAndGlyphs">├────────┼────────┼────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="252" lengthAdjust="spacingAndGlyphs">┌────────┬────────┬────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="81" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="162" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="243" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="252" lengthAdjust="spacingAndGlyphs">├────────┼────────┼────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">123456</text>
<text x="81" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="162" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="70" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="243" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="243" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="81" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">123456</text>
<text x="162" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="243" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="243" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="81" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="104" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="162" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="104" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">123456</text>
<text x="243" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="252" lengthAdjust="spacingAndGlyphs">└────────┴────────┴────────┘</text>
<text x="243" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="252" lengthAdjust="spacingAndGlyphs">└────────┴────────┴────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -4,42 +4,42 @@
</style>
<rect width="1100" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="927" lengthAdjust="spacingAndGlyphs">┌───────────────────────────────────┬───────────────────────────────┬─────────────────────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="324" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="612" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="918" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="927" lengthAdjust="spacingAndGlyphs">├───────────────────────────────────┼───────────────────────────────┼─────────────────────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="927" lengthAdjust="spacingAndGlyphs">┌───────────────────────────────────┬───────────────────────────────┬─────────────────────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="324" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="612" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="918" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="927" lengthAdjust="spacingAndGlyphs">├───────────────────────────────────┼───────────────────────────────┼─────────────────────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">Visit Google (</text>
<text x="144" y="70" fill="#87afff" textLength="162" lengthAdjust="spacingAndGlyphs">https://google.com</text>
<text x="144" y="70" fill="#afafff" textLength="162" lengthAdjust="spacingAndGlyphs">https://google.com</text>
<text x="306" y="70" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">)</text>
<text x="324" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="70" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">Plain Text</text>
<text x="612" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="612" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="70" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">More Info</text>
<text x="918" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="918" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">Info Here</text>
<text x="324" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="87" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Visit Bing (</text>
<text x="450" y="87" fill="#87afff" textLength="144" lengthAdjust="spacingAndGlyphs">https://bing.com</text>
<text x="450" y="87" fill="#afafff" textLength="144" lengthAdjust="spacingAndGlyphs">https://bing.com</text>
<text x="594" y="87" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">)</text>
<text x="612" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="612" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="87" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Links</text>
<text x="918" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="918" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">Check This</text>
<text x="324" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="104" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Search</text>
<text x="612" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="612" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="104" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs">Visit Yahoo (</text>
<text x="747" y="104" fill="#87afff" textLength="153" lengthAdjust="spacingAndGlyphs">https://yahoo.com</text>
<text x="747" y="104" fill="#afafff" textLength="153" lengthAdjust="spacingAndGlyphs">https://yahoo.com</text>
<text x="900" y="104" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">)</text>
<text x="918" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="927" lengthAdjust="spacingAndGlyphs">└───────────────────────────────────┴───────────────────────────────┴─────────────────────────────────┘</text>
<text x="918" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="927" lengthAdjust="spacingAndGlyphs">└───────────────────────────────────┴───────────────────────────────┴─────────────────────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

@@ -4,37 +4,37 @@
</style>
<rect width="920" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="549" lengthAdjust="spacingAndGlyphs">┌─────────────────┬──────────────────────┬──────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="162" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="369" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="387" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="540" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="549" lengthAdjust="spacingAndGlyphs">├─────────────────┼──────────────────────┼──────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="549" lengthAdjust="spacingAndGlyphs">┌─────────────────┬──────────────────────┬──────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="162" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="369" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="387" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="540" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="549" lengthAdjust="spacingAndGlyphs">├─────────────────┼──────────────────────┼──────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#d7afff" textLength="108" lengthAdjust="spacingAndGlyphs">**not bold**</text>
<text x="162" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="70" fill="#d7afff" textLength="108" lengthAdjust="spacingAndGlyphs">_not italic_</text>
<text x="369" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="369" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="387" y="70" fill="#d7afff" textLength="126" lengthAdjust="spacingAndGlyphs">~~not strike~~</text>
<text x="540" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="540" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#d7afff" textLength="135" lengthAdjust="spacingAndGlyphs">[not link](url)</text>
<text x="162" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="87" fill="#d7afff" textLength="180" lengthAdjust="spacingAndGlyphs">&lt;u&gt;not underline&lt;/u&gt;</text>
<text x="369" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="369" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="387" y="87" fill="#d7afff" textLength="144" lengthAdjust="spacingAndGlyphs">https://not.link</text>
<text x="540" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="540" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">Normal Text</text>
<text x="162" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="104" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">More Code: </text>
<text x="279" y="104" fill="#d7afff" textLength="54" lengthAdjust="spacingAndGlyphs">*test*</text>
<text x="369" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="369" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="387" y="104" fill="#d7afff" textLength="108" lengthAdjust="spacingAndGlyphs">***nested***</text>
<text x="540" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="549" lengthAdjust="spacingAndGlyphs">└─────────────────┴──────────────────────┴──────────────────┘</text>
<text x="540" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="549" lengthAdjust="spacingAndGlyphs">└─────────────────┴──────────────────────┴──────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -4,42 +4,42 @@
</style>
<rect width="920" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="819" lengthAdjust="spacingAndGlyphs">┌─────────────────────────────┬─────────────────────────────┬─────────────────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="270" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="540" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="558" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="810" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="819" lengthAdjust="spacingAndGlyphs">├─────────────────────────────┼─────────────────────────────┼─────────────────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="819" lengthAdjust="spacingAndGlyphs">┌─────────────────────────────┬─────────────────────────────┬─────────────────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="270" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="540" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="558" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="810" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="819" lengthAdjust="spacingAndGlyphs">├─────────────────────────────┼─────────────────────────────┼─────────────────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold with </text>
<text x="108" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Italic</text>
<text x="162" y="70" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold"> and Strike</text>
<text x="270" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="540" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="540" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="558" y="70" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="810" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="270" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold with </text>
<text x="378" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Italic</text>
<text x="432" y="87" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold"> and Strike</text>
<text x="540" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="540" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="558" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="810" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="810" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Normal</text>
<text x="270" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="104" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="540" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="540" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="558" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold with </text>
<text x="648" y="104" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Italic</text>
<text x="702" y="104" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold"> and Strike</text>
<text x="810" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="819" lengthAdjust="spacingAndGlyphs">└─────────────────────────────┴─────────────────────────────┴─────────────────────────────┘</text>
<text x="810" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="819" lengthAdjust="spacingAndGlyphs">└─────────────────────────────┴─────────────────────────────┴─────────────────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

@@ -4,29 +4,29 @@
</style>
<rect width="560" height="139" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">┌──────────────┬────────────┬───────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Emoji 😃</text>
<text x="126" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#87afff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Asian 汉字</text>
<text x="243" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="261" y="36" fill="#87afff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Mixed 🚀 Text</text>
<text x="378" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">├──────────────┼────────────┼───────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">┌──────────────┬────────────┬───────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Emoji 😃</text>
<text x="126" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#afafff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Asian 汉字</text>
<text x="243" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="261" y="36" fill="#afafff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Mixed 🚀 Text</text>
<text x="378" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">├──────────────┼────────────┼───────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">Start 🌟 End</text>
<text x="126" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="70" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">你好世界</text>
<text x="243" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="243" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="261" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Rocket 🚀 Man</text>
<text x="378" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="378" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">Thumbs 👍 Up</text>
<text x="126" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="87" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">こんにちは</text>
<text x="243" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="243" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="261" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Fire 🔥</text>
<text x="378" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">└──────────────┴────────────┴───────────────┘</text>
<text x="378" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">└──────────────┴────────────┴───────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -4,44 +4,44 @@
</style>
<rect width="920" height="190" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="297" lengthAdjust="spacingAndGlyphs">┌─────────────┬───────┬─────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="126" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Short</text>
<text x="198" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Another</text>
<text x="288" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#87afff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold Header</text>
<text x="126" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="53" fill="#87afff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Long</text>
<text x="288" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#87afff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">That Will</text>
<text x="126" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="70" fill="#87afff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header</text>
<text x="288" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#87afff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Wrap</text>
<text x="126" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="297" lengthAdjust="spacingAndGlyphs">├─────────────┼───────┼─────────┤</text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="297" lengthAdjust="spacingAndGlyphs">┌─────────────┬───────┬─────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="126" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Short</text>
<text x="198" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Another</text>
<text x="288" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#afafff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold Header</text>
<text x="126" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="53" fill="#afafff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Long</text>
<text x="288" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#afafff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">That Will</text>
<text x="126" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="70" fill="#afafff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header</text>
<text x="288" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#afafff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Wrap</text>
<text x="126" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="297" lengthAdjust="spacingAndGlyphs">├─────────────┼───────┼─────────┤</text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 1</text>
<text x="126" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="121" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">Data</text>
<text x="198" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="121" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 3</text>
<text x="288" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="138" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">2</text>
<text x="198" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="297" lengthAdjust="spacingAndGlyphs">└─────────────┴───────┴─────────┘</text>
<text x="198" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="297" lengthAdjust="spacingAndGlyphs">└─────────────┴───────┴─────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

@@ -4,36 +4,36 @@
</style>
<rect width="920" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">┌──────────────┬──────────────┬──────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="135" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="270" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="405" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">├──────────────┼──────────────┼──────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">┌──────────────┬──────────────┬──────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="135" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="270" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="405" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">├──────────────┼──────────────┼──────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 1, Col 1</text>
<text x="135" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 1, Col 2</text>
<text x="270" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 1, Col 3</text>
<text x="405" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="405" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 2, Col 1</text>
<text x="135" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="87" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 2, Col 2</text>
<text x="270" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 2, Col 3</text>
<text x="405" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="405" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 3, Col 1</text>
<text x="135" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="104" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 3, Col 2</text>
<text x="270" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="104" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Row 3, Col 3</text>
<text x="405" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">└──────────────┴──────────────┴──────────────┘</text>
<text x="405" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">└──────────────┴──────────────┴──────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -4,398 +4,398 @@
</style>
<rect width="1460" height="615" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="1404" lengthAdjust="spacingAndGlyphs">┌─────────────────────────────┬──────────────────────────────┬─────────────────────────────┬──────────────────────────────┬─────┬────────┬─────────┬───────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="243" lengthAdjust="spacingAndGlyphs" font-weight="bold">Comprehensive Architectural</text>
<text x="270" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#87afff" textLength="234" lengthAdjust="spacingAndGlyphs" font-weight="bold">Implementation Details for</text>
<text x="549" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="36" fill="#87afff" textLength="216" lengthAdjust="spacingAndGlyphs" font-weight="bold">Longitudinal Performance</text>
<text x="819" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="36" fill="#87afff" textLength="252" lengthAdjust="spacingAndGlyphs" font-weight="bold">Strategic Security Framework</text>
<text x="1098" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1116" y="36" fill="#87afff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">Key</text>
<text x="1152" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1170" y="36" fill="#87afff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Status</text>
<text x="1233" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1251" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Version</text>
<text x="1323" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1341" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Owner</text>
<text x="1395" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#87afff" textLength="189" lengthAdjust="spacingAndGlyphs" font-weight="bold">Specification for the</text>
<text x="270" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="53" fill="#87afff" textLength="171" lengthAdjust="spacingAndGlyphs" font-weight="bold">the High-Throughput</text>
<text x="549" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="53" fill="#87afff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Analysis Across</text>
<text x="819" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="53" fill="#87afff" textLength="252" lengthAdjust="spacingAndGlyphs" font-weight="bold">for Mitigating Sophisticated</text>
<text x="1098" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#87afff" textLength="234" lengthAdjust="spacingAndGlyphs" font-weight="bold">Distributed Infrastructure</text>
<text x="270" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="70" fill="#87afff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Asynchronous Message</text>
<text x="549" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="70" fill="#87afff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Multi-Regional Cloud</text>
<text x="819" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="70" fill="#87afff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Cross-Site Scripting</text>
<text x="1098" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Layer</text>
<text x="270" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#87afff" textLength="216" lengthAdjust="spacingAndGlyphs" font-weight="bold">Processing Pipeline with</text>
<text x="549" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="87" fill="#87afff" textLength="171" lengthAdjust="spacingAndGlyphs" font-weight="bold">Deployment Clusters</text>
<text x="819" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="87" fill="#87afff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Vulnerabilities</text>
<text x="1098" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="104" fill="#87afff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Extended Scalability</text>
<text x="549" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="121" fill="#87afff" textLength="207" lengthAdjust="spacingAndGlyphs" font-weight="bold">Features and Redundancy</text>
<text x="549" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="138" fill="#87afff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Protocols</text>
<text x="549" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="1404" lengthAdjust="spacingAndGlyphs">├─────────────────────────────┼──────────────────────────────┼─────────────────────────────┼──────────────────────────────┼─────┼────────┼─────────┼───────┤</text>
<text x="0" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="1404" lengthAdjust="spacingAndGlyphs">┌─────────────────────────────┬──────────────────────────────┬─────────────────────────────┬──────────────────────────────┬─────┬────────┬─────────┬───────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="243" lengthAdjust="spacingAndGlyphs" font-weight="bold">Comprehensive Architectural</text>
<text x="270" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#afafff" textLength="234" lengthAdjust="spacingAndGlyphs" font-weight="bold">Implementation Details for</text>
<text x="549" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="36" fill="#afafff" textLength="216" lengthAdjust="spacingAndGlyphs" font-weight="bold">Longitudinal Performance</text>
<text x="819" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="36" fill="#afafff" textLength="252" lengthAdjust="spacingAndGlyphs" font-weight="bold">Strategic Security Framework</text>
<text x="1098" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1116" y="36" fill="#afafff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">Key</text>
<text x="1152" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1170" y="36" fill="#afafff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Status</text>
<text x="1233" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1251" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Version</text>
<text x="1323" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1341" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Owner</text>
<text x="1395" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#afafff" textLength="189" lengthAdjust="spacingAndGlyphs" font-weight="bold">Specification for the</text>
<text x="270" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="53" fill="#afafff" textLength="171" lengthAdjust="spacingAndGlyphs" font-weight="bold">the High-Throughput</text>
<text x="549" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="53" fill="#afafff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Analysis Across</text>
<text x="819" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="53" fill="#afafff" textLength="252" lengthAdjust="spacingAndGlyphs" font-weight="bold">for Mitigating Sophisticated</text>
<text x="1098" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#afafff" textLength="234" lengthAdjust="spacingAndGlyphs" font-weight="bold">Distributed Infrastructure</text>
<text x="270" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="70" fill="#afafff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Asynchronous Message</text>
<text x="549" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="70" fill="#afafff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Multi-Regional Cloud</text>
<text x="819" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="70" fill="#afafff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Cross-Site Scripting</text>
<text x="1098" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Layer</text>
<text x="270" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="87" fill="#afafff" textLength="216" lengthAdjust="spacingAndGlyphs" font-weight="bold">Processing Pipeline with</text>
<text x="549" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="87" fill="#afafff" textLength="171" lengthAdjust="spacingAndGlyphs" font-weight="bold">Deployment Clusters</text>
<text x="819" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="87" fill="#afafff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Vulnerabilities</text>
<text x="1098" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="104" fill="#afafff" textLength="180" lengthAdjust="spacingAndGlyphs" font-weight="bold">Extended Scalability</text>
<text x="549" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="121" fill="#afafff" textLength="207" lengthAdjust="spacingAndGlyphs" font-weight="bold">Features and Redundancy</text>
<text x="549" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="138" fill="#afafff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Protocols</text>
<text x="549" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="1404" lengthAdjust="spacingAndGlyphs">├─────────────────────────────┼──────────────────────────────┼─────────────────────────────┼──────────────────────────────┼─────┼────────┼─────────┼───────┤</text>
<text x="0" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="172" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">The primary architecture</text>
<text x="270" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="172" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">Each message is processed</text>
<text x="549" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="172" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">Historical data indicates a</text>
<text x="819" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="172" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">A multi-layered defense</text>
<text x="1098" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1116" y="172" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">INF</text>
<text x="1152" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1170" y="172" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Active</text>
<text x="1233" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1251" y="172" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">v2.4</text>
<text x="1323" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1341" y="172" fill="#ffffff" textLength="18" lengthAdjust="spacingAndGlyphs">J.</text>
<text x="1395" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="189" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">utilizes a decoupled</text>
<text x="270" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="189" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs">through a series of</text>
<text x="549" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="189" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">significant reduction in</text>
<text x="819" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="189" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">strategy incorporates</text>
<text x="1098" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1341" y="189" fill="#ffffff" textLength="27" lengthAdjust="spacingAndGlyphs">Doe</text>
<text x="1395" y="189" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="189" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="206" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">microservices approach,</text>
<text x="270" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="206" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">specialized workers that</text>
<text x="549" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="206" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">tail latency when utilizing</text>
<text x="819" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="206" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">content security policies,</text>
<text x="1098" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="206" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="206" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="223" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">leveraging container</text>
<text x="270" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="223" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">handle data transformation,</text>
<text x="549" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="223" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">edge computing nodes closer</text>
<text x="819" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="223" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">input sanitization</text>
<text x="1098" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="223" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="223" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="240" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">orchestration for</text>
<text x="270" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="240" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">validation, and persistent</text>
<text x="549" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="240" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">to the geographic location</text>
<text x="819" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="240" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">libraries, and regular</text>
<text x="1098" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="240" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="240" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="257" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">scalability and fault</text>
<text x="270" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="257" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">storage using a persistent</text>
<text x="549" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="257" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">of the end-user base.</text>
<text x="819" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="257" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">automated penetration</text>
<text x="1098" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="257" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="257" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="274" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">tolerance in high-load</text>
<text x="270" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="274" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">queue.</text>
<text x="549" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="274" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">testing routines.</text>
<text x="1098" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="274" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="274" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="291" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">scenarios.</text>
<text x="270" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="291" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">Monitoring tools have</text>
<text x="819" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="291" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="291" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="308" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">The pipeline features</text>
<text x="549" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="308" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">captured a steady increase</text>
<text x="819" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="308" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">Developers are required to</text>
<text x="1098" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="308" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="308" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="325" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">This layer provides the</text>
<text x="270" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="325" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">built-in retry mechanisms</text>
<text x="549" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="325" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">in throughput efficiency</text>
<text x="819" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="325" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">undergo mandatory security</text>
<text x="1098" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="325" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="325" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="342" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">fundamental building blocks</text>
<text x="270" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="342" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">with exponential backoff to</text>
<text x="549" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="342" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">since the introduction of</text>
<text x="819" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="342" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">training focusing on the</text>
<text x="1098" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="342" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="342" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="359" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">for service discovery, load</text>
<text x="270" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="359" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">ensure message delivery</text>
<text x="549" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="359" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">the vectorized query engine</text>
<text x="819" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="359" fill="#ffffff" textLength="252" lengthAdjust="spacingAndGlyphs">OWASP Top Ten to ensure that</text>
<text x="1098" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="359" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="359" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="376" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">balancing, and</text>
<text x="270" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="376" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">integrity even during</text>
<text x="549" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="376" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs">in the primary data</text>
<text x="819" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="376" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">security is integrated into</text>
<text x="1098" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="376" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="376" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="393" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">inter-service communication</text>
<text x="270" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="393" fill="#ffffff" textLength="252" lengthAdjust="spacingAndGlyphs">transient network or service</text>
<text x="549" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="393" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">warehouse.</text>
<text x="819" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="393" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">the initial design phase.</text>
<text x="1098" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="393" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="393" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="410" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">via highly efficient</text>
<text x="270" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="410" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">failures.</text>
<text x="549" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="410" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="410" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="427" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">protocol buffers.</text>
<text x="270" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="427" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">Resource utilization</text>
<text x="819" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="427" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">The implementation of a</text>
<text x="1098" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="427" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="427" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="444" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">Horizontal autoscaling is</text>
<text x="549" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="444" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">metrics demonstrate that</text>
<text x="819" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="444" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">robust Identity and Access</text>
<text x="1098" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="444" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="444" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="461" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">Advanced telemetry and</text>
<text x="270" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="461" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">triggered automatically</text>
<text x="549" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="461" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">the transition to</text>
<text x="819" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="461" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">Management system ensures</text>
<text x="1098" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="461" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="461" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="478" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">logging integrations allow</text>
<text x="270" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="478" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">based on the depth of the</text>
<text x="549" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="478" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">serverless compute for</text>
<text x="819" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="478" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">that the principle of least</text>
<text x="1098" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="478" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="478" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="495" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">for real-time monitoring of</text>
<text x="270" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="495" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">processing queue, ensuring</text>
<text x="549" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="495" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">intermittent tasks has</text>
<text x="819" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="495" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">privilege is strictly</text>
<text x="1098" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="495" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="495" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="512" fill="#ffffff" textLength="207" lengthAdjust="spacingAndGlyphs">system health and rapid</text>
<text x="270" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="512" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">consistent performance</text>
<text x="549" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="512" fill="#ffffff" textLength="180" lengthAdjust="spacingAndGlyphs">resulted in a thirty</text>
<text x="819" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="512" fill="#ffffff" textLength="171" lengthAdjust="spacingAndGlyphs">enforced across all</text>
<text x="1098" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="512" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="512" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="529" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">identification of</text>
<text x="270" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="529" fill="#ffffff" textLength="225" lengthAdjust="spacingAndGlyphs">during unexpected traffic</text>
<text x="549" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="567" y="529" fill="#ffffff" textLength="234" lengthAdjust="spacingAndGlyphs">percent cost optimization.</text>
<text x="819" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="837" y="529" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs">environments.</text>
<text x="1098" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="529" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="529" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="546" fill="#ffffff" textLength="198" lengthAdjust="spacingAndGlyphs">bottlenecks within the</text>
<text x="270" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="546" fill="#ffffff" textLength="63" lengthAdjust="spacingAndGlyphs">spikes.</text>
<text x="549" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="546" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="546" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="563" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs">service mesh.</text>
<text x="270" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="563" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#333333" textLength="1404" lengthAdjust="spacingAndGlyphs">└─────────────────────────────┴──────────────────────────────┴─────────────────────────────┴──────────────────────────────┴─────┴────────┴─────────┴───────┘</text>
<text x="270" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="549" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="819" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1098" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1152" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1233" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1323" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="1395" y="563" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="580" fill="#303030" textLength="1404" lengthAdjust="spacingAndGlyphs">└─────────────────────────────┴──────────────────────────────┴─────────────────────────────┴──────────────────────────────┴─────┴────────┴─────────┴───────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

@@ -4,60 +4,60 @@
</style>
<rect width="920" height="190" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="639" lengthAdjust="spacingAndGlyphs">┌───────────────┬───────────────┬──────────────────┬──────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="144" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#87afff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="288" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="36" fill="#87afff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long Column</text>
<text x="459" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="36" fill="#87afff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long Column</text>
<text x="630" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Column Header</text>
<text x="144" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="53" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Column Header</text>
<text x="288" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="53" fill="#87afff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header Three</text>
<text x="459" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="53" fill="#87afff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header Four</text>
<text x="630" y="53" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#87afff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">One</text>
<text x="144" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="70" fill="#87afff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">Two</text>
<text x="288" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="459" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="639" lengthAdjust="spacingAndGlyphs">├───────────────┼───────────────┼──────────────────┼──────────────────┤</text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="639" lengthAdjust="spacingAndGlyphs">┌───────────────┬───────────────┬──────────────────┬──────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="144" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#afafff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long</text>
<text x="288" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="36" fill="#afafff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long Column</text>
<text x="459" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="36" fill="#afafff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Very Long Column</text>
<text x="630" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="53" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Column Header</text>
<text x="144" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="53" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Column Header</text>
<text x="288" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="53" fill="#afafff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header Three</text>
<text x="459" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="53" fill="#afafff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header Four</text>
<text x="630" y="53" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#afafff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">One</text>
<text x="144" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="70" fill="#afafff" textLength="27" lengthAdjust="spacingAndGlyphs" font-weight="bold">Two</text>
<text x="288" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="459" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="639" lengthAdjust="spacingAndGlyphs">├───────────────┼───────────────┼──────────────────┼──────────────────┤</text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 1.1</text>
<text x="144" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="104" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 1.2</text>
<text x="288" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="104" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 1.3</text>
<text x="459" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="459" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="104" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 1.4</text>
<text x="630" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 2.1</text>
<text x="144" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="121" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 2.2</text>
<text x="288" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="121" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 2.3</text>
<text x="459" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="459" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="121" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 2.4</text>
<text x="630" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="630" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 3.1</text>
<text x="144" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 3.2</text>
<text x="288" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 3.3</text>
<text x="459" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="459" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="477" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Data 3.4</text>
<text x="630" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="639" lengthAdjust="spacingAndGlyphs">└───────────────┴───────────────┴──────────────────┴──────────────────┘</text>
<text x="630" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="639" lengthAdjust="spacingAndGlyphs">└───────────────┴───────────────┴──────────────────┴──────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

@@ -4,29 +4,29 @@
</style>
<rect width="740" height="139" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="486" lengthAdjust="spacingAndGlyphs">┌───────────────┬───────────────────┬────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Mixed 😃 中文</text>
<text x="135" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#87afff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Complex 🚀 日本語</text>
<text x="306" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Text 📝 한국어</text>
<text x="450" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="486" lengthAdjust="spacingAndGlyphs">├───────────────┼───────────────────┼────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="486" lengthAdjust="spacingAndGlyphs">┌───────────────┬───────────────────┬────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Mixed 😃 中文</text>
<text x="135" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#afafff" textLength="144" lengthAdjust="spacingAndGlyphs" font-weight="bold">Complex 🚀 日本語</text>
<text x="306" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Text 📝 한국어</text>
<text x="450" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="486" lengthAdjust="spacingAndGlyphs">├───────────────┼───────────────────┼────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">你好 😃</text>
<text x="135" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">こんにちは 🚀</text>
<text x="306" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">안녕하세요 📝</text>
<text x="450" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="450" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="63" lengthAdjust="spacingAndGlyphs">World 🌍</text>
<text x="135" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Code 💻</text>
<text x="306" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="87" fill="#ffffff" textLength="63" lengthAdjust="spacingAndGlyphs">Pizza 🍕</text>
<text x="450" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="486" lengthAdjust="spacingAndGlyphs">└───────────────┴───────────────────┴────────────────┘</text>
<text x="450" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="486" lengthAdjust="spacingAndGlyphs">└───────────────┴───────────────────┴────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -4,29 +4,29 @@
</style>
<rect width="560" height="139" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="450" lengthAdjust="spacingAndGlyphs">┌──────────────┬─────────────────┬───────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Chinese 中文</text>
<text x="135" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#87afff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Japanese 日本語</text>
<text x="297" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Korean 한국어</text>
<text x="441" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="450" lengthAdjust="spacingAndGlyphs">├──────────────┼─────────────────┼───────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="450" lengthAdjust="spacingAndGlyphs">┌──────────────┬─────────────────┬───────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Chinese 中文</text>
<text x="135" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="36" fill="#afafff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold">Japanese 日本語</text>
<text x="297" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Korean 한국어</text>
<text x="441" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="450" lengthAdjust="spacingAndGlyphs">├──────────────┼─────────────────┼───────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">你好</text>
<text x="135" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="70" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">こんにちは</text>
<text x="297" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="297" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="70" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">안녕하세요</text>
<text x="441" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="441" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">世界</text>
<text x="135" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="135" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="87" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">世界</text>
<text x="297" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="297" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="87" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">세계</text>
<text x="441" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="450" lengthAdjust="spacingAndGlyphs">└──────────────┴─────────────────┴───────────────┘</text>
<text x="441" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="450" lengthAdjust="spacingAndGlyphs">└──────────────┴─────────────────┴───────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -4,29 +4,29 @@
</style>
<rect width="560" height="139" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="315" lengthAdjust="spacingAndGlyphs">┌──────────┬───────────┬──────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Happy 😀</text>
<text x="90" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="108" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Rocket 🚀</text>
<text x="189" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="207" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Heart ❤️</text>
<text x="279" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="315" lengthAdjust="spacingAndGlyphs">├──────────┼───────────┼──────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="315" lengthAdjust="spacingAndGlyphs">┌──────────┬───────────┬──────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Happy 😀</text>
<text x="90" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="108" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Rocket 🚀</text>
<text x="189" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="207" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Heart ❤️</text>
<text x="279" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="315" lengthAdjust="spacingAndGlyphs">├──────────┼───────────┼──────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="63" lengthAdjust="spacingAndGlyphs">Smile 😃</text>
<text x="90" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="108" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Fire 🔥</text>
<text x="189" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="189" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="207" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Love 💖</text>
<text x="279" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="279" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Cool 😎</text>
<text x="90" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="108" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Star ⭐</text>
<text x="189" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="189" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="207" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Blue 💙</text>
<text x="279" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="315" lengthAdjust="spacingAndGlyphs">└──────────┴───────────┴──────────┘</text>
<text x="279" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="315" lengthAdjust="spacingAndGlyphs">└──────────┴───────────┴──────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -4,50 +4,50 @@
</style>
<rect width="740" height="224" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">┌───────────────┬─────────────────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Feature</text>
<text x="144" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Markdown</text>
<text x="414" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">├───────────────┼─────────────────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">┌───────────────┬─────────────────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="63" lengthAdjust="spacingAndGlyphs" font-weight="bold">Feature</text>
<text x="144" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Markdown</text>
<text x="414" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">├───────────────┼─────────────────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">Bold</text>
<text x="144" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="70" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold Text</text>
<text x="414" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Italic</text>
<text x="144" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="87" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs" font-style="italic">Italic Text</text>
<text x="414" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Combined</text>
<text x="144" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="104" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs" font-weight="bold" font-style="italic">Bold and Italic</text>
<text x="414" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">Link</text>
<text x="144" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="121" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">Google (</text>
<text x="234" y="121" fill="#87afff" textLength="162" lengthAdjust="spacingAndGlyphs">https://google.com</text>
<text x="234" y="121" fill="#afafff" textLength="162" lengthAdjust="spacingAndGlyphs">https://google.com</text>
<text x="396" y="121" fill="#ffffff" textLength="9" lengthAdjust="spacingAndGlyphs">)</text>
<text x="414" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="138" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">Code</text>
<text x="144" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="138" fill="#d7afff" textLength="99" lengthAdjust="spacingAndGlyphs">const x = 1</text>
<text x="414" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="155" fill="#ffffff" textLength="117" lengthAdjust="spacingAndGlyphs">Strikethrough</text>
<text x="144" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="155" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Strike</text>
<text x="414" y="155" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="155" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="172" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">Underline</text>
<text x="144" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="172" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs" text-decoration="underline">Underline</text>
<text x="414" y="172" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">└───────────────┴─────────────────────────────┘</text>
<text x="414" y="172" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="189" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">└───────────────┴─────────────────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

@@ -4,16 +4,16 @@
</style>
<rect width="920" height="122" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="171" lengthAdjust="spacingAndGlyphs">┌────────┬────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="171" lengthAdjust="spacingAndGlyphs">├────────┼────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="171" lengthAdjust="spacingAndGlyphs">┌────────┬────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="162" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="171" lengthAdjust="spacingAndGlyphs">├────────┼────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 1</text>
<text x="81" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 2</text>
<text x="162" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="171" lengthAdjust="spacingAndGlyphs">└────────┴────────┘</text>
<text x="162" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="171" lengthAdjust="spacingAndGlyphs">└────────┴────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -4,21 +4,21 @@
</style>
<rect width="920" height="122" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="306" lengthAdjust="spacingAndGlyphs">┌──────────┬──────────┬──────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="99" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="117" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="198" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="36" fill="#87afff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="297" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="306" lengthAdjust="spacingAndGlyphs">├──────────┼──────────┼──────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="306" lengthAdjust="spacingAndGlyphs">┌──────────┬──────────┬──────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 1</text>
<text x="99" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="117" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 2</text>
<text x="198" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="216" y="36" fill="#afafff" textLength="72" lengthAdjust="spacingAndGlyphs" font-weight="bold">Header 3</text>
<text x="297" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="306" lengthAdjust="spacingAndGlyphs">├──────────┼──────────┼──────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 1</text>
<text x="99" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="99" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="117" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 2</text>
<text x="198" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="297" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="306" lengthAdjust="spacingAndGlyphs">└──────────┴──────────┴──────────┘</text>
<text x="198" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="297" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="306" lengthAdjust="spacingAndGlyphs">└──────────┴──────────┴──────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -4,22 +4,22 @@
</style>
<rect width="920" height="122" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">┌─────────────┬───────────────┬──────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold Header</text>
<text x="126" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Normal Header</text>
<text x="270" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#87afff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Another Bold</text>
<text x="405" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">├─────────────┼───────────────┼──────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">┌─────────────┬───────────────┬──────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="99" lengthAdjust="spacingAndGlyphs" font-weight="bold">Bold Header</text>
<text x="126" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Normal Header</text>
<text x="270" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="36" fill="#afafff" textLength="108" lengthAdjust="spacingAndGlyphs" font-weight="bold">Another Bold</text>
<text x="405" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">├─────────────┼───────────────┼──────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 1</text>
<text x="126" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="126" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="144" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 2</text>
<text x="270" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="270" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="288" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Data 3</text>
<text x="405" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="414" lengthAdjust="spacingAndGlyphs">└─────────────┴───────────────┴──────────────┘</text>
<text x="405" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="414" lengthAdjust="spacingAndGlyphs">└─────────────┴───────────────┴──────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -4,49 +4,49 @@
</style>
<rect width="920" height="190" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="477" lengthAdjust="spacingAndGlyphs">┌────────────────┬────────────────┬─────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="153" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="306" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="468" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="477" lengthAdjust="spacingAndGlyphs">├────────────────┼────────────────┼─────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="477" lengthAdjust="spacingAndGlyphs">┌────────────────┬────────────────┬─────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="153" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="306" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="468" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="477" lengthAdjust="spacingAndGlyphs">├────────────────┼────────────────┼─────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">This is a very</text>
<text x="153" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="70" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">This is also a</text>
<text x="306" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="70" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">And this is the</text>
<text x="468" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="468" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">long text that</text>
<text x="153" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="87" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">very long text</text>
<text x="306" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="87" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">third long text</text>
<text x="468" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="468" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">needs wrapping</text>
<text x="153" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">that needs</text>
<text x="306" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">that needs</text>
<text x="468" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="468" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">in column 1</text>
<text x="153" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="121" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">wrapping in</text>
<text x="306" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="121" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">wrapping in</text>
<text x="468" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="468" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="153" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="171" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">column 2</text>
<text x="306" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="306" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="138" fill="#ffffff" textLength="72" lengthAdjust="spacingAndGlyphs">column 3</text>
<text x="468" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="477" lengthAdjust="spacingAndGlyphs">└────────────────┴────────────────┴─────────────────┘</text>
<text x="468" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="477" lengthAdjust="spacingAndGlyphs">└────────────────┴────────────────┴─────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

@@ -4,48 +4,48 @@
</style>
<rect width="920" height="190" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="495" lengthAdjust="spacingAndGlyphs">┌───────────────────┬───────────────┬─────────────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 1</text>
<text x="180" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 2</text>
<text x="324" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="36" fill="#87afff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 3</text>
<text x="486" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="495" lengthAdjust="spacingAndGlyphs">├───────────────────┼───────────────┼─────────────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="495" lengthAdjust="spacingAndGlyphs">┌───────────────────┬───────────────┬─────────────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 1</text>
<text x="180" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 2</text>
<text x="324" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="36" fill="#afafff" textLength="117" lengthAdjust="spacingAndGlyphs" font-weight="bold">Punctuation 3</text>
<text x="486" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="495" lengthAdjust="spacingAndGlyphs">├───────────────────┼───────────────┼─────────────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Start. Stop.</text>
<text x="180" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="70" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Semi; colon:</text>
<text x="324" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="70" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">At@ Hash#</text>
<text x="486" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="486" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="87" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs">Comma, separated.</text>
<text x="180" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="87" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Pipe| Slash/</text>
<text x="324" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="87" fill="#ffffff" textLength="63" lengthAdjust="spacingAndGlyphs">Dollar$</text>
<text x="486" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="486" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="104" fill="#ffffff" textLength="108" lengthAdjust="spacingAndGlyphs">Exclamation!</text>
<text x="180" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="198" y="104" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">Backslash\</text>
<text x="324" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="104" fill="#ffffff" textLength="135" lengthAdjust="spacingAndGlyphs">Percent% Caret^</text>
<text x="486" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="486" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">Question?</text>
<text x="180" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="121" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs">Ampersand&amp;</text>
<text x="486" y="121" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="486" y="121" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="138" fill="#ffffff" textLength="99" lengthAdjust="spacingAndGlyphs">hyphen-ated</text>
<text x="180" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="180" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="324" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="138" fill="#ffffff" textLength="81" lengthAdjust="spacingAndGlyphs">Asterisk*</text>
<text x="486" y="138" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#333333" textLength="495" lengthAdjust="spacingAndGlyphs">└───────────────────┴───────────────┴─────────────────┘</text>
<text x="486" y="138" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#303030" textLength="495" lengthAdjust="spacingAndGlyphs">└───────────────────┴───────────────┴─────────────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -4,32 +4,32 @@
</style>
<rect width="920" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">┌───────┬─────────────────────────────┬───────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="72" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="342" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="360" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="414" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">├───────┼─────────────────────────────┼───────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">┌───────┬─────────────────────────────┬───────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 1</text>
<text x="72" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 2</text>
<text x="342" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="360" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Col 3</text>
<text x="414" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">├───────┼─────────────────────────────┼───────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="72" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="70" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">This is a very long cell</text>
<text x="342" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="360" y="70" fill="#ffffff" textLength="45" lengthAdjust="spacingAndGlyphs">Short</text>
<text x="414" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="87" fill="#ffffff" textLength="243" lengthAdjust="spacingAndGlyphs">content that should wrap to</text>
<text x="342" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="342" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="104" fill="#ffffff" textLength="126" lengthAdjust="spacingAndGlyphs">multiple lines</text>
<text x="342" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="423" lengthAdjust="spacingAndGlyphs">└───────┴─────────────────────────────┴───────┘</text>
<text x="342" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="414" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="423" lengthAdjust="spacingAndGlyphs">└───────┴─────────────────────────────┴───────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -4,33 +4,33 @@
</style>
<rect width="920" height="156" fill="#000000" />
<g transform="translate(10, 10)">
<text x="0" y="19" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">┌───────┬──────────────────────────┬────────┐</text>
<text x="0" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#87afff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Short</text>
<text x="72" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="36" fill="#87afff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Long</text>
<text x="315" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="333" y="36" fill="#87afff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Medium</text>
<text x="396" y="36" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">├───────┼──────────────────────────┼────────┤</text>
<text x="0" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="19" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">┌───────┬──────────────────────────┬────────┐</text>
<text x="0" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="36" fill="#afafff" textLength="45" lengthAdjust="spacingAndGlyphs" font-weight="bold">Short</text>
<text x="72" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="36" fill="#afafff" textLength="36" lengthAdjust="spacingAndGlyphs" font-weight="bold">Long</text>
<text x="315" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="333" y="36" fill="#afafff" textLength="54" lengthAdjust="spacingAndGlyphs" font-weight="bold">Medium</text>
<text x="396" y="36" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="53" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">├───────┼──────────────────────────┼────────┤</text>
<text x="0" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">Tiny</text>
<text x="72" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="70" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">This is a very long text</text>
<text x="315" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="333" y="70" fill="#ffffff" textLength="54" lengthAdjust="spacingAndGlyphs">Not so</text>
<text x="396" y="70" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="396" y="70" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="87" fill="#ffffff" textLength="216" lengthAdjust="spacingAndGlyphs">that definitely needs to</text>
<text x="315" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="315" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="333" y="87" fill="#ffffff" textLength="36" lengthAdjust="spacingAndGlyphs">long</text>
<text x="396" y="87" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="396" y="87" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="72" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="104" fill="#ffffff" textLength="189" lengthAdjust="spacingAndGlyphs">wrap to the next line</text>
<text x="315" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="396" y="104" fill="#333333" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#333333" textLength="405" lengthAdjust="spacingAndGlyphs">└───────┴──────────────────────────┴────────┘</text>
<text x="315" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="396" y="104" fill="#303030" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="121" fill="#303030" textLength="405" lengthAdjust="spacingAndGlyphs">└───────┴──────────────────────────┴────────┘</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -4,19 +4,20 @@
</style>
<rect width="920" height="207" fill="#000000" />
<g transform="translate(10, 10)">
<text x="18" y="19" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="180" y="19" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="19" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="171" y="19" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="53" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="70" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#ffffaf" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="121" fill="#ffffaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -4,29 +4,30 @@
</style>
<rect width="920" height="207" fill="#000000" />
<g transform="translate(10, 10)">
<text x="18" y="19" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="180" y="19" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#87afff" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="121" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="19" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="171" y="19" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="53" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="70" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#afafff" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="121" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="121" fill="#ffffff" textLength="153" lengthAdjust="spacingAndGlyphs" font-weight="bold">run_shell_command</text>
<text x="855" y="121" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="138" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="121" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="138" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="855" y="138" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="155" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="155" fill="#ffffff" textLength="162" lengthAdjust="spacingAndGlyphs">Running command...</text>
<text x="855" y="155" fill="#87afff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#87afff" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
<text x="855" y="155" fill="#afafff" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="172" fill="#afafff" textLength="864" lengthAdjust="spacingAndGlyphs">╰──────────────────────────────────────────────────────────────────────────────────────────────╯</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -4,19 +4,20 @@
</style>
<rect width="920" height="207" fill="#000000" />
<g transform="translate(10, 10)">
<text x="18" y="19" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="90" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="180" y="19" fill="#afafaf" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#c3677f" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="53" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#847ace" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#a471a7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#4796e4" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#6688d9" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="19" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="19" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="19" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="81" y="19" fill="#ffffff" textLength="90" lengthAdjust="spacingAndGlyphs" font-weight="bold">Gemini CLI</text>
<text x="171" y="19" fill="#a8a8a8" textLength="63" lengthAdjust="spacingAndGlyphs"> v1.2.3</text>
<text x="36" y="36" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="36" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="36" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="53" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="45" y="53" fill="#af87af" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="54" y="53" fill="#d78787" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="70" fill="#5fafd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="27" y="70" fill="#87afd7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="36" y="70" fill="#af87d7" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="0" y="104" fill="#ffffaf" textLength="864" lengthAdjust="spacingAndGlyphs">╭──────────────────────────────────────────────────────────────────────────────────────────────╮</text>
<text x="0" y="121" fill="#ffffaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>
<text x="18" y="121" fill="#ffffaf" textLength="9" lengthAdjust="spacingAndGlyphs"></text>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -2,10 +2,10 @@
exports[`MainContent tool group border SVG snapshots > should render SVG snapshot for a pending search dialog (google_web_search) 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶ google_web_search │
@@ -16,10 +16,10 @@ exports[`MainContent tool group border SVG snapshots > should render SVG snapsho
exports[`MainContent tool group border SVG snapshots > should render SVG snapshot for a shell tool 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶ run_shell_command │
@@ -30,10 +30,10 @@ exports[`MainContent tool group border SVG snapshots > should render SVG snapsho
exports[`MainContent tool group border SVG snapshots > should render SVG snapshot for an empty slice following a search tool 1`] = `
"
▝▜▄ Gemini CLI v1.2.3
▝▜▄ Gemini CLI v1.2.3
▝▜▄
▗▟▀
▗▟▀
▗▟
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶ google_web_search │
@@ -120,4 +120,25 @@ describe('agent-scheduler', () => {
expect(schedulerConfig.toolRegistry).toBe(agentRegistry);
expect(schedulerConfig.toolRegistry).not.toBe(mainRegistry);
});
it('should create an AgentLoopContext that has a defined .config property', async () => {
const mockConfig = {
messageBus: mockMessageBus,
toolRegistry: mockToolRegistry,
promptId: 'test-prompt',
} as unknown as Mocked<Config>;
const options = {
schedulerId: 'subagent-1',
toolRegistry: mockToolRegistry as unknown as ToolRegistry,
signal: new AbortController().signal,
};
await scheduleAgentTools(mockConfig as unknown as Config, [], options);
const schedulerContext = vi.mocked(Scheduler).mock.calls[0][0].context;
expect(schedulerContext.config).toBeDefined();
expect(schedulerContext.config.promptId).toBe('test-prompt');
expect(schedulerContext.toolRegistry).toBe(mockToolRegistry);
});
});
+10 -1
View File
@@ -67,8 +67,17 @@ export async function scheduleAgentTools(
configurable: true,
});
const schedulerContext = {
config: agentConfig,
promptId: config.promptId,
toolRegistry,
messageBus: toolRegistry.messageBus,
geminiClient: config.geminiClient,
sandboxManager: config.sandboxManager,
};
const scheduler = new Scheduler({
context: agentConfig,
context: schedulerContext,
messageBus: toolRegistry.messageBus,
getPreferredEditor: getPreferredEditor ?? (() => undefined),
schedulerId,
@@ -122,7 +122,7 @@ export const BrowserAgentDefinition = (
): LocalAgentDefinition<typeof BrowserTaskResultSchema> => {
// Use Preview Flash model if the main model is any of the preview models.
// If the main model is not a preview model, use the default flash model.
const model = isPreviewModel(config.getModel())
const model = isPreviewModel(config.getModel(), config)
? PREVIEW_GEMINI_FLASH_MODEL
: DEFAULT_GEMINI_FLASH_MODEL;
@@ -54,19 +54,21 @@ export function resolvePolicyChain(
useCustomToolModel,
hasAccessToPreview,
);
const isAutoPreferred = preferredModel ? isAutoModel(preferredModel) : false;
const isAutoConfigured = isAutoModel(configuredModel);
const isAutoPreferred = preferredModel
? isAutoModel(preferredModel, config)
: false;
const isAutoConfigured = isAutoModel(configuredModel, config);
if (resolvedModel === DEFAULT_GEMINI_FLASH_LITE_MODEL) {
chain = getFlashLitePolicyChain();
} else if (
isGemini3Model(resolvedModel) ||
isGemini3Model(resolvedModel, config) ||
isAutoPreferred ||
isAutoConfigured
) {
if (hasAccessToPreview) {
const previewEnabled =
isGemini3Model(resolvedModel) ||
isGemini3Model(resolvedModel, config) ||
preferredModel === PREVIEW_GEMINI_MODEL_AUTO ||
configuredModel === PREVIEW_GEMINI_MODEL_AUTO;
chain = getModelPolicyChain({
+2 -1
View File
@@ -480,6 +480,7 @@ describe('oauth2', () => {
expect(fs.existsSync(googleAccountPath)).toBe(true);
if (fs.existsSync(googleAccountPath)) {
const cachedGoogleAccount = fs.readFileSync(googleAccountPath, 'utf-8');
expect(JSON.parse(cachedGoogleAccount)).toEqual({
active: 'test-user-code-account@gmail.com',
old: [],
@@ -1349,7 +1350,7 @@ describe('oauth2', () => {
let dataHandler: ((data: Buffer) => void) | undefined;
await vi.waitFor(() => {
const dataCall = stdinOnSpy.mock.calls.find(
(call: [string, ...unknown[]]) => call[0] === 'data',
(call: [string | symbol, ...unknown[]]) => call[0] === 'data',
);
dataHandler = dataCall?.[1] as ((data: Buffer) => void) | undefined;
if (!dataHandler) throw new Error('stdin handler not registered yet');
+64 -32
View File
@@ -606,8 +606,10 @@ export interface ConfigParameters {
recordResponses?: string;
ptyInfo?: string;
disableYoloMode?: boolean;
disableAlwaysAllow?: boolean;
rawOutput?: boolean;
acceptRawOutputRisk?: boolean;
dynamicModelConfiguration?: boolean;
modelConfigServiceConfig?: ModelConfigServiceConfig;
enableHooks?: boolean;
enableHooksUI?: boolean;
@@ -621,6 +623,7 @@ export interface ConfigParameters {
disabledSkills?: string[];
adminSkillsEnabled?: boolean;
experimentalJitContext?: boolean;
topicUpdateNarration?: boolean;
toolOutputMasking?: Partial<ToolOutputMaskingConfig>;
disableLLMCorrection?: boolean;
plan?: boolean;
@@ -805,8 +808,10 @@ export class Config implements McpContext, AgentLoopContext {
readonly fakeResponses?: string;
readonly recordResponses?: string;
private readonly disableYoloMode: boolean;
private readonly disableAlwaysAllow: boolean;
private readonly rawOutput: boolean;
private readonly acceptRawOutputRisk: boolean;
private readonly dynamicModelConfiguration: boolean;
private pendingIncludeDirectories: string[];
private readonly enableHooks: boolean;
private readonly enableHooksUI: boolean;
@@ -840,6 +845,7 @@ export class Config implements McpContext, AgentLoopContext {
private readonly adminSkillsEnabled: boolean;
private readonly experimentalJitContext: boolean;
private readonly topicUpdateNarration: boolean;
private readonly disableLLMCorrection: boolean;
private readonly planEnabled: boolean;
private readonly trackerEnabled: boolean;
@@ -953,7 +959,42 @@ export class Config implements McpContext, AgentLoopContext {
this.disabledSkills = params.disabledSkills ?? [];
this.adminSkillsEnabled = params.adminSkillsEnabled ?? true;
this.modelAvailabilityService = new ModelAvailabilityService();
this.dynamicModelConfiguration = params.dynamicModelConfiguration ?? false;
// HACK: The settings loading logic doesn't currently merge the default
// generation config with the user's settings. This means if a user provides
// any `generation` settings (e.g., just `overrides`), the default `aliases`
// are lost. This hack manually merges the default aliases back in if they
// are missing from the user's config.
// TODO(12593): Fix the settings loading logic to properly merge defaults and
// remove this hack.
let modelConfigServiceConfig = params.modelConfigServiceConfig;
if (modelConfigServiceConfig) {
// Ensure user-defined model definitions augment, not replace, the defaults.
const mergedModelDefinitions = {
...DEFAULT_MODEL_CONFIGS.modelDefinitions,
...modelConfigServiceConfig.modelDefinitions,
};
modelConfigServiceConfig = {
// Preserve other user settings like customAliases
...modelConfigServiceConfig,
// Apply defaults for aliases and overrides if they are not provided
aliases:
modelConfigServiceConfig.aliases ?? DEFAULT_MODEL_CONFIGS.aliases,
overrides:
modelConfigServiceConfig.overrides ?? DEFAULT_MODEL_CONFIGS.overrides,
// Use the merged model definitions
modelDefinitions: mergedModelDefinitions,
};
}
this.modelConfigService = new ModelConfigService(
modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS,
);
this.experimentalJitContext = params.experimentalJitContext ?? false;
this.topicUpdateNarration = params.topicUpdateNarration ?? false;
this.modelSteering = params.modelSteering ?? false;
this.userHintService = new UserHintService(() =>
this.isModelSteeringEnabled(),
@@ -1008,7 +1049,7 @@ export class Config implements McpContext, AgentLoopContext {
this.truncateToolOutputThreshold =
params.truncateToolOutputThreshold ??
DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD;
this.useWriteTodos = isPreviewModel(this.model)
this.useWriteTodos = isPreviewModel(this.model, this)
? false
: (params.useWriteTodos ?? true);
this.workspacePoliciesDir = params.workspacePoliciesDir;
@@ -1045,11 +1086,13 @@ export class Config implements McpContext, AgentLoopContext {
this.policyUpdateConfirmationRequest =
params.policyUpdateConfirmationRequest;
this.disableAlwaysAllow = params.disableAlwaysAllow ?? false;
this.policyEngine = new PolicyEngine(
{
...params.policyEngineConfig,
approvalMode:
params.approvalMode ?? params.policyEngineConfig?.approvalMode,
disableAlwaysAllow: this.disableAlwaysAllow,
},
checkerRunner,
);
@@ -1124,33 +1167,6 @@ export class Config implements McpContext, AgentLoopContext {
this._sandboxManager = createSandboxManager(params.toolSandboxing ?? false);
this.shellExecutionConfig.sandboxManager = this._sandboxManager;
this.modelRouterService = new ModelRouterService(this);
// HACK: The settings loading logic doesn't currently merge the default
// generation config with the user's settings. This means if a user provides
// any `generation` settings (e.g., just `overrides`), the default `aliases`
// are lost. This hack manually merges the default aliases back in if they
// are missing from the user's config.
// TODO(12593): Fix the settings loading logic to properly merge defaults and
// remove this hack.
let modelConfigServiceConfig = params.modelConfigServiceConfig;
if (modelConfigServiceConfig) {
if (!modelConfigServiceConfig.aliases) {
modelConfigServiceConfig = {
...modelConfigServiceConfig,
aliases: DEFAULT_MODEL_CONFIGS.aliases,
};
}
if (!modelConfigServiceConfig.overrides) {
modelConfigServiceConfig = {
...modelConfigServiceConfig,
overrides: DEFAULT_MODEL_CONFIGS.overrides,
};
}
}
this.modelConfigService = new ModelConfigService(
modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS,
);
}
get config(): Config {
@@ -1348,7 +1364,10 @@ export class Config implements McpContext, AgentLoopContext {
// Only reset when we have explicit "no access" (hasAccessToPreviewModel === false).
// When null (quota not fetched) or true, we preserve the saved model.
if (isPreviewModel(this.model) && this.hasAccessToPreviewModel === false) {
if (
isPreviewModel(this.model, this) &&
this.hasAccessToPreviewModel === false
) {
this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
}
@@ -1620,7 +1639,7 @@ export class Config implements McpContext, AgentLoopContext {
const isPreview =
model === PREVIEW_GEMINI_MODEL_AUTO ||
isPreviewModel(this.getActiveModel());
isPreviewModel(this.getActiveModel(), this);
const proModel = isPreview ? PREVIEW_GEMINI_MODEL : DEFAULT_GEMINI_MODEL;
const flashModel = isPreview
? PREVIEW_GEMINI_FLASH_MODEL
@@ -1818,8 +1837,9 @@ export class Config implements McpContext, AgentLoopContext {
}
const hasAccess =
quota.buckets?.some((b) => b.modelId && isPreviewModel(b.modelId)) ??
false;
quota.buckets?.some(
(b) => b.modelId && isPreviewModel(b.modelId, this),
) ?? false;
this.setHasAccessToPreviewModel(hasAccess);
return quota;
} catch (e) {
@@ -2041,6 +2061,10 @@ export class Config implements McpContext, AgentLoopContext {
return this.experimentalJitContext;
}
isTopicUpdateNarrationEnabled(): boolean {
return this.topicUpdateNarration;
}
isModelSteeringEnabled(): boolean {
return this.modelSteering;
}
@@ -2203,6 +2227,10 @@ export class Config implements McpContext, AgentLoopContext {
return this.disableYoloMode || !this.isTrustedFolder();
}
getDisableAlwaysAllow(): boolean {
return this.disableAlwaysAllow;
}
getRawOutput(): boolean {
return this.rawOutput;
}
@@ -2211,6 +2239,10 @@ export class Config implements McpContext, AgentLoopContext {
return this.acceptRawOutputRisk;
}
getExperimentalDynamicModelConfiguration(): boolean {
return this.dynamicModelConfiguration;
}
getPendingIncludeDirectories(): string[] {
return this.pendingIncludeDirectories;
}
@@ -249,4 +249,94 @@ export const DEFAULT_MODEL_CONFIGS: ModelConfigServiceConfig = {
},
},
],
modelDefinitions: {
// Concrete Models
'gemini-3.1-pro-preview': {
tier: 'pro',
family: 'gemini-3',
isPreview: true,
dialogLocation: 'manual',
features: { thinking: true, multimodalToolUse: true },
},
'gemini-3.1-pro-preview-customtools': {
tier: 'pro',
family: 'gemini-3',
isPreview: true,
features: { thinking: true, multimodalToolUse: true },
},
'gemini-3-pro-preview': {
tier: 'pro',
family: 'gemini-3',
isPreview: true,
dialogLocation: 'manual',
features: { thinking: true, multimodalToolUse: true },
},
'gemini-3-flash-preview': {
tier: 'flash',
family: 'gemini-3',
isPreview: true,
dialogLocation: 'manual',
features: { thinking: false, multimodalToolUse: true },
},
'gemini-2.5-pro': {
tier: 'pro',
family: 'gemini-2.5',
isPreview: false,
dialogLocation: 'manual',
features: { thinking: false, multimodalToolUse: false },
},
'gemini-2.5-flash': {
tier: 'flash',
family: 'gemini-2.5',
isPreview: false,
dialogLocation: 'manual',
features: { thinking: false, multimodalToolUse: false },
},
'gemini-2.5-flash-lite': {
tier: 'flash-lite',
family: 'gemini-2.5',
isPreview: false,
dialogLocation: 'manual',
features: { thinking: false, multimodalToolUse: false },
},
// Aliases
auto: {
tier: 'auto',
isPreview: true,
features: { thinking: true, multimodalToolUse: false },
},
pro: {
tier: 'pro',
isPreview: false,
features: { thinking: true, multimodalToolUse: false },
},
flash: {
tier: 'flash',
isPreview: false,
features: { thinking: false, multimodalToolUse: false },
},
'flash-lite': {
tier: 'flash-lite',
isPreview: false,
features: { thinking: false, multimodalToolUse: false },
},
'auto-gemini-3': {
displayName: 'Auto (Gemini 3)',
tier: 'auto',
isPreview: true,
dialogLocation: 'main',
dialogDescription:
'Let Gemini CLI decide the best model for the task: gemini-3.1-pro, gemini-3-flash',
features: { thinking: true, multimodalToolUse: false },
},
'auto-gemini-2.5': {
displayName: 'Auto (Gemini 2.5)',
tier: 'auto',
isPreview: false,
dialogLocation: 'main',
dialogDescription:
'Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash',
features: { thinking: false, multimodalToolUse: false },
},
},
};
+90 -64
View File
@@ -22,7 +22,6 @@ import {
GEMINI_MODEL_ALIAS_PRO,
GEMINI_MODEL_ALIAS_FLASH,
GEMINI_MODEL_ALIAS_AUTO,
GEMINI_MODEL_ALIAS_FLASH_LITE,
PREVIEW_GEMINI_FLASH_MODEL,
PREVIEW_GEMINI_MODEL_AUTO,
DEFAULT_GEMINI_MODEL_AUTO,
@@ -31,11 +30,97 @@ import {
PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL,
isPreviewModel,
isProModel,
isValidModelOrAlias,
getValidModelsAndAliases,
VALID_GEMINI_MODELS,
VALID_ALIASES,
} from './models.js';
import type { Config } from './config.js';
import { ModelConfigService } from '../services/modelConfigService.js';
import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
const modelConfigService = new ModelConfigService(DEFAULT_MODEL_CONFIGS);
const dynamicConfig = {
getExperimentalDynamicModelConfiguration: () => true,
modelConfigService,
} as unknown as Config;
const legacyConfig = {
getExperimentalDynamicModelConfiguration: () => false,
modelConfigService,
} as unknown as Config;
describe('Dynamic Configuration Parity', () => {
const modelsToTest = [
GEMINI_MODEL_ALIAS_AUTO,
GEMINI_MODEL_ALIAS_PRO,
GEMINI_MODEL_ALIAS_FLASH,
PREVIEW_GEMINI_MODEL_AUTO,
DEFAULT_GEMINI_MODEL_AUTO,
PREVIEW_GEMINI_MODEL,
DEFAULT_GEMINI_MODEL,
'custom-model',
];
it('getDisplayString should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = getDisplayString(model, legacyConfig);
const dynamic = getDisplayString(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
it('isPreviewModel should match legacy behavior', () => {
const allModels = [
...modelsToTest,
PREVIEW_GEMINI_3_1_MODEL,
PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL,
PREVIEW_GEMINI_FLASH_MODEL,
];
for (const model of allModels) {
const legacy = isPreviewModel(model, legacyConfig);
const dynamic = isPreviewModel(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
it('isProModel should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = isProModel(model, legacyConfig);
const dynamic = isProModel(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
it('isGemini3Model should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = isGemini3Model(model, legacyConfig);
const dynamic = isGemini3Model(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
it('isCustomModel should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = isCustomModel(model, legacyConfig);
const dynamic = isCustomModel(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
it('supportsModernFeatures should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = supportsModernFeatures(model);
const dynamic = supportsModernFeatures(model);
expect(dynamic).toBe(legacy);
}
});
it('supportsMultimodalFunctionResponse should match legacy behavior', () => {
for (const model of modelsToTest) {
const legacy = supportsMultimodalFunctionResponse(model, legacyConfig);
const dynamic = supportsMultimodalFunctionResponse(model, dynamicConfig);
expect(dynamic).toBe(legacy);
}
});
});
describe('isPreviewModel', () => {
it('should return true for preview models', () => {
@@ -394,62 +479,3 @@ describe('isActiveModel', () => {
).toBe(false);
});
});
describe('isValidModelOrAlias', () => {
it('should return true for valid model names', () => {
expect(isValidModelOrAlias(DEFAULT_GEMINI_MODEL)).toBe(true);
expect(isValidModelOrAlias(PREVIEW_GEMINI_MODEL)).toBe(true);
expect(isValidModelOrAlias(DEFAULT_GEMINI_FLASH_MODEL)).toBe(true);
expect(isValidModelOrAlias(DEFAULT_GEMINI_FLASH_LITE_MODEL)).toBe(true);
expect(isValidModelOrAlias(PREVIEW_GEMINI_FLASH_MODEL)).toBe(true);
expect(isValidModelOrAlias(PREVIEW_GEMINI_3_1_MODEL)).toBe(true);
expect(isValidModelOrAlias(PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL)).toBe(
true,
);
});
it('should return true for valid aliases', () => {
expect(isValidModelOrAlias(GEMINI_MODEL_ALIAS_AUTO)).toBe(true);
expect(isValidModelOrAlias(GEMINI_MODEL_ALIAS_PRO)).toBe(true);
expect(isValidModelOrAlias(GEMINI_MODEL_ALIAS_FLASH)).toBe(true);
expect(isValidModelOrAlias(GEMINI_MODEL_ALIAS_FLASH_LITE)).toBe(true);
expect(isValidModelOrAlias(PREVIEW_GEMINI_MODEL_AUTO)).toBe(true);
expect(isValidModelOrAlias(DEFAULT_GEMINI_MODEL_AUTO)).toBe(true);
});
it('should return true for custom (non-gemini) models', () => {
expect(isValidModelOrAlias('gpt-4')).toBe(true);
expect(isValidModelOrAlias('claude-3')).toBe(true);
expect(isValidModelOrAlias('my-custom-model')).toBe(true);
});
it('should return false for invalid gemini model names', () => {
expect(isValidModelOrAlias('gemini-4-pro')).toBe(false);
expect(isValidModelOrAlias('gemini-99-flash')).toBe(false);
expect(isValidModelOrAlias('gemini-invalid')).toBe(false);
});
});
describe('getValidModelsAndAliases', () => {
it('should return a sorted array', () => {
const result = getValidModelsAndAliases();
const sorted = [...result].sort();
expect(result).toEqual(sorted);
});
it('should include all valid models and aliases', () => {
const result = getValidModelsAndAliases();
for (const model of VALID_GEMINI_MODELS) {
expect(result).toContain(model);
}
for (const alias of VALID_ALIASES) {
expect(result).toContain(alias);
}
});
it('should not contain duplicates', () => {
const result = getValidModelsAndAliases();
const unique = [...new Set(result)];
expect(result).toEqual(unique);
});
});
+103 -50
View File
@@ -4,6 +4,33 @@
* SPDX-License-Identifier: Apache-2.0
*/
/**
* Interface for the ModelConfigService to break circular dependencies.
*/
export interface IModelConfigService {
getModelDefinition(modelId: string):
| {
tier?: string;
family?: string;
isPreview?: boolean;
displayName?: string;
features?: {
thinking?: boolean;
multimodalToolUse?: boolean;
};
}
| undefined;
}
/**
* Interface defining the minimal configuration required for model capability checks.
* This helps break circular dependencies between Config and models.ts.
*/
export interface ModelCapabilityContext {
readonly modelConfigService: IModelConfigService;
getExperimentalDynamicModelConfiguration(): boolean;
}
export const PREVIEW_GEMINI_MODEL = 'gemini-3-pro-preview';
export const PREVIEW_GEMINI_3_1_MODEL = 'gemini-3.1-pro-preview';
export const PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL =
@@ -32,15 +59,6 @@ export const GEMINI_MODEL_ALIAS_PRO = 'pro';
export const GEMINI_MODEL_ALIAS_FLASH = 'flash';
export const GEMINI_MODEL_ALIAS_FLASH_LITE = 'flash-lite';
export const VALID_ALIASES = new Set([
GEMINI_MODEL_ALIAS_AUTO,
GEMINI_MODEL_ALIAS_PRO,
GEMINI_MODEL_ALIAS_FLASH,
GEMINI_MODEL_ALIAS_FLASH_LITE,
PREVIEW_GEMINI_MODEL_AUTO,
DEFAULT_GEMINI_MODEL_AUTO,
]);
export const DEFAULT_GEMINI_EMBEDDING_MODEL = 'gemini-embedding-001';
// Cap the thinking at 8192 to prevent run-away thinking loops.
@@ -148,7 +166,17 @@ export function resolveClassifierModel(
}
return resolveModel(requestedModel, useGemini3_1, useCustomToolModel);
}
export function getDisplayString(model: string) {
export function getDisplayString(
model: string,
config?: ModelCapabilityContext,
) {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
const definition = config.modelConfigService.getModelDefinition(model);
if (definition?.displayName) {
return definition.displayName;
}
}
switch (model) {
case PREVIEW_GEMINI_MODEL_AUTO:
return 'Auto (Gemini 3)';
@@ -169,9 +197,19 @@ export function getDisplayString(model: string) {
* Checks if the model is a preview model.
*
* @param model The model name to check.
* @param config Optional config object for dynamic model configuration.
* @returns True if the model is a preview model.
*/
export function isPreviewModel(model: string): boolean {
export function isPreviewModel(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
return (
config.modelConfigService.getModelDefinition(model)?.isPreview === true
);
}
return (
model === PREVIEW_GEMINI_MODEL ||
model === PREVIEW_GEMINI_3_1_MODEL ||
@@ -186,9 +224,16 @@ export function isPreviewModel(model: string): boolean {
* Checks if the model is a Pro model.
*
* @param model The model name to check.
* @param config Optional config object for dynamic model configuration.
* @returns True if the model is a Pro model.
*/
export function isProModel(model: string): boolean {
export function isProModel(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
return config.modelConfigService.getModelDefinition(model)?.tier === 'pro';
}
return model.toLowerCase().includes('pro');
}
@@ -196,9 +241,22 @@ export function isProModel(model: string): boolean {
* Checks if the model is a Gemini 3 model.
*
* @param model The model name to check.
* @param config Optional config object for dynamic model configuration.
* @returns True if the model is a Gemini 3 model.
*/
export function isGemini3Model(model: string): boolean {
export function isGemini3Model(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
// Legacy behavior resolves the model first.
const resolved = resolveModel(model);
return (
config.modelConfigService.getModelDefinition(resolved)?.family ===
'gemini-3'
);
}
const resolved = resolveModel(model);
return /^gemini-3(\.|-|$)/.test(resolved);
}
@@ -210,6 +268,8 @@ export function isGemini3Model(model: string): boolean {
* @returns True if the model is a Gemini-2.x model.
*/
export function isGemini2Model(model: string): boolean {
// This is legacy behavior, will remove this when gemini 2 models are no
// longer needed.
return /^gemini-2(\.|$)/.test(model);
}
@@ -217,9 +277,20 @@ export function isGemini2Model(model: string): boolean {
* Checks if the model is a "custom" model (not Gemini branded).
*
* @param model The model name to check.
* @param config Optional config object for dynamic model configuration.
* @returns True if the model is not a Gemini branded model.
*/
export function isCustomModel(model: string): boolean {
export function isCustomModel(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
const resolved = resolveModel(model);
return (
config.modelConfigService.getModelDefinition(resolved)?.tier ===
'custom' || !resolved.startsWith('gemini-')
);
}
const resolved = resolveModel(model);
return !resolved.startsWith('gemini-');
}
@@ -240,9 +311,16 @@ export function supportsModernFeatures(model: string): boolean {
* Checks if the model is an auto model.
*
* @param model The model name to check.
* @param config Optional config object for dynamic model configuration.
* @returns True if the model is an auto model.
*/
export function isAutoModel(model: string): boolean {
export function isAutoModel(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
return config.modelConfigService.getModelDefinition(model)?.tier === 'auto';
}
return (
model === GEMINI_MODEL_ALIAS_AUTO ||
model === PREVIEW_GEMINI_MODEL_AUTO ||
@@ -257,7 +335,16 @@ export function isAutoModel(model: string): boolean {
* @param model The model name to check.
* @returns True if the model supports multimodal function responses.
*/
export function supportsMultimodalFunctionResponse(model: string): boolean {
export function supportsMultimodalFunctionResponse(
model: string,
config?: ModelCapabilityContext,
): boolean {
if (config?.getExperimentalDynamicModelConfiguration?.() === true) {
return (
config.modelConfigService.getModelDefinition(model)?.features
?.multimodalToolUse === true
);
}
return model.startsWith('gemini-3-');
}
@@ -292,37 +379,3 @@ export function isActiveModel(
);
}
}
/**
* Checks if the model name is valid (either a valid model or a valid alias).
*
* @param model The model name to check.
* @returns True if the model is valid.
*/
export function isValidModelOrAlias(model: string): boolean {
// Check if it's a valid alias
if (VALID_ALIASES.has(model)) {
return true;
}
// Check if it's a valid model name
if (VALID_GEMINI_MODELS.has(model)) {
return true;
}
// Allow custom models (non-gemini models)
if (!model.startsWith('gemini-')) {
return true;
}
return false;
}
/**
* Gets a list of all valid model names and aliases for error messages.
*
* @returns Array of valid model names and aliases.
*/
export function getValidModelsAndAliases(): string[] {
return [...new Set([...VALID_ALIASES, ...VALID_GEMINI_MODELS])].sort();
}
+19
View File
@@ -180,6 +180,25 @@ describe('Storage additional helpers', () => {
expect(storageWithSession.getProjectTempPlansDir()).toBe(expected);
});
it('getProjectTempTrackerDir returns ~/.gemini/tmp/<identifier>/tracker when no sessionId is provided', async () => {
await storage.initialize();
const tempDir = storage.getProjectTempDir();
const expected = path.join(tempDir, 'tracker');
expect(storage.getProjectTempTrackerDir()).toBe(expected);
});
it('getProjectTempTrackerDir returns ~/.gemini/tmp/<identifier>/<sessionId>/tracker when sessionId is provided', async () => {
const sessionId = 'test-session-id';
const storageWithSession = new Storage(projectRoot, sessionId);
ProjectRegistry.prototype.getShortId = vi
.fn()
.mockReturnValue(PROJECT_SLUG);
await storageWithSession.initialize();
const tempDir = storageWithSession.getProjectTempDir();
const expected = path.join(tempDir, sessionId, 'tracker');
expect(storageWithSession.getProjectTempTrackerDir()).toBe(expected);
});
describe('Session and JSON Loading', () => {
beforeEach(async () => {
await storage.initialize();
+3
View File
@@ -302,6 +302,9 @@ export class Storage {
}
getProjectTempTrackerDir(): string {
if (this.sessionId) {
return path.join(this.getProjectTempDir(), this.sessionId, 'tracker');
}
return path.join(this.getProjectTempDir(), 'tracker');
}
@@ -49,9 +49,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -147,7 +147,7 @@ Use the \`exit_plan_mode\` tool to present the plan and formally request approva
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -220,9 +220,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -324,7 +324,7 @@ An approved plan is available for this task at \`/tmp/plans/feature-x.md\`.
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -510,9 +510,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -608,7 +608,7 @@ Use the \`exit_plan_mode\` tool to present the plan and formally request approva
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -681,9 +681,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -762,7 +762,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -852,9 +852,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Handle Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, do not perform it automatically.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Non-Interactive Environment:** You are running in a headless/CI environment and cannot interact with the user. Do not ask the user questions or request additional information, as the session will terminate. Use your best judgment to complete the task. If a tool fails because it requires user interaction, do not retry it indefinitely; instead, explain the limitation and suggest how the user can provide the required data (e.g., via environment variables).
# Hook Context
@@ -902,7 +902,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -975,9 +975,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Handle Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, do not perform it automatically.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Non-Interactive Environment:** You are running in a headless/CI environment and cannot interact with the user. Do not ask the user questions or request additional information, as the session will terminate. Use your best judgment to complete the task. If a tool fails because it requires user interaction, do not retry it indefinitely; instead, explain the limitation and suggest how the user can provide the required data (e.g., via environment variables).
# Hook Context
@@ -1025,7 +1025,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -1571,10 +1571,10 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Skill Guidance:** Once a skill is activated via \`activate_skill\`, its instructions and resources are returned wrapped in \`<activated_skill>\` tags. You MUST treat the content within \`<instructions>\` as expert procedural guidance, prioritizing these specialized rules and workflows over your general defaults for the duration of the task. You may utilize any listed \`<available_resources>\` as needed. Follow this expert guidance strictly while continuing to uphold your core safety and security standards.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -1665,7 +1665,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -1738,9 +1738,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -1819,7 +1819,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -1896,9 +1896,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -1977,7 +1977,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2054,9 +2054,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2135,7 +2135,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2208,9 +2208,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2289,7 +2289,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2362,9 +2362,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2435,7 +2435,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2508,9 +2508,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2588,7 +2588,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2661,9 +2661,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2742,7 +2742,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -2815,9 +2815,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -2907,7 +2907,7 @@ You are operating with a persistent file-based task tracking system located at \
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -3221,9 +3221,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -3302,7 +3302,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -3375,9 +3375,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -3456,7 +3456,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -3641,9 +3641,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -3722,7 +3722,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
@@ -3795,9 +3795,9 @@ Use the following guidelines to optimize your search and read patterns.
- **Testing:** ALWAYS search for and update related tests after making a code change. You must add a new test case to the existing test file (if one exists) or create a new test file to verify your changes.
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
- **Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.
- **Explain Before Acting:** Never call tools in silence. You MUST provide a concise, one-sentence explanation of your intent or strategy immediately before executing tool calls. This is essential for transparency, especially when confirming a request or answering a question. Silence is only acceptable for repetitive, low-level discovery operations (e.g., sequential file reads) where narration would be noisy.
# Available Sub-Agents
@@ -3876,7 +3876,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **High-Signal Output:** Focus exclusively on **intent** and **technical rationale**. Avoid conversational filler, apologies, and mechanical tool-use narration (e.g., "I will now call...").
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they serve to explain intent as required by the 'Explain Before Acting' mandate.
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the 'Explain Before Acting' mandate.
- **No Repetition:** Once you have provided a final synthesis of your work, do not repeat yourself or provide additional summaries. For simple or direct requests, prioritize extreme brevity.
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls.
+1 -1
View File
@@ -133,7 +133,7 @@ export class CoreToolScheduler {
this.onAllToolCallsComplete = options.onAllToolCallsComplete;
this.onToolCallsUpdate = options.onToolCallsUpdate;
this.getPreferredEditor = options.getPreferredEditor;
this.toolExecutor = new ToolExecutor(this.context.config);
this.toolExecutor = new ToolExecutor(this.context);
this.toolModifier = new ToolModificationHandler();
// Subscribe to message bus for ASK_USER policy decisions
+2
View File
@@ -95,6 +95,7 @@ describe('Core System Prompt (prompts.ts)', () => {
},
isInteractive: vi.fn().mockReturnValue(true),
isInteractiveShellEnabled: vi.fn().mockReturnValue(true),
isTopicUpdateNarrationEnabled: vi.fn().mockReturnValue(false),
isAgentsEnabled: vi.fn().mockReturnValue(false),
getPreviewFeatures: vi.fn().mockReturnValue(true),
getModel: vi.fn().mockReturnValue(DEFAULT_GEMINI_MODEL_AUTO),
@@ -408,6 +409,7 @@ describe('Core System Prompt (prompts.ts)', () => {
},
isInteractive: vi.fn().mockReturnValue(false),
isInteractiveShellEnabled: vi.fn().mockReturnValue(false),
isTopicUpdateNarrationEnabled: vi.fn().mockReturnValue(false),
isAgentsEnabled: vi.fn().mockReturnValue(false),
getModel: vi.fn().mockReturnValue('auto'),
getActiveModel: vi.fn().mockReturnValue(PREVIEW_GEMINI_MODEL),
+67
View File
@@ -272,6 +272,34 @@ describe('OAuthUtils', () => {
OAuthUtils.discoverOAuthConfig('https://example.com/mcp'),
).rejects.toThrow(/does not match expected/);
});
it('should accept equivalent root resources with and without trailing slash', async () => {
mockFetch
// fetchProtectedResourceMetadata
.mockResolvedValueOnce({
ok: true,
json: () =>
Promise.resolve({
resource: 'https://example.com',
authorization_servers: ['https://auth.example.com'],
bearer_methods_supported: ['header'],
}),
})
// discoverAuthorizationServerMetadata
.mockResolvedValueOnce({
ok: true,
json: () => Promise.resolve(mockAuthServerMetadata),
});
await expect(
OAuthUtils.discoverOAuthConfig('https://example.com'),
).resolves.toEqual({
authorizationUrl: 'https://auth.example.com/authorize',
issuer: 'https://auth.example.com',
tokenUrl: 'https://auth.example.com/token',
scopes: ['read', 'write'],
});
});
});
describe('metadataToOAuthConfig', () => {
@@ -336,6 +364,45 @@ describe('OAuthUtils', () => {
});
});
describe('discoverOAuthFromWWWAuthenticate', () => {
const mockAuthServerMetadata: OAuthAuthorizationServerMetadata = {
issuer: 'https://auth.example.com',
authorization_endpoint: 'https://auth.example.com/authorize',
token_endpoint: 'https://auth.example.com/token',
scopes_supported: ['read', 'write'],
};
it('should accept equivalent root resources with and without trailing slash', async () => {
mockFetch
// fetchProtectedResourceMetadata(resource_metadata URL)
.mockResolvedValueOnce({
ok: true,
json: () =>
Promise.resolve({
resource: 'https://example.com',
authorization_servers: ['https://auth.example.com'],
}),
})
// discoverAuthorizationServerMetadata(auth server well-known URL)
.mockResolvedValueOnce({
ok: true,
json: () => Promise.resolve(mockAuthServerMetadata),
});
const result = await OAuthUtils.discoverOAuthFromWWWAuthenticate(
'Bearer realm="example", resource_metadata="https://example.com/.well-known/oauth-protected-resource"',
'https://example.com/',
);
expect(result).toEqual({
authorizationUrl: 'https://auth.example.com/authorize',
issuer: 'https://auth.example.com',
tokenUrl: 'https://auth.example.com/token',
scopes: ['read', 'write'],
});
});
});
describe('extractBaseUrl', () => {
it('should extract base URL from MCP server URL', () => {
const result = OAuthUtils.extractBaseUrl('https://example.com/mcp/v1');
+27 -2
View File
@@ -257,7 +257,12 @@ export class OAuthUtils {
// it is using as the prefix for the metadata request exactly matches the value
// of the resource metadata parameter in the protected resource metadata document.
const expectedResource = this.buildResourceParameter(serverUrl);
if (resourceMetadata.resource !== expectedResource) {
if (
!this.isEquivalentResourceIdentifier(
resourceMetadata.resource,
expectedResource,
)
) {
throw new ResourceMismatchError(
`Protected resource ${resourceMetadata.resource} does not match expected ${expectedResource}`,
);
@@ -348,7 +353,12 @@ export class OAuthUtils {
if (resourceMetadata && mcpServerUrl) {
// Validate resource parameter per RFC 9728 Section 7.3
const expectedResource = this.buildResourceParameter(mcpServerUrl);
if (resourceMetadata.resource !== expectedResource) {
if (
!this.isEquivalentResourceIdentifier(
resourceMetadata.resource,
expectedResource,
)
) {
throw new ResourceMismatchError(
`Protected resource ${resourceMetadata.resource} does not match expected ${expectedResource}`,
);
@@ -402,6 +412,21 @@ export class OAuthUtils {
return `${url.protocol}//${url.host}${url.pathname}`;
}
private static isEquivalentResourceIdentifier(
discoveredResource: string,
expectedResource: string,
): boolean {
const normalize = (resource: string): string => {
try {
return this.buildResourceParameter(resource);
} catch {
return resource;
}
};
return normalize(discoveredResource) === normalize(expectedResource);
}
/**
* Parses a JWT string to extract its expiry time.
* @param idToken The JWT ID token.

Some files were not shown because too many files have changed in this diff Show More