iobroker.time-tracker 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -13
- package/io-package.json +14 -14
- package/package.json +1 -1
- package/www/sw.js.map +1 -1
package/README.md
CHANGED
|
@@ -36,16 +36,18 @@ PIN. All data stays on your own ioBroker host: no cloud, no subscription.
|
|
|
36
36
|
|
|
37
37
|
## Installation
|
|
38
38
|
|
|
39
|
-
1.
|
|
40
|
-
|
|
41
|
-
automatically** — `iobroker add time-tracker` is only needed if you want
|
|
42
|
-
|
|
43
|
-
part of the repository. Either use the npm package, or build once in the adapter directory
|
|
44
|
-
(`npm ci && npm run install:pwa && npm run build:pwa && npm run build`, then `iobroker install .`).
|
|
39
|
+
1. Install the adapter in the ioBroker admin: **Adapters** → filter for *time-tracker* → install. On a machine
|
|
40
|
+
without the admin the same package can be installed from the registry with `iobroker install iobroker.time-tracker`.
|
|
41
|
+
**The instance `time-tracker.0` is created automatically** — `iobroker add time-tracker` is only needed if you want
|
|
42
|
+
the instance on its own.
|
|
45
43
|
2. Start the instance and open the web app on the port of the instance settings (default **8092**):
|
|
46
44
|
`http://<ioBroker host>:8092/`
|
|
47
45
|
3. Log in with the start password (see [First start](#first-start)) and create your employees.
|
|
48
46
|
|
|
47
|
+
> **For work on the sources** the adapter is built in the repository: `npm ci && npm run install:pwa &&
|
|
48
|
+
> npm run build:pwa && npm run build`, then `iobroker install .`. `build/` and `www/` are built and not part of the
|
|
49
|
+
> repository, so a plain Git installation does not work on its own.
|
|
50
|
+
|
|
49
51
|
## First start
|
|
50
52
|
|
|
51
53
|
The first start creates the database, the roles and the settings — and **one administrator account**, because
|
|
@@ -312,7 +314,7 @@ the adapter and switch **Trust the reverse proxy** on: the adapter then takes th
|
|
|
312
314
|
|
|
313
315
|
| Problem | Cause and fix |
|
|
314
316
|
| -------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
315
|
-
| `/` answers `404 not_found` | the web app is missing:
|
|
317
|
+
| `/` answers `404 not_found` | the web app is missing: reinstall the adapter — the package ships the built web app in `www/` |
|
|
316
318
|
| Not installable as an app on the phone | the page is not reachable over HTTPS — see above |
|
|
317
319
|
| The PDF refuses or shows empty boxes | `report_font_path` is missing — see [Reports](#reports) |
|
|
318
320
|
| A restore seems to do nothing | it is applied on the next start: restart the instance |
|
|
@@ -353,6 +355,14 @@ local SQLite file, access is role-based, and every correction is written to an a
|
|
|
353
355
|
|
|
354
356
|
### **WORK IN PROGRESS**
|
|
355
357
|
|
|
358
|
+
### 0.3.3 (2026-09-22)
|
|
359
|
+
|
|
360
|
+
- (Alex) fix: the installation chapter no longer points to the “Install from custom URL” dialog — the repository
|
|
361
|
+
checker reports that as `E6013` (“suggests to install the adapter directly from GitHub, directly from npm or using
|
|
362
|
+
npm commands”). It now leads with the normal way through the adapter list of the ioBroker admin, names the registry
|
|
363
|
+
for a machine without the admin and keeps the build steps in a clearly marked note for work on the sources. The
|
|
364
|
+
troubleshooting row for a missing web app no longer carries npm commands either
|
|
365
|
+
|
|
356
366
|
### 0.3.2 (2026-09-22)
|
|
357
367
|
|
|
358
368
|
- (Alex) fix: the automation rules are a **list** now — one row per rule with its caption, kind, time, target and
|
|
@@ -390,12 +400,6 @@ local SQLite file, access is role-based, and every correction is written to an a
|
|
|
390
400
|
local day (`now - 8h` fell on the day before when the suite ran shortly after midnight and left the employee
|
|
391
401
|
present for the specs that follow), and the presence spec puts its employee into a known state before it asserts
|
|
392
402
|
|
|
393
|
-
### 0.2.6 (2026-09-22)
|
|
394
|
-
|
|
395
|
-
- (Alex) fix: a punch from the presence state (`users.<id>.present`) is published like every other one now — it shows
|
|
396
|
-
up in `events.*` (`lastType`, `lastUser`, `lastDirection`, `lastSource`) and reaches the web app live. The punch was
|
|
397
|
-
stored in the database but never sent to the event bus, so the event states kept the previous punch
|
|
398
|
-
|
|
399
403
|
Older entries are kept in [`CHANGELOG_OLD.md`](CHANGELOG_OLD.md).
|
|
400
404
|
|
|
401
405
|
## Provenance
|
package/io-package.json
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "time-tracker",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.3",
|
|
5
5
|
"nogit": true,
|
|
6
6
|
"news": {
|
|
7
|
+
"0.3.3": {
|
|
8
|
+
"en": "fix: the installation chapter of the README no longer points to the adapter dialog for a URL — the repository checker reports that as E6013. It now describes the normal way through the adapter list of the ioBroker admin (and names the registry for machines without the admin); the build steps for work on the sources are a separate note",
|
|
9
|
+
"de": "fix: das Installationskapitel der README verweist nicht mehr auf den Adapter-Dialog für eine URL — der Repository-Checker meldet das als E6013. Es beschreibt jetzt den normalen Weg über die Adapterliste des ioBroker-Admin (und nennt die Registry für Rechner ohne Admin); die Build-Schritte für die Arbeit an den Quellen stehen in einem eigenen Hinweis",
|
|
10
|
+
"ru": "исправление: раздел установки в README больше не ссылается на диалог адаптера для URL — проверка репозитория сообщает об этом как E6013. Теперь описан обычный путь через список адаптеров ioBroker-Admin (и назван реестр для машин без админа); шаги сборки для работы с исходниками выделены отдельно",
|
|
11
|
+
"pt": "correção: o capítulo de instalação do README já não aponta para a caixa de diálogo do adaptador para um URL — o verificador do repositório assinala isso como E6013. Agora descreve o caminho normal através da lista de adaptadores do ioBroker admin (e nomeia o registo para máquinas sem admin); os passos de compilação para trabalhar nos fontes ficam numa nota separada",
|
|
12
|
+
"nl": "fix: het installatiehoofdstuk van de README verwijst niet meer naar het adaptervenster voor een URL - de repositorychecker meldt dat als E6013. Het beschrijft nu de normale weg via de adapterlijst van de ioBroker-admin (en noemt het register voor machines zonder admin); de buildstappen voor werk aan de bron staan in een aparte noot",
|
|
13
|
+
"fr": "correctif : le chapitre d'installation du README ne renvoie plus à la boîte de dialogue d'adaptateur pour une URL - le vérificateur du dépôt le signale comme E6013. Il décrit désormais la voie normale via la liste des adaptateurs de l'admin ioBroker (et nomme le registre pour les machines sans admin) ; les étapes de compilation pour travailler sur les sources sont une note à part",
|
|
14
|
+
"it": "correzione: il capitolo di installazione del README non rimanda più alla finestra dell'adattatore per un URL - il verificatore del repository lo segnala come E6013. Ora descrive il percorso normale tramite l'elenco degli adattatori dell'admin ioBroker (e indica il registro per le macchine senza admin); i passaggi di build per lavorare sui sorgenti sono una nota separata",
|
|
15
|
+
"es": "corrección: el capítulo de instalación del README ya no remite al diálogo del adaptador para una URL - el verificador del repositorio lo señala como E6013. Ahora describe la vía normal a través de la lista de adaptadores del admin de ioBroker (y nombra el registro para máquinas sin admin); los pasos de compilación para trabajar en las fuentes son una nota aparte",
|
|
16
|
+
"pl": "poprawka: rozdział instalacji w README nie odsyła już do okna adaptera dla URL - weryfikator repozytorium zgłasza to jako E6013. Teraz opisuje zwykłą drogę przez listę adapterów ioBroker admin (i podaje rejestr dla maszyn bez admina); kroki budowania do pracy nad źródłami są osobną uwagą",
|
|
17
|
+
"uk": "виправлення: розділ встановлення в README більше не посилається на діалог адаптера для URL — перевірка репозиторію позначає це як E6013. Тепер описано звичайний шлях через список адаптерів ioBroker admin (і названо реєстр для машин без адміна); кроки збірки для роботи з джерелами виділено окремо",
|
|
18
|
+
"zh-cn": "修复:README 的安装章节不再指向“通过 URL 安装适配器”的对话框 —— 仓库检查器会将其报告为 E6013。现在描述通过 ioBroker admin 适配器列表的正常方式(并说明没有 admin 时使用注册表);针对源码开发的构建步骤单独说明"
|
|
19
|
+
},
|
|
7
20
|
"0.3.2": {
|
|
8
21
|
"en": "fix: the automation rules are a compact list now - one row per rule with its caption, kind, time, target and weekdays, plus the buttons for active, edit and delete. The form only opens in a dialog, and the save button of the card says “Save rules” (it carried the caption of the break rules before)",
|
|
9
22
|
"de": "fix: die Regeln (Automatik) sind jetzt eine kompakte Liste - eine Zeile je Regel mit Bezeichnung, Art, Uhrzeit, Mitarbeiter und Wochentagen sowie den Knöpfen für Aktiv, Bearbeiten und Löschen. Das Formular öffnet sich nur noch in einem Dialog, und der Speichern-Knopf der Karte heißt „Regeln speichern“ (vorher trug er die Beschriftung der Pausenstaffel)",
|
|
@@ -81,19 +94,6 @@
|
|
|
81
94
|
"pl": "dokumentacja: rozdział o instalacji zaczyna się teraz od zwykłej drogi — instalacji pakietu npm (`iobroker install iobroker.time-tracker` lub „Zainstaluj z własnego adresu URL” w adminie), przy czym instancja `time-tracker.0` powstaje automatycznie. Budowanie ze źródeł to teraz tylko ścieżka dewelopera, a rozdział wyjaśnia, dlaczego instalacja z Git zgłasza `cannot find start file!`",
|
|
82
95
|
"uk": "документація: розділ про встановлення тепер починається зі звичайного шляху — встановити пакет npm (`iobroker install iobroker.time-tracker` або «Встановити з власного URL» в адміні), при цьому екземпляр `time-tracker.0` створюється автоматично. Збірка з коду — тепер лише шлях розробника, і розділ пояснює, чому встановлення з Git повідомляє `cannot find start file!`",
|
|
83
96
|
"zh-cn": "文档:安装章节现在先介绍常规方式 —— 安装 npm 包(`iobroker install iobroker.time-tracker` 或管理界面中的“从自定义 URL 安装”),实例 `time-tracker.0` 会自动创建。从源码构建现在只是开发者路径,章节也说明了为什么从 Git 安装会提示 `cannot find start file!`"
|
|
84
|
-
},
|
|
85
|
-
"0.2.4": {
|
|
86
|
-
"en": "`commands.punchUserId` selects the employee the punch buttons apply to now (writing `0` gives the choice back to the adapter) and the current choice is mirrored into that state. The README and `docs/erste-schritte.md` describe all six command states, with examples and the two traps: the buttons act on `true` only, and a wrong period or an unknown employee is answered with a warning in the log",
|
|
87
|
-
"de": "`commands.punchUserId` wählt jetzt den Mitarbeiter, für den die Stempel-Buttons gelten (mit `0` übernimmt der Adapter die Wahl wieder selbst), und die aktuelle Wahl wird in diesen State zurückgespiegelt. README und `docs/erste-schritte.md` beschreiben alle sechs Befehls-States — mit Beispielen und den beiden Stolpersteinen: die Buttons reagieren nur auf `true`, und ein falscher Zeitraum oder unbekannter Mitarbeiter wird als Warnung im Log beantwortet",
|
|
88
|
-
"ru": "`commands.punchUserId` теперь выбирает сотрудника, к которому относятся кнопки отметки (значение `0` возвращает выбор адаптеру), а текущий выбор отображается в этом состоянии. README и `docs/erste-schritte.md` описывают все шесть командных состояний — с примерами и двумя ловушками: кнопки срабатывают только на `true`, а неверный период или неизвестный сотрудник отмечаются предупреждением в журнале",
|
|
89
|
-
"pt": "`commands.punchUserId` passa a escolher o funcionário a que se aplicam os botões de marcação (com `0` a escolha volta para o adaptador) e a escolha atual é refletida nesse estado. README e `docs/erste-schritte.md` descrevem os seis estados de comando — com exemplos e as duas armadilhas: os botões só reagem a `true` e um período errado ou um funcionário desconhecido são respondidos com um aviso no log",
|
|
90
|
-
"nl": "`commands.punchUserId` kiest nu de medewerker waarop de stempelknoppen slaan (`0` geeft de keuze weer aan de adapter) en de huidige keuze wordt in die state teruggespiegeld. README en `docs/erste-schritte.md` beschrijven alle zes opdrachtstates — met voorbeelden en de twee valkuilen: de knoppen reageren alleen op `true` en een verkeerde periode of onbekende medewerker krijgt een waarschuwing in het log",
|
|
91
|
-
"fr": "`commands.punchUserId` sélectionne désormais l'employé auquel s'appliquent les boutons de pointage (`0` rend le choix à l'adaptateur) et le choix actuel est reflété dans cet état. Le README et `docs/erste-schritte.md` décrivent les six états de commande — avec des exemples et les deux pièges : les boutons ne réagissent qu'à `true` et une période erronée ou un employé inconnu reçoit un avertissement dans le log",
|
|
92
|
-
"it": "`commands.punchUserId` ora sceglie il dipendente a cui si applicano i pulsanti di timbratura (con `0` la scelta torna all'adattatore) e la scelta attuale viene rispecchiata in questo stato. README e `docs/erste-schritte.md` descrivono tutti e sei gli stati di comando — con esempi e le due trappole: i pulsanti reagiscono solo a `true` e un periodo errato o un dipendente sconosciuto ricevono un avviso nel log",
|
|
93
|
-
"es": "`commands.punchUserId` ahora elige el empleado al que se aplican los botones de fichaje (con `0` la elección vuelve al adaptador) y la elección actual se refleja en ese estado. El README y `docs/erste-schritte.md` describen los seis estados de comando — con ejemplos y las dos trampas: los botones solo reaccionan a `true` y un periodo erróneo o un empleado desconocido reciben un aviso en el log",
|
|
94
|
-
"pl": "`commands.punchUserId` wybiera teraz pracownika, którego dotyczą przyciski rejestracji (wartość `0` oddaje wybór adapterowi), a bieżący wybór jest odzwierciedlany w tym stanie. README i `docs/erste-schritte.md` opisują wszystkie sześć stanów poleceń — z przykładami i dwiema pułapkami: przyciski reagują tylko na `true`, a błędny okres lub nieznany pracownik kończą się ostrzeżeniem w logu",
|
|
95
|
-
"uk": "`commands.punchUserId` тепер вибирає співробітника, до якого належать кнопки відмітки (значення `0` повертає вибір адаптеру), а поточний вибір відображається в цьому стані. README і `docs/erste-schritte.md` описують усі шість командних станів — з прикладами та двома пастками: кнопки реагують лише на `true`, а хибний період або невідомий співробітник отримують попередження в журналі",
|
|
96
|
-
"zh-cn": "`commands.punchUserId` 现在用于选择打卡按钮所适用的员工(写入 `0` 则由适配器重新选择),当前选择会回写到该状态。README 与 `docs/erste-schritte.md` 描述了全部六个命令状态 —— 包含示例和两个陷阱:按钮只响应 `true`,错误的期间或未知员工会在日志中以警告回应"
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"titleLang": {
|
package/package.json
CHANGED
package/www/sw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sw.js","sources":["../../../../../../tmp/
|
|
1
|
+
{"version":3,"file":"sw.js","sources":["../../../../../../tmp/4c7ca29f38c2e40bbd78757a0253a6f7/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-pwa/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\nself.skipWaiting();\nworkbox_core_clientsClaim();\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"person.png\",\n \"revision\": \"771d3283ece4739e203e02aac535855e\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"a6c18307409d1fdb088dbbbedebb4b18\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"favicon.svg\",\n \"revision\": \"309e9efece69d60920618512ab9d57bf\"\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-Bd17z0YL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-D7f1X_an.js\",\n \"revision\": null\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"6f40f1ce0ce138d5af307fb0dbb1e6f9\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();workbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\"), {\n allowlist: [/^\\/$/], denylist: [/^\\/api\\//],}));\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_routing_NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist","denylist"],"mappings":"inBAoBAA,KAAKC,cACLC,EAAAA,eAMAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAA,GACHC,EAAAA,wBAA2CC,EAAAA,cAA8B,IAAIC,EAAAA,gBAAgCC,0BAA2C,cAAe,CACrKC,UAAW,CAAC,QAAUC,SAAU,CAAC"}
|