Skip to content

feat: Tasks and Projects module (time tracking, Kanban, invoicing from tasks) - #14

Merged
gdarko merged 4 commits into
mainfrom
feat/tasks-projects
Sep 16, 2026
Merged

gdarko merged 4 commits into
mainfrom
feat/tasks-projects

Conversation

@gdarko

@gdarko gdarko commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Summary

The complete first version of the official Tasks and Projects module, consolidated from the stacked drafts #1 to #13 into three reviewable commits. The tree is identical to the top of that stack (feat/timer-dialogs).

  1. Data model, services and HTTP API. Projects, tasks, time entries and task statuses scoped to the company. The timer service starts, stops with configurable rounding, discards, keeps one running entry per user and treats a start on the already running task as idempotent. Tasks lock once invoiced. Billing preparation turns selected tasks or a whole project into host invoice lines. Settings come back in their declared types, abilities are registered through the SDK, and the module adds Tasks and Projects to the sidebar.
  2. Screens. Task-centric UI in the shape of Invoice Ninja v5: a Tasks screen with list, board and week views, a task page with its time log, project pages, a start dialog with project and task pickers and inline task creation, a save-and-stop dialog with description and billable, the header timer chip and floating launcher, reports, and invoicing from a task, a selection, a project or the unbilled-time page that lands on the host invoice editor. The built bundle is included.
  3. Docs. README and agent guidance.

Depends on

Until those merge, composer.json pins the SDK development branch; the pin moves to ^3.4 afterwards.

Verification

  • Module test suite: 328 tests passing, plus the SDK module.json and migration validators.
  • Frontend: lint, typecheck and build clean, one Vue instance shared with the host.
  • Browser pass on the local stack as the demo user: timers from every control, the stop and start dialogs, task list, board and week views, time log edits, and invoices created from a task, a selection, a project and the unbilled-time page.

Supersedes #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12 and #13.

https://claude.ai/code/session_01DCf36XDKprZifej8dc2r1E

Projects, tasks, time entries and task statuses scoped to the company,
the timer service (start, stop with rounding, discard, one running entry
per user, idempotent start on the running task), task locking once
invoiced, billing preparation that turns selected tasks or a whole
project into host invoice lines, settings returned in their declared
types, abilities registered through the SDK, and the module's sidebar
entries. Feature and unit tests cover the API, the timer, the rounding
and the invoice line composition.
Task-centric screens in the shape of Invoice Ninja v5: a Tasks screen
with list, board and week views, a task page with its time log, project
pages, the start dialog with project and task pickers and inline task
creation, the save-and-stop dialog with description and billable, the
header timer chip and the floating launcher, reports, and invoicing from
a task, a selection, a project or the unbilled-time page that lands on
the host invoice editor. The built bundle is included.
The package stub that pointed at the SDK development branch gives way to
the VCS repository and a ^3.4 constraint now that 3.4.0 is tagged.
@gdarko
gdarko merged commit 710ba30 into main Sep 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant