Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 38 additions & 0 deletions .fleet/design-review-ios.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"$schema": "fleet.design-review.v1",
"version": 1,
"project": "Setline native iOS",
"target": "ios/",
"mode": "preserve",
"register": "product",
"context": {
"product": "PRODUCT.md",
"design": "DESIGN.md"
},
"direction": {
"references": ["Existing Setline identity", "Apple Fitness workout legibility", "Editorial sports scoreboards"],
"probes": [],
"selected": "Scoreboard Split",
"approval": "not-required",
"before": "artifacts/design/before.png"
},
"evidence": {
"screenshots": [
{"width": 390, "path": "ios/artifacts/simulator/today.png"},
{"width": 390, "path": "ios/artifacts/simulator/workout-player.png"},
{"width": 390, "path": "ios/artifacts/simulator/rest-timer.png"},
{"width": 390, "path": "ios/artifacts/simulator/plan.png"},
{"width": 390, "path": "ios/artifacts/simulator/history.png"},
{"width": 390, "path": "ios/artifacts/simulator/accessibility-xl.png"}
],
"projectCheck": {"command": "cd ios && ./scripts/check.sh", "status": "pass"},
"critique": {"score": 36, "maximum": 40},
"audit": {"score": 17, "maximum": 20},
"unresolved": {"p0": 0, "p1": 0},
"detector": {"posture": "advisory", "findings": []}
},
"ownerFeedback": {
"decision": "delegated",
"note": "Owner explicitly required super beautiful UI across every application and delegated the native visual direction."
}
}
11 changes: 11 additions & 0 deletions PROJECT_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ social features, meal/recovery tracking, sensors, Apple Health, and Apple Watch.

## Timeline

- 2026-08-11 — prepared the first native SwiftUI iPhone beta with complete
local-first workout execution, planning, history, data transfer,
accessibility, simulator coverage, App Store metadata, and a personal-team
signed archive path; native account synchronization remains tracked
separately.
- 2026-07-31 — replaced static progress examples with recorded-history
analytics for exercises, workouts, and represented programme weeks, including
bounded trends, honest legacy/empty boundaries, and explicit measurement
Expand Down Expand Up @@ -72,6 +77,8 @@ social features, meal/recovery tracking, sensors, Apple Health, and Apple Watch.

## Products

