Releases: ramteid/zerf-time-absence-management
Releases · ramteid/zerf-time-absence-management
Release list
Release v0.1.4
[0.1.4] - 2026-08-09
Added
- Scope user list to approver relationships via /reports/users
Fixed
- Fix custom-range mobile layout (employee row, then Von/Bis)
- Clean side-by-side mobile filter layout via display:contents
- Stop the period picker collapsing the employee select on mobile
- Keep employee and period pickers side by side on mobile
- Show the hours unit on the flextime balance tile
- Stop filter controls overlapping on mobile
- Group team report by role, fix flextime month-scope, fix mobile layout
- Show real event times and drop sqlx query noise from System Log
- Allow editing default days and expiry on a used category
- Repair five regressions from the 41dd1b8 hardening pass
- Repair five regressions from the 41dd1b8 hardening pass
- Stop a blank period from fanning out 2000 API requests
- Cap unbounded custom-range absence/holiday lookups
- Correct deploy scripts flag quoting and tier2 clear
- Resolve 30+ logic issues across backend and frontend
Release v0.1.3
[0.1.3] - 2026-08-07
⚠️ Breaking Changes
- Document postgres named-volume breaking change and migration
The postgres container now mounts a named volume
(zerf_postgres_db_data) at /data/db. Existing deployments must copy their
PostgreSQL data directory from the previous anonymous volume into
zerf_postgres_db_data before upgrading, or the database will start empty.
See docs/UPGRADING.md.
Added
- Render independent leave-account columns in the team report
- Queue outbound email delivery with retry and a circuit breaker
- Add manual "Back up now" trigger, fix Upload now placement
- Couple leave-account access to entitlement and tile visibility
- Include comment in the new absence request email
- Align dashboard card and assistant relevance
- Provisional manual sends, an exclusion list, and a status card
- Use auto-growing textarea for recipient addresses
- Auto-select absence categories, support multiple recipients
- Show single entry edits individually, full detail for weeks
- Email a monthly payroll report to the tax office
- Record week approvals as one audit event per week
- Deep-link from pending approvals and show entry comments
- Support recurring manual holidays
- Bundle backups into a single zip archive
- Larger desktop typography via rem root font-size
- Larger typography, centered page width cap, CSS modularization
- Remove the 14-hour per-day cap
- Central delivery facade and opt-in admin error alerts
- Add System Log page and paginate the Audit Log
- Require a valid share URL to enable backup upload
- Add null-safe name comparison and update sorting logic in TeamUsers
- Implement role-based avatar colors and sorting in user lists
- Group the combined timesheet PDF export by role
- Color avatars by role and group rosters by role
- Zero leave days on assistant role selection, restore on switch back
- Hide irrelevant fields for assistant role instead of disabling them
- Add Playwright e2e suite with backup/restore verification
- Self-load holidays for out-of-range years in request dialog
- Capture pg_tde keyring with each backup for physical recovery
- Replace wrapping settings tabs with mobile dropdown
- Send email notification on admin password reset
- Enable team lead assistant management by default
- Preserve time data when disabling time tracking, add missing i18n
- Restore lz4 compression on audit_log via migration 029
- Add 10-year hard-coded retention for audit_log
- Add user archiving and restore
- Allow team leads to create and manage assistant users
- Sort users alphabetically in all list views
- Wire base annual_leave_days through user create/update
- Per-employee category enable/disable
- Persistent backup scheduling, count-based retention, and admin system-error notifications
- Interval in days, run daily at 4am UTC
- Redesign monthly PDF export as per-employee queue
- Rename Nextcloud Upload tab to Nextcloud Backups
- Nextcloud upload for DB backups and monthly timesheet PDFs
- Add per-user submission auto-approval, make all auto-approvals silent
- Per-option info icons in the AbsenceCategoryDialog
- Make absence categories fully configurable
- Extend automatic break deduction to two configurable tiers
- Implement automatic break deduction
- Add optional hire date for accurate leave-entitlement proration
- Generate timesheet export PDFs in the backend
Changed
- Simplify SMTP sending with a guarded send wrapper and timeout
- Remove redundant leave-accounts card from Account page
- Shrink shipped images and keep build cache off the layer graph
- Simplify TeamReport component by removing leave account handling and updating test fixtures
- Update team report response type and simplify absence record handling in tests
- Update workday handling to support flexible scheduling and improve documentation
- Move upload button to shared actions bar
- Remove product name from email copy and harden restore selection
- Simplify payroll and backup copy
- Drop the "Sonstige Abwesenheit" catch-all category
- Unify Reports page into Employee/Team tabs with shared toolbar
- Centralize generated copy
- Use query_scalar for the category active check
- Remove system-error alert emails, keep in-app only
- Remove redundant upload failure notification logic and update documentation
- Move allow-team-lead-manage-assistants setting to Users page
- Reorganize FlextimeSection layout and improve responsive design
- Update development workflow guidelines in AGENTS.md
- Update archived users section to match merged Users page
- Unify 'member' terminology to 'user'
- Merge archived users into Users settings page
- Centralize post-auth data loading in one shared loader
- Remove UPGRADING.md
- Reflect current state (self-contained backup image, postgres caps)
- Correct data-at-rest encryption docs and add recovery/migration guidance
- Document postgres named-volume breaking change and migration
- Replace user deactivation with archiving
- Unify Admin and Team Settings into a single Settings menu item
- Sync user-guide table of contents and fix duplicate table row
- Fix several user-guide.md inaccuracies found during a full audit
- Collapse cost flags into cost_type enum; drop team_visible
- Remove jurisdiction references from break deduction comments
- Extract inline styles to CSS utility classes
Dependencies
- Refresh Cargo.lock via cargo update
Fixed
- Retry queue-entry deletes after confirmed email delivery
- Grant assistant category access before setting leave-account entitlement
- Wait for the category list to load before clicking Add
- Default new categories to the end of the sort order
- Update leave-account card selector after tile redesign
- Build docker images sequentially to avoid CI build races
- Use numeric --chmod for static asset COPY
- Compute automatic break deduction against the day's total, not per block
- Keep "Back up now" responsive during failure backoff
- Translate absence category, align hours table, drop absence total
- Add padding and fix alignment on leave account cards
- Add missing translations for team report vacation columns
- Pre-pull postgres image with retry for integration tests
- Enhance TeamReport table with wrapping-optimized headers and add corresponding test
- Restore the custom date and time pickers on touch devices
- Stop Safari collapsing the dialog body to its padding
- Use native mobile time input fallback
- Remove unused payroll report notice from AdminPayrollReport
- Make payroll send status non-blocking
- Harden dialog interaction handling
- Complete entry dialog edge-case hardening
- Harden entry dialog rendering and fallback behavior
- Harden time entry dialog browser compatibility
- Tile must require approval even when hours aren't reported
- Show hours with two decimal places
- Correct the dashboard card's sent state and colour split
- Prevent approval queue card headers from overflowing on mobile
- Match the established 'selected day' phrasing in the Send now hint
- Clarify the Send now hint now that it doesn't skip the scheduled delivery
- A manual send no longer replaces the scheduled delivery
- Only mark categories unpaid explicitly, not by cost_type
- Validate backup selection explicitly
- Fix label overflow and upload actions layout
- Land team leads on the leftmost tab, sort team users list
- Fix payroll report category list translation and layout
- Require full approval and pre-start correctness on the Nextcloud export too
- Correct the flextime claim for no-cost absence days
- Describe absence cost types from the employee's perspective
- Restore shared input style and equal widths for flextime date pickers
- Guard category-picker save against races and dropped edits
- Remove sick-like qualifier from auto-approve label
- Correct German case agreement in no-cost help text
- Fix light-theme color-scheme so inputs stay light when OS is dark
- Clarify no-cost absence category label and help text
- Fix date picker input theme and flextime section overflow
- Wrap dialog footer buttons onto multiple rows
- Count pending weeks, not time-entry rows, in approval reminders
- Make metadata cp best-effort in direct dump.enc path
- Fix three logic errors in restore.sh
- Preserve line breaks in notification body text
- Remove redundant table-wrap on approval queue cards
- Remove PasswordCredential API calls interfering with password managers
- Translate error notification and report-upload alert text
- Make absence dates weekend/holiday-safe, fix renamed audit-log selector
- Require review for start-date reexports
- Preserve timesheet export integrity
- Remove orphaned test and unused import after notification removal
- Improve handling of unexportable timesheet entries and enhance notification details
- Update user-roster selector after settings card was added above list
- Update assistant-setting test to use Users page
- Resolve rejected entry lifecycle traps
- Harden timesheet PDF export requeue
- Hold report export for pending absences
- Tighten export readiness checks
- Close export and workflow edge cases
- Four correctness defects in PDF, archive, weekly-status, and absence behavior
- Harden reopen and reminder workflows
- Remove -i from docker exec where no host stdin is needed
- Correct backfill logic and add unit tests
- Resolve 7 audit findings across submission, export, and reopen workflows
- Correct phantom-year guard and update tests for pessimistic sourcing
- Correct vacation/absence logic holes and backup/restore defects
- Adjust bell position and sidebar width for improved layout
- Scope team settings to assigned approvers
- Enable allow_team_lead_manage_assistants before team lead tests
- Harden backup restore flow
- Restore PDF total break-adjustment and add archiving cancellation_pending test
- Close archived-user leaks in reopen requests and approval reminders, unblock absence cancellation
- Resolve remaining timesheet workflow issues
- Resolve audit findings in absence calendar, archiving, holiday idempotency, and rep...
Release v0.1.2
[0.1.2] - 2026-06-07
Changed
- Rename README title to Zerf Time & Absence Management
- Simplify security section in README, move details to docs/security.md
- Replace marketing language with factual descriptions
- Trim sales language from Why Zerf section
- Add security section and trim sales copy from README
- Rewrite README overview, features, and quick setup sections
- Add table of contents to user guide
Fixed
- Tag release images with full vX.Y.Z version to match git tags
- Suppress ghost danger active hint
- Improve dashboard approval interactions
- Freeze appTodayDate in Reports tests to avoid date-sensitive failures
- Anchor sed patterns with ^ and $ to prevent partial variable name matches
- Move Abmelden button to far right in mobile menu header
- Show Abmelden label on logout button in mobile menu header
- Move sign out button to profile row in mobile menu
- Clip more sheet animation to overlay bounds so nav bar stays visible
- Mobile more sheet no longer covers bottom nav bar
- Always pull registry image when ZERF_VERSION is not dev
Release v0.1.1
[0.1.1] - 2026-05-29
Added
- Add ZERF_VERSION=dev mode for local builds
- Add version and git hash OCI labels to Docker image
Changed
- Accept version arg in start scripts, replace debug compose with DEBUG env var
- Replace debug script and compose overlay with DEBUG env var
Fixed
- Sync Cargo.lock with Cargo.toml after release version injection
- Remove redundant focus outline rules on checkbox
- Suppress tap highlight and text-selection flash on checkbox labels
- Show ZERF prefix in setup screen heading
- Custom checkbox rendering without browser color or focus ring
- Sync package-lock.json with package.json after release version injection
- Sync Cargo.lock with Cargo.toml after release version injection
- Use standard browser checkbox appearance instead of accent color
Release v0.1.0
[0.1.0] - 2026-05-28
Added
- Refresh current user data on dialog close if edited user matches current user
- Keep Dashboard & Reports menu items + reset start_date on re-enable
- Add deterministic test-data seeder
- Encrypt data at rest with pg_tde and AES-encrypted backups
- Add eslint-plugin-svelte and fix all lint errors
- Role-based title and earliest-month nav bound
- Unify start-date lower bounds across all report tiles
- Enforce earliest-start-date as global lower bound
- Structured detail fields instead of raw JSON
- Lock year input and disable future navigation
- Show weekday in flextime tooltip (Mo., 25.05.)
- Group time entries by week, add subject user, responsive layout
- Show ISO calendar week number and full Mon-Sun range everywhere
- Surface current week status on submission tiles
- Add submission reminders for admins and toggle functionality
- Calendar team heading, weekend column hiding, and audit log mobile fix
- Add reason field to reopen requests for better context
- Enhance user email handling and notifications with full names
- Remove per-entry change-request workflow; lock submitted weeks atomically
- Swap submit-week button with request-edit when no drafts remain
- Maximise hue distance among priority calendar colors
- Rearrange calendar navigation for improved usability and aesthetics
- Refactor routing to use dynamic imports for improved performance and maintainability
- Enhance calendar view to include time entries for team leads and improve user visibility
- Add functionality to check for pending submitted entries and improve absence visibility in calendar
- Enhance absence chart to include weekend representation and improve labels
- Add selected days calculation and display in absence dialog
- Enhance user role management and validation for assistants
- Update favicon and add AppLogo component for consistent branding
- Enhance reopen request handling with advisory locks and improved approval logic
- Update TestApp to support optional Postgres container for testing
- Add test for non-admin lead batch rejection of own submitted time entry
- Implement batch approval and rejection for time entries; update user guide and tests
- Add batch rejection notification for timesheets with consolidated user notifications
- Enhance role management and approval logic; normalize role handling across user and submission reminder workflows
- Add assistant role with specific constraints and update user guide. language-specific decimal separator.
- Send in-app notifications for self-approval/rejection by admin
- Implement flextime reduction category and update time entry logic
- Implement per-user configurable workdays_per_week
- Implement carryover expiry logic for vacation days and update integration tests
- Strikethrough cancelled absences in absence history
- Unify dashboard approval tiles with typed labels and diffs
- Implement change request approvals section with user interaction for approving and rejecting requests; enhance UI for better visibility of pending requests
- Enhance user guide with detailed onboarding steps and role-based workflows; improve absence request notifications and submission status checks
- Enhance absence management with effective workday validation and improve UI components for reporting and time tracking
- Update report tests to include current day in hours and categories
- Update date handling to include today in reports and calculations
- Add flextime opening and closing balance to reports, update date handling
- Add user deletion, show time in notifications, FK cascade fixes
- Append app URL to outgoing notification emails
- Update terminology for submission reminders to general reminders
- Implement absence cancellation workflow and approval reminders
- Add overtime reporting endpoint and update API router
- Add cancellation pending status for absences
- Implement mobile title bar and navigation slider for improved user experience
- Implement multi-approver support for users and update related UI components
- Add translations for login screen notifications and monthly reminders
- Add automated submission reminders and favicon support
- Update leave days handling and improve UI consistency across reports and user management
- Implement pending vacation day overrides for new users
- Implement per-IP rate limiting and connection timeouts for enhanced security
- Update date handling to use UTC and improve concurrency controls
- Implement region loading and error handling in AdminSettings; add tests for region selection functionality
- Implement password reset functionality with email notifications
- Update Reports layout to include help tooltip for overtime balance and adjust styling; remove dark/light mode toggle button
- Add help tooltips for overtime in Reports and update translations; style rejected entries with strikethrough
- Add TrendingUp icon and update translations for "Today" in English and German; adjust absence date range in Reports
- Improve mobile keyboard handling and enhance login/setup flows with email pre-fill
- Enhance credential storage for password manager and update input field names
- Skip processing of rejected entries in build_range function
- Update SQL query in categories function to exclude rejected entries
- Enhance absence and change request handling with year validation and notifications
- Implement submission reminders with configurable deadline and user notifications
- Restrict non-admin user actions in absence and change request approvals, and enhance user access checks
- Update CSV export to use translated category labels
- Enhance user management by enforcing unique email and name constraints, and improve error handling in user creation and updates
- Enhance non-admin user approval process by assigning orphaned users to the oldest active admin
- Implement SMTP settings management and connection testing
- Implement initial setup process for admin account creation with validation
- Enhance admin setup process by adding first and last name fields and validation
- Update admin settings endpoint to return detailed SMTP configuration
- Implement SMTP settings management in admin panel and frontend
- Add range report endpoint and enhance CSV export functionality
- Add leave overrides management for users
- Add overtime start balance to user model and update related functionalities
- Enforce user start date for time entries and absences
- Enhance localization and error handling in i18n
- Enforce reason requirement for time entry rejection
- Enhance backup functionality with validation for interval and retention settings
- Update approval processes with transaction handling and improve backup service configuration
- Implement SPA routing and static file serving in the API
- Implement absence checks and advisory locks for time entries and absence creation
- Enhance change request handling and user experience with new validations and translations
- Seed country and region settings in test database for holiday API
- Enhance time entry management and user settings
- Enhance login navigation and error handling; add overtime balance feature in reports; update team settings for user roles; improve time entry loading and submission; refactor theme store management
- Add local and public Docker Compose configurations with debug support
- Add Info icon to Icons.svelte and integrate notification service
- Enhance admin settings with default user settings and improve UI layout
- Add Docker Compose configuration for PostgreSQL and Caddy services
- Add start_local.sh and start_public.sh scripts for Docker Compose setup
- Add mobile bottom navigation bar and pull-to-refresh
- Enhance time entry management with upsert and remove functions; update dialog close handling
- Enhance date and time validation in dialogs; update translations for error messages
- Implement week reopen requests with auto-approval and notifications; add flextime reporting and chart
- Enhance API and date formatting functions; update CI configuration and ignore files
- Implement theme toggle functionality with dark/light mode support; add corresponding styles and translations
- Enhance absence management with normalization and validation; update integration tests
- Implement date parsing and workday counting functions; add tests for new functionality
- Add auto-merge approval for Dependabot PRs with patch and minor updates
Changed
- Split Dashboard into sub-components; fix clippy borrows; add TEST_REFERENCE_DATE docs
- Correct bottom crop to 2630px (restore 40px, remove Chrome bar cleanly)
- Fix bottom crop on all screenshots (remove Chrome address bar)
- Replace screenshots with new crop (−113px top, −257px bottom)
- Unify duplicated core logic across services and domain modules
- Increase tour.gif frame delay to 7 seconds
- Refresh screenshot tour with up-to-date English captures
- Add screenshot tour to README
- List supported UI languages in README
- Update AGENTS.md for 3-layer architecture and parallel test setup
- Clean up post-architecture-refactor and parallelise integration tests
- Add static and dynamic badges to README
- Complete Dialog.svelte migration for all remaining dialogs
- Extract reusable Dialog.svelte component and eliminate boilerplate
- Confine all sqlx usage to the repository layer
- Reposition notification button in layout for improved UI consistency
- Make /time-entries/all a strict team-only endpoint for non-admin leads
- Remove legacy change request translations from i18n
- Unify reopen terminology to edit request / Bearbeitungsanfrage
- Replace unwrap() with ok() in JSON serialization for safer error handling
- Update absence and report tests for clarity and accuracy
- Enhance user visibility logic and improve carryover date handling
- Update README and improve absence validation logic
- Simplify run_loop function signature in approval reminders
- Improve week handling and entry management
- Consolidate annual leave management into a sin...