A laptop in UTC+8 numbered its builds eight hours ahead of CI, so a CI upload of the same version within eight hours of a local one came out lower and would be refused.
A `mobile-v<x.y.z>` tag now ships both platforms at one version: the
Android APK to a draft release as before, and an iOS build to
TestFlight. iOS no longer depends on one machine signed in to Xcode.
- The version is tauri.conf.json's; a tag that disagrees with it fails
the run, so the repo always says what shipped. Set to 0.1.1, the
Android build already out.
- scripts/testflight.sh signs and uploads with an App Store Connect API
key when ASC_KEY_ID and ASC_ISSUER_ID are set, with a certificate
Apple keeps in the cloud. That needs an Admin key.
- A manual run builds both and uploads nothing.
`tauri ios init` fills the asset catalog with Tauri's placeholder icon,
so a regenerated gen/ shipped build 0.1.0.9 with the wrong icon. Copy
src-tauri/icons/ios over it on every run.
Claude-Session: https://claude.ai/code/session_01HVosmYyVSH3BrsLYx3tcSS
The phone can now hand a pane a photo or file, read what an agent changed,
answer its prompts with a tap, and keep its link across leaving a pane.
Gateway and protocol:
- `Open::Upload` puts a file (up to 20 MB) in the directory the desktop
keeps pasted images in, under a name a shell takes unquoted, and answers
with its path. Panes on this machine only for now.
- `Open::Diff` answers with the working tree's changes against HEAD and its
untracked files, for the directory a pane is in.
- Both are one-shot streams; an older gateway drops them unanswered, which
the client reports as "update tty7".
App:
- Attach button in the message box: the uploaded path goes into the draft.
- Changes sheet from a pane's menu: a block per file, lines coloured.
- Settings → Key bar: remove, reorder and add keys, from a catalog or
written out (`/compact\r`, `^C`), across pages; reset to the default.
- An agent's numbered choices show as buttons while it waits.
- Pinch to zoom, tap a link to open it, find in the scrollback, a Copy
button for text a program copies (OSC 52), and an optional Face ID lock.
- Swipe from the left edge to go back; the iOS WebView has no page stack.
- One workspace at a time on a machine, picked from a row of chips.
- Agent avatars in their own colours.
- Each screen's watch is its own: a second watch no longer ends the first,
which showed as "Can't reach" and a reconnect after leaving a pane.
- Dialing no longer holds the session lock, so Forget works while a
machine is still connecting; its confirmation is an in-app sheet, since
`window.confirm` shows nothing in the iOS WebView.
- iOS 15 minimum, as App Store Connect will require from April 2027.
- `scripts/testflight.sh` archives, signs for the App Store at export (the
team has no devices for a development profile) and uploads.
Co-authored-by: Claude <noreply@anthropic.com>