• Joined on 2026-01-29
mAi commented on issue m/postcards#16 2026-06-17 09:41:32 +00:00
BUG: changing occasion resets the chosen theme (should not)

Live — merged 3ae9684 (merge 9a8eda4), deployed. Theme stays on occasion change (themeTouched flag); default only applies until you pick a theme. Verified build green. Not closing — m…

mAi commented on issue m/postcards#17 2026-06-17 09:41:32 +00:00
BUG/feat: own favicon (💌) — currently shows Shlink's
mAi commented on issue m/postcards#19 2026-06-17 09:34:57 +00:00
feat: admin overview of all cards (password-gated)

Admin session less annoying — TTL 12h → 30 days (sliding)

Per m's 'not annoying' note, the admin session in internal/server/adminauth.go was a short 12h. Bumped to 30 days, sliding:

-…

mAi commented on issue m/postcards#16 2026-06-17 09:34:57 +00:00
BUG: changing occasion resets the chosen theme (should not)

Fixed

Changing the occasion no longer overwrites an explicitly chosen Farbwelt.

Approach (cleanest variant from the issue): a themeTouched flag in the compose JS. It starts false;…

mAi commented on issue m/postcards#20 2026-06-17 09:34:57 +00:00
CSS: reduce header→form spacing (gap under the header is too big)

Done — tightened header → form gap

CSS only. The gap under the brand header was driven by .card { margin-top: 1.25rem } plus the unstyled <header> flow.

  • Added `header { margin-botto…
mAi commented on issue m/postcards#17 2026-06-17 09:34:57 +00:00
BUG/feat: own favicon (💌) — currently shows Shlink's

Done — own 💌 favicon

The app now serves its own love-letter favicon instead of falling through to Shlink's.

  • Added web/static/favicon.svg — a warm envelope-with-heart in the app's…
mAi commented on issue m/postcards#19 2026-06-17 09:28:00 +00:00
feat: admin overview of all cards (password-gated)

Merged & deployed — admin overview live (gated)

Merged a5f353a (merge 13261ce), deployed. otto-head set ADMIN_PASSWORD in Dokploy env + added PathPrefix(/admin) to the live Traefik…

mAi commented on issue m/postcards#19 2026-06-17 09:12:22 +00:00
feat: admin overview of all cards (password-gated)

#19 — admin overview shipped (read view + delete)

Branch mai/hermes/issue-19-feat-admin, commit [a5f353a](https://mgit.msbls.de/m/postcards/commit/a5f353aa0ff9523c8d7460249ecd913f93434…

mAi commented on issue m/postcards#15 2026-06-17 08:52:42 +00:00
feat: live card preview in compose (at the bottom)

Merged & deployed — live preview live on sendmy.cards

Merged 445ad45 (merge 7c4e39c), deployed. Frontend-only (compose JS + CSS, no schema). A live card preview now sits at the bottom…

mAi commented on issue m/postcards#15 2026-06-17 08:51:00 +00:00
feat: live card preview in compose (at the bottom)

#15 erledigt — Live-Vorschau am Ende von /compose

Die Karte wird jetzt ganz unten im Compose-Formular live aufgebaut und aktualisiert sich, während man tippt/auswählt.

Was umgesetzt…

mAi commented on issue m/postcards#19 2026-06-17 08:48:44 +00:00
feat: admin overview of all cards (password-gated)

Auth UX (m, PWA): well-protected but NOT annoying — m must not re-enter the password every time.

  • Admin password (ADMIN_PASSWORD env) for the initial login, then a **long-lived signed…
mAi opened issue m/postcards#20 2026-06-17 08:44:40 +00:00
CSS: reduce header→form spacing (gap under the header is too big)
mAi opened issue m/postcards#19 2026-06-17 08:43:07 +00:00
feat: admin overview of all cards (password-gated)
mAi opened issue m/postcards#18 2026-06-17 08:39:18 +00:00
feat: card-level max-views (per-card view counter) — follow-up to #14
mAi commented on issue m/postcards#14 2026-06-17 08:39:15 +00:00
feat: card-level expiration (apply to the card, not just the custom link)

Merged & deployed — card-level expiration live on sendmy.cards

Merged 5efd624 (merge bc81dc4), deployed. Migration 008 applied cleanly on prod (slug_valid_untilvalid_until, app…

mAi commented on issue m/postcards#14 2026-06-17 08:35:59 +00:00
feat: card-level expiration (apply to the card, not just the custom link)

#14 card-level expiration — done (shift-1)

Expiration is now a card-level property, settable on any card (no custom-link requirement), enforced server-side at /c/{token}.

Commit…

mAi commented on issue m/postcards#13 2026-06-17 08:23:01 +00:00
BUG: compose layout regressions from #12 (margins, section headers bleed, gültig-bis/max-aufrufe misaligned)

Merged & deployed — layout regressions fixed

Merged 620069e (merge e8d6df3), deployed. CSS-only (style.css, +30/-7): section-header bleed fixed, margins consistent, „Gültig bis“ +…

mAi commented on issue m/postcards#13 2026-06-17 08:16:28 +00:00
BUG: compose layout regressions from #12 (margins, section headers bleed, gültig-bis/max-aufrufe misaligned)

Fixed — compose layout regressions (#13)

Reproduced all three issues with headless-chrome screenshots of the rendered compose form at 375 px (mobile) and 900 px (desktop), then fixed…

mAi opened issue m/postcards#17 2026-06-17 08:15:02 +00:00
BUG/feat: own favicon (💌) — currently shows Shlink's
mAi commented on issue m/postcards#14 2026-06-17 08:13:38 +00:00
feat: card-level expiration (apply to the card, not just the custom link)

m's call (PWA): max-views also card-level, same as expiration — not slug-bound. So #14 covers BOTH valid_until and max_visits at card level (enforced on /c/{token}), available on any…