Skip to content

feat: upgrade to Next 15 / React 19 and overhaul countdown reliability#9

Merged
ififi2017 merged 1 commit into
mainfrom
feat/next15-upgrade
Jul 5, 2026
Merged

feat: upgrade to Next 15 / React 19 and overhaul countdown reliability#9
ififi2017 merged 1 commit into
mainfrom
feat/next15-upgrade

Conversation

@ififi2017

Copy link
Copy Markdown
Owner

Framework & tooling:

  • Upgrade Next.js 14 → 15.5 and React 18 → 19 (async route params)
  • Replace unmaintained next-pwa with @serwist/next; migrate runtime caching 1:1 into app/sw.ts (static CacheFirst, locales SWR, pages/API NetworkFirst)
  • Switch to ESLint 9 flat config; drop legacy .eslintrc.json
  • Resolve all npm audit vulnerabilities (24 incl. 1 critical → 0)
  • Add Vitest unit tests and GitHub Actions CI (lint + test + build)

Bug fixes:

  • Stop the 15-minute reminder from firing ~60 notifications; guard Notification API availability and permission before use
  • Fix overnight shifts (e.g. 22:00-06:00) breaking after midnight
  • Replace unreliable Date-string parsing with setHours()
  • Replace alert() dialogs with inline, accessible error messages

Security:

  • Add locale allow-list validation in server i18n and manifest routes to prevent path traversal
  • Wrap manifest Referer parsing in try/catch

PWA / caching:

  • Fix runtime cache rules previously hardcoded to an old domain
  • Drop cache-busting timestamp on locale fetches so translations work offline
  • Remove duplicate service-worker registration; untrack generated sw.js

Features:

  • Add configurable "working days per month" for monthly salary, with translations for all 19 locales

Chore:

  • Extract countdown/salary logic into lib/countdown.ts
  • Remove unused dependencies (rimraf, i18next-http-backend, etc.)
  • Drop viewport userScalable:false for accessibility

Framework & tooling:
- Upgrade Next.js 14 → 15.5 and React 18 → 19 (async route params)
- Replace unmaintained next-pwa with @serwist/next; migrate runtime
  caching 1:1 into app/sw.ts (static CacheFirst, locales SWR,
  pages/API NetworkFirst)
- Switch to ESLint 9 flat config; drop legacy .eslintrc.json
- Resolve all npm audit vulnerabilities (24 incl. 1 critical → 0)
- Add Vitest unit tests and GitHub Actions CI (lint + test + build)

Bug fixes:
- Stop the 15-minute reminder from firing ~60 notifications; guard
  Notification API availability and permission before use
- Fix overnight shifts (e.g. 22:00-06:00) breaking after midnight
- Replace unreliable Date-string parsing with setHours()
- Replace alert() dialogs with inline, accessible error messages

Security:
- Add locale allow-list validation in server i18n and manifest routes
  to prevent path traversal
- Wrap manifest Referer parsing in try/catch

PWA / caching:
- Fix runtime cache rules previously hardcoded to an old domain
- Drop cache-busting timestamp on locale fetches so translations work
  offline
- Remove duplicate service-worker registration; untrack generated sw.js

Features:
- Add configurable "working days per month" for monthly salary, with
  translations for all 19 locales

Chore:
- Extract countdown/salary logic into lib/countdown.ts
- Remove unused dependencies (rimraf, i18next-http-backend, etc.)
- Drop viewport userScalable:false for accessibility

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
off-work-30 Ready Ready Preview, Comment Jul 5, 2026 1:05pm

@ififi2017
ififi2017 merged commit 29bddd6 into main Jul 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant