Skip to content

PWA install + deep links from ntfy notifications #31

Description

@xerhab

Context

The dashboard is already carefully mobile-responsive (dedicated @media (max-width: 600px) and pointer: coarse styles landed in the mobile-friendly PR) and is served over the Cloudflare tunnel at a stable HTTPS origin — but it's a plain browser page. ntfy alerts land on the phone with a Click header only for PR-created alerts (set in notify() opts), and even that opens GitHub, not the hub.

Problem

  • The phone flow is: notification → open browser → find the agents tab (or retype the URL) → basic-auth prompt occasionally re-appears → scroll to the session. Each alert type knows exactly which session it's about, but none of them link back to the hub.
  • No home-screen presence: as a non-PWA, there's no installed icon, no standalone window, and iOS/Android treat it as just another tab.

Proposal

  • PWA basics: a manifest.json (name, icons, display: standalone, theme colors matching the existing light/dark palette) + the meta tags, served from agent-hub/public/. A service worker is not required for install banners on Android anymore and can be skipped initially — the app is useless offline anyway, and skipping it avoids cache-invalidation complexity on a single-file UI.
  • Deep links: support /#session=<id> (and /#host=<key>) in index.html — on load, scroll to and highlight that card, auto-opening its repo <details>. With the terminal overlay, /#attach=<id> could go straight to the terminal.
  • Click-through on every alert: set the ntfy Click header on question/turn-finished/error alerts to https://<hub>/#session=<id> (the hub knows its public URL via a PUBLIC_URL env; HUB_URL on the agent side already carries it, but the hub itself never learns it today).
  • Notification-with-actions (answer a question from the notification) is tracked in the answer-from-dashboard issue; this issue is just presence + navigation.

Touchpoints

  • agent-hub/public/manifest.json, icons, hash-navigation in index.html
  • agent-hub/server.js — serve manifest/icons, PUBLIC_URL env, Click headers in heartbeatAlerts()

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions