Commit graph

3988 commits

Author SHA1 Message Date
Till JS
3b61ab64a4 chore: gitignore .npmrc — Verdaccio-Token soll nie in git
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
2026-05-20 16:52:24 +02:00
Till JS
8c8108d202 feat(infra): Primary-Switch herbatrium.com + seepuls.com
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
- herbatrium.mana.how + herbatrium-api.mana.how raus aus cloudflared
  und mana-auth CORS_ORIGINS — nur noch herbatrium.com /
  api.herbatrium.com.
- Seepuls vom .mana.how- auf .com-Setup gewechselt: cloudflared
  exposed jetzt seepuls.com (apex + www) und api.seepuls.com (statt
  seepuls.mana.how + seepuls-api.mana.how).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:30:06 +02:00
Till JS
767c3b7970 fix(cloudflared): kreisel.mana.how + kreisel-api.mana.how Ingress nachziehen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Beim 2026-05-20-Cutover war Schritt "Ingress in cloudflared-config.yml" zwar
im Memory abgehakt, aber nie wirklich gemacht — beide Hosts liefen in den
service: http_status:404 Catchall. App-Symptom: Native zeigte "API-Fehler
404:" in Töpfe-/Aufnehmen-Tab, Container kreisel-api selbst war healthy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:15:44 +02:00
Till JS
f2803fab0e feat(infra): Co-Domain herbatrium.com + api.herbatrium.com
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
cloudflared-config: 2 hostnames hinzu (apex → 3104, api → 3103).
docker-compose mana-auth: CORS_ORIGINS erweitert um die zwei neuen
Origins. herbatrium.mana.how bleibt funktional (kein Primary-Switch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 15:45:13 +02:00
Till JS
a9a3c0436f fix(cloudflared): hub.mana.how → mana-hub-web auf :3082 (war catch-all 404) 2026-05-20 15:31:29 +02:00
Till JS
98207eb1fc chore(mana-web): /offline-Kommentar updated nach Layout-Bypass-Fix
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Folge-Commit zu a0a463a4f. Der FIXME-Block in +page.ts war noch der
alte „prerender = false weil 500-Crash" — jetzt ersetzt durch die
Erklärung warum @-Notation + prerender = true die saubere Lösung sind.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 14:42:14 +02:00
Till JS
a0a463a4f1 fix(mana-web): /offline prerendert wieder + ohne Workbox-Bug
Seit 2026-04-07 stand `prerender = false` mit FIXME im Repo, weil der
SvelteKit-Build-SSR der Offline-Page in „Error: 500 /offline" lief —
ohne Stack. Daraus folgten zwei latente Probleme:

  - /offline lag NICHT in `prerendered/`, die @mana/shared-pwa-Workbox
    matched aber nur `**/*.html`. Pageta hat 2026-05-20 denselben
    Effekt unter `non-precached-url: /offline` aufgedeckt.
  - SSR-at-request-time war kaschiert, weil mana.how heute kaum
    Worker-Caching greift.

Root-Cause: `apps/mana/apps/web/src/routes/+layout.svelte` lädt
Dexie / encryption-vault / data-layer-listeners / auth-store auf
Modul-Ebene — Browser-only Code (window/document/IndexedDB) explodiert
im SSR-Worker.

Fix: `/offline` aus der Layout-Chain rauswerfen. Datei umbenannt von
`+page.svelte` zu `+page@.svelte` (SvelteKit-Konvention: @-Suffix
bricht alle Eltern-Layouts). OfflinePage-Komponente aus @mana/shared-ui
kommt ohne Stores aus, also unproblematisch.

Verifiziert:
- pnpm run build → keine Crashes mehr
- `.svelte-kit/output/prerendered/pages/offline.html` (9.2 KB) generiert
- `sw.js` Precache enthält `/offline` + `offline/__data.json`
- Workbox `createHandlerBoundToURL("/offline")` hat jetzt ein Target

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 14:41:34 +02:00
Till JS
568fc75f73 feat(infra): app.zitare.com + api.zitare.com ingress, zitare.mana.how raus
- cloudflared-config.yml: app.zitare.com → :3084, api.zitare.com →
  :3083 ergänzt. zitare.mana.how-Block entfernt. zitare-api.mana.how
  bleibt als Back-Compat. Kommentar-Header aktualisiert.
- docker-compose.macmini.yml: mana-auth CORS_ORIGINS — zitare.mana.how
  + zitare-api.mana.how raus, zitare.com + app.zitare.com +
  api.zitare.com + zitare-api.mana.how (Back-Compat) rein.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 14:34:10 +02:00
Till JS
4f47b1532b fix(cloudflared): comicello.com + www + api.comicello.com Tunnel-Routes
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Primary-Domain-Cutover 2026-05-20 — Apex zeigte vorher als
Namecheap-Parking-A-Record, Tunnel hatte keine Routes für die
.com-Domain. CF-DNS auf Verein-Tunnel umgehängt, Routes hier
ergänzt. .mana.how-Co-Domain bleibt.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 13:44:20 +02:00
Till JS
b43a1eeda9 fix(cloudflared): sync2.mana.how + herbatrium.mana.how + -api.mana.how Routes
Drei Hostnames waren NIE im aktiven cloudflared-config eingetragen,
obwohl die DNS-CNAMEs angelegt waren:
  - sync2.mana.how → mana-sync-v2 (Event-Sourcing-Platform, alle 9
    Verein-Apps; ohne diesen Route konnten Browser-Clients keine
    Events emittieren)
  - herbatrium.mana.how / -api.mana.how (Live-Status in Memory war
    falsch, Smokes nur gegen localhost grün)

Manueller Insert via sed am 2026-05-19 ist beim nächsten managarten-
git-pull verloren gegangen, jetzt sauber im Repo persistiert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 13:37:29 +02:00
Till JS
6a03eb00d2 feat(infra): ulo.ad path-routing, uload.mana.how raus
- cloudflared-config.yml: ulo.ad mit Pfad-Regex /r|api|public|healthz|
  readyz|\.well-known → :3107, sonst → :3108. uload.mana.how-Block raus.
- docker-compose.macmini.yml: mana-auth CORS_ORIGINS — uload.mana.how
  raus.
- package.json + lock: yaml als root-devDep (scripts/validate-cloudflared-
  config.mjs importiert es direkt, lief sonst nicht ohne Hoisting).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 13:25:29 +02:00
Till JS
5a3ffd3292 chore(compose): mana-auth CORS_ORIGINS um wordeck.com erweitert
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
`https://wordeck.com` + `https://api.wordeck.com` in mana-auth
CORS_ORIGINS. Ohne diese werden Cross-Origin-Refresh-Calls vom
wordeck-Callback hart geblockt — pendant zum PRODUCTION_TRUSTED_ORIGINS-
Update in mana@e9e78c0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 13:14:06 +02:00
Till JS
8b7b56f823 docs(lasts): scan.ts Header an leere SOURCES anpassen, auf Followup-Playbook verweisen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Nach places-Lift hat scan.ts SOURCES=[]. Der alte Header behauptete
"M3 ships only places source" — das war historisch korrekt, ist aber
seit dem places-Decommission irreführend. Jetzt klar dokumentiert:
Inbox bleibt leer bis habits/contacts-Source kommt; manuelles
create_last via UI/Tool funktioniert weiter.

Plan-Doc: mana/docs/playbooks/MANAGARTEN_LIFTS_FOLLOWUPS.md @ 9e7046f.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 19:49:57 +02:00
Till JS
7b842cabaf chore(mana): places + locationLogs aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
viadocu ist als Standalone-App live (viadocu-api.mana.how) und deckt
GPS-Tracking + Cities-Aggregation ab. Till bestätigt: keine User-Daten,
5 places-exklusive Features (Kategorien home/work/shopping/transit/
leisure, Heart-Favoriten, Tags, Visit-Counter pro Place, Place-Sharing
via Unlisted-Snapshot) werden bewusst aufgegeben.

Entfernt:
- apps/mana/apps/web/src/routes/(app)/places/ (1 Route)
- apps/mana/apps/web/src/lib/modules/places/ (Stores, Queries,
  Collections, Types, Tools, Views, SharedPlaceView, tracking-store
  mit Geolocation-Permission-Flow)
- apps/mana/apps/web/src/lib/i18n/locales/places/ (DE/EN/ES/FR/IT)
- apps/mana/apps/web/src/lib/modules/lasts/inference/sources/places.ts
  (places war einzige aktive Inference-Source; SOURCES-Array jetzt
  leer, habits/contacts-Sources sind M3.b geplant)

Cross-Module-Konsumenten aufgeräumt:
- modules/website/embeds.ts: resolvePlaces + 'places.places' embed-Case
- modules/myday/tools.ts: allPlaces-Read + visitedToday-Aggregat raus
- data/projections/day-snapshot.ts: places-Section + trackingStore-
  Import raus
- data/projections/types.ts: DaySnapshot.places-Feld raus
- data/projections/context-document.ts: "X Orte besucht" + "Standort-
  Tracking aktiv" Zeilen raus
- data/unlisted/resolvers.ts: buildPlaceBlob + 'places'-Case raus
- data/privacy/exposed-records.ts: places-Eintrag raus
- data/ai/revert/inverse-operations.ts: PlaceCreated-Inverse raus
- routes/share/[token]/+page.svelte: SharedPlaceView-Mount raus

Cross-Refs raus:
- module-registry.ts (placesModuleConfig)
- module-registry.test.ts (places-Tabellen)
- data/tools/init.ts (placesTools)
- data/crypto/registry.ts (places + locationLogs entry)
- data/crypto/plaintext-allowlist.ts (placeTags)
- app-registry/apps.ts (registerApp 'places' + MapPin-Icon-Import)
- packages/shared-branding/src/mana-apps.ts (places-Eintrag)

NICHT angefasst (mit Absicht):
- data/database.ts db.version()-Stores — Schema-Snapshots sind frozen.
  Tabellen places, locationLogs, placeTags bleiben im IndexedDB-Schema,
  werden aber nicht mehr beschrieben.
- packages/shared-branding/src/app-icons.ts APP_ICONS.places.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:22:38 +02:00
Till JS
0112161e78 chore(mana+api): articles + Backend-Worker raus, pageta trägt allein
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Pageta ist seit 2026-05-17 standalone live (pageta.mana.how + pageta.com,
voll-featured laut STATUS.md) und deckt alle Articles-Module-Features
ab + mehr (research, reactions, feed, share, snapshot, preferences).
Keine User-Daten im managarten/articles-Modul (Till bestätigt).

Frontend entfernt:
- apps/mana/apps/web/src/routes/(app)/articles/ (9 Routes inkl. (tabs),
  [id], add, import, import/[jobId], settings)
- apps/mana/apps/web/src/lib/modules/articles/ (5 Stores, Queries,
  Collections, Types, Tools, Components, Widgets, ArticlesTabShell,
  consume-pickup, tab-context, parse-urls)
- apps/mana/apps/web/src/lib/i18n/locales/articles/ (DE/EN/ES/FR/IT)

Backend entfernt:
- apps/api/src/modules/articles/ (routes, import-worker, import-projection,
  import-extractor, consent-wall, field-meta, plus Tests)
- apps/api/src/index.ts: articlesRoutes + startArticleImportWorker raus
- apps/api/src/lib/metrics.ts: 5 articles-Metrics raus
  (articlesImportTicks/Items/Extract/JobsCompleted/PickupGc)

"Save-to-Articles"-Features in anderen Modulen entfernt
(User kann später direkt in pageta speichern via Share-Sheet):
- news-research/ListView + routes/(app)/news-research/+page.svelte:
  "Speichern"-Button raus
- writing/tools.ts: save_draft_as_article-Tool raus
- writing/components/ExportMenu.svelte: "Als Artikel speichern"-Option raus
- writing/components/ReferencePicker.svelte: 'article'-Mode raus
- writing/components/ReferenceChip.svelte: KIND_ICON/LABEL ohne 'article'
- writing/utils/reference-resolver.ts: resolveArticle + 'article'-case raus
- writing/utils/reference-resolver.test.ts: kind: 'article' → 'note'
  in Aggregate-Budget-Tests
- writing/utils/prompt-builder.test.ts: 'article'-Resolved-Reference raus
- writing/views/DetailView.svelte: 'articles'-published-Chip raus
- writing/types.ts: DraftReferenceKind ohne 'article',
  DraftPublishModule ohne 'articles'

Aktualisiert (Cross-Refs raus):
- module-registry.ts (articlesModuleConfig)
- module-registry.test.ts (articles-Tabellen + sync-name-Mappings)
- data-layer-listeners.ts (startArticlePickupConsumer)
- app-registry/apps.ts (registerApp 'articles')
- packages/shared-branding/src/mana-apps.ts (articles-Eintrag)
- components/dashboard/widget-registry.ts (ArticlesUnreadWidget)
- types/dashboard.ts (WidgetType 'articles-unread')
- data/crypto/registry.ts (LocalArticle/LocalHighlight)
- data/crypto/plaintext-allowlist.ts (articleTags/articleImportJobs/
  articleImportItems/articleExtractPickup)
- data/tools/init.ts (articlesTools)

NICHT angefasst (mit Absicht):
- data/database.ts db.version()-Stores — Schema-Snapshots sind frozen.
  Tabellen articles, articleHighlights, articleTags, articleImportJobs,
  articleImportItems, articleExtractPickup bleiben im IndexedDB-Schema,
  werden aber nicht mehr beschrieben.
- packages/shared-branding/src/app-icons.ts APP_ICONS.articles (für
  Native-PNG-Generator, harmlos).
- apps/api/src/lib/sync-db.ts Z6 Kommentar (historisches Beispiel).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 16:44:20 +02:00
Till JS
001548c74d chore(mana): quotes + apps/quotes aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Zitare ist als Standalone-App live (zitare.mana.how) und im Wesentlichen
feature-complete für das Public-Korpus + Curator-Workflow. Keine Daten
im managarten/quotes-Modul vorhanden (Till bestätigt), kein
Migrations-Aufwand.

Lücken in zitare (Favoriten/Lists/Custom-private-Quotes) bewusst
nicht jetzt geschlossen — DB-Schema in zitare für User-Collections
ist da (collections.curatorId + visibility='private'), API/UI
können später nachgezogen werden wenn gebraucht.

Entfernt:
- apps/mana/apps/web/src/routes/(app)/quotes/ (6 Routes inkl.
  category, lists, favorites, categories)
- apps/mana/apps/web/src/lib/modules/quotes/ (6 Stores, Queries,
  Collections, Tools, Types, SpiralCanvas-Component)
- apps/mana/apps/web/src/lib/i18n/locales/quotes/ (DE/EN/ES/FR/IT)
- apps/mana/apps/web/src/lib/search/providers/quotes.ts
- apps/mana/apps/web/src/lib/components/dashboard/widgets/QuoteWidget.svelte
- apps/mana/apps/web/src/lib/modules/core/widgets/QuoteOfTheDayWidget.svelte
- apps/quotes/ (komplettes Top-Level inkl. @quotes/content Workspace-
  Package mit 87 Zitaten in 13 Kategorien)

Aktualisiert (Quotes-Refs raus):
- module-registry.ts (quotesModuleConfig)
- module-registry.test.ts (quotes-Tabellen + sync-name-Mappings)
- cross-app-queries.ts (useRandomFavorite + LocalFavorite-Import)
- search/providers/index.ts (registerLazy 'quotes')
- app-registry/apps.ts (registerApp 'quotes' + Quotes-Icon-Import)
- packages/shared-branding/src/mana-apps.ts (quotes-Eintrag)
- hooks.server.ts (Allowlist)
- types/dashboard.ts (WidgetType 'quotes-quote' + 'quotes')
- types/dashboard.test.ts
- stores/dashboard.svelte.ts (Widget-Default-Liste)
- splitscreen/registry.ts
- components/dashboard/widget-registry.ts
- modules/core/widgets/{WidgetGrid.svelte,index.ts}
- modules/spiral/collect.ts (Quotes/Music/Cards-Snapshots raus —
  collect dient den Spiral-DB-Engagement-Snapshot, alle 3 Apps
  sind dekommissioniert)
- crypto/plaintext-allowlist.ts (quotesFavorites/Lists/ListTags +
  customQuotes raus; bei der Gelegenheit auch music-Reste:
  mukkeProjects/playlistSongs/songTags)
- apps/mana/apps/web/package.json ('@quotes/content' Workspace-Dep)
- package.json (6 Quotes-Scripts: quotes:dev, dev:quotes:*,
  deploy:landing:quotes, cf:projects:create-Eintrag, dev:quotes:local)

NICHT angefasst (mit Absicht):
- data/database.ts db.version(1).stores — Schema-Snapshot ist frozen
  (gleiche Konvention wie für cards/music). Tabellen quotesFavorites,
  quotesLists, quotesListTags, customQuotes bleiben im IndexedDB-
  Schema, werden aber nicht mehr beschrieben.
- packages/spiral-db — bleibt, wird vom verbleibenden modules/spiral
  noch konsumiert (Mana-Activity-Spiral).
- packages/shared-branding/src/app-icons.ts APP_ICONS.quotes (für
  Native-PNG-Generator, harmlos).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 16:15:22 +02:00
Till JS
1b637b9aa7 chore(repo): fix pre-existing svelte-check errors blocking pre-push
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Drei Root-Causes für die 8 pre-existing svelte-check errors auf main
(blockierten den pre-push-Hook seit längerem):

1. `dexie` fehlte als devDep in packages/shared-stores — 4 Files
   importieren `type { Table } from 'dexie'`. Type-only-Import, daher
   devDep reicht.

2. `vite-plugin-pwa` fehlte als devDep in apps/mana/apps/web. Wird
   nur transitiv via `@vite-pwa/sveltekit` gezogen, aber die
   `/// <reference types="vite-plugin-pwa/info" />`-Direktiven in
   src/app.d.ts brauchen das Package direkt im Tree.

3. packages/shared-auth/tsconfig.json baut `src/**/*` inklusive
   `*.spec.ts` — Spec-Files sollen aber nicht in den prepare-Build.
   exclude erweitert um `*.spec.ts` + `*.test.ts`.

Verifikation: `pnpm check` von apps/mana/apps/web läuft jetzt mit
0 ERRORS / 0 WARNINGS / 0 FILES_WITH_PROBLEMS (vorher 8 Errors).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 15:34:21 +02:00
Till JS
f9159741a0 chore(mana): music + apps/mukke aus unified-App entfernen
Mukke ist seit 2026-05-19 als Standalone-App live (mukke.mana.how +
mukke-api.mana.how, Repo git.mana.how/till/mukke) mit umfassenderem
Feature-Set (Studio, Wavesurfer, Lyrics-Sync, Beats, LRC/SRT/JSON-
Export, ID3-Extract, S3-Streaming). Modul + alte Landing können raus.

Entfernt:
- apps/mana/apps/web/src/routes/(app)/music/ (alle 6 Routes)
- apps/mana/apps/web/src/lib/modules/music/ (Stores, Queries,
  Collections, Tools, Types, Views, Components)
- apps/mana/apps/web/src/lib/i18n/locales/music/ (DE/EN/ES/FR/IT)
- apps/mana/apps/web/src/lib/search/providers/music.ts
- apps/mana/apps/web/src/lib/components/dashboard/widgets/MusicLibraryWidget.svelte
- apps/mukke/ (alte Landing + shared types-Package — Standalone hat
  beides selbst; VISUALIZER_CONCEPT.md + ALTERNATIVES.md vorab nach
  mukke/docs/ ins Standalone-Repo migriert)

Aktualisiert (Music-Refs raus):
- module-registry.ts (musicModuleConfig)
- module-registry.test.ts (music-Tabellen-Expectation)
- cross-app-queries.ts (useMusicStats + MusicStats-Interface)
- tools/init.ts (musicTools-Init)
- search/providers/index.ts (registerLazy 'music')
- app-registry/apps.ts (registerApp 'music' + MusicNotes-Icon-Import)
- packages/shared-branding/src/mana-apps.ts (music-Eintrag)
- hooks.server.ts (Allowlist)
- types/dashboard.ts (WidgetType 'music-library' + RequiredBackend)
- types/dashboard.test.ts (Erwartung 'music-library')
- stores/dashboard.svelte.ts (Widget-Default-Liste)
- splitscreen/registry.ts
- components/dashboard/widget-registry.ts

NICHT angefasst (mit Absicht):
- data/database.ts db.version(1).stores — Schema-Snapshot ist frozen
  (gleiche Konvention wie für cards/quotes). Tabellen (songs,
  mukkePlaylists, playlistSongs, mukkeProjects, markers, songTags)
  bleiben im IndexedDB-Schema, werden aber nicht mehr beschrieben.
  Bei Bedarf später ein db.version(N) mit `songs: null` etc. nachschieben.
- modules/events/discovery/types.ts 'music' (Event-Kategorie, generisch)
- data/time-blocks/types.ts 'music' (TimeBlock-Kategorie, generisch)
- shared-ai/tools/schemas.ts 'music' (Event-Discovery-Enum)
- packages/shared-branding/src/app-icons.ts APP_ICONS.music (für
  Native-PNG-Generator, harmlos)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 15:20:13 +02:00
Till JS
d2bfaf1b2a chore(infra): cards-Reste raus, CORS für mukke + manaclick
- docker-compose.macmini.yml: cards-server- + cards-web-Compose-Services
  entfernt (dockerfile-Pfade existieren seit den decommission-Commits
  bc158cb0b + 9cd871749 nicht mehr im Tree). Container liefen schon nicht
  mehr — siehe Memory project_cards_auth_bypass_live.md: alte mana-app-
  cards-{server,web}-Container im LIVE-Cutover gestoppt + entfernt.
- docker-compose.macmini.yml: CORS_ORIGINS um mukke.mana.how,
  mukke-api.mana.how, manaclick.mana.how erweitert (mukke LIVE
  2026-05-19, manaclick LIVE 2026-05-19).
- package.json: 5 tote cards-Scripts entfernt (dev:cards-server,
  dev:cards:web, dev:cards:landing, dev:cards:app, dev:cardecky:full,
  dev:cards:local, cards:dev, deploy:landing:cards, cards-landing
  aus cf:projects:create + deploy:landing:all).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 15:19:42 +02:00
Till JS
e9e43abaa0 shared-uload: HTTP-federation (Option B) — schreibt jetzt gegen uload-api
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Nach dem uLoad-Cutover 2026-05-18 (Code/uload/ als Standalone) war
@mana/shared-uload structurell broken: ShareModal-Calls aus presi+
music landeten in mana_sync.sync_changes, aber der alte Konsument
(mana-app-uload-server) ist abgeschaltet → 404 auf ulo.ad/r/<code>.

Fix: shared-uload schreibt jetzt direkt via HTTP gegen die föderierte
uload-API.

- create-link.ts: createShortLink() → POST {apiUrl}/api/v1/links
  mit Authorization: Bearer <token>. Init-Signatur ist neu
  initSharedUload({ apiUrl, getAuthToken, shortUrlOrigin? }).
- types.ts: UloadLink (Dexie-internal-Type) entfernt — Caller arbeiten
  nur noch mit CreateShortLinkOptions + CreatedLink (Wire-Shapes).
- package.json: @mana/local-store-Dep entfernt. Version 0.2.0.
- index.ts: getBaseUrl-Export ergänzt, UloadLink raus.

Caller-Site (apps/mana/apps/web/src/routes/(app)/+layout.svelte):
  initSharedUload({
    apiUrl: PUBLIC_ULOAD_API_URL ?? 'https://uload-api.mana.how',
    getAuthToken: () => authStore.getValidToken(),
    shortUrlOrigin: PUBLIC_ULOAD_SHORT_ORIGIN ?? 'https://ulo.ad',
  });

Bonus-Cleanup:
- plaintext-allowlist.ts: uloadFolders + uloadTags raus (Tables sind
  via Dexie v67 gedroppt, Allowlist-Entries waren orphaned).

mana-Web-App: pnpm check grün (0/0 auf 7396 Files).
2026-05-18 16:39:44 +02:00
Till JS
0b44acdde1 chore(mana): uload aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
uLoad ist nach Code/uload/ als eigenständiger Hono+Bun-Server
migriert (siehe mana/docs/playbooks/ULOAD_GREENFIELD.md, υ-0..υ-7
durch). Live auf:
- uload.mana.how → :3108 (SvelteKit-Web, Standalone)
- uload-api.mana.how → :3107 (Hono-API, eigene Postgres-DB im
  `uload`-Schema)
- ulo.ad → :3107 (Short-Redirect-Domain)

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/uload + Routen + Locales
- Top-Level: apps/uload/ (alter SvelteKit-Web + Hono-Server-Code)
- docker-compose.macmini.yml uload-server Service-Block (alter
  Container :3070 wurde durch Standalone-Stack auf :3107 ersetzt)
- mana-web env: PUBLIC_ULOAD_SERVER_URL / _CLIENT in compose +
  hooks.server.ts (env-Injection, window.__-Export, CSP-connectSrc),
  status/+page.server.ts Service-List
- prometheus uload-server scrape job + mana.how/uload probe
- shared-branding APP_BRANDING.uload + APP_ICONS.uload + MANA_APPS
  uload-Entry + UloadLogo
- spiral-db MANA_APP_INDEX.uload (=21)
- shared-types/spaces 5× 'uload' Modul-Einträge in den Space-Listen
- Registries: app-registry/apps.ts (Uload registerApp + DownloadSimple
  icon + Header), categories, help-content, module-registry,
  splitscreen, hooks.server APP_SUBDOMAINS, data/tools/init
- package.json dev:uload:* + deploy:landing:uload Scripts
- i18n: uload in apps/{de,en,es,fr,it}.json

Was BLEIBT:
- cloudflared `uload.mana.how` → :3108, `uload-api.mana.how` → :3107,
  `ulo.ad` → :3107 — Standalone-Routes
- docker-compose mana-auth CORS_ORIGINS uload.mana.how + ulo.ad —
  SSO für Standalone

Dexie v67:
- droppt links + uloadTags + uloadFolders + linkTags

mana-web svelte-check 0/0 (7256 files), snapshot test 10/10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:14:40 +02:00
Till JS
2b08e2f3a2 chore(mana): comic aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Comic-Surface ist nach Comicello (comicello.mana.how + comicello.com)
umgezogen. Comicello hat seit Phase ω-2 (2026-05-18) Feature-Parität
+ Cross-Module-Hooks via mana-share:
- Character-Variant-Render mit pinned-Variant-Anker
- Panel-Render via mana-image-edits
- Panel-Edit/Delete/Reorder
- POST /api/v1/share/receive für externe Apps (Journal/Notes/Calendar/
  Library/Writing können Text-Snippet rüberschicken, Story wird als
  Draft angelegt)
- /comics/new?text=…&sourceModule=… URL-Prefill als Alternative zum
  Server-Roundtrip

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/comic + Routen + Locales
- Backend: apps/api/src/modules/comic, picture/routes
  verifyMediaOwnership-Allowlist auf nur `['me']` reduziert (comic-
  Tag war hier Identity-Anchor-Quelle für panel renders, jetzt
  Comicello-intern)
- shared-branding: APP_ICONS.comic + MANA_APPS comic-Entry
- shared-ai/tools/schemas: ganzer Comic-Block (list_comic_stories,
  create_comic_story, generate_comic_panel, list_comic_characters,
  create_comic_character, generate_character_variant,
  pin_character_variant)
- shared-ai/agents/templates: comic-author.ts + index.ts Eintrag
- mana-tool-registry: modules/comic.ts + types ModuleId 'comic' raus
- Cross-Module: website/embeds resolveComicStories +
  LocalComicStory-Import + 'comic.stories' EmbedSource + Inspector-
  Option; crypto-registry comicStories+comicCharacters; exposed-records
  comic-Eintrag
- picture/types: comicStoryId, comicPanelIndex, comicCharacterId
  Back-Ref-Felder (sowohl LocalImage als auch Image-Public-DTO);
  picture/queries to-Public-Mapping
- Registries: app-registry/apps.ts (Comic registerApp + FilmStrip-
  Icon + Header), categories, help-content, module-registry,
  data/tools/init
- i18n: comic in apps/{de,en,es,fr,it}.json

Was BLEIBT:
- cloudflared `comicello.mana.how` + `comicello-api.mana.how` —
  Standalone-Routes
- docker-compose mana-auth CORS_ORIGINS comicello.com + .mana.how —
  SSO für Standalone

Dexie v66:
- droppt comicStories + comicCharacters
- Upgrade-Callback strippt comicStoryId/comicPanelIndex/comicCharacterId
  aus existierenden Image-Rows (waren nie indiziert, nur Properties)

mana-web svelte-check 0/0 (7281 files), snapshot test 10/10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:54:11 +02:00
Till JS
6c13308cf4 backup-cron: uload-postgres + comicello-postgres user-mapping (Nachzügler zu bbebb0490)
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
2026-05-18 15:40:46 +02:00
Till JS
bbebb04904 uload (υ-6 Live): cloudflared-Routes + mana-auth-CORS + Backup-Cron
Wurde während des υ-6-Cutovers nur live auf mana-server gepatcht, nicht
committed — letzter git pull hat die Edits überschrieben (live-Stack
lief weiter weil cloudflared in-Memory + mana-auth post-restart-State
noch korrekt war, aber bei nächstem Restart wäre alles weg).

- cloudflared-config.yml: uload.mana.how 5000→3108, uload-api.mana.how
  3070→3107, ulo.ad NEU auf 3107.
- docker-compose.macmini.yml: 3 uload-Origins (uload.mana.how,
  uload-api.mana.how, ulo.ad) in mana-auth CORS_ORIGINS.
- scripts/mac-mini/backup-databases.sh: uload-postgres → 'uload' +
  comicello-postgres → 'comicello' im db_user_for_container()-Case.

Memory + Playbook tracken Cutover-Details (project_uload_live.md).
2026-05-18 15:39:49 +02:00
Till JS
609f662538 chore(mana): news aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Reader-Surface ist nach Pageta (pageta.mana.how + pageta-api.mana.how)
umgezogen, das seit 2026-05-16 live ist und mehr Features bietet als
das alte managarten-news-Modul:
- Highlights (4 Farben, plain-text-offsets, Kontext)
- Reading-Progress + User-Note pro Artikel
- Bulk-Import (200 URLs/Job mit Worker)
- 5 MCP-Tools (save/list/archive/tag/highlight)
- Reading-Status-Enum (unread/reading/finished/archived) statt Boolean

Was Pageta NICHT hat: Categories mit Color+Icon — Pageta verwendet
freie String-Tags statt visuelle Folders. Bewusste Design-Entscheidung
in Pageta.

Daten-Migration: KEIN automatisches Skript. User mit gespeicherten
Artikeln im managarten-newsArticles müssen ihre Liste in Pageta neu
aufbauen (oder Bulk-Import via /api/v1/imports verwenden).

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/news + Routen + Locales
- apps/articles/migrations/from-news.ts (one-off-Migration nach
  articles-Modul, Sentinel-gated, abgeschlossen) + Call in
  (app)/+layout.svelte
- apps/api/src/modules/news + MCP-Executor save_news_article
- shared-branding: APP_ICONS.news + MANA_APPS news-Entry
- shared-ai/tools/schemas save_news_article
- shared-types/spaces: 3 'news'-Einträge in Space-Modul-Listen
- Cross-Module: news-research/ListView + (app)/news-research/+page.svelte
  hatten den preferencesStore + usePreferences vom news-Modul für
  Custom-Feed-Pinning — Pin-UI entfernt (Custom-Feeds sind jetzt
  Pageta-Verantwortung)
- Dashboard: 'news-unread' Widget + NewsUnreadWidget-Import
- Registries: app-registry/apps.ts (News registerApp + Newspaper icon +
  Header), categories, help-content, module-registry, data/tools/init
- i18n: news in apps/{de,en,es,fr,it}.json

Was BLEIBT:
- `news-research` Modul + `apps/api/src/modules/news-research/` —
  RSS-Discovery + Search-Funktion bleibt im managarten als
  Recherche-Tool für andere Module
- `mana-news-pool` Plattform-Service (Code/mana/services/) — wird von
  news-research + Pageta-Standalone konsumiert
- shared-ai `research_news` Tool

Dexie v65 Migration:
- droppt newsArticles, newsCategories, newsPreferences, newsReactions,
  newsCachedFeed

mana-web svelte-check 0/0, snapshot test 10/10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:05:25 +02:00
Till JS
fc616688e3 chore(mana): memoro aus unified-App entfernen
Memoro lebt als eigenständiger Stack:
- `memoro.mana.how` (Astro landing :3120)
- `memoro-app.mana.how` (SvelteKit Web SPA)
- `memoro-api.mana.how` (Bun/Hono server)
- `memoro-audio.mana.how` (audio-server)

Quelle: `Code/memoro/`, deployt nach `~/projects/memoro-deploy/` auf
Mac Mini. Phasenstand: Phase 2.5 (Cutover-Endphase), 2.5a/b durch.

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/memoro + Routen + Locales
- Top-Level: apps/memoro/ (Server, Audio-Server, Landing, Mobile)
- docker-compose.macmini.yml memoro-server + memoro-audio-server
  Service-Blocks (alter Container im managarten-Compose, der echte
  Memoro läuft aus ~/projects/memoro-deploy/)
- .github/workflows/cd-macmini.yml memoro-server + memoro-audio-server
  Build-Jobs + Service-Liste + Health-Check-Mapping
- prometheus memoro-server scrape job + mana.how/memoro probe
- shared-branding APP_BRANDING.memoro + APP_ICONS.memoro + MANA_APPS
  Memoro-Entry + MemoroLogo + onboarding-template
- shared-utils analytics: memoro tracker + MemoroEvents-Block
- website-blocks EmbedSourceSchema 'memoro.memos' + Inspector-Option
- Cross-Module: website/embeds.ts resolveMemos + LocalMemo-Import,
  crypto-registry memos+memories + LocalMemo-Import, plaintext-
  allowlist memoSpaces+memoTags+memoroSpaces+spaceMembers,
  exposed-records memoro-Eintrag
- Registries: app-registry/apps.ts (Memoro registerApp + Microphone
  icon + Header), categories, help-content, module-registry,
  splitscreen, hooks.server, data/tools/init
- (app)/+layout.svelte startMemoroLlmWatcher/stopMemoroLlmWatcher
  imports + Calls
- package.json memoro:dev / dev:memoro:* Scripts
- cloudflared: irreführender Comment-Block in unified-app-Sektion
  bereinigt; Standalone-Memoro-Routes (memoro.mana.how,
  memoro-app.mana.how, memoro-api.mana.how, memoro-audio.mana.how)
  bleiben — sie zeigen auf den live Standalone-Stack
- i18n locales apps/{de,en,es,fr,it}.json memoro raus

Dexie v64 Migration:
- droppt memos, memories, memoTags, memoroSpaces, spaceMembers,
  memoSpaces

shared-theme/store.svelte.ts APP_THEME_CONFIGS.memoro bleibt erhalten —
das Package wird auch vom externen Memoro-Web-Repo konsumiert.

Test/Doku:
- module-registry.test.ts: memoro-Eintrag aus SYNC_APP_MAP + memoroSpaces
  aus TABLE_TO_SYNC_NAME entfernt

mana-web svelte-check 0/0, snapshot test 10/10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:50:47 +02:00
Till JS
0490ec490e cloudflared(ingress): moodlit.mana.how + moodlit-api.mana.how Routing
Mein vorheriges live-Edit am 2026-05-18 12:01 hat den moodlit-Block
direkt auf dem mana-server eingefügt, aber nicht im Git committet.
Beim Comicello-Deploy um 14:14 wurde die Server-Datei dann aus
einem älteren Git-State regeneriert → moodlit-Block weg, alter
`moodlit.mana.how → :5000`-Unified-App-Stub wieder aktiv → live
zeigte fälschlich die Unified-App.

Jetzt im Repo verankert (nach Comicello-Block, vor catch-all):
- moodlit.mana.how → :3106 (web)
- moodlit-api.mana.how → :3105 (api)

Plus: alter Stub `moodlit.mana.how → :5000` im unified-Block entfernt
(war fälschlich noch in Z. 129 — ingress-Reihenfolge zählt, hätte
den neuen Block weiter unten überrannt).

Live verifiziert: HTML zeigt `data-theme=\"twilight\"`, gelieferter
0.*.css enthält @keyframes sunrise / sunset / sparkle (eigene
Brightness-Animationen statt gradient-shift-Fallback) und
requestFullscreen ist im ausgelieferten Chunk.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:40:54 +02:00
Till JS
9a6e51b7a3 chore(mana): plants + who aus unified-App entfernen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Plants → Herbatrium (herbatrium.mana.how, LIVE seit 2026-05-17),
Who → eigenständiger Bun-Stack auf who.mana.how (außerhalb des
managarten-Repos, deployt nativ unter PM2 auf dem Mac Mini).

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/{plants,who} + Routen + Locales +
  routes/api/v1/who Proxy
- Top-Level: apps/plants/
- Backend: apps/api/src/modules/{plants,who} + scripts/generate-who-
  dossiers.ts + RESOURCE_MODULES + app.route()-Mounts
- shared-branding: APP_BRANDING, APP_ICONS, MANA_APPS, PlantsLogo
- credits AI_PLANT_ANALYSIS, shared-utils analytics PlantsEvents,
  spiral-db MANA_APP_INDEX plants
- Cross-Module: PlantWateringWidget, time-blocks/types,
  seed-registry PLANTS_GUEST_SEED, crypto-registry plants +
  plaintext-allowlist plantPhotos/plantTags/wateringLogs/wateringSchedules
- Dashboard: 'plant-watering' Widget, requiredBackend 'plants',
  WIDGET_REGISTRY-Eintrag
- Registries: app-registry/apps.ts + categories + help-content +
  module-registry + splitscreen + hooks.server APP_SUBDOMAINS +
  quick-input registry + data/tools/init
- Infrastruktur: cloudflared plants.mana.how, docker-compose
  CORS_ORIGINS + MinIO plants-storage Bucket, prometheus probe,
  package.json plants:dev Scripts, i18n locales plants+who Strings
- who.mana.how / who-api.mana.how Standalone-Routes BLEIBEN
  (PM2-Container auf Mac Mini, eigenständige Auth/SQLite/LLM-Keys)

Dexie v62 (Nachholung) + v63 Migrations:
- v62: dropped meals, goals, foodFavorites, mealTags, wardrobeGarments,
  wardrobeOutfits + images-Schema-Index ohne wardrobe-FKs + Upgrade-
  Callback strippt wardrobeOutfitId/wardrobeGarmentId aus Image-Rows.
  (Migration war im vorherigen Commit nicht im File gelandet, jetzt
  nachgeholt.)
- v63: dropped plants, plantPhotos, wateringSchedules, wateringLogs,
  plantTags, whoGames, whoMessages.

Test/Doku:
- module-registry.test.ts Snapshot: plants-Eintrag entfernt,
  whoGames/whoMessages aus LEGACY_TABLES (werden jetzt gedroppt)

mana-web svelte-check 0/0, snapshot test 10/10, streaks 5/5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:25:45 +02:00
92f0b3ae06 comicello: cloudflared ingress + mana-auth CORS_ORIGINS (Phase ω-0 Live 2026-05-18) 2026-05-18 14:25:41 +02:00
Till JS
86269f1b7e pageta: pageta.com Co-Domain in cloudflared + mana-auth CORS
- cloudflared-config: zwei zusätzliche Ingress-Regeln pageta.com →
  :3100 + api.pageta.com → :3099 (zusätzlich zu pageta.mana.how —
  kein Primary-Switch).
- docker-compose.macmini mana-auth CORS_ORIGINS: lesen.mana.how-
  Reste durch pageta.mana.how + pageta-api.mana.how + pageta.com +
  api.pageta.com ersetzt. Der Rebrand vom Mittag hatte diese env
  übersehen — Memory project_pageta_live.md warnt explizit davor.

DNS-CNAMEs (pageta.com + api.pageta.com) sind via Cloudflare-API
angelegt (Zone ba85dec9..., proxied=true auf den mana-server-Tunnel).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:20:14 +02:00
Till JS
92195b83ec fix(backup): moodlit + herbatrium + wordeck Postgres-Container
3 Container fielen heimlich aus dem täglichen pg_dump-Backup raus:

1. moodlit-postgres, herbatrium-postgres — neu seit 2026-05-18 bzw.
   2026-05-17, fehlten im db_user_for_container-case (defaultete auf
   'postgres', der in diesen Containern nicht existiert).
2. wordeck-postgres — Cards-Rebrand 2026-05-17 hat den Container
   umbenannt, der case zeigte aber noch auf 'cards-postgres' → kein
   Match → default 'postgres' → role nicht da.

Zusätzlich: psql -U <user> versuchte ohne -d zur DB '<user>' zu
connecten (Default-Verhalten), das gibt's bei den Greenfield-Apps
nicht (DBs heißen mana_moodlit / mana_herbatrium / wordeck). Mit
expliziter `-d template1` (existiert in jeder Postgres-Instanz)
funktioniert die Liste-Datenbanken-Query universell.

Verifiziert per manuellem Run am 2026-05-18:
  OK: moodlit-postgres/mana_moodlit (1.0K)
  OK: wordeck-postgres/wordeck (575K)
  OK: herbatrium-postgres/mana_herbatrium (2.8K)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:13:09 +02:00
Till JS
0c15f73b58 backup-cron: lesen-postgres → pageta-postgres mapping
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Brand-Rebrand 2026-05-18 nachgezogen. lesen-postgres existiert nicht
mehr, pageta-postgres läuft mit User pageta in DB pageta. Ohne dieses
Mapping fällt der Container in den Default-Branch (User postgres) und
backup failt still.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 12:49:15 +02:00
Till JS
ae04c9e194 chore(mana): citycorners + food + wardrobe aus unified-App entfernen
Citycorners-Reste vom vorherigen Sprint mit committet. food → Nutriphi,
wardrobe → Werdrobe sind als Standalone-Apps live; die mana.how-unified-
App trägt die Modul-Surfaces nicht mehr.

Gelöscht / abgebaut:
- Module: apps/mana/.../modules/{food,wardrobe} + Routen + Locales
- Landing-Apps: apps/{food,citycorners}/ Top-Level
- Backend: apps/api/src/modules/{food,wardrobe} + MCP-Tools log_meal /
  nutrition_summary, picture-routes verifyMediaOwnership-Allowlist
- shared-branding: APP_BRANDING, APP_ICONS, MANA_APPS, Logos, Onboarding
- shared-ai, mana-tool-registry, credits, shared-types/spaces,
  shared-utils/analytics, spiral-db/MANA_APP_INDEX, website-blocks
- Cross-Module: Body-CalorieWeightChart, Comic-CharacterPicker-Wardrobe,
  website-Embed wardrobe.outfits, DaySnapshot.nutrition, FoodEventType,
  MealLogged/Meal*-Streaks/Goals/Companion/Trigger, AI-Agent-Policy,
  GoalEditor MealLogged, MyDay/RitualRunner/Rules nutrition-Refs,
  Crypto-Registry meals/wardrobeGarments/wardrobeOutfits
- Generic: PlaceCategory 'food' (places + geocoding + Locales),
  spaces.ts 'food'/'wardrobe' Modul-IDs
- Infrastruktur: cloudflared, docker-compose CORS, nginx-Landing,
  prometheus-Probe, load-tests, package.json dev-Scripts,
  generate-env, mac-mini/build-landings, dependabot

Dexie v62 Migration:
- droppt meals, goals, foodFavorites, mealTags, wardrobeGarments,
  wardrobeOutfits Tabellen
- entfernt wardrobeOutfitId / wardrobeGarmentId aus images-Index
- Upgrade-Callback strippt die toten FK-Properties aus alten image-Rows

Test/Doku:
- module-registry.test.ts: Snapshot refresht auf aktuellen Stand mit
  56 Modulen (vorher 32, statisch eingefroren pre-refactor). Plus
  LEGACY_TABLES-Exclusion für nicht-mehr-registrierte Tabellen aus
  cards/citycorners/moodlit/rituals/wishes/who.
- streaks.test.ts: MealLogged-Test in TaskCompleted-Test umgebaut
- apps/mana/CLAUDE.md: food-Refs in AI-Tool-Tabelle und
  AiProposalInbox-Liste entfernt
- validate-i18n-keys.mjs + validate-no-recursive-turbo.mjs:
  existsSync-Guard, damit die Skripte mit gestaged-aber-rm'ten Dateien
  klarkommen

mana-web svelte-check 0 errors / 7436 files, betroffene Tests grün
(streaks, dashboard, module-registry), validate:pg-schema,
validate:turbo, validate:i18n-parity grün.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 12:47:33 +02:00
Till JS
932bd98d84 cloudflared(ingress): rename lesen.* → pageta.*
Brand-Rebrand der Reader-Webapp. DNS-CNAMEs für pageta.mana.how +
pageta-api.mana.how sind über die Cloudflare-API angelegt (CNAME auf
1435166a-…cfargotunnel.com, proxied=true), aber dieser Reload sollte
ERST nach dem Container-Cutover passieren — sonst gibt der Tunnel
ein 404-Fenster, weil die alten lesen-Container kein pageta-Hostname-
Match haben.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 12:22:54 +02:00
Till JS
a7aed2ce72 feat(cloudflared): cardecky.mana.how → wordeck.com 301-Cutover
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
cardecky.mana.how routet jetzt zu mana-infra-landings:4400 (nginx
301-Redirect) statt direkt zu cards-web:5181. Damit greift der
landings.conf-Block, der auf wordeck.com weiterleitet — alte
Browser-Bookmarks und Deep-Links landen automatisch auf der neuen
Domain.

cardecky-api.mana.how bleibt direkt zu cards-api:3191 — cards-native
v0.9.4 (TestFlight) nutzt das als Backend. Universal-Links der alten
App (AASA `applinks:cardecky.mana.how`) brechen mit dem Cutover
bewusst — Wordeck-Native v1 wird stattdessen `applinks:wordeck.com`
deklarieren.

Smoke-Tests grün: cardecky.mana.how/d/<slug> → wordeck.com/d/<slug>.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 22:21:32 +02:00
Till JS
5c04b1d858 feat(nginx): cards.* + cardecky.* → wordeck.com 301-Redirect
Some checks are pending
CD Mac Mini / Deploy (push) Blocked by required conditions
CD Mac Mini / Detect Changes (push) Waiting to run
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Cards-zu-Wordeck-Cutover-Phase Ω-6: alte Legacy-Hostnames werden auf
die neue Domain umgeleitet.

- cards.mana.how + cardecky.mana.how → 301 → wordeck.com
- cards-api.mana.how + cardecky-api.mana.how → 301 → api.wordeck.com
- Tote cardecky.com Marketing-Landing entfernt (war nie deployed)

Hinweis: cloudflared routet cardecky.mana.how weiterhin direkt zur
cards-web — alte Native-App (Bundle ev.mana.cardecky) braucht das.
Der 301 hier greift erst, wenn cloudflared umgestellt wird.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:58:06 +02:00
Till JS
afee5fce9d feat(cloudflared): wordeck.com + api.wordeck.com Ingress
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Cards-zu-Wordeck-Rebrand: drei neue Hostnames ergänzt, alle auf
gleichem cards-web/cards-api Backend wie cardecky.mana.how.

- wordeck.com → :5181 (cards-web)
- www.wordeck.com → :5181
- api.wordeck.com → :3191 (cards-api)

Cloudflare-Tunnel-CNAMEs sind via API angelegt. cloudflared per
launchctl reloaded und smoke-tested. wordeck.com antwortet HTTP 200
mit Wordeck-Branding.

Siehe mana/docs/playbooks/WORDECK_REBRAND.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:56:00 +02:00
Till JS
feb49d9e3d cloudflared(ingress): rename manaspur → viadocu hostnames
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:11:57 +02:00
Till JS
501055a76c news-ingester: als DEPRECATED markiert (Cutover auf mana-news-pool)
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
CLAUDE.md umgeschrieben — Service-Beschreibung war seit dem
2026-05-17-Cutover irreführend (sprach von Container :3066, der
nicht mehr läuft, und 'unified mana-api liest aus derselben
Tabelle', wo jetzt HTTP-Proxy steht).

Klare Drop-Bedingungen für das ganze Verzeichnis dokumentiert:
- mana-news-pool 30 Tage stabil (~2026-06-17)
- altes news.curated_articles-Schema gedroppt
Bis dahin nicht anfassen — Source-Tree als Referenz für die
letzte managarten-eigene Source-Liste.
2026-05-17 18:17:38 +02:00
Till JS
5c47de8dd2 backup-databases: lesen-postgres + seepuls + manameme nachgezogen
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Memory `project_backup_cron_todo`: das Skript erkennt postgres-
Container automatisch via `*postgres*`-Pattern, hat aber für jeden
einen expliziten DB-User-Mapping in db_user_for_container().
Drei Container fehlten: seepuls-postgres, manameme-postgres,
lesen-postgres — wurden bisher mit Default-User `postgres`
versucht und schlugen still im Log fehl.

Stand der LIVE-Container am 2026-05-17:
  cards-postgres, chorportal-prod-postgres, lesen-postgres,
  mana-infra-postgres, manameme-postgres, manaspur-postgres,
  nutriphi-postgres, seepuls-postgres, zitare-postgres

Alle drei neuen User entsprechen dem App-Eigen-User-Pattern
(Container-Name ohne `-postgres`-Suffix = App = DB-User).
2026-05-17 17:04:16 +02:00
Till JS
6f9fb39556 mana-auth CORS_ORIGINS: lesen.mana.how + lesen-api.mana.how (plus werdrobe nachgezogen)
Memory `Adding an app to SSO` schreibt 3 Stellen:
1. PRODUCTION_TRUSTED_ORIGINS in sso-origins.ts (✓ Commit 4d94e07
   im mana-Repo)
2. CORS_ORIGINS in mana-auth-Compose (DAS hier)
3. sso-config.spec.ts laufen lassen (✓ 8/8 grün)

werdrobe.com + api.werdrobe.com waren auch nicht drin und
funktionierten anscheinend trotzdem — vermutlich weil
better-auth-trustedOrigins mit Cookie-Refresh nicht den vollen
CORS-Preflight-Pfad geht. Trotzdem aufgeräumt, damit der
sso-config-Test (sobald der mana-auth-Service-Definition in
mana/infrastructure/ wandert) ohne Surprise grün ist.

Sauberer langfristiger Fix: mana-auth-Service-Definition aus
managarten/docker-compose.macmini.yml nach mana/infrastructure/
heben, damit der sso-config.spec.ts auf die echte Quelle schaut.
2026-05-17 16:57:07 +02:00
Till JS
ad97c5362c managarten cutover: news-Modul liest jetzt aus mana-news-pool
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
apps/api/src/modules/news/routes.ts — ehemals Raw-SQL gegen
mana_platform.news.curated_articles, jetzt HTTP-Proxy auf
MANA_NEWS_POOL_URL/feed mit X-Service-Key. Identischer Query-
Param-Vertrag (topics/lang/since/limit/offset), kein Drizzle-
Schema-Coupling mehr für News.

docker-compose.macmini.yml — MANA_NEWS_POOL_URL=http://mana-news-pool:3079
in mana-api environment. News-Ingester-Kommentar-Section
aktualisiert (Container ist seit Lift-B abgeschaltet).

Damit ist der vollständige Cutover-Pfad aus
mana/services/mana-news-pool/CLAUDE.md durch:
  1. Plattform-Service deployed (gestern)
  2. managarten konsumiert ihn (jetzt)
  3. alter news-ingester:3066-Container schon weg

Type-check: news/routes.ts grün (2 pre-existing forms/-Errors
unrelated).
2026-05-17 16:34:12 +02:00
Till JS
17e5f80adf cloudflared: lesen.mana.how + lesen-api.mana.how ingress
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Lesen ist LIVE seit 2026-05-16 19:13 CEST. Tunnel-Reload + DNS-
Routes via 'cloudflared tunnel route dns mana-server' angelegt.
Externe Smokes grün: https://lesen.mana.how 200, /healthz ok,
manifest 200, /api/v1/feed gated (401), /api/v1/dsgvo/export mit
Service-Key 200.
2026-05-16 19:13:56 +02:00
Till JS
ad776c1a1c devlog: 107 Tage backfilled (2025-11-22 → 2026-05-15)
Some checks are pending
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Vollständige Bau-Geschichte des Monorepos in der Tages-Devlog-
Konvention (mana/docs/DEVLOG.md). Bodies sind heuristik-
generiert aus den Commit-Subjects pro Tag (Lead-Satz +
Highlights/Commit-Bullets, kein LLM-Pfad). Tage mit hand-
curate-Bedarf können nachträglich überarbeitet werden — der
Auto-Stub-Marker ist weg, die Bodies sind editierbar.

321 Files (data.json + spieler.md + macher.md pro Tag).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 22:24:29 +02:00
Till JS
21e8bcaa5f cloudflared: manameme + seepuls Ingress-Einträge
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
- manameme.mana.how → :3197, manameme-api.mana.how → :3196
  (Phase-8-Cutover 2026-05-15, DNS-Routes bereits live;
  Config-Block war noch uncommitted, jetzt explizit dokumentiert)
- seepuls.mana.how → :3096, seepuls-api.mana.how → :3095
  (Phase β-4 Deploy pending; DNS wird vorgemerkt, Tunnel liefert
  502 bis Container deployed ist. Aggregator-App, gilt
  mana/docs/AGGREGATOR_POLICY.md)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:15:24 +02:00
Till JS
a040e12f37 mana-llm compose: ANTHROPIC_API_KEY + OPENAI_API_KEY env-passthrough
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
mana-llm hat jetzt direkt-Provider für Anthropic und OpenAI; die
Keys werden aus .env.macmini durchgereicht. Default-Modelle als
optionale Overrides:
- ANTHROPIC_DEFAULT_MODEL (Default: claude-sonnet-4-5)
- OPENAI_DEFAULT_MODEL (Default: gpt-4o-mini)

Leer-Werte → Provider wird beim Init silent übersprungen, kein Fail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 21:55:25 +02:00
Till JS
52bca1152c fix(deploy): drop bash-source of .env.macmini in migration-step
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Same fix as commit 97e285bc6 (backup-script): `. "$ENV_FILE"` breaks
on DOTENV values with unquoted whitespace — `MANA_AI_PUBLIC_KEY_PEM`
contains `-----BEGIN PUBLIC KEY-----…`, bash parses "PUBLIC" as the
next command and fails with `PUBLIC: command not found`.

Replaced the full bash-source with a targeted grep for the only env
var the migration step actually needs (POSTGRES_PASSWORD).

Quotes (single/double) around the value are stripped if present.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 21:32:44 +02:00
Till JS
670036d56d docs: BACKUP_STRATEGY.md — current local-only setup + off-site plan
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Dokumentiert:
- Was läuft (com.mana.backup-databases LaunchD, täglich 3 AM, ~45 GB)
- Was gebackupt wird (6 postgres-Container, 12 DBs)
- Was NICHT gebackupt wird (MinIO, Volumes-as-files, cloudflared-creds, ~/secrets/)
- Off-Site-Plan (R2/Hetzner/restic-Optionen, rclone-Skizze)
- Recovery-Drill (Quartals-Test mit pg_restore gegen Throwaway-Container)
- Pre-Live-Gate-Checkliste für Endurance-User-Daten

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:55:47 +02:00
Till JS
97e285bc67 backup: drop bash-source of .env.macmini (DOTENV format, breaks on PEM keys)
.env.macmini contains MANA_AI_PUBLIC_KEY_PEM=-----BEGIN PUBLIC KEY----- ...
which bash parses as 'PUBLIC: command not found' under set -e.

Plus drop set -e so a single failed container doesn't abort the rest.
Failures already collected in FAILED_DBS for the summary report.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:52:48 +02:00
Till JS
7f0e2ba10d backup: cover all postgres containers (cards, manaspur, nutriphi, zitare, chorportal)
Aktuell deckte das Skript nur mana-infra-postgres ab. Greenfield-Apps
(Cards seit 2026-05-08, Nutriphi seit 2026-05-08, Zitare seit 2026-05-08,
Manaspur seit 2026-05-13) haben eigene Container und waren komplett
NICHT gebackupt.

Plus: launchd-Job lief seit 2026-02-12 nicht — Pfad zeigte auf
mana-monorepo/, das nicht mehr existiert. plist-Update folgt separat.

Test-Run: bash backup-databases.sh sollte jetzt 6 Container × N DBs
dumpen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:51:25 +02:00