Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
dbbb0b7
feat: rebuild realtime app into chat/translate/transcribe modes
DexterStorey Mar 2, 2026
7066b5d
fix: prevent realtime start generation invalidation
DexterStorey Mar 2, 2026
bed6b9d
feat: rebuild lilac as 2-mode realtime chat and live translate
DexterStorey Mar 3, 2026
4d542fe
stabilize realtime sessions and migrate app shell to shadcn
DexterStorey Mar 3, 2026
eba2202
fix realtime typed item id length and tighten smoke gates
DexterStorey Mar 3, 2026
02f6850
harden live translate tool-call handling and restore brand contrast
DexterStorey Mar 3, 2026
d736d57
feat: rebuild translate UX with live subtitle streaming
DexterStorey Mar 3, 2026
38ca4d1
stabilize realtime translation flow and simplify v3 ux
DexterStorey Mar 3, 2026
5dad2a5
fix translate hang and compact controls/cards
DexterStorey Mar 4, 2026
28eeb22
Fix translate hangs with fallback path and tighten smoke coverage
DexterStorey Mar 4, 2026
e257c13
Remove translate fallback and harden realtime tool path
DexterStorey Mar 4, 2026
8ae75ea
feat: stream draft translations before deterministic final tool output
DexterStorey Mar 4, 2026
65adbd2
Fix realtime ordering, subtitle streaming, and connection UX
DexterStorey Mar 5, 2026
1ae9f0f
Only show reconnect banner after first successful connection
DexterStorey Mar 5, 2026
2440622
Tighten chat smoke assertion for post-send assistant ordering
DexterStorey Mar 5, 2026
59d9606
Stabilize subtitle transcription flow and dedupe hallucinated chunks
DexterStorey Mar 5, 2026
0f02062
Remove unsupported transcription turn_detection fields
DexterStorey Mar 5, 2026
b2625fb
Fix draft metadata typing and restore chunked subtitle commits
DexterStorey Mar 5, 2026
cc1fb81
Fix realtime transcription quality defaults and audio format
DexterStorey Mar 5, 2026
64a87bd
Revert unsupported realtime transcription model slug
DexterStorey Mar 5, 2026
6aa9234
Improve subtitle chunk reconciliation and faster commit cadence
DexterStorey Mar 5, 2026
1123413
Add eval flywheel and stabilize realtime flows
DexterStorey Mar 6, 2026
95ae7d1
Improve translate transcript finalization
DexterStorey Mar 6, 2026
216949d
Hide short echo previews in translate cards
DexterStorey Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/eval-flywheel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: eval-flywheel

on:
push:
branches:
- main
workflow_dispatch:
inputs:
autoprod:
description: Promote to production when all gates pass
required: false
default: false
type: boolean

jobs:
flywheel:
runs-on: ubuntu-latest
timeout-minutes: 90

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install Dependencies
run: bun install

- name: Install Vercel CLI
run: npm install --global vercel@latest

- name: Pull Vercel Project Settings
run: vercel pull --yes --environment preview --token "$VERCEL_TOKEN"
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

- name: Install Playwright Chromium
run: bunx playwright install --with-deps chromium

- name: Generate Eval Audio Fixtures
run: bun run eval:prepare-audio
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

- name: Run Eval Flywheel
run: bun run eval:flywheel
env:
CI: "true"
LILAC_FLYWHEEL_ENABLED: "true"
LILAC_FLYWHEEL_AUTOPROD_ENABLED: ${{ github.event.inputs.autoprod || 'false' }}
LILAC_FLYWHEEL_BUDGET_USD_LIMIT: "30"
LILAC_FLYWHEEL_MAX_PATCH_ATTEMPTS_PER_FAILURE: "1"
LILAC_FLYWHEEL_MAX_RUNS_PER_DAY: "8"
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

- name: Upload Eval Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: eval-artifacts
path: .artifacts/evals
if-no-files-found: ignore
52 changes: 52 additions & 0 deletions .github/workflows/live-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: live-smoke

on:
push:
branches:
- main
workflow_dispatch:

jobs:
smoke:
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install Dependencies
run: bun install

- name: Install Vercel CLI
run: npm install --global vercel@latest

- name: Install Playwright Chromium
run: bunx playwright install --with-deps chromium

- name: Generate Smoke Audio Fixtures
run: bun run smoke:prepare-audio
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

- name: Run Live Smoke
run: bun run smoke:live
env:
CI: "true"
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

- name: Upload Smoke Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: smoke-artifacts
path: .artifacts/smoke
if-no-files-found: ignore
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ yarn-error.log*

# bun
bun.lockb
bun.lock
bun.lock

# smoke artifacts
.artifacts
10 changes: 9 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
{
"extends": ["@rubriclab/config/biome"]
"css": {
"parser": {
"tailwindDirectives": true
}
},
"extends": ["@rubriclab/config/biome"],
"files": {
"includes": ["**", "!next-env.d.ts"]
}
}
23 changes: 23 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"aliases": {
"components": "@/components",
"hooks": "@/hooks",
"lib": "@/lib",
"ui": "@/components/ui",
"utils": "@/lib/utils"
},
"iconLibrary": "lucide",
"registries": {},
"rsc": true,
"rtl": false,
"style": "new-york",
"tailwind": {
"baseColor": "neutral",
"config": "tailwind.config.ts",
"css": "src/app/styles.css",
"cssVariables": true,
"prefix": ""
},
"tsx": true
}
25 changes: 24 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,36 @@
{
"dependencies": {
"@prisma/client": "^6.19.0",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tabs": "^1.1.13",
"@t3-oss/env-nextjs": "^0.13.8",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dotenv": "^17.2.3",
"framer-motion": "^12.0.0",
"lucide-react": "^0.576.0",
"next": "16.0.10",
"react": "^19.2.0",
"react-dom": "^19.2.0"
"react-dom": "^19.2.0",
"tailwind-merge": "^3.5.0",
"tailwindcss-animate": "^1.0.7"
},
"description": "This project was bootstrapped with create-rubric-app",
"devDependencies": {
"@rubriclab/config": "^0.0.22",
"@tailwindcss/postcss": "^4.2.1",
"@types/node": "^24.10.1",
"@types/react": "^19.2.3",
"@types/react-dom": "^19.2.3",
"playwright": "^1.58.2",
"prisma": "^6.19.0",
"tailwindcss": "^4.2.1",
"typescript": "^5.9.3",
"zod": "^4.1.12"
},
Expand All @@ -31,7 +47,14 @@
"db:seed": "prisma db seed",
"db:studio": "prisma studio",
"dev": "next dev",
"eval:flywheel": "bun run scripts/evals/runEvalFlywheel.ts",
"eval:live": "bun run scripts/evals/runEvalSuite.ts --target-url https://lilac.chat --candidate-id baseline-prod",
"eval:prepare-audio": "bun run smoke:prepare-audio",
"eval:preview": "bun run scripts/evals/runEvalSuite.ts --candidate-id workspace-preview",
"format": "bun x biome check --write .",
"smoke:live": "bun run scripts/smoke/runLiveConversationSmoke.ts --target-url https://lilac.chat",
"smoke:local": "bun run scripts/smoke/runLiveConversationSmoke.ts --target-url http://localhost:3000 --skip-vercel-logs --skip-chat",
"smoke:prepare-audio": "bun run scripts/smoke/generateSmokeAudio.ts",
"start": "next start"
},
"version": "0.0.0"
Expand Down
Loading