Skip to content

Feat/new realese update - #5

Merged
DoniLite merged 2 commits into
masterfrom
feat/new-realese-update
May 1, 2026
Merged

Feat/new realese update#5
DoniLite merged 2 commits into
masterfrom
feat/new-realese-update

Conversation

@DoniLite

@DoniLite DoniLite commented May 1, 2026

Copy link
Copy Markdown
Owner

Summary by Sourcery

Integrate Tailwind v4 into the marketing site, centralize design tokens for both marketing and docs, and refresh the marketing layout and docs landing content to align with the new design system.

New Features:

  • Expose design tokens via Tailwind v4 @theme in tokens.css so marketing components can use utility classes and a custom dark variant tied to the data-theme attribute.
  • Add a prebuild script to rasterize the SVG Open Graph image to PNG and publish install scripts at the site root for easier distribution.

Enhancements:

  • Refactor the marketing layout (hero, header, footer, feature grid, workflow, theme showcase, architecture diagram) to use Tailwind utility classes, new logo asset, and updated visual styling.
  • Bridge design tokens into Starlight and Expressive Code so docs typography, code blocks, and theme colors share the same token system as the marketing site.
  • Scope global marketing styles under a dedicated body class to avoid interfering with Starlight docs typography and theme behavior.
  • Document the Tailwind v4 setup, token-to-utility mapping, and migration guidance in DESIGN.md, including dark-mode behavior and best practices.
  • Improve sitemap generation with custom priorities, lastmod timestamps, and filtering of the 404 page.
  • Refresh docs content on the index, installation, and troubleshooting pages with clearer messaging, admonitions, and additional navigation links.

Build:

  • Update Astro config to wire Tailwind v4 via @tailwindcss/vite and switch the OG image reference from SVG to PNG.
  • Extend the site build pipeline to run the Open Graph rasterization and install-script copy step before Astro build, and add Tailwind-related and Starlight Tailwind dependencies to package.json.

…nd improve layout

- Updated SiteFooter.astro to use a dynamic logo import and reorganized footer links into a structured format.
- Enhanced styling for footer and header, including responsive design adjustments.
- Replaced image logos with an SVG logo for better scalability and performance.
- Improved accessibility and semantics in navigation links.
- Added a new ThemeShowcase component with a cleaner layout for displaying brand colors.
- Introduced global styles for better consistency across components.
- Added installation documentation for Mailify with multiple installation methods.
- Created a script to generate rasterized Open Graph images for better compatibility with social media platforms.
- Added a new SVG logo asset for branding purposes.
@sourcery-ai

sourcery-ai Bot commented May 1, 2026

Copy link
Copy Markdown

Reviewer's Guide

Integrates Tailwind v4 into the marketing site with a new CSS-first token system, migrates key marketing components to Tailwind utility classes while preserving legacy CSS variable aliases, tightens global vs docs styling boundaries, improves docs copy/structure, adds an OG image generation/build step, and enhances Astro/Starlight configuration (ExpressiveCode, sitemap) and branding assets.

Flow diagram for marketing vs docs styling boundaries

flowchart TB
  root_html["<html> :root\nTokens, colors, fonts"]
  body_marketing["<body class='marketing'>\nMarketing pages"]
  body_docs["<body> (no marketing class)\nStarlight docs"]

  global_css["global.css\n- box-sizing, fonts\n- focus-visible\n- selection\n- prefers-reduced-motion"]
  marketing_scope["global.css (.marketing ...)\n- heading styles\n- link styles\n- code inline badges\n- buttons .btn-*\n- .skip-link"]

  starlight_styles["Starlight core CSS\n(scoped reset + docs typography)"]
  tokens_css["tokens.css\n@theme + CSS vars"]

  marketing_components["Marketing components\n(Hero, FeatureGrid, SiteHeader, SiteFooter, etc.)\n- Tailwind utilities\n- var(--color-*) where needed"]
  docs_pages["Docs pages\n(index.md, installation.md, troubleshooting, ...)"]

  root_html --> tokens_css
  root_html --> global_css

  global_css --> body_marketing
  global_css --> body_docs

  body_marketing --> marketing_scope
  marketing_scope --> marketing_components

  body_docs --> starlight_styles
  starlight_styles --> docs_pages

  tokens_css --> marketing_components
  tokens_css --> starlight_styles
Loading

File-Level Changes

Change Details Files
Introduce Tailwind v4 with CSS-first theme tokens and dark-mode support, exposing them as utilities while preserving legacy aliases.
  • Replace legacy :root token block in tokens.css with Tailwind v4 wiring using @layer, @import 'tailwindcss/theme.css' and 'tailwindcss/utilities.css', and @theme token declarations.
  • Define color-, typography-, spacing-, radius-, shadow-, container-, and breakpoint-level tokens under @theme and expose semantic light-mode aliases on :root plus dark-mode overrides on :root[data-theme='dark'].
  • Add @variant dark bound to [data-theme='dark'] to keep Tailwind dark: utilities in sync with Starlight and ThemeToggle.
  • Update Starlight theme bridge variables to map to new --color-* tokens instead of the older short names, keeping legacy short aliases for backward compatibility.
site/src/styles/tokens.css
Refactor key marketing components to use Tailwind utility classes instead of bespoke scoped CSS while keeping layout/visual parity.
  • ThemeShowcase: convert layout, typography, and swatch/mail preview styling to Tailwind classes, introduce a small swatch data array, and remove large scoped <style> block.
  • SiteFooter: switch to a grid/typography layout using Tailwind classes, consume an inline SVG logo asset instead of separate light/dark PNGs, and render link columns from a data structure instead of hard-coded markup.
  • Hero: rewrite hero layout, CTA area, proof bullets, and orb positioning with Tailwind utilities, simplifying the bespoke CSS to only orb color definitions.
  • SiteHeader: implement sticky header, grid layout, navigation visibility breakpoints, and CTA button styling via Tailwind utilities, and swap PNG logo variants for inline SVG with a common .brand-mark style.
  • CodeTabs and FeatureGrid: rebuild panels/cards and headings with Tailwind utilities and remove most custom CSS, keeping only minimal styling where needed.
  • ArchitectureDiagram: convert intro copy and crate-node cards to Tailwind-based layout, leaving a small CSS block to draw connector arrows between nodes.
site/src/components/ThemeShowcase.astro
site/src/components/SiteFooter.astro
site/src/components/Hero.astro
site/src/components/SiteHeader.astro
site/src/components/CodeTabs.astro
site/src/components/FeatureGrid.astro
site/src/components/ArchitectureDiagram.astro
Clarify Tailwind integration and token usage in DESIGN.md with versioned documentation and migration guidance.
  • Add a new section detailing Tailwind v4 wiring, token-to-utility mapping, dark-mode behavior, and recommendations for when to use utilities vs raw CSS vars.
  • Document migration patterns for existing components, do/don't practices (no tailwind.config, no preflight, single source of truth in tokens.css), and recommended migration order.
  • Bump document version to v2, add a changelog, and describe the Tailwind integration changes at a high level.
DESIGN.md
Strengthen separation between global/site-wide styles and marketing-only styles and improve accessibility defaults.
  • Update global.css to distinguish truly global concerns (box-sizing, fonts, reduced motion, selection, focus-visible, base img rules) from marketing-only styling under .marketing.
  • Scope heading, anchor, code pill, skip-link, and shared button styles to .marketing so Starlight docs typography and sidebar colors are not overridden by the marketing theme.
  • Ensure focus-visible styles and prefers-reduced-motion overrides apply globally while reusing the same CSS variables.
  • Wrap MarketingLayout body in class="marketing" and expand OG meta tags (raster image, dimensions, alt) for better social sharing and correct scope of marketing styles.
site/src/styles/global.css
site/src/components/MarketingLayout.astro
Enhance Astro/Starlight configuration with Tailwind, ExpressiveCode theming, sitemap tuning, and branding changes.
  • Enable @tailwindcss/vite as a Vite plugin in astro.config.mjs and adjust Starlight integration to disable the default 404 route.
  • Configure ExpressiveCode themes to align with [data-theme] dark/light modes, pulling fonts/borders from design tokens and styling editor/terminal frames with theme-consistent colors.
  • Switch Starlight logo to a new inline SVG asset and update OG image URL to use the generated PNG card.
  • Customize sitemap generation with weekly changefreq, priority hints (home/docs), 404 filtering, and dynamic lastmod, and wire sitemap integration accordingly.
site/astro.config.mjs
site/src/assets/logo.svg
Improve docs content, structure, and callouts for onboarding, installation, and troubleshooting.
  • Trim redundant top-level headings in docs index and installation pages so Starlight can provide the main H1, tweak bullet copy, and add richer descriptions for quick links.
  • Introduce Starlight callouts (note, caution, tip, danger) around non-goals, planned cargo install path, and critical SMTP error guidance, making docs more scannable and explicit.
  • Add a new “Brand your mail” guide link from the installation page and enhance troubleshooting guidance with suggested RUST_LOG filters and SMTP 550 context.
docs/index.md
docs/getting-started/installation.md
docs/troubleshooting/common-errors.md
Add build-time OG image rasterization and distribution of install scripts to the marketing site, and wire it into the build pipeline.
  • Create scripts/gen-og.mjs to convert public/og-default.svg into a 1200×630 PNG using sharp and copy install.sh/install.ps1 from the repo root into the site's public/ directory.
  • Update site/package.json scripts to run the OG generation script via bun before astro build, and add Tailwind/Starlight-tailwind dependencies alongside tailwindcss/vite.
  • Adjust OG image references in MarketingLayout and astro.config.mjs to use og-default.png, consistent with the new generated asset.
site/scripts/gen-og.mjs
site/package.json
site/public/robots.txt
site/.gitignore
site/bun.lock
site/public/og-default.svg
site/public/og-default.png
site/public/install.sh
site/public/install.ps1

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hey - I've found 3 issues, and left some high level feedback:

  • The build pipeline now mixes node (for prebuild) and bun run prebuild in package.json; consider standardizing on one runtime (e.g., node scripts/gen-og.mjs via npm run/pnpm run) to avoid requiring a globally installed Bun for builds.
  • The OG image URL (https://mailify.donilite.me/og-default.png) is hardcoded in both astro.config.mjs and MarketingLayout.astro; consider centralizing this in a single config/source to avoid them getting out of sync in future changes.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The build pipeline now mixes `node` (for `prebuild`) and `bun run prebuild` in `package.json`; consider standardizing on one runtime (e.g., `node scripts/gen-og.mjs` via `npm run`/`pnpm run`) to avoid requiring a globally installed Bun for builds.
- The OG image URL (`https://mailify.donilite.me/og-default.png`) is hardcoded in both `astro.config.mjs` and `MarketingLayout.astro`; consider centralizing this in a single config/source to avoid them getting out of sync in future changes.

## Individual Comments

### Comment 1
<location path="site/src/components/SiteFooter.astro" line_range="32-33" />
<code_context>
+];
+---
+
+<footer
+  class="border-t border-border bg-linear-to-b from-brand-primary-muted/30 to-bg pb-8 pt-16"
+>
+  <div
</code_context>
<issue_to_address>
**issue (bug_risk):** The `bg-linear-to-b` and `bg-linear-[…]` classes won’t generate Tailwind gradients.

These classes don’t match Tailwind’s gradient utilities, so the gradients won’t render. Use `bg-gradient-to-b` (or another `bg-gradient-*` utility) or an arbitrary value like `bg-[linear-gradient(...)]` instead.

Specifically:
- Footer: change `bg-linear-to-b from-brand-primary-muted/30 to-bg` to `bg-gradient-to-b ...`.
- Feature cards & ArchitectureDiagram highlighted node: replace `bg-linear-[135deg] from-brand-primary to-brand-primary/40` with a valid arbitrary gradient, e.g. `bg-[linear-gradient(135deg,var(--color-brand-primary),color-mix(in_srgb,var(--color-brand-primary)_40%,transparent))]`.

Updating these to valid Tailwind v4 gradient utilities or arbitrary values will make the gradients render correctly.
</issue_to_address>

### Comment 2
<location path="site/src/components/FeatureGrid.astro" line_range="44-45" />
<code_context>
-          <div class="icon" aria-hidden="true"></div>
-          <h3>{feature.title}</h3>
-          <p>{feature.body}</p>
+        <article
+          class="group rounded-lg border border-border bg-paper-raised p-6 transition duration-150 hover:-translate-y-0.5 hover:border-brand-primary/30 hover:shadow-md"
+        >
+          <div
</code_context>
<issue_to_address>
**issue (bug_risk):** Feature card gradient class `bg-linear-[135deg]` is also non-standard for Tailwind.

`bg-linear-[135deg]` isn’t a valid Tailwind class, so no gradient will be generated. If you want a gradient, use either a standard utility (e.g. `bg-gradient-to-br from-brand-primary to-brand-primary/40`) or an arbitrary value such as:

```html
bg-[linear-gradient(135deg,var(--color-brand-primary),color-mix(in_srgb,var(--color-brand-primary)_40%,transparent))]
```
</issue_to_address>

### Comment 3
<location path="site/src/components/SiteFooter.astro" line_range="86-88" />
<code_context>
-    .footer-links {
-      grid-template-columns: repeat(3, minmax(0, 1fr));
-    }
+  .brand-mark :global(svg) {
+    width: 100%;
+    height: 100%;
   }
 </style>
</code_context>
<issue_to_address>
**suggestion:** Repeated `.brand-mark :global(svg)` rules could be centralized to avoid duplication.

The same `.brand-mark :global(svg)` rule appears in both `SiteHeader.astro` and `SiteFooter.astro`. Since the logo and styling are shared, consider moving this to a common stylesheet (e.g. `global.css` under a `.marketing` scope) or a small utility partial to avoid keeping header/footer styles in sync if logo dimensions change later.

Suggested implementation:

```
</style>


```

To fully implement the suggestion and avoid duplication, you should also:
1. Remove the same `.brand-mark :global(svg)` rule from `site/src/components/SiteHeader.astro`.
2. Add a shared rule in a common stylesheet (for example `site/src/styles/global.css` or a marketing-specific stylesheet), something like:
   ```css
   .marketing .brand-mark svg {
     width: 100%;
     height: 100%;
   }
   ```
   or, if you need to stay compatible with Astro's scoping:
   ```css
   .marketing .brand-mark :global(svg) {
     width: 100%;
     height: 100%;
   }
   ```
3. Ensure both `SiteHeader.astro` and `SiteFooter.astro` are wrapped in or otherwise rendered within the `.marketing` scope (or whatever shared scope you choose) so the centralized rule applies to both.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +32 to +33
<footer
class="border-t border-border bg-linear-to-b from-brand-primary-muted/30 to-bg pb-8 pt-16"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

issue (bug_risk): The bg-linear-to-b and bg-linear-[…] classes won’t generate Tailwind gradients.

These classes don’t match Tailwind’s gradient utilities, so the gradients won’t render. Use bg-gradient-to-b (or another bg-gradient-* utility) or an arbitrary value like bg-[linear-gradient(...)] instead.

Specifically:

  • Footer: change bg-linear-to-b from-brand-primary-muted/30 to-bg to bg-gradient-to-b ....
  • Feature cards & ArchitectureDiagram highlighted node: replace bg-linear-[135deg] from-brand-primary to-brand-primary/40 with a valid arbitrary gradient, e.g. bg-[linear-gradient(135deg,var(--color-brand-primary),color-mix(in_srgb,var(--color-brand-primary)_40%,transparent))].

Updating these to valid Tailwind v4 gradient utilities or arbitrary values will make the gradients render correctly.

Comment on lines +44 to +45
<article
class="group rounded-lg border border-border bg-paper-raised p-6 transition duration-150 hover:-translate-y-0.5 hover:border-brand-primary/30 hover:shadow-md"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

issue (bug_risk): Feature card gradient class bg-linear-[135deg] is also non-standard for Tailwind.

bg-linear-[135deg] isn’t a valid Tailwind class, so no gradient will be generated. If you want a gradient, use either a standard utility (e.g. bg-gradient-to-br from-brand-primary to-brand-primary/40) or an arbitrary value such as:

bg-[linear-gradient(135deg,var(--color-brand-primary),color-mix(in_srgb,var(--color-brand-primary)_40%,transparent))]

Comment on lines +86 to +88
.brand-mark :global(svg) {
width: 100%;
height: 100%;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

suggestion: Repeated .brand-mark :global(svg) rules could be centralized to avoid duplication.

The same .brand-mark :global(svg) rule appears in both SiteHeader.astro and SiteFooter.astro. Since the logo and styling are shared, consider moving this to a common stylesheet (e.g. global.css under a .marketing scope) or a small utility partial to avoid keeping header/footer styles in sync if logo dimensions change later.

Suggested implementation:

</style>


To fully implement the suggestion and avoid duplication, you should also:

  1. Remove the same .brand-mark :global(svg) rule from site/src/components/SiteHeader.astro.
  2. Add a shared rule in a common stylesheet (for example site/src/styles/global.css or a marketing-specific stylesheet), something like:
    .marketing .brand-mark svg {
      width: 100%;
      height: 100%;
    }
    or, if you need to stay compatible with Astro's scoping:
    .marketing .brand-mark :global(svg) {
      width: 100%;
      height: 100%;
    }
  3. Ensure both SiteHeader.astro and SiteFooter.astro are wrapped in or otherwise rendered within the .marketing scope (or whatever shared scope you choose) so the centralized rule applies to both.

@DoniLite
DoniLite merged commit 8114a18 into master May 1, 2026
7 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.

1 participant