Merged
Conversation
added 9 commits
March 7, 2026 21:24
…nt editing support
- Add displayName and requiresRelaunch metadata keys with localized
display text via a new string catalog resource bundle
- Add EditorControl, a struct describing which UI control to use when
editing a variable (toggle, text field, number field, decimal field,
or none)
- Add editorControl and parse properties to ConfigVariableContent,
set automatically by each content factory based on value type
- Capture editorControl and parse on RegisteredConfigVariable during
registration
- Move ConfigVariableMetadata and metadata keys into a Metadata
directory; move metadata tests accordingly
- Add architecture plan and implementation plan documents for the
editor UI feature
- Add configType computed property and Codable conformance to
ConfigContent for type checking and JSON serialization
- Add EditorOverrideProvider, a ConfigProvider that stores editor
overrides in memory with real-time value and snapshot watching,
following the MutableInMemoryProvider pattern
- Add UserDefaults persistence to EditorOverrideProvider via load,
persist, and clearPersistence methods with injectable UserDefaults
for testability
- Add isEditorEnabled parameter to ConfigVariableReader inits; when
enabled, creates an EditorOverrideProvider, loads persisted
overrides, and prepends it to the provider list
- Add Editor source and test directories for editor-specific code
- Add EditorDocument, a @mainactor working copy model that tracks staged overrides separately from the committed baseline in EditorOverrideProvider - Support setOverride, removeOverride, and removeAllOverrides with dirty tracking via isDirty and changedKeys - Add save method that computes the delta, updates the provider, persists to UserDefaults, and resets the baseline - Integrate with UndoManager for undo/redo of all mutation operations, including a single undo action for removeAllOverrides - Reorder EditorOverrideProvider declarations to place types before stored properties
- Add displayString computed property to ConfigContent using
locale-aware formatters for numbers and list formatting
- Add VariableListItem and ProviderValue data structs for the
list and detail views respectively
- Add ConfigVariableListViewModeling and
ConfigVariableDetailViewModeling protocols outside
#if canImport(SwiftUI) for testability
- Add ConfigVariableListViewModel with filtered/sorted variable
list, search, value resolution across providers, save, cancel,
undo/redo delegation, and detail view model creation
- Add ConfigVariableDetailViewModel with provider value queries,
override enable/disable, text and bool override editing via
parse closures, and secret reveal toggle
- Make EditorDocument @observable so view model computed
properties react to working copy changes
- Add static editorProviderName to EditorOverrideProvider to
avoid hardcoded provider name strings
- Add localized unknownProviderName string for variables that
resolve to their default value
- Reorganize Editor directory into Data Models and View Models
subdirectories
…point
- Add ProviderBadge view and providerColor(at:) function for
deterministic provider color assignment from a fixed palette
- Add ConfigVariableDetailView with header, override controls
(toggle, text field, number/decimal fields), provider values
with tap-to-reveal for secrets, and metadata sections
- Add ConfigVariableEditorView with searchable list, navigation
to detail views, toolbar with save/cancel and overflow menu
for undo, redo, and clear overrides, and confirmation alerts
- Add ConfigVariableEditor as the public entry point, creating
the view model layer from a ConfigVariableReader
- Replace secrecy property on RegisteredConfigVariable with a
resolved isSecret boolean, computed at registration time using
ConfigVariableReader.isSecret(_:)
- Add isSecret to ConfigVariableDetailViewModeling protocol and
concrete implementation
- Add providerIndex to VariableListItem and ProviderValue for
correct provider color assignment in views
- Add 21 localized strings for editor and detail view labels,
alerts, and section headers
Code Coverage ReportOverall Coverage: 79.75% (3,044 of 3,817) DevConfiguration: 79.75% (3,044 of 3,817)
|
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.
views for browsing and overriding configuration values at runtime
backed by UserDefaults that integrates with ConfigVariableReader
undo/redo and dirty tracking
ConfigVariableDetailView, and their view model protocols and
implementations
the editor
provider information
each variable type
editor metadata
parse, and defaultContent on content types
ConfigVariable