Skip to content

fix(template): Harmonia perspective icons use the Lucide name, not a unicons URL#6264

Merged
delchev merged 1 commit into
masterfrom
fix/harmonia-perspective-icon-lucide
Jul 11, 2026
Merged

fix(template): Harmonia perspective icons use the Lucide name, not a unicons URL#6264
delchev merged 1 commit into
masterfrom
fix/harmonia-perspective-icon-lucide

Conversation

@delchev

@delchev delchev commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Problem

Every generated Harmonia app's perspective 404'd its sidebar icon in the shared application shell and the My shell:

GET /services/web/resources/unicons/palmtree.svg → 404
GET /services/web/resources/unicons/user-clock.svg → 404   (and gauge, calendar-check, …)

Cause

The generated perspective.js (both perspective/perspective.js.template and my/my-perspective.js.template) emitted icon: '${perspectiveIcon}' — a /services/web/resources/unicons/<name>.svg URL. But the Harmonia shells render a perspective icon via x-h-lucide from a bare icon NAME; an .svg path is sent down the <svg data-link> branch and points at a unicons file that does not exist (the intent icon: values — palmtree, gauge, calendar-check, … — are Lucide names, and the unicons pack uses entirely different names).

Fix

Emit icon: '${iconName}' — the model's bare Lucide/Harmonia built-in icon name — which the shells resolve through Lucide. Harmonia templates only: the .model still carries perspectiveIcon (the unicons URL) for the legacy AngularJS stack, which is untouched.

Consequence, now documented in the module README: an intent icon: must be a valid Lucide name (bundled org.webjars.npm:lucide, currently 1.8.0). An unknown name renders a blank icon.

Verification

Driven on a running instance (Chrome, form-login) after applying the equivalent change to the served perspective files:

  • My shell #/app/kf-mod-vacations-my-VacationRequest/my/VacationRequestzero console errors (previously two unicons/*.svg 404s).
  • Application shell /services/web/application/ → no unicons/*.svg requests at all (icons render via Lucide).

Downstream: the KeyFolders module intents were swept for invalid Lucide names alongside this (palmtree→tree-palm, alert-triangle→triangle-alert, id-badge→id-card, user-clock→clock).

🤖 Generated with Claude Code

…unicons URL

The generated perspective.js (shared application shell + My shell) emitted
icon: '${perspectiveIcon}', a /services/web/resources/unicons/<name>.svg URL. But
the Harmonia shells render a perspective icon via x-h-lucide from a bare icon NAME;
an '<name>.svg' path is treated as an SVG link and 404s (the unicons pack does not
contain the Lucide-named icons the intent uses - palmtree, gauge, calendar-check, ...).

Emit icon: '${iconName}' instead - the model's bare Lucide/Harmonia built-in name,
which the shells resolve through Lucide. The .model still carries perspectiveIcon for
the legacy AngularJS stack, which is left untouched (Harmonia templates only).

So an intent icon: must now be a valid Lucide name (bundled org.webjars.npm:lucide,
currently 1.8.0). Documented in the module README.

Verified on a running instance: the My shell and the Harmonia application shell no
longer request any /services/web/resources/unicons/*.svg (previously 404) - the
perspective icons render via Lucide.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@delchev delchev merged commit 098a767 into master Jul 11, 2026
10 checks passed
@delchev delchev deleted the fix/harmonia-perspective-icon-lucide branch July 11, 2026 19:42
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