Skip to content

feat: npmx 0.8 release blog post#2422

Merged
patak-cat merged 27 commits intomainfrom
feat/npmx-0-8-blog-post
Apr 8, 2026
Merged

feat: npmx 0.8 release blog post#2422
patak-cat merged 27 commits intomainfrom
feat/npmx-0-8-blog-post

Conversation

@patak-cat
Copy link
Copy Markdown
Contributor

🧭 Context

0.8 release

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
npmx.dev Ready Ready Preview, Comment Apr 8, 2026 9:07pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
docs.npmx.dev Ignored Ignored Preview Apr 8, 2026 9:07pm
npmx-lunaria Ignored Ignored Apr 8, 2026 9:07pm

Request Review

@patak-cat patak-cat changed the title feat: relase/0.8 blog post feat: npmx 0.8 release blog post Apr 8, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 8, 2026

Codecov Report

❌ Patch coverage is 66.66667% with 3 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
app/components/global/BlueskyPostEmbed.client.vue 40.00% 3 Missing ⚠️

📢 Thoughts on this report? Let us know!

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 8, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Added a new release blog page at app/pages/blog/release/0.8.md with YAML frontmatter and full release content for npmx 0.8 (includes command palette, SemVer/range matching notes on package pages, conference/keynote acknowledgements, multiple Bluesky embeds, a homepage “Noodles!” easter‑egg, links to build.npmx.dev, and several TODO placeholders for demos/images). Updated app/components/global/BlueskyPostEmbed.client.vue to accept post.embed.external (new external structure with uri, optional title, description, thumb), render an external thumbnail/title/description when present, and add my-4 to the root anchor's class list.

Possibly related PRs

Suggested reviewers

  • alexdln
  • whitep4nth3r
🚥 Pre-merge checks | ✅ 1
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description is directly related to the changeset, which includes release documentation for version 0.8 and component updates supporting that release.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/npmx-0-8-blog-post

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.

Copy link
Copy Markdown
Contributor

@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: 4

🧹 Nitpick comments (1)
app/pages/blog/release/0.8.md (1)

57-63: Consider clarifying what "noodles" refers to.

The section introduces "noodles" but doesn't clearly explain what it is. Readers may be confused about whether it's a feature, a campaign, or something else. Consider adding a brief explanation or rephrasing to make it clearer (e.g., "we decided to launch a new easter egg called 'noodles'" or similar).


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a28ea76f-07e7-4e2e-95bf-d27f4a961cd2

📥 Commits

Reviewing files that changed from the base of the PR and between ed72177 and 2cf9c07.

📒 Files selected for processing (1)
  • app/pages/blog/release/0.8.md

Copy link
Copy Markdown
Contributor

@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: 2

♻️ Duplicate comments (2)
app/pages/blog/release/0.8.md (2)

15-15: ⚠️ Potential issue | 🟠 Major

Do not publish with unresolved placeholders while draft: false.

With draft: false on Line 15, the TODO/placeholder content on Lines 26, 37, 43, 55, and 67 will ship as-is. Either complete these sections or switch back to draft before merge.

📝 Minimal safety fix
-draft: false
+draft: true

Also applies to: 26-26, 37-37, 43-43, 55-55, 67-67


53-53: ⚠️ Potential issue | 🟡 Minor

Fix the remaining grammar issues in user-facing copy.

  • Line 53: “to thanks” → “to thank”
  • Line 71: missing “in” and redundant “about”
📝 Proposed fix
-There is a lot to unpack, a lot of potential for collaborating with other atproto projects on shared lexicons and cross-linking between our websites. We’d like to thanks the organizers and the community at large once more for the warm welcome, and for inviting us to present npmx in one of the keynotes:
+There is a lot to unpack, a lot of potential for collaborating with other atproto projects on shared lexicons and cross-linking between our websites. We’d like to thank the organisers and the community at large once more for the warm welcome, and for inviting us to present npmx in one of the keynotes:
-We were also featured the latest Igalia Chats episode discussing about the history of npmx, the community, our ideas regarding funding, and more.
+We were also featured in the latest Igalia Chats episode discussing the history of npmx, the community, our ideas regarding funding, and more.

