PrompTugal for iOS

Checkpoint 2, 03:45 UTC: platform, release and the site are on dev

Three branches are merged: platform (iOS 18, the new project layout, CI, widget, App Intents and the vault package), release (unsigned builds of every dev push, TestFlight waiting only for secrets) and the editor's site work. Vault, team and design each have 14 to 22 commits waiting to merge, all green on their own CI. Collaboration and AI has not pushed yet.

Written by the editor from the status pages on each night/* branch and git log at 03:45 UTC. Times are UTC, which is Lisbon time.

On dev now

Releases v0.1.4 to v0.1.10 went out between 02:52 and 03:40.

  • Platform (merged 03:10 and 03:40). The app targets iOS 18.0. The project uses folder-synchronized groups, so a session adds a Swift file to its folder and pushes, with no project-file edit. A unit test target runs on an iPhone and an iPad simulator. The shared HTTPClient logs every request for the debug panel. Build info (commit, branch, site release) is compiled in. Also: entitlements (App Group, webcredentials and applinks for promptugal.news), a local StoreKit configuration, a "Now and next" widget, an App Intents extension ("Next session") and the vault package linked into the app. Default shortcuts are now promptugal.news and the team site only.
  • Release (merged 03:24). ios-release.yml builds an unsigned archive, .ipa and simulator app on every push to dev that touches the app. On the platform project: minimum iOS 18.0, built for iPhone and iPad, app 1.7 MB, .ipa 892 KB. The TestFlight job runs and skips cleanly with "secret ASC_KEY_ID missing". The setup checklist for Dinis is release-setup.
  • Editor. The site presents PrompTugal as the team's internal app in beta, with readers and teams as where it is going. Feature labels follow the code. The push dashboard reads each session's own branch. The CI page shows the latest iOS build. The screens page lists screens waiting on branches.

Waiting to merge

SessionCommits not on devWhere it is
Swift vault14The Swift reader and writer are tested on macOS CI over throwaway vaults written by sgit 0.27, and sgit reads back what Swift wrote. Every object is checked against its hash before decryption; commit signatures are verified; the cache holds ciphertext only. The passkey door is ported from the website. App code for Face ID, Secure Enclave key wrapping and passkey unlock is in PrompTugal/Vault/ and type-checks; it is not in the app target yet.
Team features14One schedule on the website's format, the website-to-app bridge, reminders, team data with an offline cache, a day planner with clashes and walking time, the native top-up with StoreKit 2 (the Stripe top-up is hidden in the app), Add to Calendar and two App Intents. App build green.
Design and native UI22Design system, the app shell (iPad sidebar with ten sections, iPhone tabs), five native dashboards (My day, The team, Agents with the wake grid redrawn natively, Briefed, Newsroom), the news in native form with a graph explorer of 1,688 nodes, native observability charts, and the debug panels. Green on CI. Waiting for the root view to switch to the shell and for team's merge.
Collaboration and AIno branch yetNot pushed.

Found tonight, and fixed in the contracts

Checked against the live promptugal.news code:

  • A schedule pick's at is an ISO 8601 string, not Unix milliseconds.
  • A pick's id is the bare event slug (ai-doom-or-boom), not events/<slug>.
  • The website keeps picks in the vault at apps/agenda/picks.json, merged as a union by id.
  • The places file is /api/v1/places.json (83 places, no coordinates), so walking times are estimates.
  • The team site publishes JSON only for me.json and each person's command centre. Wakes, reports, pulse, log and meetings have Markdown twins, which the app parses.

Decisions waiting for Dinis

  • Removing a pick. Sync with the vault is union-only, like the website, so a pick removed in the app comes back from the vault and stays on other devices. Fine for the summit. The fix is a list of removals in agenda/picks, which the website must also honour.
  • TestFlight secrets and the steps in the release checklist.
  • A contact address for "talk to us" on the plans page.

To watch next hour

  • Merges of team, vault and design. Feature labels on the site switch to "In the beta" as their screens land with real views.
  • The app's root view moving to the shell.
  • Collaboration and AI: first push.

All checkpoints