This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+11 more
Affected surfaces
Summary
AI summaryAdded an in-app notification system, Polish language support, and trip duplication capability.
Full changelog
v2.8.0
New Features
In-App Notification System
- Real-time in-app notifications with bell icon in the navbar
- Notification types: simple, boolean (accept/decline), and navigation
- Trip invites, booking changes, and reminders delivered in-app
- Mark as read/unread, delete individual or all notifications
- Unread count badge on the bell icon
- Dedicated notifications page with full history
Polish Language Support
- Added Polish (pl) as the 13th supported language
Trip Copy / Duplicate
- Duplicate any trip from the dashboard including all places, days, assignments, and settings
About Section in Settings
- Shows current TREK version and Discord community link in user settings
MCP Rate Limiting
- New
MCP_RATE_LIMITenvironment variable to control MCP API request rate per user (default: 60/min)
Map Preview in Settings
- Interactive map preview when configuring default latitude/longitude — click to set coordinates
Trip Member Count on Dashboard
- Dashboard cards now display the number of trip members
Holiday Name Tooltip in Vacay
- Hovering over a holiday in the Vacay calendar now shows the holiday name
Comprehensive Backend Test Suite
- 25+ integration test files covering all API endpoints
- 15+ unit test files for services, middleware, and utilities
- WebSocket connection tests
- Vitest configuration with test database isolation
Bug Fixes
Date Display Timezone Bug (#351)
- Fixed off-by-one day display for users in timezones west of UTC
- All date-only strings now parse and display in UTC consistently
- Fixed across 16 frontend files (formatters, date pickers, PDF export, budget, photos, etc.)
Safari Immich Photo Integration (#381)
- Fixed 401 errors when loading Immich photos in Safari
- Replaced ephemeral token +
<img src>approach with directfetch()using cookie auth (blob URLs) - Added concurrency limiter (max 6 parallel fetches) to prevent
ERR_INSUFFICIENT_RESOURCES - Queue cleared when photo picker closes so gallery thumbnails load immediately
Immich Shared Photo Proxy
- Shared photos now correctly use the photo owner's Immich credentials for proxying
Immich HTTPS Redirect Detection
- Immich connection test now detects http→https redirects and updates the URL automatically
Vacay Bugs
- Fixed entitlement counter, year deletion, and year creation bugs
- Fixed
selectedYearnot resetting when the active year is deleted
Collab Note Attachments (#343)
- Fixed broken file attachments in collaborative notes
Invite Link Registration (#335)
- Invite links now correctly show the registration page
Mobile Day Detail (#311)
- Day detail panel now opens on single tap instead of requiring double-click on mobile
Day Detail Panel
- Deselecting a day when closing the DayDetailPanel now works correctly
Day Note Validation
- Required indicator shown on day note title, save button disabled when empty
Deleted Chats in Share View
- Deleted chat messages no longer appear in the public share view
iOS Login Fix
- Fixed login issues on iOS Safari
Trip Copy Fix
- Fixed edge case when duplicating trips
APP_URL in Emails
- Email notification links now correctly use
APP_URLwhen defined
Architecture & Refactoring
Service Layer Extraction
- Extracted all business logic from route handlers into dedicated service modules
- 25+ new service files: authService, tripService, placeService, dayService, assignmentService, budgetService, packingService, reservationService, collabService, fileService, immichService, mapsService, weatherService, atlasService, vacayService, adminService, backupService, shareService, oidcService, tagService, categoryService, settingsService, dayNoteService, notificationPreferencesService, inAppNotifications
- Routes now only handle HTTP concerns (request parsing, response formatting)
- Express app setup extracted into
app.ts
Cookie Security
- Session cookie changed to
SameSite: Laxfor improved CSRF protection
SSRF Protection
- Bypass fix for internal IP SSRF check enforcement
Infrastructure & Deployment
Auto Version Bumping (CI)
- New CI workflow: merging dev→main auto-bumps minor version (2.7.x → 2.8.0)
- Direct pushes to main auto-bump patch version (2.8.0 → 2.8.1)
- Version written to both package.json files, git-tagged, Docker image tagged automatically
Helm Chart Improvements
- Added
ingressClassNamesupport - Added config/secret checksum annotations to deployment (auto-restart on config change)
- All missing environment variables from README added to Helm chart values
Docker Image
- Removed unnecessary files from Docker image via updated
.dockerignore
Unraid Template
- Updated environment variables in Unraid template
GitHub Workflows
- New test workflow running on PRs
- Auto-close workflow for empty/untitled issues
- Structured bug report issue template (YAML form)
- Feature request bad names exclusion
SonarQube
- Added
sonar-project.propertiesfor code quality scanning
Documentation & Community
Contributing Guidelines
- New
CONTRIBUTING.mdwith PR rules: discuss in Discord#github-prfirst, PRs targetdevbranch - Wiki page with full tech stack, development setup, and detailed guidelines
Wiki Refresh
- New Security page (encryption, MFA, rate limiting, CSRF, SSRF, audit logging)
- Updated: Environment Variables, Admin Panel, Photos, Collab, Budget, File Management, Installation (Helm/Unraid), Trip Planning
- All feature pages brought up to date with current dev state
Discord & Translation Sync
- Discord community links added throughout the app
- Translation files synced across all 13 languages
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Beta — feedback welcome: [email protected]