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]>
This commit is contained in:
gibandClaude Opus 5.5 committed 2026-11-01 02:33:15 -05:00
1 parent ba1624eb9e
commit bdfb79b891
19 files changed
+2413

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
name: WristCode
options:
bundleIdPrefix: org.gbrown
createIntermediateGroups: true
deploymentTarget:
watchOS: "27.0"
settings:
base:
DEVELOPMENT_TEAM: GQJNM5YK2M
CODE_SIGN_STYLE: Automatic
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
MARKETING_VERSION: "0.1.0"
CURRENT_PROJECT_VERSION: "1"
targets:
WristCode:
type: application
platform: watchOS
sources:
- WristCode
info:
path: WristCode/Info.plist
properties:
CFBundleDisplayName: WristCode
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
WKApplication: true
# Watch only, with no iPhone companion. watchOS refuses to install an app that sets both
# this and WKRunsIndependentlyOfCompanionApp, and requires WKCompanionAppBundleIdentifier
# when WKRunsIndependentlyOfCompanionApp is set without WKWatchOnly.
WKWatchOnly: true
entitlements:
path: WristCode/WristCode.entitlements
properties:
aps-environment: development
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: org.gbrown.wristcode
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
WristCodeTests:
type: bundle.unit-test
platform: watchOS
sources:
- WristCodeTests
dependencies:
- target: WristCode
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: org.gbrown.wristcode.tests
GENERATE_INFOPLIST_FILE: YES
TEST_HOST: $(BUILT_PRODUCTS_DIR)/WristCode.app/WristCode
BUNDLE_LOADER: $(TEST_HOST)
schemes:
WristCode:
build:
targets:
WristCode: all
WristCodeTests: [test]
run:
config: Debug
test:
config: Debug
targets:
- WristCodeTests
archive:
config: Release