iobroker.time-tracker 0.4.3 → 0.4.4

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 CHANGED
@@ -351,6 +351,15 @@ local SQLite file, access is role-based, and every correction is written to an a
351
351
 
352
352
  ### **WORK IN PROGRESS**
353
353
 
354
+ ### 0.4.4 (2026-09-23)
355
+
356
+ - (Alex) fix: the browser tests moved from `e2e/` to `test/e2e/`. The repository checker looks at the imported
357
+ packages of the sources and skips the `test` directory only, so `@playwright/test` (a dev dependency that the specs
358
+ use) was reported as `W5042` “used but not found in dependencies”. `playwright.config.ts`, the e2e workflow and the
359
+ docs follow the new path, the test server computes the repository root one level deeper, and the root
360
+ `tsconfig.json` leaves the browser tests to their own `test/e2e/tsconfig.json` — they need the DOM types the
361
+ adapter does not have
362
+
354
363
  ### 0.4.3 (2026-09-22)
355
364
 
356
365
  - (Alex) change: “active” of an absence type now reads “**visible for everybody**” and means exactly that. Switched on,
@@ -380,12 +389,6 @@ local SQLite file, access is role-based, and every correction is written to an a
380
389
  away”. Only approved days reach the working time and the vacation balance, the state of a request is marked in the
381
390
  app and a rejection carries its reason back (migration 21, `POST /absences/:id/approval`)
382
391
 
383
- ### 0.3.4 (2026-09-22)
384
-
385
- - (Alex) feat: the absence types can be maintained in the admin now — one row per type and the form in a dialog, with
386
- code, name, paid, factor and the vacation deduction. The type that uses up the vacation allowance is marked in the
387
- lists and in the picker, so “F – Ferien” reads as vacation at one glance
388
-
389
392
  Older entries are kept in [`CHANGELOG_OLD.md`](CHANGELOG_OLD.md).
390
393
 
391
394
  ## Provenance
package/io-package.json CHANGED
@@ -1,9 +1,22 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "time-tracker",
4
- "version": "0.4.3",
4
+ "version": "0.4.4",
5
5
  "nogit": true,
