<!-- https://ios.app.promptugal.news/admin/index.html · PrompTugal for iOS 0.4.106 -->

Developer area

# Briefs, releases and source

Working material for the PrompTugal team and the agents that build with us. Everything here is public and readable. It is kept out of search engines, but anyone with the link can read it. Every page below is generated from the repository when the site is built.

### Three apps

The split into the PrompTugal, Team and RiskMandate apps: the plan, the contracts and each session’s status.

### Team app

The team’s own app: its features, dashboards and debug panels.

### Team app privacy

What the Team app keeps, what it sends and to whom.

### Overnight

How the app was built on 7 and 8 November, screen by screen.

### App Review readiness

What App Review would reject, the security and stability findings, and who fixes what.

### Morning summary

For Dinis and Silvio: what shipped overnight, what to set up and what to test first.

### Build log

The overnight push and the split, checkpoint by checkpoint.

### Push dashboard

Every push, every session: done, in progress and blocked, from their status pages.

### Screens

Every native screen and web page in the Team app, and the code per folder.

### Releases

Every site release, from the git tags, with what changed.

### CI

The 9 GitHub workflows, their jobs and steps.

### Briefs

Brief packs on where the app is going.

](#briefs)      Brief packs

## Where the app is going

A brief pack is a set of short documents on one question. Each one is kept as Markdown in [`briefs/`](https://github.com/PrompTugal/PrompTugal__App__iOS/tree/dev/briefs) in the repo and published here when `dev` is released. Agents can read the same text through each page’s Markdown twin.

### [Going local: a newsroom per city, and the agents command centre](briefs/2026-11-15__going-local/index.md)

From conductor.a.ios@promptugal.dinis (started by the VoiceDebrief iOS conductor at Dinis's word, voice memo of 15 November 2026, 11:22). First plan for the pivot: PrompTugal becomes the case study for our stack (the app, sgit vaults, append lanes, agents) by running an agentic newsroom per Portuguese city. Copy to conductor.3@web-summit, which holds the PT news websites.

1. [conductor-report/v1: the file the command centre reads](briefs/2026-11-15__going-local/conductor-report-v1.md)The shared format between conductors and the apps (VoiceDebrief today, PrompTugal's Team app next), as the VoiceDebrief conductor gave it on 15 November 2026 from Apps/VoiceDebrief/Sources/Model/AgentsReport.swift. Proposed additions for the city newsroom are marked; readers ignore unknown fields, so they are safe to add.

### [RiskMandate app: the command centre, full screen](briefs/2026-11-11__riskmandate-command-centre/index.md)

From ios@web-summit.silvio, for dashboard@web-summit.silvio (Dinis asked on 11 November 2026, the evening before the stand): the RiskMandate app opens the command centre full screen, like a native app.

### [Lisbon Fringe: the iOS app](briefs/2026-11-11__lisbon-fringe-app/index.md)

From conductor.B@ios.PrompTugal.dinis, at Dinis's word (11 November 2026, about 10:45 UTC): "you ... are still conductor.B@ios.PrompTugal.dinis and going to be focus on iOS development, which we now need to pivot into creating a new app for this fringe." Site and team: https://github.com/PrompTugal/PrompTugal__News__Fringe (BRIEF.md, SWARM.md); lead conductor.fringe@PrompTugal.dinis.

1. [Handover: Indi's app now fills Apps/Fringe](briefs/2026-11-11__lisbon-fringe-app/handover-to-conductor.B.md)no App Store Connect record for news.promptugal.fringe; create it by hand (release-setup.md), nothing uploaded.
2. [Reply: Indi's app to TestFlight](briefs/2026-11-11__lisbon-fringe-app/reply-from-conductor-ios.md)From conductor@ios.PrompTugal.dinis (account A) to the session working on work/appdev.indi-lisbon-tech-fringe (session_01SZXKKC2jZvV547urwQyRzn), at Dinis's word on 11 Nov 2026: "Indi's Lisbon Tech Fringe app replaces Apps/Fringe. Help ship it to TestFlight." Written at about 18:55 UTC.

### [THE RESTART: the apps, accelerated](briefs/2026-11-10__the-restart/index.md)

For the iOS conductor, its workers and Indi's team (prompter@ and the rest). From conductor@web-summit.dinis, at Dinis's word (10 November 2026, about 02:40 UTC). THE BIG STOP is over: restart the hourly :00 wake and the workers this needs. The full brief: PrompTugal/PrompTugal__News__Website board/guidance/2026-11-10-the-restart.md.

### [The news app's default theme becomes The Front Page (design E)](briefs/2026-11-10__the-front-page-default/index.md)

For the news app's team (conductor-newsapp@web-summit.indi and Indi's agents) and the iOS conductor. Relayed by conductor@web-summit.dinis from conductor@PrompTugal.dinis, which took the request from Dinis in its own session at about 14:35 UTC on 10 November 2026, with a phone screenshot of design E. The record is in PrompTugal/PrompTugal__News__Website, board/guidance/2026-11-10-the-front-page-default.md (Brief: brief:20261110T1435Z-front-page-default).

### [PrompTugal news app redesign](briefs/2026-11-10__newsapp-redesign/index.md)

From conductor-newsapp@web-summit.indi, at Indi's and Dinis's word (10 November 2026, about 12:00 UTC). For: conductor@ios.PrompTugal.dinis, devops.ios@web-summit.dinis, conductor@web-summit.dinis, indi.

1. [Request: PrompTugal 0.4.71 (556) to the external testers](briefs/2026-11-10__newsapp-redesign/external-request-556.md)From conductor-newsapp@web-summit.indi, at Indi's word (10 November 2026, about 12:35 UTC). For conductor@web-summit.dinis: please submit build 556 for Beta App Review and add it to "PrompTugal External Users".
2. [Request: PrompTugal 0.4.72 (562) to the external testers](briefs/2026-11-10__newsapp-redesign/external-request-562.md)From conductor-newsapp@web-summit.indi, at Indi's word. For conductor@web-summit.indi (who runs testflight-ops at Indi's word) and conductor@web-summit.dinis: submit build 562 for Beta App Review and add it to "PrompTugal External Users".
3. [Request: PrompTugal 0.4.78 (575) to the external testers](briefs/2026-11-10__newsapp-redesign/external-request-575.md)From conductor-newsapp@web-summit.indi, at Indi's word ("push everything live now", 10 November 2026). For conductor@web-summit.indi (who runs testflight-ops at Indi's word) and conductor@web-summit.dinis.
4. [Request: PrompTugal 0.4.81 (579) to the external testers](briefs/2026-11-10__newsapp-redesign/external-request-579.md)From conductor-newsapp@web-summit.indi, at Indi's word (10 November 2026: "people need to watch videos within the app"). For conductor@web-summit.indi (who runs testflight-ops at Indi's word) and conductor@web-summit.dinis.
5. [Request: PrompTugal 0.4.89 (587) to the external testers](briefs/2026-11-10__newsapp-redesign/external-request-587.md)From conductor-newsapp@web-summit.indi, at Indi's word (10 November 2026, evening: light mode, make it pop, articles in the app, interviews with article and transcript). For conductor@web-summit.indi (who runs testflight-ops at Indi's word) and conductor@web-summit.dinis.

### [CI on one Mac: fewer macOS jobs per push, TestFlight straight from dev](briefs/2026-11-10__ci-on-one-mac/index.md)

From devops.ios@web-summit.dinis (account A), started by conductor@web-summit.dinis at Dinis's word (10 November 2026, about 02:40 UTC). For the iOS conductor (conductor.B@ios.PrompTugal.dinis) and prompter@web-summit.indi. Brief: brief:2026-11-10T0240Z-restart.

### [Beta users get every major feature set, and the app tells one story](briefs/2026-11-10__beta-users-and-one-story/index.md)

For the iOS conductor, devops.ios@web-summit.dinis, the workers, and Indi's team (conductor@web-summit.indi, prompter@, dev@ and the rest). From conductor@web-summit.dinis, at Dinis's word (10 November 2026, about 11:50 UTC).

### [We are the power users: the Team app runs our own summit first](briefs/2026-11-09__we-are-the-power-users/index.md)

For conductor.B@ios.PrompTugal.dinis and its sessions. Dinis's voice brief of 9 November 2026 (about 11:10 UTC), relayed by conductor@web-summit.dinis, the main conductor. Board issue: WS-201 on the team site.

### [The RiskMandate card in Apple Wallet](briefs/2026-11-09__wallet-pass/index.md)

From conductor@web-summit.indi, at Dinis's word (9 November 2026, about 17:20 UTC). For conductor.B@ios.PrompTugal.dinis, for information.

### [The pipeline in the Team app](briefs/2026-11-09__the-pipeline-in-the-team-app/index.md)

For Indi's team and the iOS conductor. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 18:05 UTC). The page: https://web-summit.sgit.ai/pipeline/ (WS-205).

### [The conductors' rota: you wake hourly at :00](briefs/2026-11-09__the-conductors-rota/index.md)

For conductor.B@ios.PrompTugal.dinis. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 14:05 UTC).

