Skip to content

feat: stream recently liked packages on the homepage#2784

Draft
serhalp wants to merge 1 commit into
mainfrom
serhalp/feat/homepage-likes-stream
Draft

feat: stream recently liked packages on the homepage#2784
serhalp wants to merge 1 commit into
mainfrom
serhalp/feat/homepage-likes-stream

Conversation

@serhalp
Copy link
Copy Markdown
Member

@serhalp serhalp commented May 23, 2026

🔗 Linked issue

N/A 😁

🧭 Context

The homepage is minimal at the moment. There's an opportunity to use that highly visible real estate to lean into social features while providing value through package discovery. As a bonus, this makes our package like feature more discoverable.

📚 Description

npmx.recently.liked.feed.demo_gh.mp4

This adds a Recently Liked Packages feed to the homepage, powered by Spacedust package like events.

The feed loads deferred on the client so the home page load stays non-blocking.

Because the npmx package like throughput is quite low at the moment (<10/day 🥹), just about no one would ever see anything if we truly only showed live events here. Thus, to keep things engaging, we first fetch the 5 most recent likes (from the UFOs service) and "replay" them, then start listening to the live stream. (🤞🏼 Perhaps someday we'll be able to remove this seeding!)

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 23, 2026

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

Project Deployment Actions Updated (UTC)
npmx.dev Ready Ready Preview, Comment May 24, 2026 11:28pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
docs.npmx.dev Ignored Ignored Preview May 24, 2026 11:28pm
npmx-lunaria Ignored Ignored May 24, 2026 11:28pm

Request Review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 23, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d9f5529b-a243-4f1d-921e-a63ad54f317f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch serhalp/feat/homepage-likes-stream

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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 23, 2026

Lunaria Status Overview

🌕 This pull request will trigger status changes.

Learn more

By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.

You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File Note
i18n/locales/en.json Source changed, localizations will be marked as outdated.
i18n/locales/fr-FR.json Localization changed, will be marked as complete.
Warnings reference
Icon Description
🔄️ The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 23, 2026

❌ 4 Tests Failed:

Tests completed Failed Passed Skipped
2739 4 2735 5
View the top 3 failed test(s) by shortest run time
test/nuxt/components/ProfileInviteSection.spec.ts > Profile invite section > does not show invite section for profile owner
Stack Traces | 0.0979s run time
AssertionError: expected 'Test User@test-handleEditLikes (0)It …' not to contain 'It doesn\'t look like they\'re using …'

Expected: "It doesn't look like they're using npmx yet"
Received: "Test User@test-handleEditLikes (0)It doesn't look like they're using npmx yet. Want to tell them about it?Share on Bluesky"

 ❯ .../nuxt/components/ProfileInviteSection.spec.ts:82:4
 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.20_@opentelemetry+api@1.9.0_@types+node@24.12.0_@vites_286a02f7b9cf966b7308b12116b564dd/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js?v=e4f6b5e7:1903:22
test/nuxt/components/ProfileInviteSection.spec.ts > Profile invite section > does not show invite section while auth is still loading
Stack Traces | 0.418s run time
AssertionError: expected 'Test User@test-handleEditLikes (0)It …' not to contain 'It doesn\'t look like they\'re using …'

Expected: "It doesn't look like they're using npmx yet"
Received: "Test User@test-handleEditLikes (0)It doesn't look like they're using npmx yet. Want to tell them about it?Share on Bluesky"

 ❯ .../nuxt/components/ProfileInviteSection.spec.ts:44:4
 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.20_@opentelemetry+api@1.9.0_@types+node@24.12.0_@vites_286a02f7b9cf966b7308b12116b564dd/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js?v=e4f6b5e7:1903:22
test/nuxt/components/Package/Likes.spec.ts > PackageLikes > keeps the top liked badge when a like response omits the rank
Stack Traces | 1.16s run time
AssertionError: expected +0 to be 1 // Object.is equality

- Expected
+ Received

- 1
+ 0

 ❯ .../components/Package/Likes.spec.ts:112:27
 ❯ checkCallback node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.20_@opentelemetry+api@1.9.0_@types+node@24.12.0_@vites_286a02f7b9cf966b7308b12116b564dd/node_modules/@.../dist/chunks/test.DNmyFkvJ.js?v=e4f6b5e7:3383:23
test/nuxt/composables/use-command-palette-commands.spec.ts > useCommandPaletteCommands > adds atproto account commands and disconnect support when a profile is connected
Stack Traces | 2.4s run time
AssertionError: expected undefined to be truthy

- Expected:
true

+ Received:
undefined

 ❯ .../nuxt/composables/use-command-palette-commands.spec.ts:322:4
 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.20_@opentelemetry+api@1.9.0_@types+node@24.12.0_@vites_286a02f7b9cf966b7308b12116b564dd/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js?v=e4f6b5e7:1903:22

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Add a Recently Liked Packages feed to the homepage, powered by Spacedust package like events.

The feed loads on the client so the home page stays non-blocking.

Because the npmx package like throughput is quite low at the moment (<10/day), just about no one
would ever see anything if we truly only showed live events here. Thus, to keep things engaging, we
first fetch the 5 most recent likes (from the UFOs service) and "replay" them, then start listening
to the live stream.
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