Skip to content

feat(site-kit): brandIconLinks — one head link set for the linq-brand icons (D-026) - #61

Merged
jlc488 merged 1 commit into
mainfrom
feat/site-kit-brand-icon-links
Sep 13, 2026
Merged

jlc488 merged 1 commit into
mainfrom
feat/site-kit-brand-icon-links

Conversation

@jlc488

@jlc488 jlc488 commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Why

AskLinq's Google result still showed the pre-D-125 question-mark icon ten days after the mark changed. The served files were already the new mark; the causes were a missing <link rel="icon"> (dropped in the web-next cutover) and a 32px-only /favicon.ico (Google: "at least 8x8px, preferably >48x48px"). Looking across the family, four sites linked four different subsets of the same @devslab/linq-brand files.

What

  • brandIconLinks({ basePath = "/brand" }) → the fixed four-link set: favicon.svg, mark-48.png (48x48), favicon.ico (16/32/48), apple-touch-icon.png (180x180).
  • BRAND_ICON_FILES — the same four names, so a product serves them from one directory.
  • toTanStackHead(metadata, { icons: true | { basePath } }) appends them. Opt-in; omitted, output is byte-identical to before.
  • basePath must be a same-origin path (URL → RangeError): a product serves its own icons.
  • README en/ko section, changeset (minor), decision D-026.

Verify

  • pnpm run verify (build + check) green, verify:source:stage3-4 0 fail (3 new tests in site-kit-core).
  • First consumer: AskLinq (getasklinq.app head + /brand/* routes) follows in devslab-kr/asklinq once this is published.

AskLinq 구글 검색 결과의 파비콘이 마크 교체(D-125) 열흘 뒤에도 옛 물음표였다. 서빙 파일은 이미 새 마크였고, 원인은 web-next 컷오버에서 빠진 <link rel="icon">과 32px뿐인 /favicon.ico(구글 권장 48px 초과). 가족 사이트 넷이 같은 @devslab/linq-brand 파일을 네 가지 조합으로 링크하고 있었다.

무엇

  • brandIconLinks({ basePath = "/brand" }) — 고정된 네 링크. BRAND_ICON_FILES가 같은 네 파일명.
  • toTanStackHead(metadata, { icons })가 옵트인으로 덧붙인다. 생략 시 출력은 이전과 바이트 동일.
  • basePath는 같은 오리진 경로만(URL은 RangeError).
  • README 양어, changeset(minor), D-026.

… icons (D-026)

AskLinq's search result was still showing the icon from before the mark
changed (D-125, ten days earlier). The production files were already the
new mark; the page head had no <link rel="icon"> at all since the
web-next cutover, so crawlers saw only the /favicon.ico fallback, and that
file was a 32px PNG — under Google's "preferably >48x48px". Checking the
siblings: VisionLinq, BookLinq, TraceLinq and AskLinq each linked a
different subset of the same @devslab/linq-brand files.

`brandIconLinks({ basePath })` is now the one place that says which files
a head links and in what order: favicon.svg first, mark-48.png (48x48),
favicon.ico (16/32/48), apple-touch-icon.png (180x180). `BRAND_ICON_FILES`
names the same four so a product serves them from one directory.
`toTanStackHead(metadata, { icons })` appends them — opt-in, because the
adapter cannot know where a product serves the files and a head that
links icons the server 404s is worse than one that links none. basePath
is a same-origin path; a URL is a RangeError.

Tests: link set and order, base-path handling, adapter appends after the
alternates only when asked. README en/ko, changeset (minor), D-026.
@jlc488
jlc488 merged commit ee2bee6 into main Sep 13, 2026
2 checks passed
@jlc488
jlc488 deleted the feat/site-kit-brand-icon-links branch September 13, 2026 19:10
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