-
Notifications
You must be signed in to change notification settings - Fork 2.9k
feat: eval-evolution work in progress - recommendations and workers UI #11444
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
- 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
…e 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
…line) - 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
Reviewed 268b183 (objective deep-dive pages, route restructuring under
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
|
|
||
| {/* Heading */} | ||
| <motion.h1 | ||
| className="mt-6 text-5xl font-semibold tracking-tight md:text-6xl lg:text-7xl [font-family:var(--font-display)]" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[font-family:var(--font-display)] is used here and at line 1024, but --font-display is only defined by the V2 page wrapper (workers-v2/page.tsx sets it via Fraunces font). When this component is rendered through the baseline path (/evals/workers), --font-display is undefined and these headings silently fall back to the inherited font instead of the intended display typeface. Either gate this class behind enableOutcomeLayer, or have the baseline workers/page.tsx also provide the font variable.
Fix it with Roo Code or mention @roomote and request a fix.
| const totalEvalRuns = recommendations.reduce((sum, r) => sum + r.totalEvalRuns, 0) | ||
| const totalExercises = recommendations.reduce((sum, r) => sum + r.totalExercises, 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
totalEvalRuns and totalExercises are computed by summing across all 5 roles, but each role reports the same underlying pool of 27 eval runs and 120 exercises. This produces 135 runs / 600 exercises on the landing page instead of the actual 27 / 120. The hero stats bar and footer will show inflated numbers. Consider using the values from a single role (they're identical) or deduplicating before summing. Same issue exists in workers-v2/page.tsx at lines 64-65.
| const totalEvalRuns = recommendations.reduce((sum, r) => sum + r.totalEvalRuns, 0) | |
| const totalExercises = recommendations.reduce((sum, r) => sum + r.totalExercises, 0) | |
| const totalEvalRuns = recommendations[0]?.totalEvalRuns ?? 0 | |
| const totalExercises = recommendations[0]?.totalExercises ?? 0 |
Fix it with Roo Code or mention @roomote and request a fix.
|
|
||
| <motion.h1 | ||
| variants={fadeUpVariants} | ||
| className="mt-4 text-4xl font-semibold tracking-tight md:text-5xl [font-family:var(--font-display)]"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[font-family:var(--font-display)] is used in 6 headings throughout this file, but methodology/page.tsx does not import Fraunces or provide the --font-display CSS variable, and no parent layout sets it either. This is the same issue that was fixed for workers/page.tsx in this PR (which now wraps content with the Fraunces font variable). The methodology page needs the same treatment -- either wrap <MethodologyContent /> in a div with the font variables, or lift the font setup to a shared evals layout.
Fix it with Roo Code or mention @roomote and request a fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@roomote fix with shared layout
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixaroo
See task
Lifted Fraunces and IBM Plex Sans font setup to a shared evals/layout.tsx so --font-display and --font-body CSS variables are available to all evals sub-pages (methodology, workers, workers/[roleId], etc.) without duplication.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@roomote pull latest changes from main into this branch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixaroo
See task
Pulled latest changes from main into this branch. Merge completed cleanly with no conflicts.
…s 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.
| const display = Fraunces({ subsets: ["latin"], variable: "--font-display" }) | ||
| const body = IBM_Plex_Sans({ subsets: ["latin"], weight: ["400", "500", "600"], variable: "--font-body" }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The shared evals/layout.tsx already imports Fraunces and IBM_Plex_Sans and wraps all evals children with the --font-display / --font-body CSS variables. These two declarations (and the font-variable wrapper div at line 82) duplicate that setup, producing two separate Next.js font optimization entries for the same fonts. workers/page.tsx doesn't do this -- it relies on the shared layout. Removing the imports, these two lines, and the wrapper div would align with the approach used by the other evals pages.
Fix it with Roo Code or mention @roomote and request a fix.
| const copyPrompt = useCallback(async () => { | ||
| if (!examplePrompt) return | ||
| await navigator.clipboard.writeText(examplePrompt) | ||
| }, [examplePrompt]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
copyPrompt fires navigator.clipboard.writeText without updating any state or providing visual feedback. The existing pattern in this codebase (copy-settings-button.tsx, comparison-chart.tsx) tracks a copied state, shows a checkmark icon and "Copied!" text, then resets after 2 seconds. Without similar feedback here, users clicking "Copy example prompt" have no confirmation that the copy succeeded (or failed).
Fix it with Roo Code or mention @roomote and request a fix.
Work in progress on eval-evolution features including: