chore: release v0.22.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.22.2] - 2026-04-21
|
||||
|
||||
### Fixed
|
||||
- Locale file (`de.json`) no longer causes a JSON parse error that made the app completely unusable. The `recipes.deleteConfirm` value contained a bare ASCII double-quote inside a JSON string, which prematurely terminated the string and broke every page load.
|
||||
- ICS calendar subscriptions now respect the `COUNT` parameter in RRULE (RFC 5545). Previously, events with a limited number of occurrences (e.g. `RRULE:FREQ=WEEKLY;COUNT=3`) were incorrectly shown as upcoming because the expansion loop iterated to the sync window end regardless of the occurrence limit.
|
||||
|
||||
## [0.22.1] - 2026-04-21
|
||||
|
||||
### Fixed
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "oikos",
|
||||
"version": "0.22.1",
|
||||
"version": "0.22.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "oikos",
|
||||
"version": "0.22.1",
|
||||
"version": "0.22.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bcrypt": "^6.0.0",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "oikos",
|
||||
"version": "0.22.1",
|
||||
"version": "0.22.2",
|
||||
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
||||
"main": "server/index.js",
|
||||
"type": "module",
|
||||
|
||||
@@ -697,7 +697,7 @@
|
||||
"ingredientsLabel": "Zutaten",
|
||||
"addToMeals": "In Essensplan übernehmen",
|
||||
"openLink": "Rezept-Link öffnen",
|
||||
"deleteConfirm": "Rezept „{{title}}" löschen?",
|
||||
"deleteConfirm": "Rezept \"{{title}}\" löschen?",
|
||||
"created": "Rezept gespeichert.",
|
||||
"updated": "Rezept aktualisiert.",
|
||||
"deleted": "Rezept gelöscht.",
|
||||
|
||||
@@ -117,10 +117,14 @@ function expandRRULE(vevent, windowStart, windowEnd) {
|
||||
const e = new Date(vevent.allDay ? vevent.dtend + 'T00:00:00Z' : vevent.dtend);
|
||||
if (!isNaN(s) && !isNaN(e)) durationMs = e - s;
|
||||
}
|
||||
const countMatch = /;COUNT=(\d+)/i.exec(vevent.rrule);
|
||||
const maxCount = countMatch ? parseInt(countMatch[1], 10) : null;
|
||||
let current = startDate, iterations = 0;
|
||||
const MAX_ITER = 1500;
|
||||
while (current <= windowEnd && iterations < MAX_ITER) {
|
||||
iterations++;
|
||||
if (maxCount !== null && iterations > maxCount) break;
|
||||
|
||||
if (current >= windowStart) {
|
||||
const occStart = current + timeSuffix;
|
||||
let occEnd = null;
|
||||
|
||||
Reference in New Issue
Block a user