# Time tracking

With time tracking you record how much time went into a project, a single ticket, or a
meeting, the basis for reporting and billing. Lalabase always logs time after the fact;
there is no running stopwatch.

## Tracking time

1. Open the ticket and click the **hours sum** in its header, or **Log time …** while
   nothing is booked yet. You enter the time on the left and see the ticket's previous
   entries on the right as you type, so nothing gets booked twice. Or go to **Times**,
   press **Record** and pick the project in the form.
2. Enter the **duration** and the **date**. Lalabase reads the duration in several formats:
   as `HH:MM` (e.g. `1:30`), as decimal hours (`1.5`), or as plain minutes (`90`).
3. A short description captures what you worked on. Tags sit behind **more details**.

You change an existing entry in the same place: click it in the popover's list and it
loads into the form, where you can save or delete it. Invoiced entries are locked and
cannot be clicked.

You assign time to a billing in the times overview, not on the ticket; the bulk action
lives there. The popover on the ticket tells you with its "… open" line whether anything
is still waiting.

Not every entry needs a ticket: you can also log time straight on a **meeting**: open it
in the **Meetings** area and click the **hours sum** below its title, or **Log effort …**
while nothing is booked yet. That way client calls and phone
conversations carry their own subject into reporting and billing, instead of disappearing
as ticketless project time. General project work with no fixed subject goes through
**Times**: pick the project, leave the ticket empty, done.

## Reviewing

You review time in one place: under **Times** in the organisation's navigation. The
list shows you, from every project, exactly what your rights there allow, all time or only
your own.

Above the list sits a filter line of three labelled rows: **Filter** (what you pick), **Status** (what you switch on and off) and **Search**.
The upper row holds four pills, period, project, subject and billing. Each carries its own
name and, once you have chosen something, the value and a ✕ to remove it. Clicking a pill
opens its choices; in subject and billing you can type to narrow the list. You pick a subject
without a project too, across all projects, with the project name beside each entry: two
meetings with the same title stay apart that way. The subject menu lists the most recently
booked subjects and tells you when there are more than it shows; pick the project to its left
and only that project's tickets and meetings remain. The time shown on a ticket or a meeting
also brings you here with the project and subject filters set, on exactly that subject.


The period carries no ✕, because there is no list without a period, only a different one. The
billing is greyed out and not selectable while you are showing only time without a billing,
and it tells you why. **Reset** appears only when something really narrows the list, and that
includes the search and "Only my times".

The lower row holds the switches. The three status pills (open, for billing,
invoiced) each carry the hours in that state. They hold under every other filter you
have set, but not under the status filter itself, so a pill tells you what clicking it would
give you. The active pills together are exactly the sum below the filter. When your selection
holds nothing in a state, its pill is grey and not clickable. Beside them sits "Only my
times", which is a switch just the same. The **Overview** switch at the top right shows, in place of the list,
the status of the times per project (open, for billing, invoiced). Above the table you
pick the period, and it governs every column at once, so a row's total stays the sum of its
cells. It starts on "all time", so old open hours stay visible; for a monthly billing you set
"This month". Clicking a number opens the list with exactly that filter and that period, with
a way back that keeps the period. Projects with no time in the chosen period are folded
away; "Show N projects without times" brings them back. When the table is empty it tells you
whether nothing is booked yet or only nothing in this period, and then offers "Show all times".

When you pick a particular billing, the list opens the period to "all time" and switches all
three status pills on as it does so. A billing bundles hours from whenever they were
booked, and the list starts on this month with invoiced time hidden, so without that opening
a billing from July would come back empty in September. The pills move visibly with it, so
you can see what happened and put any of them back.

When the list comes back empty, it tells you which filter emptied it and offers that
filter for removal, with its own value in it: "Period: 2026-09-01 to 2026-09-30" or
"Billing: August 2026". A filter is only named there when taking it away really does
bring times back. That includes the two filters that are set on their own: the period
starts on this month, and invoiced time is hidden to begin with. When no single filter
explains the emptiness, the list says that too and offers to reset all filters instead.

The list is grouped by month. A row gathers what was booked in one month on one
reference: a ticket, a meeting, or none at all. The same reference therefore appears in
every month it was booked in, with that month's total. Opened, a row shows its individual
bookings, and that is where you edit or delete them.

The small mark on the left says how far a row has got. When the whole row is in one state
the mark is a circle: empty with a fine outline means "Without billing", pale grey means "In
billing", dark means "Billed". When a row's bookings sit in several states, the mark
becomes a bar showing the shares. The same thing stands in words on the right, as a share
for mixed rows. Hover the mark and it names the minutes per state.

When a filter hides part of a row, the row says so: "06:40 of 13:40 · 07:00 hidden". The
number after "of" only ever counts what you are allowed to see.

<div class="docs-callout docs-callout--info">
  <div class="docs-callout__title">Note</div>
  <p>Time is kept separately per organisation. If you belong to several organisations, your time is not added up across them.</p>
</div>
