nicolabelluti d661680539
Check, format and test / build (push) Successful in 11m23s
feat(oxibadge): implement the review screen's export to ODS
Replaces the export button's placeholder (which only dbg!-printed the
payload) with a real implementation: one employee exports a single
.ods file, more than one bundles a .zip of one .ods per employee,
written wherever the user picks via the native "save" dialog
(tauri-plugin-dialog).

The "hours worked" column is a live ODF formula with a cached fallback
value, not just a static number, so the file stays correct if edited
afterward in LibreOffice; the formula and the cached value both treat
a day's own missing punches as 0 in the subtraction, matching how a
day with only an entry and an exit (no lunch break) still nets out to
the right span. Column headers are sent by the frontend (translated
via its own i18n), not hardcoded in Rust. A stacked slot (more than
one punch the device recorded in the same shift) exports every punch,
one per line in the cell, instead of only the first.

Also closes a real gap surfaced while building this: the new-employees
screen already blocked "Continue" for a blank name, but not for a name
the device sent as invalid UTF-8 (lossily converted to text containing
the Unicode replacement character on the Rust side) — such a name is
now flagged and blocks continuing too, so every employee reaching the
review/export flow is guaranteed to have a real, displayable name.

Assisted-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-10 08:48:05 +02:00
2024-05-05 16:45:55 +02:00
2024-05-05 16:36:41 +02:00
2026-10-06 20:31:24 +02:00

R701 | Oxibadge

Rust Claude Code GNU AGPLv3.0 License Buymeacoffee
CI Badge


A reverse-engineered client for the R701 attendance reader by I.P.S. Informatica

This repository is a Cargo workspace with two members:

  • r701/ — the async Rust library that speaks the device's TCP protocol.
  • oxibadge/ — Oxibadge, a minimal Tauri + Svelte desktop client built on top of the library.

If you want to read about the reverse engineering attempt behind the library, check out https://nicolabelluti.me/series/attendance-reader/.

S
Description
No description provided
Readme AGPL-3.0
564 KiB
Languages
Rust 100%