Repository navigation
Product Hunt launch notice, with the launch date from the update check - #2386
Conversation
A corner card on local installs: before Oct 29 PT it says Radar launches on Product Hunt that day; during the Pacific day of Oct 29 it links to the launch and asks what Radar found for people. It waits behind the update notice and the first-run usage prompt, a dismissal is final, and it never shows in-cluster, in Cloud or when embedded. It turns itself off when the Pacific day ends.
PR Summary by QodoShow a local-only Product Hunt launch notice
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
Code Review by Qodo
1.
|
Product Hunt leads, the copy says the launch showcases MCP and AI investigations, and a secondary link explains the feature on radarhq.io. Investigations start from a resource, so there is no in-app place to send someone to try one cold.
Each phase of the launch notice is dismissed on its own, so the launch-day card still reaches someone who closed the one before it. On the Pacific day of Oct 29 the GitHub star prompt (CLI and UI) is skipped, and the update notice and first-run usage prompt wait until the launch card is dismissed or the day ends.
The first-run usage prompt stays on screen after the server stops offering it, so the launch notice reads whether it is showing directly, and before launch day it also waits for the usage status to load. The update notice keeps rechecking through the whole window, so one already on screen when the day starts steps aside, and both notices stop their timers once the window is over.
Same utm_source and utm_medium as Radar's Cloud links, so radarhq.io analytics count visits from the notice. The tag is identical for every install.
|
Two things:
|
The launch date, link and on/off switch now come from the update-check response, falling back to the built-in Oct 29 window when the check doesn't answer, so the launch can move or be called off without a release. In-cluster installs get the launch-day card. Launch-day copy asks for a comment.
The card keeps what it last showed through its exit fade, so calling the launch off while it is visible no longer renders an empty link, and the day's end no longer flashes the pre-launch copy. The version-check handler adds the launch to a copy of the cached result, and Desktop's manual check carries the launch too. A dismissal that localStorage refuses still frees the corner for the page.
A page left open now picks up a launch moved or called off upstream, and a launch switched back on no longer opens over a usage prompt that appeared while it was off.
âĶand the pre-launch ask Replaces the one-time sweep with a light that circles the border and fades on a cycle longer than the lap, stronger on light surfaces; the rocket drifts while the card is open; both stop under reduced motion. The links stay on one row, and the pre-launch card gives the same reason to help as the launch-day card, asking for a follow.
During the launch window, once someone closes the card, a green rocket labelled Product Hunt sits above What's new; clicking it brings the card back at once. It follows the card's audience and window, and goes when the launch ends or is called off.
âĶprompt With the version check now refetched hourly, a release found while the page is open could stay hidden behind an earlier dismissal, or open on top of the usage prompt. The update-notice test pins the launch off so it passes on launch day too.
The card now sits beside the sidebar's Product Hunt item and grows out of it, following the sidebar as it expands or collapses, and shrinks back into it when closed. The item stays for the launch window as the card's home. Where the sidebar isn't on screen the card keeps the bottom-right corner.
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
âĶn screen in short windows A tilted green tag reads TODAY on launch day and the date before it, so the item reads as a one-off. The anchored card is capped to the space above its item and scrolls inside, keeping Close reachable.
Radar launches on Product Hunt on Thursday, Oct 29. This adds a one-off corner card so users hear about it, timed to the launch and gone after it. The date, link and on/off switch come from the update check, so the launch can move or be called off without a release. It should ship today (1.18.3), since only installs on this version will see it.
What users see
Title Radar âĨ Agents (lucide heart, not an emoji), a green status line, then:
The date in the status line is the launch start on Pacific time. Before the day the page only offers Follow, so that card asks for a follow; the launch-day card asks for a comment. "How it works" goes to
radarhq.io/product/ai-investigations. The copy asks for a comment, never a vote, which Product Hunt's guidelines allow.Where the launch comes from
releases.skyhook.ioadds aproductHuntLaunchfield (enabled,url,start,end) to the update-check response (skyhook-dev/marketing#359). No new request: it rides on the hourly check installs already make, andRADAR_DISABLE_VERSION_CHECKstill turns it off.enabled: falsehides the card and stops suppressing the star prompt.internal/launchdayapplies.https://Product Hunt link and the window must be ordered; anything else is ignored and logged./api/version-checkand Desktop's manual "Check for updates" result both carry the effective launch, and the frontend waits for the version check before deciding. If the request fails, it uses the same built-in window.Rules it follows
prefers-reduced-motion; browsers without@propertyshow the light standing still.utm_source=radar-oss&utm_medium=app&utm_campaign=ph-launch-2026-10), so visits from the card can be counted without knowing who clicked.Not in What's New
The 1.19 What's New entry stays about the release. Adding a promo card there would either drive the auto-open dialog (a modal) or sit in the notes after the launch is over.
Tests
ProductHuntNotice.test.ts: the Pacific-day window, a moved and a cancelled launch from the server, the day label and link tags, the show rules (including in-cluster on the day only), per-phase dismissal keyed by launch day, and who holds the corner on the day.internal/launchday: the built-in window, a moved and a cancelled launch, rejected bad launches.useProductHuntRailEntry.test.tsx: the sidebar item's audience, window, day tag, waiting for the version check, and reopening.UpdateNotification.test.tsxpins the launch off so it passes on launch day; a newer release shows the update notice again after an older one was dismissed, and an update found while the usage prompt is open waits for it.ProductHuntNotice.render.test.tsx(mounted, fake timers): reopening from the sidebar after closing; the card appears after the delay with the tagged link; calling the launch off while it is on screen fades it out instead of throwing; the day's end keeps the launch-day wording during the fade; in-cluster shows nothing before the day.internal/version: an update-check response that turns the launch off reacheslaunchday.cmd/desktop: the manual-check event carries the launch.vitest runfor product-hunt, usage-data andUpdateNotification;tsc --noEmit;go test -race ./internal/launchday ./internal/version ./cmd/desktopandgo test ./internal/app ./internal/serverall pass.radar-test-nonprodwith Playwright's clock faked and the version-check response rewritten:enabled: false: no card.