Skip to content

v0.7.0

Choose a tag to compare

@Xevion Xevion released this 25 Feb 22:48
c82ceb1

0.7.0 (2026-02-25)

Features

  • Accent-insensitive search via PostgreSQL unaccent extension (e6fb3e1)
  • Add BlueBook course evaluation scraper and database schema (bd2c3c3)
  • Add incremental BlueBook scraping with per-subject intervals (17d205c)
  • Add pending status, nickname matching, and review-course scoring to RMP matching (7ccfb06)
  • Add public instructor directory and profile pages (eb8c6cb)
  • Add RMP review scraping with per-professor scheduling (5e18ecf)
  • Add ScoreBar component with layerchart visualization and Storybook decorators (c32970b)
  • Add search autocomplete with server-side trigram suggestions (616974f)
  • Add section count to instructor suggestions and fix audit sort order (2edfe45)
  • admin: Add BlueBook instructor linking admin UI and API (4e1af55)
  • admin: Add term column to scraper jobs and audit tables (9964218)
  • backend: Add app_kv store to persist scheduler and bot state across restarts (69090d0)
  • backend: Add Cache-Control headers to reference and search-options routes (80f5856)
  • backend: Spawn background reference cache refresh every 30 minutes (a183776)
  • Bayesian instructor scoring combining RMP and BlueBook data (c47bb8c)
  • bot: Add subject and term autocomplete to search command (feb0142)
  • debug: Add dev auth bypass for local testing (fdea62c)
  • Enrich RMP matching with review metadata and unified subject scoring (ddcfcd6)
  • Extract SortSelect component with direction toggle (d85206c)
  • frontend: Add server-side API proxy and fix SSR compatibility (f562eba)
  • frontend: Compress campus filter groups into compact availability URL param (a2e9eb6)
  • frontend: Redesign health and admin status pages (843eacc)
  • Handle overenrolled sections in seat availability display (5f699cf)
  • infra: Add database backup script with R2 upload and Docker support (26b3349)
  • Integrate BlueBook scraper into scheduler with admin trigger endpoint (9173aa7)
  • log: Enhance tracing formatter with syntax highlighting and smart field grouping (8d58f8a)
  • Replace LATERAL RMP subqueries with materialized view (730e75b)
  • scraper: Per-term adaptive scheduling with archived term tiers (1491370)
  • scripts: Harden db reset with dynamic prompt (b793d82)
  • Slug-based instructor filtering with autocomplete (07aa9e5)
  • Store instructors without email addresses (d23d554)
  • stream: Add ScraperStats, ScraperTimeseries, and ScraperSubjects stream kinds (f32b727)
  • Support numeric ID and email-prefix lookup for instructor endpoints (00649fa)
  • Surface BlueBook ratings and composite scores across instructor views (57185a8)
  • Surface instructor subjects, years, and email in bluebook link review (6913126)
  • Switch frontend from SPA (adapter-static) to SSR with Bun (bc5e60c)
  • terms: Add multi-term scraping support with database table and admin API (f5d13b0)
  • web: Replace TraceLayer with ULID-based request ID middleware (8d2a1cd)

Bug Fixes

  • backend: Change valid year range to start in 2001 (e081ace)
  • backend: Make hours_week nullable to handle null API responses (ae035ec)
  • backend: Make instructional_method option to support older semesters (7d97cc9)
  • backend: Make wait_capacity, wait_count, and meeting_type nullable for older courses (5445ba8)
  • bluebook: Tolerate mismatched subject prefixes and non-breaking spaces in course parsing (22e85c1)
  • ci: Update bytes dependency for security audit fix, add security audits to check script (049938a)
  • deps: Force ajv update to satisfy security vulnerability (4626df1)
  • deps: Update time to 0.3.47 for RUSTSEC-2026-0009 (1321d1e)
  • frontend: Card slide animation null height issues (e78a46c)
  • frontend: Include title in teaching history each-block key to prevent duplicates (f2afa8a)
  • frontend: Use pointer cursor on instructor link only, ignore link clicks for row expansions (4679320)
  • frontend: Use proper theme variables for styling scrollbar handle (516f567)
  • Improve search autocomplete popover trigger and z-index handling (bb5aa3d)
  • infra: Copy .sqlx cache and set SQLX_OFFLINE in Dockerfile (4014e64)
  • infra: Install mold, add nextest, timeouts, and bun ci to CI (9b33205)
  • scripts: Guard against re-entrant cleanup and handle SIGINT exit cleanly (7cd4650)
  • Widen credit hour columns from INTEGER to DOUBLE PRECISION (3b5184c)

Performance Improvements

  • backend: Stream schedule cache loading with SQL-side meeting extraction (0ec9eb7)
  • db: Drop redundant/unused indexes, add scrape job index (6663a99)
  • scripts: Speed up check script by limiting run build & test scope to lib tests (83e25e5)

Code Refactoring

  • admin: Extract shared UI components and composables from admin pages (c36d7d0)
  • backend: Extract SearchOptionsCache with typed storage and singleflight (80abd1d)
  • backend: Migrate audit old_value/new_value from TEXT to JSONB (7c8ab19)
  • Clean up test helpers, switch reqwest to rustls, use mold linker (5947633)
  • Consistent createContext, page titles, error page, test colocation (0be4293)
  • db: Restructure database layer with context and event emission (5551dc3)
  • Extract reusable score display components from inline rating logic (0c1134f)
  • Extract RMP data layer, add frontend composables and UI components (30c5372)
  • frontend: Extract filter logic into registry-driven pure functions (aad0858)
  • frontend: Hoist searchOptionsCache to module scope (001dc0b)
  • frontend: Move search fetching into SvelteKit load function (f40e648)
  • middleware: Consolidate rate limiting into unified module (a69ba89)
  • Normalize RMP data with sanitized nullable ratings (69ec375)
  • query: Replace Duration with NaiveTime for course search time parameters (6252777)
  • Remove banner comments across codebase (6813473)
  • Reorganize module structure, reduce top-level modules (77e23b6)
  • Replace boolean confidence flags with continuous confidence score (97dc185)
  • scraper: Improve parse error handling and log formatting (39c0ad6)
  • scripts: Extract shared targets, commands, and preflight into reusable modules (ecca783)
  • Simplify LazyRichTooltip to use native tooltip open state (025c2c4)
  • tracing: Improve log messages across codebase, standardize duration formatting (0f230e6)
  • Unify instructor rating type names and add Brief/Full source variants (80912b1)
  • web: Consolidate admin pages into tabbed scraper interface (6fb7d79)

Miscellaneous

  • Normalize codebase symbols (4b80c42)
  • Reformat files (968f6f4)
  • Remove section banner comments and dividers (5a7bf21)
  • scripts: Add vite build to frontend check script (ce10373)