Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
eec1bcb
Implement native macOS GUI foundation with structured API helper
jamesyc May 20, 2026
7716369
Implement macOS helper runner, confirmations, and service-layer app o…
jamesyc May 20, 2026
308b78b
Improve app API diagnostics, env preservation, and helper robustness
jamesyc May 20, 2026
1751958
Stabilize app service contracts and split backend operations
jamesyc May 20, 2026
a10d815
Persist debug logging configuration across configure and deploy
jamesyc May 20, 2026
d156602
Add more consistent arg options
jamesyc May 20, 2026
b8fc311
Helper hardening, localized UI strings, and centralized Swift operati…
jamesyc May 20, 2026
3db812a
Validate repair-xattrs API paths and simplify set-ssh action flow
jamesyc May 20, 2026
7ff8e66
Localize Swift fallback event messages and summaries
jamesyc May 20, 2026
818e548
Normalize repair-xattrs summaries and modernize Swift helper output r…
jamesyc May 20, 2026
ff8c8c6
Make GUI helper event delivery async and ordered
jamesyc May 20, 2026
b381409
Implement service-layer GUI backend contracts with backend-driven con…
jamesyc May 20, 2026
67d2b19
Merge remote-tracking branch 'origin/main' into gui
jamesyc May 20, 2026
8dfb061
Fix app API typing and repair confirmation ordering
jamesyc May 20, 2026
ae1d5c6
Implement structured GUI workflows
jamesyc May 20, 2026
364c98e
Implement structured macOS maintenance workflows
jamesyc May 21, 2026
30d69e2
Implement bundled GUI runtime readiness foundation
jamesyc May 21, 2026
a914319
Build multi-device GUI dashboard foundation
jamesyc May 21, 2026
fabd699
Build GUI dashboard state and recovery policies
jamesyc May 21, 2026
80650a8
Address GUI PR feedback
jamesyc May 21, 2026
3fcb0e8
Harden GUI helper and profile persistence
jamesyc May 21, 2026
5679c9d
Polish GUI activity and device workflows
jamesyc May 21, 2026
c277c5c
Add per-device dashboard sessions and profile editor
jamesyc May 21, 2026
88f84fa
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 22, 2026
d31d9fe
Build dashboard and install/update presentation workflows
jamesyc May 21, 2026
d7901d1
Add presentation-driven checkup and maintenance dashboard UX
jamesyc May 21, 2026
c9da6c4
Add bundled runtime validation and first-launch discovery monitor
jamesyc May 22, 2026
bee307d
Add parallel GUI operation lanes
jamesyc May 22, 2026
62b3f4d
Fix macOS workflow state and settings behavior
jamesyc May 22, 2026
07ec755
Merge commit '321bda73f1dd17dcc962b7f2401f41833f1b6c13' into gui
jamesyc May 22, 2026
f3c2bad
Reboot NetBSD 4 deploys before activation
jamesyc May 22, 2026
31ef820
Update doctor report to reboot
jamesyc May 22, 2026
6670b4c
Add deletion warning
jamesyc May 22, 2026
ed5bc76
Add TC_ATA_IDLE_SECONDS and TC_ATA_STANDBY to configure
jamesyc May 22, 2026
231539f
Add TC_ATA_IDLE_SECONDS and TC_ATA_STANDBY to GUI
jamesyc May 22, 2026
1790626
Add app-level settings screen
jamesyc May 22, 2026
3f77b75
Implement schema v4 telemetry across CLI and GUI API operations
jamesyc May 22, 2026
909e059
Fix mdns advertiser degraded IPv4 takeover recovery and diagnostics
jamesyc May 22, 2026
99c588b
Merge remote-tracking branch 'origin/main' into gui
jamesyc May 22, 2026
10aa295
Remove legacy mDNS iface-context path and NBNS static IPv4 modes
jamesyc May 23, 2026
a6f9f89
Merge remote-tracking branch 'origin/main' into gui
jamesyc May 23, 2026
50e11b8
Merge origin/main into gui
jamesyc May 25, 2026
5acbd62
Merge origin/main into gui after discovery refactor
jamesyc May 26, 2026
09e9bb5
Clean up unused runtime
jamesyc May 26, 2026
07a5066
Add gui support for ipv6
jamesyc May 26, 2026
108cf5b
Add ssh enable confirmation
jamesyc May 26, 2026
7704d63
Add Flash to gui
jamesyc May 26, 2026
ddde78f
Add localization
jamesyc May 26, 2026
8ac7f4a
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 26, 2026
40444fa
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 26, 2026
d3ebe67
Package macOS app
jamesyc May 26, 2026
4b5a002
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 26, 2026
5e66976
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 27, 2026
b4fb7b8
Add icon
jamesyc May 27, 2026
fb457ae
Re-sign packaged macOS runtime tools after dependency rewriting
jamesyc May 27, 2026
b96991a
Remove NetBSD4 badge
jamesyc May 27, 2026
7d6a76a
Update version
jamesyc May 27, 2026
fe0a876
Fix non mac CI test
jamesyc May 27, 2026
18f4ce8
Invalidate stale checkup state when device mutations start
jamesyc May 27, 2026
475b766
Move context.py into shared services layer for GUI support
jamesyc May 27, 2026
d2867e3
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 27, 2026
9ec6e50
Add review fixes
jamesyc May 27, 2026
2630619
Implemented the AppOperationContext architecture
jamesyc May 27, 2026
3c74360
Add shared animated operation timeline
jamesyc May 27, 2026
ae9fc1a
Add Time Capsule sidebar context menu
jamesyc May 27, 2026
3cebe3e
Show plan and run actions side by side in GUI workflows
jamesyc May 27, 2026
fcb6156
Treat passed GUI checkups as healthy/deployed
jamesyc May 27, 2026
0bca0fe
Speed up packaging
jamesyc May 27, 2026
8592ca8
Keep package cache test independent of macOS tools
jamesyc May 27, 2026
93b964f
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 28, 2026
9a05b2b
Make CLI commands safer for non-interactive scripting
jamesyc May 28, 2026
01dc2cf
Merge branch 'main' of https://github.com/jamesyc/TimeCapsuleSMB into…
jamesyc May 28, 2026
355f6a7
Clean up GUI operation/credentials and add request-scoped event tracking
jamesyc May 28, 2026
8bdfc84
Split Add Device setup flow and unify discovery state
jamesyc May 28, 2026
a7d8166
Add detailed localized deploy progress stages to GUI
jamesyc May 28, 2026
17fe1e1
Clean up multiple localization bugs
jamesyc May 28, 2026
09ad0db
Include GUI deploy operation fields in telemetry
jamesyc May 28, 2026
f4a7726
Track install status in runtime state and recovery UI
jamesyc May 29, 2026
232fde4
Distinguish missing deployed payload config in doctor
jamesyc May 29, 2026
a18f64d
Fix deploy and uninstall planner plans
jamesyc May 29, 2026
33d3f55
Unify NetBSD4 activation decisions with LOGIN probe
jamesyc May 29, 2026
482f631
Persist timelines on maintenance page
jamesyc May 29, 2026
35948f2
Default GUI flash restore writes to reboot after validation
jamesyc May 29, 2026
1baf2bd
Add parity for discovery, cancellation, and operation details re tele…
jamesyc May 29, 2026
a4fd4b2
Update to v2.2.0-beta1
jamesyc May 29, 2026
b22580d
Update localization for device neutral text
jamesyc May 29, 2026
0ce8721
Add dark mode selector
jamesyc May 29, 2026
3114e75
Fix python 3.9 CI
jamesyc May 29, 2026
60a39cf
Retry doctor SMB listing across Samba startup races
jamesyc May 29, 2026
9f4f6f0
Add localized GUI recovery guidance for deploy reboot SSH timeout
jamesyc May 29, 2026
67491e5
Add runtime log context to app deploy activation failures
jamesyc May 29, 2026
efee24b
Split mDNS readiness verification into timed structured subprobes
jamesyc May 29, 2026
ce2c630
Merge origin/main into gui
jamesyc May 30, 2026
6e7cdd3
Update to v2.2.0-beta2
jamesyc May 30, 2026
01a7483
Forward backend running changes through GUI stores
jamesyc May 30, 2026
dbf42c6
Centralize GUI credential injection at the operation run boundary
jamesyc May 30, 2026
69d405b
Fix macOS package Python bytecode cleanup and re-signing
jamesyc May 30, 2026
96da2f5
Derive doctor SMB file-op shares from live smbclient listings
jamesyc May 30, 2026
20ac30d
Split maintenance workflow stores
jamesyc May 30, 2026
047f0f1
Refactor GUI navigation to use a single AppRoute state
jamesyc May 30, 2026
64f6871
Stop forwarding child store invalidations
jamesyc May 30, 2026
b240393
Add swift tests to CI
jamesyc May 30, 2026
5cc7bb0
Report optional app updates in GUI
jamesyc May 30, 2026
88d5c5d
Add SwiftUI view smoke regression harness
jamesyc May 30, 2026
7c49dda
Prune legacy confirmation hooks and consolidate CLI service logic
jamesyc May 30, 2026
221271a
Simplify CLI runtime by moving shared ownership to services
jamesyc May 30, 2026
e684bf5
Update docs
jamesyc May 30, 2026
09b53d5
Move flash and configure runtime workflows into shared services
jamesyc May 30, 2026
5fcdcc8
Fix close guard, helper cancellation, profile deletion, and network i…
jamesyc May 30, 2026
dda35e4
Group duplicate CLI and app workflow helpers together
jamesyc May 30, 2026
88e3c79
Move transient doctor retries into shared doctor retry flow
jamesyc May 30, 2026
19647a9
Consolidate operation helpers and remove compatibility shims
jamesyc May 30, 2026
8772220
Unify Swift dry-run operation parameter builders
jamesyc May 30, 2026
23963fe
Add pytest-xdist parallel test runner support
jamesyc May 30, 2026
aecabfd
Speed up pytest doctor and runtime tests
jamesyc May 30, 2026
ea88755
Speed up Swift tests and make smoke rendering headless
jamesyc May 30, 2026
e7a7722
Collapse reboot shims and remove compatibility pass-throughs
jamesyc May 30, 2026
163be00
Relax sparse Swift smoke render threshold
jamesyc May 30, 2026
a14ab8d
Capture bootstrap subprocess stderr in telemetry errors
jamesyc May 30, 2026
1fc6f72
Improve mDNS binary probe retry handling and timeout
jamesyc May 30, 2026
659709d
Add read-only ACP identity preflight before SSH enablement
jamesyc May 30, 2026
ebbbdf2
Add not-installed state for factory doctor failures
jamesyc May 31, 2026
ecf1e07
Fix macOS helper writing races and consolidate profile validation
jamesyc May 31, 2026
c26df7f
Refactor repair-xattrs around typed service request and result objects
jamesyc May 31, 2026
4ab846f
Move runtime callback adapters onto app and CLI contexts
jamesyc May 31, 2026
538e976
Inline redundant flash shims and simplify Swift workflow request helpers
jamesyc May 31, 2026
8dbd0e8
Harden macOS resource validation and helper pipe reads
jamesyc May 31, 2026
8f9c527
Remove idle GUI animation timer and sync profile route updates
jamesyc May 31, 2026
10a6a7f
Normalize endpoint port handling across CLI and macOS GUI
jamesyc May 31, 2026
077b7be
Harden HelperRunner process signaling against invalid PIDs
jamesyc May 31, 2026
7541182
Add test coverage
jamesyc May 31, 2026
efcda9a
Update to v2.2.0-beta3
jamesyc May 31, 2026
dcc7508
Remove compatibility shims and call helpers and services directly
jamesyc May 31, 2026
3507bf5
Refactor shared Python operation workflows
jamesyc May 31, 2026
841a94b
Extract Swift maintenance workflow helper
jamesyc May 31, 2026
99b756e
Refactor deploy orchestration and add CLI no-wait
jamesyc May 31, 2026
38aecb3
Route CLI storage operations through storage service
jamesyc May 31, 2026
7fda3fe
Extract dashboard state synchronization
jamesyc May 31, 2026
47334f7
Move version checks below CLI and app
jamesyc May 31, 2026
1b0cccc
Move terminal prompts out of services
jamesyc May 31, 2026
1b6ffd3
Refactor deploy adapters to use service-owned defaults
jamesyc May 31, 2026
91d6872
Enforce package import boundaries
jamesyc May 31, 2026
44e6377
Update homebrew install error message
jamesyc May 31, 2026
5f0ea58
Update flash unsupported-device message link
jamesyc May 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,66 @@ jobs:

