Release Changelog
Comprehensive release notes documenting notable features, competition policy updates, security enhancements, and bug fixes across all versions.
v1.2.0
Latest Release Added
- Added "View as Student" (Impersonation Mode) in admin console registration list and detail views, allowing administrators to reproduce contestant views and assist with troubleshooting without password disclosure (Jira: YAU-1759).
- Added explicit `yau_impersonate` session flag, strict View-Only restriction on all contestant write endpoints (`PUT /api/user/registrations/[id]`, `POST /api/user/registrations`, `POST /api/user/upload`), and hardened URL normalization on exit redirects (Jira: YAU-1759).
- Added sticky Impersonation Banner in contestant center with one-click return to admin console and safe simulation exit (Jira: YAU-1759).
- Added Git commit-msg and pre-push quality gates (`.githooks/`) enforcing mandatory Jira issue linkage, changelog tracking, and version consistency checks across `package.json`, `AdminLayout.astro`, and `CHANGELOG.md` (Jira: YAU-1758).
- Added Journal Publication & Copyright policy statement across all subject GUIDE and REGISTRATION highlight banners and participant forms (`register.html.astro` and `edit-[id].html.astro`) (Jira: YAU-1757).
- Added optimistic locking (`version` column) and version guard (`registrationLock.ts`) to prevent concurrent saves from overwriting newer submissions with stale form state.
- Added structured multi-supervisor (`advisors_json`) support in database and forms, replacing legacy slash-separated text parsing.
- Added prominent AI Usage Policy link in top navigation header and competition guidelines across all subjects (Jira: YAU-1754).
- Added explicit eligibility guidelines for European, UK, and Australian secondary school contestants on overseas portal (Jira: YAU-1753).
- Added two-phase deadline timeline (Phase 1 team registration vs. Phase 2 research report upload) in user center (Jira: YAU-1752).
- Added dedicated Changelog viewer page (`/changelog`) on the website and admin console navigation.
Changed
- Clarified `SUBMITTED · AWAITING REVIEW` submission status badge and added confirmation banner in user center to eliminate user anxiety over pending reviews (Jira: YAU-1748).
- Bound submission deadline labels dynamically to `CompetitionConfig.initial_paper_deadline` across all user center forms, notice templates, and confirmation emails (Jira: YAU-1756).
Fixed
- Fixed unhandled exception and table casing in `/api/admin/impersonate` endpoint by wrapping with structured try-catch error handling and standardizing on `Registrations` table (Jira: YAU-1759).
- Fixed legacy DTcms static HTML hardcoded deadline (`August 24`) in form definitions and script archives.
- Fixed stage locking to apply strictly to closed stage columns instead of rejecting entire update payloads.
v1.1.0
Added
- Added Academic Integrity Declaration (`declaration_url`) upload support and official document template download link in registration forms (Jira: YAU-1747).
- Added `SUBMISSION_DOCS` centralized file registry with `requiredForFinal` flag and `isMaterialsComplete` validation.
- Added `Materials Complete` badge on admin registration detail view and CSV export column for completeness evaluation.
- Added official announcements (102055 & 102056) for AI usage policy and competition deadline alignment.
Fixed
- Fixed issue where partial form submission could overwrite or nullify existing file attachments (`resolveFileUrl`).
- Fixed parameter binding in user registration API to preserve existing team introduction on finalist updates.
- Aligned 2026 competition rules and timelines with Tsinghua official specifications across all subject guide pages.
v1.0.1
Fixed
- Fixed the registrations constraint issue where a single student was blocked from registering for multiple different subjects in the same competition year (Jira: YAU-1711).
- Updated the unique constraint query (`findParticipantConflict`) to enforce uniqueness on the `[Year] + [Subject] + [Passport]` combination rather than blocking the same passport across all subjects.
- Synchronized paper deadline presentation text with dynamic competition configuration.
v0.1.0
Added
- Created `scripts/generate_ico.py` using Python PIL to generate high-fidelity, multi-resolution `favicon.ico` from the official SVG assets with support for sizes `[16, 32, 48, 64, 128, 256]`.
- Created master high-resolution favicon PNG `public/favicon.png` (`1024x1024`) as a reference.
- Added `<link rel="shortcut icon" href="/favicon.ico" />` in HTML layout and auth templates (`MainLayout.astro`, `AdminLayout.astro`, `login.astro`, `verify.astro`) as a standard fallback for search engines and backward compatibility.
- Added Google Search Console site ownership verification file (`google8e3f8efbaa798cd2.html`).
- Optimized `sitemap.xml` and `llm.txt` search indexing for donations and guide pages.
Fixed
- Fixed search engine and browser fallback icon issue where Google search showed the default Astro logo instead of the official Yau Science Awards icon by replacing the outdated `public/favicon.ico` at the root.
- Removed `/login.html` and `/verify` from `robots.txt` Disallow list to eliminate GSC indexing warnings.
v0.0.5
Added
- Added Cambridge Journal for Junior Scientists (CJJS) official academic partner banner and introduction section on homepage.
- Upgraded Wrangler Cloudflare tooling to version 4.95 and regenerated Worker TypeScript interfaces.
- Added detailed referrer URL tracking and deep-dive table in Traffic Analytics.
- Added AI response feedback rating (helpful / unhelpful) and docked chat assistant into Gemini-style collapsible drawer.
v0.0.4
Added
- Added attachment and image upload support to news editor in Admin Console.
- Added AI Chat conversation history archival system.
- Added mandatory Cloudflare Turnstile CAPTCHA verification before sign-in submission.
Changed
- Refactored author metadata display on article detail pages.
v0.0.3
Added
- Added Google Analytics 4 (GA4) and Firebase custom event tracking.
- Added clear buttons for member photo and uploaded submission files.
- Implemented comprehensive 301/302 redirects for all legacy ASP.NET DTcms URLs to preserve SEO search rankings.
Fixed
- Fixed 404 error caching by enforcing 302 redirects on dynamic fallback routes.
- Simplified broken-image recovery handler to single capture-phase delegate.
v0.0.2
Added
- Added dynamic homepage competition timeline and dedicated wire transfer donations page.
- Added CodeMirror JSON syntax editor for editing public timeline events in Admin Settings.
- Added Markdown rendering support for administrator internal notices.
- Added automated 30-day analytics aggregation rollup background pipeline.
- Added email notifications for all registration status transitions (Pending, Verified, Approved, Rejected).
Changed
- Normalized all award category routes to standardized lowercase format (e.g. `/competitioncategory/mathematics-home.html`).
- Completed DNS and Cloudflare edge migration to production domain `yau-science-awards.org`.
Fixed
- Resolved HTML entity double-encoding bug across news content and subject guide articles.
- Fixed table overflow and alignment on admin registration lists.
v0.0.1
Added
- Initial project scaffolding and migration from legacy DTcms ASP.NET application to Astro SSR on Cloudflare Workers.
- Implemented passwordless Magic Link administrative authentication with encrypted session cookies.
- Integrated Cloudflare D1 SQL database and Cloudflare R2 object storage for participant file uploads.
- Built core participant submission portal with team registration, instructor profiles, and multi-file uploads.
- Built Admin Console for managing news bulletins, competition registrations, and site configurations.
- Integrated AI-powered scientific competition chatbot with custom knowledge base retrieval.