Commit Graph
26 Commits
Author SHA1 Message Date
gib 221622b574 Watch: draw the status gear in black so it shows on its tinted button 2026-11-01 17:59:34 -05:00
gib 7ca0362745 Watch: status, environment and notifications screens
A gear on the feed opens a status overview that leads with what is wrong:
offline hosts, hosts on a fallback route, tokens expiring within 7 days,
and push problems, with healthy hosts folded into one row. Each host opens
its route ladder with Reconnect. The notifications page shows registration,
the last push, Send test and Unpair. Demo mode gains a Laptop on its VPN
fallback, and snapshot tests render the three screens.
2026-11-01 15:16:18 -05:00
gib 9707daf1fe Gateway: status route with per-route results, test push, reconnect and unpair
Gateway / check (push) Successful in 9s
Gateway / image (push) Successful in 24s
2026-11-01 15:04:30 -05:00
gib e6fd2b8f51 Mocks: three directions for the settings and status screens 2026-11-01 13:36:24 -05:00
gib 277683d5ee Renew hosts with direct WireGuard routes first and public URLs as fallbacks 2026-11-01 13:25:39 -05:00
gib 42b6a4920c Gateway: fallback routes per host, for the laptop's VPN address
Gateway / check (push) Successful in 9s
Gateway / image (push) Successful in 22s
2026-11-01 13:20:02 -05:00
gib f46c803ad4 Move the gateway to junior.gib: CI deploy, compose copy, renewal script, docs
Gateway / check (push) Successful in 7s
Gateway / image (push) Successful in 19s
2026-11-01 13:07:18 -05:00
gibandClaude Opus 5.5 27469dbc77 Watch: share with the complication through a Keychain group, not an App Group
Automatic signing with an App Store Connect API key registers bundle IDs and
profiles but cannot create or assign App Groups, so the archive failed. A
keychain-access-groups entry needs no portal setup. The demo flag and last
summary move into the same group; tests cover the round trip and the
migration of a pre-complication token.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:15:31 -05:00
gibandClaude Opus 5.5 67992dbf43 Watch: snapshot tests render the complication and multi-select screenshots
ImageRenderer draws the real views with demo data, since the watch simulator
is not drivable here. README covers the widget target and how to add it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:06:38 -05:00
gibandClaude Opus 5.5 0994fd7d5a Watch: waiting-count complication and multi-select questions
A WidgetKit extension (accessoryCircular, Rectangular, Inline, Corner) shows
GET /v1/summary. The device token moves to the App Group's Keychain access
group on launch so the extension can read it without re-pairing; the app
reloads the timeline when its feed counts change and on notifications.
Multi-select questions toggle options and send an array of values.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:06:38 -05:00
gib d4d67295c6 Script to renew every host's gateway session over SSH 2026-11-01 10:51:17 -05:00
gib 830bf4f139 Gateway: multi-select answers and a summary endpoint for the complication
Gateway / check (push) Successful in 10s
Gateway / image (push) Successful in 13s
2026-11-01 10:49:36 -05:00
gib 69858d4719 Gateway: APNs topic is the watch app's bundle ID
Gateway / check (push) Successful in 30s
Gateway / image (push) Successful in 46s
2026-11-01 10:09:26 -05:00
gibandClaude Opus 5.5 f772f4e4c4 Watch: TestFlight archive, iOS stub container, testflight.sh
The App Store only accepts a watch-only app inside an empty iOS stub
(watchapp2-container), the pair Xcode's Watch-only App template makes.
The stub takes org.gbrown.wristcode; the watch app, and so the APNs topic,
becomes org.gbrown.wristcode.watchkitapp.

Adds ITSAppUsesNonExemptEncryption = NO and scripts/testflight.sh, which
archives with API key automatic signing and a timestamp build number,
then exports and uploads (or exports only with --no-upload).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 10:08:55 -05:00
gib 16bae4410d CI: deploy key as a single-line base64 secret so the runner masks it
Gateway / check (push) Successful in 9s
Gateway / image (push) Successful in 14s
2026-11-01 02:40:15 -05:00
gib 21215210e3 Contract: pass approval option warnings, omit threadId on host pushes
Gateway / check (push) Successful in 8s
Gateway / image (push) Successful in 21s
2026-11-01 02:36:44 -05:00
gibandClaude Opus 5.5 7ad1045be4 Watch: treat an empty threadId in a push as no thread
The gateway sends threadId "" on host notifications; tapping one now opens
the feed instead of a thread that does not exist.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 02:35:58 -05:00
gibandClaude Opus 5.5 9731fd621f Watch: demo screenshots, wrapping reply chips, feed toolbar and inset fixes, README
Screenshots of Pair, Feed, Thread (finished, approval, question) and New
thread, taken in the Series 12 46mm simulator in demo mode.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 02:33:15 -05:00
gibandClaude Opus 5.5 bdfb79b891 Watch app MVP: XcodeGen project, gateway client, pair, feed, thread, new thread, notifications
SwiftUI watch-only app in watch/, generated by XcodeGen. Codable models mirror
gateway/src/contract.ts, with lenient string enums so new phases or decisions
still decode. A DemoGateway serves fixtures from the docs/api.md examples for
previews and demo mode. Swift Testing covers decoding the documented JSON,
request encoding, notification action parsing and the small view helpers.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 02:33:15 -05:00
gib ba1624eb9e README: how to run and operate the gateway 2026-11-01 02:12:53 -05:00
gib 6645fc9150 Gateway container, compose file for server-gib, and Gitea CI with deploy
Gateway / check (push) Successful in 11s
Gateway / image (push) Successful in 45s
2026-11-01 02:10:50 -05:00
gib 6ca098b701 Gateway: watch API, pairing, notifications, APNs sender, CLI, tests 2026-11-01 02:09:18 -05:00
gib 972f6e4be5 Gateway: T3 RPC client, host connection, awareness port, storage, API contract 2026-11-01 02:04:16 -05:00
gib 0fd556e313 Add T3 protocol reference and implementation plan 2026-11-01 01:50:02 -05:00
gib e7f5b7e45b Add three watch UI mock directions 2026-11-01 01:45:04 -05:00
gib e79eaf43aa Start WristCode: README, license, layout 2026-11-01 01:45:04 -05:00