Skip to content

release: merge dev into main for v1.2.0 production rollout - #41

Merged
podlLev merged 72 commits into
mainfrom
dev
Jul 29, 2026
Merged

podlLev merged 72 commits into
mainfrom
dev

Conversation

@podlLev

@podlLev podlLev commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Overview

This release PR merges all features, security hardening, performance optimizations, fault tolerance enhancements, and localization updates implemented in dev into main for the v1.2.0 production rollout.


🔗 Merged Feature PRs Included in this Release


🚀 Key Summary of Changes

  • Internationalization & Localization (i18n):

    • Configured UTF-8 MessageSource bundles supporting English and Ukrainian (messages_uk.properties).
    • Dynamic weather description localization from OpenWeatherMap using resolved request locales.
  • Account Security & User Management:

    • Added email verification and password reset flows with database token lifecycle tracking.
    • Implemented automated account lockout after repeated failed sign-in attempts.
    • Added persistent "Remember-Me" session capabilities with dedicated token storage (persistent_logins).
    • Enforced strict cookie attributes (Secure, SameSite=Strict), Content-Security-Policy headers, and capped active sessions to 1 per user.
  • Resilience & Asynchronous Notifications:

    • Decoupled email delivery using Spring Application Events and asynchronous task execution (@TransactionalEventListener).
    • Integrated Resilience4j retries and circuit breakers for external weather APIs and transient SMTP operations.
  • Performance & Data Optimization:

    • Implemented database-to-API pagination (Pageable) for Users and Locations with an upper limit bound of 100 entries.
    • User-configurable unit system preference (Metric/Imperial) persisted across DB, API DTOs, and UI.
    • Bypassed rate limiting on static assets and implemented isolated per-location error boundaries on the dashboard.
  • DevOps & Infrastructure:

    • Automated testing, building, and Docker Hub deployment workflows using GitHub Actions.
    • Secured container runtime by running as a non-root user and isolating health checks to a dedicated management port.

podlLev and others added 30 commits July 16, 2026 09:48
- Stopped trusting the X-Forwarded-For header blindly in RateLimitingFilter
- Restricted proxy IP detection to trusted reverse proxy sources only
- Prevented potential brute-force bypass on /sign-in and /sign-up routes
- Sanitized request URLs in WeatherApiClient.fetchJsonNode() before logging
- Redacted the 'appid' query parameter on error paths to prevent writing the API key to application logs during parse failures or non-2xx responses
security: harden application runtime, session management, and client headers
…ints

feat: implement database-to-API pagination layer for users and locations
- add `units` column to the users table via Liquibase changeset
- default existing rows to metric
- add °C→°F and m/s→mph conversion at the presentation boundary
- round to one decimal place, half-up, so values don't display raw
  floating-point artifacts
feat: implement user-centric measurement unit preference system across database, API, and UI
podlLev and others added 27 commits July 23, 2026 11:12
…count-lockout

feat: implement Resilience4j fault tolerance and automated account lockout security
…n-cap

fix: optimize rate-limiting scope, enhance weather fallback error handling, and enforce location limits
Add remember-me, email verification/password reset, account
lockout, unit preference, dark mode, admin pagination, weather
API resilience, and rate-limit hardening to the feature list.
Add Observability, Security, and CI/CD sections; update env
var docs and project structure to match.
feat: decouple email delivery with application events, asynchronous execution, and Resilience4j retries
feat(i18n): implement internationalization, Ukrainian localization support, and bump version to v1.2.0
@podlLev podlLev self-assigned this Jul 29, 2026
@podlLev podlLev added the release Identifies a finalized version release, hotfix, or production merge label Jul 29, 2026
@podlLev
podlLev merged commit 9e6b33c into main Jul 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Identifies a finalized version release, hotfix, or production merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant