- Dashboard: add stats API with content status distribution, recent notifications,
and recent content updates; display active users, pending reviews, unread counts
- User management: full CRUD with role assignment, search, pagination, delete dialog
- Notification center: list with unread filter, mark as read, mark all as read,
pagination, and auto-refresh unread count
- Content editor: form validation (required fields, slug format, blur-triggered
errors), auto-save with 3s debounce and status indicator, publish confirmation
dialog, unsaved changes warning on leave
- Admin layout: add navigation links for user management, roles, and notifications
- admin-api: make request() method public for custom API calls
- gitignore: add reports/mutation/ to exclude mutation test output
- Add Content-Security-Policy and Permissions-Policy headers to nginx config
- Add same headers to next.config.mjs for dev/preview mode
- Add Referrer-Policy to next.config.mjs (was only in nginx)
- Generate production JWT/CMS secrets via openssl rand -base64 64
- Update README mark production env/security header task as complete
Archive old component versions no longer in use:
- home-content.tsx (orphan, superseded by v14)
- solution-detail-content-v1/v2 (superseded by v3)
- service-detail-content-v1/v2/v3 (superseded by v4)
- news-detail-content-v1/v2 (superseded by v3)
All pages verified to use CMS data layer:
home, products, solutions, services, cases, news, about, team, contact
Quality gates: type-check, 992 tests, coverage all passing.
- Adjust Next.js Image width/height in homepage hero to 192x48 (4:1)
matching logo.svg viewBox, so the full logo (seal + calligraphy + NOVALON)
renders instead of being cropped to a square.
- Update visual regression baselines across desktop/mobile/tablet and
chromium/firefox/webkit after the logo render fix.
- Include homepage brand visual acceptance report and manual screenshots.
Closes visual issue: logo did not show company name like header.
- Remove redundant `trackConversion('contact_form_submission')` in contact-content-v3.tsx
and rely on `trackContactForm(..., true)` to avoid double-counting conversions in GA4
- Update contact-content-v3.test.tsx assertions to match single analytics call
- Add Logo + company name + NOVALON to homepage HeroSection in home-content-v14.tsx
- Update homepage visual regression baselines across desktop/tablet/mobile
- Record progress in README.md
- Fix list-to-detail navigation on product/service/solution/case pages
- Fix soft 404 on service detail by removing (marketing)/loading.tsx and using force-dynamic
- Fix contact form submission feedback and news placeholder image handling
- Unify SSR/client authentication state in auth.ts
- Add "新闻动态" to main navigation
- Fix Playwright storageState path and Firefox footer link flakiness
- Add E2E coverage for nav dropdown, cases filter and auth token parsing
- Update visual regression baselines (desktop/tablet/mobile, chromium/webkit/firefox)
- Update README, lessons-learned and add REGRESSION_REPORT_2026-07-27.md
- Ignore .lighthouseci/ and heading-hierarchy-report.json