Skip to content

feat: promotion polish — docs UX, CLI hyperlinks, completions auto-install#90

Merged
shouze merged 25 commits intomainfrom
feat/promotion-polish
Mar 8, 2026
Merged

feat: promotion polish — docs UX, CLI hyperlinks, completions auto-install#90
shouze merged 25 commits intomainfrom
feat/promotion-polish

Conversation

@shouze
Copy link
Contributor

@shouze shouze commented Mar 8, 2026

Motivation

Série d'améliorations mineures pour préparer la promotion de l'outil.


Docs / VitePress

ComparisonTable.vue

  • Chaque ligne du tableau porte maintenant une courte description (texte secondaire 13 px, --vp-c-text-3)
  • Les liens s'ouvrent dans un nouvel onglet (target="_blank")
  • Correction du hover : le texte reste lisible (plus de violet sur violet)
  • Tailles de police augmentées : titre feature 14→15 px, description 12→13 px, entête outil 13→14 px

VersionBadge.vue

  • Badge "v1.x.x is here" : font-size 13→15 px

InstallSection.vue

  • .is-subtitle et .is-step-label : 15→16 px

ProductionCta.vue

  • .cta-text : 15→16 px
  • Remplacement du emoji (moche sur iOS Safari) par un SVG <path> inline
  • Bouton passé en inline-flex (fix rendu SVG mobile)

TestimonialsSection.vue

  • Correction hover des cartes (border-color + dark mode)
  • Remplacement du texte du bouton par SVG
  • Fix hover du bouton "Share your story" : color: #fff !important forcé pour éviter l'override VitePress

RichFooter.vue

  • Lien fulll.fr ↗ : remplacement emoji → SVG

CLI / core

Colorisation des URLs dans --help

colorDesc() colorise désormais toutes les URLs https:// dans n'importe quelle ligne de description, pas seulement les lignes Docs:.

URLs colorées dans upgrade

