iobroker.time-tracker 0.5.0 → 0.6.0

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,13 @@ 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.6.0 (2026-09-24)
355
+
356
+ - (Alex) change: the year overview of the absence tab became a **calendar**. The month now stands as a grid (Monday
357
+ first) with the name of every absent employee on the day — approved days green, requested ones grey, numbers of a
358
+ public holiday in bold. A **year dropdown** (three years back and ahead) and arrows for the month make the past and
359
+ the future reachable, so the administration can look ahead and back instead of only seeing the current year
360
+
354
361
  ### 0.5.0 (2026-09-23)
355
362
 
356
363
  - (Alex) new: the own absences can be subscribed in any calendar app. `POST /calendar/token` hands out a personal link
@@ -385,11 +392,6 @@ local SQLite file, access is role-based, and every correction is written to an a
385
392
  confirmation that names the type), and an inactive type stays in the lists of the administration while the employees
386
393
  no longer see it in their picker (`GET /absence-types?includeInactive=true`)
387
394
 
388
- ### 0.4.1 (2026-09-22)
389
-
390
- - (Alex) docs: the installation chapter no longer carries the build steps for work on the sources — they live in
391
- `CONTRIBUTING.md` and `docs/entwicklung.md`, so the README stays a manual for users
392
-
393
395
  Older entries are kept in [`CHANGELOG_OLD.md`](CHANGELOG_OLD.md).
394
396
 
395
397
  ## Provenance
package/io-package.json CHANGED
@@ -1,9 +1,22 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "time-tracker",
4
- "version": "0.5.0",
4
+ "version": "0.6.0",
5
5
  "nogit": true,
