mirror of
https://github.com/Xevion/banner.git
synced 2026-01-31 08:23:35 -06:00
152 lines
7.9 KiB
Markdown
152 lines
7.9 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
|
## [0.6.2](https://github.com/Xevion/Banner/compare/v0.6.1...v0.6.2) (2026-01-31)
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
* **cli:** Add proper flag validation for check script ([2acf52a](https://github.com/Xevion/Banner/commit/2acf52a63b6dcd24ca826b99061bf7a51a9230b1))
|
|
* Re-add overflow hidden for page transitions, but with negative margin padding to avoid clipping ([9e825cd](https://github.com/Xevion/Banner/commit/9e825cd113bbc65c10f0386b5300b6aec50bf936))
|
|
* Separate Biome format and lint checks to enable auto-format ([ac8dbb2](https://github.com/Xevion/Banner/commit/ac8dbb2eefe79ec5d898cfa719e270f4713125d5))
|
|
* **web:** Prevent duplicate searches and background fetching on navigation ([5dd35ed](https://github.com/Xevion/Banner/commit/5dd35ed215d3d1f3603e67a2aa59eaddf619f5c9))
|
|
|
|
## [0.6.1](https://github.com/Xevion/Banner/compare/v0.6.0...v0.6.1) (2026-01-31)
|
|
|
|
|
|
### Features
|
|
|
|
* **build:** Auto-regenerate TypeScript bindings on source changes ([e203e8e](https://github.com/Xevion/Banner/commit/e203e8e182f7a0b0224a8f9e6bf79d15259215a2))
|
|
* **course:** Distinguish async from synchronous online courses ([8bfc14e](https://github.com/Xevion/Banner/commit/8bfc14e55c1bdf5acc2006096476e0b1eb1b7cc6))
|
|
* **scraper:** Improve dashboard clarity with stat tooltips ([1ad614d](https://github.com/Xevion/Banner/commit/1ad614dad03d3631a8d119203786718c814e72c7))
|
|
* **scraper:** Improve results visibility and loading states ([c533768](https://github.com/Xevion/Banner/commit/c53376836238f3aca92ac82cd5fd59a077bcceff))
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
* Avoid status flickering on subjects table ([2689587](https://github.com/Xevion/Banner/commit/2689587dd53c572a65eeb91f74c737662e1f148b))
|
|
* **ci:** Add postgres container service for rust tests ([ebb7a97](https://github.com/Xevion/Banner/commit/ebb7a97c113fa1d4b61b8637dfe97cae5260075c))
|
|
* **ci:** Fix rust/frontend/security job failures and expand local checks ([dd148e0](https://github.com/Xevion/Banner/commit/dd148e08a0b6d5b7afe4ff614d7d6e4e4d0dfce6))
|
|
* **data:** Decode HTML entities in course titles and instructor names ([7d2255a](https://github.com/Xevion/Banner/commit/7d2255a988a23f6e1b1c8e7cb5a8ead833ad34da))
|
|
* **metrics:** Always emit baseline metrics on initial course insertion ([16039e0](https://github.com/Xevion/Banner/commit/16039e02a999c668d4969a43eb9ed1d4e8d370e1))
|
|
|
|
|
|
### Code Refactoring
|
|
|
|
* **terms:** Move term formatting from frontend to backend ([cbb0a51](https://github.com/Xevion/Banner/commit/cbb0a51bca9e4e0d6a8fcee90465c93943f2a30e))
|
|
* Use friendly term codes in URL query parameters ([550401b](https://github.com/Xevion/Banner/commit/550401b85ceb8a447e316209b479c69062c5b658))
|
|
|
|
|
|
### Continuous Integration
|
|
|
|
* Add Release Please automation for changelog and version management ([6863ee5](https://github.com/Xevion/Banner/commit/6863ee58d0a5778303af1b7626b2a9eda3043ca0))
|
|
* Split quality checks into parallel jobs with security scanning ([3494341](https://github.com/Xevion/Banner/commit/3494341e3fbe9ffd96b6fcd8abbe7f95ecec6f45))
|
|
|
|
|
|
### Miscellaneous
|
|
|
|
* Add ts-rs generated bindings ([2df0ba0](https://github.com/Xevion/Banner/commit/2df0ba0ec58155d73830a66132cb635dc819e8a9))
|
|
* Update frontend packages ([acccaa5](https://github.com/Xevion/Banner/commit/acccaa54d4455500db60d1b6437cad1c592445f1))
|
|
|
|
## [Unreleased]
|
|
|
|
## [0.6.0] - 2026-01-30
|
|
|
|
### Added
|
|
|
|
- User authentication system with Discord OAuth, sessions, admin roles, and login page with FAQ.
|
|
- Interactive timeline visualization with D3 canvas, pan/zoom, touch gestures, and enrollment aggregation API.
|
|
- Scraper analytics dashboard with timeseries charts, subject monitoring, and per-subject detail views.
|
|
- Adaptive scraper scheduling with admin endpoints for monitoring and configuration.
|
|
- Scrape job result persistence for effectiveness tracking.
|
|
- WebSocket support for real-time scrape job monitoring with connection status indicators.
|
|
- Course change auditing with field-level tracking and time-series metrics endpoint.
|
|
- Audit log UI with smart JSON diffing, conditional request caching, and auto-refresh.
|
|
- Calendar export web endpoints for ICS download and Google Calendar redirect.
|
|
- Confidence-based RMP matching with manual review workflow and admin instructor UI.
|
|
- RMP profile links and confidence-aware rating display.
|
|
- Name parsing and normalization for improved instructor-RMP matching.
|
|
- Mobile touch controls with gesture detection for timeline.
|
|
- Worker timeout protection and crash recovery for job queue.
|
|
- Build-time asset compression with encoding negotiation (gzip, brotli, zstd).
|
|
- Smart page transitions with theme-aware element transitions.
|
|
- Search duration and result count feedback.
|
|
- Root error page handling.
|
|
- Login page with FAQ section and improved styling.
|
|
|
|
### Changed
|
|
|
|
- Consolidated navigation with top nav bar and route groups.
|
|
- Centralized number formatting with locale-aware utility.
|
|
- Modernized Justfile commands and simplified service management.
|
|
- Persisted audit log state in module scope for cross-navigation caching.
|
|
- Relative time feedback and improved tooltip customization.
|
|
|
|
### Fixed
|
|
|
|
- Instructor/course mismatching via build-order-independent map for association.
|
|
- Page content clipping.
|
|
- Backend startup delays with retry logic in auth.
|
|
- Banner API timeouts increased to handle slow responses.
|
|
- i64 serialization for JavaScript compatibility, fixing avatar URL display.
|
|
- Frontend build ordering with `-e` embed flag in Justfile.
|
|
- Login page centering and unnecessary scrollbar.
|
|
- ts-rs serde warnings.
|
|
|
|
## [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
|
|
|
|
- Live service status tracking on web dashboard with auto-refresh and health indicators.
|
|
- DB operation extraction for improved testability.
|
|
- Unit test suite foundation covering core functionality.
|
|
- Docker support for PostgreSQL development environment.
|
|
- ICS calendar export with comprehensive holiday exclusion coverage.
|
|
- Google Calendar link generation with recurrence rules and meeting details.
|
|
- Job queue with priority-based scheduling for background scraping.
|
|
- Rate limiting with burst allowance for Banner API requests.
|
|
- Session management and caching for Banner API interactions.
|
|
- Discord bot commands: search, terms, ics, gcal.
|
|
- Intelligent scraping system with priority queues and retry tracking.
|
|
|
|
### Changed
|
|
|
|
- Type consolidation and dead code removal across the codebase.
|