Generate letter-icon fallback for icon-less apps#24
Merged
Conversation
- Add a static letter-icon helper that renders an SVG tile with one letter (single-word names) or two letters (first letter of each of the first two words), on a deterministic HSL background derived from the name. SVG with a 100×100 viewBox locks the aspect ratio at 1:1 regardless of cascade quirks. - Template and hide/unhide paths use the helper instead of dropping icon-less entries. - get_apps() no longer filters out additional_apps entries missing all icon fields — they render with the letter fallback now. - ajax_unhide_app emits letter_icon data when the restored app has no image/dashicon/emoji so the client can reconstruct the tile. - Drop the hard-coded body margin-top/min-height rules — the WP admin-bar CSS already applies the correct offset on html, so our rules were doubling up and leaving a mobile gap.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
icon_url/dashicon/emojifield were being silently dropped — both inget_apps()(foradditional_apps) and at render time (templates/launcher.php'selse { continue; }).0 0 100 100viewBox so the aspect ratio stays 1:1 regardless of CSS context.ajax_unhide_appnow emits aletter_iconpayload when the restored app has no icon, so the JScreateAppElementcan reconstruct the same tile client-side viacreateElementNS.body.my-apps-launcher { margin-top: 32px/46px }rules — WordPress's admin-bar CSS applies the offset on<html>, so ours were stacking on top and leaving a visible gap on mobile.Test plan
my_apps_pluginsfilter without any icon field and confirm it renders as a letter tile in the launcher (previously it would not appear).GD), single-word names render one ("Gmail" →G).