From 4207783cdd1fef97613656fcbf7f1f47b4962d1a Mon Sep 17 00:00:00 2001 From: Xevion Date: Thu, 29 Jan 2026 12:27:46 -0600 Subject: [PATCH] docs: add changelog entries and roadmap completion tracking --- Cargo.toml | 2 +- docs/ARCHITECTURE.md | 31 +++++++++++++++++++++++++++---- docs/CHANGELOG.md | 36 +++++++++++++++++++++++++++++++++++- docs/README.md | 3 ++- docs/ROADMAP.md | 12 ++++++++---- 5 files changed, 73 insertions(+), 11 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b50c2e3..bc09471 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "banner" -version = "0.3.4" +version = "0.5.0" edition = "2024" default-run = "banner" diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index a633de4..848f356 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -4,10 +4,33 @@ The Banner project is built as a multi-service application with the following components: -- **Discord Bot Service**: Handles Discord interactions and commands -- **Web Service**: Serves the React frontend and provides API endpoints -- **Scraper Service**: Background data collection and synchronization -- **Database Layer**: PostgreSQL for persistent storage +- **Discord Bot Service**: Handles Discord interactions and commands (Serenity/Poise) +- **Web Service**: Axum HTTP server serving the SvelteKit frontend and REST API endpoints +- **Scraper Service**: Background data collection and synchronization with job queue +- **Database Layer**: PostgreSQL 17 for persistent storage (SQLx with compile-time verification) +- **RateMyProfessors Client**: GraphQL-based bulk sync of professor ratings + +### Frontend Stack + +- **SvelteKit** with Svelte 5 runes (`$state`, `$derived`, `$effect`) +- **Tailwind CSS v4** via `@tailwindcss/vite` +- **bits-ui** for headless UI primitives (comboboxes, tooltips, dropdowns) +- **TanStack Table** for interactive data tables with sorting and column control +- **OverlayScrollbars** for styled, theme-aware scrollable areas +- **ts-rs** generates TypeScript type bindings from Rust structs + +### API Endpoints + +| Endpoint | Description | +|---|---| +| `GET /api/health` | Health check | +| `GET /api/status` | Service status, version, and commit hash | +| `GET /api/metrics` | Basic metrics | +| `GET /api/courses/search` | Paginated course search with filters (term, subject, query, open-only, sort) | +| `GET /api/courses/:term/:crn` | Single course detail with instructors and RMP ratings | +| `GET /api/terms` | Available terms from reference cache | +| `GET /api/subjects?term=` | Subjects for a term, ordered by enrollment | +| `GET /api/reference/:category` | Reference data lookups (campuses, instructional methods, etc.) | ## Technical Analysis diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 8713be4..310920c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,7 +6,41 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] -## [0.1.0] - 2026-01 +## [0.5.0] - 2026-01-29 + +### Added + +- Multi-select subject filtering with searchable comboboxes. +- Smart instructor name abbreviation for compact table display. +- Delivery mode indicators and tooltips in location column. +- Page selector dropdown with animated pagination controls. +- FLIP animations for smooth table row transitions during pagination. +- Time tooltip with detailed meeting schedule and day abbreviations. +- Reusable SimpleTooltip component for consistent UI hints. + +### Changed + +- Consolidated query logic and eliminated N+1 instructor loads via batch fetching. +- Consolidated menu snippets and strengthened component type safety. +- Enhanced table scrolling with OverlayScrollbars and theme-aware styling. +- Eliminated initial theme flash on page load. + +## [0.4.0] - 2026-01-28 + +### Added + +- Web-based course search UI with interactive data table, multi-column sorting, and column visibility controls. +- TypeScript type bindings generated from Rust types via ts-rs. +- RateMyProfessors integration: bulk professor sync via GraphQL and inline rating display in search results. +- Course detail expansion panel with enrollment, meeting times, and instructor info. +- OverlayScrollbars integration for styled, theme-aware scrollable areas. +- Pagination component for navigating large search result sets. +- Footer component with version display. +- API endpoints: `/api/courses/search`, `/api/courses/:term/:crn`, `/api/terms`, `/api/subjects`, `/api/reference/:category`. +- Frontend API client with typed request/response handling and test coverage. +- Course formatting utilities with comprehensive unit tests. + +## [0.3.4] - 2026-01 ### Added diff --git a/docs/README.md b/docs/README.md index 3a6ef11..bf9ea39 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,8 @@ This folder contains detailed documentation for the Banner project. This file ac ## Files -- [`FEATURES.md`](FEATURES.md) - Current features, implemented functionality, and future roadmap +- [`CHANGELOG.md`](CHANGELOG.md) - Notable changes by version +- [`ROADMAP.md`](ROADMAP.md) - Planned features and priorities - [`BANNER.md`](BANNER.md) - General API documentation on the Banner system - [`ARCHITECTURE.md`](ARCHITECTURE.md) - Technical implementation details, system design, and analysis diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index be97ade..e5937a5 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -3,12 +3,9 @@ ## Now - **Notification and subscription system** - Subscribe to courses and get alerts on seat availability, waitlist movement, and detail changes (time, location, professor, seats). DB schema exists. -- **RateMyProfessor integration** - Show professor ratings inline with search results and course details. - **Professor name search filter** - Filter search results by instructor. Backend code exists but is commented out. -- **Subject/major search filter** - Search by department code (e.g. CS, MAT). Also partially implemented. - **Autocomplete for search fields** - Typeahead for course titles, course numbers, professors, and terms. -- **Test coverage expansion** - Broaden coverage with pure function tests (term parsing, search parsing, job types), session/rate-limiter tests, and more DB integration tests. -- **Web course search UI** - Add a browser-based course search interface to the dashboard, supplementing the Discord bot. +- **Test coverage expansion** - Broaden coverage with session/rate-limiter tests and more DB integration tests. ## Soon @@ -29,3 +26,10 @@ - **CRN direct lookup** - Look up a course by its CRN without going through search. - **Metrics dashboard** - Surface scraper and service metrics visually on the web dashboard. - **Privileged error feedback** - Detailed error information surfaced to bot admins when commands fail. + +## Done + +- **Web course search UI** - Browser-based course search with interactive data table, sorting, pagination, and column controls. *(0.4.0)* +- **RateMyProfessor integration** - Bulk professor sync via GraphQL with inline ratings in search results. *(0.4.0)* +- **Subject/major search filter** - Multi-select subject filtering with searchable comboboxes. *(0.5.0)* +- **Test coverage expansion** - Unit tests for course formatting, API client, query builder, CLI args, and config parsing. *(0.3.4–0.4.0)*