- name: Run full test suite
run: python -m pytest

swift-test:
name: Swift Tests (macOS)
runs-on: macos-latest

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Show tool versions
run: |
xcodebuild -version
swift --version

- name: Run Swift tests
run: swift test --package-path macos/TimeCapsuleSMB

package-app:
name: Package App (macOS native)
runs-on: macos-latest
needs:
- swift-test
env:
HOMEBREW_NO_INSTALL_CLEANUP: "1"

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Restore package cache
uses: actions/cache@v4
with:
path: macos/TimeCapsuleSMB/.build/package-app
key: package-app-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('macos/TimeCapsuleSMB/tools/package_app.py', 'macos/TimeCapsuleSMB/Package.swift', 'macos/TimeCapsuleSMB/Assets/AppIcon/tcs.jpg', 'pyproject.toml', 'requirements.txt', 'src/**', 'bin/**') }}
restore-keys: |
package-app-${{ runner.os }}-${{ runner.arch }}-

- name: Install native packaging tools
run: |
brew install samba
brew tap hudochenkov/sshpass
brew install sshpass

smbclient="$(brew --prefix samba)/bin/smbclient"
sshpass="$(brew --prefix sshpass)/bin/sshpass"

test -x "$smbclient"
test -x "$sshpass"
file "$smbclient" "$sshpass"
lipo -archs "$smbclient"
lipo -archs "$sshpass"

{
echo "TCAPSULE_PACKAGE_SMBCLIENT=$smbclient"
echo "TCAPSULE_PACKAGE_SSHPASS=$sshpass"
} >> "$GITHUB_ENV"

- name: Package and validate native app
run: |
python3 macos/TimeCapsuleSMB/tools/package_app.py \
--configuration release \
--arch native \
--full-validation
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ dist/
*.egg-info/
*.egg

# Swift / macOS GUI build outputs
.build/
.swiftpm/
DerivedData/
*.xcuserstate
xcuserdata/

# Local dependencies and AirPyrt env
.deps/
.airpyrt-venv/
Expand Down
204 changes: 87 additions & 117 deletions DETAIL.md

Large diffs are not rendered by default.

Loading
Loading