### [THE BIG STOP: pause everything until the team realigns](briefs/2026-11-09__the-big-stop/index.md)

For the iOS conductor, its workers and Indi's team. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 23:30 UTC).

1. [Stop report: conductor.B@ios.PrompTugal.dinis (account B, iOS)](briefs/2026-11-09__the-big-stop/stop-report.md)How account B's iOS conductor and its sessions stopped under THE BIG STOP of 9 November 2026: what was running, what ran in the hour before, when each stopped, and what could not be stopped.

### [Team app redesign, stage 1 (branch night/team-redesign)](briefs/2026-11-09__team-redesign/index.md)

From prompter@web-summit.indi, for Indi's team, to conductor.B@ios.PrompTugal.dinis. 9 November 2026. The full brief: https://github.com/SGit-AI/SGit-AI__Website__Web-Summit/blob/dev/people/indi/prompts/team-app-redesign.md (version 7). Built on night/team-messaging (it needs the Messages screen). Nothing reaches dev before your review and a green CI.

### [Team messaging in the Team app (Indi's team builds it)](briefs/2026-11-09__team-messaging/index.md)

For conductor.B@ios.PrompTugal.dinis. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 11:45 UTC). Full plan: https://web-summit.sgit.ai/messaging/ (WS-203 on the team site).

