Draft
Conversation
- feat: add dry-run-aware atomic config patch API with structured outcomes and errors - feat: introduce editable settings schema with value kinds, reload behavior, and sensitivity metadata - refactor: re-export new patch and schema types from theme config modules for upcoming integrated editor flows
- feat: add config editor state, input handling, and modal UI - feat: extend theme config schema for editor metadata and validation - feat: add locale strings for config editor (de-DE, en-US, hu-HU) - feat: persist config editor recents and bookmarks; debounce search recents - change: wire editor into runtime tick/cleanup, global keys, mouse, search, and results UI - chore: add Config_Editor_v0.8.3 screenshot asset
…ex -Sl on pacman.conf - change: prefer checkupdates before fakeroot temp-db sync when the binary exists; fall back to fakeroot then stale pacman -Qu when checkupdates is missing or non-authoritative. - change: defer checkupdates-unavailable reason until after authoritative paths are exhausted; classify checkupdates stderr on failure. - feat: add PacmanConfScan::active_repo_names_lower for active [repo] section names from pacman.conf. - change: run pacman -Sl for EndeavourOS, CachyOS, Artix, and BlackArch only when a matching repo is active in the main pacman.conf. - refactor: extract optional repo filtering and pacman -Sl spawn_blocking helpers in index fetch. - test: assert active_repo_names_lower ignores commented sections and [options]. - docs: tighten rustdoc and reason-code comments for update-check tooling and Landlock-related stderr.
- change: compute updates modal scroll to vertically center the selected entry when possible, clamping at list ends. - change: derive scroll from selection and viewport geometry only; prior scroll offset is unused. - test: refresh modal scroll expectations and add a middle-of-list centering regression test. - docs: align rustdoc and comments in modal, mouse, and utils with centering behavior.
- change: emit update-check summary INFO only when count, authority, strategy, or reason digest changes, or the first run has non-empty reason codes. - change: log isolated checkupdates execution at DEBUG instead of INFO. - test: add unit tests for update_check_cycle_emits_info (baseline skip, reasons, count change, digest clear, unchanged).
…er save validation - feat: enable `keybinds.conf` in the config editor flow with schema exports, file activation, and active-path visibility in details pane. - feat: add semantic and typed popup validation (color, key chord, optional numeric/all, pane order, locale, terminal token, selected countries) before patch writes. - feat: add keybind chord serialization/lookup helpers and same-scope conflict detection to prevent invalid or colliding keybind saves. - test: add phase 1 integration coverage for bool/enum saves and dry-run no-write behavior through real config-editor key events. - test: add phase 2 integration coverage for keybind save, dry-run no-write behavior, and conflict-blocked save behavior.
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.
Summary
src/ui/modals/config_editor.rs/src/events/modals/config_editor.rs/src/state/config_editor.rs.keybinds.confis fully wired into the integrated editor flow (schema exports, file activation, active-path visibility), with typed key-chord serialization/lookup and same-scope conflict detection to block invalid colliding saves.theme/config/patch.rsandtheme/config/schema.rssupport structured edits aligned with shipped config examples.checkupdateswhen available; classify failures and stderr; fall back through fakeroot temp-db sync and stalepacman -Quwhen appropriate. Optionalpacman -Slindex paths are gated on active repo names from the mainpacman.conf(EndeavourOS, CachyOS, Artix, BlackArch) viaPacmanConfScan::active_repo_names_lowerand refactors insrc/index/fetch.rs.INFOlines are deduplicated: summaryINFOonly when count, authority, strategy, or reason digest changes (or first non-empty reason run); isolatedcheckupdatesexecution logs atDEBUG.en-US,de-DE,hu-HUfor the config editor and related UI.Images/Config_Editor_v0.8.3.pngadded for the config editor UI.Type of change
Related issues
Closes #
How to test
cargo fmt --all cargo clippy --all-targets --all-features -- -D warnings cargo check cargo test -- --test-threads=1Manual / integration:
RUST_LOG=pacsea=debug cargo run --with--dry-runwhere you only need to observe behavior without installs).config/schema expectations.keybinds.conf, attempt both a valid keybind edit and a same-scope conflicting keybind edit; confirm valid saves persist and conflicts are rejected with no file write.checkupdatesonPATH; confirm authority ordering, reason codes in logs, and thatINFOspam is reduced on steady-state repeats.de-DEorhu-HU.Screenshots / recordings (if UI changes)
See
Images/Config_Editor_v0.8.3.pngfor the integrated config editor.Checklist
Code Quality:
cargo check)cargo fmt --allran without changescargo clippy --all-targets --all-features -- -D warningsis cleancargo test -- --test-threads=1passescargo test complexity -- --nocapture)unwrap()orexpect()in non-test codeTesting:
Documentation:
config/directory if config keys changedImages/if applicableCompatibility:
--dry-runflagpacman/paru/yayare unavailableSecurity (CI):
./dev/scripts/security-check.shbefore opening the PR (local mirror of Security + Lint workflows: rustfmt, clippy,cargo audit,cargo deny check, gitleaks — skipped steps print install hints)cargo auditandcargo deny checkpass (deny.toml); no new high-severity or license issues that would fail GitHub dependency review on this PR.gitleaks.tomlfor allowlisted paths if you must add test fixtures)AGENTS.md/CLAUDE.md(shell quoting, credentials, HTTP, paths) — seedev/SECURITY_REMEDIATION_GUIDE.mdfor remediation patternsOther:
pacsea-binorpacsea-gitrepos)Notes for reviewers
state,events,ui,theme,persist, and locales; a skim of modal lifecycle (open/save/cancel) andAppStateintegration will pay off.workers/updates.rs,index/fetch.rs, andpacman_conf.rs; optional-Slis now tied to active repo sections—worth validating on installs that only enable a subset of community repos.INFOnoise.Breaking changes
None intended. Config editing goes through the existing theme/settings model; if any default or validation behavior changed, call it out during review.
Additional context
feat/integrated-config-editdev/(e.g. integrated config editing plan) may accompany this work for historical context.