docs: the plan for an ios build, phased against the route Curated walked

Curated reached a device in eight commits. Five defects stand between this
tree and the same place -- the native chain not configuring on a mac, Room
with no way to construct the database on native, a cancellation Swift cannot
see, two separate ios link failures, and CIO having no TLS on kotlin/native.
Each is diagnosed upstream, so the work is porting a known answer.

Three places this tree cannot simply cherry-pick: the test-name sweep has to
run over Mantra's own 84 names in 35 files (ten of Curated's 38 files are
from lines Mantra never pulled, and Mantra has eight Curated does not); the
fork's "linux cinterop" fix is `if (!currentOs.isLinux)` and is really the
fix that makes a mac work; and `@ConstructedBy` changes what Room's KSP
generates for every target, not only the one it unblocks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kgothatso NgakoandClaude Opus 5 committed 2026-10-02 23:37:27 +02:00
1 parent 5875655a32
commit a998cf20a9
2 files changed
+463

No files matched your search

+1
View File
@@ -21,6 +21,7 @@ silent, or a decision that looked arbitrary and was not.
| [npub-sign-in.md](./npub-sign-in.md) | signing in with only a public key — what a key that cannot sign can still see here, why that is a preview rather than a browser, and the four decisions the word settles |
| [multiple-profiles.md](./multiple-profiles.md) | several profiles on one device — why a profile is a credential and a seed is a wallet attached to one, why a switch is a restart rather than a swap, the two entrances the app lacks, and the inbox a switch would silently lose |
| [jvm-target.md](./jvm-target.md) | what desktop support cost, phased — why the native chain was already done, why an empty source set in our phoenix fork was the real blocker, and why DAO tests need none of it |
| [ios-build.md](./ios-build.md) | building for an iPhone, following the route the Curated fork walked — the five defects between here and a device, why the fork's "linux cinterop" fix is the one that makes a mac work, and the one annotation that unblocks native by changing every other target |
| [npub-profile-preview.md](./npub-profile-preview.md) | showing the person before a direct message is started from a pasted npub — why the preview is a screen keyed by public key, what "found" means when a row can be a placeholder, and the phase that makes the button honest about a key package that never comes |
| [chapter-uploads.md](./chapter-uploads.md) | picking files off a device and having the group sign each one in as a chapter — why N files can never be one signing session, and the four things the single-chapter path gets away with |
| [project-feature.md](./project-feature.md) | bringing the server schema's `project` and its two join models into a group that has no accounts and no server — a creator tag of its own and owners as a signed set of `p` tags, the role the parser has to be told about or every project lands ownerless, why a membership is its own signed event rather than a list, and the kind band that is already double-booked |