Skip to content

Site Identity: name / tagline / logo / favicon / social (a brand admin screen)#15

Merged
WebTigers merged 1 commit into
mainfrom
feat/site-identity
Jul 17, 2026
Merged

Site Identity: name / tagline / logo / favicon / social (a brand admin screen)#15
WebTigers merged 1 commit into
mainfrom
feat/site-identity

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

The Site Identity screen — surfaces the site's brand for editing and lights up the JSON-LD + favicon that were previously config-only.

What it is

A new first-party identity module (modules/identity/) with a Site Identity screen under Settings:

  • Name + tagline — finally editable in the UI (the title was only in the .ini before).
  • Logo + favicon — chosen from the Media Library or uploaded, via the platform TigerMediaPicker.
  • Social profile URLs — X / Facebook / Instagram / LinkedIn / YouTube / GitHub.

All values write to the config tier (live-override, no deploy).

Wired to what already consumes it

  • Favicon → emitted into the head (Identity_Plugin_FaviconheadLink rel="icon" + apple-touch-icon).
  • LogoOrganization.logo in the JSON-LD (the graph already reads tiger.site.logo).
  • SocialsOrganization.sameAs (already reads tiger.seo.social.*).

So the empty nodes we saw live on tiger-dev now have a UI to fill them.

Favicon sizing — the modern, derivative-free approach

Rather than generating N icon sizes, it stores one high-res square source (the UI recommends ≥512×512) and emits it as rel="icon" + apple-touch-icon; the browser downscales for every tab/size. Simple, robust, and standard. (Auto-derivatives via Tiger_Media_Image remain an easy fast-follow if crisper small sizes are ever wanted.)

Permissions + multi-site

The screen has its own ACL resource (Identity_AdminController / Identity_Service_Identity), so access is grantable on its own — the seam for letting each org's admin manage its own identity in a multi-tenant install. Config is written at GLOBAL scope for now (the single site, visible to guests — anonymous requests only receive GLOBAL config, so core stays multi-site-unaware), isolated in one _scope() method so the future multi-site module (which resolves the acting org per domain) can flip identity to per-org without touching the rest of the service.

Notes

  • No schema change (writes existing config table).
  • site_name also lives in the CMS Settings screen; Site Identity is its natural home — both write the same key, no conflict.
  • Reuses the established admin pattern (ADMIN.md), TigerButton/TigerDOM, and the mediaField view helper.

🤖 Generated with Claude Code

…o/favicon/social)

A new first-party `identity` module. The Site Identity screen (under Settings) surfaces the
site name + tagline for editing (previously only in the .ini), plus a logo and favicon
(chosen from the Media Library or uploaded via TigerMediaPicker) and the social profile URLs.

Everything writes to the config tier (live-override, no deploy) and is wired to its consumers:
- favicon -> emitted into the head as rel=icon + apple-touch-icon (Identity_Plugin_Favicon).
  A single high-res square source, browser-scaled — no derivative generation.
- logo    -> Organization.logo in the JSON-LD (already reads tiger.site.logo).
- socials -> Organization.sameAs (already reads tiger.seo.social.*).

Its own ACL resource (Identity_AdminController / Identity_Service_Identity), so access is
grantable independently — the seam for per-org identity management in a multi-tenant install.
Config is GLOBAL scope for now (single site, guest-visible; core stays multi-site-unaware),
isolated in Identity_Service_Identity::_scope() so the future multi-site module flips it to
per-org without touching the rest.

Files: modules/identity/{Bootstrap,controllers/AdminController,services/Identity,forms/Identity,
plugins/Favicon,configs/acl.ini,views/scripts/admin/index.phtml,languages/en/identity.php}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@WebTigers
WebTigers merged commit 59c44a8 into main Jul 17, 2026
5 checks passed
@WebTigers
WebTigers deleted the feat/site-identity branch July 17, 2026 16:51
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