clud 2.8.2__tar.gz → 2.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clud-2.8.2 → clud-2.8.4}/Cargo.lock +34 -6
- {clud-2.8.2 → clud-2.8.4}/Cargo.toml +1 -1
- {clud-2.8.2 → clud-2.8.4}/PKG-INFO +1 -1
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/Cargo.toml +4 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/README.md +2 -0
- clud-2.8.4/crates/clud-bin/assets/fonts/DejaVu-LICENSE.txt +187 -0
- clud-2.8.4/crates/clud-bin/assets/fonts/DejaVuSansMono.ttf +0 -0
- clud-2.8.4/crates/clud-bin/assets/server-settings.json +9 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/README.md +20 -3
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/args.rs +16 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_settings.rs +61 -7
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_settings_tests.rs +44 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_bridge.rs +16 -16
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/builder.rs +1 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/cpu_banner.rs +96 -10
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/cpu_banner_tests.rs +138 -4
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/failover.rs +21 -5
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/foreground_runtime.rs +273 -13
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/harness_picker.rs +119 -156
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/launch_setup.rs +71 -206
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/lib.rs +3 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/main.rs +50 -16
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/main_helpers.rs +14 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/provider_catalog.rs +239 -14
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/provider_registry.rs +24 -13
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/runner.rs +18 -3
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/runner_execution.rs +56 -5
- clud-2.8.4/crates/clud-bin/src/selector.rs +771 -0
- clud-2.8.4/crates/clud-bin/src/server_settings/README.md +38 -0
- clud-2.8.4/crates/clud-bin/src/server_settings/json.rs +179 -0
- clud-2.8.4/crates/clud-bin/src/server_settings/mod.rs +513 -0
- clud-2.8.4/crates/clud-bin/src/server_settings/sections.rs +171 -0
- clud-2.8.4/crates/clud-bin/src/server_settings/store.rs +428 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session.rs +139 -7
- clud-2.8.4/crates/clud-bin/src/session_output.rs +153 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/settings_tui.rs +137 -283
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/soldr_activate.rs +3 -0
- clud-2.8.4/crates/clud-bin/src/toast/README.md +26 -0
- clud-2.8.4/crates/clud-bin/src/toast/compositor.rs +502 -0
- clud-2.8.4/crates/clud-bin/src/toast/compositor_tests.rs +405 -0
- clud-2.8.4/crates/clud-bin/src/toast/kitty.rs +163 -0
- clud-2.8.4/crates/clud-bin/src/toast/launch.rs +193 -0
- clud-2.8.4/crates/clud-bin/src/toast/mod.rs +277 -0
- clud-2.8.4/crates/clud-bin/src/toast/mod_tests.rs +145 -0
- clud-2.8.4/crates/clud-bin/src/toast/mouse.rs +224 -0
- clud-2.8.4/crates/clud-bin/src/toast/raster.rs +366 -0
- clud-2.8.4/crates/clud-bin/src/toast/statusline.rs +382 -0
- clud-2.8.4/crates/clud-bin/src/toast/statusline_tests.rs +288 -0
- clud-2.8.4/crates/clud-bin/src/toast/text_tier.rs +267 -0
- clud-2.8.4/crates/clud-bin/src/toast/tier.rs +243 -0
- clud-2.8.4/crates/clud-bin/src/toast/tracker.rs +372 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/README.md +2 -1
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/cli/codex_bridge_preflight_cli.rs +2 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/cli/provider_selection_cli.rs +2 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/pty/main.rs +1 -0
- clud-2.8.4/crates/clud-bin/tests/pty/toast_pty.rs +234 -0
- {clud-2.8.2 → clud-2.8.4}/pyproject.toml +1 -1
- {clud-2.8.2 → clud-2.8.4}/src/clud/__init__.py +1 -1
- clud-2.8.2/crates/clud-bin/src/session_output.rs +0 -50
- {clud-2.8.2 → clud-2.8.4}/LICENSE +0 -0
- {clud-2.8.2 → clud-2.8.4}/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/LICENSE +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/dashboard/index.html +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/hero-clud.jpg +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/scripts/extract_zip.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-bosn/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-linux-build/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-linux-build/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-mac-x86/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-recover/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-rust-app-dev/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-docker-rust-app-dev/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-extern-repos/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-fix-quick/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-git/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-git-diff/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-improve/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-improve/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-issue/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-issue/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-issue-triage/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-issue-triage/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-omarchy/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-os-debug/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-preloop/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-python-lint-deadcode/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-review/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-tag-release/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-tag-release/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-windows-trash/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/skills/clud-windows-trash/SKILL.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/docker-build.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/docker_build_cpp.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/docker_build_python.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/docker_build_soldr.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/docker/docker_recover.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/git/clud-git-diff.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/github/pr_merge_watch.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/hooks/block-bad-cmd.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/hooks/telemetry.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/hooks/uv_run_hook_guard.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/assets/tools/python/lint_deadcode.py +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/build.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/args_tests/commands.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/args_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/auth.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/backend.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/backend_bootstrap.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bin/clud_bench_proc_sampler.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bin/clud_block_bad_cmd.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bin/clud_cmd_scan.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bin/clud_ctrlc_probe.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bin/clud_shim.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_cd.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_cd_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_cwd_changed.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_cwd_changed_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_gate.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_io.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_rm_vars.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_rollout.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/block_bad_cmd_shell.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/bridge_log.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/build_id.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/build_id_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/capture.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hook_roots.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hook_roots_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks_compile.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks_compile_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks_run.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks_run_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_hooks_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/clud_settings_document.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_auth.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_history.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_hook_normalize.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_hook_normalize_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_lf.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_model.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_pipeline.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_sse.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_sse_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_translate.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_upstream.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/codex_upstream_credentials.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/do_input.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/loop_task.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/prompts.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/tests/repeat_execution.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/tests/repeat_parse.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/tests/repeat_schedule.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/command/types.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/config.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/console_input.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/console_setup.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/console_title.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/console_title_osc.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/crash_report.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/ctrl_c_track.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/ctrl_c_track_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/activity.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/api_session_http.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/api_session_lifecycle.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/api_sessions.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/api_turn_controller.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/attach.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/client.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/client_compat.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/client_leases.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/client_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/commands.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/cpu_alert_publish.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/daemon_events.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/entry.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/entry_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/extern_repo.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/filesystem.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/list_state.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/tests/delete_and_pool.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/tests/parallel.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/tests/policy.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service/tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service_disk_watchdog.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/gc_service_purge.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/handover_registry.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/headless_adapter.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/http/tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/http.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/http_dashboard_state.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/http_info.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/http_response.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/io_helpers.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/keys.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/paths.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/proc_sampler.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/proc_sampler_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/process_utils.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/endpoint.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/errors.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/frame_lane.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/payload.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/rp_broker/wire_mode.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/runtime_config.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/server.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/session_state_sweep.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/session_tmp_sweep.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/sessions.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/target_sweep.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/top.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/types.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/uv_cache_sweep.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/watch_service.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/daemon_msgs.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/error.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/frame.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/session.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/wire_prost/worker_msgs.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/worker.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/worker_shared.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/daemon/worker_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dashboard_auth.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/console_drop_target.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/console_drop_target_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/dropfiles.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/injectors.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/dnd/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/extern_cli.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/extern_root.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/extern_root_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/cli.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/delete_audit.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/reconcile.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/registry.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/scanner.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/session_state.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/session_state_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/session_tmp.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/target_sweep.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc/uv_cache.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/gc_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/graphics.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/grind.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/codex_trust.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/inspect.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/prompts.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/repairs.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/types.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/utils.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health/warnings.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_health_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_trust.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/hook_trust_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/job_orphan_reaper.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/large_file_guard/fallback_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/large_file_guard/index_pass.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/large_file_guard/ls_files_pass.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/large_file_guard.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/launch_log.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/log_event.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/loop_artifacts.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/loop_check.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/loop_spec.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/optimize.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/orphan_reaper.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/orphan_reaper_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/paste_image.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/path_norm.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/preference.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/process_identity.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/process_scan.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/process_tree.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/provider_auth.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/reap_log.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/reaper_facts.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/repo_clud_config.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/repo_clud_config_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/route_health.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/runner_exit.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/runner_terminal.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/runtime_cache.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session/bracketed_paste.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session/interrupt.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session_index.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session_registry.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session_registry_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session_stdin.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/session_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/completion_guard.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/git_bash_resolver.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/nounset.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shell/nounset_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shim_install.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shim_resolve.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shim_session.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/shim_uv.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/skills.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/skills_home.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/skills_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/stage_trace.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/startup.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/stream_json.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/subprocess.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/symbols.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/test_env.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/test_runtime/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/test_runtime/cli.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/test_runtime/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/test_runtime/store.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_cli.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_info.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_install.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_ledger.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_list.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_log.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_query.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_run.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_run_telemetry.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_run_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_tee.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_termination.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tool_watchdog.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/tools.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/trampoline.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/trash.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/ui.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/uv_run_hook_guard.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/verbose_log.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/README.md +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/audio.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/config.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/cues.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/linux_capture.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/mode.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/model.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/recording.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/voice/worker.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/wasm.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/webterm.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/wedge_watchdog.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/wedge_watchdog_gate_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/wedge_watchdog_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/win_creation_flags.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/workspace_trust.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/workspace_trust_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/worktrees.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/worktrees_duration.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/worktrees_format.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/worktrees_locked_age.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/src/worktrees_tests.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/api/api_session_lifecycle.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/api/api_turn_controller.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/api/main.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/cli/main.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/cli/shell_completion_guard.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/common/exe.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/common/mod.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/crash_report.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/main.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/runtime_cache_hop_windows.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/symbols.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/telemetry_endpoint.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/tier_refresh_probe.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/diagnostics/win32_hooking_probe.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/pty/pty_behavior.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/pty/pty_pump.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/pty/shift_enter_dual_reader.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/pty/utf8_codepage.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/daemon_spawn_hygiene.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/fixture_ids.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/main.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/orphan_reap.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/reaper_batch_drain_windows.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/reaper_daemon_survival_windows.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/reaper_orphan_sweep_survival.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/subprocess_capture_lifecycle_windows.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/tool_shell_lifecycle_windows.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/reaper/wedge_watchdog_e2e.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/signals/ctrlc_signal_kinds.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/signals/ctrlc_windows_events.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/tests/signals/main.rs +0 -0
- {clud-2.8.2 → clud-2.8.4}/crates/clud-bin/vendor/win32/git-bash-bin.toml +0 -0
- {clud-2.8.2 → clud-2.8.4}/src/clud/mcp_server.py +0 -0
|
@@ -574,7 +574,7 @@ dependencies = [
|
|
|
574
574
|
|
|
575
575
|
[[package]]
|
|
576
576
|
name = "clud"
|
|
577
|
-
version = "2.8.
|
|
577
|
+
version = "2.8.4"
|
|
578
578
|
dependencies = [
|
|
579
579
|
"arboard",
|
|
580
580
|
"base64",
|
|
@@ -585,6 +585,7 @@ dependencies = [
|
|
|
585
585
|
"ctrlc",
|
|
586
586
|
"dirs 5.0.1",
|
|
587
587
|
"filetime",
|
|
588
|
+
"fontdue",
|
|
588
589
|
"fs4",
|
|
589
590
|
"getrandom 0.4.2",
|
|
590
591
|
"gix-hash",
|
|
@@ -695,6 +696,15 @@ version = "0.8.7"
|
|
|
695
696
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
696
697
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
697
698
|
|
|
699
|
+
[[package]]
|
|
700
|
+
name = "core_maths"
|
|
701
|
+
version = "0.1.1"
|
|
702
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
703
|
+
checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
|
|
704
|
+
dependencies = [
|
|
705
|
+
"libm",
|
|
706
|
+
]
|
|
707
|
+
|
|
698
708
|
[[package]]
|
|
699
709
|
name = "coreaudio-rs"
|
|
700
710
|
version = "0.13.0"
|
|
@@ -867,7 +877,7 @@ dependencies = [
|
|
|
867
877
|
|
|
868
878
|
[[package]]
|
|
869
879
|
name = "daemon-stub"
|
|
870
|
-
version = "2.8.
|
|
880
|
+
version = "2.8.4"
|
|
871
881
|
dependencies = [
|
|
872
882
|
"libc",
|
|
873
883
|
"running-process",
|
|
@@ -1249,6 +1259,15 @@ version = "0.2.0"
|
|
|
1249
1259
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1250
1260
|
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
|
1251
1261
|
|
|
1262
|
+
[[package]]
|
|
1263
|
+
name = "fontdue"
|
|
1264
|
+
version = "0.9.4"
|
|
1265
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1266
|
+
checksum = "7894823fa221401399e2598f8b63f81ac77ff5c63248b7656779bff1632d7d3d"
|
|
1267
|
+
dependencies = [
|
|
1268
|
+
"ttf-parser",
|
|
1269
|
+
]
|
|
1270
|
+
|
|
1252
1271
|
[[package]]
|
|
1253
1272
|
name = "form_urlencoded"
|
|
1254
1273
|
version = "1.2.2"
|
|
@@ -2336,7 +2355,7 @@ dependencies = [
|
|
|
2336
2355
|
|
|
2337
2356
|
[[package]]
|
|
2338
2357
|
name = "mock-agent"
|
|
2339
|
-
version = "2.8.
|
|
2358
|
+
version = "2.8.4"
|
|
2340
2359
|
dependencies = [
|
|
2341
2360
|
"libc",
|
|
2342
2361
|
"serde_json",
|
|
@@ -2954,11 +2973,11 @@ dependencies = [
|
|
|
2954
2973
|
|
|
2955
2974
|
[[package]]
|
|
2956
2975
|
name = "probe-dll"
|
|
2957
|
-
version = "2.8.
|
|
2976
|
+
version = "2.8.4"
|
|
2958
2977
|
|
|
2959
2978
|
[[package]]
|
|
2960
2979
|
name = "probe-target"
|
|
2961
|
-
version = "2.8.
|
|
2980
|
+
version = "2.8.4"
|
|
2962
2981
|
|
|
2963
2982
|
[[package]]
|
|
2964
2983
|
name = "proc-macro-crate"
|
|
@@ -3808,7 +3827,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
|
|
|
3808
3827
|
|
|
3809
3828
|
[[package]]
|
|
3810
3829
|
name = "tap-gate"
|
|
3811
|
-
version = "2.8.
|
|
3830
|
+
version = "2.8.4"
|
|
3812
3831
|
dependencies = [
|
|
3813
3832
|
"running-process",
|
|
3814
3833
|
"tempfile",
|
|
@@ -4037,6 +4056,15 @@ dependencies = [
|
|
|
4037
4056
|
"once_cell",
|
|
4038
4057
|
]
|
|
4039
4058
|
|
|
4059
|
+
[[package]]
|
|
4060
|
+
name = "ttf-parser"
|
|
4061
|
+
version = "0.25.1"
|
|
4062
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4063
|
+
checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
|
|
4064
|
+
dependencies = [
|
|
4065
|
+
"core_maths",
|
|
4066
|
+
]
|
|
4067
|
+
|
|
4040
4068
|
[[package]]
|
|
4041
4069
|
name = "typenum"
|
|
4042
4070
|
version = "1.20.0"
|
|
@@ -76,6 +76,10 @@ running-process = { version = "4.9.0", default-features = false, features = ["te
|
|
|
76
76
|
# types are identical across the API boundary.
|
|
77
77
|
interprocess = "2"
|
|
78
78
|
icy_sixel = "0.5"
|
|
79
|
+
# #1189: rasterizes toast text into the kitty-graphics toast image. Pure Rust,
|
|
80
|
+
# no system font library, so manylinux wheels stay self-contained; the font
|
|
81
|
+
# itself is bundled from assets/fonts/.
|
|
82
|
+
fontdue = { version = "0.9", default-features = false }
|
|
79
83
|
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
|
|
80
84
|
zeroize = "1"
|
|
81
85
|
prost = "0.14"
|
|
@@ -5,6 +5,8 @@ Compile-time-embedded resources bundled directly into the `clud-bin` binary. Fil
|
|
|
5
5
|
## Layout
|
|
6
6
|
|
|
7
7
|
- [`skills/`](skills/README.md) - slash-command skill definitions (`SKILL.md` files) installed per-backend into `.claude/skills/` or `.codex/skills/` on first run.
|
|
8
|
+
- `fonts/` - `DejaVuSansMono.ttf` for rasterizing toast text into the kitty-graphics toast image (#1189, `src/toast/raster.rs`, embedded with `include_bytes!`). Bundled so the wheel needs no system font library; its license is `fonts/DejaVu-LICENSE.txt`.
|
|
9
|
+
- `server-settings.json` - server-side settings (#1192, `src/server_settings/`). The binary embeds this file as its built-in copy, and installed builds also fetch it live from `main`, so an edit here reaches users when it merges, not when a release ships. Guard tests require strict JSON and a valid value for every registered section. See [`docs/architecture/server-settings.md`](../../../docs/architecture/server-settings.md) and [DD-072](../../../docs/DESIGN_DECISIONS.md#dd-072-server-side-settings-are-one-baked-in-json-document-with-per-section-last-known-good).
|
|
8
10
|
|
|
9
11
|
## Embedding mechanism
|
|
10
12
|
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
|
|
2
|
+
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Bitstream Vera Fonts Copyright
|
|
6
|
+
------------------------------
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
|
|
9
|
+
a trademark of Bitstream, Inc.
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
of the fonts accompanying this license ("Fonts") and associated
|
|
13
|
+
documentation files (the "Font Software"), to reproduce and distribute the
|
|
14
|
+
Font Software, including without limitation the rights to use, copy, merge,
|
|
15
|
+
publish, distribute, and/or sell copies of the Font Software, and to permit
|
|
16
|
+
persons to whom the Font Software is furnished to do so, subject to the
|
|
17
|
+
following conditions:
|
|
18
|
+
|
|
19
|
+
The above copyright and trademark notices and this permission notice shall
|
|
20
|
+
be included in all copies of one or more of the Font Software typefaces.
|
|
21
|
+
|
|
22
|
+
The Font Software may be modified, altered, or added to, and in particular
|
|
23
|
+
the designs of glyphs or characters in the Fonts may be modified and
|
|
24
|
+
additional glyphs or characters may be added to the Fonts, only if the fonts
|
|
25
|
+
are renamed to names not containing either the words "Bitstream" or the word
|
|
26
|
+
"Vera".
|
|
27
|
+
|
|
28
|
+
This License becomes null and void to the extent applicable to Fonts or Font
|
|
29
|
+
Software that has been modified and is distributed under the "Bitstream
|
|
30
|
+
Vera" names.
|
|
31
|
+
|
|
32
|
+
The Font Software may be sold as part of a larger software package but no
|
|
33
|
+
copy of one or more of the Font Software typefaces may be sold by itself.
|
|
34
|
+
|
|
35
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
36
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
|
|
37
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
|
|
38
|
+
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
|
|
39
|
+
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
|
|
40
|
+
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
|
|
41
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
|
42
|
+
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
|
|
43
|
+
FONT SOFTWARE.
|
|
44
|
+
|
|
45
|
+
Except as contained in this notice, the names of Gnome, the Gnome
|
|
46
|
+
Foundation, and Bitstream Inc., shall not be used in advertising or
|
|
47
|
+
otherwise to promote the sale, use or other dealings in this Font Software
|
|
48
|
+
without prior written authorization from the Gnome Foundation or Bitstream
|
|
49
|
+
Inc., respectively. For further information, contact: fonts at gnome dot
|
|
50
|
+
org.
|
|
51
|
+
|
|
52
|
+
Arev Fonts Copyright
|
|
53
|
+
------------------------------
|
|
54
|
+
|
|
55
|
+
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
|
|
56
|
+
|
|
57
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
58
|
+
a copy of the fonts accompanying this license ("Fonts") and
|
|
59
|
+
associated documentation files (the "Font Software"), to reproduce
|
|
60
|
+
and distribute the modifications to the Bitstream Vera Font Software,
|
|
61
|
+
including without limitation the rights to use, copy, merge, publish,
|
|
62
|
+
distribute, and/or sell copies of the Font Software, and to permit
|
|
63
|
+
persons to whom the Font Software is furnished to do so, subject to
|
|
64
|
+
the following conditions:
|
|
65
|
+
|
|
66
|
+
The above copyright and trademark notices and this permission notice
|
|
67
|
+
shall be included in all copies of one or more of the Font Software
|
|
68
|
+
typefaces.
|
|
69
|
+
|
|
70
|
+
The Font Software may be modified, altered, or added to, and in
|
|
71
|
+
particular the designs of glyphs or characters in the Fonts may be
|
|
72
|
+
modified and additional glyphs or characters may be added to the
|
|
73
|
+
Fonts, only if the fonts are renamed to names not containing either
|
|
74
|
+
the words "Tavmjong Bah" or the word "Arev".
|
|
75
|
+
|
|
76
|
+
This License becomes null and void to the extent applicable to Fonts
|
|
77
|
+
or Font Software that has been modified and is distributed under the
|
|
78
|
+
"Tavmjong Bah Arev" names.
|
|
79
|
+
|
|
80
|
+
The Font Software may be sold as part of a larger software package but
|
|
81
|
+
no copy of one or more of the Font Software typefaces may be sold by
|
|
82
|
+
itself.
|
|
83
|
+
|
|
84
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
85
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
86
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
87
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
|
88
|
+
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
89
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
90
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
91
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
92
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
93
|
+
|
|
94
|
+
Except as contained in this notice, the name of Tavmjong Bah shall not
|
|
95
|
+
be used in advertising or otherwise to promote the sale, use or other
|
|
96
|
+
dealings in this Font Software without prior written authorization
|
|
97
|
+
from Tavmjong Bah. For further information, contact: tavmjong @ free
|
|
98
|
+
. fr.
|
|
99
|
+
|
|
100
|
+
TeX Gyre DJV Math
|
|
101
|
+
-----------------
|
|
102
|
+
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
|
|
103
|
+
|
|
104
|
+
Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
|
|
105
|
+
(on behalf of TeX users groups) are in public domain.
|
|
106
|
+
|
|
107
|
+
Letters imported from Euler Fraktur from AMSfonts are (c) American
|
|
108
|
+
Mathematical Society (see below).
|
|
109
|
+
Bitstream Vera Fonts Copyright
|
|
110
|
+
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
|
|
111
|
+
is a trademark of Bitstream, Inc.
|
|
112
|
+
|
|
113
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
114
|
+
of the fonts accompanying this license (“Fonts”) and associated
|
|
115
|
+
documentation
|
|
116
|
+
files (the “Font Software”), to reproduce and distribute the Font Software,
|
|
117
|
+
including without limitation the rights to use, copy, merge, publish,
|
|
118
|
+
distribute,
|
|
119
|
+
and/or sell copies of the Font Software, and to permit persons to whom
|
|
120
|
+
the Font Software is furnished to do so, subject to the following
|
|
121
|
+
conditions:
|
|
122
|
+
|
|
123
|
+
The above copyright and trademark notices and this permission notice
|
|
124
|
+
shall be
|
|
125
|
+
included in all copies of one or more of the Font Software typefaces.
|
|
126
|
+
|
|
127
|
+
The Font Software may be modified, altered, or added to, and in particular
|
|
128
|
+
the designs of glyphs or characters in the Fonts may be modified and
|
|
129
|
+
additional
|
|
130
|
+
glyphs or characters may be added to the Fonts, only if the fonts are
|
|
131
|
+
renamed
|
|
132
|
+
to names not containing either the words “Bitstream” or the word “Vera”.
|
|
133
|
+
|
|
134
|
+
This License becomes null and void to the extent applicable to Fonts or
|
|
135
|
+
Font Software
|
|
136
|
+
that has been modified and is distributed under the “Bitstream Vera”
|
|
137
|
+
names.
|
|
138
|
+
|
|
139
|
+
The Font Software may be sold as part of a larger software package but
|
|
140
|
+
no copy
|
|
141
|
+
of one or more of the Font Software typefaces may be sold by itself.
|
|
142
|
+
|
|
143
|
+
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
144
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
|
|
145
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
|
|
146
|
+
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
|
|
147
|
+
FOUNDATION
|
|
148
|
+
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
|
|
149
|
+
SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
|
|
150
|
+
ACTION
|
|
151
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
|
|
152
|
+
INABILITY TO USE
|
|
153
|
+
THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
154
|
+
Except as contained in this notice, the names of GNOME, the GNOME
|
|
155
|
+
Foundation,
|
|
156
|
+
and Bitstream Inc., shall not be used in advertising or otherwise to promote
|
|
157
|
+
the sale, use or other dealings in this Font Software without prior written
|
|
158
|
+
authorization from the GNOME Foundation or Bitstream Inc., respectively.
|
|
159
|
+
For further information, contact: fonts at gnome dot org.
|
|
160
|
+
|
|
161
|
+
AMSFonts (v. 2.2) copyright
|
|
162
|
+
|
|
163
|
+
The PostScript Type 1 implementation of the AMSFonts produced by and
|
|
164
|
+
previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
|
|
165
|
+
available for general use. This has been accomplished through the
|
|
166
|
+
cooperation
|
|
167
|
+
of a consortium of scientific publishers with Blue Sky Research and Y&Y.
|
|
168
|
+
Members of this consortium include:
|
|
169
|
+
|
|
170
|
+
Elsevier Science IBM Corporation Society for Industrial and Applied
|
|
171
|
+
Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
|
|
172
|
+
|
|
173
|
+
In order to assure the authenticity of these fonts, copyright will be
|
|
174
|
+
held by
|
|
175
|
+
the American Mathematical Society. This is not meant to restrict in any way
|
|
176
|
+
the legitimate use of the fonts, such as (but not limited to) electronic
|
|
177
|
+
distribution of documents containing these fonts, inclusion of these fonts
|
|
178
|
+
into other public domain or commercial font collections or computer
|
|
179
|
+
applications, use of the outline data to create derivative fonts and/or
|
|
180
|
+
faces, etc. However, the AMS does require that the AMS copyright notice be
|
|
181
|
+
removed from any derivative versions of the fonts which have been altered in
|
|
182
|
+
any way. In addition, to ensure the fidelity of TeX documents using Computer
|
|
183
|
+
Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
|
|
184
|
+
has requested that any alterations which yield different font metrics be
|
|
185
|
+
given a different name.
|
|
186
|
+
|
|
187
|
+
$Id$
|
|
Binary file
|
|
@@ -30,6 +30,14 @@ the integration tests.
|
|
|
30
30
|
- [dnd/](dnd/README.md) - drag-and-drop into the terminal: cross-platform
|
|
31
31
|
path-string normalizer plus Windows-only `IDropTarget` adapter with
|
|
32
32
|
per-launch-mode injectors.
|
|
33
|
+
- [server_settings/](server_settings/README.md) - server-side settings (#1192):
|
|
34
|
+
the `assets/server-settings.json` baked into the binary and refreshed from
|
|
35
|
+
`main`, falling back section by section to the last valid value, plus a strict
|
|
36
|
+
JSON parser. See `docs/architecture/server-settings.md`.
|
|
37
|
+
- [toast/](toast/README.md) - in-terminal toasts (#1189): toast model and
|
|
38
|
+
hub, the PTY writer-thread compositor (kitty graphics, alternate-screen text
|
|
39
|
+
cells, title/status-line fallback), Claude `statusLine` chaining, and
|
|
40
|
+
click-to-dismiss. See `docs/architecture/toasts.md`.
|
|
33
41
|
- [voice/](voice/README.md) - F3 push-to-talk voice mode: mic capture,
|
|
34
42
|
start/stop cues, `whisper-rs` worker thread, transcript injection into the
|
|
35
43
|
backend PTY.
|
|
@@ -185,6 +193,11 @@ CLI surface and backend resolution:
|
|
|
185
193
|
- `provider_catalog.rs` - the single registry mapping stable clud model IDs,
|
|
186
194
|
gateway discovery IDs, provider wire IDs, compatibility aliases, and
|
|
187
195
|
independent effort/context capability metadata.
|
|
196
|
+
- `selector.rs` - the one inline terminal selector (#1195, DD-073). It owns
|
|
197
|
+
raw mode, cursor hide/show, pending-input draining, key decoding, CRLF-only
|
|
198
|
+
rendering with wrap-aware row counts, and redraw/erase. The launch-scope
|
|
199
|
+
prompt, the harness picker, and `clud settings` each implement its
|
|
200
|
+
`Selector` trait and render through it.
|
|
188
201
|
- `preference.rs` - shared pure typed-choice state machine used by launch
|
|
189
202
|
scope and global settings selectors.
|
|
190
203
|
- `subprocess.rs` - single decision point for the Windows `.cmd`/`.bat`
|
|
@@ -217,7 +230,10 @@ Console and terminal:
|
|
|
217
230
|
PTY master. Since issue #538 the pump splits output onto a dedicated
|
|
218
231
|
reader thread + stdout-writer thread (`run_output_writer`) so a slow
|
|
219
232
|
terminal flush never delays stdin forwarding — see
|
|
220
|
-
`docs/architecture/session-lifecycle.md` and DD-018.
|
|
233
|
+
`docs/architecture/session-lifecycle.md` and DD-018. Since #1189 the writer
|
|
234
|
+
thread optionally runs the toast compositor
|
|
235
|
+
(`session_output.rs::run_output_writer_composited`) and the stdin path runs
|
|
236
|
+
the toast close-button mouse filter; see `docs/architecture/toasts.md`.
|
|
221
237
|
|
|
222
238
|
Loop subsystem (`clud loop`):
|
|
223
239
|
|
|
@@ -531,8 +547,9 @@ Diagnostics and misc:
|
|
|
531
547
|
|
|
532
548
|
- `cpu_banner.rs` - issue #466: foreground CPU-burn banner. Spawns one
|
|
533
549
|
background `sysinfo` sampler that ticks every 2 s, sums `cpu_usage()` +
|
|
534
|
-
`memory()` over the parent-PID subtree rooted at our originator, and
|
|
535
|
-
`
|
|
550
|
+
`memory()` over the parent-PID subtree rooted at our originator, and
|
|
551
|
+
publishes a `cpu N % · X.Y / Z cores · …` toast (#1189: never stderr, which
|
|
552
|
+
corrupted the harness TUI; see [toast/](toast/README.md)) when subtree CPU crosses
|
|
536
553
|
`max(50 %, 0.20 × num_cpus × 100 %)` for 3 sustained ticks. Hysteretic
|
|
537
554
|
drop-out at 0.7×; 30 s heartbeat while sustained; clear-banner only after
|
|
538
555
|
≥ 60 s episodes. Wired into `runner::run_plan_subprocess` and
|
|
@@ -667,6 +667,18 @@ pub enum Command {
|
|
|
667
667
|
#[arg(long = "list")]
|
|
668
668
|
list: bool,
|
|
669
669
|
},
|
|
670
|
+
/// Internal (#1189): print clud's toast inside Claude Code's status line.
|
|
671
|
+
/// Claude Code runs this as the injected `statusLine` command.
|
|
672
|
+
#[command(name = "statusline", hide = true)]
|
|
673
|
+
Statusline {
|
|
674
|
+
#[arg(long = "session-pid")]
|
|
675
|
+
session_pid: u32,
|
|
676
|
+
#[arg(long = "state-dir")]
|
|
677
|
+
state_dir: PathBuf,
|
|
678
|
+
/// The user's own status-line command, base64url, run first.
|
|
679
|
+
#[arg(long = "chain-b64")]
|
|
680
|
+
chain_b64: Option<String>,
|
|
681
|
+
},
|
|
670
682
|
#[command(name = "__daemon", hide = true)]
|
|
671
683
|
InternalDaemon {
|
|
672
684
|
#[arg(long = "state-dir")]
|
|
@@ -1138,6 +1150,7 @@ const TOP_LEVEL_SUBCOMMANDS: &[&str] = &[
|
|
|
1138
1150
|
"codex-auth",
|
|
1139
1151
|
"deepseek-auth",
|
|
1140
1152
|
"run",
|
|
1153
|
+
"statusline",
|
|
1141
1154
|
"__daemon",
|
|
1142
1155
|
"__worker",
|
|
1143
1156
|
];
|
|
@@ -1223,6 +1236,9 @@ fn split_known_unknown(raw: &[String]) -> (Vec<String>, Vec<String>) {
|
|
|
1223
1236
|
// Issue #469: `clud log --cmd "..."` arg.
|
|
1224
1237
|
"--cmd",
|
|
1225
1238
|
"--set-web-term",
|
|
1239
|
+
// #1189: hidden `clud statusline` arguments.
|
|
1240
|
+
"--session-pid",
|
|
1241
|
+
"--chain-b64",
|
|
1226
1242
|
];
|
|
1227
1243
|
let short_value_flags: &[&str] = &["-p", "-m", "-r"];
|
|
1228
1244
|
let bool_flags: &[&str] = &[
|
|
@@ -413,19 +413,23 @@ fn provider_profile_from_document(
|
|
|
413
413
|
|
|
414
414
|
let model = read_string("model")?
|
|
415
415
|
.map(|value| {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
416
|
+
// A canonical ID retired by a provider rename (#1192) still loads,
|
|
417
|
+
// normalized to its successor; wire IDs and shorthand stay rejected.
|
|
418
|
+
let entry = provider_catalog::model_by_cli_id(value)
|
|
419
|
+
.or_else(|| provider_catalog::model_by_retired_cli_id(value))
|
|
420
|
+
.ok_or_else(|| {
|
|
421
|
+
invalid_provider_profile(
|
|
422
|
+
provider,
|
|
423
|
+
format!("model '{value}' is not a canonical catalog ID"),
|
|
424
|
+
)
|
|
425
|
+
})?;
|
|
422
426
|
if entry.provider != provider {
|
|
423
427
|
return Err(invalid_provider_profile(
|
|
424
428
|
provider,
|
|
425
429
|
format!("model '{value}' belongs to provider '{}'", entry.provider),
|
|
426
430
|
));
|
|
427
431
|
}
|
|
428
|
-
Ok(
|
|
432
|
+
Ok(entry.cli_id.to_string())
|
|
429
433
|
})
|
|
430
434
|
.transpose()?;
|
|
431
435
|
let harness = read_string("harness")?
|
|
@@ -957,6 +961,56 @@ pub fn load_cpu_banner_settings_at(home: &Path) -> Result<CpuBannerSettings, Set
|
|
|
957
961
|
Ok(out)
|
|
958
962
|
}
|
|
959
963
|
|
|
964
|
+
/// `[foreground.toasts]` (#1189): in-terminal toasts and the Claude
|
|
965
|
+
/// status-line surface.
|
|
966
|
+
///
|
|
967
|
+
/// ```json
|
|
968
|
+
/// { "foreground": { "toasts": { "enabled": true, "claude_statusline": true } } }
|
|
969
|
+
/// ```
|
|
970
|
+
///
|
|
971
|
+
/// `enabled = false` restores silent sessions (no compositor, no status-line
|
|
972
|
+
/// injection). `claude_statusline = false` keeps in-terminal toasts but stops
|
|
973
|
+
/// clud from composing a `statusLine` into Claude launches.
|
|
974
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
975
|
+
pub struct ToastSettings {
|
|
976
|
+
pub enabled: bool,
|
|
977
|
+
pub claude_statusline: bool,
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
impl Default for ToastSettings {
|
|
981
|
+
fn default() -> Self {
|
|
982
|
+
Self {
|
|
983
|
+
enabled: true,
|
|
984
|
+
claude_statusline: true,
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
pub fn load_toast_settings() -> Result<ToastSettings, SettingsError> {
|
|
990
|
+
let home = home_dir().ok_or(SettingsError::NoHomeDir)?;
|
|
991
|
+
load_toast_settings_at(&home)
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
pub fn load_toast_settings_at(home: &Path) -> Result<ToastSettings, SettingsError> {
|
|
995
|
+
let lock_path = home.join(CLUD_DIR_NAME).join(LOCK_FILE_NAME);
|
|
996
|
+
let _lock = acquire_lock(&lock_path)?;
|
|
997
|
+
let document = read_settings_or_legacy(home)?;
|
|
998
|
+
let mut out = ToastSettings::default();
|
|
999
|
+
let Some(section) = document
|
|
1000
|
+
.get("foreground")
|
|
1001
|
+
.and_then(|item| item.get("toasts"))
|
|
1002
|
+
else {
|
|
1003
|
+
return Ok(out);
|
|
1004
|
+
};
|
|
1005
|
+
if let Some(enabled) = section.get("enabled").and_then(Value::as_bool) {
|
|
1006
|
+
out.enabled = enabled;
|
|
1007
|
+
}
|
|
1008
|
+
if let Some(statusline) = section.get("claude_statusline").and_then(Value::as_bool) {
|
|
1009
|
+
out.claude_statusline = statusline;
|
|
1010
|
+
}
|
|
1011
|
+
Ok(out)
|
|
1012
|
+
}
|
|
1013
|
+
|
|
960
1014
|
fn with_settings_document<F>(home: &Path, mutate: F) -> Result<(), SettingsError>
|
|
961
1015
|
where
|
|
962
1016
|
F: FnOnce(&mut Value),
|
|
@@ -834,6 +834,32 @@ fn cpu_banner_reads_heartbeat_override() {
|
|
|
834
834
|
assert_eq!(got.heartbeat_secs, 120);
|
|
835
835
|
}
|
|
836
836
|
|
|
837
|
+
#[test]
|
|
838
|
+
fn toast_settings_default_to_enabled_with_the_claude_status_line() {
|
|
839
|
+
let home = tempdir().unwrap();
|
|
840
|
+
let got = load_toast_settings_at(home.path()).unwrap();
|
|
841
|
+
assert_eq!(got, ToastSettings::default());
|
|
842
|
+
assert!(got.enabled && got.claude_statusline);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
#[test]
|
|
846
|
+
fn toast_settings_read_both_switches_independently() {
|
|
847
|
+
let home = tempdir().unwrap();
|
|
848
|
+
let path = settings_path_at(home.path());
|
|
849
|
+
fs::create_dir_all(path.parent().unwrap()).unwrap();
|
|
850
|
+
fs::write(
|
|
851
|
+
&path,
|
|
852
|
+
r#"{"foreground":{"toasts":{"claude_statusline":false}}}"#,
|
|
853
|
+
)
|
|
854
|
+
.unwrap();
|
|
855
|
+
let got = load_toast_settings_at(home.path()).unwrap();
|
|
856
|
+
assert!(got.enabled, "default enabled preserved");
|
|
857
|
+
assert!(!got.claude_statusline);
|
|
858
|
+
fs::write(&path, r#"{"foreground":{"toasts":{"enabled":false}}}"#).unwrap();
|
|
859
|
+
let got = load_toast_settings_at(home.path()).unwrap();
|
|
860
|
+
assert!(!got.enabled);
|
|
861
|
+
}
|
|
862
|
+
|
|
837
863
|
#[test]
|
|
838
864
|
fn provider_profile_round_trips_through_save_and_load() {
|
|
839
865
|
let home = tempdir().unwrap();
|
|
@@ -962,6 +988,24 @@ fn provider_profile_rejects_non_canonical_model() {
|
|
|
962
988
|
));
|
|
963
989
|
}
|
|
964
990
|
|
|
991
|
+
/// #1192: a profile saved before DeepSeek renamed `deepseek-v4-flash` keeps
|
|
992
|
+
/// loading, normalized to the successor's canonical ID.
|
|
993
|
+
#[test]
|
|
994
|
+
fn provider_profile_normalizes_a_retired_canonical_model_id() {
|
|
995
|
+
let home = tempdir().unwrap();
|
|
996
|
+
write_provider_settings(
|
|
997
|
+
home.path(),
|
|
998
|
+
r#"{"providers":{"deepseek":{"model":"deepseek-v4-flash"}}}"#,
|
|
999
|
+
);
|
|
1000
|
+
let snapshot = load_launch_preferences_read_only_at(home.path()).unwrap();
|
|
1001
|
+
assert_eq!(
|
|
1002
|
+
snapshot
|
|
1003
|
+
.profile(ModelProvider::DeepSeek)
|
|
1004
|
+
.and_then(|p| p.model.as_deref()),
|
|
1005
|
+
Some("deepseek-flash")
|
|
1006
|
+
);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
965
1009
|
#[test]
|
|
966
1010
|
fn provider_profile_rejects_cross_provider_model() {
|
|
967
1011
|
let home = tempdir().unwrap();
|