fix(settings): keep stored values in editable numeric fields (#207)

* fix(settings): keep stored values in editable numeric fields

The editable spin boxes for the custom refresh interval, the update check
interval, and both quota thresholds substituted a hard-coded default when
the typed text held no number. Clearing a field, or committing the custom
interval field's own "No periodic refresh" text, silently replaced a
configured value: a disabled refresh became five minutes, and a 70%/90%
threshold pair became 80%/95%. Each field now keeps its current value,
matching the history-window field that already did.

Guard the General page's applied-configuration reads the way Notifications
already does, so the page resolves those bindings instead of raising a
TypeError for every runtime-owned binding when it is built outside a
plasmoid. That unblocks tests/tst_settings_pages.qml, which builds the real
General and Notifications pages and covers the global defaults action, its
pending confirmation, the numeric fields above, and the critical threshold
following the warning floor.

Fail closed in the Providers page's runCommand: a descriptor without a
usable timeout registered a ledger entry with no deadline, which both the
timeout timer and the expiry scan skip, so it would have held its provider's
pending state until the page reopened. Every call site passes a timeout
today; CommandLedger.descriptor documents the same rule.

Correct the cfg_*Default comment: plasma-workspace 6.7.4 exposes a
<key>Default entry in the configuration map and injects cfg_<key>Default
over those initializers, which docs/development.md already recorded.

Documentation: CHANGELOG Unreleased records the numeric-field fix;
docs/development.md describes the new regression check. TODO.md tracks no
settings-page work affected by this change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012v7NiPJPqX9sNxqfM7tgfp

* fix(settings): track refreshOnOpen default flip in new settings test

Main #206 made refresh-on-open the default after this branch was cut, so
the merge-tree CI run restores true while the new check still expected
false. Start the fixture from the opt-out value and expect the schema
default after restore.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
3a6ae8b125Simone committed on 9/10/2026, 4:18:11 PM· committed by GitHubparent80b08d4
6 files changedLine totals unavailable