Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .github/workflows/mobile-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ jobs:
if [ "$version" = "$tag" ]; then version="0.1.0"; fi
echo "tag=$tag" >> "$GITHUB_OUTPUT"
echo "version=$version" >> "$GITHUB_OUTPUT"
# An internal RC may already use the marketing version as its
# CFBundleVersion. Give each CI upload (including retries) a new
# build number, independently of the public app version.
if (( GITHUB_RUN_NUMBER < 1 || GITHUB_RUN_NUMBER > 9999 || GITHUB_RUN_ATTEMPT < 1 || GITHUB_RUN_ATTEMPT > 99 )); then
echo "Run identity exceeds Apple's numeric build-number fields" >&2
exit 1
fi
echo "build_number=${GITHUB_RUN_NUMBER}.${GITHUB_RUN_ATTEMPT}" >> "$GITHUB_OUTPUT"

- name: Check signing secrets
env:
Expand Down Expand Up @@ -129,7 +137,7 @@ jobs:
IOS_MOBILE_PROVISION: ${{ secrets.IOS_MOBILE_PROVISION }}
run: |
cargo tauri ios build --export-method app-store-connect \
--config "{\"version\": \"${{ steps.version.outputs.version }}\", \"bundle\": {\"iOS\": {\"developmentTeam\": \"$APPLE_DEVELOPMENT_TEAM\"}}}"
--config "{\"version\": \"${{ steps.version.outputs.version }}\", \"bundle\": {\"iOS\": {\"developmentTeam\": \"$APPLE_DEVELOPMENT_TEAM\", \"bundleVersion\": \"${{ steps.version.outputs.build_number }}\"}}}"

# When signing fails, say why in terms a person can act on: what the
# profile the CLI installed is for, and what the project ended up
Expand Down
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ resolver = "2"
# What `offdesk --version` and `offdesk-node --version` print. Bump this
# before tagging a v* release; the tag and the binaries should agree.
[workspace.package]
version = "0.20.2"
version = "0.20.3"

[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
Expand Down
77 changes: 77 additions & 0 deletions docs/releases/2026-09-07.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# September 2026 release preparation

Status: prepared for release builds; no release tags created by this change.
Runtime baseline: `c818164` (main after #444). Version and workflow changes
in this preparation do not change terminal behavior.

| Component | Previous public release | Prepared release | Tag |
| --- | --- | --- | --- |
| Hub, CLI and node | 0.20.2 | 0.20.3 | `v0.20.3` |
| Desktop | 0.6.2 | 0.6.3 | `desktop-v0.6.3` |
| Android | 0.6.4 | 0.6.5 | `app-v0.6.5` |
| iOS / TestFlight | 0.6.4 | 0.6.5 | `ios-v0.6.5` |

## Release notes

- Keep the phone keyboard closed when using Enter, Tab, arrows and other
terminal toolbar keys after dismissing the keyboard through the input method.
- Improve iOS Chinese punctuation and voice input, and prevent focused input
fields from zooming or shifting the page unexpectedly.
- Simplify terminal input by removing Local editor. Direct input, text paste,
photo/file attachments and terminal controls remain available.
- Improve phone setup with explicit QR rendering/error states, clearer
encrypted pairing instructions and a direct public TestFlight download link.
- Add the managed-connection beta client and guided desktop Cloud sign-in.
Prefer a verified Cloud address when generating encrypted pairing codes.
Cloud service implementation remains outside this public repository.

Hub and desktop also include the Android update-check and startup changes
merged after their previous release; the Android 0.6.4 release already contained
those Android startup fixes. Do not present them as newly fixed in Android 0.6.5.

中文摘要:修复工具栏误唤起键盘、iOS 中文标点和语音输入及输入框布局问题;
移除 Local editor,保留直接输入、粘贴和附件;改进二维码配对和 Cloud 连接引导。

## Validation and remaining observations

- #444 passed all five CI checks, including container-based E2E and Android
updater/startup checks. #441–#443 also passed before merging.
- Android RC `0.6.5-rc.2` was built on the Mac Mini from `c3013f2` (#444).
Its isolated package passed native emulator cold-start, WebView input,
foreground and corrupted pairing-marker recovery checks. The user confirmed
physical-device testing normal, including toolbar keyboard behavior.
- iOS TestFlight 0.6.5 from `ef1d876` (#442) passed user testing of voice input,
Chinese punctuation, focused-input layout and keyboard behavior. This is
an earlier commit than the final Local editor removal; do not describe it as
physical validation of the final iOS binary.
- Earlier Mac Mini desktop/simulator validation used `ecfaa1d`. Distribution
signing, notarization and the final installer still need their release checks.
- The isolated Android RC uses a separate application ID and debug signature.
It does not establish successful migration from the production application.
- One report of ordinary terminal text opening an unreachable browser URL
became unreproducible. No root cause or fix is claimed. An earlier transient
white screen after first encrypted pairing also remains unconfirmed.

## Publishing sequence

1. Merge this preparation after CI passes and pin the resulting main commit.
Keep #144 and #406 out of this release.
2. Build the four tags above from that same commit. The desktop version is
read from `tauri.conf.json`; the mobile versions are supplied by their tags.
The Hub workspace and both Rust lockfiles must agree on 0.20.3.
3. iOS uses a separate numeric `CFBundleVersion` derived from workflow run
number and attempt. The existing internal 0.6.5 build must not be uploaded
again under its original build number. The public app version stays 0.6.5.
4. Keep downloads staged until build checks and the signed Android startup
smoke pass. Verify the final APK can update production 0.6.4 while retaining
pairing. Verify final iOS startup/pairing after the Local editor removal.
5. Check desktop signatures/notarization, installer version, bundled Hub
version and `latest.json` before publishing its draft. Publishing promotes
the desktop updater channel.
6. Verify Android arm64 download, iPhone TestFlight availability and desktop
download redirects. GitHub release creation alone does not prove that a
build is available to external TestFlight testers.

The Hub and Android tag workflows can publish releases automatically; do not
push those tags merely to prepare release notes. Existing installed services
and private Cloud deployments are not changed by this preparation.
2 changes: 1 addition & 1 deletion packages/desktop/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/desktop/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"productName": "offdesk",
"version": "0.6.2",
"version": "0.6.3",
"identifier": "dev.offdesk.desktop",
"build": {
"frontendDist": "../../app/dist",
Expand Down
Loading