diff --git a/.gitignore b/.gitignore
index 397a0bd..af73f29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,9 @@ dist/
.dev.vars*
!.dev.vars.example
!.env.example
+
+# Windows alternate data stream metadata
+*Zone.Identifier
+
+# Brand SVGs live in public/assets only (avoid duplicating repo-root staging)
+/assets/
diff --git a/public/assets/git-fire-icon-dark.svg b/public/assets/git-fire-icon-dark.svg
new file mode 100644
index 0000000..691087c
--- /dev/null
+++ b/public/assets/git-fire-icon-dark.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/assets/git-fire-icon.svg b/public/assets/git-fire-icon.svg
new file mode 100644
index 0000000..bd4aa94
--- /dev/null
+++ b/public/assets/git-fire-icon.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/assets/git-fire-lockup-dark.svg b/public/assets/git-fire-lockup-dark.svg
new file mode 100644
index 0000000..d5cdd53
--- /dev/null
+++ b/public/assets/git-fire-lockup-dark.svg
@@ -0,0 +1,22 @@
+
diff --git a/public/assets/git-fire-lockup.svg b/public/assets/git-fire-lockup.svg
new file mode 100644
index 0000000..5497612
--- /dev/null
+++ b/public/assets/git-fire-lockup.svg
@@ -0,0 +1,22 @@
+
diff --git a/public/assets/git-rain-icon-dark.svg b/public/assets/git-rain-icon-dark.svg
new file mode 100644
index 0000000..d58ef7f
--- /dev/null
+++ b/public/assets/git-rain-icon-dark.svg
@@ -0,0 +1,54 @@
+
diff --git a/public/assets/git-rain-icon.svg b/public/assets/git-rain-icon.svg
new file mode 100644
index 0000000..807dc80
--- /dev/null
+++ b/public/assets/git-rain-icon.svg
@@ -0,0 +1,54 @@
+
diff --git a/public/assets/git-rain-lockup-dark.svg b/public/assets/git-rain-lockup-dark.svg
new file mode 100644
index 0000000..de9bb85
--- /dev/null
+++ b/public/assets/git-rain-lockup-dark.svg
@@ -0,0 +1,67 @@
+
diff --git a/public/assets/git-rain-lockup.svg b/public/assets/git-rain-lockup.svg
new file mode 100644
index 0000000..fdba47d
--- /dev/null
+++ b/public/assets/git-rain-lockup.svg
@@ -0,0 +1,67 @@
+
diff --git a/src/components/BrandLockup.astro b/src/components/BrandLockup.astro
new file mode 100644
index 0000000..50d34d0
--- /dev/null
+++ b/src/components/BrandLockup.astro
@@ -0,0 +1,39 @@
+---
+/**
+ * Wordmark SVGs live in /public/assets — light and dark art swap with theme.
+ */
+interface Props {
+ product: 'fire' | 'rain';
+ size?: 'sm' | 'md' | 'lg';
+ decorative?: boolean;
+ class?: string;
+}
+
+const { product, size = 'md', decorative = true, class: className } = Astro.props;
+const slug = product === 'fire' ? 'git-fire' : 'git-rain';
+const label = decorative ? '' : product === 'fire' ? 'git-fire' : 'git-rain';
+---
+
+
+
+
+
diff --git a/src/components/LayoutA.astro b/src/components/LayoutA.astro
index 34202b8..286f98c 100644
--- a/src/components/LayoutA.astro
+++ b/src/components/LayoutA.astro
@@ -4,6 +4,7 @@
* Feature bullets live inside the hero cards; no separate fire/rain detail sections.
* Card IDs serve as nav anchor targets.
*/
+import BrandLockup from './BrandLockup.astro';
import InstallPicker from './InstallPicker.astro';
interface Props { featured: 'fire' | 'rain'; }
const { featured } = Astro.props;
@@ -23,6 +24,7 @@ const { featured } = Astro.props;
Multi-repo checkpoint: discover, auto-commit optional, push backup branches with dry-run @@ -39,6 +41,7 @@ const { featured } = Astro.props;
Reverse sync: fetch and fast-forward where safe, skip risky rewrites by default, optional @@ -63,7 +66,7 @@ const { featured } = Astro.props;
Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs - prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on + prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on the roadmap per the upstream project.
Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry
@@ -45,6 +47,7 @@ const { featured } = Astro.props;
Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes,
@@ -71,7 +74,7 @@ const { featured } = Astro.props;
Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs
- prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on
+ prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on
the roadmap per the upstream project.
Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry
@@ -45,6 +47,7 @@ const { featured } = Astro.props;
Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes,
@@ -71,7 +74,7 @@ const { featured } = Astro.props;
Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs
- prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on
+ prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on
the roadmap per the upstream project.
Multi-repo checkpoint: discover, auto-commit optional, push backup branches with dry-run
@@ -29,6 +31,7 @@ const { featured } = Astro.props;
Reverse sync: fetch and fast-forward where safe, skip risky rewrites by default, optional
@@ -45,6 +48,7 @@ const { featured } = Astro.props;
Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry
@@ -60,6 +64,7 @@ const { featured } = Astro.props;
Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes,
@@ -79,7 +84,7 @@ const { featured } = Astro.props;
Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs
- prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on
+ prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on
the roadmap per the upstream project.
git-rain
git-testkit
git-fire
git-rain
git-testkit
git-fire
git-rain
git-fire
git-rain
git-testkit