Skip to content

feat: update landing page to add blog and better understanding - #40

Merged
aspectrr merged 2 commits into
mainfrom
aspectrr/landing-page-refresh
Feb 8, 2026
Merged

feat: update landing page to add blog and better understanding#40
aspectrr merged 2 commits into
mainfrom
aspectrr/landing-page-refresh

Conversation

@aspectrr

@aspectrr aspectrr commented Feb 7, 2026

Copy link
Copy Markdown
Owner

Description

  • added blog
  • updated styling and added better descriptions

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Code style update (formatting, renaming)
  • Code refactor (no functional changes)
  • Configuration change
  • Test update

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works

Release Notes

Labels

Copilot AI review requested due to automatic review settings February 7, 2026 23:55
@claude

claude Bot commented Feb 7, 2026

Copy link
Copy Markdown

Code Review - PR #40: Blog Addition and Styling Updates

Summary

This PR adds a blog feature with an initial post and updates the site styling. The implementation uses Astro content collections with MDX support and follows the terminal-inspired design system well. However, there are some critical issues that should be addressed before merging.


🔴 Critical Issues

1. Personal Information Exposure (SECURITY/PRIVACY)

File: landing-page/src/content/blog/introducing-fluid.mdx (Lines 6-9)

authorEmail: "cpfeifer@madcactus.org"
authorPhone: "+3179955114"
authorDiscord: "https://discordapp.com/users/301068417685913600"

Issue: Personal contact information (phone, email, Discord ID) is exposed in a public repository and will be indexed by search engines. This can lead to:

  • Phone spam and unwanted calls
  • Email harvesting
  • Potential harassment via Discord

Recommendation:

  • Remove personal contact info from frontmatter
  • Use a contact form or environment variables if contact info is needed
  • OR clearly document that this public exposure is intentional

🟡 Should Fix Before Merge

2. Author Image Path Inconsistency

Files:

  • landing-page/src/content/blog/introducing-fluid.mdx (Line 6)
  • landing-page/src/pages/blog/index.astro (Line 76)
  • landing-page/src/pages/blog/[...slug].astro (Line 47)

Issue: The frontmatter uses authorImage: "../images/skeleton_smoking_cigarette.jpg" but this relative path doesn't resolve correctly. The blog index and individual post pages handle this inconsistently:

  • Blog index uses: .split("/").pop() workaround
  • Individual post uses the path directly (which will be broken)

Fix:
Change the frontmatter to use the correct public path, then remove the workarounds.


3. Link Formatting Issue

File: landing-page/src/content/blog/introducing-fluid.mdx (Line 56)

Issue:

  • Link text [text] is unclear - should be [phone] or [call]
  • Missing comma after [email] link

4. Avoid !important in Styles

File: landing-page/src/pages/blog/index.astro (Line 100)

Issue: Using !important is a code smell and makes styles harder to maintain.

Better approach: Add a class to the link or use more specific selectors.


🟢 Strengths

  • Excellent design system adherence - All components follow the terminal-inspired theme with proper colors, borders, and hover states
  • Clean architecture - Proper use of Astro content collections with MDX
  • Responsive design - Mobile-first approach with proper breakpoints
  • Custom prose styles - Well-implemented terminal aesthetic for blog content
  • Good navigation UX - "$ cd .." back button is very on-brand
  • Security basics covered - External links use proper rel="noopener noreferrer"

💡 Additional Suggestions

5. Extract repeated logic to utility function
The author image path transformation is duplicated - consider extracting it.

6. Accessibility: Heading pseudo-content
The markdown-style prefixes (##, ###) in heading ::before pseudo-elements will be read by screen readers. Consider adding speak: never.

7. Performance: Add image dimensions
Prevent layout shift by adding explicit width/height attributes.

8. Content improvements:

  • Maintain consistent voice (the blog post switches between product description and first-person "I" perspective)
  • Break up long paragraphs into smaller, scannable sections
  • Consider using clearer terminology than "terminal agent"

Test Coverage

Per landing-page/AGENTS.md, this is a marketing site without automated test requirements. However, please manually verify:

  • Blog index renders correctly
  • Blog post page displays properly
  • YouTube embed loads
  • Author image displays on both index and post pages
  • Navigation links work
  • Mobile responsive layout functions correctly

Verdict

REQUEST CHANGES - Please address the critical personal information exposure issue and fix the author image path inconsistencies before merging. The other suggestions would improve code quality but are not blockers.

The blog implementation is well-structured and follows the project's design system excellently. Once the issues above are addressed, this will be a solid addition to the landing page.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 updates the Astro landing page to add a Blog entry point and refresh the homepage content/styling to better explain Fluid’s workflow and installation options.

Changes:

  • Add a new /blog index page that lists posts from the blog content collection.
  • Refresh the landing page copy and UI (installation tabs + updated descriptions).
  • Add a Blog link in the shared footer and update the introductory blog post content.

Reviewed changes

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

Show a summary per file
File Description
landing-page/src/pages/index.astro Updates homepage layout/copy and adds install tab UI + client-side interactions.
landing-page/src/pages/blog/index.astro New blog listing route backed by astro:content collection.
landing-page/src/layouts/BaseLayout.astro Adds /blog link to the global footer nav.
landing-page/src/content/blog/introducing-fluid.mdx Expands/updates the “Introducing Fluid” post messaging.
landing-page/package.json Adds prettier-plugin-astro dependency.
landing-page/bun.lock Lockfile update to include the new Prettier plugin and transitive deps.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +181 to +210
<script>
// Tab switching
const tabs =
document.querySelectorAll<HTMLButtonElement>(".install-tab");
const panels =
document.querySelectorAll<HTMLElement>(".install-panel");

tabs.forEach((tab) => {
tab.addEventListener("click", () => {
const target = tab.dataset.tab;

// Update tab styles
tabs.forEach((t) => {
t.classList.remove("text-blue-400", "border-blue-400");
t.classList.add("text-neutral-500", "border-transparent");
});
tab.classList.remove("text-neutral-500", "border-transparent");
tab.classList.add("text-blue-400", "border-blue-400");

// Show matching panel
panels.forEach((p) => p.classList.add("hidden"));
const activePanel = document.getElementById(`panel-${target}`);
if (activePanel) activePanel.classList.remove("hidden");
});
});

// Copy buttons
document
.querySelectorAll<HTMLButtonElement>(".copy-btn")
.forEach((btn) => {

Copilot AI Feb 8, 2026

Copy link

Choose a reason for hiding this comment

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

AGENTS.md (landing-page/AGENTS.md:165-167) calls for “vanilla JS” in component <script> tags; this script uses TypeScript-only generic annotations (e.g., querySelectorAll(...)), which deviates from that guideline and may rely on TS transpilation. Consider removing the generic annotations (or switching to JSDoc typing), or explicitly marking/bundling the script as TypeScript if that’s the intent.

Copilot uses AI. Check for mistakes.
Comment on lines +265 to +271
<script>
// Workflow animation
function initWorkflowAnimation() {
const steps =
document.querySelectorAll<HTMLElement>(".workflow-step");
const progress = document.getElementById("workflow-progress");
const workflowStep = document.querySelector(".workflow-step");

Copilot AI Feb 8, 2026

Copy link

Choose a reason for hiding this comment

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

AGENTS.md (landing-page/AGENTS.md:165-167) suggests using vanilla JS in <script> tags; this inline script also uses TypeScript generic annotations in DOM queries (querySelectorAll(...)). Consider removing these TS-only annotations or moving the logic into a typed module (JSDoc/TS) so the client script stays consistent with the documented approach.

Copilot uses AI. Check for mistakes.
Comment thread landing-page/package.json
Comment on lines +97 to +102

<style>
a {
text-decoration: none !important;
}
</style>

Copilot AI Feb 8, 2026

Copy link

Choose a reason for hiding this comment

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

This page-level style disables underlines for every on the blog index (including header/footer links) and uses !important, which makes future styling changes harder. Consider scoping the rule to just the post cards (e.g., a class selector) or relying on the existing Tailwind no-underline/hover:no-underline utilities.

Suggested change
<style>
a {
text-decoration: none !important;
}
</style>

Copilot uses AI. Check for mistakes.
@aspectrr
aspectrr merged commit ae0298f into main Feb 8, 2026
5 of 7 checks passed
@claude

claude Bot commented Feb 8, 2026

Copy link
Copy Markdown

Code Review - PR #40

Thanks for the substantial improvements to the landing page! The blog feature and enhanced content significantly improve clarity. However, there are several issues that need to be addressed before merging.


🔴 Critical Issues

1. PII Exposure in Blog Metadata

File: landing-page/src/content/blog/changelog-v0.1.1.md

The changelog post exposes sensitive personal information in the frontmatter:

  • Phone number: +3179955114
  • Personal email: cpfeifer@madcactus.org
  • Discord user ID: 301068417685913600

Action Required: Remove or replace with business/project contact info before merging. Even if these are not rendered publicly, they will remain in git history.


🟡 Medium Priority Issues

2. Image Path Handling - Potential Runtime Error

File: landing-page/src/pages/blog/index.astro:76

Issues:

  • Assumes specific path structure; fragile parsing logic
  • No error handling if image does not exist or path is malformed
  • Bypasses Astro image optimization

3. Missing Image Assets

File: landing-page/src/content/blog/changelog-v0.1.1.md:67-71

References images that are not included in this PR:

  • ../../../../edit_mode.png
  • ../../../../read_only_mode.png
  • ../images/skeleton_smoking_cigarette.jpg

Action Required: Add these images to the PR or remove the references.


🟢 Minor Issues

4. Missing Test Coverage

Per CLAUDE.md: "Every code change needs tests."

Missing tests for:

  • Tab switching functionality
  • Copy-to-clipboard button with multiple commands
  • Blog post rendering
  • Author metadata display logic

5. Type Safety - Optional Chaining

Should use optional chaining since authorImage may be undefined in landing-page/src/pages/blog/index.astro:76


✅ What is Good

  1. Excellent content improvements - The 4-phase workflow clearly communicates value
  2. Professional blog implementation - Proper use of Astro content collections, SSG routing
  3. Design system consistency - Terminal-inspired theme, proper color usage
  4. Accessibility considerations - Semantic HTML, proper alt text
  5. Tabbed installation UI - Nice UX improvement

📋 Action Items

Before merging:

  • Remove PII from changelog frontmatter
  • Add missing image assets OR remove references
  • Fix image path handling with validation
  • Add test coverage for new features
  • Document why go install is now primary method

Summary

This PR makes significant improvements to landing page clarity and adds a well-implemented blog feature. The main blocker is the PII exposure - please address immediately.

Overall verdict: ⚠️ Changes requested - Address PII issue and add tests before merging.

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