6
6
  "news": {
7
+ "0.6.0": {
8
+ "en": "change: the year overview of the absence tab became a calendar. The month stands as a grid (Monday first) with the name of every absent employee on the day — approved days green, requested ones grey, public holidays in bold. A year dropdown (three years back and ahead) and month arrows make the past and the future reachable",
9
+ "de": "Änderung: die Jahresübersicht im Reiter Abwesenheiten ist jetzt ein Kalender. Der Monat steht als Raster (Montag zuerst) mit dem Namen jedes abwesenden Mitarbeiters am jeweiligen Tag — genehmigte Tage grün, beantragte grau, Feiertage fett. Eine Jahresauswahl (drei Jahre zurück und voraus) und Monatspfeile machen Vergangenheit und Zukunft erreichbar",
10
+ "ru": "изменение: обзор года на вкладке отсутствий стал календарём. Месяц показан сеткой (с понедельника) с именем каждого отсутствующего сотрудника в соответствующем дне — одобренные дни зелёные, запрошенные серые, праздники жирным. Выбор года (три года назад и вперёд) и стрелки месяцев делают доступным прошлое и будущее",
11
+ "pt": "alteração: a visão do ano no separador das ausências passou a ser um calendário. O mês aparece como grelha (segunda-feira primeiro) com o nome de cada funcionário ausente no respetivo dia — dias aprovados a verde, pedidos a cinzento, feriados a negrito. Um seletor de ano (três anos para trás e para a frente) e setas de mês tornam passado e futuro acessíveis",
12
+ "nl": "wijziging: het jaaroverzicht in het tabblad afwezigheden is nu een kalender. De maand staat als raster (maandag eerst) met de naam van elke afwezige medewerker op de dag — goedgekeurde dagen groen, aangevraagde grijs, feestdagen vet. Een jaarkeuze (drie jaar terug en vooruit) en maandpijlen maken verleden en toekomst bereikbaar",
13
+ "fr": "changement : la vue de l'année dans l'onglet des absences est devenue un calendrier. Le mois apparaît en grille (lundi en premier) avec le nom de chaque employé absent sur le jour — jours approuvés en vert, demandés en gris, jours fériés en gras. Un choix d'année (trois ans en arrière et en avant) et des flèches de mois rendent le passé et le futur accessibles",
14
+ "it": "modifica: la panoramica dell'anno nella scheda delle assenze è diventata un calendario. Il mese appare come griglia (lunedì per primo) con il nome di ogni dipendente assente nel giorno — giorni approvati in verde, richiesti in grigio, festivi in grassetto. Una scelta dell'anno (tre anni indietro e avanti) e le frecce del mese rendono passato e futuro raggiungibili",
15
+ "es": "cambio: la visión del año en la pestaña de ausencias ahora es un calendario. El mes aparece como cuadrícula (lunes primero) con el nombre de cada empleado ausente en el día — días aprobados en verde, solicitados en gris, festivos en negrita. Un selector de año (tres años atrás y adelante) y flechas de mes hacen accesibles el pasado y el futuro",
16
+ "pl": "zmiana: przegląd roku na karcie nieobecności stał się kalendarzem. Miesiąc pokazano jako siatkę (poniedziałek pierwszy) z nazwiskiem każdego nieobecnego pracownika w danym dniu — dni zatwierdzone na zielono, złożone na szaro, święta pogrubione. Wybór roku (trzy lata wstecz i w przód) oraz strzałki miesięcy udostępniają przeszłość i przyszłość",
17
+ "uk": "зміна: огляд року на вкладці відсутностей став календарем. Місяць показано сіткою (з понеділка) з іменем кожного відсутнього працівника у відповідному дні — схвалені дні зелені, запитані сірі, свята жирним. Вибір року (три роки назад і вперед) і стрілки місяців роблять доступним минуле й майбутнє",
18
+ "zh-cn": "变更:缺勤标签页的年度总览已改为日历。月份以网格显示(周一在前),每个缺勤员工的名字出现在对应日期 —— 已批准为绿色,已申请为灰色,节假日为粗体。年份选择(前后各三年)与月份箭头让过去与未来都可查看"
19
+ },
7
20
  "0.5.0": {
8
21
  "en": "new: the own absences can be subscribed in any calendar app. POST /calendar/token hands out a personal link (GET /calendar.ics?token=…, public and rate limited) whose token can be rotated — that makes the old link invalid. The feed is proper iCalendar: DTEND is exclusive so no event loses its last day, half days carry their portion in the summary, a request that waits for its decision is TENTATIVE, and the approval state travels in STATUS. On top the administration finds a year overview in the absence tab: approved days per employee and month",
9
22
  "de": "neu: die eigenen Abwesenheiten lassen sich in jeder Kalender-App abonnieren. POST /calendar/token gibt einen persönlichen Link aus (GET /calendar.ics?token=…, öffentlich und mengenbegrenzt), dessen Token sich erneuern lässt — damit wird der alte Link ungültig. Der Feed ist echtes iCalendar: DTEND ist exklusiv, damit kein Termin seinen letzten Tag verliert, halbe Tage tragen ihren Anteil in der Zusammenfassung, ein Antrag, der noch auf seine Entscheidung wartet, ist TENTATIVE, und der Genehmigungsstand reist in STATUS mit. Zusätzlich findet die Verwaltung im Reiter Abwesenheiten eine Jahresübersicht: genehmigte Tage je Mitarbeiter und Monat",
@@ -81,19 +94,6 @@
81
94
  "pl": "nowość: administracja decyduje teraz o nieobecnościach. Wniosek pracownika czeka jako „złożony” i nic nie znaczy, dopóki ktoś go nie zatwierdzi lub nie odrzuci — nowa karta „Nieobecności” pokazuje otwarte wnioski z powodem decyzji, pozwala administracji wpisać daty dla pracownika (od razu zatwierdzone) i odpowiada „kto jest nieobecny”. Tylko zatwierdzone dni trafiają do czasu pracy i salda urlopu, a odrzucony wniosek zwraca pracownikowi swój powód (migracja 21)",
82
95
  "uk": "новинка: адміністрація тепер вирішує щодо відсутностей. Заявка працівника чекає як «запитано» і нічого не значить, доки хтось не схвалить або не відхилить її — нова вкладка «Відсутності» показує відкриті заявки з причиною рішення, дає адміністрації внести дати для працівника (схвалено одразу) і відповідає «хто відсутній». Лише схвалені дні потрапляють до робочого часу й балансу відпустки, а відхилена заявка повертає працівникові свою причину (міграція 21)",
83
96
  "zh-cn": "新功能:现在由管理方审批缺勤。员工的申请以「已申请」等待,在有人批准或拒绝之前不计入任何数值 —— 新的「缺勤」标签页显示待审批申请并可填写决定原因,允许管理方为员工登记日期(立即批准),并回答「谁缺勤」。只有已批准的日期才计入工作时间与休假余额,被拒绝的申请会把原因带回给员工(迁移 21)"
84
- },
85
- "0.3.4": {
86
- "en": "feat: the absence types can be maintained in the administration now — code, name, paid, factor and the vacation deduction, as a row per type with the form in a dialog. The type that uses up the vacation allowance is marked in the lists and in the picker, so “F – Ferien” reads as vacation at one glance",
87
- "de": "feat: die Abwesenheitsarten lassen sich jetzt in der Verwaltung pflegen — Kürzel, Bezeichnung, bezahlt, Faktor und Urlaubsabzug, als Zeile je Art mit dem Formular in einem Dialog. Die Art, die vom Urlaubskontingent abzieht, ist in den Listen und in der Auswahl gekennzeichnet, sodass „F – Ferien“ auf einen Blick als Urlaub lesbar ist",
88
- "ru": "новое: видами отсутствия теперь можно управлять в администрировании — код, название, оплата, коэффициент и вычет отпуска, по строке на вид с формой в диалоге. Вид, расходующий отпускной лимит, отмечен в списках и в выборе, поэтому «F – Ferien» сразу читается как отпуск",
89
- "pt": "novo: os tipos de ausência podem agora ser mantidos na administração — código, designação, pagamento, fator e dedução de férias, uma linha por tipo com o formulário numa caixa de diálogo. O tipo que consome o direito a férias está marcado nas listas e na escolha, por isso «F – Ferien» lê-se logo como férias",
90
- "nl": "nieuw: de afwezigheidstypes kunnen nu in het beheer worden onderhouden — code, naam, betaald, factor en vakantieaftrek, één regel per type met het formulier in een dialoog. Het type dat het vakantietegoed opgebruikt, is gemarkeerd in de lijsten en in de keuzelijst, zodat „F – Ferien“ in één oogopslag als vakantie leesbaar is",
91
- "fr": "nouveau : les types d'absence peuvent désormais être gérés dans l'administration — code, libellé, payé, facteur et déduction de vacances, une ligne par type avec le formulaire dans une boîte de dialogue. Le type qui consomme le droit aux vacances est marqué dans les listes et dans le choix, si bien que « F – Ferien » se lit comme vacances d'un coup d'œil",
92
- "it": "novità: i tipi di assenza possono ora essere gestiti nell'amministrazione — codice, denominazione, pagato, fattore e deduzione ferie, una riga per tipo con il modulo in una finestra di dialogo. Il tipo che consuma il diritto alle ferie è contrassegnato negli elenchi e nella scelta, così «F – Ferien» si legge come ferie a colpo d'occhio",
93
- "es": "novedad: los tipos de ausencia se pueden mantener ahora en la administración — código, denominación, pagado, factor y deducción de vacaciones, una fila por tipo con el formulario en un diálogo. El tipo que consume el derecho a vacaciones está marcado en las listas y en la elección, así que «F – Ferien» se lee como vacaciones de un vistazo",
94
- "pl": "nowość: rodzajami nieobecności można teraz zarządzać w administracji — kod, nazwa, płatne, współczynnik i potrącenie urlopu, po jednym wierszu na rodzaj z formularzem w oknie dialogowym. Rodzaj zużywający limit urlopu jest oznaczony na listach i na liście wyboru, więc «F – Ferien» od razu czyta się jako urlop",
95
- "uk": "новинка: видами відсутності тепер можна керувати в адмініструванні — код, назва, оплата, коефіцієнт і відрахування відпустки, по рядку на вид із формою в діалозі. Вид, що витрачає ліміт відпустки, позначено у списках і у виборі, тож «F – Ferien» одразу читається як відпустка",
96
- "zh-cn": "新功能:现在可在管理中维护缺勤类型 —— 代号、名称、带薪、系数与休假扣减,每种类型一行,表单在对话框中。会消耗休假额度的类型会在列表和选择中标记,因此「F – Ferien」一眼即可看出是休假"
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.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Time tracking (clock-in/out) for ioBroker with web app, badge terminal and reports",
5
5
  "author": {
6
6
  "name": "Alex",
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Kopieren",
417
417
  "absences.calendarCopied": "Kopiert",
418
418
  "absences.calendarRotate": "Link erneuern",
419
- "admin.absences.year": "Jahresübersicht {{year}}",
420
- "admin.absences.yearHint": "Genehmigte Abwesenheitstage je Monat und Mitarbeiter. Beantragte Tage erscheinen hier erst nach der Entscheidung."
419
+ "admin.absences.yearHint": "Genehmigte Abwesenheiten erscheinen grün, beantragte grau. Kur Tage eines Feiertags sind fett.",
420
+ "admin.absences.yearLabel": "Jahr",
421
+ "absences.previousMonth": "Voriger Monat",
422
+ "absences.nextMonth": "Nächster Monat"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Copy",
417
417
  "absences.calendarCopied": "Copied",
418
418
  "absences.calendarRotate": "Renew the link",
419
- "admin.absences.year": "Year overview {{year}}",
420
- "admin.absences.yearHint": "Approved absence days per month and employee. Requested days appear here only after the decision."
419
+ "admin.absences.yearHint": "Approved absences are green, requested ones grey. Day numbers of a public holiday are bold.",
420
+ "admin.absences.yearLabel": "Year",
421
+ "absences.previousMonth": "Previous month",
422
+ "absences.nextMonth": "Next month"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Copiar",
417
417
  "absences.calendarCopied": "Copiado",
418
418
  "absences.calendarRotate": "Renovar el enlace",
419
- "admin.absences.year": "Visión del año {{year}}",
420
- "admin.absences.yearHint": "Días de ausencia aprobados por mes y empleado. Los días solicitados solo aparecen aquí tras la decisión."
419
+ "admin.absences.yearHint": "Las ausencias aprobadas son verdes, las solicitadas grises. Los días festivos van en negrita.",
420
+ "admin.absences.yearLabel": "Año",
421
+ "absences.previousMonth": "Mes anterior",
422
+ "absences.nextMonth": "Mes siguiente"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Copier",
417
417
  "absences.calendarCopied": "Copié",
418
418
  "absences.calendarRotate": "Renouveler le lien",
419
- "admin.absences.year": "Vue de l'année {{year}}",
420
- "admin.absences.yearHint": "Jours d'absence approuvés par mois et par employé. Les jours demandés n'apparaissent ici qu'après la décision."
419
+ "admin.absences.yearHint": "Les absences approuvées sont vertes, les demandées grises. Les jours fériés sont en gras.",
420
+ "admin.absences.yearLabel": "Année",
421
+ "absences.previousMonth": "Mois précédent",
422
+ "absences.nextMonth": "Mois suivant"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Copia",
417
417
  "absences.calendarCopied": "Copiato",
418
418
  "absences.calendarRotate": "Rinnova il link",
419
- "admin.absences.year": "Panoramica dell'anno {{year}}",
420
- "admin.absences.yearHint": "Giorni di assenza approvati per mese e dipendente. I giorni richiesti compaiono qui solo dopo la decisione."
419
+ "admin.absences.yearHint": "Le assenze approvate sono verdi, quelle richieste grigie. I giorni festivi sono in grassetto.",
420
+ "admin.absences.yearLabel": "Anno",
421
+ "absences.previousMonth": "Mese precedente",
422
+ "absences.nextMonth": "Mese successivo"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Kopiëren",
417
417
  "absences.calendarCopied": "Gekopieerd",
418
418
  "absences.calendarRotate": "Link vernieuwen",
419
- "admin.absences.year": "Jaaroverzicht {{year}}",
420
- "admin.absences.yearHint": "Goedgekeurde afwezigheidsdagen per maand en medewerker. Aangevraagde dagen verschijnen hier pas na de beslissing."
419
+ "admin.absences.yearHint": "Goedgekeurde afwezigheden zijn groen, aangevraagde grijs. Dagcijfers van een feestdag zijn vet.",
420
+ "admin.absences.yearLabel": "Jaar",
421
+ "absences.previousMonth": "Vorige maand",
422
+ "absences.nextMonth": "Volgende maand"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Kopiuj",
417
417
  "absences.calendarCopied": "Skopiowano",
418
418
  "absences.calendarRotate": "Odśwież link",
419
- "admin.absences.year": "Przegląd roku {{year}}",
420
- "admin.absences.yearHint": "Zatwierdzone dni nieobecności według miesiąca i pracownika. Złożone dni pojawiają się tu dopiero po decyzji."
419
+ "admin.absences.yearHint": "Zatwierdzone nieobecności są zielone, złożone szare. Dni świąt są pogrubione.",
420
+ "admin.absences.yearLabel": "Rok",
421
+ "absences.previousMonth": "Poprzedni miesiąc",
422
+ "absences.nextMonth": "Następny miesiąc"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Copiar",
417
417
  "absences.calendarCopied": "Copiado",
418
418
  "absences.calendarRotate": "Renovar o link",
419
- "admin.absences.year": "Visão do ano {{year}}",
420
- "admin.absences.yearHint": "Dias de ausência aprovados por mês e funcionário. Dias pedidos aparecem aqui só depois da decisão."
419
+ "admin.absences.yearHint": "Ausências aprovadas a verde, pedidas a cinzento. Os números de dias feriados estão a negrito.",
420
+ "admin.absences.yearLabel": "Ano",
421
+ "absences.previousMonth": "Mês anterior",
422
+ "absences.nextMonth": "Mês seguinte"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Копировать",
417
417
  "absences.calendarCopied": "Скопировано",
418
418
  "absences.calendarRotate": "Обновить ссылку",
419
- "admin.absences.year": "Обзор года {{year}}",
420
- "admin.absences.yearHint": "Одобренные дни отсутствия по месяцам и сотрудникам. Запрошенные дни появляются здесь только после решения."
419
+ "admin.absences.yearHint": "Одобренные отсутствия зелёные, запрошенные серые. Числа праздничных дней выделены жирным.",
420
+ "admin.absences.yearLabel": "Год",
421
+ "absences.previousMonth": "Предыдущий месяц",
422
+ "absences.nextMonth": "Следующий месяц"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "Копіювати",
417
417
  "absences.calendarCopied": "Скопійовано",
418
418
  "absences.calendarRotate": "Оновити посилання",
419
- "admin.absences.year": "Огляд року {{year}}",
420
- "admin.absences.yearHint": "Схвалені дні відсутності за місяцями й працівниками. Запитані дні з'являються тут лише після рішення."
419
+ "admin.absences.yearHint": "Схвалені відсутності зелені, запитані сірі. Числа святкових днів виділені жирним.",
420
+ "admin.absences.yearLabel": "Рік",
421
+ "absences.previousMonth": "Попередній місяць",
422
+ "absences.nextMonth": "Наступний місяць"
421
423
  }
@@ -416,6 +416,8 @@
416
416
  "absences.calendarCopy": "复制",
417
417
  "absences.calendarCopied": "已复制",
418
418
  "absences.calendarRotate": "更新链接",
419
- "admin.absences.year": "{{year}} 年度总览",
420
- "admin.absences.yearHint": "按月份与员工显示的已批准缺勤天数。已申请的日期只有在决定之后才会出现在这里。"
419
+ "admin.absences.yearHint": "已批准的缺勤显示为绿色,已申请的为灰色。节假日日期为粗体。",
420
+ "admin.absences.yearLabel": "年份",
421
+ "absences.previousMonth": "上个月",
422
+ "absences.nextMonth": "下个月"
421
423
  }