fix: modal onClose callback, calendar popup truncation, datetime validation

- modal.js: add onClose callback to openModal(), fix _initialFormTimeout
  cleanup, deduplicate escape/overlay-click handlers in confirmModal,
  promptModal, selectModal using the new callback
- calendar.js: replace popup.innerHTML with insertAdjacentHTML (constraint),
  add truncateDescription() to cap long event descriptions at 500 chars
- validate.js: extend DATETIME_RE to cover ISO 8601 with ms/timezone,
  normalise datetime values to YYYY-MM-DDTHH:MM on input
- index.js: include app version in startup log message
- docker-compose.yml / .env.example: switch from named volume to
  host-mounted DATA_DIR/BACKUP_DIR with sane defaults
- docs/installation.md: document host-mount data paths

Co-Authored-By: Rafael Foster <rafaelfoster@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ulas Kalayci
2026-05-06 07:00:07 +02:00
parent 56b2fd471d
commit b545d83f64
7 changed files with 101 additions and 172 deletions
+4 -6
View File
@@ -7,12 +7,14 @@ services:
ports:
- "0.0.0.0:3000:3000"
volumes:
- oikos_data:/data
- ${DATA_DIR:-./data}:/data
- ${BACKUP_DIR:-./backups}:/backups
env_file:
- .env
environment:
- NODE_ENV=production
- DB_PATH=/data/oikos.db
- DB_PATH=${DB_PATH:-/data/oikos.db}
- BACKUP_DIR=${BACKUP_DIR:-/backups}
# Reverse proxy setup (Caddy, nginx, Traefik):
# - Remove SESSION_SECURE=false (default is true)
# - TRUST_PROXY is automatically set to 1 (trust one proxy hop)
@@ -24,7 +26,3 @@ services:
timeout: 10s
retries: 3
start_period: 10s
volumes:
oikos_data:
driver: local