Skip to content

Threads 22: Publish the threads product page - #251

Open
FranciscoMoretti wants to merge 1 commit into
codex/threads-v2-17-site-playground-uifrom
codex/threads-v2-18-site-threads-page
Open

Threads 22: Publish the threads product page#251
FranciscoMoretti wants to merge 1 commit into
codex/threads-v2-17-site-playground-uifrom
codex/threads-v2-18-site-threads-page

Conversation

@FranciscoMoretti

@FranciscoMoretti FranciscoMoretti commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Summary

  • Makes the playground the center of the Threads page.
  • Leads with the AI SDK migration value and useChat compatibility.
  • Adds concise installation, API, and architecture context around the live demo.

Behavior

Publishes a value-first product page for the package.

Verification

  • Browser verified the page at http://localhost:3052/threads.
  • Site lint and type checks pass at the stack tip.

Screenshot

Threads playground page

Review focus

Whether the page explains the AI SDK integration while keeping the playground primary.


Summary by cubic

Publish the Threads product page at /threads with a live useThread playground that stays useChat-compatible. Adds navbar/footer links, full metadata, a sitemap entry, and siteLinks.threads for discovery.

  • New Features

    • /threads metadata (title, description, canonical, Open Graph).
    • Content: install command, @ai-sdk/react@chatjs/thread/react diff, compatibility grid, architecture, CTAs to playground, package, and README.
    • Playground: cursor navigation, tree topology, parallel responses, per-run stop/resume, mid-stream path switching (reads from useThread state).
  • Discovery

    • Navbar “Threads” and footer “useThread”.
    • Sitemap entry (weekly, priority 0.9, lastModified 2026-07-10).
    • siteLinks.threads and a product screenshot asset.

Written for commit fc09bd1. Summary will update on new commits.

Review in cubic

Stack

  1. Threads 0: Define the useThread target architecture #233
  2. Threads 22: Adopt AI SDK response identity lifecycle #258
  3. Threads 1: Define useThread package contracts #234
  4. Threads 2: Add the canonical message tree #235
  5. Threads 3: Adapt isolated AI SDK runs #236
  6. Threads 4: Orchestrate concurrent tree runs #237
  7. Threads 5: Prove AI SDK behavioral parity #238
  8. Threads 6: Expose the useChat-compatible useThread hook #239
  9. Threads 7: Rename the thread controller #261
  10. Threads 10: Store ordered thread snapshots in ChatJS #240
  11. Threads 8: Add externally owned thread state #262
  12. Threads 9: Align Thread with AI SDK request semantics #266
  13. Threads 10: Back threads with canonical Zustand state #267
  14. Threads 11: Mount useThread in ChatJS #241
  15. Threads 12: Add branch navigation and retry #242
  16. Threads 13: Isolate branch stream lifecycles #243
  17. Threads 14: Stream follow-up parallel responses #244
  18. Threads 15: Add cancellable request gates #263
  19. Threads 16: Gate first-message parallel runs #245
  20. Threads 17: Stop newly provisioned thread runs #246
  21. Threads 18: Show parallel response lifecycle states #247
  22. Threads 19: Publish installable thread sources #248
  23. Threads 20: Add the thread playground model #249
  24. Threads 21: Add the interactive thread playground #250
  25. Threads 22: Publish the threads product page #251 👈 current
  26. Threads 23: Add the value-first package guide #252
  27. Threads 24: Document ChatJS threaded behavior #253
  28. Threads 25: Prepare the thread package release #254

@cursor

cursor Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
chat-js-docs Ready Ready Preview Aug 11, 2026 7:21am
chat-js-site Error Error Aug 11, 2026 7:21am
sparka Error Error Aug 11, 2026 7:21am

Request Review

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

Sorry @FranciscoMoretti, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4704510a-4806-40f5-8c48-f07d833bbe1e

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 codex/threads-v2-18-site-threads-page

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.

@greptile-apps

greptile-apps Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR publishes the Threads product page at /threads, making the ThreadPlayground live demo the centerpiece and wrapping it with migration copy, an install command, a compatibility grid, and an architecture overview. The siteLinks.threads constant is added correctly and referenced by the page's canonical/OG metadata and the sitemap URL field.

  • New page (apps/site/app/threads/page.tsx): Five structured sections covering migration diff, playground, AI SDK compatibility, feature additions, and architecture; metadata uses siteLinks.threads for canonical and OpenGraph URL.
  • Discovery wiring: siteLinks.threads added to site-config.ts; navbar, footer, and sitemap all point to the new route. The hardcoded date in the sitemap entry and the hardcoded /threads string literals in the navbar/footer (instead of siteLinks.threads) were already flagged in the previous review round.
  • PR asset: A threads-playground.png screenshot is added under .github/pr-assets/ for documentation purposes only.

Confidence Score: 5/5

Safe to merge — the change is entirely additive (new page, new nav/footer entry, new sitemap entry) with no modifications to existing logic or data flows.

