chore: release v0.36.1

This commit is contained in:
Ulas Kalayci
2026-04-29 21:33:10 +02:00
parent 3f69c7c698
commit 4f80903b04
4 changed files with 14 additions and 7 deletions
+7
View File
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.36.1] - 2026-04-29
### Fixed
- Date input: default date format changed from US (`MM/DD/YYYY`) to day-month-year (`DD.MM.YYYY`) for new users
- Date input: dot-separated dates (`DD.MM.YYYY`) are now accepted in addition to slash-separated dates
- Date input: `dmy` placeholder and display format updated to use dots instead of slashes
## [0.36.0] - 2026-04-29 ## [0.36.0] - 2026-04-29
### Added ### Added
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "oikos", "name": "oikos",
"version": "0.36.0", "version": "0.36.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "oikos", "name": "oikos",
"version": "0.36.0", "version": "0.36.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"bcrypt": "^6.0.0", "bcrypt": "^6.0.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "oikos", "name": "oikos",
"version": "0.36.0", "version": "0.36.1",
"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",
+4 -4
View File
@@ -9,7 +9,7 @@ const SUPPORTED_LOCALES = ['de', 'en', 'es', 'fr', 'it', 'sv', 'el', 'ru', 'tr',
const DEFAULT_LOCALE = 'de'; const DEFAULT_LOCALE = 'de';
const STORAGE_KEY = 'oikos-locale'; const STORAGE_KEY = 'oikos-locale';
const DATE_FORMAT_KEY = 'oikos-date-format'; const DATE_FORMAT_KEY = 'oikos-date-format';
const DEFAULT_DATE_FORMAT = 'mdy'; const DEFAULT_DATE_FORMAT = 'dmy';
let currentLocale = DEFAULT_LOCALE; let currentLocale = DEFAULT_LOCALE;
let translations = {}; let translations = {};
@@ -100,7 +100,7 @@ function formatDateParts(date, useUtc = false) {
const month = String((useUtc ? d.getUTCMonth() : d.getMonth()) + 1).padStart(2, '0'); const month = String((useUtc ? d.getUTCMonth() : d.getMonth()) + 1).padStart(2, '0');
const day = String(useUtc ? d.getUTCDate() : d.getDate()).padStart(2, '0'); const day = String(useUtc ? d.getUTCDate() : d.getDate()).padStart(2, '0');
switch (getDateFormatPreference()) { switch (getDateFormatPreference()) {
case 'dmy': return `${day}/${month}/${year}`; case 'dmy': return `${day}.${month}.${year}`;
case 'ymd': return `${year}-${month}-${day}`; case 'ymd': return `${year}-${month}-${day}`;
default: return `${month}/${day}/${year}`; default: return `${month}/${day}/${year}`;
} }
@@ -127,7 +127,7 @@ export function formatDate(date) {
export function dateInputPlaceholder() { export function dateInputPlaceholder() {
switch (getDateFormatPreference()) { switch (getDateFormatPreference()) {
case 'dmy': return 'DD/MM/YYYY'; case 'dmy': return 'DD.MM.YYYY';
case 'ymd': return 'YYYY-MM-DD'; case 'ymd': return 'YYYY-MM-DD';
default: return 'MM/DD/YYYY'; default: return 'MM/DD/YYYY';
} }
@@ -145,7 +145,7 @@ export function parseDateInput(value) {
const isoMatch = raw.match(/^(\d{4})-(\d{2})-(\d{2})$/); const isoMatch = raw.match(/^(\d{4})-(\d{2})-(\d{2})$/);
if (isoMatch) return isValidDateParts(isoMatch[1], isoMatch[2], isoMatch[3]) ? raw : ''; if (isoMatch) return isValidDateParts(isoMatch[1], isoMatch[2], isoMatch[3]) ? raw : '';
const slashMatch = raw.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); const slashMatch = raw.match(/^(\d{1,2})[\/.](\d{1,2})[\/.](\d{4})$/);
if (!slashMatch) return ''; if (!slashMatch) return '';
const [, first, second, year] = slashMatch; const [, first, second, year] = slashMatch;