Also applies to: 71-71


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9e7e0e40-74cd-4825-ba04-01ec33fd3025

📥 Commits

Reviewing files that changed from the base of the PR and between 2cf9c07 and 805bc5d.

📒 Files selected for processing (2)
  • app/components/global/BlueskyPostEmbed.client.vue
  • app/pages/blog/release/0.8.md

Copy link
Copy Markdown
Contributor

@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 (1)
app/components/global/BlueskyPostEmbed.client.vue (1)

29-40: Consider aligning with the shared CommentEmbed type definition.

The component defines its own EmbedExternal interface locally, but there's already a canonical type in shared/types/blog-post.ts that uses app.bsky.embed.external.ViewExternal. While the current implementation works, importing from the shared types would ensure consistency and prevent type drift if the API schema evolves.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5fe72bd2-457e-46df-9145-c4647ed5fc62

📥 Commits

Reviewing files that changed from the base of the PR and between 805bc5d and 931c6e9.

📒 Files selected for processing (1)
  • app/components/global/BlueskyPostEmbed.client.vue

patak-cat and others added 2 commits April 8, 2026 19:51
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@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.

♻️ Duplicate comments (2)
app/pages/blog/release/0.8.md (2)

15-15: ⚠️ Potential issue | 🟠 Major

Resolve TODO placeholders before publishing this post.

With draft: false, these placeholders will go live as-is. Please replace all TODOs (or hold publication until they’re complete).

📝 Suggested edit pattern
- TODO: demo
+![Command palette demo](<final-image-or-gif-url>)

- TODO: command palette
+![Command palette search fallback](<final-image-or-gif-url>)

- TODO: second image
+![SemVer range matching example](<final-image-or-gif-url>)

