Commit graph

123 commits

Author SHA1 Message Date
Michael Preuss
6c5b7addc4 fix(web-evals): refine recommendation objective and profile snapshot layout 2026-02-17 16:55:24 -08:00
Roo Code
a91054f8a6 fix(web-evals): suppress hydration warnings on locale-dependent elements 2026-02-18 00:34:59 +00:00
Roo Code
10c11288de fix(web-evals): add Optimized for badge to objective selection cards 2026-02-18 00:22:18 +00:00
Roo Code
c6f5de8537 Merge remote-tracking branch 'origin/main' into feat/eval-recommendations 2026-02-18 00:08:29 +00:00
roomote[bot]
dc243e4cf9
feat(web): add blog section with initial posts (#11127)
* feat(web): add blog section with 4 initial posts

Implements MKT-66 through MKT-74:

Content Layer (MKT-67):
- Markdown files in src/content/blog with Zod-validated frontmatter
- Pacific Time scheduling evaluated at request-time (no deploy needed)
- gray-matter for parsing, react-markdown + remark-gfm for rendering

Blog Pages (MKT-68, MKT-69):
- Index page at /blog with dynamic SSR
- Post page at /blog/[slug] with dynamic SSR
- Breadcrumb navigation and prev/next post navigation

SEO (MKT-70):
- Full OpenGraph and Twitter card metadata
- Schema.org JSON-LD (Article, BreadcrumbList, CollectionPage)
- Canonical URLs pointing to roocode.com/blog

Analytics (MKT-74):
- PostHog blog_post_viewed and blog_index_viewed events
- Referrer tracking for attribution

Navigation (MKT-72):
- Updated nav-bar and footer to link to internal /blog
- Blog link in Resources dropdown

Sitemap (MKT-71):
- Dynamic blog paths with PT scheduling check

Initial Posts:
- PRDs Are Becoming Artifacts of the Past (Jan 12)
- Code Review Got Faster, Not Easier (Jan 19)
- Vibe Coders Build and Rebuild (Jan 26)
- Async Agents Change the Speed vs Quality Calculus (Feb 2)

* fix(test): update HistoryPreview tests to match refactored component

The HistoryPreview component was refactored to use useGroupedTasks and
TaskGroupItem instead of rendering TaskItem directly. This updates the
test file to properly mock the new dependencies:
- Mock useGroupedTasks hook to provide grouped task data
- Mock TaskGroupItem instead of TaskItem
- Update assertions to test for task groups instead of individual tasks

* feat(blog): add Vercel-inspired patterns and Tone of Voice alignment

- Add reading time display to blog posts
- Create BlogPostCTA component with 4 variants (default, extension, cloud, enterprise)
- Add zebra striping to tables in blog posts
- Add CTA to blog landing and paginated pages
- Remove 'Posted' prefix from dates
- Update blog description: 'How teams use agents to iterate, review, and ship PRs with proof'
- Add BlogPostList and BlogPagination components
- Add 100+ new blog posts from content pipeline

* feat(blog): add source badges for podcast content (Office Hours, After Hours, Roo Cast)

- Add BlogSource type to types.ts
- Export BlogSource from blog index
- Add SourceBadge component to BlogPostList with colored badges
- Each podcast has distinct color: blue (Office Hours), purple (After Hours), emerald (Roo Cast)

* feat(blog): add source field to all blog posts (Roo Cast, Office Hours, After Hours)

- Add add-blog-sources.ts script to build title→source mapping
- Updated 122 blog posts with correct podcast sources
- Sources: Roo Cast (52), Office Hours (62), After Hours (8)

* feat(blog): add source badges with consistent styling

- Add source field to Zod validation schema
- Source badges use same styling as tag badges (rounded, greyscale)
- Badges display on /blog landing page for Office Hours, After Hours, Roo Cast

* feat(blog): improve schema.org structured data for SEO

- Change @type from Article to BlogPosting (more specific)
- Add image property using OG image URL
- Add wordCount for AEO optimization

* feat(blog): timestamped YouTube quotes + attribution polish

* chore(blog): update 'Series A team' to 'Series A - C team' and fix 'Tovin' to 'Tovan'

- Changed 22 instances of 'Series A team' to 'Series A - C team' across 20 blog posts
- Changed 12 instances of 'Tovin' to 'Tovan' across 4 blog posts

This broadens the messaging to better represent teams that Roo Code serves (Series A through C).

* ci: retry CI after timeout

* blog: featured posts + copy edits

* blog: remove draft posts from web content

* fix(blog): loop HTML tag stripping to prevent incomplete sanitization

The single-pass .replace(/<[^>]+>/g, "") in calculateReadingTime() was
flagged by CodeQL as vulnerable to incomplete multi-character sanitization.
Input like "<scr<script>ipt>" would still contain "<script" after one pass.

Added a stripHtmlTags() helper that loops the replacement until stable,
plus a final pass to remove any remaining angle brackets.

* fix(blog): replace iterative HTML tag stripping with single-pass angle bracket removal

The CodeQL scanner flagged the iterative stripHtmlTags function for
incomplete multi-character sanitization. The regex /<[^>]+>/g only
matches complete tags, so partial fragments like <script (without a
closing >) could survive intermediate loop iterations.

Since this function is only used for word counting in
calculateReadingTime, replace the multi-step approach with a simple
single-pass removal of all < and > characters. This eliminates the
incomplete sanitization pattern entirely.

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Michael Preuss <michael@roocode.com>
2026-02-16 20:37:54 -05:00
Daniel
d52b6834e3
Add back post-revert bug fixes and features (Step 2) (#11463)
* fix: cancel backend auto-approval timeout when auto-approve is toggled off mid-countdown (#11439)

Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>

* fix: prevent chat history loss during cloud/settings navigation (#11371) (#11372)

Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>

* fix: preserve pasted images in chatbox during chat activity (#11375)

Co-authored-by: Roo Code <roomote@roocode.com>

* fix: resolve chat scroll anchoring and task-switch scroll race condit… (#11385)

* fix: avoid zsh process-substitution false positives in assignments (#11365)

* fix(editor): make tab close best-effort in DiffViewProvider.open (#11363)

* fix(checkpoints): canonicalize core.worktree comparison to prevent Windows path mismatch failures (#11346)

* fix: prevent double notification sound playback (#11283)

* fix: prevent false unsaved changes prompt with OpenAI Compatible headers (#8230) (#11334)

fix: prevent false unsaved changes prompt with OpenAI Compatible headers

Mark automatic header syncs in ApiOptions and OpenAICompatible as
non-user actions (isUserAction: false) and enhance SettingsView change
detection to skip automatic syncs with semantically equal values.

Root cause: two components (ApiOptions and OpenAICompatible) manage
openAiHeaders state and automatically sync it back on mount/remount.
These syncs were treated as user changes, triggering a false dirty state.

Co-authored-by: Robert McIntyre <robertjmcintyre@users.noreply.github.com>

* fix: remove noisy console.warn logs from NativeToolCallParser (#11264)

Remove two console.warn messages that fire excessively when loading tasks
from history:
- 'Attempting to finalize unknown tool call' in finalizeStreamingToolCall()
- 'Received chunk for unknown tool call' in processStreamingChunk()

The defensive null-return behavior is preserved; only the log output is removed.

* refactor: remove footgun prompting (file-based system prompt override) (#11387)

* refactor: delete orphaned per-provider caching transform files (#11388)

* feat: add disabledTools setting to globally disable native tools (#11277)

* feat: add disabledTools setting to globally disable native tools

Add a disabledTools field to GlobalSettings that allows disabling specific
native tools by name. This enables cloud agents to be configured with
restricted tool access.

Schema:
- Add disabledTools: z.array(toolNamesSchema).optional() to globalSettingsSchema
- Add disabledTools to organizationDefaultSettingsSchema.pick()
- Add disabledTools to ExtensionState Pick type

Prompt generation (tool filtering):
- Add disabledTools to BuildToolsOptions interface
- Pass disabledTools through filterSettings to filterNativeToolsForMode()
- Remove disabled tools from allowedToolNames set in filterNativeToolsForMode()

Execution-time validation (safety net):
- Extract disabledTools from state in presentAssistantMessage
- Convert disabledTools to toolRequirements format for validateToolUse()

Wiring:
- Add disabledTools to ClineProvider getState() and getStateToPostToWebview()
- Pass disabledTools to all buildNativeToolsArrayWithRestrictions() call sites

EXT-778

* fix: check toolRequirements before ALWAYS_AVAILABLE_TOOLS

Moves the toolRequirements check before the ALWAYS_AVAILABLE_TOOLS
early-return in isToolAllowedForMode(). This ensures disabledTools
can block always-available tools (switch_mode, new_task, etc.) at
execution time, making the validation layer consistent with the
filtering layer.

* feat: add support for .agents/skills directory (#11181)

* feat: add support for .agents/skills directory

This change adds support for discovering skills from the .agents/skills
directory, following the Agent Skills convention for sharing skills
across different AI coding tools.

Priority order (later entries override earlier ones):
1. Global ~/.agents/skills (shared across AI coding tools, lowest priority)
2. Project .agents/skills
3. Global ~/.roo/skills (Roo-specific)
4. Project .roo/skills (highest priority)

Changes:
- Add getGlobalAgentsDirectory() and getProjectAgentsDirectoryForCwd()
  functions to roo-config
- Update SkillsManager.getSkillsDirectories() to include .agents/skills
- Update SkillsManager.setupFileWatchers() to watch .agents/skills
- Add tests for new functionality

* fix: clarify skill priority comment to match actual behavior

* fix: clarify skill priority comment to explain Map.set replacement mechanism

---------

Co-authored-by: Roo Code <roomote@roocode.com>

* feat(history): render nested subtasks as recursive tree (#11299)

* feat(history): render nested subtasks as recursive tree

* fix(lockfile): resolve missing ai-sdk provider entry

* fix: address review feedback — dedupe countAll, increase SubtaskRow max-h

- HistoryView: replace local countAll with imported countAllSubtasks from types.ts
- SubtaskRow: increase nested children max-h from 500px to 2000px to match TaskGroupItem

* perf(refactor): consolidate getState calls in resolveWebviewView (#11320)

* perf(refactor): consolidate getState calls in resolveWebviewView

Replace three separate this.getState().then() calls with a single
await this.getState() and destructuring. This avoids running the
full getState() method (CloudService calls, ContextProxy reads, etc.)
three times during webview view resolution.

* fix: keep getState consolidation non-blocking to avoid delaying webview render

---------

Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>

* fix: harden command auto-approval against inline JS false positives (#11382)

* feat: rename search_and_replace tool to edit and unify edit-family UI (#11296)

* Revert "refactor: delete orphaned per-provider caching transform files (#11388)"

This reverts commit 13a45b0361.

* chore: regenerate built-in-skills.ts with updated formatting

* fix: add missing maxReadFileLine property to test baseState

The ExtensionState type now requires maxReadFileLine property (added in commit 63e3f769a).
Update the test to include this property with the default value of -1 (unlimited reading).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* feat: add pnpm serve command for code-server development (#10964)

Co-authored-by: Roo Code <roomote@roocode.com>

* chore: remove Feature Request from issue template options (#11141)

Co-authored-by: Roo Code <roomote@roocode.com>

* refactor(docs-extractor): simplify mode to focus on raw fact extraction (#11129)

* Add cli support for linux (#11167)

* fix: replace heredocs with echo statements in cli-release workflow (#11168)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* Drop MacOS-13 cli support (#11169)

* fix(cli): correct example in install script (#11170)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add Kimi K2.5 model to Fireworks provider (#11177)

* feat(cli): improve dev experience and roo provider API key support (#11203)

- Allow --api-key and ROO_API_KEY env var for the roo provider instead of
  requiring cloud auth token
- Switch dev/start scripts to use tsx for running directly from source
  without building first
- Fix path resolution (version.ts, extension.ts, extension-host.ts) to
  work from both source and bundled locations
- Disable debug log file (~/.roo/cli-debug.log) unless --debug is passed
- Update README with complete env var table and dev workflow docs

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* Roo Code CLI v0.0.50 (#11204)

* Roo Code CLI v0.0.50

* docs(cli): add --exit-on-error to changelog

---------

Co-authored-by: Roo Code <roomote@roocode.com>

* feat(cli): update default model from Opus 4.5 to Opus 4.6 (#11273)

Co-authored-by: Roo Code <roomote@roocode.com>

* feat(web): replace Roomote Control with Linear Integration in cloud features grid (#11280)

Co-authored-by: Roo Code <roomote@roocode.com>

* Add linux-arm64 for the roo cli (#11314)

* chore: clean up repo-facing mode rules (#11410)

* Make CLI auto-approve by default with require-approval opt-in (#11424)

Co-authored-by: Roo Code <roomote@roocode.com>

* Add new code owners to CODEOWNERS file

* Update next.js (#11108)

* feat(web): Replace bespoke navigation menu with shadcn navigation menu (#11117)

Co-authored-by: Roo Code <roomote@roocode.com>

---------

Co-authored-by: SannidhyaSah <sah_sannidhya@outlook.com>
Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: 0xMink <dennis@dennismink.com>
Co-authored-by: Robert McIntyre <robertjmcintyre@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2026-02-13 18:40:28 -05:00
Roo Code
abbf02171f Merge branch 'main' into feat/eval-recommendations 2026-02-13 23:05:10 +00:00
Daniel
6cfa82f571
Revert to pre-AI-SDK state (January 29, 2026) (#11462)
Revert to pre-AI-SDK state (commit 67e568f6b)

This commit reverts the codebase to the state before AI SDK migration work began.

Target commit: 67e568f6b - refactor: replace fetch_instructions with skill tool and built-in skills (#10913)
Date: January 29, 2026

This removes approximately 152 commits of AI SDK migration work.
A follow-up PR will add back bug fixes and features that are unrelated to AI SDK.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 16:45:18 -05:00
Roo Code
bd9f28e7fc fix: wrap WorkersContent in Suspense boundary for useSearchParams + fix inflated stats in recommendations page 2026-02-13 17:12:26 +00:00
MP
4d4acc98c1
Update apps/web-roo-code/src/app/evals/workers/page.tsx
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-02-13 08:51:31 -08:00
Roo Code
8ba3bd4032 fix(web-evals): remove redundant font imports and add copyPrompt feedback
- Remove duplicate Fraunces/IBM Plex Sans imports from recommendations/layout.tsx
  (already provided by shared evals/layout.tsx)
- Add visual "Copied!" feedback to copyPrompt button in objective-content.tsx
  (follows existing copy-settings-button.tsx pattern)
2026-02-13 16:28:35 +00:00
Roo Code
e699db20a3 fix: add visual feedback to copyPrompt in objective-content.tsx
Track copied state with a checkmark icon and "Copied!" text that
resets after 2 seconds, matching the existing pattern used in
copy-settings-button.tsx and comparison-chart.tsx.
2026-02-13 16:27:19 +00:00
Michael Preuss
268b183dee Add objective deep-dive pages under eval recommendations 2026-02-12 21:21:14 -08:00
Michael Preuss
1d03382f26 Refine evals objective selection and recommendation URL defaults 2026-02-12 20:49:54 -08:00
Roo Code
8cf93a786f fix(web-evals): lift Fraunces/IBM Plex Sans font setup to shared evals layout
Move --font-display and --font-body CSS variable declarations from
workers/page.tsx into a new evals/layout.tsx so all evals sub-pages
(methodology, workers, workers/[roleId], etc.) inherit the font
variables without duplicating the setup.
2026-02-13 03:39:25 +00:00
Michael Preuss
b3fb878c71 Fix workers-v2 redirect util imports 2026-02-12 19:20:50 -08:00
Michael Preuss
d91c035e99 Make workers outcomes-first canonical; redirect v2; refresh methodology 2026-02-12 19:20:02 -08:00
Michael Preuss
310b10cdc2 feat: eval-evolution work in progress - recommendations and workers UI 2026-02-12 12:07:14 -08:00
Michael Preuss
3a6eaf8e07 style(web-evals): remove tilde prefix from dollar amounts 2026-02-11 20:04:26 -08:00
Michael Preuss
514dadfe47 fix(web-evals): pluralize team members text and increase card row gap 2026-02-11 20:00:59 -08:00
Michael Preuss
6c849fb8c3 refactor(web-evals): generalize methodology roles section for scalability 2026-02-11 19:57:58 -08:00
Michael Preuss
bf55aa0103 feat(web-evals): add scatter plot charts (value map + capability timeline)
- Add "Value Map: Salary vs Interview Score" scatter to comparison page
  - Dots colored by tier, sized by success rate
  - Sweet Spot quadrant highlight (upper-left)
  - Respects existing provider/success-rate filters
- Add "AI Coding Capability Over Time" scatter to landing page
  - 10 models from Jun 2025 to Feb 2026
  - Dots colored by provider, sized by cost efficiency
  - Dashed trend line showing upward trajectory
- Add MODEL_TIMELINE data to mock-recommendations.ts
2026-02-11 19:53:10 -08:00
Michael Preuss
336a6726f9 fix(web-evals): improve comparison chart bar spacing and height 2026-02-11 19:44:30 -08:00
Michael Preuss
baf0d5c3b7 feat(web-evals): redesign comparison page with glass-morphism and role themes
- Atmospheric header with role-colored blur gradients
- Glass-morphism containers for chart, filters, and export
- Styled language toggle pills with role color accents
- Themed provider checkboxes and success rate slider
- Custom chart tooltip with backdrop blur
- Export buttons with press feedback
- framer-motion scroll-triggered animations
- Bottom navigation with pill-style links
- Role themes: reviewer (violet) and autonomous (cyan) added to candidates page
2026-02-11 19:39:45 -08:00
Michael Preuss
5a57ccf8f8 feat(web-evals): add AI Engineer Talent Marketplace (Sprint 1)
- Add 5 engineer roles: Junior, Senior, Staff, Architecture Reviewer, Autonomous Agent
- Build role selection landing page with hiring metaphor at /evals/workers
- Build candidate rankings page with tiered recommendations at /evals/workers/[roleId]
- Build candidate comparison page with Recharts charts at /evals/workers/[roleId]/compare
- Build "How We Interview" methodology page at /evals/methodology
- Add mock data with real eval scores from 27 model runs
- Implement "Hire This Engineer" CTA linking to Roo Code Cloud
- Implement "Configure Extension" CTA with clipboard copy
- Per-language score breakdowns (Go, Java, JS, Python, Rust)
- Daily salary pricing (80 tasks/agent/day estimate)
- framer-motion animations, glass-morphism design, role color themes
- Tone-of-voice compliance (no em dashes, no hype, workflow-first copy)
- vscode:// deep link design doc at plans/vscode-deep-link-design.md
2026-02-11 19:32:09 -08:00
MP
417abeb691 Update apps/web-roo-code/public/llms-full.txt
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-02-11 15:46:24 -08:00
Roo Code
f458e5e03b feat(web): add llms.txt and llms-full.txt for Answer Engine Optimization 2026-02-11 15:46:24 -08:00
roomote[bot]
f279537892
feat(web): replace Roomote Control with Linear Integration in cloud features grid (#11280)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-06 16:55:50 -08:00
roomote[bot]
0cd257af89
feat(web): Replace bespoke navigation menu with shadcn navigation menu (#11117)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-30 09:38:46 -08:00
Chris Estreich
fd46e31134
Update next.js (#11108) 2026-01-30 02:08:45 -08:00
Hannes Rudolph
0c53f1937a
Revert "refactor: replace fetch_instructions with skill tool and built-in skills" (#11083) 2026-01-29 11:46:58 -07:00
Hannes Rudolph
67e568f6bb
refactor: replace fetch_instructions with skill tool and built-in skills (#10913) 2026-01-29 07:48:08 -07:00
roomote[bot]
c983e26280
feat(marketing): add Linear integration page (#11028)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Michael Preuss <michael@roocode.com>
2026-01-28 16:06:08 -08:00
MP
5c1c16c16e
fix: rename bot to 'Roomote' and fix spacing in Slack demo (#10898) 2026-01-22 14:10:57 -05:00
roomote[bot]
21bd7609a9
feat: add HubSpot tracking with consent-based loading (#10885)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-21 22:54:07 -05:00
MP
d87abe8efc
feat(web): redesign Slack page Featured Workflow section with YouTube… (#10880)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-21 22:47:42 -05:00
MP
bef796de87
Copy: update /slack page messaging (#10869)
copy: update /slack page messaging

- Update trial CTA to 'Start a free 14 day Team trial'
- Replace 'humans' with 'your team' in value props subtitle
- Shorten value prop titles for consistent one-line display
- Improve Thread-aware and Open to all descriptions
2026-01-21 18:30:57 -05:00
MP
9ab279ae42
Pr 10853 (#10854)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-21 00:15:17 -05:00
roomote[bot]
ead1658441
Fix broken link on pricing page (#10847)
* fix: update broken pricing link to /models page

* Update apps/web-roo-code/src/app/pricing/page.tsx

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Bruno Bergher <bruno@roocode.com>
2026-01-20 18:03:51 +00:00
Chris Estreich
87a5afa629
Revert "feat(e2e): Enable E2E tests - 39 passing tests" (#10794)
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-01-16 17:22:43 -08:00
roomote[bot]
724571c7bd
feat: clarify Slack and Linear are Cloud Team only features (#10748)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-15 01:16:30 -05:00
roomote[bot]
75d895845e
Rename Roo Code Cloud Provider to Roo Code Router (#10560)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-10 11:32:21 -05:00
Matt Rubens
2ff08b5e5c
Update Terms of Service (effective January 9, 2026) (#10568)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-09 02:03:58 -05:00
roomote[bot]
7bbdcdf5d0
feat: rename YOLO to BRRR (#10507)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-07 10:03:37 -05:00
roomote[bot]
e851b9355e
fix: correct GitHub repository URL in marketing page (#10377)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-29 10:11:28 -08:00
roomote[bot]
add06a2e7b
docs: clarify path to Security Settings in privacy policy (#10367)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-28 18:19:03 +01:00
roomote[bot]
a148b0b7f3
feat: add Cloud Team page with comprehensive team features (#10267)
* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Bruno Bergher <bruno@roocode.com>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-12-22 16:52:00 +00:00
John Richmond
2863b1c3f1
Update next.js to ~15.2.8 (#10140) 2025-12-16 21:28:51 -08:00
Bruno Bergher
1ff5d1deb6
web: Fixes link to provider pricing page (#10107) 2025-12-15 13:28:25 -08:00
Bruno Bergher
d285d01853
web: Product pages (#9865)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-12-05 14:01:41 -05:00