Skip to content

Releases: marksxiety/timetrack-pro

v1.4.1

28 Apr 23:38
0ce3978

Choose a tag to compare

What's New

Service Extraction

  • Extracted OvertimeCalculator and OvertimeOverlapValidator as 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:
    • ScheduleSeeder
    • ShiftCodeSeeder
    • OvertimeRequestSeeder
  • 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_hours instead of client-side computed value
  • Format total_hours and required_hours to 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() with strftime()
    • Added text-to-string column alteration support
    • Handled foreign key constraint error code 23000
  • Updated overtime_requests.status column from text to string for index compatibility
  • Handled missing config file gracefully using ai_model from environment variables
  • Fixed isEnhancing state to properly reset in finally block during AI reason enhancement
  • Preserved decimal trailing zeros in total overtime hours display
  • Display empty state when no shift codes are available
  • Replaced buildShiftReference with 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:
    • OvertimeCalculator
    • OvertimeOverlapValidator
  • Migrated all tests to:
    • Use DatabaseMigrations
    • Use factories instead of seeders
    • Use in-memory SQLite

Full Changelog

v1.4.0...v1.4.1

v1.3.5

24 Apr 10:51
dfb1aa5

Choose a tag to compare

Shared UI/Logic Refactor + Schedule Submission Safeguards

This release focuses on improving modularity, maintainability, and ensuring safer schedule updates.


Highlights

  • Reusable UI Components

    • PasswordInput for authentication forms
    • OvertimeRequestDetailModal for approver overtime details
  • Shared Composables

    • useBulkSelection
    • useOvertimeRequest
    • useScheduleManager
  • Helper Modules

    • Date/time formatting
    • Status mapping
    • Text and name formatting
    • Tailwind color lookup
    • CSRF token retrieval

Functional Improvements

  • Prevents overwriting shift_code with empty values in submitSchedule
  • Returns skipped_ids when 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

23 Apr 06:26
10ae65d

Choose a tag to compare

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

22 Apr 06:42

Choose a tag to compare

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::fetchOvertimeHeatmap now reads the statuses[] parameter from the request and uses whereIn instead of a hardcoded APPROVED filter, matching the behavior expected by the frontend's status filter checkboxes.

v1.3.2

21 Apr 09:26
e22ea06

Choose a tag to compare

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

20 Apr 11:03
2c47356

Choose a tag to compare

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

19 Apr 11:15
bd7862a

Choose a tag to compare

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_requests for 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

18 Apr 11:48
7381acb

Choose a tag to compare

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 getWeeksInMonth utility

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_TIMEOUT value 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

17 Apr 09:31

Choose a tag to compare

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_step in make: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 setTheme calls
  • Improved SSE streaming architecture with extracted readSSEStream and streamResponse helpers
  • 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-hmax-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

15 Apr 14:07

Choose a tag to compare

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