Refactor the filter/sort menu to prevent it from closing when the
connection list refreshes. On iOS, use UIButton with UIMenu via
UIViewRepresentable with a Coordinator to track state changes and
only update menu when filter/sort values actually change. On macOS,
extract menu to a separate SwiftUI view to isolate dependencies.
Read package identifier and app group ID from Info.plist at runtime
via AppConfiguration. This enables SFM.System to use TeamID-prefixed
app group format required by macOS Sequoia, fixing the privacy prompt
when accessing app group data.
Add "Save File" and "Save Content JSON" options to profile share menu,
allowing users to save profiles directly to a chosen location using
fileExporter instead of the system share sheet.
- Refactor QR scanner into separate Scanner module for iOS and macOS
- Add camera selection menu for devices with multiple cameras
- Use Vision framework for QR detection on macOS
- Remove tvOS QR scanner support (continuity camera)
- Add camera entitlement and usage description for macOS
- Fix minor issues in Intents and ExtensionProvider
Use UIKit UIMenu on iOS to prevent SwiftUI view updates from
dismissing open menus. Separate LogDataModel from LogViewModel
to isolate log data changes from UI state.
- Extract TVToolbarButton as shared component
- Implement tvOS-specific card row with native Toggle and reorder handle
- Add focus section and move command support for reordering