master
Abacus → Kimai
Firefox extension: grab worked hours from MyAbacus, then create Kimai timesheets so that every day matches 100%.
Install (dev)
about:debugging#/runtime/this-firefox → Load Temporary Add-on… → pick manifest.json.
Or npx web-ext run from this folder.
Setup
- Dashboard → Settings: Kimai URL + API token (Kimai 2: My profile → API access). Click Test, which also loads projects/activities.
- Pick a default project / activity: everything not covered by a rule goes there.
- Recurring rules: e.g.
Weekly meeting, 1h, Mon, start 09:00 → Customer X / Project Y, activity A.- Leave hours empty for a "remainder" rule: e.g. Fridays rest goes to an internal project instead of the default.
- Every N weeks + anchor for bi-weekly stuff, valid from/to for temporary ones.
Usage
- Open MyAbacus on the Gestion des temps card, click the toolbar icon, pick From / To, Read days from MyAbacus. It clicks ‹ / › day by day, reads every Arrivée / Départ pair (and Total heures), and saves as it goes (popup can be closed, there's a Stop button). Days with an open clock-in (no Départ) are skipped and flagged. Generic extraction (under "Other pages") is the old table/text scraper, for other layouts.
- Dashboard opens with one line per day (editable):
If extraction fails, select the table in Abacus, copy, and use Paste raw text.
05/10/2026 08:00-12:00 13:00-17:24 # stamped intervals 06/10/2026 8:24 # total only - Compare with Kimai & plan: for each day it computes
Abacus - existing Kimai, then fills the gap: fixed rules first (at their start time if free), then remainder rule / default. Entries go into the Abacus intervals, never overlapping existing Kimai entries. - Review, untick days you don't want, Create entries in Kimai. It re-checks afterwards; matched days show
✓ 100%.
Re-running is safe: existing Kimai time counts toward the total, so only the missing part is created.
Extraction tuning
Settings → Abacus extraction:
- Row selector: default
tr, [role="row"]. If nothing dated is found, falls back to page text lines. - Time mode:
ranges(08:00 - 12:00),pairs(in/out in separate columns),duration(only totals). - Duration column: which duration in a row is the worked time (
0first,-1last), useful when rows also show target/balance.
The raw text read during the last extraction is visible on the Sync tab, to help tweak those.
Files
lib/parse.js: Abacus text → dayslib/planner.js: days + existing Kimai + rules → entries to createlib/kimai.js: REST clientlib/abacus-crawl.js: day-by-day reader for the MyAbacus card (injected in the page)popup/: extraction from the active tabapp/: dashboard (sync, rules, settings)
Languages
JavaScript
83.2%
HTML
13%
CSS
3.8%