-[ keynote video: youtube or streamplace ].
+[Keynote video](https://<final-video-url>).

Based on learnings, if you temporarily switch to draft while finishing content, keep in mind coordinated external links may be intentionally unpublished until launch.

Also applies to: 26-26, 37-37, 43-43, 55-55


67-67: ⚠️ Potential issue | 🟡 Minor

Replace the placeholder link target with the real URL.

[alpha launch](link) is a broken link in published content.

📝 Proposed fix
-A lot has happened since our [alpha launch](link). You can read Alex’s post for an overview of this past month, and to learn about some of the ideas the community is working on.
+A lot has happened since our [alpha launch](https://<alpha-launch-post-url>). You can read Alex’s post for an overview of this past month, and to learn about some of the ideas the community is working on.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f8488dfb-3b01-4e10-ab7c-2c0a614f58f5

📥 Commits

Reviewing files that changed from the base of the PR and between 931c6e9 and b90c0dc.

📒 Files selected for processing (1)
  • app/pages/blog/release/0.8.md

Copy link
Copy Markdown
Contributor

@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: 2

♻️ Duplicate comments (1)
app/pages/blog/release/0.8.md (1)

15-15: ⚠️ Potential issue | 🟠 Major

draft: false is still inconsistent with unresolved TODO placeholders.

With Line 15 set to publish, TODO markers at Lines 26, 37, 43, and 55 will ship as-is.

Also applies to: 26-26, 37-37, 43-43, 55-55


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c5ca18a7-c411-40dd-8944-b0e55660e76f

📥 Commits

Reviewing files that changed from the base of the PR and between b90c0dc and 70ab86c.

📒 Files selected for processing (1)
  • app/pages/blog/release/0.8.md

Comment on lines +1 to +16
---
authors:
- name: Alex Savelyev
blueskyHandle: alexdln.com
- name: Philippe Serhal
blueskyHandle: philippeserhal.com
- name: Matias Capeletto
blueskyHandle: patak.cat
title: 'npmx 0.8: around the moon'
tags: ['OpenSource', 'Release']
excerpt: "Today we're releasing npmx 0.8 – including a new command palette and a lot of other features."
date: '2026-04-08'
slug: '0.8'
description: "Today we're releasing npmx 0.8 – including a new command palette and a lot of other features."
draft: false
---
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.

⚠️ Potential issue | 🔴 Critical

Add required path to frontmatter to avoid post being dropped.

RawBlogPostSchema requires a path field; this frontmatter omits it. In modules/blog.ts, failed validation is skipped (continue), so the post may never render/list. Please add path (for example, /blog/release/0.8).

🛠️ Proposed fix
 title: 'npmx 0.8: around the moon'
 tags: ['OpenSource', 'Release']
 excerpt: "Today we're releasing npmx 0.8 – including a new command palette and a lot of other features."
 date: '2026-04-08'
+path: '/blog/release/0.8'
 slug: '0.8'
 description: "Today we're releasing npmx 0.8 – including a new command palette and a lot of other features."
 draft: false

title: 'npmx 0.8: around the moon'
tags: ['OpenSource', 'Release']
excerpt: "Today we're releasing npmx 0.8 – including a new command palette and a lot of other features."
date: '2026-04-08'
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify schema expectation and compare with existing blog frontmatter date patterns.

set -euo pipefail

echo "== RawBlogPostSchema date validator =="
rg -n -C2 "date:\s*pipe\(string\(\),\s*isoTimestamp\(\)\)" shared/schemas/blog.ts

echo
echo "== Sample frontmatter dates in blog markdown files =="
rg -n --iglob "*.md" "^date:\s*['\"]?.+['\"]?$" app/pages/blog | head -n 80

echo
echo "== Check if this file uses date-only format =="
rg -n "^date:\s*['\"]?2026-04-08['\"]?$" app/pages/blog/release/0.8.md

Repository: npmx-dev/npmx.dev

Length of output: 639


🌐 Web query:

valibot isoTimestamp() validator accepts date format ISO 8601

💡 Result:

In Valibot, isoTimestamp() validates an ISO 8601 “timestamp” string in these shapes (timezone required):

  • yyyy-mm-ddThh:mm:ss.sssZ (UTC “Z”)
  • yyyy-mm-ddThh:mm:ss.sss±hh:mm (offset with colon)
  • yyyy-mm-ddThh:mm:ss.sss±hhmm (offset without colon) (valibot.dev)

Notes about what it accepts beyond those examples:

  • The fractional seconds part (.sss) is optional, and if present can be 1 to 9 digits. (valibot.dev)
  • It also allows a space instead of T between date and time. (valibot.dev)
  • It’s regex-based and won’t catch invalid calendar dates like June 31. (valibot.dev)

If you want an ISO 8601 date-time without a timezone, Valibot has isoDateTime() (format yyyy-mm-ddThh:mm). (valibot.dev)

Citations:


🏁 Script executed:

# Check valibot version and search for any validation errors or documentation in the repo
fd -e json -e ts -e md -e txt . | xargs grep -l "isoTimestamp" 2>/dev/null | head -20

Repository: npmx-dev/npmx.dev

Length of output: 83


🏁 Script executed:

# Look for package.json to find valibot version
cat package.json 2>/dev/null | grep -A2 -B2 "valibot" || echo "package.json not found in root"

Repository: npmx-dev/npmx.dev

Length of output: 211


🏁 Script executed:

# Search for any comments or documentation about the date format in the schema file
cat -n shared/schemas/blog.ts | head -60

Repository: npmx-dev/npmx.dev

Length of output: 1964


Convert date to ISO 8601 timestamp format.

Line 12 uses date-only format (2026-04-08), but the schema requires isoTimestamp(), which only accepts full timestamps with time and timezone (e.g. 2026-04-08T00:00:00.000Z). Update to a valid ISO timestamp.

@patak-cat patak-cat added this pull request to the merge queue Apr 8, 2026
Merged via the queue into main with commit 780b545 Apr 8, 2026
26 checks passed
@patak-cat patak-cat deleted the feat/npmx-0-8-blog-post branch April 8, 2026 21:14
@github-actions github-actions bot mentioned this pull request Apr 8, 2026
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.

4 participants