Spaces:
Runtime error
Runtime error
Commit History
-
chat: bottom input matches hero — floating card, text-xl, Send label
webmuppet +1: Claude Sonnet 4.6Replaces the compact dark footer bar with a floating rounded card (same rgba glass style as the hero input) centred at max-w-3xl. Textarea grows to rows=2, text-xl with transparent background. Stop/Send buttons gain a text label to match the hero variant. A gradient fade from #0F0027 to transparent behind the card prevents content bleeding through. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ac3c645 -
chat: cycle loading messages through pipeline phases
webmuppet +1: Claude Sonnet 4.6Pre-token (retrieval phase): cycles through 5 messages every 2.5s — 'Looking at the legislation', 'Reviewing relevant regulations', 'Assessing requirements', 'Scanning specific guidelines', 'Understanding policy recommendations'. Post-first-token (generation phase): shows 'Generating tailored response' + small dots above the streaming markdown, disappears when the response completes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>c812b81 -
sidebar: show full question text for conversations and saved responses
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>741c3dc -
chat: constrain thread to max-w-3xl centred column
webmuppet +1: Claude Sonnet 4.6Wraps the message list in a max-w-3xl mx-auto container matching the bottom input bar width — same breakpoint Claude.ai uses (~768px). Assistant bubbles now go full width within that column rather than being additionally constrained to 80%. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>2befd58
-
chat-ui: profession-specific starter pills
webmuppet +1: Claude Sonnet 4.6Generic questions shown by default; selecting a profession from the sidebar immediately swaps the pills to four questions relevant to that practitioner type and their specific council/board rules. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>22bd5ae -
chat-ui: stop button replaces send while streaming
webmuppet +1: Claude Sonnet 4.6useStream exposes abort() which cancels the in-flight fetch via AbortController. ChatInput bottom variant swaps the send icon for a filled stop square while isStreaming is true. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>e4e4267 -
chat-ui: remove 'Other' from profession list
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>9f06f9f -
chat-ui: profession select default option → '-- please select --'
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>f4e0810 -
chat-ui: move new conversation button above saved responses in bottom block
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>a7e286b -
chat-ui: group saved responses + past conversations at sidebar bottom
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0583b1f -
chat-ui: move download saved responses below saved responses section
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>50485d1 -
chat-ui: pin past conversations to bottom of sidebar
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>30ef437 -
chat-ui: add subtitle prompting profession selection
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>52dd805 -
chat-ui: reduce starter pills to four
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4c03494 -
chat-ui: widen starter pills to max-w-4xl for two-per-row layout
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>d22bdc6 -
chat-ui: constrain starter pills to max-w-2xl matching input width
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ec67296 -
chat-ui: sidebar open/close toggle
webmuppet +1: Claude Sonnet 4.6Adds sidebarOpen state (default true) to App.tsx. A panel icon button in the top-left of the main content area toggles visibility. The sidebar wrapper is conditionally rendered based on that state, so the main area expands to fill the full width when closed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>7efd3df -
chat-ui: headline → 'Ask a marketing related question'
webmuppet +1: Claude Sonnet 4.6Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>63270bb -
chat-ui: hero input — larger textarea (4 rows, text-xl) matching Claude.ai scale
webmuppet +1: Claude Sonnet 4.6Split the shared formContent abstraction: the hero textarea now uses rows=4, text-xl (20px), leading-relaxed, and transparent background so it reads as a prominent focal point. The bottom variant retains rows=1 / text-sm compact bar. Hero submit button moves to a right-aligned row beneath the textarea with a text label ("Send") rather than icon-only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0ab00bc -
chat-ui: centred hero layout with input as focal point, input moves to bottom on chat
webmuppet +1: Claude Sonnet 4.6Empty state: title + ChatInput (hero variant, floating card) + starter pills are stacked in a centred flex column occupying the full viewport height — matching the Claude.ai / ChatGPT pattern where the input is the primary call to action rather than a footer bar. Chat state: ChatThread takes flex-1 above, ChatInput (bottom variant, sticky footer) anchored below — same as before but now only rendered in this state. ChatInput gains a variant prop ("hero" | "bottom", default "bottom") so the two structural contexts can share all form logic (submit, keyboard, streaming disabled state) while rendering different container styles. All 66 tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>c80e301 -
Refactor: replace Streamlit with React+Vite SPA + FastAPI server
webmuppet +1: Claude Sonnet 4.6Replaces app.py (Streamlit) with a React+Vite single-page application served as compiled static assets by a new FastAPI server (server.py). The Python backend (src/pipeline.py, retriever, generator, router) is untouched. All user-visible features are preserved: chat with streaming LLM responses, conversation history, saved responses, profession and language selectors, password gate, citation chips, Markdown export, and starter pill questions. Key changes: - server.py: FastAPI entry point — JWT auth, POST /api/query/stream SSE, static file serving of frontend/dist/ - frontend/: React+Vite+Tailwind SPA with full TypeScript, 66 passing tests including property-based tests (fast-check) for storage, export, citations, streaming, and fork isolation - Dockerfile: multi-stage build adding Node frontend compilation step; CMD switched from streamlit to uvicorn - pyproject.toml: streamlit/streamlit-js-eval removed; fastapi/uvicorn/ pyjwt added - CORS only enabled when ALLOWED_ORIGIN en…b5c0df4