Import de picocolors dans upgrade.ts + helper upgradeLink() : tous les liens du message post-upgrade (What's new, Release notes, Commit log, Report a bug) s'affichent en cyan souligné sur TTY.

Completions auto-installées à l'upgrade

refreshCompletions() crée systématiquement le fichier s'il n'existe pas (install) et le rafraîchit sinon, au lieu de seulement écraser les fichiers existants.

Replay command

<summary> mis à jour :

[github-code-search](https://fulll.github.io/github-code-search/) replay command

Tests

  • output.test.ts : assertions mises à jour pour le nouveau texte du <summary>
  • upgrade.test.ts : tests refreshCompletions adaptés au comportement "always install"

Checklist

  • bun test — 526 pass, 0 fail
  • bun run lint — 0 errors
  • bun run format:check — no diff
  • bun run knip — no unused exports

Copilot AI review requested due to automatic review settings March 8, 2026 12:28
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

…stall

## Docs / VitePress
- ComparisonTable: add per-row descriptions, target=_blank links, bump font sizes, fix hover contrast (text stays readable on violet bg)
- VersionBadge: bump badge font-size 13→15 px
- InstallSection: subtitle and step-label font-size 15→16 px
- ProductionCta: body text 15→16 px, replace ↗ emoji with inline SVG arrow (iOS Safari fix), switch button to inline-flex
- TestimonialsSection: fix hover border/shadow, replace arrow emoji with SVG, fix cta-btn hover contrast (force color:#fff)
- RichFooter: replace ↗ emoji with SVG arrow on fulll.fr link

## CLI / core
- help colorizer: colorize all bare https:// URLs in any description line (not only Docs: prefix)
- upgrade output: render all post-upgrade URLs in cyan underline via upgradeLink() helper
- refreshCompletions: always create completion file (install + refresh), not only overwrite existing ones
- output.ts: replay command summary now links to https://fulll.github.io/github-code-search/

## Tests
- output.test.ts: update summary assertion to match new link text
- upgrade.test.ts: update refreshCompletions tests to reflect 'always install' behaviour
@shouze shouze force-pushed the feat/promotion-polish branch from 80350b7 to 851e4d8 Compare March 8, 2026 12:30
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR polishes promotion-readiness across the VitePress marketing/docs UI and the CLI UX by improving link presentation (help/upgrade), updating completion refresh behavior, and refining several docs theme components.

Changes:

  • CLI: colorize hyperlinks more broadly in --help, and render upgrade-related URLs as TTY-friendly cyan/underlined links.
  • CLI: change refreshCompletions() to always install/write completion files (not only refresh existing ones) and update tests/output accordingly.
  • Docs theme: multiple UX tweaks (font sizes, hover styles) and replace arrow/↗ glyphs with inline SVG icons.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/upgrade.ts Adds upgradeLink() for TTY hyperlink styling; changes refreshCompletions() to install/write even when missing.
src/upgrade.test.ts Updates tests for the “always install completions” behavior and debug messages.
src/output.ts Updates replay <summary> text to include a homepage reference.
src/output.test.ts Updates assertions to match the new replay <summary> text.
github-code-search.ts Expands URL colorization in help descriptions; tweaks completions status message wording.
docs/.vitepress/theme/VersionBadge.vue Increases badge font size.
docs/.vitepress/theme/TestimonialsSection.vue Replaces arrow text with SVG; improves hover styling and button layout.
docs/.vitepress/theme/RichFooter.vue Replaces ↗ with SVG icon in an external link.
docs/.vitepress/theme/ProductionCta.vue Replaces ↗ with SVG icon; adjusts CTA font size and button layout.
docs/.vitepress/theme/InstallSection.vue Slightly increases subtitle/step label font sizes.
docs/.vitepress/theme/ComparisonTable.vue Adds per-row descriptions and documentation links; adjusts typography/hover styles and adds external-link icon.
.vscode/settings.json Adds a VS Code workspace setting to auto-approve a terminal command pattern.

shouze added 9 commits March 8, 2026 17:11
- Add ARIA tabs pattern (roving tabindex, keyboard nav) to UseCaseTabs
- Add table semantics (caption, scope, aria-label) to ComparisonTable
- Fix heading hierarchy and landmarks in InstallSection, ProductionCta,
  TestimonialsSection, HowItWorks
- Fix contrast failures: .ct-feature-desc, .ct-tool-alt, .ts-role → text-1/2;
  .ts-avatar #CC88FF → #8833cc; .td-ps #9933ff → #aa55ff
- Switch Shiki light theme to github-light-high-contrast (fixes #D73A49,
  #6A737D, #22863A tokens below 4.5:1); add CSS fallback overrides
- aria-hidden="true" on decorative TerminalDemo
- Add .sr-only utility and global :focus-visible ring to custom.css
- Fix hero alt="" (decorative image) in docs/index.md
- Add .github/workflows/a11y.yml (pa11y-ci, WCAG2AA, sitemap-driven)
- Add .pa11yci.json with WCAG2AA config and F77 ignore (Mermaid SVG ids)
- Add docs:a11y and docs:build:a11y scripts (VITEPRESS_HOSTNAME override
  so sitemap.xml uses localhost URLs during CI audit)
- Split mermaid+d3 into dedicated Rollup chunk; raise chunkSizeWarningLimit
  to 2500 kB to silence legitimate Mermaid size warning
- Increase HowItWorks step description font-size 14px → 15px
…Table 2-col

- custom.css: hide VPNavBarMenu/Extra and show hamburger below 960px;
  unlock VPNavScreen at 768-960px so the mobile menu actually opens;
  overflow-x guard on VPHome / pre blocks
- ComparisonTable.vue: keep both tool columns at all viewports;
  abbreviated headers (ct-name-short) on ≤640px; remove 480px column-hiding rule
- InstallSection.vue / UseCaseTabs.vue: overflow-x fixes for mobile
- ProductionCta.vue: add aria-label on external CTA link;
  remove duplicate .cta-btn:focus-visible rule
- config.mts: remove redundant dynamic import of fileURLToPath (already imported at top)
- scripts/responsive.pw.ts: 4 viewports × 5 pages = 20 tests;
  overflow detection skips fixed/sticky ancestors and hidden elements;
  saves screenshot on failure under test-results/screenshots/
- playwright.config.ts: fullyParallel, 4 workers (2 CI), domcontentloaded,
  15s timeout → ~24s total for the full suite
- package.json: add docs:test:responsive and docs:a11y scripts;
  VITEPRESS_BASE variable for pa11y-ci; @playwright/test devDependency
- knip.json: exclude scripts/responsive.pw.ts from knip analysis
- .gitignore: ignore test-results/ and playwright-report/
- responsive.yaml: new workflow running Playwright responsive tests on
  push/PR; builds VitePress, serves preview, runs bun docs:test:responsive
- a11y.yml: fix corrupted setup-bun action pin comment (# v2.1.3)
- ci.yaml: same comment fix
- cd.yaml: same comment fix
- docs.yml: same comment fix (2 occurrences)
…ctions

- .github/skills/documentation.md: VitePress theme map, CSS vars, WCAG 2.1 AA
  patterns, responsive breakpoints, VitePress 768px quirks, validation checklist
- .github/skills/feature.md: layer map, type-first design, CLI conventions,
  render sub-module extension playbook, test patterns
- .github/skills/bug-fixing.md: extended symptom→module table, test-first
  patterns, minimal fix principles
- .github/skills/refactoring.md: architectural invariants, safe rename playbook,
  module extraction pattern, knip interpretation guide
- .github/skills/release.md: semver guide, CD pipeline, binary targets, blog post
  format, CHANGELOG rules, versioned docs snapshot mechanics
- All 5 instruction files: add Skill reference header pointing to companion skill
- CONTRIBUTING.md: add docs validation commands + AI agent tooling section
- UseCaseTabs.vue: fix tabRefs ref callback to write to tabRefs.value[i]
  so roving-tabindex focus logic works correctly (was writing to tabRefs[i],
  i.e. the ref wrapper, not the underlying array)
- ComparisonTable.vue: add role="img" + aria-hidden on ✓/✗ symbols so AT
  announces 'Yes'/'No' reliably across AT/browser combos
- config.mts: replace dead vitepress-plugin-mermaid pattern with the actual
  package vitepress-mermaid-renderer in manualChunks rule
- responsive.pw.ts: fix header comment (domcontentloaded, not networkidle);
  derive PATHS from VITEPRESS_BASE env var so tests work on snapshot builds
Make VitePress docs fully WCAG 2.1 AA accessible
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

@shouze shouze self-assigned this Mar 8, 2026
@shouze shouze requested a review from Copilot March 8, 2026 18:11
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 39 out of 41 changed files in this pull request and generated 4 comments.

…in permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

…in permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

shouze added 2 commits March 8, 2026 19:48
In Vue 3 SFC templates, ref<T> values are auto-unwrapped, so 'tabRefs'
in the template already resolves to tabRefs.value (HTMLButtonElement[]).
A previous commit incorrectly changed to tabRefs.value[i], which in the
template context resolves to tabRefs.value.value[i] = undefined[i],
causing: TypeError: Cannot set properties of undefined (setting '0').

Revert to indexing tabRefs directly (template auto-unwrap), with a null
guard against the cleanup call Vue makes on unmount.
- workflows/a11y.yml, responsive.yaml: add permissions: contents: read
  (GitHub Advanced Security — GITHUB_TOKEN least-privilege)
- .vscode/settings.json: remove chat.tools.terminal.autoApprove
  (security footgun — keep in local user settings only)
- src/output.ts + output.test.ts: replace Markdown link syntax in <summary>
  with <a href> HTML (GFM does not render [text](url) inside HTML blocks)
- ComparisonTable.vue: remove target=_blank / rel / ext-link SVG icon from
  internal doc links; also remove orphaned .ct-ext-icon CSS rules
- scripts/responsive.pw.ts: only skip position:fixed in overflow detection;
  VitePress nav elements (.VPNav/.VPNavBar/.VPLocalNav/.VPFlyout) are now
  whitelisted by class instead of blanket-skipping all sticky elements —
  fixes potential false negatives for non-nav sticky content
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 39 out of 41 changed files in this pull request and generated 3 comments.

shouze added 4 commits March 8, 2026 23:16
- Add composite action start-preview-server for reuse across jobs
- Rename a11y.yml → a11y.yaml and responsive.yaml (consistency)
- Add docs.yaml replacing the old monolithic docs.yml deployment
- Pin all third-party actions to full SHA hashes
- Update docs.yml to drop duplicate steps covered by new docs.yaml
- Add .lhci.config.cjs with collect/assert/upload settings
  (preset desktop, 2 runs, minScore 0.99 on all 4 categories)
- Add lighthouse.yaml: lhci autorun → generate-lhci-report.ts → PR comment
- Add scripts/generate-lhci-report.ts: concise summary table with links
  to uploaded HTML reports from links.json (lhci upload output)
- Add @lhci/cli devDependency, docs:lhci npm script
- Move pa11y-ci from bunx to proper devDependency, remove bunx
- Ignore .lighthouseci/ in .gitignore, .lhci.config.cjs in knip
- Apply backdrop-filter glass effect to VitePress navbar via
  --vp-nav-bg-color CSS variable override on .VPNavBar
- Fix inline code contrast in tables for WCAG AA compliance
- Add aria-hidden on DocSearch button keys to fix label-content-name
- Fix contrast issues in ComparisonTable, InstallSection, RichFooter,
  TerminalDemo, UseCaseTabs Vue components
- Raise LHCI thresholds to ≥ 0.99 for all four Lighthouse categories
- Update config.mts as needed for docs build
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

@github-actions
Copy link

github-actions bot commented Mar 8, 2026

🔦 Lighthouse Report

Page ⚡ Perf ♿ A11y 🛡️ BP 🔍 SEO Report
/github-code-search/ 🟢 98 (≥97) 🟢 100 (≥99) 🟢 100 (≥99) 🟢 100 (≥99) 🔗 view
/github-code-search/getting-started/ 🟢 99 (≥97) 🟢 100 (≥99) 🟢 100 (≥99) 🟢 100 (≥99) 🔗 view

Thresholds: Perf ≥ 97 · A11y ≥ 99 · BP ≥ 99 · SEO ≥ 99
commit 6a728f0 · full workflow run

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 47 out of 49 changed files in this pull request and generated 2 comments.

- .td-body: add explicit color #e8e8f0 to override inherited dark
  VitePress text color on #0f0d1a background (was ~1.5:1, now n/a)
- .td-hints spans: rgba(255,255,255,0.22) → 0.55 (2.5:1 → 6.1:1 ✓)
- .td-replay-label: rgba(153,51,255,0.55) → #aa55ff (1.9:1 → 5.0:1 ✓)
- .td-mark: rgba(153,51,255,0.65) → #aa55ff (2.3:1 → 5.0:1 ✓)
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

Strip the hardcoded /github-code-search/ prefix from all docLink values
and apply withBase() at render time so links remain correct in versioned
snapshot builds (where VITEPRESS_BASE changes, e.g. /github-code-search/v2/).

Addresses copilot review comment:
#90 (comment)
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

@shouze shouze requested a review from Copilot March 8, 2026 22:29
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

- Use withBase() from vitepress (properly recognized by template compiler)
- Strip /github-code-search/ prefix from all docLink values so withBase()
  prepends the base exactly once at render time
- Remove intermediate docHref() helper (was duplicating the base)
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

@github-actions
Copy link

github-actions bot commented Mar 8, 2026

Coverage after merging feat/promotion-polish into main will be

96.58%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts97.50%100%100%97.18%52, 60
   api.ts93.86%100%100%93.03%266–270, 326, 343, 63–69
   cache.ts98.08%100%100%97.87%28
   completions.ts99.35%100%100%99.29%252
   group.ts100%100%100%100%
   output.ts99.12%100%94.74%99.52%58
   render.ts94.05%100%88.89%94.33%153, 177–182, 184–186, 188–189, 216, 380–381, 424–427
   upgrade.ts88.46%100%94.44%87.89%127–128, 148–155, 158–164, 169, 174, 210–213
src/render
   filter-match.ts97.44%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.62%100%90.40%99.31%284–285
   rows.ts97.87%100%100%97.73%54–55
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 48 changed files in this pull request and generated 3 comments.

@shouze shouze merged commit e390e6b into main Mar 8, 2026
13 checks passed
@shouze shouze deleted the feat/promotion-polish branch March 8, 2026 22:57
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.

2 participants