Skip to content

LinkBreeze v1.3.2

Latest

Choose a tag to compare

@Manak-hash Manak-hash released this 24 Aug 00:22
· 23 commits to main since this release

LinkBreeze v1.3.2

What's new

Spanish admin UI (es)

The admin speaks a third language. A complete Spanish dictionary (700 keys, tuteo register, terminology aligned with the Spanish README) ships alongside English and French with the same compile-time key parity and drift guards — a missing key fails the build, not your users. Español joins the language picker in Settings; the choice persists per user like en/fr.

Also fixed along the way: four keys that had drifted and rendered as raw key paths (setup wizard, integrations tab, password form, QR card), the raw Enabled/Disabled labels beside the email-capture switch, and two broken English source strings ("Choose a settings.", "You call it later."). 74 dead keys pruned from en/fr. New npm run i18n:audit parity tool for deep locale checks beyond the hash gate.

Set a default page and keep it first (#90, reported by @baptleduc)

Every page switcher row now has a star: click it on any page to make that page the default, confirmed by a toast. The default page always sorts to the top of the switcher, the links page, the theme page, settings, and the dashboard, so it stops wandering as you add pages.

Per-link icons: auto, picked, or uploaded (#91, reported by @gdyys96b56-web)

Links are no longer stuck with whatever favicon a site serves (or none, for email, phone, WhatsApp, and vCard links). The link dialog has a compact new Icon section:

  • Auto keeps today's behavior: fetch and cache the site's favicon when the link is saved.
  • Pick opens the categorized icon gallery and stores the choice as data, not an image: the public page renders it as an inline SVG that inherits the theme's text color, so it matches every theme and card style for free.
  • Upload takes PNG/JPG/GIF/WebP/AVIF/ICO/SVG up to 512 KB. Files are validated by magic bytes, not by name, and SVGs pass through a sanitizer that strips scripts, event handlers, foreign objects, and external references before storage.

Fixed

  • Upload failures were silent — a rejected icon upload looked like the button ignored you; errors now surface inline in the dialog.
  • Uploads never reached the server — the icon file input carried no field name, so the file was dropped from the form data.
  • Long dialogs stranded their Save/Cancel buttons off-screen; the shared dialog is now capped at 90% viewport height and scrolls its body.
  • Uploaded files were served under the page CSP; uploads now always ship default-src 'none'.
  • Settings → Integrations crashed with INVALID_MESSAGE — a literal <script> bracket in a rich-text hint broke next-intl's parser; reworded.

Full changelog: https://github.com/Manak-hash/LinkBreeze/blob/main/CHANGELOG.md