A single-file browser app for reviewing and logging time on GitLab issues and merge requests. No build step, no dependencies — open index.html directly in your browser.
Pull and run the pre-built image:
docker run -p 8080:80 ghcr.io/waltertamboer/gitlab-timelogs:latestThen open http://localhost:8080 in your browser.
Or with Docker Compose — create a docker-compose.yml:
services:
gitlab-timelogs:
image: ghcr.io/waltertamboer/gitlab-timelogs:latest
ports:
- "8080:80"
restart: unless-stoppedThen run:
docker compose up -d- Open
index.htmlin your browser (or the Docker URL above). - Create a GitLab Personal Access Token with the
apiscope at gitlab.com → User Settings → Access Tokens. - Enter your token, your GitLab username, and the API base URL (defaults to
https://gitlab.com; change this for self-hosted instances). - Click Save & continue.
Your credentials are stored only in your browser's localStorage and never sent anywhere other than the GitLab API.
Use the ‹ / › arrows to move one working day back or forward (weekends are skipped). The date picker lets you jump to any date, and Today returns to the current day. Click Load to (re)fetch data for the selected date.
Click Calendar to toggle a monthly overview. Each cell shows the hours logged that day, colour-coded:
- Green — 8 h or more
- Orange — partial hours logged
- Red — nothing logged
Click any cell to jump to that day.
Mark a day as Sick day or Vacation using the toolbar buttons. A banner is shown as a reminder that no time logging is required. The setting is stored locally and visible in the calendar.
The Time logged section shows all time entries for the selected day, grouped by issue or MR. Each group can be expanded to see individual entries with their duration and summary. Entries can be removed with the Remove button.
The Activity section shows all GitLab events for the day (pushes, issue updates, MR activity, comments) in chronological order.
After loading, the app analyses your activity to detect issues or MRs you worked on that have no time logged yet. These are listed in the Issues worked on with no time logged callout. Detection is based on:
- Branch names that start with an issue IID (e.g.
123-fix-bug) - MR events referencing a source branch tied to an issue
- Comments left on issues
- Direct issue events (opened, closed, etc.)
Items marked Review only are MRs where you were not the author (no pushes to the branch detected), suggesting review work rather than development.
When unlogged issues are detected, a Log time card appears above them. For each issue or MR:
- Set the number of hours using the −/+ buttons or by typing directly into the field.
- Optionally add a summary.
- Click Distribute evenly to split 8 h across all items (review-only items are capped at 0.5 h each).
- Click Submit to create time entries in GitLab via the API.
Pin any issue to keep it visible across all days. Pinned issues appear at the top of the page and can be used to quickly log time on recurring work by clicking + Log time, which adds the issue to the log time card.
Click any issue or MR title in the log time card, unlogged list, or pinned issues to open a side panel showing the title, metadata (author, assignees, state, labels, milestone), and description. The panel has an Open in GitLab ↗ button to go directly to the item in GitLab. Close it with ✕, by clicking the overlay, or by pressing Escape. Ctrl/Cmd+click on a title goes directly to GitLab without opening the panel.