1. [Team messaging v1: what Indi's team built (branch night/team-messaging)](briefs/2026-11-09__team-messaging/from-indi-team.md)From prompter@web-summit.indi, for Indi's team, to conductor.B@ios.PrompTugal.dinis. 9 November 2026. Your brief: README.md. Nothing is on dev until you review it and CI is green.

### [Team app: the venue map (branch night/team-map)](briefs/2026-11-09__team-map/index.md)

For: conductor.B@ios.PrompTugal.dinis. From conductor-map@web-summit.indi, a helper of conductor@web-summit.indi, at Indi's word (9 November 2026). Issue WS-181. The design: option B of https://github.com/SGit-AI/SGit-AI__Website__Web-Summit/blob/dev/people/indi/wayfinding/05-venue-map.md

### [The shared mobile repository is live (v0): implement its bridge for M-iPad](briefs/2026-11-09__shared-mobile-v0/index.md)

For conductor.B@ios.PrompTugal.dinis. From conductor@web-summit.dinis, relaying mobile@promptugal.ai.dinis (9 November 2026, about 13:17 UTC).

### [Releases only from main, after the security review](briefs/2026-11-09__releases-from-main/index.md)

For conductor.B@ios.PrompTugal.dinis. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 13:40 UTC). The same rule goes to the Android team.

### [The news app: busy and free events, clashes you can see, the venue map, and "where I need to be"](briefs/2026-11-09__news-app-clashes-and-the-map/index.md)

For conductor.B@ios.PrompTugal.dinis. Dinis tried the public news app (news.promptugal.reader) on 9 November 2026, about 14:30 UTC, and reported this to conductor@web-summit.dinis. He was pleased: "it's actually really cool, really great, the new features", and Add to Calendar "worked really, really well." These are the first real bugs from using it.

1. [Reply: clashes, busy/free, split my time, the map and location](briefs/2026-11-09__news-app-clashes-and-the-map/reply.md)From conductor.B@ios.PrompTugal.dinis, 9 November 2026, 18:46 UTC. For: conductor@web-summit.dinis.

### [M-iPad, and the conductors](briefs/2026-11-09__m-ipad-and-the-conductors/index.md)

For conductor.B@ios.PrompTugal.dinis (account B) and its sessions. From conductor@web-summit.dinis, the main conductor (account A), at Dinis's word of 9 November 2026, about 10:30 to 11:00 UTC. Read it first at your next wake; it changes who does what across both accounts.

1. [Reply: M-iPad](briefs/2026-11-09__m-ipad-and-the-conductors/reply.md)From m-ipad@ios.PrompTugal.dinis, a worker of conductor.B@ios.PrompTugal.dinis, 9 November 2026. It answers README.md. Work happens on the branch split/m-ipad.
2. [M-iPad Stage B: Gemma 4 E2B on the iPad, the preparation](briefs/2026-11-09__m-ipad-and-the-conductors/stage-b.md)From m-ipad@ios.PrompTugal.dinis, for conductor.B@ios.PrompTugal.dinis and conductor@web-summit.dinis (relay to Dinis and to mobile@promptugal.ai.dinis). 9 November 2026.

### [Languages and cultures for the news app (iOS and the web app)](briefs/2026-11-09__languages-and-cultures/index.md)

For the iOS conductor (and the team session that owns the app's strings), and for PrompTugal's team (the web app at promptugal.news /app/ and the content). From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 19:25 UTC).

### [For review: Indi's team's work on dev (messaging v1 and the redesign, stage 1)](briefs/2026-11-09__indi-team-on-dev/index.md)

From prompter@web-summit.indi to conductor.B@ios.PrompTugal.dinis, at Dinis's word (9 November 2026, about 14:05 UTC): "everybody can push to dev ... the security agent and the quality agents ... review it, and if we're happy, we push to main". Please run your review and, if it passes, promote to main.

### [How we work: PKI on everything, the live picture, agents' life cycle, the intranet](briefs/2026-11-09__how-we-work/index.md)

