- send through the sendgrid v3 json api via direct fetch with a
manually cleared abort timeout; mailhog stays for development
- drop nodemailer-mailgun-transport and its types
- swap MAILGUN_* runtime config and env example for SENDGRID_API_KEY
and optional SENDGRID_HOST
- translateText/translateTexts call OpenRouter chat-completions; glossary
terms are prompt-injected from config/glossaries.ts, generated from the
translation repo's TSVs by scripts/build-glossaries.ts
- model resolution: per-language override in config/languages.ts →
translation.model site setting (new admin field) → TRANSLATION_MODEL env
→ anthropic/claude-opus-5, at low reasoning effort
- blank fragments are held back from the model, which drops them and breaks
the one-translation-per-fragment count the caller maps results back on
- OpenRouter failures map to a typed error with a human-readable message;
an unrecoverable one (no credits, bad key, rejected model) stops the run
instead of repeating the same call for every remaining locale
- machine translations record source 'auto-translate'; 'deepl' stays
readable for snapshots written before the switch
* add global feedback-widget bubble to parent site
Adds a persistent feedback bubble (bottom-right, all pages) that funnels
site-wide feedback to project id 3c0e8534-f593-4222-8315-31dda4514760.
- public/assets/feedback-widget/*: widget bundle + slot CSS (cherry-picked
from the maps branch so this branch can run standalone)
- nuxt.config.ts: register <feedback-widget> as a custom element in both
vue.compilerOptions and vite.vue.template.compilerOptions
- app/composables/useFeedbackWidget.ts: injects slot CSS and loads the
widget iife on mount (dedup guard to avoid double-loads if maps land)
- app/app.vue: mounts one <feedback-widget> outside <NuxtLayout> so it
appears on public, admin, and auth layouts
Heads-up for the future maps merge: pages with a map-anchored widget
(home/adopt/pray on the maps branch) will render two widgets — the global
bubble plus the map-specific one. Reconcile during that merge.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* make it more nuxt
---------
Co-authored-by: swift-river542 <swift-river542@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: corsacca <corsacca@gmail.com>