chore: remove the packages/tao submodule (#6085)

* chore: remove the packages/tao submodule

The root Cargo.toml stopped patching tao in #6081: the tauri fork now
needs tao ^0.37, and upstream 0.37.0 carries the iOS scene-configuration
fixes the fork existed for. Verified on the iOS 18.5 simulator with the
CarPlay display attached: the app launches and Readest's CarPlay Now
Playing scene connects and renders with plain tao 0.37.0. Nothing
references the submodule any more, so drop it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* chore: update agent memories

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Huang Xin 2026-09-06 12:42:51 +08:00 • committed by GitHub
parent 77e44eb92d
commit 44bba08f3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 63 additions and 14 deletions

View file

@ -411,10 +411,10 @@ jobs:
with:
toolchain: stable
# This action defaults RUSTFLAGS to -D warnings. Path-patched
# dependencies (packages/tao, packages/tauri) build without
# cap-lints, so upstream warnings in them (e.g. glib deprecations
# in tao's Linux backend) would fail the app build. Warnings in
# our own crate are enforced by the rust_lint job instead.
# dependencies (packages/tauri, packages/swift-rs) build without
# cap-lints, so upstream warnings in them would fail the app
# build. Warnings in our own crate are enforced by the rust_lint
# job instead.
rustflags: ''
# Disable this action's built-in rust-cache so the explicit
# Swatinem/rust-cache below is the single cache (it's the one

3
.gitmodules vendored
View file

@ -22,6 +22,3 @@
[submodule "apps/readest-app/src-tauri/plugins/tauri-plugin-webview-upgrade"]
path = apps/readest-app/src-tauri/plugins/tauri-plugin-webview-upgrade
url = https://github.com/readest/tauri-plugin-webview-upgrade.git
[submodule "packages/tao"]
path = packages/tao
url = https://github.com/readest/tao.git

View file

@ -61,9 +61,9 @@ Index only — one line per memory. Detail lives in the topic files; do not rest
- Resolved/stable → [Sync Fixes](sync-fixes.md)
## Build, Testing & CI
- [tauri fork bump: exclude + swift-rs relabel](tauri-fork-bump-workspace-exclude-swift-rs.md) root must EXCLUDE packages/tauri; `patch not used` = fork silently dropped; tao patch REMOVED; cef stub PUSHED 3156d92b7 to readest + feat/cef-feature-stub; force-push BROKE nix CI (#6080), tag cef-stub-old-base repaired; NEVER orphan a pinned fork commit; iOS build UNVERIFIED
- [tauri fork bump: exclude + swift-rs relabel](tauri-fork-bump-workspace-exclude-swift-rs.md) MERGED #6081; root must EXCLUDE packages/tauri; `patch not used` = fork silently dropped; NEVER orphan a pinned fork commit; tao patch dropped; upstream 0.37.0 CarPlay VERIFIED on iOS 18.5 sim (Now Playing rendered, no crash); packages/tao submodule REMOVED (a362ac598, unpushed); iOS 26 sim + device unchecked
- [TypeScript 7 upgrade #5260](typescript-7-upgrade-5260.md) MERGED #5893; no tsserver/tsgo (lint = `tsc`); next 16.3.3; rootDir fix
- [Nix FOD hash staleness](nix-fod-hash-staleness.md) MERGED #5779; hash from the PR check's `got:` line, NEVER docker/OrbStack
- [Nix FOD hash staleness](nix-fod-hash-staleness.md) MERGED #5779; hash from the PR check's `got:` line, NEVER docker/OrbStack; `--keep-going` since #6081; PR head may be chrox/readest-app (remote `chrox`)
- [git push needs the SOCKS proxy](git-push-socks-proxy.md) ssh ProxyCommand only; `--no-verify` + ServerAliveInterval
- [worktree:new REBASES a PR branch](worktree-new-rebases-pr-force-push.md) pushing to a fork from it = FORCE push; use the real head
- [Workflow-file pushes need SSH](push-workflow-file-needs-ssh-not-gh-oauth.md) gh OAuth lacks `workflow` scope

View file

@ -17,3 +17,14 @@ metadata:
Third hit 2026-08-26: PR #5893 (TypeScript 7 + Next 16.3) changed pnpm-lock.yaml; the fod-hashes job failed in 5m17s with `specified: sha256-jQoa1YvCJU2bmEkr70u8MENxS1cGb2ahai53TfI6DQE=` / `got: sha256-zEq7gAPixg8P9DeRtEKS0rCVlphJfBSVl7LOvvAQj+g=`, bumped in `40bda11b9`. Recipe holds exactly: push first, then read `got:`. Fastest way to the value is `gh run view --repo readest/readest --job <job-id> --log-failed | grep -iE "specified:|got:"` -- the run-level `--log-failed` also works but the job id from the PR check URL is more direct. There is no local nix on chrox's Mac (`which nix` = not found), so this cannot be pre-computed before opening the PR.
Second hit 2026-08-25: PR #5865 changed Cargo.lock (image crate `webp` feature -> image-webp); the fod-hashes PR check failed with specified/got, cargoHash bumped in `50d57e30d` from the got: line, check green in one round.
Fourth hit 2026-09-06: PR #6081 (tauri fork bump, Cargo.lock + pnpm-lock.yaml
both changed) failed fod-hashes on cargoHash first (`got:` sha256-5uavqv6V...),
and only after that bump did the next run report pnpmDeps (`got:`
sha256-E6z6mXT4...): `nix build` stopped at the first FOD failure. dcf5d1e9a
added `--keep-going` to the `nix-deps-check.yml` build so ONE run now prints
every stale hash; still expect one push per unknown hash, never precompute.
Both bumped in dcf5d1e9a + 555c887bf. GOTCHA: this PR's head is
`chrox/readest-app:dev` (remote `chrox`), NOT `readest/readest:dev`; a push to
`origin dev` created a stray branch on the main repo (deleted right away).
Check `gh pr view N --json isCrossRepository,headRepositoryOwner` before pushing.

View file

@ -35,10 +35,27 @@ iOS home indicator). Upstream ba3490b3e "Use workspace dependency management
uses `--triple` on Xcode 27 and keeps the legacy path on Xcode 26.x, which
is what Readest found broken, so the vendored copy stays for now.
3. `tao = { path = "packages/tao" }` (0.35.3 + 2 iOS scene fixes) can never
match `^0.37` again. Upstream tao 0.37.0 carries both fixes (#1245
`f2163508` autorelease UISceneConfiguration, `a3ff3f03` connecting-scene
role), so the patch line was REMOVED. The `packages/tao` submodule is still
in `.gitmodules` and should be deleted in a follow-up.
match `^0.37` again, so the patch line was REMOVED in #6081. CORRECTION
(verified against tao-0.37.0 sources 2026-09-06): upstream ports only ONE
half. `f2163508` (#1245, velocitysystems) = the use-after-free fix
(`Retained::autorelease_ptr`). `a3ff3f03` (Lucas Nogueira) passes the
connecting session's ROLE through but STILL calls
`setDelegateClass(TaoSceneDelegate)` for EVERY role. The fork's 419f5bba
returns a name-less config WITHOUT a delegate override for non-window roles
so UIKit takes the Info.plist manifest entry; with plain 0.37.0 a CarPlay
session gets TaoSceneDelegate -> NSGenericException "does not implement
CarPlay template application lifecycle methods" on connect (fork comment,
real device). No upstream PR from chrox/readest exists; the fork patch does
NOT apply cleanly onto 0.37.0 (context moved). VERIFIED 2026-09-06 on the
iOS 18.5 simulator (iPhone 16 Pro, `pnpm dev-ios-sim` of main 34e4ebeeb,
binary contains tao-0.37.0): app launches and renders; CarPlay display
attached via Simulator I/O > External Displays > CarPlay; Readest opened on
CarPlay and showed the CPNowPlaying template with the current book, process
alive, no crash report, no NSGenericException. So upstream 0.37.0 is FINE
for CarPlay despite the TaoSceneDelegate override; the theoretical concern
above did NOT materialize. `packages/tao` submodule REMOVED in local dev
commit a362ac598 (2026-09-06, `git submodule deinit` + `git rm`, workflow
comment updated; NOT pushed). Not yet checked: iOS 26.3 sim, real device.
Also: `rust-version` bumped 1.77.2 -> 1.90 in root `[workspace.package]` and
`src-tauri/Cargo.toml` (user request). MSRV-aware fallback is NOT active with
@ -87,3 +104,28 @@ superproject ref still pins; tag it first. `.gitmodules` pins no branch. CLAUDE.
version-pinned and a newer crates.io release silently drops them.
- Cargo.lock changed a lot (fork crates' dev-deps left the lock); expect the
Nix FOD hash to need refreshing, see [[nix-fod-hash-staleness]].
Outcome: shipped as PR #6081 "chore: bump tauri to version 2.11.5" (head on the
`chrox/readest-app` fork, squash-merged ee86510cc 2026-09-05T20:32Z) after two
CI fixes: cargoHash + pnpmDeps hash bumps and the `as_chunks` clippy rewrite in
epub_parser.rs. Main then took #6083 (nix Linux package on CEF). The temporary
fork tag `cef-stub-old-base` was DELETED once main pinned 3156d92b7; the
leftover `packages/tauri-plugins/` dir is gone. STILL OPEN: `packages/tao`
submodule is registered in .gitmodules but unused (remove in a follow-up PR);
iOS build with the relabelled swift-rs + upstream tao 0.37 not yet verified.
Sim recipe that worked (2026-09-06): boot `xcrun simctl boot <udid>` + `open -a
Simulator` FIRST, `pnpm dev-ios-sim` (Next export + cargo sim build + xcodebuild
+ `simctl install booted`, ~12 min; the install is the LAST step, so check the
installed binary mtime before launching or you test the stale July app),
`xcrun simctl launch booted com.bilingify.readest`, log via `xcrun simctl spawn
booted log stream --predicate 'process == "Readest" OR eventMessage CONTAINS
"Readest"'`. CarPlay: `osascript -e 'tell application "System Events" to tell
process "Simulator" to click menu item "CarPlay" of menu "External Displays" of
menu item "External Displays" of menu "I/O" of menu bar 1'` WORKS from this
session (older memory said TCC blocked osascript; not the case now); computer-
use screenshots hide menus and non-allowlisted windows, and its clicks on the
CarPlay window did not register as touches; `System Events click at` needs the
window raised (AXRaise errored -25204). chrox tapped the CarPlay icon by hand.
`xcrun simctl io booted screenshot --display external` captures the CarPlay
framebuffer (800x480).

@ -1 +0,0 @@
Subproject commit 419f5bba5d16b177c75b6610778fe2014f7b0ac9