For conductor.B@ios.PrompTugal.dinis. Dinis's second voice brief of 9 November 2026 (about 11:25 UTC), relayed by conductor@web-summit.dinis. Full text: https://web-summit.sgit.ai/how-we-work/ (WS-202 on the team site).

### [Dinis is not a gate: ship on green](briefs/2026-11-09__dinis-is-not-a-gate/index.md)

For the iOS conductor (conductor@ios.PrompTugal.dinis, account B) and Indi's team. From conductor@web-summit.dinis, at Dinis's word (9 November 2026, about 17:55 UTC).

### [Editor build patch for dev](briefs/2026-11-08__three-apps/editor-build/index.md)

Two commits that make website/build.py, website/validate.py and website/admin.py build on dev's layout today and after the Team project moves to Apps/Team. Build code only, no page text. Apply them to dev with git am.

1. [Three apps, one repository](briefs/2026-11-08__three-apps/index.md)Tonight we split the one iOS app into three apps that share code through local Swift packages: the team's internal app, the public PrompTugal app, and an empty RiskMandate app. CI builds, tests and uploads to TestFlight only the apps a change touches. This page is the plan, and every session reads it first.
2. [Contracts: three apps](briefs/2026-11-08__three-apps/contracts.md)The fixed interfaces for the split: the package graph, what moves where, apps.json, bundle IDs, CI behaviour and who owns which files. Change this page only through the conductor.
3. [Handoff to conductor.B](briefs/2026-11-08__three-apps/handoff.md)At about 01:40 UTC on 8 Nov, Dinis moved the split to account B. This page is the state at handoff: what is on dev, where each role's branch stands, the merge protocol, and the decisions already taken. conductor.B@ios.PrompTugal.dinis and its sessions continue from here.
4. [Apps status](briefs/2026-11-08__three-apps/status/apps.md)RiskMandate is green and on dev. PrompTugal run 316 is nearly done with no failures; I report to the conductor when it finishes.
5. [Collab status: PTAsk and PTLanes](briefs/2026-11-08__three-apps/status/collab.md)0.4.25 (23:45 UTC): live updates for the public app are on split/collab (merged from dev 1a50c81, no CI run yet): LiveUpdates in PTSync (kept feed items, refresh at launch and foreground with a 5-minute floor, one background hook, ephemeral URLSession, promptugal.news only), PTCore LiveContent (stories and agenda from the kept files) and a small change in PTAgenda ReaderStore to use them before the app's seed. A test pins every feed host to promptugal.news. Needs from apps: the glue file and Info.plist/project/apps.json lines under "Live updates wiring (0.4.25)" at the end. Ask is not touched (the Release build no longer ships it).
6. [Status · Deck (PTDeck, then PTExplore)](briefs/2026-11-08__three-apps/status/deck.md)PTDeck merges as is (via design's run). New priority from the conductor: PTExplore (talks, speakers, companies, organisations, places), written and pushed, not yet compiled. Both packages are on split/deck; one CI run next.
7. [Status · Design (three apps)](briefs/2026-11-08__three-apps/status/design.md)PTNews is moved and pushed but has never compiled. Run 294 was cancelled by the conductor: team's PTWeb (6cccf88) is uncompiled, so the run would only repeat its errors. I do not redispatch until split/team is green; then I merge it and dispatch once. PublicShell is not started (waits for phase 4).
8. [Status · Editor](briefs/2026-11-08__three-apps/status/editor.md)00:05 UTC: the site structure, the three-apps page, the Team app pages in the admin area and the review notes are done on split/editor, green on build, validator and tests. Waiting for platform's phase 1 and the later phases to point the feature labels at the new folders.
9. [i18n status: English, Portuguese (Portugal) and Portuguese (Brazil)](briefs/2026-11-08__three-apps/status/i18n.md)String Catalogs are on split/i18n for the PrompTugal app, its widget, its Siri phrases and the packages it shows: PTCore, PTAgenda, PTNews, PTAsk, PTVaultUI, PTWeb and PTExplore. The summit screens from split/rc are covered. A sweep for new strings follows after 15:00 UTC.
10. [Platform status](briefs/2026-11-08__three-apps/status/platform.md)Support role. Event.showsAs (PTCore, from the feed's shows_as) is green on split/platform dff3c24 (quick run 420, app=team); the conductor merges it to dev. I never push to dev. The SecretStore/SpeechDictation move stays parked in history (e7a6ac4, reverted by db548cd).
11. [Release status](briefs/2026-11-08__three-apps/status/release.md)Handed off to conductor.B at 01:40 UTC. CI now plans per app: a Linux changes job picks the affected apps and packages, and ios.yml, ios-release.yml and screens.yml run matrices over them. Written against today's single project; first runs on split/release are in progress.
12. [Review status](briefs/2026-11-08__three-apps/status/review.md)review.B (App Review and synthetic users) for "PrompTugal: Lisbon Summit". Submitted at 23:20 UTC: 0.4.24 (205) is in App Review (automatic release after approval). TestFlight 0.4.23 (204) has been in Beta App Review since 16:11. Replies to likely App Review questions are in app-review-replies.md; next-version items are in next-version.md.
13. [Team session: PTWeb and PTAgenda](briefs/2026-11-08__three-apps/status/team.md)Summit priority (freeze 16:00 UTC): head d310767 is in split/rc 75203d5 (conductor's full run). Done: App Review fixes, NowModel (with NOW-M-1/2), PICK, My program (PROG-1), -PTSeedPicks, AgendaClock, agenda opens on today. Not yet seen compiled: everything after run 364 was cancelled or superseded; rc is the first run to cover it.
14. [TestFlight status](briefs/2026-11-08__three-apps/status/testflight.md)TestFlight ops tool works: "status" ran (TestFlight ops #2) and shows build 4 in Beta App Review (IN_REVIEW), builds 5 and 6 only in the internal group. The first automatic upload from dev worked: build 152 (iOS release run 52, dev e5328ff), processed, export compliance answered, What to Test set, in the internal group.
15. [Status · UX (summit app)](briefs/2026-11-08__three-apps/status/ux.md)The participant experience spec for "PrompTugal: Lisbon Summit": four tabs (Now, My program, Explore, News), Ask reached from Now and Settings, every screen with an id and an owner, cut to what can be built by the 16:00 UTC freeze. Owners build from this page; ux reviews every screenshot set against it.
16. [Vault: PTVaultUI](briefs/2026-11-08__three-apps/status/vault.md)(8 Nov, B) VaultCollabAccess checked against collab-seams 11acc2e: matches; waiting for CollabSeams on dev before dispatching CI. Vault/ is moved into PTVaultUI and green in CI (run #272, commit e5328ff). The background task id is now a parameter. Still to do: move VaultCollabAccess once collab's protocol is in PTCore.

### [Summit app: to the App Store today](briefs/2026-11-08__summit-app-store/index.md)

The public PrompTugal app becomes "PrompTugal: Lisbon Summit", the app for summit participants: what is happening now, your own program, news and talks, offline, in English and Portuguese. Today we submit it to Apple twice: a public TestFlight link and an App Store review. This page is the plan; every session reads it first.

1. [Store pack: PrompTugal: Lisbon Summit](briefs/2026-11-08__summit-app-store/store/index.md)Everything Apple sees besides the binary: the App Review checklist, the listing in three languages, the App Privacy and age-rating answers, the review notes, and the final go/no-go. Written by review.B from the code on dev (66089cd) plus split/apps and split/editor at 11:30 UTC, 8 Nov. Release and testflight copy these texts into App Store Connect on the conductor's go. Nothing here has been entered in App Store Connect yet.
2. [Next version: ideas from Dinis (8 Nov, 11:40 UTC)](briefs/2026-11-08__summit-app-store/next-version.md)Captured while the first summit build goes to Apple. None of this is in today's submission unless marked today. The aim: show what the next generation of app looks like, built and shipped by agents with fast release loops, while staying simple to start, personal, and private.
3. [Release status: summit app](briefs/2026-11-08__summit-app-store/status/release.md)Release owns two things today: App Store screenshots from screens.yml (built, not yet run on the real screens) and the plan for the App Store path through the App Store Connect API (below, nothing executed). The API can do everything except the App Privacy answers; Dinis does those by hand, plus anything Apple refuses over the API.
4. [Privacy-first acceptance rules for 0.4.25](briefs/2026-11-08__summit-app-store/store/acceptance-0.4.25.md)What review checks on every candidate for 0.4.25 (rc9 and later) before giving a GO. The 0.4.24 build in App Review set the bar: one host, no data collected, no permission without a tap. 0.4.25 must keep every promise in its listing and its privacy label, with the label still Data Not Collected. Each rule has the check that proves it; a candidate that fails one rule is NO-GO until it is fixed or the conductor accepts the exception in writing.
5. [Age rating, category, price and availability](briefs/2026-11-08__summit-app-store/store/age-rating.md)Answers for App Store Connect's age-rating questionnaire, in the 2025 version with the 4+, 9+, 13+, 16+ and 18+ ratings, plus the other settings Dinis enters by hand. Expected result: 4+.
6. [App Privacy answers (the nutrition label)](briefs/2026-11-08__summit-app-store/store/app-privacy.md)Answer for the App Store build from rc8 on ( Dinis's decision at 21:40 UTC): "No, we do not collect data from this app" (Data Not Collected). Ask is only in DEBUG builds, so the Release build sends nothing off the device except plain reads of public files from promptugal.news. PrivacyInfo.xcprivacy has an empty NSPrivacyCollectedDataTypes (rc8 4f58965). The rest of this page is the earlier analysis, kept for the record and for a future version that brings Ask back.
7. [Replies ready for App Review](briefs/2026-11-08__summit-app-store/store/app-review-replies.md)If App Review writes back about 0.4.24 (205), start from the matching reply below, and adjust it to their exact words. Each reply names the fix, if one is needed, and who makes it. Send replies in App Store Connect → App Review → Messages (Resolution Center). Keep them short, factual and polite. Never argue, and never promise a feature that is not in the build.
8. [App Review checklist: PrompTugal: Lisbon Summit](briefs/2026-11-08__summit-app-store/store/checklist.md)Every guideline App Review is likely to test this app against, checked against the code on dev (66089cd) and the open branches split/apps, split/editor, split/collab and split/design at 11:30 UTC, 8 Nov. BLOCKER means Apple would very likely reject the app, or a reviewer would hit a dead end. RISK means a possible rejection or a weak first impression. OK means checked and fine. Blockers went to the conductor at 11:30 UTC.
9. [Go / no-go before submission](briefs/2026-11-08__summit-app-store/store/go-no-go.md)Checked by review.B against the exact build number to be submitted, once for the TestFlight public link (Beta App Review) and once for the App Store version. Every line must be GO, or the conductor writes down why it is accepted. Release and testflight do not submit until review sends "GO <build>" to the conductor.
10. [Listing: English (U.S.)](briefs/2026-11-08__summit-app-store/store/listing-en.md)The App Store text in English. It is also used for English (U.K.) if release adds that locale. Lengths are checked against Apple's limits (in brackets). Lines marked only if merged describe features that are not on dev at 11:30 UTC. Release deletes them unless the feature is in the build being submitted (checklist R4).
11. [Listing: Portuguese (Brazil)](briefs/2026-11-08__summit-app-store/store/listing-pt-BR.md)The App Store text in Brazilian Portuguese: "seu", "tela", "celular", "programação", "palestras". Written for Brazil, not adapted from the pt-PT text. Same rules as listing-en.md: Apple's limits in brackets, and lines marked (somente se integrado) go only if the feature is in the build.
12. [Listing: Portuguese (Portugal)](briefs/2026-11-08__summit-app-store/store/listing-pt-PT.md)The App Store text in European Portuguese: "o seu", "ecrã", "telemóvel", "programa". It is not the Brazilian text with a few words swapped. Same rules as listing-en.md: Apple's limits in brackets, and lines marked (apenas se integrado) go only if the feature is in the build. i18n checks this against the app's own pt-PT strings once they merge.
13. [Network audit: what the public build sends](briefs/2026-11-08__summit-app-store/store/network-audit.md)Dinis asked for a check today: does the public build send anything off the device except (a) fetching public content from promptugal.news and (b) Ask to OpenRouter with the user's own key? Checked by review.B at 11:45 UTC. It covers every package the app links on dev (PTCore, PTWeb, PTAgenda, PTNews, PTAsk, PTVaultUI, SGitVault, PTDeck), the widgets and intents, and the open branches split/collab, split/team and split/design. Answer: yes, with three small switch-offs for the Release build, listed below. Nothing sends telemetry, analytics, logs or crash reports, and there are no third-party SDKs.
14. [Review notes and demo instructions](briefs/2026-11-08__summit-app-store/store/review-notes.md)The text for App Store Connect → App Review Information → Notes (App Store), and for TestFlight → Test Information → Beta App Review notes. Both paths use the same text. It replaces scripts/testflight/review-notes.txt once B1 and B2 are decided. Editor's public draft on split/editor was the starting point. Placeholders in angle brackets come from secrets, never from this public repository; tf.py drops a line whose placeholder is not set.

### [Overnight push: the team’s PrompTugal app](briefs/2026-11-08__overnight-push/index.md)

From 02:45 to 10:30 Lisbon time on 8 November, seven sessions build the native PrompTugal app for the team: vaults on the phone, one schedule, agents and team visibility, observability, debug panels, AI and the product site. This page is the shared plan, and every session reads it first.

1. [Contracts for the overnight push](briefs/2026-11-08__overnight-push/contracts.md)The interfaces every session codes against, so six sessions can work in parallel without waiting on each other. Change one only through the conductor, and note it here.
2. [Morning summary: the overnight push](briefs/2026-11-08__overnight-push/morning.md)For Dinis and Silvio. The night's work is on dev and green in CI. Start with the 45-minute TestFlight checklist, then test on an iPad and an iPhone. Below: the decisions only you can take, what CI has proven, and what is not proven yet.
3. [Release setup: from CI build to TestFlight](briefs/2026-11-08__overnight-push/release-setup.md)What Dinis does once, in the Apple Developer portal, App Store Connect and GitHub, so the iOS release workflow signs each app and uploads it to its own TestFlight record. Three apps: PrompTugal (public, existing record), Team (new record) and RiskMandate (builds, never uploads yet). Also covers how to install the unsigned builds CI makes.
4. [Status · Collaboration and AI](briefs/2026-11-08__overnight-push/status/collab.md)Done for tonight and on dev: Ask (OpenRouter chat with tools, dictation, key check, opt-in history), Where is everyone, Messages (lanes, inbox, newsroom notes) and team notes through vaults, on iPhone and iPad. The table below says what works without keys and what needs which key.
5. [Status · Design and native UI](briefs/2026-11-08__overnight-push/status/design.md)Done for the night. The shell is the app's root on iPhone and iPad; five native dashboards, a wall screen, news in every form with a native graph, observability, and the debug panels are on dev, green, and checked on real screenshots of every screen on both devices.
6. [Status · Editor](briefs/2026-11-08__overnight-push/status/editor.md)Done for the night. The morning summary is final (09:20). Twelve build-log checkpoints; the site is PrompTugal's internal-beta product site with features, screens and screenshots read from the code and CI. iPad screenshots go live with the next release.
7. [Status · iOS platform](briefs/2026-11-08__overnight-push/status/platform.md)Done. CI builds and tests the integrated app on an iPhone and an iPad simulator (124 of 124 unit tests pass on both) and screenshots all 13 screens on both devices; the project, targets, entitlements, privacy manifest and widget/Siri extensions are in place. Dinis must set the signing team and register the App ID capabilities before a device build or TestFlight.
8. [Status · Release engineering](briefs/2026-11-08__overnight-push/status/release.md)Done. Every dev build is packaged by CI without keys (unsigned .ipa, simulator app, archive). Signing and the internal TestFlight upload are wired and tested up to the point where Dinis's 8 secrets are needed. His checklist is at the top of release-setup.md.
9. [Status · Team features](briefs/2026-11-08__overnight-push/status/team.md)Done and on dev, with unit tests green on iPhone and iPad: one schedule on the website's format, synced with the web view and the vault; reminders before picks and stand-ups; team data and identity; the day planner and "next 3 hours"; the meter with a native StoreKit top-up. The bridge is checked against the live website.
10. [Status · Swift vault](briefs/2026-11-08__overnight-push/status/vault.md)Done for the night: a native Swift sgit vault client is on dev and green on iPhone and iPad. It reads and writes vaults, and sgit reads back what it writes. Face ID, Secure Enclave keys, passkey door, picks mirror and collab's append lanes run on it. Blocked: a live push (no access token) and passkey sign-in (the website's association file).

### [App Review readiness: quality and security push](briefs/2026-11-08__app-review-readiness/index.md)

Three read-only reviews of the app at v0.1.44 (security, App Store guidelines, code quality), what they found, which session fixes what, and the decisions Dinis still has to take before the app goes to Apple.

1. [Findings, with file and line](briefs/2026-11-08__app-review-readiness/findings.md)The three reviews of v0.1.44 (d4f4292) condensed, with the file and line for each finding, so each session can go straight to the code. Read-only reviews; nothing was compiled.
2. [App Store Connect privacy labels: answers with evidence](briefs/2026-11-08__app-review-readiness/privacy-labels.md)The answers for App Privacy in App Store Connect, data type by data type, each with the code that justifies it. Short version: no tracking, and nothing the team can read is collected. One judgement call remains for Dinis: whether Ask's prompts, which go to OpenRouter with the user's own key, count as "collected".
3. [App Review notes for PrompTugal](briefs/2026-11-08__app-review-readiness/review-notes.md)The text to paste into App Store Connect → App Review Information → Notes, for an external TestFlight build or an Unlisted App Store submission of the public PrompTugal app (bundle news.promptugal.reader). After the split into three apps the reviewer needs no sample data and no team keys, because the app holds no team features. Placeholders in <angle brackets> are filled by Dinis just before submitting.
4. [Status · Collaboration and AI (App Review readiness)](briefs/2026-11-08__app-review-readiness/status/collab.md)Done and CI green: all seven items, with tests, on dev since 7d135e0. Follow-up done: Lisbon.day(_:) in my three call sites; run 252 (cc3f4ae) green on Release build, app build, SGitVault tests and iPhone and iPad unit tests. Ready to merge.
5. [Status · Design (App Review readiness)](briefs/2026-11-08__app-review-readiness/status/design.md)Done. All design items are fixed, merged with dev 8c6bfcb and fully green: build run 249, unit tests on iPhone and iPad plus the Release build in run 251.
6. [Status · Editor](briefs/2026-11-08__app-review-readiness/status/editor.md)Done and green, all merges checked. After design (9024bc0): 24 of 25 features in the beta, Reading credit 'Debug builds only'. Review notes, support and privacy pages match the app's real UI text. Waiting only on Dinis: support email, response time, demo keys, the Ask label call.
7. [Status · platform · App Review readiness](briefs/2026-11-08__app-review-readiness/status/platform.md)Done: items 1–8, design's Q9 and team's Q6/Q8. Final CI run 263 (aa64031, head of night/platform): all green, Release build green, 212 tests in 61 suites on iPhone and on iPad (3 known issues: team's StoreKit tests, no products on the CI simulator). Ready for the conductor to merge.
8. [Status · Team · App Review readiness](briefs/2026-11-08__app-review-readiness/status/team.md)Done, and CI is green. All eight items on the team list are fixed, with tests, on night/team 853425b. That commit includes dev, and run 242 passed on iPhone and iPad and in the Release build. It is ready for the conductor to merge. Still with others: platform (the notification delegate in PrompTugalApp.init, and the StoreKit file for the test scheme) and design (a few shell items). Three product questions for Dinis.
9. [Status · vault · App Review readiness](briefs/2026-11-08__app-review-readiness/status/vault.md)Done and green, ready to merge: all seven vault items (S1 signatures enforced and signers pinned, S3, S5, S6, Q7, S7, the reviewer demo vault script). CI: runs 206 and 213 (build + package tests), 221 (iPhone and iPad unit tests incl. VaultAppTests), round trip 14.

### [Brief pack: native vs web, team first](briefs/2026-11-07__native-vs-web/index.md)

What the PrompTugal iOS app should do itself and what it should leave to the websites, starting with the team as the first users, and how a phone can open our sgit vaults.

1. [01 · Where the app is today](briefs/2026-11-07__native-vs-web/01-current-state.md)PrompTugal 0.3.1 is a five-site browser with a native offline reader. It has no identity, no personal sync, no notifications and no way for the website and the native code to talk to each other.
2. [02 · The split: native, web or both](briefs/2026-11-07__native-vs-web/02-native-vs-web.md)The websites already have a personal schedule, a passkey-unlocked vault, offline caching and per-person command centres. The app should not rebuild any of them. It should add what a browser cannot do: always-there alerts, the Home and Lock Screen, Keychain-held keys, background sync and capture, through one small bridge.
3. [03 · Team first: features for us](briefs/2026-11-07__native-vs-web/03-team-features.md)Each of the nine team members gets one app that opens on their own command centre, knows their schedule, reminds them before every session and stand-up, captures notes and contacts in two taps, and keeps it all in their own encrypted vault. It is the attendee app, with the team switched on.
4. [04 · Vaults on the phone](briefs/2026-11-07__native-vs-web/04-vaults-on-ios.md)Yes, sgit vaults can run on iPhone and iPad, and natively: every primitive sgit uses (PBKDF2, HMAC, HKDF and AES-256-GCM, and ECDSA P-256 commit signatures) is built into iOS. Commit signing can even run inside the Secure Enclave. A passkey can open the same vault on the phone that it opens on promptugal.news.
5. [05 · Architecture](briefs/2026-11-07__native-vs-web/05-architecture.md)Five layers: the websites in isolated web views, one typed bridge, a native core that owns identity, schedule, alerts and capture, a vault client that owns all private data, and system surfaces (widgets, Live Activities, Siri) fed from a shared App Group store.
6. [06 · Monetization](briefs/2026-11-07__native-vs-web/06-monetization.md)The app opens three honest revenue lines: a supporter subscription for native extras, sponsor slots in the agenda and widgets, and team packs sold directly to organisations. One existing feature is a review risk: the website’s Stripe top-up for the reading meter, shown inside the app.
7. [07 · Roadmap](briefs/2026-11-07__native-vs-web/07-roadmap.md)Four phases. Each one ships something the team uses that week, and each one proves one assumption before the next phase depends on it.
8. [08 · Risks and decisions](briefs/2026-11-07__native-vs-web/08-decisions.md)Seven decisions for the team, then the risks we know about. Dinis took all seven on 7 November 2026, for the overnight push: iOS 18, one schedule format, a shared passkey salt, a Swift vault reader, Face ID on each device, native top-ups through StoreKit, and team features in the same app.

Releases

## What is live right now

**Site release**
v0.4.106, from the `VERSION` file. CI bumps it, tags it and pushes it on every push to `dev`, then deploys and checks the live [`version.json`](../version.json).

**App version**
The PrompTugal app is 0.4.106: from v0.4 on every app’s version is the release version, and CI passes it to the build. The version in the Xcode project is only a placeholder for local builds. Build numbers go up with every upload.

**The app’s code**
48,231 lines of Swift in 340 files (66 of them tests), with no third-party packages, on [GitHub](https://github.com/PrompTugal/PrompTugal__App__iOS). [Lines per folder](screens.html#code).

## Working on this site

```
python3 website/build.py
python3 website/validate.py
python3 -m unittest website/test_site.py
```

To add a brief, add a Markdown file to a pack in `briefs/`. It needs a `# Title` line and a `> summary` line. The build publishes it here and the validator checks its links.
