• Joined on 2026-01-29
mAi commented on issue m/postcards#23 2026-06-17 13:35:21 +00:00
CSS: 'Max. Aufrufe' field styled inconsistently with the other compose fields

Live on sendmy.cards (merge 7ffdf2d)

Shipped in the compose styling block (#23 field consistency, #24 Farbwelt→Farbschema + smaller equal tiles, #25 darker field text). CSS/copy only,…

mAi commented on issue m/postcards#25 2026-06-17 13:27:02 +00:00
CSS: form field text too light/grey — darken for readability

#25 erledigt — Feldtext jetzt gut lesbar (hoher Kontrast)

In derselben Schicht/Branch wie #23/#24.

Ursache: Die Eingabefelder (Inputs, Wunsch-Adresse, Foto-Dropzone, Teilen-Box) haben in…

mAi commented on issue m/postcards#24 2026-06-17 13:27:02 +00:00
CSS/copy: rename 'Farbwelt' → 'Farbschema', make choice buttons smaller

#24 erledigt — „Farbwelt“ → „Farbschema“ + kompaktere Auswahl-Buttons

In derselben Schicht/Branch wie #23 erledigt.

1. Label umbenannt: „Farbwelt“ → „Farbschema“ im…

mAi commented on issue m/postcards#23 2026-06-17 13:27:02 +00:00
CSS: 'Max. Aufrufe' field styled inconsistently with the other compose fields

#23 erledigt — „Max. Aufrufe“ jetzt einheitlich gestylt

Ursache: Das Feld „Max. Aufrufe“ ist ein input[type="number"] (seit #18 als kartenweite Option). Die Eingabefeld-Styles in…

mAi opened issue m/postcards#27 2026-06-17 13:26:48 +00:00
UX: collapse verbose field hints behind an ⓘ info button (right of the field)
mAi opened issue m/postcards#26 2026-06-17 13:24:30 +00:00
feat: free-form salutation (Anrede) — replace 'an wen', drop the 'für' prefix
mAi opened issue m/postcards#25 2026-06-17 13:21:55 +00:00
CSS: form field text too light/grey — darken for readability
mAi opened issue m/postcards#24 2026-06-17 13:20:34 +00:00
CSS/copy: rename 'Farbwelt' → 'Farbschema', make choice buttons smaller
mAi opened issue m/postcards#23 2026-06-17 13:19:03 +00:00
CSS: 'Max. Aufrufe' field styled inconsistently with the other compose fields
mAi commented on issue m/postcards#22 2026-06-17 12:57:51 +00:00
copy: fix descriptions claiming the link 'stays/persists forever' (now cards can expire / hit max-views)
mAi commented on issue m/postcards#21 2026-06-17 12:57:51 +00:00
feat/security: tokenized, unguessable media filenames (closes #11 media leak)

Merged & deployed — tokenized media filenames live\n\nMerged 4c08b38 (merge 3d44213), deployed. Verified live: a new card's image is stored at {token}/{rand}.png (128-bit crypto/rand),…

mAi commented on issue m/postcards#22 2026-06-17 12:47:57 +00:00
copy: fix descriptions claiming the link 'stays/persists forever' (now cards can expire / hit max-views)

Bundled with #21 in the same commit (same templates).

Audit result: the only copy that still claimed permanence was the *Gültig…

mAi commented on issue m/postcards#21 2026-06-17 12:47:45 +00:00
feat/security: tokenized, unguessable media filenames (closes #11 media leak)

Done — tokenized, unguessable media filenames

Each uploaded media object now gets its own fresh ~128-bit crypto/rand filename component, so the public object URL is no longer…

mAi commented on issue m/postcards#18 2026-06-17 12:42:36 +00:00
feat: card-level max-views (per-card view counter) — follow-up to #14

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

Merged fbaed3a (merge 7f4ee4f), deployed. Migration 009 applied (slug_max_visitsmax_visits + visit_count, guarded…

mAi commented on issue m/postcards#18 2026-06-17 12:41:08 +00:00
feat: card-level max-views (per-card view counter) — follow-up to #14

#18 done — card-level max-views (per-card view counter)

Promoted the max-views cap from slug-level (Shlink-only) to a card-level property enforced server-side on /c/{token},…

mAi commented on issue m/postcards#11 2026-06-17 12:28:31 +00:00
feat: optional password protection per card

m decision (PWA, 2026-06-17): page-protection is sufficient — NO private bucket / proxy — PROVIDED media filenames are tokenized + unguessable.

Rationale: today media keys are `{token}/0.png…

mAi opened issue m/postcards#22 2026-06-17 12:28:31 +00:00
copy: fix descriptions claiming the link 'stays/persists forever' (now cards can expire / hit max-views)
mAi opened issue m/postcards#21 2026-06-17 12:28:31 +00:00
feat/security: tokenized, unguessable media filenames (closes #11 media leak)
mAi commented on issue m/postcards#19 2026-06-17 09:41:33 +00:00
feat: admin overview of all cards (password-gated)

Follow-up: admin session TTL bumped 12h → 30 days (sliding) in the polish bundle (commit 3ae9684, merge 9a8eda4) — addresses the not-annoying requirement. Login once, remembered ~30 days.

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

Live — merged 3ae9684 (merge 9a8eda4), deployed. Header→form gap tightened (CSS). No regression to #13. Please eyeball. Not closing — m closes.