Rc/v5.13.0 - #737
Merged
Merged
Rc/v5.13.0#737
Conversation
Send periodic heartbeats from the idle tick loop so open tabs keep timers alive without requiring mouse/keyboard activity, and backdate idle auto-stops to the idle-timeout boundary instead of start_time when no heartbeat exists. Fixes #736
Reframe licensing as becoming a Supporter rather than removing prompts, add visible badges, more personal donate messaging, and contextual nudges for first invoice, usage milestones, and 30-day anniversaries.
Recurring tasks were broken because create/view templates and edit/delete routes were missing while the list page linked to them. Add the full template set, wire up edit and delete handlers, and expose the feature in the sidebar.
The customization route rendered a template that did not exist, causing a 500 on load. Add the admin form for branding, colors, sections, and advanced portal settings.
These assets are referenced in the app head and social meta tags but were missing from the static bundle, causing broken icons and share previews.
Mobile users could only reach invoices, clients, reports, and settings from More. Add module-gated links for tasks, expenses, CRM, and admin users.
Surface today-vs-target progress with color cues, show recent project/task combos for one-click timer starts, and add weekly billable hours context.
Nudge users when a timer exceeds eight hours and add a daily-target progress bar to the floating timer so elapsed time has clearer workday context.
Replace silent except-pass handlers in payments, mileage API, expenses, mentions, and invoicing with proper warning logs and user-visible feedback when the failure affects something the user should know about.
Show elapsed time with pause/stop controls in the topbar, start timers globally via dashboard modal, and refresh timer state softly after idle detection instead of reloading the page.
Let users log past hours without starting a timer and surface overdue or due tasks with inline completion, using existing API endpoints.
Add status and project filters, active/inactive switches, last-run column, and a run-now endpoint for immediate task generation.
Rename Time Tracking to Projects & Work, dedupe Reports from Finance, and add productivity, calendar, and recurring tasks to mobile navigation.
Replace hardcoded EUR and zero tax with TaxRule and custom-field fallbacks, and honor include_expenses when creating invoices from time entries.
Split multi-class strings before classList.add in the heatmap renderer and use the correct empty_state macro arguments in list templates.
…ity breakdown. Surface upcoming task/milestone deadlines and overdue invoice totals on the dashboard, expose notes autocomplete and in-place project switching for active timers, and add daily-by-project data for the productivity chart API.
Add deadline and invoice alert widgets, relative due-date badges, workflow execution status, project budget bars, floating timer project switch, stacked daily project chart, notes autocomplete, and a clearer idle prompt with trim-to-idle.
Syncs setup.py, desktop/package.json, mobile/pubspec.yaml, and browser-extension manifests to 5.13.0. Adds the corresponding CHANGELOG entry and README highlights for the release.
|
|
||
| getDailyTargetSeconds() { | ||
| const raw = this.bar && this.bar.dataset.dailyTargetHours; | ||
| const hours = raw ? parseFloat(raw, 10) : 8; |
|
|
||
| function getLongEntryThresholdMs(){ | ||
| const meta = document.querySelector('meta[name="long-entry-threshold-hours"]'); | ||
| const hours = meta ? parseFloat(meta.getAttribute('content'), 10) : 8; |
| from flask_login import current_user, login_required | ||
| from sqlalchemy import text | ||
| from sqlalchemy import or_, text | ||
| from sqlalchemy.orm import joinedload |
|
|
||
| from app import csrf, db, limiter, track_event, track_page_view | ||
| from app.models import Activity, Client, Project, Settings, TimeEntry, TimeEntryTemplate, User, WeeklyTimeGoal | ||
| from app.models import Activity, Client, Invoice, Milestone, Project, Settings, Task, TimeEntry, TimeEntryTemplate, User, WeeklyTimeGoal |
| from app.utils.support_invoice_sent import queue_first_invoice_support_prompt | ||
|
|
||
| queue_first_invoice_support_prompt(sender_id, first_send=sent_count == 1) | ||
| except Exception: |
❌ CI Test ResultsOverall Status: 2 test suite(s) failed Test Results: 3/9 passed Test Suites:
Commit: 25b6fd0 |
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.