All changed files are purely additive: a new static page, a new constant in site-config, and one-line additions to the navbar, footer, and sitemap. The hardcoded path and date issues were already raised in a prior review round and carry no runtime impact. Nothing here touches shared state, authentication, data fetching, or existing routes.

Files Needing Attention: No files require special attention beyond what was already flagged in the previous review round.

Important Files Changed

Filename Overview
apps/site/app/threads/page.tsx New 346-line product page for the Threads package; uses siteLinks.threads correctly for canonical/OG metadata, structures five distinct sections around the ThreadPlayground component.
apps/site/lib/site-config.ts Adds siteLinks.threads as a properly-constructed absolute URL; consistent with the existing pattern for all other siteLinks entries.
apps/site/app/sitemap.ts Adds threads sitemap entry with a hardcoded date instead of the shared siteLastModified constant (already flagged in previous review).
apps/site/components/navbar.tsx Adds Threads nav entry with a hardcoded /threads path instead of siteLinks.threads (already flagged in previous review).
apps/site/components/footer.tsx Adds useThread footer entry with a hardcoded /threads path instead of siteLinks.threads (already flagged in previous review).
.github/pr-assets/threads/threads-playground.png Binary screenshot asset added for PR documentation; no code impact.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User] -->|navigates| B[Navbar: Threads link]
    B --> C[Threads Page]
    C --> D[Hero: useChat migration diff]
    C --> E[ThreadInstallCommand]
    C --> F[Playground: ThreadPlayground]
    C --> G[Compatibility and Additions section]
    C --> H[Architecture section]
    C --> I[CTA: integration guide]

    J[sitemap.ts] -->|url: siteLinks.threads| C
    K[site-config.ts: siteLinks.threads] --> J
    K --> C
    L[footer.tsx: useThread link] --> C

    style C fill:#f0f4ff,stroke:#6366f1
    style K fill:#fef9c3,stroke:#ca8a04
Loading

Reviews (38): Last reviewed commit: "feat(site): publish the threads product ..." | Re-trigger Greptile

Comment thread apps/site/app/sitemap.ts
Comment on lines +19 to +24
{
url: siteLinks.threads,
lastModified: new Date("2026-07-10T00:00:00.000Z"),
changeFrequency: "weekly",
priority: 0.9,
},

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.

P2 The threads entry uses a one-off hardcoded date while every other sitemap entry uses the shared siteLastModified constant. When the site is next updated and siteLastModified is bumped, the threads page will report a stale modification date to search engines, potentially hurting its crawl priority relative to the other pages.

Suggested change
{
url: siteLinks.threads,
lastModified: new Date("2026-07-10T00:00:00.000Z"),
changeFrequency: "weekly",
priority: 0.9,
},
{
url: siteLinks.threads,
lastModified: siteLastModified,
changeFrequency: "weekly",
priority: 0.9,
},

import { ThemeToggle } from "./theme-toggle";

const NAV_LINKS = [
{ label: "Threads", href: "/threads" },

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.

P2 The new "Threads" entry hardcodes the path as a string literal while every other NAV_LINKS entry references a siteLinks property. If the /threads path is ever changed in site-config.ts, this entry won't be updated automatically. The footer has the same pattern — both should use siteLinks.threads.

Suggested change
{ label: "Threads", href: "/threads" },
{ label: "Threads", href: siteLinks.threads },

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

import { siteLinks } from "@/lib/site-config";

const PRODUCT_LINKS = [
{ label: "useThread", href: "/threads" },

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.

P2 Same hardcoded path issue as the navbar — and the label here is "useThread" while the navbar calls it "Threads". The two references to the same destination having different labels may confuse users who see one in the nav and the other in the footer. Aligning the label (and switching to siteLinks.threads) keeps things consistent.

Suggested change
{ label: "useThread", href: "/threads" },
{ label: "Threads", href: siteLinks.threads },

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d61eaa2c16

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

</div>
<a
className="inline-flex min-h-11 shrink-0 items-center gap-2 bg-primary px-5 font-medium text-primary-foreground text-sm transition-opacity hover:opacity-85"
href={`${siteLinks.github}/blob/main/packages/thread/README.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.

P2 Badge Point the integration CTA at an existing guide

Every visitor clicking this CTA is sent to a GitHub 404: a repo-wide search of the reviewed commit shows packages/thread/ARCHITECTURE.md, but no packages/thread/README.md. Link to the architecture document or add the promised integration guide before publishing the page.

Useful? React with 👍 / 👎.

@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from d61eaa2 to 07d3f1e Compare July 16, 2026 18:25
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from bf26771 to e5bfc2d Compare July 20, 2026 18:53
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from e5bfc2d to 4f0419f Compare July 21, 2026 06:26
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from 4f0419f to 4926a27 Compare July 21, 2026 06:52
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from 4926a27 to 4bb7a0f Compare July 21, 2026 06:56
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from 4bb7a0f to 8b1a686 Compare July 21, 2026 07:04
@FranciscoMoretti
FranciscoMoretti force-pushed the codex/threads-v2-18-site-threads-page branch from 8b1a686 to 43a997e Compare July 21, 2026 07:27
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