6
6
  "news": {
7
+ "0.4.4": {
8
+ "en": "fix: the browser tests moved from e2e/ to test/e2e/. The repository checker looks at the packages the sources import and skips the test directory only, so it saw @playwright/test — a dev dependency of the specs — as used but not declared. The Playwright config, the e2e workflow and the docs follow the new path, and the test server points at the repository root one level deeper",
9
+ "de": "fix: die Browser-Tests sind von e2e/ nach test/e2e/ umgezogen. Der Repository-Checker prüft die Pakete, die die Quellen importieren, und überspringt nur das test-Verzeichnis — deshalb sah er @playwright/test (eine dev-Abhängigkeit der Specs) als benutzt, aber nicht deklariert. Playwright-Konfiguration, e2e-Workflow und Doku folgen dem neuen Pfad, und der Testserver zeigt eine Ebene tiefer auf die Repository-Wurzel",
10
+ "ru": "исправление: браузерные тесты переехали из e2e/ в test/e2e/. Проверка репозитория смотрит на пакеты, которые импортируют исходники, и пропускает только каталог test — поэтому @playwright/test (dev-зависимость спецификаций) выглядел используемым, но не объявленным. Конфигурация Playwright, workflow e2e и документация следуют новому пути, а тестовый сервер указывает на корень репозитория на уровень глубже",
11
+ "pt": "correção: os testes de navegador passaram de e2e/ para test/e2e/. O verificador de repositório olha para os pacotes que os fontes importam e ignora apenas o diretório test — por isso via @playwright/test (uma dependência de desenvolvimento das especificações) como usado mas não declarado. A configuração do Playwright, o workflow e2e e a documentação seguem o novo caminho, e o servidor de teste aponta para a raiz do repositório um nível mais fundo",
12
+ "nl": "fix: de browsertests zijn verhuisd van e2e/ naar test/e2e/. De repositorychecker kijkt naar de pakketten die de bron importeert en slaat alleen de map test over — daarom zag hij @playwright/test (een dev-afhankelijkheid van de specs) als gebruikt maar niet gedeclareerd. De Playwright-configuratie, de e2e-workflow en de documentatie volgen het nieuwe pad, en de testserver wijst een niveau dieper naar de repositorywortel",
13
+ "fr": "correctif : les tests de navigateur ont déménagé de e2e/ vers test/e2e/. Le vérificateur de dépôt regarde les paquets que les sources importent et n'ignore que le dossier test — il voyait donc @playwright/test (une dépendance de développement des spécifications) comme utilisé mais non déclaré. La configuration Playwright, le workflow e2e et la documentation suivent le nouveau chemin, et le serveur de test pointe un niveau plus bas vers la racine du dépôt",
14
+ "it": "correzione: i test del browser si sono spostati da e2e/ a test/e2e/. Il verificatore del repository guarda i pacchetti importati dai sorgenti e salta solo la cartella test — perciò vedeva @playwright/test (una dipendenza di sviluppo delle specifiche) come usato ma non dichiarato. La configurazione di Playwright, il workflow e2e e la documentazione seguono il nuovo percorso, e il server di test punta un livello più in basso alla radice del repository",
15
+ "es": "corrección: los tests de navegador se han movido de e2e/ a test/e2e/. El verificador del repositorio mira los paquetes que importan las fuentes y omite solo la carpeta test — por eso veía @playwright/test (una dependencia de desarrollo de las especificaciones) como usado pero no declarado. La configuración de Playwright, el workflow e2e y la documentación siguen el nuevo camino, y el servidor de pruebas apunta un nivel más abajo a la raíz del repositorio",
16
+ "pl": "poprawka: testy przeglądarkowe przeniesiono z e2e/ do test/e2e/. Weryfikator repozytorium patrzy na pakiety importowane przez źródła i pomija tylko katalog test — dlatego widział @playwright/test (zależność deweloperską specyfikacji) jako użyty, ale niezadeklarowany. Konfiguracja Playwright, workflow e2e i dokumentacja podążają za nową ścieżką, a serwer testowy wskazuje o poziom niżej na katalog główny repozytorium",
17
+ "uk": "виправлення: браузерні тести переїхали з e2e/ до test/e2e/. Перевірка репозиторію дивиться на пакети, які імпортують джерела, і пропускає лише каталог test — тому @playwright/test (dev-залежність специфікацій) виглядав використаним, але не оголошеним. Конфігурація Playwright, workflow e2e та документація йдуть за новим шляхом, а тестовий сервер вказує на корінь репозиторію на рівень глибше",
18
+ "zh-cn": "修复:浏览器测试已从 e2e/ 迁移到 test/e2e/。仓库检查器会查看源码导入的包,并且只跳过 test 目录 —— 因此它把 @playwright/test(规格说明的开发依赖)视为已使用但未声明。Playwright 配置、e2e 工作流与文档都已跟随新路径,测试服务器也向上一级指向仓库根目录"
19
+ },
7
20
  "0.4.3": {
8
21
  "en": "change: “active” of an absence type now reads “visible for everybody” and means exactly that. Switched on, the employees pick the type in the app and request it (vacation, further training); switched off, the type belongs to the administration alone (sickness, accident, military service — such a note reaches a company on the same day and is booked, not requested). The server refuses an employee a type that is not public, sickness, accident and military service start switched off (migration 22), and the hint in the card explains the switch",
9
22
  "de": "Änderung: „Aktiv“ einer Abwesenheitsart heißt jetzt „Für alle sichtbar“ und bedeutet genau das. Eingeschaltet wählen die Mitarbeiter die Art in der App und beantragen sie (Urlaub, Weiterbildung); ausgeschaltet gehört die Art nur der Verwaltung (Krankheit, Unfall, Militär — so eine Meldung erreicht das Unternehmen am selben Tag und wird gebucht, nicht beantragt). Der Server verweigert dem Mitarbeiter eine nicht öffentliche Art, Krankheit, Unfall und Militär starten ausgeschaltet (Migration 22), und der Hinweis in der Karte erklärt den Schalter",
@@ -81,19 +94,6 @@
81
94
  "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ą",
82
95
  "uk": "виправлення: розділ встановлення в README більше не посилається на діалог адаптера для URL — перевірка репозиторію позначає це як E6013. Тепер описано звичайний шлях через список адаптерів ioBroker admin (і названо реєстр для машин без адміна); кроки збірки для роботи з джерелами виділено окремо",
83
96
  "zh-cn": "修复:README 的安装章节不再指向“通过 URL 安装适配器”的对话框 —— 仓库检查器会将其报告为 E6013。现在描述通过 ioBroker admin 适配器列表的正常方式(并说明没有 admin 时使用注册表);针对源码开发的构建步骤单独说明"
84
- },
85
- "0.3.2": {
86
- "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)",
87
- "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)",
88
- "ru": "исправление: правила автоматики теперь компактный список — по одной строке на правило с названием, видом, временем, сотрудником и днями недели, плюс кнопки «активно», «изменить» и «удалить». Форма открывается только в диалоге, а кнопка сохранения карточки называется «Сохранить правила» (раньше на ней была подпись из правил перерывов)",
89
- "pt": "correção: as regras de automação são agora uma lista compacta - uma linha por regra com designação, tipo, hora, funcionário e dias da semana, mais os botões de ativo, editar e eliminar. O formulário só abre num diálogo, e o botão de guardar do cartão diz «Guardar regras» (antes tinha a designação das regras de pausa)",
90
- "nl": "fix: de automatiseringsregels zijn nu een compacte lijst - één regel per rij met naam, soort, tijd, medewerker en weekdagen, plus de knoppen voor actief, bewerken en verwijderen. Het formulier opent alleen in een dialoog, en de opslaanknop van de kaart heet “Regels opslaan” (daarvoor stond er het opschrift van de pauzeregels)",
91
- "fr": "correctif : les règles d'automatisation forment désormais une liste compacte - une ligne par règle avec libellé, type, heure, employé et jours de la semaine, plus les boutons actif, modifier et supprimer. Le formulaire ne s'ouvre que dans une boîte de dialogue, et le bouton d'enregistrement de la carte s'appelle « Enregistrer les règles » (il portait auparavant le libellé des règles de pause)",
92
- "it": "correzione: le regole di automazione sono ora un elenco compatto - una riga per regola con etichetta, tipo, ora, dipendente e giorni della settimana, più i pulsanti attivo, modifica ed elimina. Il modulo si apre solo in una finestra di dialogo e il pulsante di salvataggio della scheda dice «Salva regole» (prima portava la dicitura delle regole di pausa)",
93
- "es": "corrección: las reglas de automatización son ahora una lista compacta - una fila por regla con denominación, tipo, hora, empleado y días de la semana, más los botones de activo, editar y eliminar. El formulario solo se abre en un diálogo, y el botón de guardar de la tarjeta dice «Guardar reglas» (antes llevaba la etiqueta de las reglas de pausa)",
94
- "pl": "poprawka: reguły automatyki są teraz kompaktową listą - jeden wiersz na regułę z nazwą, rodzajem, godziną, pracownikiem i dniami tygodnia oraz przyciskami aktywna, edytuj i usuń. Formularz otwiera się tylko w oknie dialogowym, a przycisk zapisu na karcie nazywa się „Zapisz reguły” (wcześniej miał opis reguł przerw)",
95
- "uk": "виправлення: правила автоматики тепер компактний список — по одному рядку на правило з назвою, видом, часом, працівником і днями тижня, а також кнопки «активно», «змінити» та «видалити». Форма відкривається лише в діалозі, а кнопка збереження на картці називається «Зберегти правила» (раніше на ній був підпис правил перерв)",
96
- "zh-cn": "修复:自动化规则现在是紧凑列表 —— 每条规则一行,包含名称、类型、时间、员工和星期,以及「启用」「编辑」「删除」按钮。表单只在对话框中打开,卡片上的保存按钮现在显示「保存规则」(此前显示的是休息规则的文字)"
97
97
  }
98
98
  },
99
99
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.time-tracker",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Time tracking (clock-in/out) for ioBroker with web app, badge terminal and reports",
5
5
  "author": {
6
6
  "name": "Alex",
package/www/sw.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sw.js","sources":["../../../../../../tmp/14f949f5e6856be9d45ca55aff696d75/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\": \"4488a21ebd6c3b6cb5126cf9abe8d9bf\"\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-B_bqnMkf.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"}
1
+ {"version":3,"file":"sw.js","sources":["../../../../../../tmp/2dc7b6d384d273c1cc09fe1ddd66a4e5/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\": \"4488a21ebd6c3b6cb5126cf9abe8d9bf\"\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-B_bqnMkf.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"}