Skip to content

Preserve portable firmware settings in .entlayout#101

Open
IgorArkhipov wants to merge 1 commit into
ergohaven:mainfrom
IgorArkhipov:igor/entlayout-portable-settings
Open

Preserve portable firmware settings in .entlayout#101
IgorArkhipov wants to merge 1 commit into
ergohaven:mainfrom
IgorArkhipov:igor/entlayout-portable-settings

Conversation

@IgorArkhipov

@IgorArkhipov IgorArkhipov commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

This is the focused follow-up suggested in the closing comment on #93.

It extends manual .entlayout export/import without adding automatic recovery infrastructure.

  • Bump .entlayout to v4 and add an optional portable_settings section for advertised standard QMK settings, including Quick Tap, Auto Shift, One Shot, Tap-Hold, Mouse Keys, Magic, Grave Escape, and compatible touchpad settings such as Auto Layer.
  • Store a stable semantic ID, QSID, value width, value, and—where applicable—the ordered variants that define a select field's meaning.
  • Restore only settings whose target contract matches. Unsupported, malformed, duplicated, or incompatible entries are skipped conservatively.
  • Verify every write with immediate exact readback, continue after individual failures, and show imported/unsupported/incompatible/failed counts plus exact write failures in the import report.
  • Preserve v1-v3 import compatibility; files without portable_settings continue to load unchanged.

Scope

Existing .entlayout sections remain authoritative for layer names and Combo Term, so they are not duplicated. Keyboard-specific module fields, Layer LED/RGB, and Bluetooth settings are intentionally excluded because their portable contract cannot be established generically across firmware definitions.

This PR does not add serial-backed history, automatic prompts, deferred banners, background capture, or a separate HID recovery lifecycle.

Validation

  • cargo test --locked: 320 tests passed
  • cargo build --release --locked: passed
  • cargo clippy --locked --bin entropy: passed (repository's existing warnings only)
  • python3 scripts/check_i18n.py: passed
  • rustfmt --edition 2021 --check src/entlayout.rs: passed
  • git diff --check: passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant