Skip to content

Add themed brand lockups and simplify git-rain winget install#5

Merged
bschellenberger2600 merged 8 commits into
mainfrom
feature/themed-brand-lockups-winget
Apr 17, 2026
Merged

Add themed brand lockups and simplify git-rain winget install#5
bschellenberger2600 merged 8 commits into
mainfrom
feature/themed-brand-lockups-winget

Conversation

@bschellenberger2600
Copy link
Copy Markdown
Member

@bschellenberger2600 bschellenberger2600 commented Apr 16, 2026

Summary

  • Serve git-fire and git-rain lockup (and icon) SVGs from public/assets/, with light and dark artwork selected via data-theme and prefers-color-scheme (same behavior as the rest of the site).
  • Add a small BrandLockup component and use it in the header (featured product) and in every layout next to the fire/rain headings (hero cards, feature rows, rich sections, and dedicated sections).
  • Windows install copy: prefer winget install git-rain, with the fully-qualified package id noted as a fallback (aligned with the git-fire winget pattern).
  • .gitignore: ignore *Zone.Identifier so Windows download metadata is not committed.

Validation

  • npm run build passes locally.

Notes

  • Local assets/ copies remain untracked; canonical paths for the site are under public/assets/.

Note

Low Risk
Mostly static asset/CSS/markup changes for branding plus a minor install-command string update; low risk aside from potential visual regressions or broken asset paths.

Overview
Adds theme-aware git-fire/git-rain brand SVGs (icons + lockups) under public/assets/ and introduces a reusable BrandLockup Astro component that swaps light/dark artwork via theme.

Updates all layouts and BaseLayout’s header to use the new lockups, and expands global.css with sizing, theme switching, and fire/rain-specific styling (including a rain-only hero glow when rain is featured). Also tweaks Windows install copy to prefer winget install git-rain with a fallback ID, fixes “behaviour” → “behavior”, and extends .gitignore to drop *Zone.Identifier and repo-root /assets/.

Reviewed by Cursor Bugbot for commit 2841964. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • New Features

    • Brand lockup component integrated across hero sections, feature cards, headers with responsive sizes and theme-aware imagery.
  • Bug Fixes

    • Simplified Windows install command for git-rain with a fallback note.
    • Minor copy correction: “behaviour” → “behavior”.
  • Style

    • Enhanced header/logo styling, hover behavior, and themed visual treatments for Fire/Rain sections.
  • Chores

    • Added .gitignore rule to ignore Windows alternate data stream metadata files.

Serve git-fire and git-rain lockup SVGs from public/assets with light/dark
variants tied to data-theme and prefers-color-scheme. Add BrandLockup across
layouts and the header. Prefer winget install git-rain with a fallback note.
Ignore Windows Zone.Identifier streams.

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 16, 2026

📝 Walkthrough

Walkthrough

Introduces a new BrandLockup Astro component (light/dark SVG variants, size and decorative props), integrates it across multiple layout components and the base layout, adds comprehensive CSS for wordmarks and theme handling, updates a winget install command, and adds a .gitignore rule for Windows ADS metadata.

Changes

Cohort / File(s) Summary
BrandLockup component
src/components/BrandLockup.astro
New Astro component rendering themed wordmarks with `product: 'fire'
Layout integrations
src/components/LayoutA.astro, src/components/LayoutB.astro, src/components/LayoutC.astro, src/components/LayoutCurrent.astro
Imported and rendered BrandLockup in hero cards and feature headers for git-fire and git-rain; minor text change (“behaviour” → “behavior”) in testkit sections.
Base layout
src/layouts/BaseLayout.astro
Replaced plain text site logo with composite link including <BrandLockup product=... size="sm" decorative /> and a visually-hidden text span; added site-logo--lockup class.
Styling
src/styles/global.css
Added .brand-lockup styles, size variants, image switching for light/dark themes, hover rules scoped for lockup variant, .visually-hidden utility, and product-themed tint/border rules for fire/rain sections; many new/adjusted selectors.
Scripts & config
src/scripts/install-pickers.ts, .gitignore
Changed git-rain Windows winget command to winget install git-rain with fallback note; added ignore rule for Windows alternate data stream files (*Zone.Identifier) to .gitignore.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A tiny lockup hops into view,
Fire and rain in SVG hue,
Light and dark, small to grand,
Sprinkled through each layout and land,
I nibble a carrot and cheer — brand new!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Add themed brand lockups and simplify git-rain winget install' accurately reflects the main changes: introduction of themed brand lockup components across layouts and a simplification of the Windows winget install command for git-rain.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/themed-brand-lockups-winget

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

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

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
git-fire-website 2841964 Commit Preview URL

Branch Preview URL
Apr 17 2026, 12:57 AM

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
src/styles/global.css (1)

130-140: Deprecated clip property (stylelint).

Stylelint flags clip: rect(0, 0, 0, 0) as deprecated. The modern equivalent is clip-path: inset(50%). Keeping both covers older engines, but the common minimal pattern today is just clip-path.

Suggested fix
 .visually-hidden {
 	position: absolute;
 	width: 1px;
 	height: 1px;
 	padding: 0;
 	margin: -1px;
 	overflow: hidden;
-	clip: rect(0, 0, 0, 0);
+	clip-path: inset(50%);
 	white-space: nowrap;
 	border-width: 0;
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/styles/global.css` around lines 130 - 140, Update the .visually-hidden
rule to remove the deprecated clip usage and use the modern clip-path instead:
replace the deprecated "clip: rect(0, 0, 0, 0)" with "clip-path: inset(50%)"
(you may optionally keep the old clip declaration before clip-path for older
engines, but ensure clip-path is present and takes precedence); keep the rest of
the properties in the .visually-hidden selector unchanged so accessibility
behavior remains intact.
src/components/BrandLockup.astro (1)

21-36: Both SVGs are always fetched; consider using <picture> with media queries.

The light and dark lockups are rendered as two <img> tags with CSS toggling display based on theme. Browsers still fetch the hidden image, so every page load downloads both artworks for each lockup (header + up to two section lockups = up to 6 SVGs). A <picture> with <source media="(prefers-color-scheme: dark)"> (plus a [data-theme] story) would let the browser pick one, but the CSS-swap approach is also needed to honor the in-page theme toggle, so this is a nice-to-have rather than a must-fix. At minimum, SVGs are small enough that this is a minor perf concern.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/BrandLockup.astro` around lines 21 - 36, BrandLockup currently
renders two <img> tags (classes brand-lockup__img--light and --dark) which
causes both SVGs to be fetched; change rendering to use a <picture> element with
a <source media="(prefers-color-scheme: dark)"
srcset={`/assets/${slug}-lockup-dark.svg`} and a fallback <img
src={`/assets/${slug}-lockup.svg`} alt={label} ...> so the browser selects one
asset by default, and keep the existing CSS/theme classes or data-theme toggle
logic to handle in-page theme switching; ensure width/height/decoding attributes
from the original <img> are preserved on the fallback <img> and that slug and
label are used unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/BrandLockup.astro`:
- Line 14: In the BrandLockup component the computed label (const label) is
applied to both SVG/img variants when decorative is false, causing duplicate
announcements; update the rendering so only the visually primary image receives
the non-empty alt (use the existing label), while the hidden variant always has
alt="" and aria-hidden="true" (keep decorative behavior unchanged when
decorative is true), adjusting the logic around the label variable and the two
<img>/<svg> elements referenced in BrandLockup to apply the empty-alt +
aria-hidden to the hidden variant (also apply the same change where those images
are rendered on the other occurrences noted).

---

Nitpick comments:
In `@src/components/BrandLockup.astro`:
- Around line 21-36: BrandLockup currently renders two <img> tags (classes
brand-lockup__img--light and --dark) which causes both SVGs to be fetched;
change rendering to use a <picture> element with a <source
media="(prefers-color-scheme: dark)" srcset={`/assets/${slug}-lockup-dark.svg`}
and a fallback <img src={`/assets/${slug}-lockup.svg`} alt={label} ...> so the
browser selects one asset by default, and keep the existing CSS/theme classes or
data-theme toggle logic to handle in-page theme switching; ensure
width/height/decoding attributes from the original <img> are preserved on the
fallback <img> and that slug and label are used unchanged.

In `@src/styles/global.css`:
- Around line 130-140: Update the .visually-hidden rule to remove the deprecated
clip usage and use the modern clip-path instead: replace the deprecated "clip:
rect(0, 0, 0, 0)" with "clip-path: inset(50%)" (you may optionally keep the old
clip declaration before clip-path for older engines, but ensure clip-path is
present and takes precedence); keep the rest of the properties in the
.visually-hidden selector unchanged so accessibility behavior remains intact.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9279dd29-516d-4515-a64c-b4b96fd95cb5

📥 Commits

Reviewing files that changed from the base of the PR and between d3008fb and 38456d5.

⛔ Files ignored due to path filters (8)
  • public/assets/git-fire-icon-dark.svg is excluded by !**/*.svg
  • public/assets/git-fire-icon.svg is excluded by !**/*.svg
  • public/assets/git-fire-lockup-dark.svg is excluded by !**/*.svg
  • public/assets/git-fire-lockup.svg is excluded by !**/*.svg
  • public/assets/git-rain-icon-dark.svg is excluded by !**/*.svg
  • public/assets/git-rain-icon.svg is excluded by !**/*.svg
  • public/assets/git-rain-lockup-dark.svg is excluded by !**/*.svg
  • public/assets/git-rain-lockup.svg is excluded by !**/*.svg
📒 Files selected for processing (9)
  • .gitignore
  • src/components/BrandLockup.astro
  • src/components/LayoutA.astro
  • src/components/LayoutB.astro
  • src/components/LayoutC.astro
  • src/components/LayoutCurrent.astro
  • src/layouts/BaseLayout.astro
  • src/scripts/install-pickers.ts
  • src/styles/global.css

Comment thread src/components/BrandLockup.astro
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Zero-length commit stem line renders nothing in rain lockups
    • The stem line now runs from the merge point (y=61.5) to the commit center (y=68) and is drawn after the node circle so it remains visible.

You can send follow-ups to the cloud agent here.

Reviewed by Cursor Bugbot for commit 38456d5. Configure here.

Comment thread public/assets/git-rain-lockup.svg Outdated
cursoragent and others added 4 commits April 16, 2026 23:16
Extend the merge-point stem to the commit node center and paint the
stem after the node circle so the segment is not fully covered.
Scale up sm/md/lg wordmarks, add soft brand-tinted plates in hero cards,
accent underlines on section and feature-row headings, and header glow
matched to featured product.

Made-with: Cursor
Scale header and feature/rich copy wordmarks; add fire/rain top bands for
section--rich (layout C). Rain-featured pages use a rain-only hero bleed.
US spelling: behaviour -> behavior in shared layout copy.
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
src/styles/global.css (2)

140-150: Replace deprecated clip with clip-path in .visually-hidden.

Stylelint flags clip as deprecated (property-no-deprecated). Modern visually-hidden patterns use clip-path: inset(50%) instead.

♻️ Proposed fix
 .visually-hidden {
 	position: absolute;
 	width: 1px;
 	height: 1px;
 	padding: 0;
 	margin: -1px;
 	overflow: hidden;
-	clip: rect(0, 0, 0, 0);
+	clip-path: inset(50%);
 	white-space: nowrap;
 	border-width: 0;
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/styles/global.css` around lines 140 - 150, The .visually-hidden rule uses
the deprecated clip property; update the declaration in the .visually-hidden
selector to remove clip: rect(0, 0, 0, 0) and use a modern equivalent such as
clip-path: inset(50%) (and keep the existing position/size/overflow rules
intact); ensure the selector .visually-hidden is edited so stylelint no longer
flags property-no-deprecated while preserving the intended visually-hidden
behavior.

184-219: Both light and dark lockup SVGs are always downloaded.

Toggling visibility via display: none on <img> elements still triggers a network fetch for both *-lockup.svg and *-lockup-dark.svg on every page (header lockup + each layout’s lockups → ~6+ extra requests). Consider one of:

  • Render only the active variant via a small inline-script/SSR check, or
  • Use a single SVG that adapts via CSS custom properties / currentColor and prefers-color-scheme, or
  • Use <picture> with media="(prefers-color-scheme: dark)" so the browser only fetches the matching source (note: this won’t respect the manual data-theme toggle without JS swapping srcset).

Not a blocker for static SVGs that gzip well, but worth flagging since the assets are duplicated everywhere BrandLockup appears.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/styles/global.css` around lines 184 - 219, Both SVG variants are always
fetched because using display:none on <img> doesn’t prevent network requests;
update the BrandLockup rendering to only deliver one source to the browser.
Replace the paired <img class="brand-lockup__img--light"> and <img
class="brand-lockup__img--dark"> with a <picture> containing <source
media="(prefers-color-scheme: dark)" srcset="...-dark.svg"> and a default <img
class="brand-lockup__img" src="...-light.svg"> so the browser only downloads the
matching file, and additionally wire the component (BrandLockup) to respect
manual theme toggles by updating the picture's srcset via the existing theme
toggle handler (or SSR/render server-side the correct src when data-theme is
known) so data-theme changes set the correct srcset instead of toggling display.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/styles/global.css`:
- Around line 140-150: The .visually-hidden rule uses the deprecated clip
property; update the declaration in the .visually-hidden selector to remove
clip: rect(0, 0, 0, 0) and use a modern equivalent such as clip-path: inset(50%)
(and keep the existing position/size/overflow rules intact); ensure the selector
.visually-hidden is edited so stylelint no longer flags property-no-deprecated
while preserving the intended visually-hidden behavior.
- Around line 184-219: Both SVG variants are always fetched because using
display:none on <img> doesn’t prevent network requests; update the BrandLockup
rendering to only deliver one source to the browser. Replace the paired <img
class="brand-lockup__img--light"> and <img class="brand-lockup__img--dark"> with
a <picture> containing <source media="(prefers-color-scheme: dark)"
srcset="...-dark.svg"> and a default <img class="brand-lockup__img"
src="...-light.svg"> so the browser only downloads the matching file, and
additionally wire the component (BrandLockup) to respect manual theme toggles by
updating the picture's srcset via the existing theme toggle handler (or
SSR/render server-side the correct src when data-theme is known) so data-theme
changes set the correct srcset instead of toggling display.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dc07a5b9-83d6-41c8-8a75-d35bda83b792

📥 Commits

Reviewing files that changed from the base of the PR and between 38456d5 and 9368fe9.

⛔ Files ignored due to path filters (2)
  • public/assets/git-rain-lockup-dark.svg is excluded by !**/*.svg
  • public/assets/git-rain-lockup.svg is excluded by !**/*.svg
📒 Files selected for processing (5)
  • src/components/LayoutA.astro
  • src/components/LayoutB.astro
  • src/components/LayoutC.astro
  • src/components/LayoutCurrent.astro
  • src/styles/global.css
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/components/LayoutB.astro
  • src/components/LayoutC.astro
  • src/components/LayoutCurrent.astro

BrandLockup: single aria-label on wrapper when not decorative; empty img
alts. Rain lockups: draw stem segment above commit node (Bugbot). Replace
deprecated clip with clip-path for .visually-hidden (CodeRabbit).
@bschellenberger2600
Copy link
Copy Markdown
Member Author

Follow-up from latest CodeRabbit review (2841964 on the PR head)

  • .visually-hidden: Addressed — replaced deprecated clip: rect(0,0,0,0) with clip-path: inset(50%) in src/styles/global.css.
  • Dual <img> fetch (light + dark lockups): Deferred — avoiding both requests while still honoring manual data-theme (not only prefers-color-scheme) needs either client-side src swapping or a different asset strategy; the SVGs are small and cacheable, so keeping the current CSS swap for this PR.
  • Docstring coverage warning: Deferred — not applicable to this Astro/CSS/markup change set; no new TS functions were added that warrant docstrings here.

@bschellenberger2600 bschellenberger2600 merged commit d92bd7c into main Apr 17, 2026
4 checks passed
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