Skip to content

Phones: a tab bar (Home, Threads, Bots, Routines, Settings) and app settings on the device - #104

Merged
i2cjak merged 14 commits into
mainfrom
backplane/phone-tabs
Oct 14, 2026
Merged

i2cjak merged 14 commits into
mainfrom
backplane/phone-tabs

Conversation

@i2cjak

@i2cjak i2cjak commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

The person: "Not one long list, this looks bad", and "fix the settings to apply locally to the iOS app only, this also takes time to load!!!"

Structure (research and reasoning: bp-coord/ios-snappy/ia.md)

App settings on the device (AppSettings; UserDefaults / SharedPreferences): Appearance (replaces the hub's ui.theme on the phone), Thread list (Backplane.local("view") → @local.view, laws local_view_*), Opens on, Haptics, Notifications (the system state, plus notif-policy's hub-side "Notify me for" rows), Hubs, Cache (size, clear), Tour, About. They open with no round trip and apply at once. Theme and Thread list are migrated from the hub once (app.migrated.v1) and never written back. The audit table is in bp-coord/ios-snappy/synthesis-3.md.

Hub settings: a page per paired hub, shown at once from the last rows (cached on disk) and refreshed in place; rows marked local are skipped there.

Verified with real taps on a sandbox copy of the real log (XCUITest on a Release build, iOS 26.5 sim; adb on an Android 34 emulator):

  • iOS: every tab opens; a bot, a routine (to its bot's Routines tab) and the uberbot open from their tabs; Settings and Hub settings come up with no spinner; Appearance switches at once. Regressions pass: Find left open + relaunch → the uberbot still opens (Phones: a launch never puts a sheet back over the app #85); the island link while typing → no list (Phones: no "N agents working" picker; the island opens the app as it was #89).
  • Android: every tab; Bub opens (first 0 ms, full 346 ms); a bot, dark mode and Hub settings work.
  • scripts/check.sh, test/mtabs_test.bend (30), mnav, mbots, mplane, hubs and onboard pass; Swift and Kotlin compile on this rebased tree.

Synthesis: Sonnet's implementation as base (Codex was down on a locked keyring), plus the lead's fixes (plain-style rows: a List's button tinted names blue). Notes in bp-coord/ios-snappy/synthesis-3.md.

🤖 Generated with Claude Code

i2cjak and others added 14 commits October 14, 2026 13:22
…ew override, hub-settings action, local rows marked, laws and test
…), per-tab stacks, on-device App settings, lazy cached Hub settings page
…ns section (iOS, Android), marked notify by Bend
…tinted the whole label blue), whole row tappable

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@i2cjak
i2cjak merged commit 36ef216 into main Oct 14, 2026
9 checks passed
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