2 Commits

Author SHA1 Message Date
96d2f10346 Manage the DeepL account's glossaries from the domain settings
Until now the UI could only reach glossaries recorded in domains.json. A
glossary can also sit on the DeepL account with no domain pointing at it —
created before this app, left over from testing, or because domains.json was
reset, which is the normal state of a fresh deployment volume. Such a
glossary is invisible and unreachable here while still consuming the
account's glossary allowance, so on a small plan one forgotten glossary
blocks every save with no way to clear it from the UI.

Adds three endpoints backed by a new section in the domain settings modal:

  GET    /api/glossaries              what is really on the account, each
                                      annotated with the domain using it
  DELETE /api/glossaries/:id          remove one, freeing a slot, and drop
                                      any local reference to it
  POST   /api/glossaries/:id/adopt    claim an existing glossary for a
                                      domain, fetching its entries so they
                                      become editable

Adopting is a move, not a copy: if another domain already referenced the
glossary, that slot is released. Two domains pointing at one glossary would
mean editing through either silently replaces what the other still lists.

This does not raise the plan's glossary limit; it makes the limit visible
and the single slot reusable without hand-editing domains.json.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-31 12:04:44 +02:00
dd6095d402 Scheer Enterprise Translation Tool
Node HTTP server that proxies the DeepL API and serves a single-page UI, plus
per-domain glossary management for the four Scheer entities. Runs on Node's
built-ins only; no dependencies.

Containerized for Dokploy: the domain -> glossary_id map is written to
DOMAINS_FILE (default /app/data/domains.json) so it can live on a mounted
volume and survive redeploys. See DEPLOY.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-31 11:46:59 +02:00