- `ios/` — native SwiftUI iPhone beta for local-first workout execution;
App Store Connect/TestFlight transport remains manual.
- Repository root — installable mobile-first Setline web app.
- [Public GitHub repository](https://github.com/Significant-Hobbies/setline) —
canonical source, product planning, and issue owner.
Expand All @@ -82,6 +89,10 @@ social features, meal/recovery tracking, sensors, Apple Health, and Apple Watch.

## Features (shipped)

- Native iPhone workout player with authored-order snapshots, activity-specific
recording, drop segments, skips, session-only extras, deferrals,
timestamp-derived rest, relaunch recovery, planning, history, progression,
data transfer, accessibility, simulator tests, and personal-team archiving.
- Public editorial product changelog at `/changelog`.
- Dated seven-day schedule for the supplied 12-week strength, cardio, and
mobility programme.
Expand Down
33 changes: 33 additions & 0 deletions ios/NATIVE_AUDIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Setline Native Quality Audit

Audit target: iPhone simulator build of the native SwiftUI application.

## Score

| Category | Score | Notes |
| --- | ---: | --- |
| Accessibility | 3/4 | Dynamic Type layouts, semantic controls, readable contrast, and non-color state cues are present. Final VoiceOver traversal should be repeated on physical hardware. |
| Performance | 4/4 | Local-first model, small view hierarchy, timestamp-derived timers, and no polling or blocking network work. |
| Appearance | 3/4 | Deliberate high-contrast Scoreboard Split identity with coherent hierarchy and native materials. The intentional light presentation does not yet expose an alternate dark palette. |
| Platform conventions | 4/4 | SwiftUI navigation, tabs, sheets, menus, confirmations, native text styles, and system feedback conventions. |
| Adaptivity | 3/4 | Compact iPhone and accessibility text sizes are stable without horizontal clipping. Dedicated iPad composition is outside this submission scope. |

**Total: 17/20 — Good**

## Positive findings

- The workout player keeps the current set, actuals, deviations, and primary action legible at a glance.
- Timers derive from wall-clock timestamps, so backgrounding and relaunching do not create drift.
- The programme grid remains readable at compact widths and the tab bar stays reachable at accessibility sizes.
- Empty, destructive, transfer, and recovery paths use explicit native presentation rather than silent state changes.

## Residual findings

- P0: 0
- P1: 0
- P2: 2 — physical-device VoiceOver pass; optional dark appearance after initial release.
- P3: 0

## Evidence

Screenshots are stored in `artifacts/simulator/`. Automated coverage and the Release simulator build are run by `./scripts/check.sh`; the personal-team archive is created by `./scripts/archive.sh` without upload.
27 changes: 27 additions & 0 deletions ios/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Setline for iPhone

Native SwiftUI workout execution for iOS 17 and later. The app uses Apple frameworks only and keeps active workouts usable offline.

## Local checks

```bash
./scripts/check.sh
```

The destination can be overridden with `SETLINE_SIMULATOR_DESTINATION`.

## Personal-team archive

```bash
SETLINE_ARCHIVE_PATH=/private/tmp/Setline.xcarchive ./scripts/archive.sh
```

The archive script is locked to personal team `8F7LXHTJZR`, verifies the app signature, and intentionally contains no upload step.

## Device-only checks before submission

- Exercise the full workout flow one-handed on the smallest supported physical iPhone.
- Background the app for longer than one rest interval and confirm wall-clock recovery.
- Verify VoiceOver order and the largest Dynamic Type categories on hardware.
- Confirm account callback, Keychain persistence, airplane-mode recovery, and notification behavior once account sync is enabled.
- Confirm the final App Store icon, screenshots, support URL, privacy URL, age rating, and privacy answers in App Store Connect before any upload.
70 changes: 70 additions & 0 deletions ios/RELEASE_METADATA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Setline iOS release draft

This file is preparation only. No App Store Connect record has been created.

## Identity

- Name: Setline
- Bundle ID: `com.significanthobbies.setline`
- Version: `1.0.0`
- Build: `1`
- SKU: `setline-ios-1`
- Primary language: English (U.S.)
- Category: Health & Fitness
- Minimum iOS: 17.0
- Copyright: `2026 Sarthak Agrawal`
- License: Apple's standard EULA
- Content rights: all bundled copy, artwork, and sample programme content is owned or licensed for distribution

## Store copy

**Subtitle**
Follow every set precisely

**Promotional text**
Bring your authored programme into the gym, record what really happened, and keep every set usable offline.

**Description**
Setline is the execution layer for a programme you already trust. Start the planned workout, follow exercises and sets in their exact authored order, record weight, repetitions, timed work, cardio, mobility, and drop segments, and let timestamp-based rest timing survive interruptions.

Explicit session changes stay explicit: skip a set, do it later, or add an extra without silently rewriting the next workout. History keeps planned and recorded values separate, while deterministic progression suggestions require your approval.

Active workouts are device-first and remain usable without a connection. Export or preview-replace the complete local state whenever you choose.

**Keywords**
workout,training,strength,gym,sets,reps,rest timer,programme,fitness log

## URLs

- Support: `https://setline.significanthobbies.com`
- Privacy: `https://setline.significanthobbies.com/privacy`

## Privacy draft

- Tracking: none
- Third-party advertising: none
- Local workout and profile data: remains on device in device-only mode
- App Store Connect answer for this build: “No, we do not collect data from this app”
- IDFA: not used

## Age rating draft

- Made for Kids: No
- Violence, sexual content, profanity, drugs, alcohol, gambling, horror: None
- Medical or treatment claims: None
- User-generated content, messaging, unrestricted web access: None

Confirm the rating produced by App Store Connect's current questionnaire.

## Review notes draft

Setline does not generate or prescribe a training programme. The bundled sample demonstrates exact-order workout playback. All active workout actions work offline. No HealthKit or sensor data is requested.

## Screenshots and release

- iPhone 6.9-inch portrait: `today.png`, `plan.png`, `workout-player.png`, `rest-timer.png`, and `history.png`
- Each store image is `1206 × 2622`, an accepted 6.9-inch screenshot size
- Accessibility evidence is retained separately and is not part of the default store sequence
- iPad screenshots: not required; the target is iPhone only
- App previews: omit for version 1.0
- Release: manual
Loading
Loading