Skip to content

Mobile: PWA first, then native — approvals and reminders on the phone #362

Closed

Description

@hsliuustc0106

Why

FlyBot has no phone entry point today (Desktop / web only). Approvals, Agent inbox (#349) and proactive reminders (#353–#355) are weak if the user is away from the laptop. Tracked under the capability-gap parent: #361.

Phased scope

Phase A — mobile web / PWA (first)

Phase B — native or wrapped app

  • iOS / Android (or a shared wrapper) with reliable push and background delivery.
  • Biometric (or OS) confirm for sensitive approvals.
  • Same account and instance as Desktop; no second data store.

Non-goals for now

Acceptance (Phase A)

Open questions

  1. PWA only for Phase A, or also store listing later?
  2. One codebase (responsive web) vs separate native from the start?
  3. How does sign-in work on a phone against a self-hosted instance (Deployment step 1: official image and one isolated instance per person #352)?

Related

#361 (parent gap tracking), #352, #349, #353–#355.

Process

Implementation via OpenCode + Codex review; bots do not hand-write code.

Activity

  1. hsliuustc0106 commented on Oct 18, 2026

    @hsliuustc0106
    ContributorAuthor

    Platform suite (iOS / HarmonyOS / Android) tracked in #363.

  2. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Folding #363 (Mobile entry suite: iOS, HarmonyOS, Android) into this issue as a duplicate. Its unique content, so nothing is lost:

    Three-platform entry suite. One program, three storefronts, shared product contract. Phase A (responsive web / PWA) stays the shared bootstrap so all three can use the product before store apps land.

    Platform Store / channel Client form (proposed) Notes
    iOS App Store Native or wrapped (Phase B) Push via APNs; biometric for sensitive approve
    Android Play (and optional side load for self-host) Native or wrapped Push via FCM; biometric / device credential
    HarmonyOS App Gallery / 鸿蒙分发 Native Harmony, or a compatible Android build where allowed Confirm push and background limits on current HarmonyOS; do not assume Play services

    Shared requirements (all three)

    Suggested child issues (open when starting work): mobile-ios (App Store pipeline, APNs, TestFlight), mobile-android (Play pipeline, FCM, internal testing track), mobile-harmony (HarmonyOS target, push path, App Gallery or alternative distribution).

    Acceptance for the suite

    • Documented build and release path for each of the three platforms.
    • At least one internal test build per platform that can approve a held reply against a Deployment step 1: official image and one isolated instance per person #352 instance.
    • Push (or platform-best-effort notification) works for approval-waiting on each platform where the OS allows.
    • A short matrix of platform × (install / sign-in / approve / push) with pass/fail.

    Extra open questions

    1. One codebase (Flutter / RN / Kotlin Multiplatform) vs three native stacks?
    2. HarmonyOS: pure Harmony next vs an Android-compatible package first?
    3. Do we require a store listing for v1, or is sideload / enterprise enough for the team pilot ([Team] Verify the real two-human team pilot end to end #58)?
    4. Who owns certificates and store accounts?

    Related: #361, #352, #349, #353–#355.

  3. added
    enhancementNew feature or request
    area:uiWeb/desktop UI and copy
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 19, 2026
  4. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Triage on main 7b9e90b, 2026-10-19 ~12:10 Asia/Shanghai: needs-human, not agent-ready. Question for the owner: start Phase A (responsive web / PWA with push)? Push needs a deployed instance (#352), so the order matters.

  5. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Triage (maintenance, 2026-10-20 08:59 Asia/Shanghai)

    On main bae4128: no PWA manifest, service worker or push. The client CSS has no phone-width layout (its only @media rules are for reduced motion). The web page shell belongs to DSH (dsh web); FlyBot only adds plugins to it. #363's three-platform suite is folded in here (comment above). #352 (deployment) is still open.

    Expected behavior: on a phone browser you can skim a chat, press Approve / Reject on a held reply, and open Agent inbox (#349) cards.

    Smallest first slice: a phone-width layout (about 400px) for the chat, held-reply Approve/Reject buttons and the Agent inbox. No PWA install, no push and no native app yet. It can be tested now against the running dsh web page.

    Details I decided (say if you disagree)

    Question for the owner
    (a) Start the phone-width layout now. Do PWA install and push after #352 step 1, and native later.
    (b) Wait for #352, then do layout, PWA and push together.
    (c) PWA and push now, against the desktop instance (only works while it runs).
    Recommendation: (a).

  6. added
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  7. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-20): Confirmed option (a): first step is mobile-width layout only for chat, approve/reject buttons and the Agent inbox. PWA and push come after #352; native later. Push can never approve directly; it only opens the card, and approval stays on the in-app buttons.

  8. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 20, 2026
  9. self-assigned this
    on Oct 20, 2026
  10. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Claimed by maintenance run (2026-10-20 09:54 Asia/Shanghai). Working on branch feat/362-mobile-layout (fork Birfy/FlyBot), developed in parallel with sibling issues; first slice per the Owner decision only.

  11. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Minor details decided for step 1 (PR #481, 2026-10-20 11:01 Asia/Shanghai):

    • Breakpoint 640px, the same one the inbox/memory dialog already uses to go full-screen; wider screens are unchanged.
    • Held-reply and floating approval cards: Reject / Approve split the card width as 40px buttons, Approve filled with the accent (same look as the app's other primary buttons). Social's hold card gets 40px buttons at that width too.
    • The floating approval stack and the chat pointers keep clear of DSH's 56px icon rail (DSH collapses the sidebar below 1024px on its own), so the top + and the account stay reachable.
    • Inbox cards put their buttons on their own row under the text; title and reason wrap to two lines instead of truncating.
    • Not touched: the shell's own sidebar/rail (DSH owns it), PWA, push, native apps (later steps per the Owner decision).
  12. added a commit that references this issue on Oct 20, 2026
    2c2cabc
  13. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Cleanup: issue closed. Removing stale agent-working and assignee.

  14. removed their assignment
    on Oct 20, 2026
  15. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:uiWeb/desktop UI and copyenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions