Skip to content

Implement macOS GUI#140

Open
jamesyc wants to merge 21 commits into
mainfrom
gui
Open

Implement macOS GUI#140
jamesyc wants to merge 21 commits into
mainfrom
gui

Conversation

@jamesyc
Copy link
Copy Markdown
Owner

@jamesyc jamesyc commented May 21, 2026

Implement macOS GUI

jamesyc added 19 commits May 19, 2026 20:52
…firmations, credential separation, cancellability state, and Swift confirmation handling
Add saved Time Capsule profiles, Keychain-backed passwords, profile-scoped backend execution, and the dashboard/add-device app shell.

Unify the GUI and CLI discovery contract around deduped device candidates, preserve root SSH targeting, and document the target GUI architecture.

Fix operation ownership so rejected starts do not enter running states and dashboard snapshots are attributed to the profile that started the operation.
Add activity snapshots, operation timelines, dashboard presentation models, device status policies, and flash workflow scaffolding for the saved-device dashboard.

Split registry behavior so configure can merge rediscovered devices while profile edits update by ID and reject duplicate hosts or Bonjour fullnames.

Route recovery actions, password invalidation, and backend-only readiness activity through app stores with focused Swift coverage.

Tests: swift test; .venv/bin/pytest
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a native macOS GUI for the TimeCapsuleSMB project, along with a structured Python backend to support it. The GUI is built using SwiftUI and follows a profile-first architecture, integrating with macOS Keychain for credential storage. The Python backend provides a JSON-based API for operations like discovery, configuration, deployment, and maintenance. Feedback focuses on improving the robustness of the frontend-backend contract by using machine-readable identifiers instead of string matching for recovery actions, ensuring proper task cancellation in the backend client, and addressing hardcoded user-facing strings through the existing localization infrastructure. A potential typo in a macOS version check was also noted.

Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/RecoveryActionMapper.swift Outdated
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/BackendClient.swift
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/HostCompatibilityPolicy.swift Outdated
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/ContentView.swift Outdated
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/DashboardPresentation.swift Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fabd699ac8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/timecapsulesmb/app/ops/maintenance.py Outdated
@jamesyc
Copy link
Copy Markdown
Owner Author

jamesyc commented May 21, 2026

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a native macOS GUI for the TimeCapsuleSMB project, featuring a SwiftUI application and a Python-based structured API backend. The changes include documentation for the GUI architecture and UX, implementation of core app components for device discovery, deployment, and maintenance, and updates to the CLI to support structured interactions. Feedback focused on enhancing the robustness and security of the application, specifically by addressing potential blocking writes in the helper communication, tightening Keychain item accessibility attributes, and ensuring data consistency when saving device profiles and passwords.

Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/HelperRunner.swift Outdated
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/PasswordStore.swift Outdated
Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/AddDeviceFlowStore.swift Outdated
@jamesyc
Copy link
Copy Markdown
Owner Author

jamesyc commented May 21, 2026

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a native macOS GUI for TimeCapsuleSMB, built with Swift and SwiftUI, supported by a new structured Python backend API. The implementation includes a robust architecture for managing device profiles, a centralized operation coordinator, and detailed state machines for discovery, deployment, and maintenance workflows. Feedback on the code identifies performance concerns related to synchronous file I/O on the main actor in the DeviceRegistryStore and blocking read operations in the HelperRunner, both of which could impact UI responsiveness or lead to thread exhaustion.

Comment thread macos/TimeCapsuleSMB/Sources/TimeCapsuleSMBApp/HelperRunner.swift
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