Skip to content

zonefoundry-bridge: Setup code flow + cap-resilient + 1-tap update polish#160

Open
kisssam6886 wants to merge 1 commit into
conversun:mainfrom
kisssam6886:zonefoundry-bridge-cap-resilient
Open

zonefoundry-bridge: Setup code flow + cap-resilient + 1-tap update polish#160
kisssam6886 wants to merge 1 commit into
conversun:mainfrom
kisssam6886:zonefoundry-bridge-cap-resilient

Conversation

@kisssam6886

Copy link
Copy Markdown
Contributor

Summary

Sync the fnOS zonefoundry-bridge catalog entry with the canonical bridge image (zonefoundry/bridge:latest) behaviour shipped since 2026-05-12. No image change requiredpull_policy: always + image stays on :latest, so existing fnOS installs and 1-tap updates automatically pick up the new behaviour.

Five user-facing changes:

  1. docker-compose.yaml: remove ZF_TOKEN env (pre-2026-05-12 path), add security_opt: [apparmor:unconfined] so fnOS's default AppArmor docker-default profile doesn't block docker.sock access (BUG-20260512-33), pin user: "0:0" + pull_policy: always so iOS 1-tap update flow can recreate the container with a fresh image (BUG-20260512-34).
  2. wizard/config: remove "ZoneFoundry Token" text input — Setup code flow doesn't need pre-registration. Replace the helpText with Setup code instructions (read 6-letter code from container log → iOS app → 更多 → 桥接 → + → 输入设置码).
  3. wizard/install: post-install help text walks user to the fnOS container "日志" tab, points at the Setup code log line, and sends them to the iOS app's "输入设置码" sheet.
  4. scripts/apps/zonefoundry-bridge/meta.env: POST_INSTALL_NOTE also updated to match the Setup code flow.
  5. CHANGELOG.md: new 2026-05-21 entry covers the Setup code flow, AppArmor + cap-resilient compatibility, and notes that subsequent iOS-side features (房间改名, 队列重排, 收藏写入) ride the auto-pinned :latest image without further fnOS edits.

Why

The bridge's Setup code flow (BUG-20260512-28) became the recommended onboarding path on 2026-05-12 because it removes the chicken-and-egg of needing to generate a pair code from iOS before the container starts. fnOS users currently hitting the wizard see the old "ZoneFoundry Token" field, which doesn't map to any bridge behaviour anymore (the bridge ignores ZF_TOKEN when no pair code or cached credentials exist).

Pinning :latest (rather than ${VERSION}) is intentional and documented in the compose file — pinning a specific version locks the user out of 1-tap updates because container restart reuses the cached image hash bound at create time.

Test plan

  • docker-compose.yaml validated structurally (no env var changes other than ZF_TOKEN removal)
  • Wizard JSON syntactically valid
  • CHANGELOG.md follows existing date-keyed format
  • Fresh install on fnOS 0.9+ → wizard renders Setup code flow text → bridge starts → log shows Setup code: ZF-XXXX → iOS app paired
  • Existing fnOS install with old ZF_TOKEN env: reinstall via catalog → new compose drops ZF_TOKEN, cached /app/data credentials still work, no re-pair needed

Related

…lish

Sync the fnOS catalog with the canonical bridge image (zonefoundry/bridge:latest)
behaviour shipped since 2026-05-12. Five user-facing changes:

1. docker-compose.yaml: remove ZF_TOKEN env (pre-2026-05-12 path), add
   `security_opt: [apparmor:unconfined]` so fnOS's default AppArmor
   docker-default profile doesn't block docker.sock access
   (BUG-20260512-33), pin user: "0:0" + pull_policy: always so iOS
   1-tap update flow can recreate the container with a fresh image
   (BUG-20260512-34).

2. wizard/config: remove "ZoneFoundry Token" text input — Setup code
   flow doesn't need pre-registration. Replace the helpText with
   Setup code instructions (read 6-letter code from container log
   → iOS app → 更多 → 桥接 → + → 输入设置码).

3. wizard/install: post-install help text walks user to the fnOS
   container "日志" tab, points at the Setup code log line, and
   sends them to the iOS app's 输入设置码 sheet.

4. scripts/apps/zonefoundry-bridge/meta.env: post-install note also
   updated to match the Setup code flow.

5. CHANGELOG.md: new 2026-05-21 entry covers the Setup code flow,
   AppArmor + cap-resilient compatibility, and points out that
   subsequent iOS-side features (房间改名, 队列重排, 收藏写入) ride
   the auto-pinned :latest image without further fnOS edits.

No image change required — fnOS users with the catalog reinstall
or 1-tap update pick up the new behaviour automatically. Pinning
:latest is intentional (per Pin :latest comment in compose file)
because pinning ${VERSION} prevents 1-tap update from working
(restart reuses cached image hash bound at container create time).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant