Repository navigation
Conversation
Pin swift-sdk to the head of its Calimero 1.0 branch (35148e4, PR #85) and adapt the iOS app: passkey sign-in and account creation with a node-URL path (mock attestation for merod local), orgs/teams/app instances in place of namespaces/groups/contexts, org invite tokens in invitation links, pending releases and upgrades approved on the node's consent page in the system browser, and the typed 1.0 errors in words. Tests and README updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Calimero 1.0 branch moved by one additive fix (the consent confirmation code); no app change needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SignClient (Swift, Kotlin) calls the component ABI from #726: camelCase methods, arguments and answers, u64s as decimal strings, explicit nulls, setup() in place of init args; ContractSurfaceTests pin it to the ABI. - The web's layout: agreements are app instances in the workspace org, the signature library is an account-owned instance (mero-sign:library) set up private; joined = on the roster. - Blobs through the signed-in client with content types (uploadBlob, blobContent); timestamps in milliseconds. - Invitations: OrgInvitation links, the web's ?invite= links and bare tokens. - Android moves off 0.x: cluster by name or node URL, passkey sign-in or create account, development node with a soft passkey, approvals card with the confirmation code first. iOS: swift-sdk 37c09f3, cluster names, confirmation code before the consent page. - kotlin-sdk 61b65e9 (kotlin-sdk#68). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
iOS takes the swift-sdk release (exactVersion 0.5.0) instead of the swift-sdk#85 head; Android's kotlin-sdk.ref moves to the v0.2.0 tag commit (still a composite build: the release is on GitHub Packages, not Maven Central). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves Mero Sign's native apps (
apps/mero-sign/mobile/iosandapps/mero-sign/mobile/android) to Calimero core 1.0: sealed channel to an attested node, passkeys, orgs and app instances, org invites, approvals on the node's consent page. Both call the contract exactly as the web port #726 declares it (logic/res/abi.json) and use the web's layout, so a phone and a browser on the same account see the same agreements and share one signature library. Same screens, flows and copy on both platforms.Mobile only: nothing outside
apps/mero-sign/mobile/**. Based on main, not on #726.SDK pins
37c09f3f96e7d98440f6618eef8a0e83ddee8ebd(ios/project.yml,ios/SignCore/Package.swift,Package.resolved).61b65e9c0c87db8fbb2d3b2ce827603b0c84d5f9(android/kotlin-sdk.ref, composite build).Both pins move to the SDK PRs' merge commits once those land.
Contract (from #726)
SignClient(Swift and Kotlin) is written from the component ABI, since no codegen targets one yet. Its Swift and Kotlin surface is the same as before.noneis sent as an explicitnull.setup(isPrivate, contextName)replaces the init arguments.ContractSurfaceTests(Swift) andContractSurfaceTest(Kotlin) check every method name, parameter set, view/call split and the wire encoding against the ABI.Layout (the web's
app/src/lib/agreements.ts)ConflictandForbidden(a guest) are fine; you can still read it. The agreement is then recorded in your library withjoinSharedContext. "Joined" now means you are on the roster.mero-sign:library, owned by the account and in no org, set up withsetup(true, "default"). This replaces the 0.x "Personal" namespace marked by metadata, with its restricted subgroup.uploadBlob(app, bytes, contentType)(application/pdffor signed versions,image/pngfor signatures) andblobContent(app, id). The contract stores the hex id.Sign-in, invites, approvals (same on both)
merod local, mock attestation) uses a software passkey kept on the phone.OrgInvitationlinks, the web's own?invite=inv_…&agreement=<app id>links (pasted), and bareinv_…tokens. Redeeming the invite tells the app which workspace it belongs to.mero-sign://consent.APP_ERRORcodes.ConflictonsignDocumentreloads the document and asks you to sign the new version.PlatformPasskeyis set onMeroAppSession.passkeyinonCreateand cleared inonDestroy. The Gradle properties are nowmeroCluster,meroDevNodeUrlandmeroConsentCallback.Verification (build only, no simulator or emulator)
swift testinios/SignCorepasses 39 tests.xcodegen generate+xcodebuild build -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NOsucceeds../gradlew ktlintCheck detekt testDebugUnitTest lint assembleDebugpasses, with 23 unit tests.Gaps
1.0.0-rc.7answers409 NOT_SUPPORTEDon a component app's blob routes until core#4815 ships. Until then, signing and saving a signature fail with the node's message on rc.7.merod localwith a dev bundle (not a package) is not wired. The apps list and create instances by package.merod local.scripts/regenerate-client.shis removed because the codegen only targets v1 ABIs.🤖 Generated with Claude Code