Skip to content

docs(plans): icon font spec for web UIs (#818)#907

Draft
ifireball wants to merge 1 commit into
fullsend-ai:mainfrom
ifireball:agent/818-spec-icon-font-web-ui
Draft

docs(plans): icon font spec for web UIs (#818)#907
ifireball wants to merge 1 commit into
fullsend-ai:mainfrom
ifireball:agent/818-spec-icon-font-web-ui

Conversation

@ifireball
Copy link
Copy Markdown
Contributor

Summary

Headless spec-start artifacts for issue #818 (Change icons in web UIs to use an icon font rather than embed raw SVGs), following spec-start-github (issue-driven branch + PR).

Topic directory

docs/plans/2026-05-14-web-icon-fonts-for-ui/

  • spec.md — design: goals, options (variable font vs classic webfont vs SVG sprite), recommended variable icon font + narrow SVG exceptions (graphs, some brand marks), components, testing, rollout.
  • qna.md — assumptions and open questions (canonical font family, subsetting ownership, strictness of “no inline SVG”).

Recommended approach (one paragraph)

Use a variable icon font (Material Symbols–class) for repeated UI chrome, delivered as self-hosted WOFF2 with a small Svelte UiIcon wrapper and CSS tied to font-size / color; keep SVG (or similar) for bespoke graph geometry and any brand marks that must follow third-party guidelines. If licensing or ops block the variable-font path, fall back to a subset classic webfont (Font Awesome–class) without changing the overall direction.

Top questions for reviewers

  1. Q-01 — Which icon font family is canonical (Material vs FA vs other)?
  2. Q-04 — Who owns the subset manifest and CI enforcement?
  3. Q-03 — Confirm the pragmatic boundary for allowed SVG exceptions.

What to review

  • spec.md for architecture, non-goals, and rollout.
  • qna.md for open items aligned with the issue’s needs-info state.

Refs #818

Made with Cursor

Add headless spec-start artifacts for migrating UI chrome from inline SVG to icon fonts, with exceptions for bespoke/brand graphics.

Refs fullsend-ai#818

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions
Copy link
Copy Markdown

fullsend review is working on this — view logs

@github-actions
Copy link
Copy Markdown

Site preview

Preview: https://4663b8e7-site.fullsend-ai.workers.dev

Commit: 6d1f25045e6c16e8265ab8f284af616d7fccdca9

@fullsend-ai-review
Copy link
Copy Markdown

Review: #907

Head SHA: 6d1f250
Timestamp: 2026-05-14T00:00:00Z
Outcome: approve

Summary

This is a docs-only PR adding two new files (spec.md and qna.md) under docs/plans/2026-05-14-web-icon-fonts-for-ui/. The spec explores replacing inline SVGs with icon fonts in web UIs, presenting three architectural options (variable icon font, classic webfont, SVG sprite sheet) with a clear recommendation for Option A (variable icon font) with narrow SVG exceptions. The Q&A file captures five well-structured open questions. The change aligns with issue #818's request and is appropriately scoped as a speculative design document with no code changes. No security, correctness, or injection concerns were identified.

Findings

Info

  • [style] spec.md:7 — The phrase "rather then" (quoting the issue title) contains a typo ("then" → "than"). This is inherited from the issue title, so preserving it in a direct quote is defensible, but consider noting it with [sic] or correcting it since it reads as the spec's own prose.

Footer

Outcome: approve
This review applies to SHA 6d1f25045e6c16e8265ab8f284af616d7fccdca9. Any push to the PR head clears this review and requires a new evaluation.


- **Kind:** open
- **Detail:** The issue asks for icon fonts but does not pick a vendor. Triage suggested Material Symbols, Font Awesome, Lucide, Heroicons, or other. Lucide/Heroicons are commonly shipped as SVG components; adapting them to a font may be non-standard compared to first-party variable fonts.
- **Suggested resolution:** Product owner picks one primary family (variable font preferred) and one fallback; record license + self-host decision in the implementation ADR or PR description.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please suggest a few options, provide factors for comparison such as licensing constraints, file size, icon coverage and stylistic match, and select one of the options as the most recommended one.

- **Kind:** assumption
- **Detail:** Graph visualization and other data-bound vector art should remain SVG (or canvas) rather than being forced into a font.
- **Confidence:** high
- **Blast radius if wrong:** Wasted effort trying to encode complex paths as fonts, or broken visuals if graph code is “simplified” incorrectly.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirm - this is only about icons.


- **Kind:** scope
- **Detail:** Strict reading: all static chrome icons move to the font system. Pragmatic reading: brand marks that must follow third-party guidelines may remain inline SVG or `<img>` even when a font glyph exists.
- **Proposed handling:** Adopt the pragmatic boundary; list allowed SVG exceptions in developer docs to avoid drift.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirm using the pragmatic approach.

- **Kind:** assumption
- **Detail:** This spec references triage’s list of SVG-heavy areas; the local checkout used for spec-start may have fewer Svelte files than upstream at times. Implementation should re-audit `web/**` for actual `<svg>` usage at merge time.
- **Confidence:** medium
- **Blast radius if wrong:** Missed migration targets or unnecessary font work on unused components.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a real concern

@ifireball
Copy link
Copy Markdown
Contributor Author

Please include a list of currently existing UI elements where icons that are candidate for replacement exist, specify what the icon contains and which kind of glyph may replace it.

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