HouseLivev0.22.0

Changelog

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)
  • -Fullscreen captions: centred 'House Live' header, 'Exit full screen' button, warning badge always visible
  • -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
v0.16.0Caption speaker detection fix, QT question detection improvements
  • -Fix: null after VTT </c> tag is now always treated as a speaker boundary – no color propagation that could merge different speakers
  • -Improved QT question detection: 'my question is' fires on any speaker change without needing 'call to' arm; answer preamble filter prevents false positives; block length limits
  • -QT viewer: removed replay/test mode from live page
  • -Dev tool: VTT caption tester at /dev/vtt-test for testing caption parsing against past ParlView VOD recordings (dev-only)
  • -Security: /dev/* routes blocked in production via middleware
v0.15.2Fix caption duplication, fullscreen captions view, hash navigation
  • -Fix: VTT two-line display causing duplicate words in captions – removeCueRepetition detects and strips repeated word sequences within each cue
  • -Fix: inter-cue dedup switched from unbounded high-water mark to previous-cue anchor, preventing false matches in accumulated text
  • -Fix: cross-file dedup uses full accumulated output as anchor instead of just last cue (matching test behaviour)
  • -Fix: word-by-word streaming no longer flushes queue on segment events – words drain at consistent 80ms intervals
  • -Fullscreen captions view (#fullscreen) – minimal header + transcript only, accessible from expand button in captions toolbar
  • -Hash navigation now responds to changes while on the page (#qt, #transcript, #fullscreen)
  • -Fix: hash-driven view changes no longer fight with the hash sync effect
v0.15.0Word-by-word caption streaming, transcript UI improvements
  • -Live captions now stream word-by-word instead of in 5-second chunks
  • -Long speaker turns now split into readable paragraphs at sentence boundaries
  • -Clear visual separation between speakers with spacing and coloured borders
  • -Updated caption disclaimer to clarify AI-generated nature and limitations
  • -Live indicator moved into controls bar alongside time slider
  • -Past day draft tiles now hidden after midnight (data preserved for overnight continuations)
  • -Experimental Question Time split-screen viewer (access via #qt in URL)
  • -Minutes polling increased to 10s during Question Time for faster enrichment
  • -Fix: previous day captions now load correctly for current sitting week
  • -Fix: back navigation from draft minutes/captions to date tile page
v0.14.0Speaker detection in captions via VTT color tracking
  • -Captions now detect speaker changes using VTT color tags – text breaks into separate paragraphs per speaker
  • -Per-word color parsing: tracks speaker color at word level within rolling caption cues
  • -Colored left borders on caption blocks indicate different speakers (cyan, yellow, green)
  • -Paragraph spacing between speakers instead of thin divider lines
  • -Question indicator badge shown for parliamentary questions ('My question is to the...')
  • -Added speaker_color column to transcript_segments for color persistence
  • -Removed mid-sentence block breaks – blocks only split at speaker changes or 200-word cap at sentence end
v0.13.2Transcript fix, UI polish, division link and OOM fixes
  • -Fixed live captions not streaming – adapted to APH's changed HLS chunk URL format
  • -Fixed toolbar layout overlap on narrow screens (half-laptop widths)
  • -Switching chamber tabs now resets state and jumps to latest
  • -Returning to the app now scrolls to latest immediately instead of showing stale position
  • -Daily Program toggle uses neutral color instead of green when collapsed
  • -Division links now find recent divisions that the APH API hasn't indexed yet
  • -Fixed OOM crashes during divisions – MuPDF WASM rendering moved to child process to free ~40MB
  • -Server memory increased from 512MB to 1024MB for headroom during vote spikes
  • -Fixed "Minister to move" incorrectly displayed as a section heading in daily program
  • -Daily program scraper retries when ParlInfo serves incomplete content (empty parse)
v0.13.1Hansard links, terminology cleanup, mobile fixes, collapsible changelog
  • -Hansard links now open Federation Chamber Hansard when viewing Federation Chamber
  • -Renamed 'Transcript' to 'Captions' throughout – honest about the source
  • -Fixed mobile header overflow causing horizontal scroll
  • -Fixed mobile overscroll (grey space / can't scroll back up)
  • -Added version and about links to past-day header
  • -Changelog entries are now collapsible (only latest open by default)
  • -Cleaned up changelog: removed stale entries, updated terminology
v0.13.0Week-based draft access, adjournment fix, calendar improvements
  • -This-week past sitting days show document links plus draft minutes and live captions tiles
  • -Draft minutes and captions only accessible during the current sitting week – blocked after Saturday
  • -Adjournment detection fixed: only triggers when House/Chamber actually adjourns, not when debate starts
  • -Calendar: all past sitting days shown in green, future in blue, with colour legend
  • -Version number and About link added to home/calendar page
  • -Captions load for this-week past days
  • -Fixed mobile overscroll causing unusable screen area
  • -Fixed scroll lock when using captions time slider
v0.12.0Past day archives, chamber status badges, search and accessibility overhaul
  • -Past sitting days show document links (Hansard, Votes & Proceedings, ParlView, etc.)
  • -All sitting days navigable via calendar – not just days with scraped data
  • -Header shows live status per chamber (Live, Suspended, Adjourned) with colour-coded badges
  • -Captions search with match count, navigation arrows, and highlighting
  • -Single-line minute items (points of order, distinguished visitors) render inline without expand
  • -Points of order and related items grouped under preceding minute item
  • -Bill names in daily program link to ParlInfo bill pages
  • -Division links use APH API lookup; preamble preserved in collapsed view
  • -Frontend auto-refresh uses ETag – only re-renders when backend has new data
  • -Auto-refresh pauses when browser tab is hidden, resumes on return
  • -Isomorphic HTML sanitization – DOMPurify now runs during SSR
  • -Accessibility: aria-labels on icon buttons, role=img on status icons, sr-only speaker change text
  • -Replaced h-screen with dvh units – fixes iOS Safari bottom-bar overflow
v0.11.0Federation Chamber captions, time slider, text size controls
  • -Federation Chamber captions – both chambers polled independently
  • -Time slider to scrub through captions with tooltip showing time
  • -Text size +/- controls in captions panel
  • -Jump to latest button when scrolled up in captions
  • -View mode (Minutes/Captions) persists across page refresh via URL hash
  • -Chamber tabs shared across Minutes and Captions views
  • -Live button opens ParlView instead of YouTube
  • -Daily program parser fixes: time headings, Message from the Senate, ministerial statements, span collapsing
  • -Daily program re-scrapes at 8am (11am Tuesdays) to catch late updates
v0.10.0Rebrand to HouseLive, live captions from ParlView broadcast
  • -Rebranded from HouseMinutes to HouseLive
  • -Live captions tab – captures real-time closed captions from APH ParlView broadcast stream
  • -Captions are AI-generated by Parliament's own broadcasting service, not third-party AI
  • -Speaker change detection via caption colour codes in the broadcast
  • -Minutes and Captions top-level tabs with chamber sub-tabs
  • -Automatic HLS chunk switching for long sitting days
v0.9.1Mobile polish, program matching fixes
  • -Program panel: more prominent toggle button on mobile
  • -Program matching: 'Questions without notice' highlighted within 'At 2 pm' section
  • -Speakers display one per line on mobile for consistent layout
  • -Fix title wrapping on desktop
v0.9.0Mobile UI overhaul, adjournment indicators, daily program fixes
  • -Mobile UI overhaul: short date format, timestamp above title, program button on own row
  • -Live badge links to APH ParlView feed
  • -Adjournment indicators: amber pause icon for unexpected adjournments, green checkmark for completed items
  • -Daily program: merge 'Presentation of documents – Ministers' into parent section
  • -Strip Word bookmark anchors and IDs from daily program content
v0.8.0Search toggle, high-water-mark tracking
  • -Search toggle button (magnifying glass icon) instead of always-visible search bar
  • -High-water-mark tracking so past items stay marked done/adjourned when current match jumps back
  • -Fix stale program data flash on chamber/date change
v0.7.0Improved program matching, DRAFT disclaimer, /today route
  • -Replace keyword matching with word-stem overlap scoring for program matching
  • -DRAFT disclaimer banner above and below minutes
  • -/today route redirects to current sitting day
  • -Fix MPI matching for 'Discussion of Matter of Public Importance' text
v0.6.0PDF preview, OG metadata, faster Question Time polling
  • -PDF preview: rendered first page of daily program PDF shown at bottom of program panel
  • -Direct PDF download links for daily program and MPI
  • -Open Graph metadata for social sharing previews
  • -20-second polling interval during Question Time
v0.5.0Program matching rewrite, collapsible sections, cognate debates
  • -Rewrite program matching to use bill name containment
  • -Summary titles for unnumbered items (Documents, Attendance)
  • -Off-program indicator positioned at interruption point
  • -Done checkmarks for completed program items
  • -Collapsible sections, cognate debate groups, pre-sitting state
v0.4.0Unified search, division vote formatting
  • -Unified search across minutes and daily program with navigation
  • -Division vote formatting: linked division numbers, collapsible voter tables, AYES/NOES display
  • -Search scope buttons: All / Minutes / Program
v0.3.0Fly.io deployment, stability safeguards
  • -Fly.io deployment with Docker and persistent SQLite volume
  • -Stability safeguards: structural validation, regression protection, fetch timeouts
  • -Error boundaries around key sections
  • -Refresh failure indicator after 3 consecutive failures
v0.2.0Daily program sidebar, ParlInfo links, sitting calendar
  • -Daily program sidebar with live matching to current minute item
  • -ParlInfo links: Daily Program, Notice Paper, Votes and Proceedings, Hansard
  • -Sitting calendar with colour-coded dates
  • -Homepage with upcoming sitting dates
v0.1.0Initial release
  • -Live minutes viewer for House of Representatives and Federation Chamber
  • -Auto-refresh every 60 seconds during sitting hours
  • -Collapsible minute items with speaker names and timestamps
  • -Chamber tabs for House and Federation Chamber
  • -SQLite storage with scrape snapshots
  • -Sitting calendar from APH ICS file