dorfteich/apps/api/src
Claude Fable 5 394d1c811d
All checks were successful
CI / Lint, typecheck, test (pull_request) Successful in 4m52s
CI / Build container images (pull_request) Successful in 3m54s
CI / Auth e2e pack (pull_request) Successful in 8m4s
CI / Import/export fidelity gate (pull_request) Successful in 56s
CD / Build and push images (push) Successful in 19s
CD / Deploy to Test (push) Successful in 13s
CD / Smoke tests against Test (push) Successful in 1m14s
CD / Promote to Int (push) Successful in 11s
CI / Lint, typecheck, test (push) Successful in 5m0s
CI / Build container images (push) Has been skipped
CI / Auth e2e pack (push) Successful in 7m41s
CI / Import/export fidelity gate (push) Successful in 56s
#192: deploy-level backup target allowlist
BACKUP_ALLOWED_TARGETS (comma-separated destination hosts) constrains
where backups may go, enforced twice: the api rejects settings writes
and connection tests towards non-allowlisted hosts with admin-visible
error codes and resolves a non-allowlisted configured target to null,
and the sidecar enforces the same policy at the point of egress for the
WebDAV upload and the rsync mirror alike (shared policy helpers in
packages/shared/src/backup-target-policy.ts).

BREAKING: the empty default disables every remote target - backups stay
local only, the VS-NfD reference configuration (ADR 0026). Existing
deployments with a remote target must list its host or uploads and
mirror stop. The admin UI distinguishes unavailable-by-policy from
unconfigured (i18n de+en) and shows the permitted hosts.

Refs #192 (ADR 0026)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168Ph5uBmHm8X28CSVpbpnJ
2026-07-30 12:17:14 +02:00
..
admin #192: deploy-level backup target allowlist 2026-07-30 12:17:14 +02:00
audit Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
auth #190: configurable session lifetime with a server-side idle timeout 2026-07-30 11:11:15 +02:00
backup #192: deploy-level backup target allowlist 2026-07-30 12:17:14 +02:00
comments Notify watchers about page changes and comments, with an in-app center (#94) 2026-07-11 23:20:25 +02:00
common #191: feeds.enabled instance switch, feed-token log masking 2026-07-30 11:34:43 +02:00
compaction Fix compaction test Bytes typing for strict typecheck (#40) 2026-07-09 08:23:55 +02:00
config Add backup sidecar: nightly dump, volume archive, prune, status, restore (#83) 2026-07-11 17:29:15 +02:00
favorites Favorites: personal page stars, golden icons, sidebar filter (#132) 2026-07-16 12:03:55 +02:00
files Add pond ZIP + per-page docx/odt export (#65) 2026-07-10 10:31:19 +02:00
grants Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
health Nextcloud backup target: admin-configured, manual + scheduled uploads, in-app restore (#103) 2026-07-12 10:39:18 +02:00
home Editable landing page for the Site Admin 2026-07-12 23:50:16 +02:00
i18n #154: Aufgabenübersicht als Kern-Block (Seite + Unterseiten) 2026-07-20 01:20:30 +02:00
import-export Vault import: decode ZIP names as UTF-8 and NFC-normalize them 2026-07-15 13:24:58 +02:00
inspector Add effective-permissions inspector (#57) 2026-07-10 00:00:27 +02:00
labels Wire real permissions into collab tokens and revocation (#53) 2026-07-09 18:48:42 +02:00
legal Add instance legal pages with public rendering and footer links (#82) 2026-07-11 16:40:04 +02:00
links Fix latenten Flake in links.service.db.test (Phantom-Sortierung) 2026-07-19 06:12:55 +02:00
mail Nextcloud backup target: admin-configured, manual + scheduled uploads, in-app restore (#103) 2026-07-12 10:39:18 +02:00
mcp #148: Seitenlisten filtern nach createdSince/updatedSince 2026-07-20 00:49:52 +02:00
members Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
notifications #188: purpose-bound token keys via HKDF, jose replaces the homegrown JWT 2026-07-30 06:41:11 +02:00
pages #188: purpose-bound token keys via HKDF, jose replaces the homegrown JWT 2026-07-30 06:41:11 +02:00
permissions Public REST API v1: personal access tokens, instance switch + per-pond opt-in (#104) 2026-07-12 11:17:03 +02:00
plugins CSP: data:-Fonts erlauben (eingebettete Fonts in Excalidraw-SVGs) 2026-07-19 22:27:17 +02:00
ponds #186: pond accent theming — scoped derivation, cascade pond > user > default 2026-07-29 09:09:36 +02:00
prisma Add Prisma with PostgreSQL, automatic migrations, and /readyz 2026-07-04 19:16:44 +02:00
public #191: feeds.enabled instance switch, feed-token log masking 2026-07-30 11:34:43 +02:00
public-api #147: Eigene Identität in der API klar dokumentiert 2026-07-20 00:49:53 +02:00
quotas Quota foundation: overrides, resolution, race-safe consumption (#22) 2026-07-05 20:55:59 +02:00
rate-limit Add DB-backed rate limiting with guard and decorator 2026-07-05 00:43:54 +02:00
scheduler Nextcloud backup target: admin-configured, manual + scheduled uploads, in-app restore (#103) 2026-07-12 10:39:18 +02:00
search Polish round 2: content footer, dismissable menus, manual versions, substring search, icon actions in settings (M10 follow-up) 2026-07-12 07:13:34 +02:00
settings #191: feeds.enabled instance switch, feed-token log masking 2026-07-30 11:34:43 +02:00
setup #190: configurable session lifetime with a server-side idle timeout 2026-07-30 11:11:15 +02:00
testing #189: make the CSRF origin check fail closed 2026-07-30 09:34:44 +02:00
trash Delete modes and subtree trash semantics for the page tree (#107) 2026-07-14 10:05:10 +02:00
users #150: @-Mentions — Inline-Node, instanzweite User-Suche, Autocomplete 2026-07-20 00:56:07 +02:00
versions Editor shortcuts: "e" edits, the platform chord+S snapshots versions 2026-07-15 13:17:09 +02:00
watches Add watches: follow pages and ponds with auto-watch preferences (#93) 2026-07-11 22:59:11 +02:00
app.module.ts #191: feeds.enabled instance switch, feed-token log masking 2026-07-30 11:34:43 +02:00
main.ts Remove an unused eslint-disable directive in main.ts 2026-07-12 20:45:29 +02:00