Releases: marksxiety/timetrack-pro
Releases · marksxiety/timetrack-pro
v1.4.1
What's New
Service Extraction
- Extracted
OvertimeCalculatorandOvertimeOverlapValidatoras dedicated services from the controller - Enables reusable and cleaner overtime business logic
Enhanced Heatmap
- Added tentative overtime hours stat with status breakdown from the heatmap endpoint
- Converted Heatmap into a controlled component:
- Server-driven stats
- Props and events
- Removed internal data fetching
Seeders
- Added new seeders for sample data generation:
ScheduleSeederShiftCodeSeederOvertimeRequestSeeder
- Supports varied statuses and scheduling scenarios
What's Changed
- Migrated test infrastructure from MySQL to in-memory SQLite for faster and more portable tests
- Use server-provided
tentative_overtime_hoursinstead of client-side computed value - Format
total_hoursandrequired_hoursto two decimal places in consumption display - Updated CI workflows:
- SQLite environment variables
- PHP setup adjustments
- Migration steps added
Bug Fixes
- SQLite compatibility improvements:
- Replaced
YEAR()withstrftime() - Added text-to-string column alteration support
- Handled foreign key constraint error code
23000
- Replaced
- Updated
overtime_requests.statuscolumn from text to string for index compatibility - Handled missing config file gracefully using
ai_modelfrom environment variables - Fixed
isEnhancingstate to properly reset infinallyblock during AI reason enhancement - Preserved decimal trailing zeros in total overtime hours display
- Display empty state when no shift codes are available
- Replaced
buildShiftReferencewith a computed property - Dynamically display AI model name from config on report page mount
Tests Added
- Feature tests for overtime request endpoints:
- Fetch (by status, date range, session, employee)
- Bulk update status
- Update status
- Heatmap
- Unit tests for:
OvertimeCalculatorOvertimeOverlapValidator
- Migrated all tests to:
- Use
DatabaseMigrations - Use factories instead of seeders
- Use in-memory SQLite
- Use
Full Changelog
v1.4.0...v1.4.1
v1.3.5
Shared UI/Logic Refactor + Schedule Submission Safeguards
This release focuses on improving modularity, maintainability, and ensuring safer schedule updates.
Highlights
-
Reusable UI Components
PasswordInputfor authentication formsOvertimeRequestDetailModalfor approver overtime details
-
Shared Composables
useBulkSelectionuseOvertimeRequestuseScheduleManager
-
Helper Modules
- Date/time formatting
- Status mapping
- Text and name formatting
- Tailwind color lookup
- CSRF token retrieval
Functional Improvements
- Prevents overwriting
shift_codewith empty values insubmitSchedule - Returns
skipped_idswhen schedule rows cannot be removed - Adds warning styling to
SelectOption - Displays skipped schedule rows in the employee schedule UI after submission
Refactors
- Authentication pages now use the shared
PasswordInput - Approver (Filed, Filing, Pending) pages now use:
- Shared overtime modal
- Centralized bulk selection logic
- Employee (Index, Request) pages now use shared helpers for:
- Overtime requests
- Status handling
- Date formatting
- Approver and Employee schedule pages now use shared schedule management logic
- API/services (schedule, AI) now use the shared CSRF helper
Developer Experience
- Added JSDoc annotations across:
- Helper modules
- Composables
- API modules
- Stores
- Removed legacy duplicate utility modules
- Minor UI improvement:
- Navigation dropdown text no longer wraps unexpectedly
v1.3.4
What's New
Bulk Actions
- Bulk approve and bulk file functionality with row selection checkboxes and confirmation modal on Pending and Filing views
Approver Dashboard
- Active status indicator (green/red dot) on user avatars
- Adjusted chart and activity panel height alignment
Manage Schedule
- Shift reference sidebar showing all shift codes with time ranges
- Redesigned layout with compact year/week selectors
Maintenance Pages
- Page descriptions on Manage Shift Codes and Manage Authorized Hours
- Deletion warning alert when removing a shift code
Changed
- Renamed "Operations" dropdown to "Administration" for approver role
- Renamed navigation menu items for clarity (Schedule → Manage Schedules / My Schedule)
- Renamed "RD / NWS" label to "RD / DAYOFF" in shift code form
- Simplified Filed view to read-only with clickable rows, removed action column
Fixed
- Improved ShiftCodes and RequiredHours table layout with proper overflow handling
v1.3.3
Summary
- Fixed the heatmap controller ignoring the frontend status filter. The endpoint was hardcoded to only return APPROVED records, causing FILED and PENDING overtime data to be excluded from the heatmap and year pill navigation.
What Changed
OvertimeRequestController::fetchOvertimeHeatmapnow reads thestatuses[]parameter from the request and useswhereIninstead of a hardcoded APPROVED filter, matching the behavior expected by the frontend's status filter checkboxes.
v1.3.2
Changes
- Filter heatmap data by request statuses (approved, pending, declined, etc.)
- Shift reference card on employee schedule page showing codes and time ranges
- Schedule page now receives shift data directly from the controller, eliminating redundant API fetch
- Improved heatmap layout with dynamic height synchronization
v1.3.1
What's Fixed
- Reason text — Fixed rendering and display issues on overtime request views
- Heatmap — Fixed tooltip positioning, data accuracy, and layout inconsistencies
v1.3.0
What's New
- Overtime Heatmap — Visualize approved overtime hours on the employee page with interactive tooltips and date range filtering
- Profile Page Redesign — Refreshed layout with an active toggle switch, updated form elements, and cleaner UI
Improvements
- Consolidated schedule and management nav links into a single role-based dropdown
- Added database index on
overtime_requestsfor faster queries - Improved heatmap data fetching logic
Fixes
- Dark mode Tailwind CSS configuration is now correctly applied
- Auth background blobs are properly visible in both light and dark mode
- Calendar tile border color updated for better visibility
v1.1.2
What's New
Employee Schedule Redesign
- Switched to a monthly calendar view with weekly rows and per-week default shift toggles
- Added months dropdown with
getWeeksInMonthutility
Overtime Request Details
- New request details modal with update, cancel, and AI reason enhancement
- Added sorting support (newest, oldest, status) to overtime request filters
Improvements
- Schedule is now a direct nav link for employees
- Schedule submission wrapped in a database transaction
- Improved validation in
updateShiftCode - Enhanced modal structure and styling
- Refactored email notification template for Gmail/Outlook compatibility
- Default
MAIL_TIMEOUTvalue in mail configuration
Style
- Interactive cursor-following blobs background on all auth pages
- Calendar tile animations and refined dashboard layout
- Improved pagination and request component spacing
Fixes
- Safely parse year/month payload to prevent NaN in calendar
- Handle exceptions when sending password reset link
v1.1.1
What's Changed
Added
- ConfigStore — centralized app config loading with shared reactive ref injected across components
- TimePicker component — scrollable hour/minute/AM-PM selector replacing dropdown time inputs on overtime filing
- Overtime minute step config — configurable increment via
overtime_minute_stepinmake:config - AI regenerate button — regenerate AI insight responses inline within the response card
Changed
- Rewrote overtime validation to load shift from DB with proper night shift handling, Carbon immutability, and 0.25 increment enforcement
- Refactored theme initialization to use reactive watch instead of manual
setThemecalls - Improved SSE streaming architecture with extracted
readSSEStreamandstreamResponsehelpers - Replaced initials avatar with image avatar and fallback initials in recent requests
Fixed
- Holiday date display splitting from empty string to space
- Overtime chart height overflow (
min-h→max-h) - SSE streaming reliability — disabled gzip and output buffering for AI routes
- CSRF authentication in AI service and schedule API using XSRF-TOKEN cookie
Testing
- Added comprehensive OvertimeRequestValidationTest (day/night shift overlap, swapped times, rest day, config validation)
Full Changelog: v1.1.0...v1.1.1
v1.1.0
What's New
- Password reset flow — Forgot and reset password pages with custom email notifications
- Employee dashboard enhancements — Calendar redesign, overtime statistics, holiday badges, and recent requests list
- AI improvements — Validation guardrail, streaming responses, and configurable provider settings
- Approver dashboard refresh — Recent activities panel, period selector in top bar, current week highlighting
Summary
This release includes 14 features, 12 improvements, 6 bug fixes, and 5 documentation updates across 61 files.
Key Changes
- Replaced axios with native fetch API
- Renamed OpenAI service to generic AI with configurable env vars
- Renamed ROA to Overtime Limit throughout the app
- Redesigned login, register, and manage users pages
- Added Breadcrumbs component, shift code/organization unit seeders, and performance indexes
- Fixed calendar race condition, CSRF on schedule submission, and fetch response handling