chore(deps): Bump the github-actions group with 2 updates#4
Merged
quiet-node merged 1 commit intomainfrom Mar 31, 2026
Merged
Conversation
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [taiki-e/install-action](https://github.com/taiki-e/install-action). Updates `actions/checkout` from 4.3.1 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@34e1148...de0fac2) Updates `taiki-e/install-action` from 2.9.4 to 2.70.3 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@899b013...6ef672e) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: taiki-e/install-action dependency-version: 2.70.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
quiet-node
pushed a commit
that referenced
this pull request
Apr 10, 2026
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [taiki-e/install-action](https://github.com/taiki-e/install-action). Updates `actions/checkout` from 4.3.1 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@34e1148...de0fac2) Updates `taiki-e/install-action` from 2.9.4 to 2.70.3 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@899b013...6ef672e) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: taiki-e/install-action dependency-version: 2.70.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
quiet-node
pushed a commit
that referenced
this pull request
Apr 10, 2026
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [taiki-e/install-action](https://github.com/taiki-e/install-action). Updates `actions/checkout` from 4.3.1 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@34e1148...de0fac2) Updates `taiki-e/install-action` from 2.9.4 to 2.70.3 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@899b013...6ef672e) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: taiki-e/install-action dependency-version: 2.70.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
quiet-node
pushed a commit
that referenced
this pull request
Apr 11, 2026
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [taiki-e/install-action](https://github.com/taiki-e/install-action). Updates `actions/checkout` from 4.3.1 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@34e1148...de0fac2) Updates `taiki-e/install-action` from 2.9.4 to 2.70.3 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@899b013...6ef672e) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: taiki-e/install-action dependency-version: 2.70.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
quiet-node
added a commit
that referenced
this pull request
Apr 25, 2026
* feat(config): scaffold typed TOML config module
Add src-tauri/src/config/ with AppConfig, ModelSection, PromptSection,
WindowSection, ActivationSection, QuoteSection. Loader reads a TOML file,
resolves empty fields to compiled defaults, clamps out-of-bounds numerics,
and composes the system-prompt slash-command appendix at load time so the
appendix is never round-tripped to disk. Writer does an atomic fsync + rename
with mode 0600. First-run seed failures surface SeedFailed; corrupt files
or unsupported schema versions are renamed and reseeded. No consumers migrated
yet; the existing SystemPrompt / ModelConfig state remains in parallel.
Depends-on design doc and eng review already in the worktree history.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat(config): load AppConfig at startup and expose get_config command
Wire crate::config::load into lib.rs setup so AppConfig is resolved from the
per-user config.toml (or seeded on first run) before any Tauri command runs.
Fatal seed failures surface a native macOS alert via osascript and exit the
process, avoiding a dependency on tauri-plugin-dialog for a code path that
only runs when the user's Application Support directory is unwritable.
Add the get_config command returning a Clone of the resolved AppConfig;
the frontend hydrates its ConfigContext from this call on mount.
The existing SystemPrompt and ModelConfig state remain managed in parallel
so consumers keep working. The next commit migrates them to read from
State<AppConfig> directly.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* refactor(backend): migrate consumers to State<AppConfig>
Delete the parallel SystemPrompt, ModelConfig, load_system_prompt,
load_model_config, compose_system_prompt* helpers and the DEFAULT_OLLAMA_URL /
DEFAULT_MODEL_NAME consts. Everything now flows through config::AppConfig:
- commands::ask_ollama reads config.prompt.resolved_system, config.model.active(),
and config.model.ollama_url.
- search::search_pipeline reads the same fields.
- history::generate_title reads the same fields.
- classify_http_error now takes the active model name so the ModelNotFound
hint ("Run: ollama pull <name>") is accurate regardless of the user's
override, matching the per-model error messaging we promised in the design
doc's Issue 3A.
Test fallout: delete the ENV_LOCK static plus 7 load_model_config_* env-mutating
tests, 3 load_system_prompt_* env-mutating tests, and 2 compose_system_prompt
tests (11 total). Their semantic assertions now live in src/config/tests.rs
expressed as TOML input fixtures (resolve_whitespace_only_entries_are_filtered,
resolve_entry_whitespace_is_trimmed, resolve_empty_ollama_url_falls_back,
resolve_empty_system_prompt_uses_built_in_base_plus_appendix, and so on).
Net coverage result: 100% lines on every touched file.
lib.rs no longer manages SystemPrompt or ModelConfig state. The get_model_config
Tauri command is unregistered; get_config is now the sole model/prompt accessor
and returns the full AppConfig to the frontend.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* refactor(frontend): route config through ConfigContext, drop model fallback
Introduce src/contexts/ConfigContext.tsx with ConfigProvider + useConfig hook.
ConfigProvider hydrates once from invoke('get_config'), transforms the Rust
snake_case AppConfig into camelCase, and blocks children render until loaded
(sub-10ms local IPC in practice). useConfig falls back to DEFAULT_CONFIG when
no provider wraps the caller, which keeps component tests from needing a
provider wrapper each time. main.tsx wraps <App /> in ConfigProvider.
Frontend consumers now read from useConfig:
- App.tsx sources quote display limits from config.quote; DEFAULT_MODEL_FALLBACK
literal and the stale invoke('get_model_config') bootstrap effect are deleted.
- AskBarView and ChatBubble also read quote via useConfig instead of the old
Vite env reader in src/config/index.ts, which is deleted along with its
test file.
Drop the model parameter from save(). Per the design doc's Codex #4 resolution,
the Rust save_conversation command reads the active model from State<AppConfig>
instead of accepting it from the frontend, so the hook signature no longer
forwards it and every save() call site drops the fallback literal.
Fix the preexisting image-count mismatch flagged by Codex #8: MAX_IMAGES
moves from 3 to 4 to match the backend MAX_IMAGES_PER_MESSAGE constant; all
associated copy ("Max 4 images", "Maximum 4 images attached") and test
fixtures (4-image arrays, 4 paste loops) are updated.
All 33 test files pass 727 tests; 100% coverage maintained across lines,
branches, functions, and statements.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* chore(config): delete .env + dotenvy and rewrite configuration docs
Delete .env.example and the dotenvy dependency. Remove dotenvy::dotenv().ok()
from lib.rs run(). Thuki now reads all runtime config from config.toml only.
Rewrite docs/configurations.md around the TOML schema, first-run seeding
behavior, corrupt-file recovery, numeric bounds, and the three-tier rationale
(user-configurable vs developer-tunable vs true constants).
Update README.md and CONTRIBUTING.md so the "change model" instructions point
at config.toml instead of the deleted THUKI_SUPPORTED_AI_MODELS env var, and
the contributor setup drops the `cp .env.example .env` step entirely.
Update project CLAUDE.md architecture section to describe src-tauri/src/config/
as the single source of runtime configuration, and correct the activator.rs
note so it reflects reality: activation timing is a compiled const, not yet
exposed through AppConfig because the CGEventTap callback runs on a thread
that cannot trivially read Tauri managed state.
Scope honesty: remove the [activation] section from config.toml entirely.
Having the section without any consumer (activator still reads ACTIVATION_WINDOW
and ACTIVATION_COOLDOWN from its own const) would let users edit values that
do nothing, which is worse than "this knob doesn't exist yet". The section
can be re-introduced in the future settings-panel PR alongside the plumbing
needed to get the values into the event-tap thread.
All 33 frontend test files pass 720 tests; backend cargo test passes 419 tests;
100% line coverage on both sides; validate-build completes with zero warnings.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix(review): atomic write tmpfile cleanup, exhaustive-deps, max-images count
atomic_write now removes its .tmp-<pid>-<nanos> staging file when the
rename step fails (cross-device, permission drift, non-empty directory).
Without the cleanup, failed writes accumulate orphan tmpfiles in the
app-support directory. Test added: atomic_write_cleans_up_tmpfile_on_rename_failure.
quote.maxContextLength added to two useCallback dependency arrays in
App.tsx that read it but omitted it, silencing the exhaustive-deps rule.
Max-images limit corrected from 4 to 3 throughout App.test.tsx and
AskBarView.test.tsx to match the value already enforced by the component.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat(config): add [search] section to TOML config
Promotes nine previously compiled-in search/pipeline constants to
user-configurable values in config.toml under a new [search] section.
Configurable fields:
searxng_url, reader_url -- service endpoints
max_iterations, top_k_urls -- pipeline quality/latency knobs
search_timeout_s, reader_per_url_timeout_s, reader_batch_timeout_s,
judge_timeout_s, router_timeout_s -- per-service timeouts
Users who remap Docker ports, run SearXNG on a custom host, or use slow
hardware can now change these without a rebuild. A missing [search]
section falls back to the same compiled-in defaults as before, so
existing configs get zero behavior change.
Validation in loader.rs: empty URLs reset to defaults, numeric fields
clamp to sane bounds, and reader_batch_timeout_s is corrected if it
would be <= reader_per_url_timeout_s.
The SearchRuntimeConfig struct is constructed at pipeline entry from
AppConfig.search and threaded through run_agentic, searxng::search,
ReaderClient, and the DefaultRouterJudge/DefaultJudge callers.
Tests use SearchRuntimeConfig::default() which delegates to the
compiled constants, including the 1-second READER_BATCH_TIMEOUT_S in
test builds, so all existing test behavior is preserved.
Stays compiled-in (no TOML field): GAP_QUERIES_PER_ROUND (output cap,
not a prompt instruction), CHUNK_TOKEN_SIZE, TOP_K_CHUNKS (quality
knobs with non-obvious interactions), and all retry-delay constants
(circuit-breaker internals with no industry precedent to expose).
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* refactor(search): collapse pipeline constants into config::defaults
Establish src-tauri/src/config/defaults.rs as the single source of
truth for the agentic /search pipeline's runtime configuration.
- Delete the duplicate constants in search/config.rs that mirrored
defaults.rs (MAX_ITERATIONS, TOP_K_URLS, the five timeouts, and the
two service URLs); SearchRuntimeConfig::Default now reads from
config::defaults so the file and binary cannot drift.
- Add SearchRuntimeConfig::from_app_config(&AppConfig) and use it from
search_pipeline in place of an inline 9-field struct literal.
- Drop dead constants and the test-only Default ctors that hid
parallel hardcoded URLs (SEARXNG_BASE_URL/ENDPOINT/TIMEOUT,
ReaderClient::new and Default).
- Test builds keep a 1 s reader_batch_timeout_s via the explicit
TEST_READER_BATCH_TIMEOUT_S override so BatchTimeout paths stay
cheap to exercise.
- Document the [search] TOML section in docs/configurations.md with
defaults, bounds, and an SSRF-safety note about loopback URLs.
Refresh stale identifier names in module-level comments to match the
runtime field names (max_iterations, reader_batch_timeout_s, etc.).
All gates green: clippy -D warnings, prettier, tsc, frontend + Rust
release builds, 433 backend + 721 frontend tests, backend coverage
gate exits 0 with touched files at 100%.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* refactor(config): centralize all pipeline constants into config::defaults
Moves the four live pipeline-internal constants (GAP_QUERIES_PER_ROUND,
CHUNK_TOKEN_SIZE, TOP_K_CHUNKS, READER_RETRY_DELAY_MS) from
search/config.rs into config/defaults.rs under DEFAULT_* names, making
config::defaults the single source of truth for every numeric default in
the codebase.
Also removes LLM_RETRY_DELAY_MS and SEARCH_RETRY_DELAY_MS which were
dead constants: defined in search/config.rs but never referenced outside
their own sanity-bound test.
search/config.rs is now adapter-only: SearchRuntimeConfig struct,
from_app_config, searxng_endpoint, and the test-only
TEST_READER_BATCH_TIMEOUT_S override. No raw constant definitions remain.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* refactor(config): remove schema_version field
No version field is needed for additive schema evolution. serde's
#[serde(default)] on every section struct already handles missing
fields transparently: an older config file parses cleanly and unknown
fields are ignored, so user customizations survive any additive change
without a version check.
The version field provided no migration code; it only triggered
rename-and-reseed on any mismatch, silently wiping user customizations
whenever a future schema bump occurred.
Removes: CURRENT_SCHEMA_VERSION constant, validate_schema_version fn,
ConfigError::TooNew and ConfigError::NoMigrationYet variants, and all
associated tests and documentation.
AppConfig::Default is now derivable (clippy); replace manual impl with
#[derive(Default)].
Fixes pre-existing rustfmt violations in search/pipeline.rs and
search/reader.rs.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* docs(config): unify reference tables across all config domains
Rewrite docs/configurations.md so every domain shows one table listing
all constants (tunable + baked-in) with explicit columns for
Default, Tunable?, Why not tunable, Bounds, and Description. Adds
previously undocumented [activation], [vision], and [history] domains
and inlines the pipeline-internal search constants
(GAP_QUERIES_PER_ROUND, CHUNK_TOKEN_SIZE, TOP_K_CHUNKS,
DEFAULT_READER_RETRY_DELAY_MS) alongside their tunable siblings.
Replaces the separate "What is NOT configurable" section with
per-row justifications so users can see the full picture in one place.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat(config): expose searxng_max_results, centralize search constants
Promote the per-query SearXNG result cap (previously hardcoded
MAX_RESULTS=10 in search/searxng.rs) to a tunable [search] field
searxng_max_results, bounded [1, 20] and clamped by the loader.
Threaded through SearchRuntimeConfig and both pipeline call sites.
Move MAX_SNIPPET_CHARS and MAX_QUERY_CHARS to config::defaults as
DEFAULT_MAX_SNIPPET_CHARS / DEFAULT_MAX_QUERY_CHARS so defaults.rs
remains the single source of truth for every constant. Both stay
baked-in (defense-in-depth bounds against external/attacker-
controlled data) but live under one module instead of duplicated
across search/searxng.rs.
Update docs/configurations.md to add the new tunable row, the two
baked rows for snippet/query char caps, and the example TOML.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* docs(config): inline trade-off guidance + document config system in CLAUDE.md
In docs/configurations.md, append a "Raise for X; lower for Y" sentence
to every numeric tunable in the [search] table so users see the
direction of each knob's quality-vs-latency trade-off without leaving
the row. One-directional knobs (timeouts) say so explicitly: lowering
them only causes premature failures.
Add a "Configuration System" section to the worktree's CLAUDE.md
describing the single-source-of-truth rule (defaults.rs), the
schema/loader/writer layering, the subsystem RuntimeConfig projection
pattern, and a concrete checklist for adding new tunable or baked-in
constants. This unblocks future work that touches configuration
without forcing the next contributor to reverse-engineer the system.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* docs(config): rewrite descriptions for non-technical readers
Every domain section in docs/configurations.md now opens with a
plain-language intro, and every Description cell explains what the
constant actually does in user terms (not pipeline-internal terms).
Specifically: replace "rerank", "synthesis", "agentic gap loop",
"event-tap callback", "downstream prompt", and similar jargon with
phrasings a consumer or new developer can follow at first read.
For numeric tunables in [search], every Description ends with a
"Raise for X; lower for Y" trade-off; one-directional knobs
(timeouts) say so explicitly so users do not waste time lowering
them. Soften the "Reading the reference tables" legend (no more
"clamped"), simplify the bad-input section, and add a missing
intro to [quote]. The baked-row "Why not tunable" cells in [search]
keep their existing wording per the deliberate carve-out for the
"judge" and "synthesize" terms.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* docs(config): refine constant tables for clarity and consistency
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* docs(config): update descriptions for max_iterations and top_k_urls for clarity
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
---------
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps the github-actions group with 2 updates: actions/checkout and taiki-e/install-action.
Updates
actions/checkoutfrom 4.3.1 to 6.0.2Release notes
Sourced from actions/checkout's releases.
... (truncated)
Changelog
Sourced from actions/checkout's changelog.
... (truncated)
Commits
de0fac2Fix tag handling: preserve annotations and explicit fetch-tags (#2356)064fe7fAdd orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set (...8e8c483Clarify v6 README (#2328)033fa0dAdd worktree support for persist-credentials includeIf (#2327)c2d88d3Update all references from v5 and v4 to v6 (#2314)1af3b93update readme/changelog for v6 (#2311)71cf226v6-beta (#2298)069c695Persist creds to a separate file (#2286)ff7abcdUpdate README to include Node.js 24 support details and requirements (#2248)08c6903Prepare v5.0.0 release (#2238)Updates
taiki-e/install-actionfrom 2.9.4 to 2.70.3Release notes
Sourced from taiki-e/install-action's releases.
... (truncated)
Changelog
Sourced from taiki-e/install-action's changelog.
... (truncated)
Commits
6ef672eRelease 2.70.3f89faaaUpdatewasm-bindgen@latestto 0.2.1169adcff1Updatecargo-insta@latestto 1.47.2a322a79Updatetombi@latestto 0.9.12875d0e5Updatebiome@latestto 2.4.10e9e8e03Release 2.70.2f225969Updatevacuum@latestto 0.25.32e8700aUpdatetombi@latestto 0.9.1141213fbzizmor: Apply more lintsfd0f63eRelease 2.70.1Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions