Commit Graph
20 Commits
Author SHA1 Message Date
db0be4c3fa docs: match the CLI automation pages to the CLI (#14930)
* docs: match the CLI automation pages to the CLI

The scheduling, teams, subagents, connector and sample pages told
readers to run commands and flags the CLI doesn't have, and the
samples downloaded files that are gone.

- Scheduling: `executions` is `history`; `--workspace` is required;
  provider and model are separate flags; the other create options,
  subcommands and cron names are listed. Routing results now names the
  chat with `--delivery-thread` or `/schedule create` in the chat. A
  schedule with only `--delivery-bot` never posts anything.
- Teams: start with `/team` and resume with `cline --id`, not the
  hidden `--team-name`; there is no `--no-teams`; state is in
  teams.db. The SDK teams guide gets the same CLI fix.
- Subagents: the page described the old read-only research tool.
  `spawn_agent` subagents can edit files and run commands without
  further approval, run in the CLI and Desktop only, and are turned
  off with the `spawn_agent` tool.
- Connectors: gchat, WhatsApp and Linear flag names; Discord tools
  are on by default.
- Samples: inline the scripts whose download links 404; filter
  `run_result` for the final answer; `cline auth` needs `--modelid`;
  current model ids and prices; the issue responder runs Cline with a
  read-only token and posts from a second job, like the PR reviewer.

Part of #14853.

Co-authored-by: Harshil Mistry <125483347+harshil-mistry@users.noreply.github.com>

* docs: check commenter permission, fail scripts on failed runs

The @cline issue responder admitted any OWNER, MEMBER or COLLABORATOR,
and organization members or collaborators with read access pass that
check. A secret-free authorize job now looks up the comment author's
repository permission and lets the analyze job run only for write or
admin. It checks the comment's author rather than the actor, so editing
someone else's comment doesn't start Cline on their text. The analyze
job also stops setting CLINE_DIR from runner.temp, which isn't
available at job level.

Plan mode removes the editing tools and refuses common file-changing
commands, but python -c and node -e still write files. The scheduling
and subagent pages now say so instead of promising that Plan runs
can't edit files.

When a run fails, the CLI exits 1 but run_result still carries the
error text, so jq prints it and the pipeline succeeds. The orchestration
scripts now use set -euo pipefail, wait on each background review by
PID, remove output files from earlier runs and name their inputs
instead of globbing. analyze-issue.sh sets pipefail. The PR review
pattern names the pull requests the sample skips.

* docs: wait on saved review PIDs, list the current team tools

The parallel review samples waited on $(jobs -p). Bash 3.2, the macOS
/bin/bash, leaves finished jobs out of that list, so a review that failed
fast was never waited on and the next model read an empty review. Save
$! after each background pipeline and wait on those PIDs.

The SDK teams guide listed team_delegate_task, team_check_status and
team_get_result, which no longer exist, and a JSON layout under
~/.cline/data/teams/. List the tools in TEAM_TOOL_NAMES and say that team
state is in ~/.cline/data/db/teams.db, keyed by session and restored
when the session resumes.

---------

Co-authored-by: Dominic Cooney <55120+dominiccooney@users.noreply.github.com>
Co-authored-by: Harshil Mistry <125483347+harshil-mistry@users.noreply.github.com>
2026-10-08 13:50:26 +02:00
0adccbdb70 docs, fix(cli): match the CLI reference and --help to what the CLI does (#14895)
* docs: match the CLI reference to CLI 3.0.68

The CLI reference and the pages that repeat it had drifted from the CLI.
They named a `dev` command that no longer exists, swapped the --config
and --data-dir defaults, described `connect` as an IDE adapter, said
--thinking defaults to medium, and showed a JSON output shape (say/ask
messages) that the CLI never prints. The documented `jq -r .text`
example prints only nulls.

Replace the pasted help with the 3.0.68 output and document what it
lists: --compaction, --worktree, --update, --kanban, `skill`,
`dashboard`, the `auth` options, `config <target>`, `connect --stop`
and `--restart`, `mcp add`/`remove`, the `history` subcommands and
options, and the `hub` subcommands including `drain` and `upgrade`.
Rewrite the JSON section around the agent_event and run_result lines,
with a jq filter that prints the final answer. Note that -k also saves
the key, drop the `-i` image example (-i opens the TUI), and use the
Cline provider's model id in the API auth example.

Co-authored-by: Harshil Mistry <125483347+harshil-mistry@users.noreply.github.com>
Co-authored-by: MarMar Labs <marmar9615@icloud.com>

* docs: correct CLI defaults and JSON notes from review

--retries defaults to 3, not the 6 that `cline --help` prints; note the
discrepancy under the pasted help. Without --thinking, Cline uses the
reasoning level saved from the TUI before the provider's default. Drop
--page, which the CLI accepts but ignores. Say that a --timeout stops
the run without a run_aborted line, and that scripts should skip line
types they don't use.

Use Claude Sonnet 5.5 in the auth examples, and say "in your terminal"
where the pages described commands that need one.

* fix(cli): make --help match what the CLI does

`cline --help` said --retries defaults to 6, but runs use 3. The help
now reads the same CLI_DEFAULT_MAX_CONSECUTIVE_MISTAKES constant that
main.ts passes to the session, and a test ties the two together.

--thinking now says that, without the flag, the CLI uses the level
saved in the TUI before the provider default. -k says the key is also
saved as the provider's key. `history --page` is hidden from help: the
CLI never reads it, but it stays accepted so existing scripts keep
working.

The CLI reference shows the corrected help and no longer notes the
wrong --retries default. The CLI README's -k and --thinking rows match.

* fix(cli): name /model in the --thinking help

Readers don't know what "the TUI" is. The level --thinking falls back to
is the one chosen in the model picker, which users open with /model, so
the help, the CLI reference, the overview and the README now say that.

* fix(cli): warn that cline history --page is ignored

cline history lists the newest sessions up to --limit and has never
read --page. The option stays accepted so existing scripts keep
working, but it now prints a deprecation notice to stderr. The
terminal tests that expected --page in help, or ran it as if it
selected a page, are removed.

* fix(cli): say hub upgrade does not wait for --zen tasks

cline hub upgrade waits only until no client is attached. A --zen run
detaches once the hub accepts it, and scheduled runs never attach, so
the upgrade can stop both mid-run. The help text and the hub command
lists in the docs now say so.

* docs: drop dashboard from the root help listing

cline --help no longer lists dashboard; it is cline hub dashboard.

* fix(cli): require a count for --retries; fix connect --restart example

--retries was declared with an optional value, so a bare --retries set
it to true and the CLI crashed calling .trim() on it. The option now
requires a count, and a bare --retries fails with commander's
"argument missing" error.

cline connect passes options after the channel to the channel's
connector, so "cline connect telegram --restart" never reached
connect. The examples now put --stop and --restart before the
channel, and the reference says why.

* docs: scope the JSON line format to agent runs

The JSON section read as the format of every --json, but only agent
runs print typed lines. cline history --json prints one array, and
each cline config target prints its own shape. The heading and both
pages now say the line format is for tasks, and name the others.

---------

Co-authored-by: Dominic Cooney <55120+dominiccooney@users.noreply.github.com>
Co-authored-by: Harshil Mistry <125483347+harshil-mistry@users.noreply.github.com>
Co-authored-by: MarMar Labs <marmar9615@icloud.com>
2026-10-07 20:38:35 +09:00
cline-cloud[bot]andCline 55a133b751 feat(cli): move dashboard under hub (#14900)
* refactor(cli): scope hub options to their subcommands

* feat(cli): move dashboard under hub and document its usage

---------

Co-authored-by: Cline <cline@users.noreply.github.com>
2026-10-07 17:45:01 +09:00
Dominic CooneyandDominic Cooney c995be480a fix(cli): make cline doctor log honour CLINE_LOG_PATH (#14893)
The CLI logger wrote to CLINE_LOG_PATH when it was set, but cline doctor
built the default path itself, so `cline doctor log` opened the wrong
file and `doctor --verbose`/`--json` read recently spawned processes
from it.

Move the path into resolveCliLogPath() in logging/log-path.ts and call
it from the logger and from both doctor readers. The module is separate
from the logger so cline doctor doesn't load pino.

The config page, the CLI reference, the proxy troubleshooting page and
the CLI README now say that `cline doctor log` opens the CLINE_LOG_PATH
file.

Co-authored-by: Dominic Cooney <55120+dominiccooney@users.noreply.github.com>
2026-10-07 15:35:14 +09:00
6354d209c8 docs: correct shared paths, log files, commands and tool names (#14884)
* docs: correct shared paths, log files, commands and tool names

Several pages repeat the same facts about where Cline keeps its files,
which commands exist and what the built-in tools are called, and many of
them no longer match the shipped CLI and SDK:

- Workflows live in ~/.cline/workflows/, not ~/.cline/data/workflows/.
  The session index is ~/.cline/data/db/sessions.db, each session has a
  folder of JSON files, and hub locks and logs are under ~/.cline/data/.
- cline start and cline dev log do not exist; the log command is
  cline doctor log, and the CLI log is ~/.cline/data/logs/cline.log.
- The built-in tools are run_commands, search_codebase,
  fetch_web_content and skills, not bash, search, fetch_web and
  use_skill.
- CLINE_HUB_ADDRESS is read only by cline schedule; the hub port is
  CLINE_HUB_PORT.
- No CLI 3 release reads CLINE_COMMAND_PERMISSIONS. The pages that
  offered it, including the PR review sample, now say the CLI has no
  command allow list and point to a PreToolUse hook. The unused
  permissionDeniedError string in the VS Code prompts goes with it.

Part of #14853.

Co-authored-by: Mikołaj Kondratek <19799111+mkondratek@users.noreply.github.com>
Co-authored-by: Manpreet Kaur <26463231+Manpreet2298@users.noreply.github.com>
Co-authored-by: Renee Huang <100229782+reneehuang1@users.noreply.github.com>

* docs: qualify log, tool routing and command-approval advice

- cline doctor log always opens the default log file, so say so where
  CLINE_LOG_PATH is described.
- The editor and apply_patch choice is a default that SDK callers can
  replace with toolRoutingRules.
- The PR review sample now warns that hooks and plugins in the checked-out
  pull request run with the job's environment, and says how to keep them
  from running before relying on a global PreToolUse hook.
- The conditional-approval example no longer auto-approves git diff,
  which runs a configured external diff program, and notes that Git can
  run programs named in a repository's config.

* docs: run the PR review sample with a read-only token

The sample gave an auto-approved Cline run a token that can write pull
requests. Split it into two jobs: `review` runs Cline with read-only
permissions on a checkout of the base branch and writes review.md;
`post` runs no repository or model code and posts the file with
`gh pr review --comment`.

Skip pull requests from forks and Dependabot, which get no secrets,
and warn against `pull_request_target`. Fence the workflow with four
backticks so the code block inside the prompt no longer ends it early.

---------

Co-authored-by: Dominic Cooney <55120+dominiccooney@users.noreply.github.com>
Co-authored-by: Mikołaj Kondratek <19799111+mkondratek@users.noreply.github.com>
Co-authored-by: Manpreet Kaur <26463231+Manpreet2298@users.noreply.github.com>
Co-authored-by: Renee Huang <100229782+reneehuang1@users.noreply.github.com>
2026-10-07 12:10:37 +09:00
Ken Jo dec80dadfa docs(mcp): correct the CLI MCP config path (#11671) (#11683)
* docs(mcp): correct the CLI mcp config path

* docs(tools): correct the same stale .cline/mcp.json reference

* docs(cli): correct the MCP config entry in the configuration tree

The CLI reference listed `mcp.json` under the project-root `.cline/` tree,
but `resolveMcpSettingsPath()` only ever resolves a global path:
`~/.cline/data/settings/cline_mcp_settings.json` (overridable via
`CLINE_MCP_SETTINGS_PATH`). There is no project-level MCP config reader.

Move the entry to the `~/.cline/data/settings/` tree where the resolver
actually looks, and drop the project-root entry.
2026-10-06 11:33:13 +09:00
2f58bbe4ed Add Auto Approval to ACP (#12897)
* Add Auto Approval to ACP

* Update apps/cli/src/acp/auto-approve.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update apps/cli/src/acp/auto-approve.test.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-08-04 20:54:39 -07:00
Saoud Rizwan 72561771a7 docs: move ACP editor integration to a dedicated Usage page (#12821) 2026-07-31 21:26:14 -07:00
Saoud RizwanandSaoud Rizwan 2ac20c647c docs: add Editor Integration (ACP) section to CLI overview (#12808)
Co-authored-by: Saoud Rizwan <saoudrizwan@users.noreply.github.com>
2026-07-31 20:52:37 -07:00
Renee HuangandSaoud Rizwan a1374ae4a5 docs: add ClinePass subscription page and reorganize sidebar nav (#11672)
* docs: add ClinePass subscription page and reorganize sidebar nav

* docs: polish ClinePass copy and add cross-links

* more wording updates

* polishing

* docs: update 5x to 2-5x API rate limits

* add beta label to clinepass

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-06-24 22:03:39 -07:00
Dominic Cooney 94f5a47a59 sdk migration: squashed pre-2026-06-02 work
Omnibus squash of the 10 oldest SDK-migration commits (authored 2026-05-27
through 2026-06-02), collapsed during the 2026-06-09 rebase onto origin/main.

Squashed commits:
- sdk migration: squashed pre-2026-05-27 work
- sdk migration: squashed 06-05-2026 -- instead of listHistory, use host.get(sessionId) instead
- updat gitignore
- fix xai provider
- fix(vscode): forward Bedrock region + AWS auth to the SDK gateway
- fix(vscode): keep in-progress MCP OAuth flow across reconnects
- fix(vscode): wire auto compact into SDK sessions (#11197)
- fix(vscode): compact Codex OAuth before input cap (#11194)
- fix unauthed user flow
- fix(llms): strip Cerebras reasoning history (#11214)
2026-06-24 14:11:26 +09:00
Saoud Rizwan e8e2af705d feat(cli): improve Telegram connector with --allowed-user-id flag (#11256)
* feat(cli): add Telegram allowed user id flag

* fix(cli): tighten connector authorization hooks
2026-06-03 17:50:07 -07:00
Bee 423fde4828 feat(cli): add Slack socket mode support (#11245)
* feat(cli): add Slack socket mode support

Add socket mode as an alternative to webhook mode for Slack
connector, allowing connections without a public URL.

- Introduce `--connection` flag to select webhook or socket mode
- Add `--app-token` option for socket mode authentication
- Make signing secret and base URL conditional on webhook mode
- Add `parseSlackConnectionMode` with validation and tests
- Update CLI platform definition to support hybrid connection type
- Update README docs with socket mode usage examples

* use base-url and remove connection flag

* isSocketMode
2026-06-03 12:00:57 -07:00
Saoud Rizwan 6aef7f5280 docs(cli): refine supply-chain scan alerts sample (#11224)
- Fold provider/model setup into a single `cline` run; drop the auth command
- Remove the /yolo on step from the Telegram setup
- Present scheduling as two clear options (Telegram chat vs terminal with
  delivery flags)
- Clarify how to find the schedule id before triggering a test run
2026-06-02 14:57:48 -07:00
Saoud Rizwan 4e56ed6922 docs(cli): add supply-chain scan alerts sample (#11222)
* docs(cli): add supply-chain scan alerts sample

Walkthrough for scheduling the Cline CLI to run Perplexity's Bumblebee
scanner and deliver compromise alerts to Telegram. Covers installing the
CLI, cloning/building Bumblebee and how it stays read-only, the Telegram
connector, and creating a scheduled scan that texts a clean/alert verdict.

* docs(cli): drop unsupported --delivery-thread from supply-chain sample
2026-06-02 14:04:33 -07:00
Ara 9e942fbb6b Fix Discord connector registration (#11077)
* fix(cli): register discord connector

* fix(cli): scope Discord reply fallback

* docs(cli): expand Discord connector setup

* fix(cli): move Discord empty reply fallback to adapter
2026-05-27 18:47:20 -07:00
Saoud Rizwan 31ee8eb744 feat(cli): install plugins from file URLs (#10945)
* feat(cli): install plugins from file URLs

* fix(cli): harden remote plugin installs

* docs: document plugin file URL installs

* docs: simplify plugin file URL wording

* docs: trim CLI plugin example
2026-05-21 19:58:20 -07:00
Ara 932c8e68e1 Infer Telegram bot username from token (#10954)
* fix(cli): infer Telegram bot username from token

* fix(cli): address Telegram connector review feedback

* test(cli): confirm Telegram schedule delivery bot metadata

* fix(core): publish schedule completion events to connectors

* Revert "fix(core): publish schedule completion events to connectors"

This reverts commit 0d64f037b9.
2026-05-21 15:03:36 -07:00
Renee HuangandSaoud Rizwan 47f6d00f61 docs: add back memorybank; correct CLI install commands (#10830)
* add back memorybank; correct CLI install commands

* add more details on plugin

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-05-18 12:02:04 -07:00
0b0ca9b1fa docs: add SDK documentation (#10350)
* docs: add comprehensive SDK documentation as top-level tab

Adds 27 new documentation pages for the Cline SDK (@clinebot/core,
@clinebot/agents, @clinebot/llms, @clinebot/shared) organized into
a dedicated "SDK" tab in the Mintlify docs navigation.

Structure:
- Getting Started: overview, quickstart, examples
- Core Concepts: agents, sessions, tools, streaming/events, extensions,
  hooks, providers/models
- Guides: building an agent, custom tools, writing extensions, permission
  handling, scheduled agents, multi-agent teams, connectors, production
- Architecture: layered stack overview, hub-spoke RPC, package reference
- API Reference: ClineCore, Agent, Gateway, Tools API, Events, Types
- CLI: commands, configuration, connector setup

Removes the old single-page SDK overview (cline-sdk/overview.md) that
documented the previous ACP-based ClineAgent API, and removes its
reference from the Cline CLI navigation group.

* docs: fix SDK docs review feedback

- Change "desktop app" to "JetBrains plugin" in overview (not released yet)
- Rename "Providers & Models" to "Model Providers"
- Rename "Streaming & Events" to "Streaming Events"
- Remove duplicate cli/connectors.mdx (guides/connectors.mdx covers everything)

* docs: add wizard commands, Discord connector, and platform credential details

* feat(docs): create CLI tab with new feature pages and updated reference

- Add CLI as its own top-level tab in docs navigation
- Remove CLI group from Docs tab and SDK tab
- Delete SDK CLI pages (content moved to CLI tab)
- Add new feature pages: connectors, scheduling, MCP servers, agent teams
- Rewrite cli-reference.mdx with all new commands (connect, mcp, schedule,
  rpc, checkpoint, doctor) and new flags (reasoning-effort, thinking,
  sandbox, teams, spawn, tool-enable/disable, autoapprove)
- Update configuration.mdx with new directory structure, env vars
  (CLINE_DATA_DIR, CLINE_RPC_ADDRESS, CLINE_SESSION_BACKEND_MODE,
  CLINE_SANDBOX), and MCP wizard reference

* docs: rename Docs tab to Extension and reorder tabs

Tab order: Extension, CLI, SDK, Kanban, Enterprise, API, Learn

* docs: simplify SDK install to single @clinebot/core package

@clinebot/core re-exports from agents, llms, and shared, so users
only need one install and one import source. Updated all getting-started,
quickstart, examples, and guide pages to import from @clinebot/core.
Concept and reference pages keep individual package imports since they
document those specific packages.

* docs: use @clinebot/sdk as the primary install and import path

@clinebot/sdk is an alias for @clinebot/core that re-exports from all
packages. All user-facing pages (overview, quickstart, examples, guides)
now show npm install @clinebot/sdk and import from @clinebot/sdk.
Architecture and reference pages keep individual package names since
they document the internal package structure.

* docs: rename Extension tab to Cline

* docs: fix packages page and merge duplicate imports

* fix: use getting-started page in CLI tab nav and remove conflicting redirect

* docs: rename CLI Getting Started page title to Overview

* docs: rename cline-cli/ to cli/ and cline-sdk/ to sdk/

Shorter, cleaner URL paths. Updated all internal links across every
doc page and added 44 redirects for old paths so existing URLs
don't break.

* docs: update hub-spoke architecture from gRPC/RPC to WebSockets

- Rewrite hub-spoke.mdx: WebSocket protocol, capability brokerage,
  spoke workers, session participants, hub daemon discovery
- Replace all RPC/gRPC/sidecar references with hub/WebSocket across
  all SDK and CLI docs
- Backend modes: local/hub/remote/auto (was local/rpc/auto)
- Hub command replaces rpc command (cline hub start/stop/status/ensure)
- Default port 25463 (was 4317), log file hub-daemon.log
- Remove @clinebot/rpc and @clinebot/scheduler from architecture docs
  (functionality absorbed into @clinebot/core)
- Update ClineCore reference to remove rpc options
- Add capability brokerage and session participant concepts

* docs: add Ecosystem page to SDK tab

* docs: move Ecosystem page after Guides and fix opening sentence

* docs: rename extensions to plugins across all SDK and CLI docs

- Rename AgentExtension to AgentPlugin in all code examples
- Rename ExtensionAPI to PluginAPI
- Rename extensions.mdx to plugins.mdx, writing-extensions.mdx to writing-plugins.mdx
- Rename all variable names (databaseExtension -> databasePlugin, etc.)
- Rename config field from extensions to plugins
- Update all prose, section headers, and cross-links
- Add redirects for old paths

* clean up attempt 1

* remove deprecated features

* part 1 of large provider changes

* a large pass on workflows

* cli ref updates

* config rewrite

* more concise instsallation and model selection

* provider reorg cont

* update providers

* one step further cleaning up

* kanban finishing clean up

* wip...

* another big cleanup - remove the CLI tabgroup

* sdk tighten up pt1

* more sdk doc tightening

* making more progress

* doc update based on bee latest branch

* nit update on codepaths

* remove learn section

* docs: add plugin install command documentation

Document the new clite plugin install command across CLI reference,
customization plugins page, SDK plugins concept page, and the writing
plugins guide. Cover all three source types (npm, git, local), the
package.json manifest format with cline.plugins field, host-provided
dependency handling, auto-detection logic, and the install directory
structure.

Reference cline/typescript-lsp-plugin as a concrete install example.

* docs: deduplicate plugin install docs

Trim redundant plugin install content from CLI reference, SDK plugins
concept page, and writing-plugins guide. Each now links to the
customization/plugins page as the single source of truth for manifest
format, install commands, and directory layout.

* further simplify the doc

* further clean up

* mark warnings

* docs: rename @clinebot to @cline and clite to cline

SDK packages moved to the @cline npm org. Update all docs references
to use @cline/sdk, @cline/agents, @cline/core, @cline/shared, @cline/llms
and the cline CLI binary name.

* docs: streamline SDK docs with example references (#10617)

* docs: streamline SDK docs with example references and @cline/sdk imports

Replace large standalone code blobs in SDK docs with references to
working examples in the SDK repository. Users can now clone and run
real code instead of copy-pasting from docs.

- Update all imports from @cline/agents, @cline/core, @cline/shared
  to @cline/sdk (the public-facing package)
- Fix model IDs from claude-sonnet-4-6 to claude-sonnet-4-20250514
- Quickstart: trim duplicate code patterns, add cards linking to
  cli-agent, code-review-bot, multi-agent, desktop-app examples
- Overview: add examples table with difficulty progression, update
  install instructions to use @cline/sdk
- Building an Agent: rewrite as a walkthrough of the code-review-bot
  example rather than inline code blobs across 4 separate files
- Creating Custom Tools: rewrite to use createTool with zod, add
  completion tools section, reference working examples
- Tools: show createTool with zod as primary pattern
- Events: reference multi-agent example for streaming UI pattern
- Architecture: update install to @cline/sdk

* fix: use claude-sonnet-4-6 model ID across all SDK docs

* remove connector page from sdk

* small reordering

* clean up sdk app and plugin examples

---------

Co-authored-by: Renee Huang <renee@cline.bot>

* remove features/connectors

* doc revisions

* fix references after folder change

* docs: fix SDK review feedback after rebase

* docs: address Greptile SDK review feedback

* docs: move TUI page under CLI nav

* docs: restore TUI page placement

---------

Co-authored-by: Renee Huang <renee@cline.bot>
Co-authored-by: John Simone <john@cline.bot>
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
2026-05-12 16:55:33 -07:00