Skip to content

feat(branding): editable footer links and tagline - #62

Merged
florianjs merged 1 commit into
mainfrom
feat/footer-links
Oct 8, 2026
Merged

florianjs merged 1 commit into
mainfrom
feat/footer-links

Conversation

@florianjs

Copy link
Copy Markdown
Owner

Summary

Admins can now edit the footer in Admin → Branding → Footer links.

  • Links:

    • each link has an icon chosen from a preset list (website, GitHub, GitLab, Discord, Telegram, X, Mastodon, Reddit, YouTube, Twitch, Matrix, email, docs, heart, RSS, generic link), a label (used as tooltip and aria-label) and a URL;
    • links can be reordered, and up to 8 can be added;
    • removing them all is allowed, and the footer then shows no links;
    • a button restores the defaults.
  • Tagline: the "P2P Protocol" text next to the copyright can be edited, hidden (empty field), or reset to the default, which is translated.

  • Defaults:

    • florianargaud.com replaces n0w.me;
    • GitHub;
    • Discord (discord.gg/bbbkCPkdRk, the same invite as the README; the footer previously used GRFu35djvz).
  • Validation:

    • URLs must be http(s) or mailto, so javascript: and data: are rejected;
    • icons must come from the preset list;
    • labels are 50 characters at most.

    The same parseFooterLinks (in shared/) runs in the editor and on the server, and stored values are re-validated when read.

Stored as two settings (footer_links as JSON, footer_tagline) and returned by /api/branding. No schema change.

Test plan

  • npx vitest run: 148 passing, including the new parseFooterLinks tests
  • npm run build
  • On a production build:
    • a valid link is saved and returned by /api/branding;
    • a javascript: URL returns 400;
    • an empty tagline hides it;
    • an empty list and a tagline reset both work
  • Default footer no longer contains n0w.me
  • Check the editor and the footer rendering in the browser

🤖 Generated with Claude Code

- admins edit footer links (icon from a preset list, label, url), reorder,
  add up to 8 or remove them all, in Admin > Branding
- footer tagline ("P2P Protocol") editable or hidden
- defaults: florianargaud.com instead of n0w.me, GitHub, Discord
- urls restricted to http(s) and mailto, icons to the preset list

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 29 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: aa6d2567-df93-4324-baf0-388d7b441aac
📥 Commits

Reviewing files that changed from the base of the PR and between 853ce6a and 455154a.

📒 Files selected for processing (11)
  • app/components/admin/FooterLinks.vue
  • app/layouts/default.vue
  • app/pages/admin/branding.vue
  • i18n/locales/en/app.json
  • i18n/locales/fr/app.json
  • server/api/admin/footer.get.ts
  • server/api/admin/footer.put.ts
  • server/api/branding.get.ts
  • server/utils/settings.ts
  • shared/utils/footerLinks.ts
  • tests/footer-links.test.ts
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@florianjs
florianjs merged commit 77adb75 into main Oct 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant