v0.22.0Votes and Proceedings back to 1901, OCR quality tiers, more reliable Question Time structuring
-Votes and Proceedings: every sitting day from 1901 to 1981 now readable in-app, parsed from the ParlInfo historical OCR dataset
-OCR quality tiers (OCR / Fair OCR / Poor OCR) flag how reliable each historical document is, with a per-page banner pointing to the official PDF when accuracy matters
-Question Time structuring is more accurate on garbled captioner openings and cheaper late in QT (windowed turns, early exit once all questions are placed)
-Anthropic rate-limit and overload responses now back off cleanly instead of burning credits during throttling
v0.21.0HouseDocs launch: Votes and Proceedings, full-text search, and sitting calendars back to Federation
-New HouseDocs section (/docs) for official parliamentary documents, starting with the Votes and Proceedings
-Votes and Proceedings rendered in-app with divisions, Federation Chamber supplement, and a contents sidebar with division navigator
-Full-text search across all Votes and Proceedings with highlighted snippets and chamber/year filters
-Sitting calendars for all 48 Parliaments from Federation (1901) to present, sourced from ParlInfo
-Past day pages show only the document tiles available for that era (Daily Program from 44th, Notice Paper from 38th, ParlView from 1988)
-Navigation: hamburger menu on all pages linking Calendar, HouseDocs, House Procedure, About, Changelog
v0.20.0Simplified QT detection, adjournment fixes, non-sitting day handling
-Question Time: complete rewrite to minutes-first approach - minutes provide ground truth for questions, Claude identifies where each starts in captions
-Question Time: sends ALL turns every cycle for self-correction, no lock-in of previous placements
-Question Time: explicit handling of Speaker interventions (not questions/answers), uses member electorates for anchoring
-Question Time: QT viewer panel removed, question markers and navigation retained in captions panel
-Adjournment detection: fixed regex to match 'the House, at X pm, adjourned' word order used in minutes
-Adjournment detection: consistent across status badges, auto-refresh, and API access control
-Non-sitting day pages: return 404 if no data exists, redirect to calendar if today is not a sitting day
-Today button: only shown when today is a sitting day
-Overnight sittings: data remains accessible past midnight if House hasn't adjourned (API routes check adjournment status instead of just week boundaries)
v0.19.0AI-powered program parsing, program panel redesign, captions improvements
-AI-powered program parsing: Claude Haiku parses ParlInfo daily program into structured H1/H2/item hierarchy, replacing regex-based parsing with fallback
-Program panel: faithful three-level structure - H1 business categories (bold), H2 sub-categories (underlined), business items with detail lines
-Program panel: 'House meets at X' shown as opening entry, time indicators (At 2 pm, etc.) displayed at heading level in italic
-Program panel: item-level tick marks for matched minute items, improved section-level done logic (only ceremonial sections auto-tick)
-Program panel: sticky header with border, gray-50 background for visual distinction, Notice Paper link in scrollable content
-Program panel: bill names linked to ParlInfo (fix: skips text already inside links)
-Program panel: match polling reduced from 15s to 30s
-Captions: timestamps shown inline on speaker-change divider lines (full time with seconds), no sidebar column - text goes full width
-Captions: lighter divider lines and timestamp text for cleaner appearance
-Captions: 'Jump to latest' button positioned above status bar
-Minutes: refresh controls moved from sub-header into minutes panel header
-Minutes: content area scrolls independently from fixed header (scrollbar no longer overlaps header)
-Minutes: auto-scrolls to bottom on page load for live sitting days
-Panels: 2px border dividers between panels for clearer separation
-Scrape API: triggers program matcher after minutes scrape
v0.18.0Multi-panel layout, AI program matching, UI redesign
-Multi-panel layout: Minutes, Captions, and Program can be shown side-by-side (responsive – 1 panel on mobile, 2 on lg, 3 on xl)
-Default view is now Minutes + Program
-AI-powered program matching: Claude Sonnet replaces the old rules-based stem-overlap system for matching minutes to the daily program
-Each panel has its own header with search, DRAFT/warning indicators, and toolbar buttons
-Captions: timestamps shown only on speaker change (not every block), with search and question navigation (Q up/down buttons)
-Draft/warning badges: compact red pills (DRAFT, AI CAPTIONS, GUIDE + AI) with expandable detail text
-Program panel: internal search added, 'Full Notice Paper (ParlInfo)' link
-Chamber tab icons: mace for House, horseshoe seating for Federation Chamber
-Consistent empty states across all panels with themed icons
-Federation Chamber: shows 'Waiting for Federation Chamber to begin sitting' when selected
-Toolbar buttons visible before sitting starts (for setup)
-Status badges shown on all screen sizes
v0.17.3Sitting day auto-redirect, draft banner in toolbar, QT prompt refinements
-Home page auto-redirects to today's proceedings on sitting days (direct URL only – calendar still accessible via nav links)
-Draft banner moved into sticky toolbar row alongside search/expand buttons
-Daily program sidebar aligned flush with toolbar
-QT structurer: Speaker's 'call' now assigned to previous answer, not the question; questions can span multiple interrupted turns
v0.17.2Compact UI for half-screen and mobile, fullscreen chamber fix
-Compact header: date moved into green header bar, reduced overall height
-Single-row sub-header: chamber tabs, view mode tabs (Min/Cap), Daily Program toggle, and refresh controls all in one line
-Chamber tabs: 'House' / 'FC' on mobile, 'Fed. Chamber' on tablet, full names on desktop
-Refresh controls: icon-only with tooltips to save space
-Timestamps: compact format (2:05pm instead of 2:05:51 PM); clock icon with hover tooltip on narrow screens
-Daily Program toggle moved inline as 'DP' button (no longer a separate full-width row on mobile)
-Draft warning: collapsible – click to expand full text
-Document links: removed from today's view (redundant with DP panel and header); kept for past days
-Notice Paper link added to Daily Program panel header
-Fix: fullscreen captions from Federation Chamber now correctly shows Federation Chamber (was always showing House)
v0.17.1QT structuring fixes, program matching fixes, minutes reconciliation
-QT structurer: incremental prompting – only new turns sent to Claude, previous questions locked in and never rewritten
-QT structurer: minutes reconciliation – official question numbers, member names, and titles from live minutes override AI guesses within 30-60s
-QT viewer: word-by-word streaming via queue (matches transcript panel behaviour)
-QT viewer: Auto button now solid green when on, amber pulsing when off; re-enables when navigating to latest question
-QT viewer: fullscreen link added
-Fix: daily program – Federation Chamber suspension now correctly matched as active
-Fix: daily program – same bill appearing multiple times (intro/resumption/post-QT) now highlights correct occurrence based on stage
-Fix: daily program – cognate debate markers now detect any consecutive items before the marker, not just numbered ones
-Fix: daily program – chamber switch no longer briefly shows wrong program highlight from previous chamber
-Fix: captions time slider no longer jumps back to original position when scrubbing
-Fix: scroll-to-bottom on page load now waits for item expansion to complete
-Fix: returning to tab no longer sprints through queued words – flushes instantly if backlog exceeds 20 words
v0.17.0AI-powered Question Time structuring, member identification from APH data
-Question Time captions now structured into numbered question/answer pairs using Anthropic Claude AI – identifies when questions start and end, assigns speaker turns to each question. AI is used only for structuring; no caption text is generated or modified
-Member identification: questioner and answerer resolved from APH Parliamentarian and Handbook APIs – shows official names (e.g. 'Mr Taylor to Mr Albanese (Prime Minister)'), electorates, and member photos
-Question markers in transcript view: amber badges show question number, asker, and responder at the point each question begins in the caption stream
-QT structuring runs server-side on a 15-second timer during Question Time – all clients share the same cached result, no per-client AI calls
-QT viewer: question and answer text now uses the same block splitting as the transcript view for consistent readability
-QT viewer: interruption banner when standing orders are suspended during Question Time
-Removed old pattern-based question detection (regex state machine) – replaced entirely by AI structuring
-Dev tool: QT structure tester at /dev/qt-test with three-panel view (turns, viewer preview, transcript preview)
-CSP: allow member photos from parlinfo.aph.gov.au