Skip to content

Refactor components, optimize performance, and enhance documentation …#703

Closed
ss-o wants to merge 2 commits into
nextfrom
main
Closed

Refactor components, optimize performance, and enhance documentation …#703
ss-o wants to merge 2 commits into
nextfrom
main

Conversation

@ss-o
Copy link
Copy Markdown
Member

@ss-o ss-o commented Apr 21, 2026

This pull request introduces comprehensive documentation for the codebase by adding three new markdown files: ARCHITECTURE.md, CONCERNS.md, and CONVENTIONS.md under .github/codebase/. These documents describe the system's architectural style, key risks, coding standards, and operational conventions, providing clear guidance for contributors and maintainers.

Key additions:

Architecture and System Design:

  • Added .github/codebase/ARCHITECTURE.md detailing the system's layered content-centric architecture, runtime flow, module responsibilities, reused patterns, architectural risks, and evidence files.

Risks, Technical Debt, and Operational Concerns:

  • Added .github/codebase/CONCERNS.md outlining prioritized risks (such as asset delivery fragility and lack of automated tests), technical debt, security and performance concerns, fragile/high-churn areas, and supporting evidence.

Coding Standards and Conventions:

  • Added .github/codebase/CONVENTIONS.md specifying naming, formatting, import/module, error/logging, and testing conventions, as well as branching/release practices and relevant evidence.

…702)

* refactor(components): move Emoji to directory, extract announcement SVGs to src/data

- Move src/components/Emoji.tsx → src/components/Emoji/index.tsx to follow the
  one-component-per-directory convention used by all other components
- Extract inline SVG icon strings and createAnnouncementIcon() helper from
  docusaurus.config.ts into src/data/announcement-icons.ts; update import
- Update frontend-components.instructions.md to reflect new src/data/ layer

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(home): replace FontAwesome icons with inline SVGs in HomeCommunity

- Replace fa-brands/fa-solid class-based icons with inline SVG paths via the
  existing Svg component; removes runtime dependency on FontAwesome for these icons
- Add COMMUNITY_GLYPHS map and CommunityIconGraphic renderer using FA-sourced paths
  for github, discussions, and translate
- Add explicit width/height on cardIcon (2.25rem) for consistent sizing
- Reduce CardGrid backdrop-filter blur from 12px → 6px for better legibility
- Reorder homepage section imports alphabetically

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* perf(home): add fetchPriority to hero logo, simplify entry animation

- Add fetchPriority="high" to HomeBanner hero <img> so the LCP image is
  prioritised by the browser's preload scanner
- Simplify jack-in-the-box keyframe: remove overshoot rotations (0%/50%/70%)
  in favour of a clean scale 0.6→1 fade-in with will-change: transform,opacity
- Shorten animation duration from 4s → 1s; use --ease-out token

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* perf(player): lazy-load asciinema behind IntersectionObserver

- Defer the 207.6 kB asciinema-player WASM+JS bundle until the terminal
  component enters the viewport (rootMargin: 200px) via IntersectionObserver
- Split refs: wrapperRef (outer div, IO target) vs element (inner div, exclusive
  asciinema mount); spinner is a sibling to avoid asciinema DOM ownership conflict
- Add isLoading state for spinner display during module fetch
- Add cancelled closure flag in IO cleanup to guard against React strict-mode
  double-invocation and post-unmount state updates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(theme): remove stale cdn.jsdelivr.net preconnect from MDXContent

FontAwesome loads from kit.fontawesome.com; no requests to cdn.jsdelivr.net
were confirmed via network trace. The preconnect hint was adding a wasted
connection attempt on every MDX page load.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(search): comprehensive DocSearch theming aligned to design system

Replace the partial 8-variable DocSearch block with full coverage of all
~22 DocSearch CSS custom properties plus structural overrides:

- --docsearch-primary-color: uses ifm-color-primary (controls highlights,
  active hit background, and loading bar)
- --docsearch-searchbox-shadow / modal-shadow / key-shadow: HSL values
  matching the site's glass-morphism shadow language
- --docsearch-icon-color: follows primary tint rather than grey default
- Dark mode focus bg: changed from pitch-black to ifm-background-surface-color
  for natural elevated-surface feedback
- Structural overrides: font-family (monospace brand stack), border-radius
  (--radius-lg), and glassmorphism border (1px HSL semi-transparent)
- All colors in HSL format to satisfy Stylelint color-format rule

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs(codebase): add knowledge base and architecture blueprint

Seven reference documents covering the full codebase, plus a 979-line
architecture blueprint with C4 diagrams and ADRs:

- ARCHITECTURE.md: system context, containers, deployment, decision records
- CONCERNS.md: known issues and recommended remediation
- CONVENTIONS.md: TypeScript, CSS, MDX, branching rules
- INTEGRATIONS.md: Cloudflare Pages, Crowdin, Algolia, FA kit, Argos
- STACK.md: dependency catalogue with rationale
- STRUCTURE.md: directory layout, component anatomy, content roots
- TESTING.md: manual QA process, CI checks, lint/build matrix
- Project_Architecture_Blueprint.md: full blueprint with C4 diagrams

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(ci): remove Argos visual regression workflow and copilot MCP config

- Remove .github/workflows/argos.yml: Argos CI screenshot comparison is
  not actively maintained in this project
- Remove .github/copilot-mcp.json: replaced by standard Copilot CLI tooling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(deps): upgrade typescript-eslint, add jiti, fix linting ignores

- Upgrade typescript-eslint ^8.58.1 → ^8.59.0
- Add jiti ^2.6.1 as explicit devDependency (was implicitly used via eslint)
- Remove pnpm.onlyBuiltDependencies list (no longer needed with current toolchain)
- Add jiti override in pnpm.overrides: eslint>jiti → ^2.6.1
- ESLint ignore: add .wrangler/ directory and *.md patterns alongside *.mdx
  for docs, community, ecosystem, and blog directories

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(cdn): aggressive cache headers for /cdn/* assets, update font hashes

- Add /cdn/* section to static/_headers with Cache-Control: immutable,
  Access-Control-Allow-Origin: *, and X-Robots-Tag: nosnippet,noindex
- Update all four Hack font woff2 URLs with updated per-file content hashes
  (hack-regular, bold, italic, bold-italic subsets)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: resolve PR review comments - SVG viewBox clipping, cache headers, Player error state

- Fix star icon viewBox to include negative Y (0 -32 576 544)
- Fix discussions icon viewBox to include negative Y (0 -32 576 573.2)
- Scope /cdn/* immutable cache to .woff2/.cast only; .css uses max-age=86400
- Reset isLoading to false in Player error catch block

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Salvydas Lukosius <ss-o@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 21, 2026 08:35
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Apr 21, 2026

Deploying zsh with  Cloudflare Pages  Cloudflare Pages

Latest commit: 3a933fa
Status: ✅  Deploy successful!
Preview URL: https://1ce116d2.zsh.pages.dev

View logs

@github-actions
Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 6.48 MB

ℹ️ View Unchanged
Filename Size
.docusaurus/globalData.json 11.9 kB
build/404.html 14 kB
build/assets/css/styles.********.css 153 kB
build/assets/js/0a6cf40a.********.js 36.6 kB
build/assets/js/0fd216e9.********.js 9.45 kB
build/assets/js/1a4e3797.********.js 82.3 kB
build/assets/js/01a85c17.********.js 6.95 kB
build/assets/js/1b355a49.********.js 8.76 kB
build/assets/js/1df93b7f.********.js 16.1 kB
build/assets/js/1f391b9e.********.js 1.78 kB
build/assets/js/2e789afb.********.js 76.2 kB
build/assets/js/3a2db09e.********.js 241 B
build/assets/js/3a9ef7ca.********.js 439 B
build/assets/js/3dd168bd.********.js 17.4 kB
build/assets/js/3fc333ae.********.js 31 kB
build/assets/js/4edc808e.********.js 14.9 kB
build/assets/js/4f649d07.********.js 3.8 kB
build/assets/js/5c2e370e.********.js 487 B
build/assets/js/5e95c892.********.js 340 B
build/assets/js/6be15ea1.********.js 9.37 kB
build/assets/js/7bf4542e.********.js 18.5 kB
build/assets/js/7c5c12ac.********.js 9.71 kB
build/assets/js/8ebcaa6c.********.js 18.3 kB
build/assets/js/09a4fe5a.********.js 67.9 kB
build/assets/js/9b0b65a6.********.js 11.2 kB
build/assets/js/9e4087bc.********.js 1.97 kB
build/assets/js/12cfd228.********.js 7.17 kB
build/assets/js/14eb3368.********.js 10.7 kB
build/assets/js/40c845af.********.js 31.4 kB
build/assets/js/47a5fc0a.********.js 174 B
build/assets/js/55b84506.********.js 12.4 kB
build/assets/js/57a8643e.********.js 12.8 kB
build/assets/js/0058b4c6.********.js 4.25 kB
build/assets/js/073fbc7c.********.js 16.2 kB
build/assets/js/78a4fd52.********.js 4.94 kB
build/assets/js/79af6410.********.js 375 B
build/assets/js/93c7665c.********.js 2.2 kB
build/assets/js/167d542a.********.js 12.1 kB
build/assets/js/175b49cb.********.js 40.2 kB
build/assets/js/221b35f7.********.js 18.8 kB
build/assets/js/245d11de.********.js 56.2 kB
build/assets/js/263b985f.********.js 35.5 kB
build/assets/js/352f0e19.********.js 8.66 kB
build/assets/js/402c530c.********.js 458 B
build/assets/js/446e416b.********.js 9.61 kB
build/assets/js/573f7f56.********.js 3.44 kB
build/assets/js/621db11d.********.js 1.67 kB
build/assets/js/635ad0e8.********.js 503 B
build/assets/js/814f3328.********.js 286 B
build/assets/js/945b49d0.********.js 14.3 kB
build/assets/js/991ed628.********.js 17.1 kB
build/assets/js/2302.********.js 22.4 kB
build/assets/js/3894e54f.********.js 21.8 kB
build/assets/js/3977.********.js 102 B
build/assets/js/4391.********.js 9.4 kB
build/assets/js/4653.********.js 1.27 kB
build/assets/js/5474.********.js 102 B
build/assets/js/5700.********.js 22.7 kB
build/assets/js/5801.********.js 1.05 kB
build/assets/js/6091.********.js 175 kB
build/assets/js/6542.********.js 437 kB
build/assets/js/6875c492.********.js 1.78 kB
build/assets/js/6997.********.js 15.5 kB
build/assets/js/7845.********.js 15 kB
build/assets/js/8298.********.js 6.24 kB
build/assets/js/8406.********.js 938 B
build/assets/js/8975.********.js 5.79 kB
build/assets/js/9229.********.js 453 B
build/assets/js/9516.********.js 7.08 kB
build/assets/js/9903.********.js 12.4 kB
build/assets/js/36994c47.********.js 171 B
build/assets/js/98822c48.********.js 12.9 kB
build/assets/js/4382960e.********.js 9.85 kB
build/assets/js/8357758b.********.js 18.1 kB
build/assets/js/17896441.********.js 1.78 kB
build/assets/js/35475145.********.js 451 B
build/assets/js/70442256.********.js 38.5 kB
build/assets/js/a6aa9e1f.********.js 1.78 kB
build/assets/js/a7bd4aaa.********.js 688 B
build/assets/js/a21c20db.********.js 47.2 kB
build/assets/js/a821d7a1.********.js 14.9 kB
build/assets/js/a94703ab.********.js 11.4 kB
build/assets/js/a7456010.********.js 173 B
build/assets/js/aba21aa0.********.js 172 B
build/assets/js/acecf23e.********.js 193 B
build/assets/js/b14e0f74.********.js 15.8 kB
build/assets/js/b28a5f0c.********.js 21 kB
build/assets/js/b4616e61.********.js 18.7 kB
build/assets/js/b4645c50.********.js 32.5 kB
build/assets/js/bc6be8dd.********.js 438 B
build/assets/js/bc7db166.********.js 22.4 kB
build/assets/js/c7b90d82.********.js 23.1 kB
build/assets/js/c15d9823.********.js 250 B
build/assets/js/c141421f.********.js 172 B
build/assets/js/ccc49370.********.js 1.78 kB
build/assets/js/cf55cfec.********.js 458 B
build/assets/js/d5c68bbd.********.js 42.7 kB
build/assets/js/d6cb878b.********.js 472 B
build/assets/js/d40a1e80.********.js 10 kB
build/assets/js/d2436a2b.********.js 4.68 kB
build/assets/js/db8d5f16.********.js 11.6 kB
build/assets/js/e9ebadb9.********.js 12.7 kB
build/assets/js/e76149f9.********.js 9.38 kB
build/assets/js/e0719818.********.js 174 B
build/assets/js/ea82e367.********.js 13.7 kB
build/assets/js/eb7ebca6.********.js 34.4 kB
build/assets/js/ebed0d07.********.js 2.04 kB
build/assets/js/ec281f2e.********.js 16.3 kB
build/assets/js/eecb7248.********.js 2.95 kB
build/assets/js/ef8b811a.********.js 313 B
build/assets/js/f1b373af.********.js 368 B
build/assets/js/f077d5db.********.js 33.5 kB
build/assets/js/f81c1134.********.js 5.28 kB
build/assets/js/f1028ce8.********.js 465 B
build/assets/js/f13553a8.********.js 436 B
build/assets/js/f53487f0.********.js 12.7 kB
build/assets/js/fd2064b2.********.js 11.5 kB
build/assets/js/fedb50c8.********.js 44.9 kB
build/assets/js/main.********.js 505 kB
build/assets/js/runtime~main.********.js 8.37 kB
build/blog.html 18.9 kB
build/blog/archive.html 14.4 kB
build/blog/authors.html 15.1 kB
build/blog/feature-rich-plugin-manager.html 23.9 kB
build/blog/tags.html 15 kB
build/blog/tags/github.html 17.8 kB
build/blog/tags/zsh.html 17.8 kB
build/community.html 20.7 kB
build/community/category/-collection.html 25.7 kB
build/community/category/-gallery-of-invocations.html 20.5 kB
build/community/category/-roadmap.html 21.2 kB
build/community/category/-zsh-users-guide.html 20.4 kB
build/community/contributors.html 29.7 kB
build/community/gallery/collection.html 27.2 kB
build/community/gallery/collection/completions.html 79 kB
build/community/gallery/collection/plugins.html 88.3 kB
build/community/gallery/collection/programs.html 191 kB
build/community/gallery/collection/services.html 27.9 kB
build/community/gallery/collection/snippets.html 28.3 kB
build/community/gallery/collection/themes.html 67.4 kB
build/community/zsh_guide/roadmap/expansion.html 34.8 kB
build/community/zsh_handbook.html 160 kB
build/community/zsh_plugin_standard.html 110 kB
build/docs.html 29 kB
build/docs/category/-getting-started.html 21.1 kB
build/docs/category/-guides.html 22.1 kB
build/docs/category/️-syntax.html 23.4 kB
build/docs/code.html 23.7 kB
build/docs/getting_started/installation.html 64.4 kB
build/docs/getting_started/migration.html 105 kB
build/docs/getting_started/overview.html 95.9 kB
build/docs/guides/benchmark.html 59.8 kB
build/docs/guides/commands.html 90.3 kB
build/docs/guides/customization.html 84.6 kB
build/docs/guides/syntax/bindkey.html 41.4 kB
build/docs/guides/syntax/for.html 73.5 kB
build/docs/guides/syntax/ice-modifiers.html 51.8 kB
build/docs/guides/syntax/standard.html 146 kB
build/ecosystem.html 20.3 kB
build/ecosystem/annexes/bin-gem-node.html 125 kB
build/ecosystem/annexes/default-ice.html 34.4 kB
build/ecosystem/annexes/eval.html 41.2 kB
build/ecosystem/annexes/linkbin.html 35 kB
build/ecosystem/annexes/meta-plugins.html 41.9 kB
build/ecosystem/annexes/overview.html 66.2 kB
build/ecosystem/annexes/patch-dl.html 31 kB
build/ecosystem/annexes/readurl.html 43.5 kB
build/ecosystem/annexes/rust.html 46.8 kB
build/ecosystem/annexes/submods.html 27.8 kB
build/ecosystem/annexes/unscope.html 44.1 kB
build/ecosystem/category/-annexes.html 27.5 kB
build/ecosystem/category/-packages.html 20.5 kB
build/ecosystem/category/️-plugins.html 32 kB
build/ecosystem/packages/synopsis.html 38.5 kB
build/ecosystem/packages/usage.html 76.6 kB
build/ecosystem/plugins/diff-so-fancy.html 42.8 kB
build/ecosystem/plugins/f-sy-h.html 121 kB
build/ecosystem/plugins/h-s-mw.html 53.7 kB
build/ecosystem/plugins/zbrowse.html 30.9 kB
build/ecosystem/plugins/zconvey.html 35.3 kB
build/ecosystem/plugins/zi-console.html 38.1 kB
build/ecosystem/plugins/zprompts.html 32.6 kB
build/ecosystem/plugins/zsh-cmd-architect.html 40 kB
build/ecosystem/plugins/zsh-editing-workbench.html 35.6 kB
build/ecosystem/plugins/zsh-modules.html 41.5 kB
build/ecosystem/plugins/zsh-navigation-tools.html 78.6 kB
build/ecosystem/plugins/zsh-select.html 43 kB
build/ecosystem/plugins/zsh-unique-id.html 34.6 kB
build/ecosystem/plugins/zui.html 180 kB
build/ecosystem/plugins/zzcomplete.html 32.1 kB
build/index.html 24.9 kB
build/legal/CODE_OF_CONDUCT.html 23.9 kB
build/legal/PRIVACY.html 36.1 kB
build/search.html 19.3 kB

compressed-size-action

@ss-o ss-o closed this Apr 21, 2026
Copy link
Copy Markdown
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.

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