Rc/v5.15.0 - #761
Merged
Merged
Rc/v5.15.0#761
Conversation
Introduce schema for Pomodoro prefs, payroll templates, sync errors, ActivityWatch rules, recurring costs, share links, and geofences.
Delegate focus routes to PomodoroService, add active/cycle/interrupt endpoints, timer panel, user length defaults, and export field fixes.
Expose approve/reject APIs and ship expense detail, richer create flows, and a dedicated reports screen across Flutter and Electron clients.
Support richer payroll rows, CSV/XLSX exports via templates, admin CRUD, and a workforce dashboard template picker with a Generic Payroll preset.
Add time-entry push, invoice/payment update paths, and a sync-error dead-letter UI so failed accounting syncs can be reviewed and retried.
Reduce noisy autotracker imports with priority rules, min-duration and merge gaps, plus an optional review inbox before creating time entries.
Add leaderboard/admin UI, seed default badges, hook awards into timer and task completion, and register the module for daily score recalculation.
Wire HTML5 drag/drop and resize handles to the existing move/resize APIs so agenda events can be repositioned without opening the edit form.
Replace the missing costs list template and generate due ProjectCost rows on a schedule, with web CRUD and manual generate-now support.
Allow saved reports to be shared via expiring optional-password links with a stripped public viewer and revoke controls in the builder UI.
Enforce log/warn/block geofences on workday start/end, expose admin CRUD and mobile GPS capture so field attendance can be location-aware.
Expose rule CRUD, review inbox actions, bucket discovery, and dead-letter retry endpoints used by the new integration templates.
Provide admin CRUD for payroll export templates and attendance geofences so operators can configure the new workforce and field policies.
Mirror Pomodoro focus controls, recurring project cost CRUD, and saved report share/revoke under the versioned API for clients and automation.
Wire gamification/geofence blueprints, schedule leaderboard and recurring cost jobs, and show focus plus badge stats on the main dashboard.
Add expense lifecycle helpers, report summary access, and lat/lng on workday start/end so Flutter can use the new backend capabilities.
Remove the duplicate item_stock_item_id[] field that misaligned multi-item stock links, and make the shared PO form post to edit with existing values and line items prefilled.
…ng (#760) Users who forget to start a timer can backdate it on create or edit the start time on an active timer instead of only adding a manual entry later.
Integer defaults on BOOLEAN columns (0/1) caused DatatypeMismatch errors and blocked app startup on Postgres.
Prevents BuildError when rendering the dashboard after the timer view was renamed.
…payroll templates, geofencing, gamification, calendar DnD, shareable reports, recurring costs
| if (!base) return; | ||
| // Template strips /0 from .../events/0/move → .../events/move; restore id before action | ||
| const action = kind === 'move' ? 'move' : 'resize'; | ||
| let finalUrl = base; |
| const blocks = weekCol.querySelector('.week-day-blocks') || weekCol; | ||
| const rect = blocks.getBoundingClientRect(); | ||
| const y = Math.max(0, Math.min(rect.height, e.clientY - rect.top)); | ||
| const minutes = Math.round((y / 60) * 60 / 15) * 15; // 15-min snap within hour px |
Database Migration Validation✅ Migration validation passed! Completed checks:
The database migrations are safe to apply. 🚀 📝 Note: Schema drift warnings indicate existing model/migration mismatches that existed before this PR. These should be addressed in a separate schema alignment PR. This comment was automatically generated by the Migration Validation workflow. |
| from app.utils.integration_sync_hooks import trigger_expense_sync | ||
|
|
||
| trigger_expense_sync(expense) | ||
| except Exception: |
| if board: | ||
| try: | ||
| svc.calculate_leaderboard(board.id) | ||
| except Exception: |
| svc = GamificationService() | ||
| try: | ||
| svc.calculate_leaderboard(board.id) | ||
| except Exception: |
| gsvc = GamificationService() | ||
| gamification_points = gsvc.get_user_points(current_user.id) | ||
| gamification_badge_count = len(gsvc.get_user_badges(current_user.id)) | ||
| except Exception: |
|
|
||
| try: | ||
| PayrollExportTemplate.ensure_builtin_defaults() | ||
| except Exception: |
| connector.sync_time_entries() | ||
| elif connector: | ||
| connector.sync_data(sync_type="time_entries") | ||
| except Exception: |
| connector.sync_data(sync_type="time_entries") | ||
| except Exception: | ||
| pass | ||
| except Exception: |
| @login_required | ||
| def generate_recurring_cost_now(project_id, rid): | ||
| """Manually generate a project cost from a recurring template.""" | ||
| project = Project.query.get_or_404(project_id) |
|
|
||
| import re | ||
| from datetime import datetime | ||
| from typing import Any, Dict, List, Optional, Tuple |
| @@ -0,0 +1,15 @@ | |||
| """REST API v1 endpoints for geofences.""" | |||
|
|
|||
| from flask import g | |||
❌ CI Test ResultsOverall Status: 2 test suite(s) failed Test Results: 2/9 passed Test Suites:
Commit: 0e0b5af |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Brief description of the change and why it's needed.
Type of change
Checklist
pytest).Related issues
Fixes # (issue number, if applicable)
See CONTRIBUTING.md and CHANGELOG.md for guidelines.