Skip to content

Factory pages on a phone and over the tailnet #61

Closed

Description

@tomkaczocha

Outcome

From a phone, or any machine on the tailnet, a person can open the fork's own web UI, see the factory's runs and attention items, and stop a run or pause claims.

Acceptance criteria

  • The Factory pages (Factory page in the T3 web app #28) and the factory settings page (Factory settings page: edit the machine config at /settings/factory #55) work at 375 px wide: no horizontal page scroll, controls at least 44 px tall, and the run list switches to stacked cards below 640 px. Component tests render each page at 375 px and 1280 px.
  • Every factory API call in apps/web/src/factory/ goes through the connected environment's HTTP base and credentials, the same way T3's own HTTP calls do. Calls are not made to the page's own origin. A test with a remote environment (a different HTTP base) proves the request goes to that base with that environment's credential.
  • The fork server, reached over the tailnet (t3 serve on the fork binary with Tailscale), serves the Factory pages to a newly paired browser. factory/README.md "Remote" gives the steps: pair, open /factory, add to the home screen.
  • Attention items (Needs attention: keep a list of what needs a person and notify on the Mac #58) show at the top of /factory on narrow screens.
  • One integrated pass on a real phone browser over Tailscale. The PR includes screenshots of /factory, a run, and /settings/factory.

Depends on

Notes

This issue is for the fork's own factory, after the handover in #21. Leave it at factory:proposed until the fork's factory watches this repo.

Settled choices:

  • No native mobile screen. The T3 mobile app on phones is upstream's App Store build, so it never contains fork code. A native factory screen needs the fork to build and ship its own mobile app (EAS, signing, store or TestFlight). That is a separate decision with its own cost, not part of this issue.
  • app.t3.codes is upstream's hosted web, so it has no Factory page. Remote use is the fork server's own served web.
  • Remote auth is T3's (Factory route layer behind T3's authentication #57): pairing, relay and tunnel sessions, with no factory-specific token.

Reference

  • Design: factory/docs/design.md in this repo.
  • Upstream's AGENTS.md applies. Run only the tests and typechecks for the paths you touch (vp test run <path>, vp run --filter t3 typecheck), never the repo-wide checks.
  • Edit no upstream file that is not listed in factory/SEAMS. A new seam needs a line in factory/SEAMS and a reason in the PR body.

Activity

  1. added a commit that references this issue on Oct 16, 2026
  2. added and removed
    factory:proposedA bot filed it; ignored until a person sets ready
    on Oct 16, 2026
  3. self-assigned this
    on Oct 17, 2026
  4. added and removed on Oct 17, 2026
  5. rawphp commented on Oct 17, 2026

    @rawphp

    Factory status: pr-open

  6. 6 remaining items

  7. added
    factory:pr-openPR is open and passed the gate
    and removed
    factory:pr-openPR is open and passed the gate
    on Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

factory:pr-openPR is open and passed the gate

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions