Backport Vue SPA feature parity to self-hosted Streamlit UI #104

Closed
opened 2026-04-16 07:31:28 -07:00 by pyr0ball · 2 comments
Owner

Context

The Vue SPA is the primary frontend for the cloud and demo tiers. Self-hosted users on the Streamlit path are increasingly behind on features that have only landed in the Vue layer:

Known gaps (Vue → Streamlit)

  • Card-stack job review UI (JobCardStack, swipe approve/reject) — Streamlit has table/button review only
  • Apply workspace — cover letter inline editing + PDF preview panel (Vue only)
  • Contacts view — email thread log per job
  • References view — reference tracking
  • Digest view — email digest/multi-listing classification
  • HintChip onboarding — contextual hints per view
  • Live toast notifications — feedback on async actions
  • DemoBanner — demo mode UX (lower priority for self-hosted)

Options

  1. Deprecate Streamlit UI — Vue SPA becomes the only frontend; self-hosted users run the Vue+FastAPI stack (compose.yml already has web service)
  2. Maintain parity — backport key features to Streamlit; higher ongoing maintenance cost
  3. Hybrid — ship Vue SPA as the self-hosted default, keep Streamlit as a fallback for users who prefer it

Option 1 is likely the right call long-term given where active development is going. Option 3 is a lower-friction transition.

Suggested first step

  • Update self-hosted compose.yml to default to the Vue+FastAPI stack (api + web services)
  • Document the migration path for existing Streamlit self-hosters
  • Announce deprecation timeline for the Streamlit UI
## Context The Vue SPA is the primary frontend for the cloud and demo tiers. Self-hosted users on the Streamlit path are increasingly behind on features that have only landed in the Vue layer: ## Known gaps (Vue → Streamlit) - **Card-stack job review UI** (`JobCardStack`, swipe approve/reject) — Streamlit has table/button review only - **Apply workspace** — cover letter inline editing + PDF preview panel (Vue only) - **Contacts view** — email thread log per job - **References view** — reference tracking - **Digest view** — email digest/multi-listing classification - **HintChip onboarding** — contextual hints per view - **Live toast notifications** — feedback on async actions - **DemoBanner** — demo mode UX (lower priority for self-hosted) ## Options 1. **Deprecate Streamlit UI** — Vue SPA becomes the only frontend; self-hosted users run the Vue+FastAPI stack (compose.yml already has `web` service) 2. **Maintain parity** — backport key features to Streamlit; higher ongoing maintenance cost 3. **Hybrid** — ship Vue SPA as the self-hosted default, keep Streamlit as a fallback for users who prefer it Option 1 is likely the right call long-term given where active development is going. Option 3 is a lower-friction transition. ## Suggested first step - Update self-hosted `compose.yml` to default to the Vue+FastAPI stack (`api` + `web` services) - Document the migration path for existing Streamlit self-hosters - Announce deprecation timeline for the Streamlit UI
Author
Owner

Decision: go with option 1 — deprecate Streamlit, Vue+FastAPI becomes the only self-hosted frontend. Next steps: update compose.yml to default to api + web services, document migration path, announce deprecation timeline.

Decision: go with option 1 — deprecate Streamlit, Vue+FastAPI becomes the only self-hosted frontend. Next steps: update `compose.yml` to default to `api` + `web` services, document migration path, announce deprecation timeline.
Author
Owner

Closing — Streamlit UI is deprecated. The Vue 3 SPA is now the only frontend for all tiers. No new Streamlit work. See issue #104 reference in CLAUDE.md.

Closing — Streamlit UI is deprecated. The Vue 3 SPA is now the only frontend for all tiers. No new Streamlit work. See issue #104 reference in CLAUDE.md.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#104
No description provided.