| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(agent): follow the picked app icon in the menu bar (#846) Picking an icon changed the Dock, Finder and Launchpad and left the menu bar wearing the other mark — the one surface the GUI cannot reach, since the status item is the agent's. The glyph was a hardcoded include_bytes!. The agent now picks its glyph from `app_settings.app_icon`, and restyles it live: the GUI's pick already arrives as a config reload, and from there the work hops to the main queue where AppKit and the status item live. That hop is the one this crate's own comment deferred as "a no-restart live toggle would need a main-thread hop from the IPC reload path" — `show_in_menu_bar` can use the same path whenever someone wants it live too. Two bugs fell out of wiring it. The GUI persisted the icon without telling the agent at all (`persist_config`, not `persist_and_reload`), so nothing downstream could have reacted; and the menu-bar glyph is a template image, so the alternate needed its own silhouette rather than a render — derived from the prism document's mark layer, which is the whole reason that document is authored as a mark plus a fill. | 2 个月前 | |
feat(desktop): add a keyboard backlight duration timer (#1879) Keyboards that report HID++ `0x1982` version 3 or later can now read and set how long the keys stay lit after typing stops. - Device tab: a "Turn off after" row with 5-30 s steps; "Enable extended durations" adds 1 min-2 h steps and writes nothing to the keyboard. - CLI: `openlogi backlight duration SECONDS` (a multiple of 5, from 5 through 7200), sent through the agent. - Core/IPC: `BacklightControls` is a bit set with a `DURATION` control; the timer is recorded under protocol v41, and older recorded profiles still load. Closes #1834 | 20 小时前 | |
feat(core,agent,gui): add guarded disable-keys controls (#993) * feat(gui): add guarded disable-keys controls * fix(keyboard): reconcile unconfirmed disable-keys writes * fix(gui): refresh config projections after disable-keys save retry * docs(gui): plan disable-keys feedback follow-up * fix(gui): localize disable-keys feedback and scope control ids * docs(gui): plan shared retry disabled-state correction * fix(gui): preserve shared retry disabled styling Let Button own semantic foreground colors and remove the unused palette argument from retry_line and its callers. Cover painted light/dark disabled colors, Enter/Space activation and disabled input, plus real-panel Save Retry recovery after a config revision conflict. Add gallery examples and verification evidence. * fix(deps): update tokio for RUSTSEC-2026-0386 Lock Tokio to 1.53.3 to address the AsyncFd I/O-safety advisory. Preserve all other locked packages and dependency edges. Validation is delegated to GitHub CI because external PR code must not run on this computer. Co-authored-by: Manus <dev-agent@manus.ai> * fix(device): gate hidden disable keys descriptors Co-authored-by: Manus <dev-agent@manus.ai> * fix(core): bump config schema for disabled keys Co-authored-by: Manus <dev-agent@manus.ai> * fix(agent): retain disable keys write ownership Co-authored-by: Manus <dev-agent@manus.ai> * fix(agent): isolate disable keys recovery Co-authored-by: Manus <dev-agent@manus.ai> * fix(agent): preserve queued disable keys response budget Start the requester deadline after the owner admits device I/O. Keep the structural guard aligned with the specialized write owner. Co-authored-by: Manus <dev-agent@manus.ai> * docs(core): describe disabled keys schema protection Co-authored-by: Manus <dev-agent@manus.ai> * feat(ipc): report saved config revision verdict Co-authored-by: Manus <dev-agent@manus.ai> * fix(desktop): reconcile stale settings revisions Co-authored-by: Manus <dev-agent@manus.ai> * fix(agent): fence write admission after receiver lease Check the current intent only after waiting for receiver access. Remove stale imports and use named replay construction parts without relaxing lints. Co-authored-by: Manus <dev-agent@manus.ai> * fix(device): use feature set descriptor type Co-authored-by: Manus <dev-agent@manus.ai> * fix(desktop): invalidate keys after external config reload Invalidate active and retained snapshots for both general and Disable Keys save acknowledgements. Close writes until the fresh query completes. Co-authored-by: Manus <dev-agent@manus.ai> * fix(agent): preserve disable keys transaction ownership Retain native I/O ownership across discovery and readback, confirm manual intent only on requester receipt, and queue reconciliation reads behind admitted policies. Preserve generic setter replies and distinguish physical replacement from identity enrichment. Add deterministic regressions and owner guards. * fix(gui): reconcile exact disabled keys config revisions Correlate coalesced reload receipts with each saved revision and keep editing blocked until the refreshed revision is accepted and reread. Preserve retry state across refresh failures and disconnects. Add stale-receipt, repeated external-edit, and recovery regressions plus an owner guard. * docs(config): explain disabled keys reconciliation guarantees * docs: drop disable-keys planning artifacts The plan and spec files under docs/superpowers/ are working notes from the implementation. The shipped behavior is described in docs/CONFIGURATION.md and the user documentation, matching how 75c7e2cd retired the #344 artifacts. * fix(agent-core): guard the write-through keyboard setters agent-keyboard-write-owner matched set_disable_keys and set_*_on but not set_disable_keys_write_through_on, the entry point the Disable Keys owner actually calls. Another agent caller could reach the device setter without SharedHandles ordering or native completion ownership. * fix(desktop): name disable-key switches by their action Each switch is on when its key is disabled, but its accessibility name was only the key name, so a screen reader announced "Caps Lock, switch, on". Name the switch "Disable <key>" through a localized catalog entry. * fix(agent-core): preserve requests across identity enrichment * fix(agent-core): wake cancelled disable-keys queue waits * fix(desktop): fence external config adoption until revision confirmation * docs(config): describe the disable keys fixes Cover the revision fence for Save Retry and other saves, cancelled queued requests, direct keyboard identity enrichment, and the switch accessible name. * test(desktop): end statement closures with semicolons * fix(desktop): adopt the shared retry line in the press force row * fix(agent): announce Disable Keys recovery to clients A recovery restores the keyboard without a 0x4521 report, so the device-reported settings revision stays put and a client that read the abandoned mask keeps showing it. Count each started recovery per route and add it to the published revision. The recovery write already holds its turn, so the client read that follows waits for it. * docs(core): note that Disable Keys recovery refreshes the app * refactor(agent): move Disable Keys recovery dispatch out of the inventory refresh Keeps refresh_inventory_inner under the too_many_lines limit. --------- Co-authored-by: AprilNEA <github@sku.moe> Co-authored-by: Manus <dev-agent@manus.ai> | 2 天前 | |
fix(i18n): track locale catalogs as build inputs (#1327) Track the shared locale directory in each localized binary's build script so incremental builds embed updated translations. | 17 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 20 小时前 | ||
| 2 天前 | ||
| 17 天前 |