From 153f506b0296030ff6b952d732f3f07ed25495ea Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Fri, 1 May 2026 23:32:50 +0530 Subject: [PATCH 01/23] chore: setup stable dev environment + update routes to logical names --- README.md | 115 +++++++++++++++++++++++++----- app/components/chat/ChatBox.tsx | 2 +- app/components/ui/ProfileMenu.tsx | 2 +- app/hooks/useMediaBin.ts | 10 +-- app/hooks/useRenderer.ts | 4 +- app/routes/home.tsx | 2 +- app/routes/login.tsx | 2 +- app/routes/profile.tsx | 6 +- app/routes/projects.tsx | 12 ++-- app/utils/auth.server.ts | 2 +- backend/api/routes.py | 64 +++++++++++++---- backend/api/schema.py | 4 ++ backend/main.py | 2 +- docker-compose.dev.yml | 8 --- nginx.conf | 12 ++-- nginx.dev.conf | 42 ----------- vite.config.ts | 14 ++++ 17 files changed, 197 insertions(+), 106 deletions(-) delete mode 100644 nginx.dev.conf diff --git a/README.md b/README.md index 5a3a0719..a95846c3 100644 --- a/README.md +++ b/README.md @@ -56,35 +56,118 @@
and much more...

-## πŸ‹Deployment +## πŸ’» Development + πŸ› οΈ Local Development + +Only postgres runs in Docker. All three services run directly on your machine β€” Vite handles proxying so no nginx is needed. + +```bash +# Install dependencies +pnpm i +cd backend && uv sync && cd .. + +# 1. Start postgres +docker compose -f docker-compose.dev.yml up -d + +# 2. Start FastAPI (terminal 1) +cd backend && uv run uvicorn main:app --reload --port 3000 + +# 3. Start renderer (terminal 2) +pnpm dlx tsx app/videorender/videorender.ts + +# 4. Start frontend (terminal 3) +pnpm dev ``` -git clone https://github.com/robinroy03/videoeditor.git -cd videoeditor -docker compose up + +Open **`http://localhost:5173`**. The Vite dev server proxies requests transparently: + + + +- `/backend/*` β†’ FastAPI at `:3000` +- `/renderer/*` β†’ Renderer at `:8000` +- `/*` β†’ React Router SSR (Vite) + + + +`Requirements` + + + +- Node.js 20+ +- Python 3.12+ +- pnpm +- Docker (for postgres only) + + + +## πŸš€ Production + +Everything runs in Docker behind nginx. One command: + +```bash +docker compose up -d ``` -## πŸ§‘β€πŸ’»Development +**With Custom Domain:** +```bash +PROD_DOMAIN=yourdomain.com docker compose up -d ``` -docker compose -f docker-compose.dev.yml up -migrate the db (docker exec -i videoeditor-postgres-dev psql -U videoeditor -d videoeditor -f /dev/stdin < migrations/000_init.sql) -pnpm run dev (frontend) -pnpm dlx tsx app/videorender/videorender.ts (backend) -cd backend -uv run main.py - -localhost:8080 for the server + +nginx routes: + + + +- `/backend/*` β†’ FastAPI +- `/renderer/*` β†’ Renderer (video rendering) +- `/*` β†’ Frontend (React Router SSR) + + + +**Ports:** + +- HTTP: `80` (redirects to HTTPS) +- HTTPS: `443` + +## βš™οΈ Environment Configuration + +Create a `.env` file for custom settings: + +```env +# Domain Configuration +PROD_DOMAIN=yourdomain.com + +# Database +DATABASE_URL=postgresql://user:pass@localhost:5432/videoeditor + +# Authentication (Google OAuth) +GOOGLE_CLIENT_ID=your_google_client_id +GOOGLE_CLIENT_SECRET=your_google_client_secret + +# AI Features (Optional -> /backend) +GEMINI_API_KEY=your_gemini_api_key + ``` +**Environment Variables Explained:** + +- `PROD_DOMAIN`: Your production domain (host only, e.g., `yourdomain.com`) +- `DATABASE_URL`: PostgreSQL connection string +- `GOOGLE_CLIENT_ID/SECRET`: Google OAuth credentials for authentication +- `GEMINI_API_KEY`: Required for AI-powered video editing features + +
+ ## πŸ“ƒTODO -We have a lot of work! For starters, we plan to integrate all Remotion APIs. I'll add a proper roadmap soon. Join the [Discord Server](https://discord.com/invite/GSknuxubZK) for updates and support. + We have a lot of work! For starters, we plan to integrate all Remotion APIs. I'll add a proper roadmap soon. Join the [Discord Server](https://discord.com/invite/GSknuxubZK) for updates and support. ## ❀️Contribution -We would love your contributions! ❀️ Check the [contribution guide](CONTRIBUTING.md). + We would love your contributions! ❀️ Check the [contribution guide](CONTRIBUTING.md). ## πŸ“œLicense -This project is licensed under a dual-license. Refer to [LICENSE](LICENSE.md) for details. The [Remotion license](https://github.com/remotion-dev/remotion/blob/main/LICENSE.md) also applies to the relevant parts of the project. + This project is licensed under a dual-license. Refer to [LICENSE](LICENSE.md) for details. The [Remotion license](https://github.com/remotion-dev/remotion/blob/main/LICENSE.md) also applies to the relevant parts of the project. + diff --git a/app/components/chat/ChatBox.tsx b/app/components/chat/ChatBox.tsx index 85476600..8c0f9954 100644 --- a/app/components/chat/ChatBox.tsx +++ b/app/components/chat/ChatBox.tsx @@ -214,7 +214,7 @@ export function ChatBox({ })); // Make API call to the backend - const response = await axios.post("/ai", { + const response = await axios.post("/backend/ai", { message: messageContent, mentioned_scrubber_ids: mentionedScrubberIds, timeline_state: timelineState, diff --git a/app/components/ui/ProfileMenu.tsx b/app/components/ui/ProfileMenu.tsx index 94b846bf..f0aa98e4 100644 --- a/app/components/ui/ProfileMenu.tsx +++ b/app/components/ui/ProfileMenu.tsx @@ -34,7 +34,7 @@ export function ProfileMenu({ let cancelled = false; (async () => { try { - const res = await fetch("/api/storage", { credentials: "include" }); + const res = await fetch("/backend/storage", { credentials: "include" }); if (!res.ok) return; const j = await res.json(); if (!cancelled) { diff --git a/app/hooks/useMediaBin.ts b/app/hooks/useMediaBin.ts index efe170c3..b8493812 100644 --- a/app/hooks/useMediaBin.ts +++ b/app/hooks/useMediaBin.ts @@ -8,7 +8,7 @@ export const deleteMediaFile = async ( filename: string, ): Promise<{ success: boolean; message?: string; error?: string }> => { try { - const response = await fetch(`/media/${encodeURIComponent(filename)}`, { + const response = await fetch(`/renderer/media/${encodeURIComponent(filename)}`, { method: "DELETE", }); @@ -42,7 +42,7 @@ export const cloneMediaFile = async ( error?: string; }> => { try { - const response = await fetch("/clone-media", { + const response = await fetch("/renderer/clone-media", { method: "POST", headers: { "Content-Type": "application/json", @@ -274,7 +274,7 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri formData.append("media", file); console.log("Uploading file to server..."); - const uploadResponse = await axios.post("/api/upload", formData, { + const uploadResponse = await axios.post("/renderer/upload", formData, { onUploadProgress: (progressEvent) => { if (progressEvent.total) { const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); @@ -392,7 +392,7 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri } // Call authenticated delete by asset id const assetId = item.id; - const res = await fetch(`/api/assets/${assetId}`, { + const res = await fetch(`/renderer/assets/${assetId}`, { method: "DELETE", credentials: "include", }); @@ -426,7 +426,7 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri } // Clone via authenticated API (server will copy within out/ and record) - const res = await fetch(`/api/assets/${videoItem.id}/clone`, { + const res = await fetch(`/renderer/assets/${videoItem.id}/clone`, { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, diff --git a/app/hooks/useRenderer.ts b/app/hooks/useRenderer.ts index b1295117..4600d431 100644 --- a/app/hooks/useRenderer.ts +++ b/app/hooks/useRenderer.ts @@ -22,7 +22,7 @@ export const useRenderer = () => { // Test server connection first setRenderStatus("Connecting to render server..."); try { - await axios.get("/api/health", { timeout: 5000 }); + await axios.get("/renderer/health", { timeout: 5000 }); } catch (healthError) { throw new Error("Cannot connect to render server. Make sure the server is running on http://localhost:8000"); } @@ -66,7 +66,7 @@ export const useRenderer = () => { setRenderStatus("Rendering video..."); const response = await axios.post( - "/api/render", + "/renderer/render", { timelineData: timelineData, compositionWidth: compositionWidth, diff --git a/app/routes/home.tsx b/app/routes/home.tsx index 831860c1..5cd088d0 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -338,7 +338,7 @@ export default function TimelineEditor() { } const timelineState = getTimelineState(); - await axios.put(`/ai/api/api/projects/${encodeURIComponent(id)}`, timelineState, { + await axios.put(`/backend/projects/${encodeURIComponent(id)}`, timelineState, { withCredentials: true, }); diff --git a/app/routes/login.tsx b/app/routes/login.tsx index 31cc9c79..14341e65 100644 --- a/app/routes/login.tsx +++ b/app/routes/login.tsx @@ -18,7 +18,7 @@ export default function LoginPage() { const handleGoogleLogin = async (credentialResponse: CredentialResponse) => { console.log("credentialResponse", credentialResponse); - const response = await axios.post("/ai/api/auth/google", { + const response = await axios.post("/backend/auth/google", { credential: credentialResponse.credential, }); if (response.status === 200) { diff --git a/app/routes/profile.tsx b/app/routes/profile.tsx index 3da3c892..f9f683a4 100644 --- a/app/routes/profile.tsx +++ b/app/routes/profile.tsx @@ -17,7 +17,7 @@ export default function Profile() { let cancelled = false; (async () => { try { - const res = await fetch("/api/storage", { credentials: "include" }); + const res = await fetch("/backend/storage", { credentials: "include" }); if (!res.ok) return; const j = await res.json(); if (!cancelled) { @@ -32,7 +32,7 @@ export default function Profile() { })(); (async () => { try { - const res = await fetch("/api/auth/session", { credentials: "include" }); + const res = await fetch("/backend/auth/session", { credentials: "include" }); if (!res.ok) return; const j = await res.json(); const created = j?.user?.createdAt || j?.user?.created_at || j?.user?.created_at_ms || null; @@ -43,7 +43,7 @@ export default function Profile() { })(); (async () => { try { - const res = await fetch("/api/projects", { credentials: "include" }); + const res = await fetch("/backend/projects", { credentials: "include" }); if (!res.ok) return; const j = await res.json(); if (!cancelled) setProjectCount(Array.isArray(j?.projects) ? j.projects.length : 0); diff --git a/app/routes/projects.tsx b/app/routes/projects.tsx index 3098b8bc..228a1bf2 100644 --- a/app/routes/projects.tsx +++ b/app/routes/projects.tsx @@ -58,7 +58,7 @@ export async function loader({ request }: LoaderFunctionArgs) { if (res.status !== 200) throw redirect("/login"); const { origin } = new URL(request.url); - const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/ai/api/api/projects`, { + const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/backend/projects`, { headers: { Cookie: request.headers.get("Cookie") }, }); @@ -252,7 +252,7 @@ export default function Projects() { const name = (projectName || newProjectName || "Untitled Project").trim(); setCreating(true); try { - const { data } = await axios.post("/ai/api/api/create-project", { name }, { withCredentials: true }); + const { data } = await axios.post("/backend/projects", { name }, { withCredentials: true }); navigate(`/project/${data.project.id}`); } finally { setCreating(false); @@ -291,7 +291,7 @@ export default function Projects() { user={{ name: user.name, email: user.email, image: user.avatar_url }} starCount={starCount} onSignOut={async () => { - await axios.post("/ai/api/auth/logout", {}, { withCredentials: true }); + await axios.post("/backend/auth/logout", {}, { withCredentials: true }); }} /> @@ -387,7 +387,7 @@ export default function Projects() { setDrawerOpen(true); }} onDelete={async (projectId) => { - const res = await fetch(`/api/projects/${encodeURIComponent(projectId)}`, { + const res = await fetch(`/backend/projects/${encodeURIComponent(projectId)}`, { method: "DELETE", credentials: "include", }); @@ -448,7 +448,7 @@ export default function Projects() { const id = renameProjectId!; const newName = renameValue.trim(); if (!newName) return; - const res = await fetch(`/api/projects/${encodeURIComponent(id)}`, { + const res = await fetch(`/backend/projects/${encodeURIComponent(id)}`, { method: "PATCH", credentials: "include", headers: { "Content-Type": "application/json" }, @@ -484,7 +484,7 @@ export default function Projects() { onClick={async () => { const id = renameProjectId!; if (!id) return; - const res = await fetch(`/api/projects/${encodeURIComponent(id)}`, { + const res = await fetch(`/backend/projects/${encodeURIComponent(id)}`, { method: "DELETE", credentials: "include", }); diff --git a/app/utils/auth.server.ts b/app/utils/auth.server.ts index 606daaa2..a552611c 100644 --- a/app/utils/auth.server.ts +++ b/app/utils/auth.server.ts @@ -23,7 +23,7 @@ export async function requireUser(request: Request): Promise(`${origin}/ai/api/auth/me`, { + const res = await axios.get(`${origin}/backend/auth/me`, { headers: { Cookie: cookie }, // include the cookie in the request headers because we are in server code and not in the browser validateStatus: null, }); diff --git a/backend/api/routes.py b/backend/api/routes.py index f8b770f8..d2534ac9 100644 --- a/backend/api/routes.py +++ b/backend/api/routes.py @@ -2,19 +2,16 @@ from fastapi import APIRouter, Depends, HTTPException, status -from api.schema import CreateProjectRequest +from api.schema import CreateProjectRequest, RenameProjectRequest from auth.routes import get_current_user from auth.schema import KimuJWT from db import get_db_pool -router = APIRouter(prefix="/api", tags=["api"]) +router = APIRouter(tags=["api"]) @router.get("/projects") async def list_projects(user: KimuJWT = Depends(get_current_user)) -> dict: - """ - Return all projects for the authenticated user. - """ pool = await get_db_pool() async with pool.acquire() as conn: rows = await conn.fetch( @@ -39,14 +36,11 @@ async def list_projects(user: KimuJWT = Depends(get_current_user)) -> dict: return {"projects": projects} -@router.post("/create-project", status_code=status.HTTP_201_CREATED) +@router.post("/projects", status_code=status.HTTP_201_CREATED) async def create_project( body: CreateProjectRequest, user: KimuJWT = Depends(get_current_user), ) -> dict: - """ - Create a new project for the authenticated user. - """ pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -78,9 +72,6 @@ async def create_project( async def save_project( project_id: str, timeline: dict, user: KimuJWT = Depends(get_current_user) ) -> dict: - """ - Save the project timeline to the database. - """ pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -102,3 +93,52 @@ async def save_project( ) return {"ok": True, "project_id": str(row["id"])} + + +@router.patch("/projects/{project_id}") +async def rename_project( + project_id: str, body: RenameProjectRequest, user: KimuJWT = Depends(get_current_user) +) -> dict: + pool = await get_db_pool() + async with pool.acquire() as conn: + row = await conn.fetchrow( + """ + UPDATE projects + SET name = $1 + WHERE id = $2 AND user_id = $3 + RETURNING id + """, + body.name, + project_id, + user.user_id, + ) + + if row is None: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Project not found", + ) + + return {"ok": True, "project_id": str(row["id"])} + + +@router.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_project( + project_id: str, user: KimuJWT = Depends(get_current_user) +) -> None: + pool = await get_db_pool() + async with pool.acquire() as conn: + result = await conn.execute( + """ + DELETE FROM projects + WHERE id = $1 AND user_id = $2 + """, + project_id, + user.user_id, + ) + + if result == "DELETE 0": + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Project not found", + ) diff --git a/backend/api/schema.py b/backend/api/schema.py index e5242605..52209766 100644 --- a/backend/api/schema.py +++ b/backend/api/schema.py @@ -3,3 +3,7 @@ class CreateProjectRequest(BaseModel): name: str = Field(description="The name of the project") + + +class RenameProjectRequest(BaseModel): + name: str = Field(description="The new name for the project") diff --git a/backend/main.py b/backend/main.py index 692eb33a..8bdb5d21 100644 --- a/backend/main.py +++ b/backend/main.py @@ -15,7 +15,7 @@ _ALLOWED_ORIGINS = [ "https://trykimu.com", - "http://localhost:8080", # this is a lil finnicky but it works for now. we will move to an env based permanent solution later. + "http://localhost:5173", # Vite dev server ] app.add_middleware( diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 705fee5a..ec147f46 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -9,11 +9,3 @@ services: POSTGRES_PASSWORD: videoeditor ports: - "5432:5432" - - nginx: - image: nginx:latest - container_name: videoeditor-nginx-dev - ports: - - "8080:80" - volumes: - - ./nginx.dev.conf:/etc/nginx/nginx.conf:ro diff --git a/nginx.conf b/nginx.conf index 55489099..a03fd1eb 100644 --- a/nginx.conf +++ b/nginx.conf @@ -35,9 +35,9 @@ http { # Security Headers add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; - # trykimu.com/ai/api/ai β†’ http://fastapi/ai - location /ai/api/ { - rewrite ^/ai/api/(.*)$ /$1 break; + # trykimu.com/backend/* β†’ http://fastapi/* + location /backend/ { + rewrite ^/backend/(.*)$ /$1 break; proxy_pass http://fastapi; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -48,9 +48,9 @@ http { proxy_request_buffering off; } - # trykimu.com/render/render β†’ http://backend/render - location /render/ { - rewrite ^/render/(.*)$ /$1 break; + # trykimu.com/renderer/* β†’ http://backend/* + location /renderer/ { + rewrite ^/renderer/(.*)$ /$1 break; proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/nginx.dev.conf b/nginx.dev.conf deleted file mode 100644 index d50858a4..00000000 --- a/nginx.dev.conf +++ /dev/null @@ -1,42 +0,0 @@ -events {} - -http { - server { - client_max_body_size 500M; - listen 80; - - location / { - proxy_pass http://host.docker.internal:5173; - proxy_http_version 1.1; - # http_host includes the port also with the host (localhost:8080) so we need to use it instead of $host - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - - location /api/ { - proxy_pass http://host.docker.internal:8000/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - location /ai/api/ { - rewrite ^/ai/api/(.*)$ /$1 break; - proxy_pass http://host.docker.internal:3000; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_read_timeout 900s; - proxy_send_timeout 900s; - proxy_request_buffering off; - } - } -} diff --git a/vite.config.ts b/vite.config.ts index 4a88d587..010f5c03 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,4 +5,18 @@ import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ plugins: [tailwindcss(), reactRouter(), tsconfigPaths()], + server: { + proxy: { + "/backend": { + target: "http://localhost:3000", + changeOrigin: true, + rewrite: (path) => path.replace(/^\/backend/, ""), + }, + "/renderer": { + target: "http://localhost:8000", + changeOrigin: true, + rewrite: (path) => path.replace(/^\/renderer/, ""), + }, + }, + }, }); From 691f8cf681392ff40050a308aae33be091ff1c77 Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Sat, 2 May 2026 12:06:49 +0530 Subject: [PATCH 02/23] refactor: integrate BetterAuth --- .env.example | 10 +- README.md | 30 ++-- app/lib/auth-client.ts | 3 + app/lib/auth.server.ts | 23 +++ app/routes.ts | 1 + app/routes/api.auth.$.ts | 10 ++ app/routes/learn.tsx | 18 +- app/routes/login.tsx | 41 ++--- app/routes/profile.tsx | 7 +- app/routes/projects.tsx | 12 +- app/utils/auth.server.ts | 37 ++-- backend/api/routes.py | 12 +- backend/auth/routes.py | 179 +++---------------- backend/auth/schema.py | 27 +-- backend/auth/service.py | 79 --------- backend/db.py | 4 +- backend/pyproject.toml | 1 - backend/uv.lock | 11 -- docker-compose.yml | 11 +- migrations/000_init.sql | 119 ++++++++++--- package.json | 3 +- pnpm-lock.yaml | 368 +++++++++++++++++++++++++++++++++++++-- 22 files changed, 582 insertions(+), 424 deletions(-) create mode 100644 app/lib/auth-client.ts create mode 100644 app/lib/auth.server.ts create mode 100644 app/routes/api.auth.$.ts delete mode 100644 backend/auth/service.py diff --git a/.env.example b/.env.example index e0258e67..0953762c 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,9 @@ +# Local/Docker Postgres: postgresql://videoeditor:videoeditor@localhost:5432/videoeditor +# Supabase Session Pooler: postgresql://postgres.REF:password@aws-0-REGION.pooler.supabase.com:5432/postgres DATABASE_URL= -VITE_GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -JWT_SECRET= # for the jwt secret, you can use `openssl rand -hex 32` to generate a random string +DATABASE_SSL= # Set to "true" when using Supabase or any remote DB that requires SSL. Omit for local/Docker Postgres. +BETTER_AUTH_SECRET= # openssl rand -hex 32 +BETTER_AUTH_URL= # https://trykimu.com (production) or http://localhost:5173 (dev) +GOOGLE_CLIENT_ID= # Google OAuth client ID +GOOGLE_CLIENT_SECRET= # Google OAuth client secret GEMINI_API_KEY= diff --git a/README.md b/README.md index a95846c3..a18589c4 100644 --- a/README.md +++ b/README.md @@ -132,30 +132,36 @@ nginx routes: ## βš™οΈ Environment Configuration -Create a `.env` file for custom settings: +Copy `.env.example` to `.env` and fill in your values: ```env -# Domain Configuration -PROD_DOMAIN=yourdomain.com +# Local/Docker Postgres (dev or self-hosted prod): +DATABASE_URL=postgresql://videoeditor:videoeditor@localhost:5432/videoeditor -# Database -DATABASE_URL=postgresql://user:pass@localhost:5432/videoeditor +# β€” OR β€” Supabase Session Pooler (cloud): +DATABASE_URL=postgresql://postgres.REF:password@aws-0-REGION.pooler.supabase.com:5432/postgres +DATABASE_SSL=true # required for Supabase; omit for local/Docker Postgres -# Authentication (Google OAuth) +# BetterAuth +BETTER_AUTH_SECRET= # generate with: openssl rand -hex 32 +BETTER_AUTH_URL=https://yourdomain.com # http://localhost:5173 for dev + +# Google OAuth GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret -# AI Features (Optional -> /backend) +# AI Features (optional) GEMINI_API_KEY=your_gemini_api_key - ``` **Environment Variables Explained:** -- `PROD_DOMAIN`: Your production domain (host only, e.g., `yourdomain.com`) -- `DATABASE_URL`: PostgreSQL connection string -- `GOOGLE_CLIENT_ID/SECRET`: Google OAuth credentials for authentication -- `GEMINI_API_KEY`: Required for AI-powered video editing features +- `DATABASE_URL`: PostgreSQL connection string. Use the local Docker URL for dev/self-hosted prod, or the Supabase Session Pooler URL for cloud. +- `DATABASE_SSL`: Set to `"true"` when connecting to Supabase or any remote DB that requires SSL. Leave unset for local/Docker Postgres. +- `BETTER_AUTH_SECRET`: Random secret used to sign sessions β€” generate with `openssl rand -hex 32`. +- `BETTER_AUTH_URL`: The public URL of the app. Used by BetterAuth for OAuth callbacks. +- `GOOGLE_CLIENT_ID/SECRET`: Google OAuth credentials β€” register at [console.cloud.google.com](https://console.cloud.google.com). +- `GEMINI_API_KEY`: Required for AI-powered video editing features.
diff --git a/app/lib/auth-client.ts b/app/lib/auth-client.ts new file mode 100644 index 00000000..f1012dd4 --- /dev/null +++ b/app/lib/auth-client.ts @@ -0,0 +1,3 @@ +import { createAuthClient } from "better-auth/react"; + +export const authClient = createAuthClient(); diff --git a/app/lib/auth.server.ts b/app/lib/auth.server.ts new file mode 100644 index 00000000..a12b0e71 --- /dev/null +++ b/app/lib/auth.server.ts @@ -0,0 +1,23 @@ +import { betterAuth } from "better-auth"; +import { Pool } from "pg"; + +export const auth = betterAuth({ + database: new Pool({ + connectionString: process.env.DATABASE_URL, + ssl: process.env.DATABASE_SSL === "true" ? { rejectUnauthorized: false } : false, + connectionTimeoutMillis: 5000, + }), + baseURL: process.env.BETTER_AUTH_URL, + secret: process.env.BETTER_AUTH_SECRET, + socialProviders: { + google: { + clientId: process.env.GOOGLE_CLIENT_ID as string, + clientSecret: process.env.GOOGLE_CLIENT_SECRET as string, + }, + }, + advanced: { + database: { + generateId: "uuid", + }, + }, +}); diff --git a/app/routes.ts b/app/routes.ts index 41cd76fb..ca004193 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -1,6 +1,7 @@ import { type RouteConfig, index, route } from "@react-router/dev/routes"; export default [ + route("/api/auth/*", "routes/api.auth.$.ts"), route("/", "routes/landing.tsx"), route("/marketplace", "routes/marketplace.tsx"), route("/login", "routes/login.tsx"), diff --git a/app/routes/api.auth.$.ts b/app/routes/api.auth.$.ts new file mode 100644 index 00000000..d9e84a3d --- /dev/null +++ b/app/routes/api.auth.$.ts @@ -0,0 +1,10 @@ +import { auth } from "~/lib/auth.server"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "react-router"; + +export async function loader({ request }: LoaderFunctionArgs) { + return auth.handler(request); +} + +export async function action({ request }: ActionFunctionArgs) { + return auth.handler(request); +} diff --git a/app/routes/learn.tsx b/app/routes/learn.tsx index 3ebee557..a2e9f867 100644 --- a/app/routes/learn.tsx +++ b/app/routes/learn.tsx @@ -3,7 +3,6 @@ // import { Player } from "@remotion/player"; // import { createTikTokStyleCaptions } from "@remotion/captions"; -import { GoogleLogin, GoogleOAuthProvider, type CredentialResponse } from "@react-oauth/google"; // type Caption = { // text: string; @@ -552,24 +551,9 @@ import { GoogleLogin, GoogleOAuthProvider, type CredentialResponse } from "@reac // export default CaptionsPlayer; export default function learn() { - const googleClientId = import.meta.env.VITE_GOOGLE_CLIENT_ID; - - const handleGoogleSuccess = (credentialResponse: CredentialResponse) => { - console.log("Google sign-in success", credentialResponse); - }; - return (
- -
- -
- console.log("Google sign-in error")} /> -
-
-
+

Learn page

); } diff --git a/app/routes/login.tsx b/app/routes/login.tsx index 14341e65..fde89dbe 100644 --- a/app/routes/login.tsx +++ b/app/routes/login.tsx @@ -1,29 +1,19 @@ -import { GoogleLogin, GoogleOAuthProvider, type CredentialResponse } from "@react-oauth/google"; import { Clapperboard, Wand2, Scissors } from "lucide-react"; import { KimuLogo } from "~/components/ui/KimuLogo"; import { FaGoogle } from "react-icons/fa"; -import axios from "axios"; import { redirect, type LoaderFunctionArgs } from "react-router"; import { requireUser } from "~/utils/auth.server"; +import { authClient } from "~/lib/auth-client"; export async function loader({ request }: LoaderFunctionArgs) { - const res = await requireUser(request); - // the user has a cookie and it is valid, so we redirect to the projects page - if (res.status === 200) throw redirect("/projects"); + const user = await requireUser(request); + if (user) throw redirect("/projects"); return null; } export default function LoginPage() { - const googleClientId = import.meta.env.VITE_GOOGLE_CLIENT_ID; - - const handleGoogleLogin = async (credentialResponse: CredentialResponse) => { - console.log("credentialResponse", credentialResponse); - const response = await axios.post("/backend/auth/google", { - credential: credentialResponse.credential, - }); - if (response.status === 200) { - window.location.href = "/projects"; - } + const handleGoogleLogin = async () => { + await authClient.signIn.social({ provider: "google", callbackURL: "/projects" }); }; return ( @@ -101,20 +91,13 @@ export default function LoginPage() {

Welcome to Kimu

Cinematic editing, reimagined.

- -
- -
- handleGoogleLogin(credentialResponse)} - onError={() => console.log("Google sign-in error")} - /> -
-
{" "} -
+

We never post on your behalf.

diff --git a/app/routes/profile.tsx b/app/routes/profile.tsx index f9f683a4..b97422b1 100644 --- a/app/routes/profile.tsx +++ b/app/routes/profile.tsx @@ -32,10 +32,9 @@ export default function Profile() { })(); (async () => { try { - const res = await fetch("/backend/auth/session", { credentials: "include" }); - if (!res.ok) return; - const j = await res.json(); - const created = j?.user?.createdAt || j?.user?.created_at || j?.user?.created_at_ms || null; + const { authClient } = await import("~/lib/auth-client"); + const session = await authClient.getSession(); + const created = session?.data?.user?.createdAt ?? null; if (!cancelled && created) setMemberSince(String(created)); } catch (error) { console.error("Failed to fetch user session:", error); diff --git a/app/routes/projects.tsx b/app/routes/projects.tsx index 228a1bf2..45e8d2be 100644 --- a/app/routes/projects.tsx +++ b/app/routes/projects.tsx @@ -53,9 +53,8 @@ type Project = { }; export async function loader({ request }: LoaderFunctionArgs) { - const res = await requireUser(request); - // the user does not have a cookie or the cookie is invalid, so we redirect to the login page - if (res.status !== 200) throw redirect("/login"); + const user = await requireUser(request); + if (!user) throw redirect("/login"); const { origin } = new URL(request.url); const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/backend/projects`, { @@ -63,7 +62,7 @@ export async function loader({ request }: LoaderFunctionArgs) { }); return { - user: res.data, + user, projects: projectsRes.data.projects, }; } @@ -288,10 +287,11 @@ export default function Projects() {
{ - await axios.post("/backend/auth/logout", {}, { withCredentials: true }); + const { authClient } = await import("~/lib/auth-client"); + await authClient.signOut({ fetchOptions: { onSuccess: () => { window.location.href = "/login"; } } }); }} />
diff --git a/app/utils/auth.server.ts b/app/utils/auth.server.ts index a552611c..42429c41 100644 --- a/app/utils/auth.server.ts +++ b/app/utils/auth.server.ts @@ -1,32 +1,19 @@ -import axios, { type AxiosResponse } from "axios"; +import { auth } from "~/lib/auth.server"; -// the data in the cookie export type SessionUser = { - user_id: string; + id: string; email: string; name: string; - avatar_url: string; + image: string | null; }; -export async function requireUser(request: Request): Promise> { - const cookie = request.headers.get("Cookie"); - - // there is no cookie, so we return a 401 - if (!cookie) - return { - data: {} as SessionUser, - status: 401, - statusText: "Unauthorized", - headers: {}, - config: {} as never, - }; - - const { origin } = new URL(request.url); - - const res = await axios.get(`${origin}/backend/auth/me`, { - headers: { Cookie: cookie }, // include the cookie in the request headers because we are in server code and not in the browser - validateStatus: null, - }); - - return res; +export async function requireUser(request: Request): Promise { + const session = await auth.api.getSession({ headers: request.headers }); + if (!session) return null; + return { + id: session.user.id, + email: session.user.email, + name: session.user.name, + image: session.user.image ?? null, + }; } diff --git a/backend/api/routes.py b/backend/api/routes.py index d2534ac9..152a8367 100644 --- a/backend/api/routes.py +++ b/backend/api/routes.py @@ -4,14 +4,14 @@ from api.schema import CreateProjectRequest, RenameProjectRequest from auth.routes import get_current_user -from auth.schema import KimuJWT +from auth.schema import SessionUser from db import get_db_pool router = APIRouter(tags=["api"]) @router.get("/projects") -async def list_projects(user: KimuJWT = Depends(get_current_user)) -> dict: +async def list_projects(user: SessionUser = Depends(get_current_user)) -> dict: pool = await get_db_pool() async with pool.acquire() as conn: rows = await conn.fetch( @@ -39,7 +39,7 @@ async def list_projects(user: KimuJWT = Depends(get_current_user)) -> dict: @router.post("/projects", status_code=status.HTTP_201_CREATED) async def create_project( body: CreateProjectRequest, - user: KimuJWT = Depends(get_current_user), + user: SessionUser = Depends(get_current_user), ) -> dict: pool = await get_db_pool() async with pool.acquire() as conn: @@ -70,7 +70,7 @@ async def create_project( @router.put("/projects/{project_id}") async def save_project( - project_id: str, timeline: dict, user: KimuJWT = Depends(get_current_user) + project_id: str, timeline: dict, user: SessionUser = Depends(get_current_user) ) -> dict: pool = await get_db_pool() async with pool.acquire() as conn: @@ -97,7 +97,7 @@ async def save_project( @router.patch("/projects/{project_id}") async def rename_project( - project_id: str, body: RenameProjectRequest, user: KimuJWT = Depends(get_current_user) + project_id: str, body: RenameProjectRequest, user: SessionUser = Depends(get_current_user) ) -> dict: pool = await get_db_pool() async with pool.acquire() as conn: @@ -124,7 +124,7 @@ async def rename_project( @router.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT) async def delete_project( - project_id: str, user: KimuJWT = Depends(get_current_user) + project_id: str, user: SessionUser = Depends(get_current_user) ) -> None: pool = await get_db_pool() async with pool.acquire() as conn: diff --git a/backend/auth/routes.py b/backend/auth/routes.py index 0fea98ed..f569785c 100644 --- a/backend/auth/routes.py +++ b/backend/auth/routes.py @@ -1,175 +1,46 @@ from fastapi import APIRouter, Cookie, Depends, HTTPException, status -from fastapi.responses import JSONResponse -from auth.schema import KimuJWT, KimuPayload, SignUpGoogleRequest -from auth.service import ( - COOKIE_MAX_AGE, - COOKIE_NAME, - generate_kimu_jwt, - verify_google_id_token, - verify_kimu_jwt, -) +from auth.schema import SessionUser from db import get_db_pool -from utils import require_env -router = APIRouter(prefix="/auth", tags=["auth"]) +_BETTER_AUTH_COOKIE = "better-auth.session_token" -GOOGLE_CLIENT_ID: str = require_env("VITE_GOOGLE_CLIENT_ID") -JWT_SECRET: str = require_env("JWT_SECRET") +router = APIRouter(prefix="/auth", tags=["auth"]) async def get_current_user( - kimu_session: str = Cookie(alias=COOKIE_NAME), -) -> KimuJWT: - """ - FastAPI dependency. Reads the session JWT from the HttpOnly cookie. - """ - try: - return verify_kimu_jwt(kimu_session, JWT_SECRET) - except Exception as exc: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail=str(exc), - ) from exc - - -@router.post("/google") -async def google_sign_in(body: SignUpGoogleRequest) -> JSONResponse: + session_token: str | None = Cookie(default=None, alias=_BETTER_AUTH_COOKIE), +) -> SessionUser: """ - Verify the Google ID token, upsert the user, return user info and - set an HttpOnly session cookie with the Kimu JWT. + FastAPI dependency. Reads the BetterAuth session token from the HttpOnly + cookie and validates it against the session/user tables in Postgres. """ - # 1. Verify the Google credential - try: - google_user = verify_google_id_token(body.credential, GOOGLE_CLIENT_ID) - except ValueError as exc: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail=f"Google token verification failed: {exc}", - ) from exc + if not session_token: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated") - # 2. Upsert user + identity in Postgres pool = await get_db_pool() - async with pool.acquire() as conn, conn.transaction(): + async with pool.acquire() as conn: row = await conn.fetchrow( """ - SELECT u.id, u.email, u.name - FROM user_identities ui - JOIN users u ON u.id = ui.user_id - WHERE ui.provider = $1 AND ui.provider_sub = $2 + SELECT u.id, u.name, u.email, u.image + FROM session s + JOIN "user" u ON u.id = s."userId" + WHERE s.token = $1 AND s."expiresAt" > now() """, - "google", - google_user.sub, + session_token, ) - if row is None: - # Create or reuse the user row by email, then link Google identity. - user_row = await conn.fetchrow( - """ - INSERT INTO users (email, name) - VALUES ($1, $2) - ON CONFLICT (email) - DO NOTHING - RETURNING id, email, name - """, - google_user.email, - google_user.name, - ) - - if user_row is None: - user_row = await conn.fetchrow( - """ - SELECT id, email, name - FROM users - WHERE email = $1 - """, - google_user.email, - ) - if user_row is None: - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail="Failed to create or fetch user", - ) - - await conn.execute( - """ - INSERT INTO user_identities (user_id, provider, provider_sub) - VALUES ($1, $2, $3) - ON CONFLICT (provider, provider_sub) DO NOTHING - """, - user_row["id"], - "google", - google_user.sub, - ) - - row = await conn.fetchrow( - """ - SELECT u.id, u.email, u.name - FROM user_identities ui - JOIN users u ON u.id = ui.user_id - WHERE ui.provider = $1 AND ui.provider_sub = $2 - """, - "google", - google_user.sub, - ) - - if row is None: - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail="Failed to create or fetch user identity", - ) - - user_id = str(row["id"]) - user_email = str(row["email"]) - user_name = str(row["name"]) + if row is None: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid or expired session") - # 3. Generate Kimu JWT - payload = KimuPayload( - user_id=user_id, - email=user_email, - name=user_name, - avatar_url=google_user.picture, - ) - token = generate_kimu_jwt(payload, JWT_SECRET) - - # 4. Build response with HttpOnly cookie - body_data = KimuPayload( - user_id=user_id, - email=user_email, - name=user_name, - avatar_url=google_user.picture, - ) - response = JSONResponse(content=body_data.model_dump()) - response.set_cookie( - key=COOKIE_NAME, - value=token, - max_age=COOKIE_MAX_AGE, - httponly=True, - secure=True, - samesite="lax", - path="/", - ) - return response - - -@router.get("/me", response_model=KimuPayload) -async def get_me(user: KimuJWT = Depends(get_current_user)) -> KimuPayload: - """ - Return the current user's profile from the JWT. - """ - return KimuPayload( - user_id=user.user_id, - email=user.email, - name=user.name, - avatar_url=user.avatar_url, + return SessionUser( + user_id=str(row["id"]), + email=str(row["email"]), + name=str(row["name"]), + image=str(row["image"]) if row["image"] else None, ) -@router.post("/logout") -async def logout() -> JSONResponse: - """ - Log out the current user by clearing the HttpOnly session cookie. - """ - response = JSONResponse(content={}) - response.delete_cookie(key=COOKIE_NAME) - return response +@router.get("/me", response_model=SessionUser) +async def get_me(user: SessionUser = Depends(get_current_user)) -> SessionUser: + return user diff --git a/backend/auth/schema.py b/backend/auth/schema.py index 6218b9db..5d719038 100644 --- a/backend/auth/schema.py +++ b/backend/auth/schema.py @@ -1,29 +1,10 @@ from pydantic import BaseModel -class SignUpGoogleRequest(BaseModel): - credential: str # Google ID token from the client +class SessionUser(BaseModel): + """User resolved from a valid BetterAuth session.""" - -class GoogleJWT(BaseModel): - """Subset of claims we need from a verified Google ID token.""" - - sub: str # stable unique Google user ID - email: str - name: str - picture: str # URL of the user's profile picture, not stored in the database - - -class KimuPayload(BaseModel): - """Claims embedded in Kimu's own application JWT. This is the payload that is signed by the server and sent to the client.""" - - user_id: str # UUID as string + user_id: str email: str name: str - avatar_url: str - - -class KimuJWT(KimuPayload): - """Decoded Kimu JWT (includes the expiration claim).""" - - exp: int + image: str | None = None diff --git a/backend/auth/service.py b/backend/auth/service.py deleted file mode 100644 index df9794ce..00000000 --- a/backend/auth/service.py +++ /dev/null @@ -1,79 +0,0 @@ -import datetime - -import jwt -from google.auth.transport import requests as google_requests -from google.oauth2 import id_token - -from auth.schema import GoogleJWT, KimuJWT, KimuPayload - -COOKIE_NAME = "kimu_session" -COOKIE_MAX_AGE = 30 * 24 * 60 * 60 # 30 days in seconds - - -def verify_google_id_token(token: str, client_id: str) -> GoogleJWT: - """Verify a Google ID token and return the decoded claims. - - Uses google-auth which handles JWKS fetching, key rotation, signature - verification, and iss/aud/exp validation internally. - - Raises ValueError on any verification failure. - """ - request = google_requests.Request() - - id_info: dict[str, object] = id_token.verify_oauth2_token( - token, request, audience=client_id - ) - - issuer = id_info.get("iss") - if issuer not in ("accounts.google.com", "https://accounts.google.com"): - raise ValueError(f"Invalid issuer: {issuer}") - - # i still dont know how email can NOT be verified. but it is a field and guess we'll follow the spec. - if not id_info.get("email_verified"): - raise ValueError("Email address is not verified by Google") - - return GoogleJWT( - sub=str(id_info["sub"]), - email=str(id_info["email"]), - name=str(id_info["name"]), - picture=str(id_info["picture"]), - ) - - -def generate_kimu_jwt(payload: KimuPayload, secret_key: str) -> str: - """Generate a signed HS256 JWT for Kimu sessions.""" - expiration = ( - datetime.datetime.now(datetime.UTC) + datetime.timedelta(days=30) - ) # TODO: this is a very basic mvp ship. we need to migrate to a better solution with token rotation. - - token: str = jwt.encode( - { - "user_id": payload.user_id, - "email": payload.email, - "name": payload.name, - "avatar_url": payload.avatar_url, - "exp": expiration, - }, - secret_key, - algorithm="HS256", - ) - return token - - -def verify_kimu_jwt(token: str, secret_key: str) -> KimuJWT: - """Decode and verify a Kimu application JWT. - - Raises jwt.ExpiredSignatureError if the token is expired. - Raises jwt.InvalidTokenError for any other verification failure. - """ - decoded: dict[str, object] = jwt.decode(token, secret_key, algorithms=["HS256"]) - raw_exp = decoded["exp"] - if not isinstance(raw_exp, int): - raise jwt.InvalidTokenError("Missing or invalid exp claim") - return KimuJWT( - user_id=str(decoded["user_id"]), - email=str(decoded["email"]), - name=str(decoded["name"]), - avatar_url=str(decoded["avatar_url"]), - exp=raw_exp, - ) diff --git a/backend/db.py b/backend/db.py index 9d179645..e6f53d04 100644 --- a/backend/db.py +++ b/backend/db.py @@ -1,3 +1,4 @@ +import os from typing import Optional import asyncpg # type: ignore[import-untyped] @@ -15,5 +16,6 @@ async def get_db_pool() -> asyncpg.Pool: """ global _pool if _pool is None: - _pool = await asyncpg.create_pool(DATABASE_URL) + ssl = "require" if os.getenv("DATABASE_SSL") == "true" else None + _pool = await asyncpg.create_pool(DATABASE_URL, ssl=ssl) return _pool diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 822ec458..8cbcbed1 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -12,7 +12,6 @@ dependencies = [ "asyncpg>=0.31.0", "fastapi[standard]>=0.115.13", "google-genai>=1.22.0", - "pyjwt>=2.11.0", "python-multipart>=0.0.22", ] diff --git a/backend/uv.lock b/backend/uv.lock index 7e23526a..f293d0f2 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -86,7 +86,6 @@ dependencies = [ { name = "asyncpg" }, { name = "fastapi", extra = ["standard"] }, { name = "google-genai" }, - { name = "pyjwt" }, { name = "python-multipart" }, ] @@ -102,7 +101,6 @@ requires-dist = [ { name = "asyncpg", specifier = ">=0.31.0" }, { name = "fastapi", extras = ["standard"], specifier = ">=0.115.13" }, { name = "google-genai", specifier = ">=1.22.0" }, - { name = "pyjwt", specifier = ">=2.11.0" }, { name = "python-multipart", specifier = ">=0.0.22" }, ] @@ -1025,15 +1023,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] -[[package]] -name = "pyjwt" -version = "2.11.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, -] - [[package]] name = "python-discovery" version = "1.1.0" diff --git a/docker-compose.yml b/docker-compose.yml index 84cf6840..1469cd6e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,17 +16,11 @@ services: build: context: . dockerfile: Dockerfile.frontend - args: - VITE_SUPABASE_URL: ${VITE_SUPABASE_URL} - VITE_SUPABASE_ANON_KEY: ${VITE_SUPABASE_ANON_KEY} container_name: videoeditor-frontend env_file: - .env environment: - # Ensure server-side code can construct proper callback URLs - AUTH_BASE_URL: https://trykimu.com - AUTH_TRUSTED_ORIGINS: https://trykimu.com,https://www.trykimu.com - AUTH_COOKIE_DOMAIN: trykimu.com + BETTER_AUTH_URL: https://trykimu.com NODE_ENV: production HOST: 0.0.0.0 PORT: 3000 @@ -43,9 +37,6 @@ services: env_file: - .env environment: - AUTH_BASE_URL: https://trykimu.com - AUTH_TRUSTED_ORIGINS: https://trykimu.com,https://www.trykimu.com - AUTH_COOKIE_DOMAIN: trykimu.com NODE_ENV: production PORT: 8000 # ports: diff --git a/migrations/000_init.sql b/migrations/000_init.sql index 4a6b4f5e..b0d594dc 100644 --- a/migrations/000_init.sql +++ b/migrations/000_init.sql @@ -1,39 +1,102 @@ -CREATE TABLE users ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - email TEXT NOT NULL UNIQUE, - name TEXT NOT NULL, - created_at TIMESTAMPTZ NOT NULL DEFAULT now() +-- BetterAuth: user table +CREATE TABLE "user" ( + id TEXT PRIMARY KEY, + name TEXT, + email TEXT NOT NULL UNIQUE, + "emailVerified" BOOLEAN NOT NULL DEFAULT FALSE, + image TEXT, + "createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(), + "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now() ); +-- BetterAuth: session table +CREATE TABLE session ( + id TEXT PRIMARY KEY, + "expiresAt" TIMESTAMPTZ NOT NULL, + token TEXT NOT NULL UNIQUE, + "createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(), + "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now(), + "ipAddress" TEXT, + "userAgent" TEXT, + "userId" TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE +); + +-- BetterAuth: account table (OAuth providers) +CREATE TABLE account ( + id TEXT PRIMARY KEY, + "accountId" TEXT, + "providerId" TEXT, + "userId" TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, + "accessToken" TEXT, + "refreshToken" TEXT, + "idToken" TEXT, + "accessTokenExpiresAt" TIMESTAMPTZ, + "refreshTokenExpiresAt" TIMESTAMPTZ, + scope TEXT, + password TEXT, + "createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(), + "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- BetterAuth: verification table +CREATE TABLE verification ( + id TEXT PRIMARY KEY, + identifier TEXT NOT NULL, + value TEXT NOT NULL, + "expiresAt" TIMESTAMPTZ NOT NULL, + "createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(), + "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- Auto-update "updatedAt" on row changes +CREATE OR REPLACE FUNCTION set_updated_at() RETURNS TRIGGER AS $$ +BEGIN + NEW."updatedAt" = now(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_user_updated_at + BEFORE UPDATE ON "user" FOR EACH ROW EXECUTE FUNCTION set_updated_at(); +CREATE TRIGGER trg_session_updated_at + BEFORE UPDATE ON session FOR EACH ROW EXECUTE FUNCTION set_updated_at(); +CREATE TRIGGER trg_account_updated_at + BEFORE UPDATE ON account FOR EACH ROW EXECUTE FUNCTION set_updated_at(); +CREATE TRIGGER trg_verification_updated_at + BEFORE UPDATE ON verification FOR EACH ROW EXECUTE FUNCTION set_updated_at(); + +-- Application: projects CREATE TABLE projects ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, + user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, name TEXT NOT NULL, timeline_state JSONB, - created_at TIMESTAMPTZ NOT NULL DEFAULT now() + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); - +-- Application: assets CREATE TABLE assets ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE, - storage_key TEXT NOT NULL, - name TEXT NOT NULL, - mime_type TEXT NOT NULL, - size_bytes BIGINT NOT NULL CHECK (size_bytes >= 0), - metadata JSONB, - created_at TIMESTAMPTZ NOT NULL DEFAULT now() -); - -CREATE TABLE user_identities ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, - provider TEXT NOT NULL, -- google, apple, etc. we only support google for now. - provider_sub TEXT NOT NULL, - created_at TIMESTAMPTZ NOT NULL DEFAULT now(), - UNIQUE (provider, provider_sub) -- ensures each user has only one identity per provider + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, + project_id UUID REFERENCES projects(id) ON DELETE SET NULL, + original_name TEXT NOT NULL, + storage_key TEXT NOT NULL, + mime_type TEXT NOT NULL, + size_bytes BIGINT NOT NULL, + width INT, + height INT, + duration_seconds DOUBLE PRECISION, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + deleted_at TIMESTAMPTZ ); -CREATE INDEX idx_projects_user_id ON projects(user_id, created_at DESC); -CREATE INDEX idx_assets_project_id ON assets(project_id); -CREATE INDEX idx_user_identities_user_id ON user_identities(user_id); +-- Indexes +CREATE INDEX idx_session_token ON session(token); +CREATE INDEX idx_session_user_id ON session("userId"); +CREATE INDEX idx_account_user_id ON account("userId"); +CREATE INDEX idx_account_provider ON account("providerId", "accountId"); +CREATE INDEX idx_projects_user_id ON projects(user_id, created_at DESC); +CREATE INDEX idx_assets_user_id ON assets(user_id, created_at DESC); +CREATE INDEX idx_assets_user_project_id ON assets(user_id, project_id, created_at DESC); +CREATE UNIQUE INDEX idx_assets_user_storage_key ON assets(user_id, storage_key); diff --git a/package.json b/package.json index 3dd2726d..bd386c40 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "@radix-ui/react-switch": "^1.2.5", "@radix-ui/react-tabs": "^1.1.12", "@radix-ui/react-tooltip": "^1.2.7", - "@react-oauth/google": "^0.13.4", "@react-router/node": "^7.9.5", "@react-router/serve": "^7.7.1", "@remotion/bundler": "4.0.329", @@ -39,6 +38,7 @@ "@remotion/transitions": "4.0.329", "@types/cors": "^2.8.19", "axios": "^1.13.5", + "better-auth": "^1.6.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cors": "^2.8.5", @@ -49,6 +49,7 @@ "lucide-react": "^0.534.0", "motion": "^12.23.12", "next-themes": "^0.4.6", + "pg": "^8.20.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db5f1844..60369929 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,9 +69,6 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.7 version: 1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@react-oauth/google': - specifier: ^0.13.4 - version: 0.13.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@react-router/node': specifier: ^7.9.5 version: 7.12.0(react-router@7.12.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(typescript@5.8.3) @@ -108,6 +105,9 @@ importers: axios: specifier: ^1.13.5 version: 1.13.5 + better-auth: + specifier: ^1.6.9 + version: 1.6.9(pg@8.20.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -138,6 +138,9 @@ importers: next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + pg: + specifier: ^8.20.0 + version: 8.20.0 react: specifier: ^19.1.1 version: 19.1.1 @@ -376,6 +379,85 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} + '@better-auth/core@1.6.9': + resolution: {integrity: sha512-ADFk5pwmLybmc+LvYvXJ6M1x2oY/EyYLkwLuH0x28FUq12DfjL0wnE7g+WRDf3yozDO+qIxTpFGXDGwLKbfz0w==} + peerDependencies: + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + '@cloudflare/workers-types': '>=4' + '@opentelemetry/api': ^1.9.0 + better-call: 1.3.5 + jose: ^6.1.0 + kysely: ^0.28.5 + nanostores: ^1.0.1 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + '@opentelemetry/api': + optional: true + + '@better-auth/drizzle-adapter@1.6.9': + resolution: {integrity: sha512-Lcco5hOGrMgc4XKAkvB6x72eQm4wCcya8IevMg4wBHY9W9GVg8pu23rpRX6VsVQSO4Ux13S7lFwUWtF7/r9aKw==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + drizzle-orm: ^0.45.2 + peerDependenciesMeta: + drizzle-orm: + optional: true + + '@better-auth/kysely-adapter@1.6.9': + resolution: {integrity: sha512-gyjuuxJtZ4o9G9z9q4kqn24X2kvMSp7F+KHogYxF03SnXY/2WleAcuj57iC4wP3e9mGDbjPOrnM5K6Kr3Ktdpw==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + kysely: ^0.28.14 + peerDependenciesMeta: + kysely: + optional: true + + '@better-auth/memory-adapter@1.6.9': + resolution: {integrity: sha512-XmIG4tUnOXZ+KEcWjHUjOI9Z5donD09dC2t/AQTXifAUIqx7cySg86w0KTM09ArzAxRx1fCqO36Wkt5nULnrkQ==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + + '@better-auth/mongo-adapter@1.6.9': + resolution: {integrity: sha512-h+AiRJ/TsBSi+ZDjySASBpbJ/9QCXBre34PSKgCz7QmTHrFM9Cg2EM4AM7LjR5lPXipEE+2rWPBc9wfnUBjhcw==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + mongodb: ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + mongodb: + optional: true + + '@better-auth/prisma-adapter@1.6.9': + resolution: {integrity: sha512-XHks01ntK20orqK/jICq8wmEbJ/zT6dct49Fk8zTQKN9QNGDc+Ix5+7z/Kvui0DXGFf790GfvRozquzaLtXa8Q==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 + prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + '@prisma/client': + optional: true + prisma: + optional: true + + '@better-auth/telemetry@1.6.9': + resolution: {integrity: sha512-0u5zkhSCAQFoN3DHvUkLHOF6MBbVTDAa6mU8mhPwiysdz1x21vMzhzfaAKN/ZGWaQ09v91/F+2qu42G/bhUV4A==} + peerDependencies: + '@better-auth/core': ^1.6.9 + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + + '@better-auth/utils@0.4.0': + resolution: {integrity: sha512-RpMtLUIQAEWMgdPLNVbIF5ON2mm+CH0U3rCdUCU1VyeAUui4m38DyK7/aXMLZov2YDjG684pS1D0MBllrmgjQA==} + + '@better-fetch/fetch@1.1.21': + resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -941,6 +1023,14 @@ packages: '@mjackson/node-fetch-server@0.2.0': resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} + '@noble/ciphers@2.2.0': + resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} + engines: {node: '>= 20.19.0'} + + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -965,6 +1055,10 @@ packages: resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@opentelemetry/semantic-conventions@1.40.0': + resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} + engines: {node: '>=14'} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -1450,12 +1544,6 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-oauth/google@0.13.4': - resolution: {integrity: sha512-hGKyNEH+/PK8M0sFEuo3MAEk0txtHpgs94tDQit+s2LXg7b6z53NtzHfqDvoB2X8O6lGB+FRg80hY//X6hfD+w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - '@react-router/dev@7.7.1': resolution: {integrity: sha512-ByfgHmAyfx/JQYN/QwUx1sFJlBA5Z3HQAZ638wHSb+m6khWtHqSaKCvPqQh1P00wdEAeV3tX5L1aUM/ceCF6+w==} engines: {node: '>=20.0.0'} @@ -1740,6 +1828,9 @@ packages: cpu: [x64] os: [win32] + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@tailwindcss/node@4.1.11': resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} @@ -2157,6 +2248,76 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} + better-auth@1.6.9: + resolution: {integrity: sha512-EBFURtglyiEZxbx4NJBoqUD8J65dX24yC+6I9AUbIXNgUkt76mshzGbHkxZ3n/lB7Dwq3kBC+hHt0hUQsnL7HA==} + peerDependencies: + '@lynx-js/react': '*' + '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 + '@sveltejs/kit': ^2.0.0 + '@tanstack/react-start': ^1.0.0 + '@tanstack/solid-start': ^1.0.0 + better-sqlite3: ^12.0.0 + drizzle-kit: '>=0.31.4' + drizzle-orm: ^0.45.2 + mongodb: ^6.0.0 || ^7.0.0 + mysql2: ^3.0.0 + next: ^14.0.0 || ^15.0.0 || ^16.0.0 + pg: ^8.0.0 + prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + solid-js: ^1.0.0 + svelte: ^4.0.0 || ^5.0.0 + vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 + vue: ^3.0.0 + peerDependenciesMeta: + '@lynx-js/react': + optional: true + '@prisma/client': + optional: true + '@sveltejs/kit': + optional: true + '@tanstack/react-start': + optional: true + '@tanstack/solid-start': + optional: true + better-sqlite3: + optional: true + drizzle-kit: + optional: true + drizzle-orm: + optional: true + mongodb: + optional: true + mysql2: + optional: true + next: + optional: true + pg: + optional: true + prisma: + optional: true + react: + optional: true + react-dom: + optional: true + solid-js: + optional: true + svelte: + optional: true + vitest: + optional: true + vue: + optional: true + + better-call@1.3.5: + resolution: {integrity: sha512-kOFJkBP7utAQLEYrobZm3vkTH8mXq5GNgvjc5/XEST1ilVHaxXUXfeDeFlqoETMtyqS4+3/h4ONX2i++ebZrvA==} + peerDependencies: + zod: 4.0.9 + peerDependenciesMeta: + zod: + optional: true + big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -2395,6 +2556,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3041,6 +3205,9 @@ packages: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3088,6 +3255,10 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + kysely@0.28.16: + resolution: {integrity: sha512-3i5pmOiZvMDj00qhrIVbH0AnioVTx22DMP7Vn5At4yJO46iy+FM8Y/g61ltenLVSo3fiO8h8Q3QOFgf/gQ72ww==} + engines: {node: '>=20.0.0'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3335,6 +3506,10 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanostores@1.3.0: + resolution: {integrity: sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA==} + engines: {node: ^20.0.0 || >=22.0.0} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3495,17 +3670,43 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.12.0: + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} + pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} + pg-pool@3.13.0: + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} + peerDependencies: + pg: '>=8.0' + pg-protocol@1.10.3: resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.13.0: + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} + pg@8.20.0: + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3765,6 +3966,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rou3@0.7.12: + resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==} + router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} @@ -3843,6 +4047,9 @@ packages: set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + set-cookie-parser@3.1.0: + resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3926,6 +4133,10 @@ packages: spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -4556,6 +4767,57 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0)': + dependencies: + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + '@opentelemetry/semantic-conventions': 1.40.0 + '@standard-schema/spec': 1.1.0 + better-call: 1.3.5(zod@4.0.9) + jose: 6.2.3 + kysely: 0.28.16 + nanostores: 1.3.0 + zod: 4.0.9 + + '@better-auth/drizzle-adapter@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + + '@better-auth/kysely-adapter@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(kysely@0.28.16)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + optionalDependencies: + kysely: 0.28.16 + + '@better-auth/memory-adapter@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + + '@better-auth/mongo-adapter@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + + '@better-auth/prisma-adapter@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + + '@better-auth/telemetry@1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)': + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + + '@better-auth/utils@0.4.0': + dependencies: + '@noble/hashes': 2.2.0 + + '@better-fetch/fetch@1.1.21': {} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -4895,6 +5157,10 @@ snapshots: '@mjackson/node-fetch-server@0.2.0': {} + '@noble/ciphers@2.2.0': {} + + '@noble/hashes@2.2.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4936,6 +5202,8 @@ snapshots: dependencies: which: 3.0.1 + '@opentelemetry/semantic-conventions@1.40.0': {} + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.2': {} @@ -5421,11 +5689,6 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-oauth/google@0.13.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - '@react-router/dev@7.7.1(@react-router/serve@7.7.1(react-router@7.12.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(typescript@5.8.3))(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(react-router@7.12.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(terser@5.43.1)(tsx@4.20.4)(typescript@5.8.3)(vite@7.3.1(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.4))': dependencies: '@babel/core': 7.28.0 @@ -5765,6 +6028,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.50.1': optional: true + '@standard-schema/spec@1.1.0': {} + '@tailwindcss/node@4.1.11': dependencies: '@ampproject/remapping': 2.3.0 @@ -6266,6 +6531,42 @@ snapshots: dependencies: safe-buffer: 5.1.2 + better-auth@1.6.9(pg@8.20.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@better-auth/core': 1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0) + '@better-auth/drizzle-adapter': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0) + '@better-auth/kysely-adapter': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(kysely@0.28.16) + '@better-auth/memory-adapter': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0) + '@better-auth/mongo-adapter': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0) + '@better-auth/prisma-adapter': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0) + '@better-auth/telemetry': 1.6.9(@better-auth/core@1.6.9(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.0.9))(jose@6.2.3)(kysely@0.28.16)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21) + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + '@noble/ciphers': 2.2.0 + '@noble/hashes': 2.2.0 + better-call: 1.3.5(zod@4.0.9) + defu: 6.1.7 + jose: 6.2.3 + kysely: 0.28.16 + nanostores: 1.3.0 + zod: 4.0.9 + optionalDependencies: + pg: 8.20.0 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@opentelemetry/api' + + better-call@1.3.5(zod@4.0.9): + dependencies: + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 + rou3: 0.7.12 + set-cookie-parser: 3.1.0 + optionalDependencies: + zod: 4.0.9 + big.js@5.2.2: {} body-parser@1.20.3: @@ -6512,6 +6813,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.7: {} + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -7369,6 +7672,8 @@ snapshots: jiti@2.5.1: {} + jose@6.2.3: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -7404,6 +7709,8 @@ snapshots: kleur@3.0.3: {} + kysely@0.28.16: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -7597,6 +7904,8 @@ snapshots: nanoid@3.3.11: {} + nanostores@1.3.0: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -7757,10 +8066,21 @@ snapshots: pend@1.2.0: {} + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.12.0: {} + pg-int8@1.0.1: {} + pg-pool@3.13.0(pg@8.20.0): + dependencies: + pg: 8.20.0 + pg-protocol@1.10.3: {} + pg-protocol@1.13.0: {} + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -7769,6 +8089,20 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 + pg@8.20.0: + dependencies: + pg-connection-string: 2.12.0 + pg-pool: 3.13.0(pg@8.20.0) + pg-protocol: 1.13.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -8026,6 +8360,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 + rou3@0.7.12: {} + router@2.2.0: dependencies: debug: 4.4.1 @@ -8148,6 +8484,8 @@ snapshots: set-cookie-parser@2.7.2: {} + set-cookie-parser@3.1.0: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -8244,6 +8582,8 @@ snapshots: spdx-license-ids@3.0.21: {} + split2@4.2.0: {} + statuses@2.0.1: {} statuses@2.0.2: {} From 1985bbe743d3fb237b7bb1f158c0bf18e5066183 Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Sat, 2 May 2026 15:04:58 +0530 Subject: [PATCH 03/23] fix: improve session token extraction --- app/routes/projects.tsx | 14 ++++++++++--- backend/auth/routes.py | 21 +++++++++++++++++-- migrations/000_init.sql | 41 +++++++++++++++++++++++++++++++------- public/screenshot-app.png | Bin 737943 -> 0 bytes 4 files changed, 64 insertions(+), 12 deletions(-) delete mode 100644 public/screenshot-app.png diff --git a/app/routes/projects.tsx b/app/routes/projects.tsx index 45e8d2be..1f26dbc2 100644 --- a/app/routes/projects.tsx +++ b/app/routes/projects.tsx @@ -57,9 +57,17 @@ export async function loader({ request }: LoaderFunctionArgs) { if (!user) throw redirect("/login"); const { origin } = new URL(request.url); - const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/backend/projects`, { - headers: { Cookie: request.headers.get("Cookie") }, - }); + let projectsRes; + try { + projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/backend/projects`, { + headers: { Cookie: request.headers.get("Cookie") ?? "" }, + }); + } catch (error) { + if (axios.isAxiosError(error) && error.response?.status === 401) { + throw redirect("/login"); + } + throw error; + } return { user, diff --git a/backend/auth/routes.py b/backend/auth/routes.py index f569785c..e9722419 100644 --- a/backend/auth/routes.py +++ b/backend/auth/routes.py @@ -1,20 +1,37 @@ -from fastapi import APIRouter, Cookie, Depends, HTTPException, status +from urllib.parse import unquote + +from fastapi import APIRouter, Depends, HTTPException, Request, status from auth.schema import SessionUser from db import get_db_pool _BETTER_AUTH_COOKIE = "better-auth.session_token" + +def _extract_session_token_from_cookies(request: Request) -> str | None: + """ + Better Auth stores a signed cookie value as ".". + Extract the raw token used in the session table. + """ + raw_cookie_value = request.cookies.get(_BETTER_AUTH_COOKIE) + if not raw_cookie_value: + return None + + decoded_cookie = unquote(raw_cookie_value) + token = decoded_cookie.split(".", 1)[0] + return token or None + router = APIRouter(prefix="/auth", tags=["auth"]) async def get_current_user( - session_token: str | None = Cookie(default=None, alias=_BETTER_AUTH_COOKIE), + request: Request, ) -> SessionUser: """ FastAPI dependency. Reads the BetterAuth session token from the HttpOnly cookie and validates it against the session/user tables in Postgres. """ + session_token = _extract_session_token_from_cookies(request) if not session_token: raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated") diff --git a/migrations/000_init.sql b/migrations/000_init.sql index b0d594dc..37fac771 100644 --- a/migrations/000_init.sql +++ b/migrations/000_init.sql @@ -1,7 +1,9 @@ +CREATE EXTENSION IF NOT EXISTS pgcrypto; + -- BetterAuth: user table CREATE TABLE "user" ( - id TEXT PRIMARY KEY, - name TEXT, + id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, + name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, "emailVerified" BOOLEAN NOT NULL DEFAULT FALSE, image TEXT, @@ -11,7 +13,7 @@ CREATE TABLE "user" ( -- BetterAuth: session table CREATE TABLE session ( - id TEXT PRIMARY KEY, + id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, "expiresAt" TIMESTAMPTZ NOT NULL, token TEXT NOT NULL UNIQUE, "createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(), @@ -23,9 +25,9 @@ CREATE TABLE session ( -- BetterAuth: account table (OAuth providers) CREATE TABLE account ( - id TEXT PRIMARY KEY, - "accountId" TEXT, - "providerId" TEXT, + id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, + "accountId" TEXT NOT NULL, + "providerId" TEXT NOT NULL, "userId" TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, "accessToken" TEXT, "refreshToken" TEXT, @@ -40,7 +42,7 @@ CREATE TABLE account ( -- BetterAuth: verification table CREATE TABLE verification ( - id TEXT PRIMARY KEY, + id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, identifier TEXT NOT NULL, value TEXT NOT NULL, "expiresAt" TIMESTAMPTZ NOT NULL, @@ -48,6 +50,26 @@ CREATE TABLE verification ( "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now() ); +-- Guard against adapter inserts that send null for user.id +CREATE OR REPLACE FUNCTION set_user_id() RETURNS TRIGGER AS $$ +BEGIN + IF NEW.id IS NULL OR NEW.id = '' THEN + NEW.id = gen_random_uuid()::text; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +-- Guard against adapter inserts that send null for verification.id +CREATE OR REPLACE FUNCTION set_verification_id() RETURNS TRIGGER AS $$ +BEGIN + IF NEW.id IS NULL OR NEW.id = '' THEN + NEW.id = gen_random_uuid()::text; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + -- Auto-update "updatedAt" on row changes CREATE OR REPLACE FUNCTION set_updated_at() RETURNS TRIGGER AS $$ BEGIN @@ -64,6 +86,10 @@ CREATE TRIGGER trg_account_updated_at BEFORE UPDATE ON account FOR EACH ROW EXECUTE FUNCTION set_updated_at(); CREATE TRIGGER trg_verification_updated_at BEFORE UPDATE ON verification FOR EACH ROW EXECUTE FUNCTION set_updated_at(); +CREATE TRIGGER trg_user_set_id + BEFORE INSERT ON "user" FOR EACH ROW EXECUTE FUNCTION set_user_id(); +CREATE TRIGGER trg_verification_set_id + BEFORE INSERT ON verification FOR EACH ROW EXECUTE FUNCTION set_verification_id(); -- Application: projects CREATE TABLE projects ( @@ -96,6 +122,7 @@ CREATE INDEX idx_session_token ON session(token); CREATE INDEX idx_session_user_id ON session("userId"); CREATE INDEX idx_account_user_id ON account("userId"); CREATE INDEX idx_account_provider ON account("providerId", "accountId"); +CREATE INDEX idx_verification_identifier ON verification(identifier); CREATE INDEX idx_projects_user_id ON projects(user_id, created_at DESC); CREATE INDEX idx_assets_user_id ON assets(user_id, created_at DESC); CREATE INDEX idx_assets_user_project_id ON assets(user_id, project_id, created_at DESC); diff --git a/public/screenshot-app.png b/public/screenshot-app.png deleted file mode 100644 index a9f5b9736585459165bc36f937070feba8580bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737943 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∪%D{mIh)RK_c9^H7<>h^cqjNE7bXxwM>=1}Ih* z7|$rLLtAp|2x;hrDK}!gy-vf|*X~a`Jq^@VR<{RTe;9ceT`7l>#h~GojNX} z(>}5QO}fvhDbMA%Y0<~8k5^~;NW>z|$G`hILif3UlJHp5_?>@2L;-c1TL!>g5H4ZP zfi5zcu4YB4C|z(psAwJo*87P{ZY(<0)CLWR2++xMX* zAxp_*fBW47o)%v!oZk`&yGdRR#f~h)K?e*}?+)pQg~VpxVImCLDSFm{5`?vB((g6u zYw6YHIk6jbYVTC!Z2d5FayiGoFk`m|-x4p~t}{d9eX(8Icwq5Fv;9xvdNw|jTnp?O zeExj^k;o7w#@52MnqKiaui1{NyXDotm`m~b$sLRp>rsa&kQ)l$n(1cXxr}FG>3HUF~<*HIvv^S_)=jLeKGwaG+&Mpy}VyXT)4z zR1GjkZ`Fnt6o~vnAUmXPKG0|NE2^9JUb)ZCq=C@nHG0cM z7XzP?NthgUaD=MDs@nmAm5=&N48^k~YMuYC`{Rx}?Xz_S{kDBw>(55f=#PRGO7tEe z*5(5%H#f`oXZ6TkfuaUWk1$@xJ&y&V1KjL}HG|LMm~lq6MAX<*D^UufYq#ZECi)NV zV<`Y6*m%$pKYDaQn(?R!jMFMkn9}ZjYY3!OHB0mauL?nBnLEQk@#ue<4=L6AI8$5q z({`^C*w}N|*ZO{US#W`^J{)a|tb57`-&|@X_YM#wJvnU)7nKhN-+f&+|G5s@U1))j zcQdX0;-Q6`bvKUc@xHiZ0j`-M-SMLAW<-KVhmc5?p~|Rp%lNcge{Mf#Gn5aG)m&sk zaBEr#7KqD>)uUnV@ga`1p!?g;W9;WPZI7J^p)Qi*soUlYkDjv`vYf5vS7aU>dSW7e z+Pekun>L@&at!0KzG=4lHgUFpdm|rkKKEpId?{4W%!lw&ve)YRo7sW-lNE3v{iw}8 z-tnnc_wFz3J48^!U1dW5@}=bU@{uEgl@9K2XTC)Ki03MJ9@G0}*W&MQeV;4iD|U)u z8C9hZB<63yC`vo7dWml5@waDW*+dHw&;^B@0EiHVAa)?0y2LzrlUcgu>2-OrCEIWt)o< zN1+_ZD2@&?)3#A7w?CH`3cx(+(Rct<0J~a6Lo}9VhaEIiA1DtBUAv59>3;~0ghdYd zI4;>KzNx^%v_f3LUPmY2F|$ zi0x}NTAMncUTxRrJO4lk4ltajPGMSzr5dW?u_dOV-(YBIT8MwmCWwxB^nL7jLb+vh zlQ)1pv7SI)ObGR8X}{-VwP`nwM_(p)T$I+}BL6=b7acGl zuxxN(aDWtd6UTJ}QB6@bw2ZI=(lg0eVT{zkgIrVk)DyqsaEmd9HD|MqEQAP2qI;?b zDR-_J^MccGwd-tTZAGqf>$Xi5)c*1jZMpf6So);uJ%WI?OBY!?i2VcxWf)(-cq8)r z8$bG~p0+R?rFL_zW&cVxWDP)LYL*8?ULd(wo@0Qo#mN!^@kip&y4!?*TlD0L zfX;r~5lsUuZ8dkUXO~~gBXsdRAau4&Yz4xZ(F zpW`>UNlB@wge*94_{cd1#hqP{enroBgm6XU>nKX_4N{B3I08*--b|S$&{eZ}s#UH3hx* zMW<9{cH8=lLc3(k5)g`bbH&}3ElGaVHW&HhtX=mR#@3ajew<)mt(@91DZ{2i&NNdl zO%D6<6%av4&Hu9bYp9gNC$LjiGXv4| zaV-F>XXwkhULaQxeDH$x)3G&JLwV`p;|H9sqqcn%(?axWG4ZfiVL2g%>vh& zJwxj39~{=Kp<@l&qI?3Tz3u*YonuE2@ZP`0TpmTSCn3dP{Y9u|rYPstb^@1xagKft z(mSS_!JC_?o~gQ_UT3+^8ETB%+OlTZ7L>N4reEdyf>^bAg*os1T`an=edJ4YPfo4gjQm z-=ko?`h z=FY_Y5)C4S9B=iVfx$j~A{9NIl%!EKxs5>@^VK?35uBBk_0;wbz%N4Eb-e(bf;~Mg zy6~Uz}nvVfFEU!ja^jc&6gy~eDBEu$%qMyuQgFGW|*Ufcv@D`BK=RvhW<;01W zOV`Z2P5yyJmICIzi`x4aU!f$QhDdb*3P1vekca5ef+Rrg)A{A)Q#4lC5IfXWT3Y(e zjW$RR?bdLX6~JMPb=Cg9zvLMG=l8)mU(YVRwjfQ@QYZXvSju^kE@TLUz2A) zN|^NP_Qu9x?KS}CBML0tivyr8Zf<6UzhZBGfbrWk-mDAbJ@7Yz{s;IT-|OInvH`7O zDzb!TyrcNAE=Fo^VqOk9xJoQm-AOl^dHp-G-S9t&9UL&Nd235c?(`0TF_x7uRVZF@ z&;>tw^e9XIb`A}IoZr1D{GC!h3boim$r1uW=-WtY_P@6x>POx&`Px{&mZ z4DPC(SGm33fBj57{v|m1+J7f{-R$cfvvOcGZXO1D((g-xJ6-)?JIdIZk*UTl#ZYA1 z3q0EtWch=SJ&^qKX7t1NOw}jeQ;Qf%gt%YkKHk_~ZF&ZzdT3P@jH}zvUpD)h&rcwq zuuEtU?&#G#i*Q8DRAZN$uE|S=3!?Xi23Rw`4-bD*G>O5&h)$-2 z9$_uthTi|RzJo<0x}=9rHXZ=sxorEZ-a`G^pY@@#Dbp?7wKRWr77FjkdbiO7EL@; z#2~_Wvech;ZBeK1h!S(55;0lcpZoQmOr<8^H%mm~K_<6mZun9Fv?BoUaZWi-Z@5^AVhUAY7Hs|kBUOazuA z?|UP*2&M%|_Woo$H|_-lN8hssIDnKUK5Cf&B+?7pDs8MzB^*uQ5BkMyQwnyvQe8=7 z&_p`VJMms6)BFnL_;OO?&ePsa;?+g7qw3uWFaj0zkB9sIi9HsSfDCLFpQE=~8Y}#L z#-SJ$nIw8!&~1c9gb;tXF^ggZ5C0nuo=kAcEXSS6HOWvCa?&ivM0^7~9^PgHL(uM% zC~MvaK@`=>h6b0)Qvw3M?7>2*;n1qLwzTOz2OKgYZx}PI-5k@T1z?=knTEwIgjyH| z?yPB+STazft9lWe%Ea?m<`3Vl2OVKEt&@H0XXT+69f|u!LGbYCNk3PTIUljIrCWgL zS56!bCEZ3wfeYT|kvDqHxf-{l{*&Kplaz`RF)^kag+D*8bmA8F>cgG26gQEq^BkhV zl-V&W-B$ek;ajoB_Jh)o94||c@HaDBvLk+dX^%Z)6*DL!2w`tdzfN}J6pVWLGwR%q zj@}IQaRRB(mR-B^BP=xS&T!mk@#@@|GwN$TcEYi%#e>RTah|Vr2t4LO$w=wiQE( zA8j{2i)8zTk;Io522~yU=2E&{2KrdpLN#mRHO_gmw$5VPs8=+fa^F|{fEz?ORZ|}x zi(8!TVkvE4#sWbUrc0mexuIRKb8LCQ=}1orXVdkZRk=V%-h%$$)>7^;LTU5gihE@yx81~d){6X(wFEA?F|RlOJedV}2-_PQ z>wqPA1`F9C=$QKb(jDr`h>0i(!X>5$5|nawEFWd=%?Ljnuo~F<1`s1wsxd2ptFsDcW__Up%@AyVW%pVvp{5RFx>o>g&F%PkMkeF%3=vhu;4lwLu0 z6SmaT41g{B@h&rAa=H_iohU@p%2k56QX}$O@jBQFp=rvYhPg?1Wje|lEMF2^L3IOG zDI8T19Vl2R1c!0N>+6_cCxGr;J^`;oDrAgfWQh2L!!fF>$lO28h#p$8cwwyNEL4PH zG*Pp#M5j~iWaf`Q|BT=tactGCybFqmW6k|uwA+kLFz*1%ZJDKr&}{~Iy7L(G^^ zy&VqWYZB=BGuY}+WbS-<;?m@D48TiQRA!MK`)b zAHK-pc{?hUhphFGyL*>0oBNq{uMLfODd@qYLvsxSJgOhq@gG2b-1HvL_$M&Xv)MS0 zm)aBumBLw7WNa-3AlFEEWE9Z53L5JlHZru%5KVm=hnuAQ-58bEr~N5np9LY&%(XDZ z#6{G{3u+8D)->YGRPki?z=;L%f3u%wqM%adKNg{6AW5<)i{eOZ<8d&0tYwdBW5w!= z%mR-wOnhd``VBVQR7!hJ7k* z*gPKO)iSPQ3g!?lh8Z7rD${!0utmlII2&2qyZ`XIm-{ub2$f(wv^ti%LbAt15sw6i{R3y^7y#6zRi? z9b@g;b-u{SR4RfV$nO!$za%D;_cc4n*HY9)=LljzSEdb4laYC#Ks#?;r=)1ki<*Lr zjPmFZ^IJbB4}FOui2Rj_xpcO4P0GtW?dPH2$%qUo26t%SzrNUgi!%a*dta7o3+$N6NpHB(EH421iQIrWmOh-fT(4L%qTxCuIZR(CSIa4 zXh>ZkLCGg3ewDy)%e|WLElPeMyxcTGDuT=~41Y8OMhJLF?%?DURiXD8C`!-6)yhM) z=&hZE+^Yas&LZS}xuD^c3sf?TSgDvaT18D>r#e#OEkD{gDh)e7X8ZFiRDdcAHDw(B zgEMTb(L{S|5~x{xNF&HhuACn(_1l~TTX=NpdpFCo8D?UH%oDQJDlE8KynK8>?n!^7 zau!mp3_AA2XmM=?$x#1S6$RTSm;ouVEDACmofsjuk${}MGuxs2L)u~@4M)EI0d(n> zLfk5`xBA*&REVvanGxUi827(PzHC_V@QLDsw-2D%gupOTNL9&wyQfuR;RthkA`I(| zA2i6){f`7f3S3ZAxC-_!IP!k~8ny&dsUJT#Lo4`2!+!N#4={|%!8+swFN|;aKlRFi z2Dx?hVj%#Z(@EQ%Yw&$MsRFpbr)8zhwm|xVEBS6@DN{}PVTxdr11%y4g#0wv)n-y*}L>cBFWb@MpcRY^h2cX zia6c^vreZ=leKnFZJzFtl3qpjY?=Zu?e8yb5@}|;LV1&AK#GP~ZGNB#YQG8$uB9r3 zYe}*0ce1(Wfn8}9yT7!Gv&}xmMko{(7$yQwatM6_h%`Xw2fs4=N^Sbk;djl!*H_nq z!FSZjXY@HyufCe@R>$p~wEJs*ThqWb4kRJj?p#`Y>DSWhjdpdA^-yWTOduNX)H1u< zjP98T3ogfzWZ`!`*+O|)Xw3(!ElAge#%vUcsj5|bLJ@oxa@)ieIRA=k*?BqigE$7@%Esw0&mee#af@8+#X4T#)}DB_rgrV)|!Pd_*9L zCv)60gL=XL$JbZIMcKX4zC$V<(hNwelyrj%64D`E(w#%sAR-_oqI4qzNO!{^CEd-? z-Q979?|;tixty8byfYVTKYKlEt^I7$S>_neH!VWS4e4#9u`lexXSE&@ijp66_Z_(` z)v9^F)Cs4J3i2hJyEb%eOQ+AWevC+v=A~gV5&pf*RT%Zwdgix=Lb*yBovoBLL>Pj2 zQK$CVS5)R*_;At1<$&`1vWSGAjFP{gPiDKNgjW(HxLS+f+5D49sy=s!H6{5KW0+@3 zr%mLV$j7)>_Myz4_g6w{)67xoIlB3--ZpqVi55P7Aytc2D zmvuktYU1~j3~%Gb{W8(J!J>-UaE9Ray4T*!N7vpTOR(gR=jnn;2hzJX_x}lZN>8qh zeD1ER;Q5X1b=^`o|v3e)Mr>nsb@*C5{k}r=ZpQZ}3Z2AhTgOr)AZXtsiCr;4bP{Lwg)6Sv6Jon0=Tsr zh__+?0Lp>OX}kd~#!eMPyQe<`{42fxRJ}z1iSi*3|3e^WV!&t#h`RoOra>8JLGLN1 zlkaEL+KOGV&Dj!u$5Q;P)!9QskH2E~GMi`YR>6ruYg;+ z&|?1lXDV1P(4%xf=+J1LLl#fhM~L499AnE)WMx?Ml8MYEH?Qu?o3B`iP#Ut5YnKUr>cVfvq-j!(oN;lQx$S>@+8+#txYb+uLJI3gDh>x@n z$!T!AF8(U3_aTR#(Ugmq^6)2iKWwL^`khSi-+gEWp?X!5QcoRy$v`-+5h<2 znstb~Pi*A4;(Bj|8Mb+~Kml(9m7V>B6~DKrn{%L=!?zRK2WrHO@ST6OL(LvI-8;qp z#wozs5T3{&48ydJPRbKq@n_Dfy)> zO`ZhsuWe!8R!1TgsjmIT{!4tO7m48E{eY^AM+C=a!wCTV1KYC@4EQpQYeGg% zJQnRUfM%{7iN95xH{)vm)n6x~XUH1Mc)EPF+vbe27;vln0Bw1w3V6Ygu_oVsibq{L z0Ka1eq9feS3{oZSo=foN1#gp};eGmEN~LI_;8WS^+J>9j*2>ZeDxI1)Zn%e`9g-9f zo%xGh?)b?~(93{PABp0MekY)>baOr6 z7+ff9$L>O6z~WeI>wSfWN43|%uYjoPa~i^2nQ)AJlN4FTDC?^H!WzMbgyrxSNSYb_ zxAD;O`s(+LlZDa+fZUb^KVd1Lz)dL64NLC8@YdXO50r)|XDF&?Kn#A;v%;5v?_cTs8SwwM_XO4q z;LvpbZM5o16fy7+yKn|LiKkzfMvB#}6QKAI4$U8+#E9nRdc5?U@>HN5z)1h$% zM@i$Sn=DcimyZ(g-G@0T^vtA5jN6T$Tgn2dakVWjlP#-m|0)@IAnc2 z{F$20JaVY?!foqpWxWB`8e4@cg}6UQuL+lA(TK5|PmlsfKg268)ge}jyH%t4-wXnG zzDZ~4ZB_p?kF`?zhZyB#Dg6*_(co~ont2$aXk^R%^@?ALY|^w^pov$Ud$u%VT<11q zO$x;Drwk$3rh7YS)nzd~RXezT7SN4DvTGRcqi4%&ACl+ z+(9>=_d1Fg@HS%j5`9J+p0UnP#H@eq`q7uZb+POc_xA(%mK$Hd<1SR0v41)IFgLz9 z-B(=DaU$p-^-mZP8`>IxAg_2EG3;ITUS2#S61g9_su~|jd5uayH;_vqz|EC7pX}6H}SlWyKHuNUsH?<=pkvZBq;F8vN z&%+nk{rCsRIE@Sh9=rY3I@D%x81U1%w|PgiSqP7#?bLno7MB`s`t5QS%byig8j($t z?zZ{%2XOB_V8qGnwuo|GpoRfx!;QM!OYK!xCV$~AM1=%^5fGL95S0YenmPCTq9HM!hLp8djYo1gQlHjckE|pq0sdpZ@BIg4E*QUn`o$x23hJ&^?zkR@D*LrnVk#c z5(vF_u+=VURC4Bm7;4l@gY}Yt10(g88?gxOU@PWt(($48vFQT@Ja3|HR(VrhnB_FW zU3|QfZ+ z{Ue*zw#NKnmRXxoN?kpp1GgBdm)Or?| zVyS}WlL4a4xlJ+VVEh3FVkMOj5ZpyR=<`4R<=d6k^|CPWrL*3jVPz8UOb=+8W0tg$ z=hVhtaP6Eimq*-YKax+G{Pk}AcoaBGh0(a-Bl%=e4veRN5F%{DSxEhI zaPPiXx&iP@`yZTVx^kY1_O%exOv!YzJf&4x@$k)VNI%%!Q;DmITESa9B56(!QIr9r zM56%MAkm8`@Bg?g@`qOPpn}Trz3N035Mg`oru&sCg>hKdo4^$`WT437;d{WLo*}L= ze(g35ghZmZzU6+9nC4GNVCUkyK94yJZan%_%zBK01%xquC;<(*j33ZgPz-C~*t$Fe z`+d5ks_b%9nt99d?^}nidn1@HgI|uOATxfWYi~ZO-e^^pVkxp$#3}^cg4mkFF`+hCr-9b|16fde;ZHB0b$y(MLp3cAhH2^ za)m8YdYjY|+uQ%aOFH3`@&0M?0|qDOy-*=6ngjJvRGVL8LCe!w25?#=IGNx9@(^&PsT$b(UoaE6#TZ|H&%gygfXDl(_-)h1H>%#fv?0o}ghH;} zy8sm`?R%des8b=EZ`&`kA;<%;G~fGE$?IO}uVt;cQ7=@p-zdBA2c$C{)`TT#g>~$Y z?D&5655T}oO+(dcc?eK%x?$NI8>T09kn$~;?@{>Plf<@4d|DJmEt#8(Wv2czj>fK{ za>h7!g25*}W{lX&SG%$9x50SVVDA3n2wEV=; zroI6aY|w`NjEwEJctQG&m-V9qqV@xQyqUGvudRHdEl7$d+t*^It%mBcuB};(0!8mV zam}rQxhf^+3xvdyi&rdJTFaZcvDXI4MZdtsMGh_(`=loo=xKLTqGh3N*B^pE6e%)O zWovM6ol-(dW!ryf&scBgw*-=ip(oL$W;EdaQ6bw)+I{WawTTO=yBz{G+Ad2jM$tyA z(6oHQm63_=lD+Br^}0No|I@{u>uc+dg35hmI|>o6{cnMBBFlV`#eR}5txfGTZReLx zL;HNmrdmI*+k~K~HHW`L(6hO(Z(ipYpDcP9ZcCOHH>J)WKS$h9*V%sVbz0oz^YDH6 z^D#T10&jaGNNK(Y@CuV8Dq_-5{>y$NngG2)M(Ocoqw85y_l>#);1%!qFQRAN|(fKIIrNp(D&{e9_ zg$r#tuUeoZ`#|UnmienLf^&%R+@06owFH~{Dcx^9HT~Ckft#|TmMRh>CD;ufF1ag` zBDDM=ThZDfGN_H;KR#S@I^E+nW0$gk;njucY}74&Ab)mzj9KnwoywW;7w6AQwRmb- z=UT+{gac;{lB4oSc16D0gM!RI9}@`k|J$?pe_4QtirpqoIrBD5hS$DD6z)L4kfa9l z*jK}qs<%Nk(#7MFTy^s~w}&l6z|E?_=IGm$nwAtY?7hHc<3xN6Kv~mKbXoJWz$Yj7 ztaARsRhwpxwH>s1nW>9U(1n{L%Z@5PMDtaF1X z!c||uv|liVE|->TuIbZpg7$T*`p+;)gbm`i5_u7Z(JuVb<2Hw5`P@-Cqf<8AsdB`_ ziu`s~W66E&ec$CRH+i?8Ei*f|+&~@gR$oaoc5Y46lPTp2RwS(KpWPH5Xn1bd@%*&3 z=$3J9Cw7J@^_NwATvKj7lALe!OW)dJj2~2V-CBN$ldC8-D#sGLYiD2HRMkC=9bQ;$ zPso$aNc?ih&S|t(H4-8mY}-&+VmD&TmoIJMd1e@Yrl)oJw~N$st2doKk=t3sK8Xs~ zrn_Aid~;ZPzBmOs zbPS_}8=@fx>mGE8W8y6?dK|}8qp_?M|3ma38^U?DPn!gvVK)iYp9d8__m5Oj`~gu{ znh5~>PQQC6<5VWgzdxTMaxexpGTokmO7VZACq8ovcyDhEig=upI|!R5TmU}}WRk6J zJx_&?aP2*1auYQcUp56nyLO)0W+uV2#i%~(&u2`Xd?y&#Jgj}%`SY?WH)cQJ;Sf~1 zgXNLw#6oqC1}xc}{T&MW^Dpb}>jcZ6rjR`ir^>-058@v?VXi)Irm-~vhZ3<0nt2C> zrqba0)U*g_R4&iY9tv1FWzzV@K0-J*R%akRHFvG{_O^%pI!?MQ;T;bzJ=cbO>?*}m{|G{ zk4C)a(ORBA_8WnPW#-7i7}}S;DibbgI;!+vQSl}HV%~{lmS|||?EDZJFMh^rbT>{W z*Pcxt)zy!~{{B&-r`Z zb(Xw~rb>oM+=b9I4L}qthZX}l8?bR@BSZC4_=;d28|YQnn<5N&6LTVi2krPmD{*(d zIK4=Gz9$GAO0irn71JQ4ffOa1myZ?p=#fu!<#N(Y#vvlxfPBZ^B83B067^oz z|N6A(IHVL2Pe_$&2_dA{L`Lxql6;aT>SG(3bfmnUnwqJdH95Nnkh7Xs~Wa_M&8O{0P^E z7IRJ+#TavTSj>3W6Q~`pvUUdxi$yvtz-B|z^0;<6IZZP=ns-rU??@$R0KwAvYj7nQ zK(n=TRNw9&;aX}0x~56jc#dc--w}-z?Qc@{)5bF%rZI4plh!liVJ8|E|E2pyQy_e; zT{NTy7W1u`z+>K|;qFrF_tw^@WB8Atzc4cO4(I#QDSl-;0xL|>SGUzOl9VYKZuluyu`uo6Y zSi7RaD6phaTxn&;pD$o@yE`x3J8K|*cPr$7mqXSK%Tgf8t#x&c)X(n|DQONSl*?eE zhQYGNY6_;J-m-z|{?u4kdN@&s`&KK6{>qa1roBsH(}_K|t!NrGxA_vFPSHd5#aKYJ zL{Y-($@%@cC^u#)3jAQ>SjJED(JK1;r~o|ODaFsML*nE~R)ONH|8NtcvRDcTdb)UM z1Jn*ZR;ua4mY%W6g}@<)0a6H%jBq$3{GSf0@Tj6Hyi14nQ?mf~xh)TF&F8Z%JZNz7 zU@8T>lh(A`8gU`_kL_39VS}hQJ88SF&qnrbZ@{Ok@HMLT-(My8lL+cr9fYl7osK{J z+nl^6af9ZxO%FF7yuAr3>LIsMCDwjpd?5d3zSz8XbJJZ0YCQOKZYwOo3KVF-rWHGT zxEv`4-vWKae;vAqYeegWc6uqk=WO>SbJ$9^Xdyjh2Nr`oj<;Y;ANZy5t^Ee@<7TBZ zfU{6BA-yF%EY2jANY<94ev-sW+e(Tn8w?At(N6IXcG)-haU>dLer#OO*;IvQOQkLq zQ8Kha)Grb7T3l(y(=jqC^gYi~6 z;QBk7uzE>d0i8zQr@50W+f~Vx;1IjFEEJI|mF(+1a&y{0BBd3ldgV4b(8Z*C6^5#L zT@qjD)+h`Api7lK-1d=g^s|k$Sn7%-J~8&I^=Zn%IJBih2;6TdONAhGmXcQyJe z%QCHB*H+VVqi)#b9TFZtc(kj|!$^<243iX1i_smgW`z{d#7&r+o5zmEa}F6g7pb33#LRPGsy4 z__e+TOi_21oxkRflp24|%UE5%@SbzLVY9T3id-kele@2y*}u$Pw`~c)ky$?kGT++I z5_HcxZrZrK_AEJive{%oudGD(WMZ+zRxNc=1?|*0IdiSEwWub7)=?tq`CgTPQ+bbD z=rnmO0}K-b@rFvMj;VGJkLmR;*^20=f0S$hfD07+S_~I8GH5|Lm$L4AP4bw?`?r5tvmbx=LwM+t-zeyW)ta1Sg z%8LFkneEC)KCUbOJhrI_+5ETM+!$@t_{)z09I{y3bskNg3yW9Rzv(HQ-4= zw--2AW_dGjZc0Az<;jBoFeg%IASCyM&e{+Gr0ExLN;iaYw}&xs@y?AVKye2?XMs0S z%;4m>wUMo92;(gYf%ffe4(rZSh8?W%>+aT#pz~hDS$0ea*|4N4trzYh(t#SrJ|>J? zJ)6b^pliQDTR+5U0P5Nfdy2DNf?;FWA&qjnS8(Dj>E}t_8S`uX--vWed$ImIOw~fe z@abjYEweBF_KEesEShf6uZbKe7Om`x8+(F0?v*v;=QAhwVg?czu~h33{AIP$bVkoD zJ4^NKh2tdY<4lB;o~M0Sv>_FUqZt}y|B!<-<=0au+OJDI`FhC2nKF{uOVvkfa(GlH ziB#d2s}xw)#(E@7P{L=2(s5p&iImIJMto4CPPP*=tuuRUn!`Tg{l)CnAWO?Ft5rAS z*)<;L!!DWc1DRu~r%l{ovs0kPZ^ecxNzs_VW_kODub-szHE3n0QWZO17oq9WeI0du zxoY9ejxAa2am2KC;YPoawxQXi!k*{NA7AbyHMh zbwQOP{xPdwwacBCtwx%jebFnVsGm}dy)#&T!)jt@N|CB@9f_eg2k)9VB9-_ z67Hf;O9jw;o{KTvdjqhYGoiUlb}b>5uUPsF86|ns9;H7uB53d>2`m`^?n2s02y*(~ z_ng_~--}J-*=TG4ZzdZ!jP*l@=|0*A)bAgi&8!I-R~>YyMABXHx$a}3K7J zyp+L3s;TK7N{x_ad4lcPxLX^dQ1w zL|ad$)l&4uKREx9$}g4munb!7LH*H9lj9Y;U!q)!E{@JBS#oo~i2lpU#LhI-3S3=F_JO{$fh*T|8}= zYw?R#cqJ#CGinP-&=c*zHo7K4JUMN!Z+-~Ux>}+-_>unMs4rN^g)78vrahEG&>&d} zK_4?vR__vNmL-?3{kJ;HtS2|WxP&m83_j6qMx>DhPCDZ#2H=kKs}s7x@|I+mwgE@- zede*+Q-uiK?AJ~I^3}uVbiKoiQa@tV@lx%4^!5wUm}5@+{=P{^uS7lHqt4SAG`lr& z(2i{JvVL8Q%6 zs5=s2GL}^&|CPQ&f09d=T}R^KEQW%kwCsNkeFhgv$bLnvym5AN^Q$d@Pu(H3&T^yFFV+Q^ zZ|M#;QF%f!CwcGPrlI&f!o{GeQ}K;D%Qn2lyS;2lGq$G(iz6kFavd@}mu2c5IfLp{^&P|q=E-bbngSeSfz;uTJK zuFEqQb2|}fd&@*a`w&?HrRLXNJR8a@Q(`u$!t%Wr({uSIoeIdAwkRhWnr+q8N`st3 zm3HEO_qhCah%+6Da?jfr)S#-jjdxS; zZiJv~`?&NOO*~VF9`|*;dE;WCP`sdl(i~3{w)a=^I>tHwaEA@vWMLreJ^zdJ5|pA@mJAD*oq2EbnB@C zmvZ}JenN>@`Z%amEKBsKkem*cq+=KK=7ZBF57suKj6Qf%~SC z6TQclYU7yZ5a+ogIm(T(fTy6u@;1))M$du&m(%B1x|)WFlPanqPyFMcuInKDubRtZ zw6xMnK2I0`iu-fM-9v`2L3c;3B{c&XsrQ2`?5A2R1s51MOiNsX)j{kwcf$V!t&YZt z2Ns%HvomH5LW-gAIC-rJ9C!16<0VRWeS5TG?;->%iudJ&YVphH@?Ar4cBD1mn8%c1 zdO?UL*ZgQ2x*i?_d!Yy5F7}+`d_iyWQYtV*y7Xc?#4EU~V(!N*)32%Lzn<}>$X5!> zQK0VI`)HS_lfjL6O5dN>>}TlkM~!!E8c8CLEWiSA1=QNND{BMxk_(L<@W*PjR%;`e z6tc>m=r;BurFwm~uD`du9{Y%&G2O$dG)inps1F)5(^s;E&(=6pG^x|YD5)LP3MMIW zP-RYUtM#$u@v(`Y^$Eo}AS}yLy27NKU(0QC^~wH(u=VU5AeOI>nJqWSLU;JXd35Si z!8S!0`BGmZ97g81%AEXTZu{7Dd6gJRmu8C0n~#FDx=G6$Pp40$HjUk=w4Gx$xFg4{ zV%e1|>gqqx&*T~yu@ENHC-n@^rF9AfQ?UO+3WNT82#m?*Qn8|bv?iewoBP|PuA?WuwV`>@{nUW8Kbl>Uhs!&aLFjV z*|PfauKjoEp|gWWKw|wz7)um{i`6TdvUdInl@bR9g$!N6&1Q_?b{1~H`jQQBKnrT} zxNar*{-GAUUbS?&86ylg(Q7NCb_aSrcVl>t=es_77Ke;k*d6zK?lI@b4DlqiGsNMi z%3y5l9a1n@U3}36#k%38n~KIaV%}j|-UKNV(|RJW9(#)VI>0GhI!=WT8vP)<3iHbp>^OV~VB~r(br91P_fSaO1?=T`!YfHmqo~!C8gL)NaFY!|9dLKM zzI#=SXt#G9Md-i`i!!^ge_ATeuw(aOYfKcE`)xEpUTF;>iXlM_gh6H;p9zCK+nI`Y zQgl;Vw=Xs?OdtXiRvt^i8=UHFt7ZB@vy+bHnmR10@}uR#8nzsxIlOyOim$fR9M1*$ zw6e4uV-zhDQ#p=}O=GPX<%HwtGHn}uc4)K??48^l2oc*(?wL{*&2M=LGZ$=KV50JF z6|EhXoLNji+DE;J^3f)X7nYJ2ZqSD{QsTt}2y3)Dw)jfjaN9zOMsc%Z1Sd-jHsnZx@9eu}v#sK1Wlh%hi(D(hxTvXq`Aq$G+~@{n&_KH#4l}P? zl~+$|s5P?O8X!^QLT#`dD%5?Jn=Lge42v=GGfk$FxBZDtL6k^-bc$nr{oCT3-N8?% z5u>%@k5cXLf}>}}5Pw#3Dbb-9x7h`NlQv~Z^{J{MvRb}puPXfilMQlo`2A?v&GG2XWv5&l~(7!Hq43<}ujlkTw}c z`?mzV2uVU(W_}u?^>;Ta$Y{(#17Fh}d0;c$_Z^C$rt925SM^TD@K7@f*WKkQnv`F? zkp^wJ9OQl#Q~zdBJ>oX@DZ_ZdVf^R%$%a(Y2A@!Ck{shl-y5hbh0cygeG)yj8pI{T z@y7y6nJ!d!3$%JCs_k`FCW)eqd&B)njkxi2ea|{P9z6Uo3pi8YZQixnfFSgD^Zkm$ zt|VSbh+D6BDvj?`z1@B6L)99$A+fhz5k{UjT#NpQ1>+KZ=fM58MP$F&wq)8(?f@pV zU&WbQHOy`o9L{r?H}Tqv=1Rpq^^aC+`i9{Cmv%+sVkyxvaduGVzoS@q4}%czNQby^ zbZ>j7R__oEVli4To+kZXp`12}gQ(?B4leV~N`VDkz0>kdXu5{IN+IdLdiZt6nBv^0 z=ZFA7`KDo}SpLn^>sqCB-!Unk<&;#;vc~533tVypET&0~UiM*Cy73j*qh`dy>cNbW z+pjD{m85DC`{TFxyi=Neqe4UNC$fL`m=`ztBtKkQO3?lIb~Iihs?5DSR9vKH%O7eb zJUVJ#?^o--N6P7cul|gPOLoo6X$3E;*!8T3C}}qPb*ia(QO|J@R!+W9c`&a;z={Fo zp19H7GK<$yT}8WMtWAYHbNmnVa{Gqv&TH;O?PrqVqYk$1Jp4)4nIeP}0tNbY{^?g+ zL^+8lRxi1~%Cn`fT}M*=g!xBe=Es*t&i%7rFvW!CFhDk=aPihMQZa>~n7v}sc*YOT z@J$^#f&4?|{FVNk(%3}UN#1d^d*29hC3IP6HqYwJI{>{fz-MDch#m?6hd%(x_} z&~q>-Qxday1H*mw?8_H;RH!1J4XRJC_fdL7wl+&=C|=x|G*r6A^DT#q#a9IF%@ASu@CDlIoYYKS z*q~wqbKBl{#+;OtGY0t2un)Jse5wfu1Am=X)8gFn{xR<5>8aqPL+iQwWn09@1Shld z;-K4BaFbf#I6njLbm|XUCE20xi2S|(;r#smChEnY(VNX0Ds!JI$u{TuWmsG5-*Wr< zJ^TIU>%n{t|95PZEU_HD&BYFTD*uc+U-*5y?zFFt^M995zOiePCfk?u^MlLDJ+nL& zA8#)m5#LZ1f8uZHdU6)zOb-)uHukrb6ZFY3^{>!f%7@zV-em5ifT&%_K&&70nSdl5c5db>!bWes7w?!+IE?J`g(WO%i>Wj1FhvHJ#(VjBm_B~o0snw!VPaZ$1)XN2^@Sein{@Bhm>ybtUKJSP#0 z#vUvn<4H_-gFVT8)4`PA`8?rZE0Pn;^EEFYT?U#e>1Tv-f&!vXpC7>a3Ldp(qzWga zj2sT#k-e;x%RX3e)AS6u-;9h7L9F1T0vkxfxSmgPu`MK=W|hQ_1AzP6Prel`#|&uV zbOfi#YXeJk1c%EBsC`?GmeF~ZAmdd{RBZ~uZ%pYpHKv;>B=KKIj#!_UaHO=L+}lV& zaQoB0kOPZN*A~>BIPi)u&CBY|y*i(r$`<|-7Jdp7v?9c2e^Z+GVC!`T%^}wQYaFjB zQyV0v!Y0l@cLuGFLQw`u;-f-ow{;zGfL_^kvCOZN7sqb0hfB_{N=!XELT>y7ZYoZZFe;e-L7Q+CWMS9eh`m+E+VG=*O>>*Q8g zJMrCMaa47@xUy}zXNvGo7AVp0a7r?ZeX4L>EB!^#*@AO`fb7gC8E-J)9DRS@a9wZV zmXJNS%TnS(wBiaUGSw#`pAngRWVTf)@yOphot~LnHy!LRd;P%6D&K3ifz^0%PIRGJ z0C5Ya@|X;*)$uGXte=rjZbDY=GNm`f`4 zy%T18a9|w(-7`9cv41ZR=%uH(R2{7aPaan+x0a71vW2qt>Kr zERHsv&Nfp)eRbc9P!WG%SH>cE1b3AH5&O)0)S&S~!VK7@Wi?d)TXT|0T#Eu{2vPto zhBTq5rK=;2-89BWbM}Y#PMdWBvWtt_w<$nE5;`jZd-?ye0BVbQSi88;AWT+F5hyAk z>if*~JF4I=DPE0dG-j}=2vd*G-o^DlVJJ^x!~=9fd|OcEe|8%Z+Qkz5f1grka+gnn_Os)W>)QSikz1=b{oI~BMd;yK>NQ^dryql6 z|2lAr7Yr;p$hz9sC!~{W6PHito=N!MQBwU9=4`s8p3Z9(5jZG)t)8J*LhL*%wF3LO za;t91$fgMU#+D}0))VB`e3dKl$;~G=zWG#VppVpAKr0NUero#>W?2E5;V(8VFROdU zfj^qa!|T5N6N%G3D%-~UZIQX@spV^zVC>w%!{mTHCJPHJ-xZOC4a|jr*hIT1PG9f9 z3QIB_-*t4|s#mtX@`9-tapMd|X<3N9lf`{p(jG4EI?*tQ&fkL^pMsyRI(@R#xtJX; zN%al=MFj<$cPQ((Cr;M~Bcnt?`!sG{`-wcyyV{O~p<>V32em&rcs~KyE|%LMKsf3@ z&fH?)aOwVsgeX8G&LK1x*VwFzwt_v4}wHJ=lRz!5nxagEnJKoC14Y{%uprpf9-yME2I-GaI33Z@A_PUe4+Cb zHM~w=>AeK)n9zTDpEoa^(9pAn^9oVt9BMA^exkr-2+kOqH;+&jB~IxxT+zMWZhTTa zAQ?LagWyE_!r}m)&2l|A#`H8gG}zqTt}{Kt;#`0LK&K7HYl1CZ|K%|0(Isf21}t@g zCOt+l^cl0TEnx{iGYP{sk9{<5cTqo;88}l%wR>GZ9QKYxMKm5(>5`+#+y5p;#(@Xd zs4KgwTV14ZD)a7Gw^4im?e@01#OUvN)jN6bQQ3p* z{z^~(c0|6g`Hr#{Jd*g5g08u#`Ge7$Tf?6YHGza~iFzsYj-85JZ}b~Am?d%3G3TUeANZ);%-;exiI-gw>8Rmjui8| zR=+}rUnW8_yxVGNY0R;lYHV?`Orv)8Y3$SVHlMyl_vro**+07pq9ZYJH6_j&z z^kx~;lGa-9d};?UI7RQgboYe26W>ql3tV2|2lVwGa2y#IbmykGz&ZV{>95qH(wpu% z7VhS4e{!QYUxtk;4CcHXVE@sJJeuQZTJ@?j$!)oeS98JK%|7gETF|uud(-=C)gJqP zNg>zAo@^oEFsZlO`8ipQx7q3Hdf`r6>gjFbCmz;R9Yfm3snxA{)YON?WOsY`AFoVb z(=p+gEy$pq8am8pJY`UEdi~O(gi5dFgXf{U)f-wS6y4pD(23*R zF{Xa2826!g#$FTTWy|=<{6aP&b8`Maz8LAkXKN%I&r=}Jt{W2P3L{P+_mga5v|Hp-W5X#uD-p?ypB1M$#{y+Kp(6 zJ7FHaMUEF=40@(^@V|zYMG|S`q(}IB|Iqbn1TOI}ix%!>ke;i)R@WKrviuNbyWovm zz}gM!MG5T<8`O#5Zdc?J6Zsh!o(X)KMh_AkZ4G+()Sf>n)35?-nrWjkKF_EO)g!I) z5bG+sOf9@9uuUKgmFCSN46+(~{s;SsoiX`5H!8rEohODOMkKH&62U|@7vlLr5Sf4D zrV$BkIe$|d8ni!MT!=omC)A8R6~m`XWxs?)x^KLMc201R26#4V9(;N0s|~PG_s+{N zmTiY%LTf4sWG>f#v?gIzCrLB(iwJ=7q7u{f|vEPsWcu7 zH^koKjxkQxg@wgVOBLysCkTNdoDhgL78hz}wR$FEci7IhQWrN1*1!Ch&HPgsNz}eB zCc@im_ui=6VM8eO0AC@8O$BJiZg zjL+^3NG;`gZE=Z$h4$xk{%$!QhbjA0;$ZUdOS<*0iv*mrH($kiI6-0u{f<%6{g$XJ zu(2C`{K6g%qFZG8USEw5>aXwSaG#xlNjZ(;qRevja&&btyWmbZ?%O2gLXr82Iz!8a z#f9qmV~K>ttKP&s23g;^Hz}A)Zg=@!?cfcHKTy<%x5)MCAC?sfcu7(3EVD)kHU*$> zBrnMxWo^kkU4CMWKyAbuw4AR$S0X+HWeILrMMaF@2e>O+u_g0TjL?t*y?g(%=L>wq z>WkV?7vHce|5@^Sep_)nOZexE1|#Q~*hkw0mCXHeN{k!`nVUte^$Tq|?!tj$vQv)k z5wL@8yz+u2@r;ovxBLX%$J0!n&yd3T?F$Xj=^f-sGP@|55qWH-S6>{y1uZV7LG<&3 zK!=A{ONOs@_Cb7~-Nec-3=X(XQ;~N0^YWQ5|MQG6kW@?@BSyj``BDW`8iHI=TOtNx zS>Y?5fS?l)(ps_sCHYQ@Hi-k2{{Eery9ly7B6vp-ESxgE0s2UIBMQ0mj_Ea=E1!bx z2^x--Kal9FKRu)hw@H90vDp}70d|`Sgs76V=B14s>_F)rXfZ7mT5aXdn*>gFU&xufI3Epn2Q#U>-8~b0Lo4wN z4_i7K1$q(TIFAYRo?)sE6Ey}KAEA90x2EdChq`SSXw`Y_EfAQZ&yZ66!W|Ghp-wF# z;gp_J_~*aRFJfn}X`}b59NUMIKr|@o`3!7nasRh&fm8IK0ij~$NDAh+B`*>gO4~*)o zJ+lH+`Fbgag3+$)0{JonC>WIW2~o(yO8<1UK#NQ18BO%966Bapo5~AM1SQ6p`Ux|S zo}=i37A3n2NYx&hQsg63q68}+>ms4n-BfU{_{fyxu#kBVQz+kSNa%)^cV9<}#6J*q znyBcXI21Va8&q5_k@0fSuFa)%iZozgEm(!@_^oBYpniOTb zLu92ook~7V0yb|%VKJ|fSsegQb4y~Bby@-es4_6Q#+s?vLId!qOH6KP(C14YLcWip zu2+{RFDj7kozQ29h)JN-n-1?&@HWJu`DaO&nq%gOwZX?sdqKBnm-z?iKg%OKA+&-Y z{POnMSu}Ugb{5yLUtjjq+=xMtME{`3JmqMgCAFpwA#YV2%nGD!l1;wxK>tU~pw=ec z=0vx}FDo?zkyCeDo+^GT6~&L)I}{e$==8vJm*$fY*Yw0OyeK)Kr^(|%Os+yXcltM? zLdfS_w8=1BR%6WLAj_5z!rt0*O!>>3q`)yo;eDOwKF*d^gm)Fj9mjM;caLuPEGr3h zO|SZ33QM|jW|%j8n)k}{%ij1$-7~ytg_z*2m)`x9$gtdXwe&)0=9ZX?D|X{m=SNbD zZ)Q9%#gFDjHCRb>hy_eqKQwiWR+t+$xJPPEW*Js#Pup>8aUA~b8i@TS^I~;mtfof0 zsRgILzweee9}-c8NkSAR*d6+oK8-%U-^I-0?+YO8GL7XP0)9bFK8-yq2v zS`_BaN0|J3`fgsWh1%A=elSOxPgHwwi$aGdWq;)2huM6A>P~~-t-oUp_SLLyam6cc ztgzxPlnk;_ZQ_YNqM@vgLYzc`g69}JxI(5f%faR!TJu7LtPG~?cNHzB{W#8|+)J8F z3?W0uZD@oCZgUYL&=AWD1SJOhkNy)jII;4_?9Rn*znTIG%%?<>At#qTER<0f`64Yl z2V=&;__QE!ii_XiMPROtqeNRc7*^A`MgoZcY_y?!Tp)yxp#lcdQ?z0w&?50vzD@k& zd4J-3_%KjP3-aqjibP_~6%ThKWioG~MZkY?#XXe9fT$=O8g!`gYT0l150C3H@X>`u z5jm5b&sjl-8(n~$<~`=G9gLph@;x;*x7U2?2c~FXOKDzi$O~XyaN*s$cB2Np4N7Vf zUnggH`u15~gu(eI#ml8j0zsb)slV%hxIC~sa$&oB&OVG+f>+{c#X${!s?I<`3}|=p z;+i1+F5!AQn+N1g;%v~;gL*JJy!poKvbWWWz@B1)lXT}K<_FpY9cF1L%>Dn+^o`+h zw$auTH)(9Ajcv1OY$p?&jqOaEq_J(=wr$&LZ2Oz{obUXcAM;$-Gjs2I?Y;KeYwJ#B ztTdTUY`IPqtTb9Yx*S8>x^+-n>|iEJO|#~5OpkBn`!UdUmqG7AwcVfruD~OW+g$GF zuG^6dCmHsL?f~~@9ne*WON5^LCAeSmr%M@PX>b8)T@Oa9NlF_@Ik&qq(WodZZ)?+p zu|}4Z#?>@2kxhh*S42f-8b{AcLp2#s9B_^T>N!zgZomJu{~XOi=dw<%;QX6tB0Yb$ z5E!>HaN))*2azh*xY)G3yc*3or^7grGQfjarckjO59Q!074GvnstsJ>c3&8ZW!8lgk(&(5Q-R^Is9Hx zsnhX!XP9l_A8?mlq>wkip|5CszAn??;Yi!P&GOP)oOE3mtjMs5Wr^T(0ZT_3N9{-H=)+u^<_6qYoKu0YLKK{5M-HfEd6?%g@^#uf}Tx z@gTVF4;Dc{cOUgh$8MoObO*s1EHe-HKV-=69YuP()zKbB2L(Vo74Y$@IbgkY>E9JE zWzX$4CL2Of2i`uM_>Zx>FI`g)!JtgsiVh|Kaps-4(CY`_%J<6ajh&A$74C87$s7yt z5zVwd|1SZOLYG)h=(M}h3qo=5Fl;knf)VBcr|J&inP6q z3lLuf5HF%-s_waQvv@qN4qfhulV!RsK?_PU!hi-awD13e#Q);+u>!1MxYYjH@P`G4 zSORd?qbKC5`9^PbDJ@YAs25qP3=T>}oA!UHYWw8~-QY&0X?@@d`9$xBeIYMr%M`3} zF?wWP^|umwCKr}D6KWZ%n-`u0@+*Ka;s_TVzy?;DLF#~4B!~JTTfIht#ubs|ro{LW zKn0e-UV9Yq(yWtC=x)fj)_Oj0ua`7C5X1co*tcUa77;1?(c;eyI6;LtN?`xT0_c97 zS8ELXY}Xh#d4nU}XzO1W40I2dZU0dfXJl-SwXvKCRY}MYGaWWx&)QT9lm2EJ8_08f zfvoomVUXie<`}VX`kDB$O4px<*2t-CqHH>D5}?B=k*A*I;;gbl_={j|o|c2QfykLb zx+dAURVQC%EoP54VOWXYR1-*lz1_pR^*OVa-qI||nM9gYJu=0lywyB)li}5GY{@8a zix}8EGI&G84u0T9&f-Z8bAs8qaKw4$n0&?5u}=7yxlFvdjCGS|J{gbeDg$RDXN#|2 z!tE`a^(DLe`H4^AEzIZ&uKs%hQ*3bW27!isD^k5h{F!P>n1aw40h6D;IF*o(EjAnF z`jtcFR*9prrGF8l!tLFy!rZ0v5$9qu17=Ty$H9Hscm_}3oAvLLlTzo;!9tvt*9SGN z2>dPIb65dH!OxJQ=cikRnX)Q}&kunMI~%9>Mc4+dpszTG&sCpgT>~BZZ|N;XlQk_W zJ)3%z=rS@*4qfIW{!Uhg;){=!wsuaBi@`Ja!#U zamAUtEllr3oO${^i$=5H*hmLYQTq~hI5&ri%#alA;*zWfghKzWNkIZTD(nIiAs+qj z1rY&>hx~r!mvA7{^R4Nvq#+DIkajWPN>BdSpE3S_6$PFD)#<|2V0eMcIT_I^`fo&1 zXkqie15Bj>fdU9ZDt(nBdLYdf01&ojsQ}#XLVDtM0odo^qNGQyJ4vDK}`*Ts_f%AGx?ej?$#jy_Cp zD|apk%+hWQfc+qxTPwqBvBySVMhw3Y;`d(;LA;SeYztPuO?KtXy}+hoe9sd7vjU_K zv^}lY;$RoaQ)@bU2rT0hw&@tLt{mT;W16LX$GLg$0~nO8nRz|8S#Q0Qwce*Ci^pc1 zgS`^w?g*1wO7I#Nxq^pcacj66#QihQL!IH>+Bgfq?glIhb*&Mn4H6(H1Ok;xv8coM%ENoZGzI zdyOZJIsOU6l8T|mvaqXgxEw_PdaIz+`UZLWc;R$8h}HQRMj(n|Dfn^bF`1RtXQNT9 z&goHIGdbuPc7M)TQ#_{sd~$enwtjdvH&xfzAXctBz_A-|K86l(^AZ@nRbgKhP*2h* zwsB2PNy}qT66b2w>F|t;^4n!&*XHp3xX^C4AzE4ldVergCp^hGOBn{_Ee>FD zh_E|u4TD@%PSys&$7CM72=&*cZ)fusF&*61cR+C^*jj~xk^fO_lK-(R|AsAiYvhS- z<+G(v=dGQ43jW{spKwsT$VdokgL+e0)8JKh|$Y+$zfrj2I^w}uPL>IsJX3OJTa1lgQby0P? z@N%vVSqfIKLdbHUr1I+B)s{nmaUu_Yq*SS8qd>{h^PFArgTUmet|{d(2*aZ7B+%P7=vOH`gK>e5-89~ACcpjVLavG9FlM+MR^ zfY%aeM@}ZVbLdyqvN;}M1^hIV)w>mY*{RO^Gs$#A(}&-~B$R9@?dPi9;rd)08(UvA z8mba`Fr?8UMya`vXfHn$BsinLiE|pK2A~zD-DiRLkJY z7>SJ!;b!`qV#>1vJ8H^*;;8S%7%x{xA-vh*9Kd8L=|15JN?_qfWP+FilVOl#dVkFvo^z`<2viPK*)iAl~f3!>XM_ZT$PT8z_}-;g0~zo zX*wQO5Mms{Hm9HyKr-wO`Yk1J^DZT9HPT~a&Nn(0T@OuyW<`&mJ+pb>Jh ze7TUwxsgNpFdlOn!%su$m}7mT$8a!<^!U54xOiZpqTzw-v*T@@N*_$jvGJ}u2+s1@ zCmSzceK1gA6aHIWdP>bJd#_m*YieH~1lXTGW-sd-VFjygN0t3R1bjL)2q-lYLUmJ( z#)LPJss9GT$loC#&LRs0z&Pg_I^8~S!F0=I!n}X(0iNusMsip|U%x)?T)X4zx!S9* z^=QwZ-b?V~?CtK7bBxAdR__`LvarOARkmiex&033$ z@G31SWBmTP|9yU7gS^K)hHe4ihlM~>B>Tg_l3ByM3XlNkis{iUKz);xCh`znIdrJr zUGuv+-wm8s*I-BNC9JWp!TRs5zp4LLr$vS8u2I=@*Vyg?J9~T~tTB!3?Gpd70T+V!|7BhaJPf`%w4A*kX1zT?)@_JUItWg$z=qS?dsG@9%D zY~>&&ST*Q)Lmoa&!m2{RvYNt5CQ1qQ6M9vhyz&eF9qb=ph_iQ#@DQM^db%11^oB4Y zF;!)Bko^xSuy49`7=}tLeCr83YzMh{!LB3puvDlB*dOAh2|b>cNIfIfz3xwQJa@X9 z3pbP`>U?&fd`7ELL|D=0MWMl~`blY7{`tV#Znalme$z<8>N#~4Ihh_ed72{r{ad{i z1_1)?$i#TI{#2t$5m2+ug~{td!+4=&cubmtj03F$eG~-~ojiENs@HZwy>9Z4z72F-0If3!16o@41WqoyNGOf{y%lH+2t17_4Pp*Zw{G zI^%a(-<9g1_<7Nn$5V=)_3ScOFExt50+;e-pk&*fJ3S>u%dt4Rib}QSUP*b;d>iU<%kZZIN<`VCr+L-)PJ$9i%~mv{=^%l)J$^x8p6}u07m}L${o83r>~(WYe$d zPjRzay1>J{{9X7x45&JEKqSDZfxFo1i`Ucr=`n7{FL*c+;BMSe{7huLJBH0|o#y+R zv~mTbb>qdG*B&J!|EbA(rDt!+q4M@IL5*#^TIa3_Do6uATrI%#sthp?jT^YkFO6VW zfLK^?Il!x^RUbBBCphu4uqERyP-%Dkiuk%Q&u^paW90q z3g2HySvL~z?c@v^hikFU(Mt735O@PX?Y@3rqL!#=`~-ee0)QX`h(@x9Imb!|RRDb_ z&fGfwsdp|I06b7LwvQa!R-VVG-+n9q(Sp)az^xnjMs%3H<*%Lxs6r{)@E^nbR<4*g zOU-hu=8h$8_25BKaJ=>D%DEHJsao2$jew^Zyf+OA2wPn(3#Hz==e%fb;6A^{br!$V zA`(;pfwqEHqd`h`xt;BV2_%GiT)w7~wKQ%kL`UJC%E~HVf_$E!AXr)1SWcXQa%MVM zZNRz;>_BCibUhKH^vw8ja%qGIjK!fGmZRV$7>l&6%>8-QbY!?T&P(!r*PX{!DLJ`< z@_NjmAvql*^wjJ>XXHruB9QPaD{sa#5@$3eg}P~oFPW<;oF(d<)++;%x%k$e93|J{ z%ILey1ndFc#PhTiW??ak-2;UcZ7f4;U+A#rRokTGS1uDTP}z0hfrnO$$4Sgp zgO-$4=ufpMH1K25^8@J#tkxLaV_TgG%OB6cpcsy-;uva}NF^#d8o95kaLay_Lw?#|1w(9qg8%%(OFQsUeddVjFfNCzLFlKw@}jk; z2G9p&8d-LC&q9U0VS&RNc+f=&PW#nj4Pv0%?Ei)0wDauapsEprYQ8;Yw-_6jFiEt8L`qRX z#-S!guiKi=q5ZYlY1v@6LR?yHgJv;vEqVi|!62T#BycWE5jHGNArKm5%2yvuRIdmj zp(;UJptuPA^mI@4bWtZ3i~lkl1}S4EQR!}vY+Q9NcGQI9;r)WR`JuUKJGs)ta=r7) z)72Kjz?44bqHvKvN+ZXXeHyF*yxXSOUlA40iAvQKy4jtJy1f(P61S$XxodlXASQN! z>TqHxPC!Wa>e_qux-j0X!g7yf%i^TWcbd2p<9GH@POl89Jwu%b_hwO zR_)j22}3E=nJPKPAK6{=*yh^wdjN~$USeo1W%Yy?L5AT(e4#Q5G6qY%ba)^A_z!Ah z&b#X+BrJ!C5GHuN0q=|tRlZ3@=8=aL`ecB<#SEEC+`cD1*tx~RKt<5aL>Aj&BaL@; z8+1~A%J=b?CBna1iGkuU!U{-foxtw$5vS+MvoB7vm{;>jZ@9%gtu3O3Hlul`#VLCQnF>5J-saLE=pfiI{M)+khLfaA& zVc##VX06bu6Jm~McbucPx4(GGAzVQdC<;3mXo|spGHIDLlB?q`y$$-w*$(; zFDzVV>2T6d4LUl|0xit$M-?V&bIu`tMm=SdrnSb8f7H;4uG9!_WTOHNN9Muj!SEJn z(d*e3zl_fD5x!Sxk6QjFC0b z{7y$!A^z1IPha9f9WBwP*h{>>kZ0D?&V*4ZC11zCuT_$Z=hiO@#(AG8_2yx4j}cjm zTM}53-&&sB%U}!-<5OI(HQ&iBosrq<$z|2vuh~EiwO#L3vnCL$rIn|gr&gkPlrW#@ zJ`L@ntaq^jwU#&eMBufaaUGx<%NN1VB0Mh=xOG}!amt!rkd?Qjwo}|Bvp6N}hZ>A6a6WtroULZnhr9=-zWL2X*ybhc+qsYUR_r z*jNinYBPN3h5dq5c-s5oI2Dh*2nFggrOG86}A6atc ztF=j$Eg}2n6fqg5KYp?7(3RvZ?sQvB%Umsu(EV;o6m;h~I)A7nfs7FN6d!sRrI`2ZU?MKf-qyAd z_UzCEioAo$YkXvgADKAIAiL)MiAAKVHR);lQD-f^6+MdadlTtlJ|<$=Ni`KH*Q6>z zGLcb{V&fNwCpcsQu~Dxp7x4|hqP&1lu};9s=3kSyc1*d48tQm|Jq3ldJM#;5(XsQ=ylLj{m50B@a9 z_n&s;upot_K7wC5|6Tp*Kd_=9s-p$iJ$(7e0f__^^EA_D?0&vqo2o&A>rM&oRv36) zL7t)!G$0fwBO-;b77bc}?NfJ?UFTyWD8m)4mi*O;za5OFM8Z-fq)3=Dt`Rp7Nvd7c z#TDzKJ%5LW$M6DZZq1O-JaJw#r>d8Nj#hIRXd`gk)L>e(vFn8Qf3GYzw1LJx1(SK( zG6LXRO1cZ`YzV4JdW#!;{u zw;t(sfd7{MgOGw=<;rr|>`(8le5rq_Wuyaj)`J!ZjT&VsN6> zBLV<)xu7feIyADz0{g>F*r}f0@YoC=FF*K=JI#r+_-Q7)Can*|Uq3n}HY8{HZT@U2 zC3=5#`(ARvC!Qtr=aH_Xc!4y4C0IW^K&I53gEkP?8ATFm(FjwEx-nrV+k|ap^+)As zbT-{q|5IOE>h-3gg3(>ILc-kj~>cx2tx1OK4wt^cJLz+;{+ zQnk+9#qSD{B-G%aO_6Yc(lue;w6D};Lqx~95VPC@SLC8t^KW5g-2DP7_V1J>pu0(c zBD;)V5$g(03-P?3KS!;;#UsFV%vGCypNu`Q$3BRp@-*g>A9D6`oBI;rC2?$wAk2P#+d?h>LI+l(oX zCjOyJR+2}b`rjkwxHNCizY;Iuqi1uN%$@&ywsQo*QFVw|{>suw$m~(sH27e654laM zvANgcj4wHM7T0er_(h}pPCO?rzdQHd^LLNIAXu@Hoo|wsBQ+Syl6pJIKq@ST?fBjb zEsYu^%}m`x2r;d8qV4gK7lQ~^s{GlRQgqKg*7OiiWr7Q7_Ui>TQfB!k*^KkmS%atc{r z7#7e2$mR57ZgU`T5CEzXc?oi9Nl_^fdmG6Wx-)}haUq`{-Z)YSDB8S;HcPBV|D3^ed2Z%XhP{~ zHM`RWQX{|9|K|x@NxY;!`X`o6f|Na*n1gBuoxdp_22}hNXZyy_RuxvEQqva`9nb#cNu+5km(9$9Jge zR`9Q)Xg`zpCeYoH_~wtw#cR=XG%hQTR2XyFm*KmV$tFxtIb3*YY1Ud|YjwBs)QP*T z)G+RzW{TOL-hD+smy91}hUkL-m|VA91<){7kQXDMBg0-lLB>WnrVsqlS`Xr|8aD%P z1yC+2a|Y!SOZ=Exlv}GwcCH_h?y;)fcAi((Jf~t22#hXE%&#|5R-UV-q^xsWbESPe zCp&VOW#migI6#)aNDUG%G98K}MQ4EJb+JB`4TzdB`v8SlkMb7X`_r$lZvRy z>w|gDG?1$nV>Oef@z>sy5QstFKR{(XT~gq)lxDNvWGBJAO@)h4(^db6NZTzYH9^vM zh<{uQocabnr3(_?%ePnZ#?HnS7rR79r$*#82Rz-$!cTs-n_)D_lbGKf3ol({%-}{m zy~~$A;?%trxmYvMn<{n@Q~My_X~EG}L^k5JU}6(>7b8fIo<5cHvty^-c_^M@2DB4f zS)HG)*QT9?n>g~hiki<}XD!eb+!_yqHs2a8*<3gbm8~hqS5o4sVU=-g!yp@+iBL)G zX~-H!TGrSf`DS@|jy#>;SV06%9(nKCi8!}?5ZnJ0RecY>gK4DxOZKdojb78wZxVlv zJ4-|wEhv;BIQKhmq3I9X&J!yOcfAo`6sAm`iT!pxb8lQ*!#~xrbKn}qH=&mm8 z0*3tv0g-}aVUJcm&sB9G+m-l4f7jgX+*_CY0}D3L0ARU5LuYJwCa%~GK@tk=vt{>9 zR5K#$eL?VSGn)NqwfG|ej%L8X+-HH(wLG1EMUX&wQZ#Q-xy_A6kZU;{wmucrW{ypX zuJ^6ofr(QtInA~eH)=^?c+dEL)yBQgaPlG}VkPxQUMSQv-r6T31TV>7?k=P}&uM*iI^uR$MKWNd$4fM7uGWfG9Cqorh~9+9P9+{QhMDkH>9FctC|ZB&&%Zm!pw#I!sc|d zZr3~9SpCTIAKTJd=7{%L_a0@F-?$StB%}e{R|h`)9kV~$DbRF_|K95}?lr~I;?GrR zpOqC7EUk0>z9zc?n|5B0d+zbMwqZQKVuU3-Y>dQrIKUpt(|qIJ#b^|ojoTnupK2i! zg7MLQ(Z8i;lC>R+eXhfM)QyHCZqEo?_@#-*AM*XZb?@UUH5js4Ad2ZZaZQ17r-AO3 z^&b^;VUy`m90^N{Io72hSExf6gO1l$AHTbqK-H9IteAd9-vFMh7JHEPD=(0FU;N)i zTlmuAxJzq;ZRT)Wh4;6H_o3^HH@@Rvn}fY=jOM#d zkT=vURFC_cI5-Y&OT3*x?vNNJo1zWN_v4HcGxG+NUq5-J8pfV&#n6zgfo&O+(a0sZ z^ANO)etkC#3##)WC$x&cWcv^HW4Ah}1XSu{DGn0v36_;jhBB5Dgx{;o@0Mkb33YnL zKHowZwmL^}2-;b{*|reE0Mt`=8`esFuJ8z?Lt>fto6+6N_v#gBV|EH2sA06qbv>%p;pEb zam2BVWX=6It8`Fb9FwmV*{Sd?7_jsa{qxU~AcSuqDe%X3@IXVpb>b?uIcZpk>ujc| zL236s6(j)LTAt>lGQejoNu};n>}L*WUN37aOu1m-65en=6c;V$NlofRK55NgsJK_{ zRN{?NaN}>^UXKb1=@GnP?eg^L>4?=_Ou!r67oeA9T)@d_qf*Nuf%gOHm!-UJ8U-K% zEJZWZB#NOB@eOG0P-2}U7Gqb*GrKf55yTq2cA0cmRN){lD-K1O2k(G#<>3vS@N9P# zqHVya7#WSs5c|U6E^n4vf7t`VXd???Q2KG;Nh87iokLD}2m4}qq;QKfM;GImrtRK}`iiH|!^1LsVb;H(7cn0;ZhUzwrjt- ztbVD&0$6Wn2Ny);x~a=A{}EvJkpCf&!nVIxdMY-U`znd9nfU*ulb=1z#BWzcBw#B=Y?pw7}r>9k|VxbJcV2%+XnV z=||PvxnBjso%#Ei=*|edZWb~wYIru*l!BU_Dd{Ez9j#4N#b4r5t@|{!$1dJobnHid zyk&ZxjAyJ|2oeS6DnZb%@QB~MnY@}CLNR<`oNS8&=nwA1V6y{XGyppT5@mqJl-&xowR2NAe zcO7>ucSN4I!(}AQ>~+bHIQ)~zRGo#N6DTYWXB^F2-pSWr1rM82MF`aj@YfRTZZ6F| zYy7T_!##ZXh}v95RoaqVPMegK^rR|eh7ybqudXtnc&_@-!##gdco79gV=x1bb%bY9=xJ_G2ZF(JA65Kx4s{ zk4WK4ckcWSv)zBMRiA9HOtRnVr{Q1r#Xu3_m-(|f>$sUm@A2Tti#=X+YpSr*btksS z&lAvkY3?wW@3*7WRPd>0oZ=jpsgRX6vhSDRq%8l%yhnZ&#VgU$O@I9hNMuj5_8+mQ zI>W#8&BtmzYyCL+N2jd)^XCoV>mXaW`v-u* z{!7;nC6j;qPB+Xv2v5ETwu+@A7d**B`l%AHE_Q6E50><{1u5@^9epxfDA^xbIF1j^ za>~T{^~DS(ckKx^ZuNQpg!FGt5UBjA#?4kiqHnfTdhzj<_+#^a?#Eo-{BG%UuztEQ z@-FC>QV5OhY=LP-?GhzZ;zb{BEXEHL>51Dps}~}_8qleqez!Pf{u3}~65n#*T0*gs zNUx3T5DR>J+1+aSobc3?T5{we1wLMJ6LG&Pm-7yP_brjj7eG7xGHGvyea%>ufj72-{yUBY*;7{A-1ao2rr zJ>&(IfW}^=AF|M2;k%1sor1}-wVRW^FrP+&G*%Y1%(~FvES?+C0J*V09Q);YA=AXx zOn$8lGS)2H)Jz$@Dq+z*Y=dF;0Nn#y2_K~(9 zJtzX3l2K8=P}gWYlONa`sYCkiVD6|Wc2>dGtppDpiWV)QW^KmJM<#6-GYsn0r-Keb z(24%SB+`L6VJknVj|R?Njcb7RZR^EQRwwDU^Sn?}Bk<4}g1w#0_wsxcSPQ^i>wc!|lpPF@n6WWgkY!)>~sul~Vb_>RJsUy~LBCfWKozWz5D*@sK{paQ8eT^H| zD=I&I`3$LS`mASvc8j=ZVuk(yDg%nl%rFp7rwQaRan31N7*nEoA`|Eq6*V;{wtG4( zPX&;i*a@78U+rp&9(?;^LF%?@K z_ZFCj>5M`H1z6+-tCEwWKZ_Psbd>-0*-;5G#f7rMg$e0OFCic2JCEmT2|*W?@?|Fw znv*YpshQ(THGs@o3=u0`bDgdrTk1p*Mf8Jb2YuX) zBf|ctm?{R_D2-uHM@;1^0ldxtz|FxK$Zh{DUox+pV8~+;94%jByN!B^8c z1i$kUl59G^e=Y)!m(02lUfz}eKnq5uBB^xX_&Pd1_V1#>w;r?H^Ayp2Od3|ZhO~^j|=Hc`y{HE?`N_sxr|8n{-!(~ z?MRKk-f;1o3GmKb9HBd_XkJnn?jDx63a!|7AH6F=xS`)f%J&U+VW1@H$)$ z2#+WYH}?#Ww@*>O2`$mvP3rv=rq=Oevj;} z))}6ds8eN5OrtHus5}x?(YyN>Xjj}3al|M=)vY{OaluCX8X)x8ZV1odPtg7|#cDPi z=G{rV8mz?phG_DCT7dSh7h+i2q*%Uf!S;_#+4nOwTVAPw52UW@wG{Ct702re{eG1w zp;5SB_-TF@N7#U;w)Iat`qga^& zt1{RJ_1kUrP$^oXq;B0`{z>fj`r<#pR7LEZ>KHFK$B7junS{0UvpDZSQ zr5>^kW`d8Em?$Q&P9k6fY4fs>RJ_+wU+&cUhl$(158((6nZ)*fluU{iI z4A`L}KvT$A(|qMX6)%`EVm-27YP||B_l#*FDDm)#z)1M%&mchTuPj#4Ct+FwXn{TX zRd!%y;nH6~j&}2`^x_>$)GS{{iF%biPhG854&6um)3D2APDf3X%v6d`_j_z?Een4A ze3Hhl!@P>xVgJEb8IKjpIH^>V>;=o}LGABnLrS{8sgB6x%nOSbrE)dJ916k$;!R{J z*`V90Aq5HLQBsbjlmkR0vHD}9gX;$6O591R(p+hq4PV`5jqihDi3MpIcy zb#(8fTtx4TPX{Z*@0;+X^E^|6(K`x4HQsta>C!KK&mUqX1b@rw&mq|1YqlG5b2qPujfLK zJ07p(9|4Yrn|1gE_{{wCkSPEx0U~miZ@iwmbUvMje>_P!F4Fiy=ug{k_F~wGX z22ZC#Ht#%FiSb0018mO|Vuq9plzoa>`aa|G5|fgG)XOX%HUk4+^WW->H9x)p_$^Ol z*Y$)L-J(OaNM6f2RQY}`Z+w?(K#ymA#!sLjl~6!L_p)lN^E)7x{^>mx;wVGB`*Amy26saQCt-({Jf48MD&zgzIg@UWb4NtyL;yJ`9NXYM%OBpOq3R{5DuMGyFM_wC@UnH5K3gtOE4 zltWNoUuIAyIfFp<2>6JtVj|0V-$-^I23ns>G(iT#^rA(Q~Lh%?FFO^Wic{5bXQ z=)`o}Cj!qU;dG9_tPBA_6D9juP6R3vx?(6>e(t{OvYUDup=CWvz~7Xe82(iR1M{!1 zJ35`9mAZe|=b4K_9gkhL0k2HbyRV&xthw2tAn6IYubn#|dYs2%qt*VpTkS(}Rd$6N z0W0I&1?ekuB&HuhM(UpilwG_TX;aSE>tapUvync{{b7|)pbe&nyqhtqr&s!~VV(Gq zRx3XTH#ox*b}xw-P3QZi!p~YGW>5r1CAJ=gz5ud3-z^xA4J?-(x^4jkpYJGwE+p^( ze?dlny&^ZbD4Y)Qi2IX~@eb|;Bog`kNDTyV?cSPkaG8sPmX@W??8GHtNAlfkPo#C~*zU=%?D z02}>mp}Qye)FOm90x4n`fzUriRUKzS14NLZ_K{G(u>u%BW&y}#(;AKGi7NJKjJ0dd zd6$;Zal@!;qwI-mln=Vy`qu~dWBNY>*S>%TOxPe?4n~Y){e$74i?&jg{t8QdUNCK zZ_;v7#tCt-GAv?4>R6DEw*w|===a(|G^-E8HD|AIj4_dD)skUD>NR+8;OMedL-vnl zPP%DJ=O-VC5ysZS$-qqm;VNZi4Lt_6mQAAQvn(X>Jj^yDR)R0E?G_D=gB^MW-Dvf3 zhMY<|JLC)uAp)H;XcuAKk2FyE8$P86+W^257Jf1GhbGMUIX^xD@7U+sYQf43+rzhwyVlij? zDTIILVrO-uj$&+x*$}R&<~#uk_O7)J|gn(JR#-jh_YH3_X{q;l85o(n3xvTOFSiXYa-ti zgLp4+SN$~(a#bGn%C&0}|MarP?%k6&)a+K@6^VOb3kMdikjLQyKKvo<8#lm@R$TP-k zrBh@{1bod6(z4$sfsu%yFhAeW)={l?#;W{(YF2V!MWIz0-OOK|`Ux8mu)L}K)rN`4 zNoATA%bj1(@y4mxf#=!u9(L7)+-Y%}jhXuWOvTN(s}`k{dOiWxBoF~O`J7;reSng4 z_bN$T4H&!uU4dEcy5{?Lrj!}3{!pr-o1-P6x~e*Mp&yx4PfjlyXMR z4|3uWSyMQ4rw18!Y$;P+%?T=2TSXJyK{M%}q;%Mbg=PnJ?U z1Ne%@cYdF3CG)%sU=|@B_N1-WoNRg}zf3TlC4DRUt&~-6*bDkbqVL5Uhp}m}GN-%p zv16=ryG`JjS@qAPveO(r?o#IPR7wSy+?YDIA*kM zYiENY;qMDysjA~7ofh~4a7!IKd90!|KD~A3cS}T6NEmTG77EeWBK&zEq;GJRjI&JZ zYbTZW&cns(+Rt&fXt(EIL|M0ex}hp@T2{Q9tp`MN}HUp9GSo)|7!z=x8_ zryaRDrf8F3f+K^=;R4Hexweh`hH{-pxsb-X9+ZJTRJRw$8Dqv48p zBkZaR#`H$Z6ZQyWom=78uW1T({9NA3RcyfHj&_W{>;*HVdB=fJ9114sQ-6 zfDA@EG`Pp2q7Eao*#8rPu)!vhFjk~QCe7uJ98c>jvoNz`mTf?#QZ(HrUF+~Na8p84 zU@4ytAJ4=Nx;tVUC<}}eF1H?|FHfMjxBEuEauwDYsR$|I1S+sCReTkvOp%(_AfJ@B z*8Fx%jfjmgy+2~Aw6s`gwN{;L*;s>UYYL!O?aj?px}pbE55q)48t|ln*W<)^(LXlr zCnM2da4S2((@Mmz&ERt^c7;F!-)i6sKIy1IVv}`>060v;P*=tRv#BzR1!;Dzg83q6 z9)D%zss-y_wY}WV$&djv;VLZT9dJaaKM6=~E0=vyJaj~Nq`P{#cmJbzLX-fOCpl{o z31{j5>4E&9r0n0TUfR2TRV-7Dt<|QoE`0wk3ya|zB*V)EZPSQQt)qp6z`?;N#Op5% z+wDn&pMl;rBsP3HU^H(yUpmu&%JR2I>9XHIE<3wfoLp4$ecwGShC43uCRIz;GayNO)a;}-3CQ$;GE3YY)q1;G!xysexp^%{)jHFy7 z6&qO!c^v|W;kY=4_M@89V)tfpyK8y^MYdAz!pih1SRxTu;3T!o3@4%&Q1IH>L1De3 zEoSA)n?hq2Yi;Igz3ESiIcTQ5Q&~ku*2U0L6fD@BIMMZ%wjZy`?@OW0W&Mq2MErG< z%CKH*I%Ry8N4M1uhhXv2;C{8jS+c=F`H++Q&30X0C?&<=sKKHBauX(S5VUoin{Oc` zpQTZ|u1@3fv@ZBoDgCF1m!B98HUgqbKTMlwJH8W&W=nstv4Zb+)8m&l5KVBg<1Kjq}-6qU^Z{XAlOCH zlt)}N7ARgsMKSp!QB1~49{cHMe*gdD>#L&TY?~lwkl^m_?iMr<+}$C#ySoPq9z1yP z;64O*_uvff?yfuEzh`gvcJAh!x1a8+uCCH|euVnl&idZs&Vt|~#Y*5$*wN@vJxIQR6x<;H!KV;qcH*i>17ZefEx|D77*%b&SR!VhbO+1K3&4@4m!vK z@6WRR&0a1w>iLEsMLT;_3Fo~(-_<8_z+twoC6JKU|7Nwo88oh8_~y$3MFeWQ&|D`9 zU_HLLC|GnbDp<(rV`4JgV!o4F5OhpVV*u_`{tA^2!tsSfh3e;jGWo~&EWkznbl!Va!BwA>^Tthzl1S}J6ZgxvFTo;?6I z$9q=!9XZV=Jum+)*}U$=82y31mTn&g7qUroy&68RUh&VSr@4w}v9$BJlcQCk$1Th> zeaw&l5=maILh`o1-toteLKB7uXm9kw5tX=s-mM%3P7sCJfK5CxqF(Le?QJ`{*Z;Vs zCZ7l!W!?F#=pPc=Lx3d){?DVc?Uz>qawl22Tp7rO9H~cCaAr$y2yUcVLvSKE#8=tJ z-eW?z!mb1h6I_3fK-xO`3}aFA&l1mucidBoCz3OCZUj%)sFOmF$$si~vDDctkCC+V z+)-H9D2x{-O?|_7KHX~P)st0Qx%qNIdvRM2;wHNKLM^!VTe0oO3$2oAKLKnk5m#~$ z>zNxmz|mtUAqD6^;@;_fDkZ?bzBAtpQd7|q)l7fUah4X=k4FT2NL{=b?RUB{Gq;=w zNU^Pj3gXk=L1?A7^YFiEY`;Igka29D`!EwbZZ;fPvA;h#T@4!aiYLS$toPuo1}w^( z8@lkCu}+v>z&YI<4T_D*-MemO4}3F@hIlaKrqtoQtKmFy0WW{mB{(m_CjyxT(T6?z zFuDor*y4Mo8M1hi@`x}trBcdN>6tu^DARf{9`WYH$RK6Q%@Kw0tO@m@&g^p0k}#` z+Yi^mBLUSiq^>d=l8)(foiaYu%X^MyR)nyeSO}r1F|rO zK*`ZB-%&Ne*8H9gW6wbL7816#TZ8Fi9LJ?Pw}n%RO!!O9WEqOswWw@iLqe+kb9Y?h z^lm;33YfHw^`{bflP*l~@TWioA`tur)aadDvZb7~?K7$ABfE@(4whmeuf>eh+Z{sG zCg9l?y7CTyXoPG>D~in2kFE=NGi8;OlCXyB5%V0kt8f*3c^t0YE?e4{kZpx1 zbhu*yVKxI==!W$%9pkx4*_=1x<%8LYLBJmQ}kM%haiz zpsDI;NWL_B3wSyz=gjs*ZoG<-7xm*>(Q?rM8(4oV8-J~tsc&n~oy=KDDv>s?{|*0) zP_EE8qG&a>Zkm*wRI7`EuPET6S6lP@m*$CQVs@%%V3x#qD|&cav?~2AjF2btD7%C5 zv6xz*^miaEPqCyov6Ag^$0@?p}! z`MIN?MqefDwTPy8Cf|-ug@|U}!$A{;hll6SJYuB_!s8cGsC7baLbm&70d5o6c^*-B z2AAx>eRPOw++ySW4f}jaGH_9e56f4*S_o&Fiq=3vq+Ag~F9~M!^E{(*hxE=Y%97n4 z;*h&;H*1)Eu8WU1^x8cUH8+)O@L`xZ+L+P*%A40nq0DY`t-`!sF`)h^iaX76?VL~n z+o)k#hc;2&?%GpyVt89VSMV0u6zmwNXzLI}6iAk_32tN!GC(>k@!Ys3*{zjV0Qx^Z z_rDYVCyNe>LWHnLM%(PK#a@)3f?Nz0Hyh5R(9IB@2Ne-3!`4}_fCK=xkIQAliG(3Cw;fL2v0S44T) z<9_m5^2W^uO0=QR50qtKoYUIoL_lpVAjLJfIHXl7%j(DpgUC96B~i0m4x5sfFB9R9 z%H>f3zkl0f0!())`^%6rey;jt(z5!m<^n)o*%xTGzZu}_F^iXi(hPweKQ+kVN5AU9 zZ=GvWwxC-UKaZntcimL49Tne|rIAf`wLRz?Ke6iHBC(-@RE!LVwb?dC!Ypi7h3^LBHD&o{G(wx-p}+d^84RPfQ2-4>xF2 z*Pn+YjKBLMMYo3_llY)Pe;2vwE#eqAASe;tt6NB zF-oh=30)HujF4PSwb7hI*6E+_)y0+qamaf%y+2)2Fwta+q;?}m6X8m3^E-L+nPKv8 z_hjQSq;YX*b>6xJ;~OuH2sV&eZm*a-Lb?u}+xjD2hKoEKF_~~*C7M>9QECrAn#crI zDV*-}A^Z6UX9k>+PsmB7{?p^~fwxyfOk+d!_Wf26mDRyXY}OO!hC`PpWd(^W3!NC+v+ zGae*I>LP*o`oK%)J&hB2VSq?tye(%K8O0E?Iqj*N9~3P%>S1rYu1KE0-O{st@nS3% zVctJe*4myF4rQu&C$geB-CStv`h76L>k1}^&D-G3e9~uR_iFvg??(5Jf*g9Y)L|ss zcXBV=yxRQjm~82M^7jV8o9vB))$+B`WyyodCIg8|`g>$T*M?kdNq=T)lexhF1Yv8G`=P@(j$JyhJ3I_L@=jLDzJ9ABbAE9Vz27f z4au7*oJ>t3)Ey0P4QNtE9P%eI)}XA9AOuhPJFaTA4zVL@7f&B7-iAfbP#1IA; zEUwlyxR-hp48i=ti}bY7=MA+X@hh%!zv;v@ih0nQk_+MzK|Jre%PK^&QOwsNG~G-U z60iW=OVvL?#Q``fI(pKt%+S7ND~T6{4hj1dkvP})M9c++bIk~V`0cX=&2B|YRZvpH zDkdd_upMjjXYWtHry{2Pt)Zs=7qZ5;L-#CDt+;yW)zFwPP|K?O1X?1%sh4HJm)XcOvgs_lf(DDvZ z1w9-aTolU=%o=e8HjPAZ8HvTfyp96xI4<-)AJ?bkkotPUG!~--$n|o3%Lu-v;c@x# z6^!QJ<71hq=A7X$t;e%DlfWd8p~Y)oaG}UsS8N-ose_{b3YO z?=!a@A4w27+iTLz*&f{-L~9AkRkc6+-vu(07G&}N5iPw})1(Z+SBnCqbshhcQR~3! zReZfcHonR(hP*bsZuhg{Gv>syz*UWWzsnnCI{@FayH6$JX4;ev2kfOPeQ-^yFMfhT zwo*6Q_Sf*NUO6@;C;Vm+W~)6|G4B9V`M*}9NyDH6 zae#5+8x#1eJfrcEkuDEJA-!jB%+RbndL0AU6wv@8(-{avWuO^J^V+fKgK#&wN@hRP zA-uG*Jq|5ex|n`^sa08a*Kybe?!3e>L|4q2=wX11Zgl1+vSCp+2c$p680d8EELXV*aY>+ zSjLl%j(ipje_`S%**9^iItXo1zB#tCJLKFR*+2;HSug?ct_fylMec4ft}Exzrh;tb zq62>o6>&Hx%xagj@aNehHHy$vkQ`s>=^UjS%z)DTcfq5Eat-pgf=}m z=VtR~BCYgPPh=rbd(teb^~}SK4F5kZ0GiX63H7O%eqp!k|=S^ zmw*ieuB0K2f(29cK0L|V;9cEy;S3n<_O=!@st1(ch{@G~i58V0Y_AD5k znXO=@qBrGd#6Uw_@rCf%_r=bw=Enw9U~tdendzVqceI@nPlMBqV|io7?RlcY46j=T z=b5C|9PRYkHC%?zMRB8QN`1q0IE!Fb|Hsg}-&a}Jjfb4P>N$R;soVawoH!k03_Ji3 z3jM2E5hlYj^1r8ZW)hq~Uv*7?ewAxYo(iPB=$T(<;Uz7FOUoSmQ7>2+-A*}ym(8wD`_dxMCc=*$&FHLED%N(~lR31m8{)q< zp3#IZMLvM~jzMT-PyNz9i<9K@^E`|Lh;p_m9DB$j4>uoa^WgO%r;k7A%8ZDvD1{miU*tx*mK}~dyr$;`V(3Cp-L+U>UOCHxb?veVkq2& zveN3_%nL&oiQ{V8!MdBm-wImMB2EY{^L(#C3ARHaf?6ab$)rqPY_dJq>sfh&YwlyZ zZz8i@abAt+#gtwWG$Tt0?&efp0@5f|6=C8NUCISB-ph9%fO3HL7Zp|bxB)Ern4TtW zm2Licq1CINEi(Xi<7a;jTvX%gSAxCk`l?BLrpkSJ7$^iAyLL}Y)!yE@1(+H1#&J}< z$x0QLIaO|hg-%uGWKvn@=UdKJ45*27Y}<&X0!Vxy1yxw|ukNK3-7Ya6B5vem%V@^w z#5LMI*Hp_sYV6Bdn@nzrDjdbug@aiIny782aF07*eauQ{#cnr))epsWNG za}6$^x25R4x`!S&5ldP>akN%75B;3g(-@nZtIzvkoj zM6rzLiA-^AJb$KRW4^hEJ2xJaz?4jXw%MPY;A*&`MF{S?Us^1~yHO~i!oKn7{P^OO zyxhU1U%CV`L&{M?GSbi2;w{TydELUF@J-co%#fmyrzfu#L5x^1F)1FOJ0~cpgDIWL zF0NlF%4QiQHsNYXa68Vjd89PhwNc)}S3-X)5-Zb;PQOcUeiL3+i`z0fw51=EYSmC-| z-hqrn76yA;40IN`Z5rzTlpYv!)U&vI;9&Xb@O<_sthHB+TUbBIpREe1?;d2F|90BgslqqL2~7<*V-|TKUw(dEl?=!0ikzl@}82NXSOVD@2dv)xvta7x4e&JRAt+~J#aETs?Dm>*j zmFEty_;J+XRr}Gy>$aH7V0xw*Pa@PWzwr#0E2P_ClC4a^{tOVgga&hHDY`gaz)mK1kv^j#+OR9>zKCtw*NwwPS6;0yjMEP%=Bj^%7GG1gV{i!>_g_tqckXzJhflD@pcy@~{- z(tu8c&pR!Uzz^%A3XPKYw`0V@p5O6u-)SQUo>G6APrbji@EUA&&rZ2srm&xh6=e3ef}3QcwHyXOogpPyYc$0 zo~>Ep^YZ4jAL8f9vF+si4mLVC@{g{%B4+zoKJejB+rE$NO33P^LG8Gtrel;n?|e`+ z*Ry(BP@hs&-WUyNKJU#72$>2xBOe&0>C&htB?WYPK8*2>(izwRUPJOQ0DLpy#nryr z^lE-`YN~JRch#lnq>XW&`9(;fu-)#G-5`}oEeF{L)Pc!K9IR&S#bt3Qbzp?wG5^Dd z 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 K+CC#5(?3}3`x40Rt?wJa?Fb`bc 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�`nnhWO z{1LKMQ`Lg)nUEC{ImTttSKX|~^ubuBZhmY2^S3|AmtqKHVbLXJ5%>uCkYcssDr@Y` zq(H>)#v(R9U~tPAHA$OjDPm#=~PJ<^>*AU!VPcP}q7XLe=n4 zf1&pyu=IlgVO7l5U7!Up)HIz6U_PZO3X~*<(q4WYBCi;cjjsNQdNoKQTT->vqT-qu z5sYt#xk`<+W{BdpwP%hs&8#vb`dQ(VhAwYlF7Isp)RAMqrfmkxkj=$pI4OM$T2N5(E0x|N%-8Q1Zf5b*&j{dZhC6EZmY)03bxkkbvrk2+WTw3FrAz4IFReSQ zm+HZD8E2sf2^B!GT=Pq|2cF8vXP!mXCc+$@O0sMqbR*5KM@6YrtlN35l2=G+qSNfa z@!>|Y=t5SLX`U$w|LVW@&tsiFs(*U6gRiW_b_mDo)EF@c8=V& z^dSi_-Gdq8AH0Hk&HJeqzh|9 zBA2s`58O0=OZiq0os(AgC61MQm(XqRnINOH=Uaw_yBvcn+wtBNm14wx9BIj zfDf6w#-KhvzYmeQ$t=DHMc%1U#^qv3mb(cLY2O*URh~;l-4NoTK0(cs!~yPJUAB3R zAf^>&ADVaOaf53YT_#NC=$e^6^XmNp?Pz%&=j!*N;`TMeska|sx~<5K zOT`>(XN3`ydVZ~VH^uL*e8Z^lJbRLc!6tg`=DDhF^ulShem7}5j~Y2p)6EqRPfc?>(+HW=pud2J8!0m zh67T)PzYYEdiNy)TyH4O1lu?Q1roUfQuceelfJGEAb@v_KAli>9wMKm>&7VI@+02090`u0_1`?VahZ!&0+vSX2Q&c6Np(VXPzR{Mkvyszuv=;pM1%1G8W zqVC8FqECwSPvQLPsJmm7(K65^HLH%Efo4X&2D=rhS$JmBDy$Sx7Zux#^N{*A1rk|fit%O&Ak zns72FjOVu&!_v!Px5Wls<0nmVv_aEU$~r=vnWChbg6m82W9rN@m@cD(w-L0aCxpu9 zm=B2Rr<0TppA!Tn6EfO=4-`~~6?hqxM)l=Tw_Y$d(ls+ezl243CWsxjq>1AV zXIyvqIA_tt_4jpeTS}8eQ1!Jv{l|)<2ZEGQ15{I@{yrzpngJb7-rM( zTiActeCJzz%+Ai(7qJo`5lKNx#E1@cJ5Y>uZI=M;HnYkEp86z^hpgTtt8MKu^n8eKYBOPWkQtzN-P| z|APLCGv*26!7wDj{`xRSFkiSqY-6pT2x!~rr$b7 z2w!Nhi7j98?T*&FE@)}NO`@5pJ2M2aSy^Vp@}~vlY@~?+oy=}1NkUyWN!-C3q}}k< zIgpwA0m;eMv6Ry8Pra8T4D4e4+70k3j z-VkQ!HfgA;@y%~1nZt!9CPk%$EKU?COG?kZ{kpnSh=&@d0@A911PV3RHqT#l>Av65xO=8v*BL zOSu<@SaCZv;sKcdS~A$dQI_Zx|J@Nk)QnhoCddDeih+L?G}&`}sA*XtM#)?_ns-=n zMy)c$TIy<|B{%Y^N|n@7+%kCR-(L}Q`$8@Akh3i|G6x#i8fD6uQv`oeUPxDL8so&{ z!MTP``+-ESu+!vJoOV(LeuC(-|9k+nIP$f4?K;E3cwsotywNQ1+YhIoV+LyixkM zS|RTBE~)*A4-Q<+?*IRjN-u2?yZ)ts0q08Q-YbUpgW0xQj$}#ia5nN1+sG$2l-%t{ zxB@NuLlnX9nRWq7$Q0rH6jKNhe03JI?XW0ljB&G34X3|)ND()4DjVrgT zt=c9b*sv7Zp~FpdUAkJdmA6DBz*@|BL9v@!0!XrpHKSNdS%S)sLlb^?-!^>y3H)A~idnPAeVomHFDMQCHj ziB;;BOPTgREWHv8H0{*DKR$GrUC=qy)Ky(i7SnPvM9Rw2a&m+$dcc)h)j7n|8f()A zZv>If)sX8W$B;0+k2*H&tvkk>?eSZJJ`Islb6e4{ZFT~^)wmEQgU^@p`a%qFVKQW- zV`2*D*n)GC>GG-2n9(JshHP*P zN})2V=pu2Gl4fhYCS@sUphAbaQ#F8oW)vv7Bny@f!v@#vz_%JP(L+kl6AFJpuj*wf4=I1><6Jn_)a0+JH8v;JNVQTxTmONhqpm7gz3*W zaH9{Gs-sVudN*__IAAaG&B_Wf+7nWWvQCzl2)jW@ zg)Mj>^^CqTnUPR!ijHN2jKf~IWeQbeE9xU|-{np?IOz}hV)1}9HTS~l$j-{nZ^Cgs zgW}RMEIQ?=C4G(u{i#?oze6m9oHoMYby6H%^pYBTAGL4tEJQ`}h>EQ75+O2Va*7JS zLWtUN=FZh^5)wcr%hbaml2>Q|Dsb}*xEwbPJS$POw44ZeLc0P`Wr5p}emSLv;J=3e z9#$xHt(MYxfiieXs!EA=eWq{pb79tPVzHv2=EgutMEiCurY$C6YicaWz||@#gCjin zamYmxRYj@W?mEgZbF@J}sQiLGSufsg%U)=<5t0q>DE?nQ$`zvr{DaTj$}O^w^=Ai+rF;* z)KF`Fbod9OCw;?^DZ^)AbS_$dsY8`{R+*ra#;*vDd*_&iL!DnUo_YF99QCah`V*^r z@t5onz6MG*B*F^!j zP*kzG@rLIXUJmSlMj{Coj4FA#0 zT6E%Nz5ZWat0cCY1W-=_<(=F=H|Blm-Vvr-Gz0})zYH+vus_{ywbIuy(GC3pT+ zK}z(O2$~(!{WT(akCDd=_P6X>R0{Y;OZ3cxcFG7Bf1;9z-F!>E%03NVOWVi319yy) zS5ZpXhRwvm;$s+&=a>yvtK5>!@7x2qo?nWk7%_vjK4?ef5T}YO`!}Dg83z9C?XUyhw-OG9gAPr_&PJw)n;MYq z2uO8oY2HD^$E9B;7&Q;8G%Bx$rUeZT>Sz!5d)Xf3<~wSzVWshN`olhPPq}T!lKD%H zWz;3Y0!A5+Q;Y6IQNmh#EzCM_NdeB9NpSZ~{W~i{r-D%%-1Jbytpq!*3ra(98(lR*H^&NwQ zcR(al&G0Q0wP!o`bM<`pttd`5uXkg}iAg&wDP`9c1KuJODA0C5%E!Jk^rZJ!#Ozlzbd~~{j=GC zwtOiAy+O77(Yv7t{^_Huvx0zx50mk}lFom2bfJ4vRg}d|_3K-0qOsO4w zyovn=c=Rz7@%Fa9ej$}naxrpgxfc+#IEM_L_(|1%xuu zR#VHWbuNzF07kzr>YG^6nLRjEsN}t#zot;oNx3*K<5Us2So6(t`Ql(l=*g2p#I)`gs;Sf-w7heCii6 zZb>1u6(CgAeG@VNJ-5ZqD^#>g`^#4RNQOyo3Jk!6eLzejKo32IjC0B8lyH!4c2bd@ zG8mIaQC)WMx+myreqx-;5Mr$tuTY{aI^ri8Mszu17?}L*7a43f{ay?gwI=oku|Zrp8$<0P#FoO5W<0r19HxeH2`%6NzTS7E;P;S(y1mhNRbO1O7k@Yi@ z>aV(9*}7}Npq20YJq%|LElY3kA}vP*^>Is!4F-1EQrc#`Eov*f&!{E%JWq1MX;pv9 zI#ub5QpX7}l)lFf*=xAkI`B6DnRj@x)|*e~)n`}~W9a`;Q~W{&LA!`%kRb zdxQGico=3-F#yif;v2Igqjf!H<2slBXOJ+%id6eEr?wHQ$(=4=c)TT5%l8x2!1hN) z%l0TXn#BP;Dz=)Yr-3ZA|Js&$zZ}%WtSH#~GZyJ;l@8P(J9hT$X}p3eGhd3_7w(~6 zu)NlS9`GM8*WHnP4y;ekwkvl=%u5rn+X83>-28zt?fN+IQsy~2dQS)F^C)(?gH(H+ zEFeHcp13ae2T*-x3ufQF8%DOvTkM)GBp8%xEZR>qvafz+bv)fm#JR=ubouxV^fb7P zZ{)lT^HUhdjO@w$BmT|bL`?Vkrf}hb5+=%!Hq2@|>V4r=7ih{5;LR9d+Kn{os!+={ z&$|@jG@}!g9s$g7iLDLt?^Q-_gxzq^pLgO2&|(wb$%`qu+dk5Gc1~ zHn!P*afHgSWlkdzVJW{OST%W0kf6%9;wj^|;B4`2(NR7xKw@M7ePcim{h6WF$IMZ6 zF1L3l1-#k$E4%wCR?^PMw5m_$E>$71D6Ga9a#cgH@q;cuwmu!sv7JB_gC4`_`&1Hb z**Z~GQcQmUKLtY&SiDlDp{pg)V+P_ZvH=wuHAd&0l6c;?)ZmS(x`uSiza7nZ3oo|b zS0%aoL)wHQY<-v~HKQHzU=(OTjO3I%p+iU9!#j&p1<2BM{{xRPWCYUWYr`)JOBVPM z5hxiii0X@+SpnQ}(C6i^a>gV58Aol5S%2MuhHCyCi|-fw_LoRdO|>6t7H0@bOSR7l z2GTU22M_6j$c!XzrbNGljoa}Z5{V#lKpS117ZiQZ8AFmfz5kkd)i>jFK#kF0?cnpL zWf|1uh>~ODgb+2%cjfa;ef6a@m}Jt4ey_Mx+-jeD!5%p=0_$VBQ1@rJJh)ai>L~`= zc!3?I&gVh_YztdUt>J^@UmCiHz+Zm@>fWzzsct^fVW2aAo#XOiHqC|w{*+{(Cgv2h z;}K+$Ih#iLv4#@#f?`4Y$RM1AU??Lzc1AX%Ox$t?D^7d%3dcdUs$l~Q3<*?q{{ttb z|2elwuI*!zy^VvD2%Z9{(?$yy8nE1LqoM;VkE?cIntoMJg^449cNf^*!c!JghE;fE z-{dph>x4$65TCE0;nwD`?~=uIvY5|5Vw>tSf4uVRx4ZbqjRw}e(I^|I62qRdCL6sL z_e?k~#g6s*n%I^Eu;*c%LMRK3aMT%oY*meu0G!m4fWGYuawjJbQK%$4(XSe)o_5J7 z{NWC7<8RGjMzJtnMU?d)F9AOlt!mc)n%b|{PjUT7qb)8b0Kc}YPQQr*v{HXqW>^MJ5q8dbKhtNw&DK2PgdRE8b(v4hcuFxLpoWr~zSXIXfM`%kVQO85V zqU`!ZU-h&6T~>2h&35DIxqfS`@MMNSKtl55_LI{8>#Sz-`SRgss&aJSeGR|qCI{8J zwO`PT@StWSZ8OfoVYI)Q4m0ar86-J4xK~IyWygR4dGLNM3mvXhVKid7yGhYpHcV?( zQwf$d39L|oj}c3mwXB~1MJB;S+(^AGvMqb2&=AKNj|M=B**D7ei%jX%Q7*1{ zJow9YaK6>nQuwatY1ikv0G{b31YxGxw-yt$+!I1V`ph&9S-_+k4Gkx4*ESLr+m#`Z z&YMo>f=i#Fuw=n(s~P_&|A1!SDD5y)@u;Z2P$^Xk5{liXEf?i?@qu3he=Qti2lS-0 zPQ9{Z7J=gd>=Gj82InyU3-=&6ZDar+a2!2%c9h#ah*=n7w^BL{*!QZv@;^6#x-jPe z?)Nj(rub{7V128a*gf&zJFY8jschZvAaQ3#xkhU3d!IGk%54X_@8Nc>2>Y~}YjZX~ z&o!ibx49$nOYhPqh5T#ZrzXK}mPhkwZ+GGa!k^O?nPy~-Xw8^+jU4zS_% zc1q8?eD#EOASl#k>?g63WgA$rVdU8&Wz2&2pE8w~(&&Qpq`_v6Fa(Y{;0-?hK!DB% zx#Ix~C<65Ea2ZP+0x`bRZv-E#SIwNcyp9zl-3Lp&NNJ=LiR!=`TIVtzd~V>m9~p+1 z#xT``gBnjwTZh*QYfKtmTi421v;O=A+Vc@RDIq3JBRC+@*EF+m@j{JqD%|-2l7w z+2h8GH%&|DdeUMm(ybtpAqw;M11MDNNjMEP@$V7!!RwT1o*p8q8zWj0)@{23;$911y?t)r-z~P@&qh_V-B!Cd_AA~7 zc-54AQQR3N89uLlvK)=A(97$$*NXp|EBeV+sr6O*FiA{%x9WogYw|46URBo@9(^zV=}; z^Q+tZTVkPgv3nk#QD$PE$kS+j^c1svBih9y+OuisaNkhnIo0um;5g^)s+o=Vad7lK zgrtfKrQ4V7la}s#?`{6UKRj79R#P(3$(z*sNXng5G$WtmL`XwK>ujdI9$ss9{E3RR zn4yN-g>nSH&sK(utd=^v7MmK(K%U zz&>D_O>ZPW^;3_&sRydTVAc^m!oY~eFFZu+|F{6R^OBRBaS07ut;3d@nrh45{vWpR zi>hNDeFb>fn6w<2($lZcb3z;)7y3SwL8w4b%j#grJy@r>awb30)|G*;?46nip|SCv zouNzg-9DQ-mX3_crM!*fV2H_r0xAKQ!5UD=G4VK@rs?Mzc-JRu%L8TSX_Crf61?=i zAlz=PsN3#Aw;mc)T?Yzk8TQz>p_HCRGF8KfmshPr^C+qBh0Ygtkk5ZMc-)OMmki#| zG>aY<7?)dsp7RO8o>t513(QTGqKf2AaeyZ6T*AY&Vb9RLqE6M^I%x``pVOOn+ds(Pi`vYuN> z_aZa!mezSCjG;XUqcXlaRFALEA0=n|)HS!X-%?kk733O3_3)3)p*b0APPlt*$tDn% zyy2r0ltVYUVeJ2sMX5ahL~s@gTzB4*pCgQ z$Bov;)N%uWvzDJ4P*c#g8R{dcRLNoV9&>mAz4K1zkG5%LFhqZ@MeEc0Q@H;^yBl0U z&)hhNkE|N7LZ_`J_&>3$ zQ|%AzyS99>E6dii1H6yLeo{y-hi(pL+$edl`8yiFbncZ<*xa5?%poSSf|)bsR*?nS zyuZ;^N-^E%_ee)MA5q%B*m4<0S2AU~K?1PP(z!IV(Jghs2oDr&gRl95)HX9tlWH8D z$$3xq+Y>iH&smk>IeL|$J&{mNo4d)E_%A41YQ6sOO#G3GUzWROy2B6e9zFA2&f7!n zi==@+Lv=c_b~~vwtq65rrapL>-2T7!x=D{VIycAm_= zvnq++1KYiRX)v1u#m)z>fdLj8$;S0CpyQgyT19J1Y3>Z&`EQ+9 zOJpbVwdfMzZe#3^=;cQ+ZMieww{49n6`v_tx%@Tr-K7N-rcp6wuT?)`bZTPVS{VOP zOSVrZgG^orAZAKIm6{S<_x{QJAfwX8qy~3>TXzPydUj3X%8cC?HbLY6?QiE^&<#F~ ze>!j3y`nA*6_Q;QD+SH`f@oVGu=4sF*&@|0Z$K7mM&yAiA+0+xq<32@EJNYjH*uPRIJqks2LOF{x=P7Lw4 zk}zVxGoIHAbRAFKie$~CwE3~X<)Ow%Pq}9hk0$NoU%qz)9;Y?4O>xttkSqRDJP8eG zKt1@B4E`uqPpYsCd-zzG8{$%v?rOT)vzp}B{gZ-9`JE3E@C|XgO(o?P3 zz9C<<-r1+yv*nRk8&!cRy)tN+JNcI)jbcM$pO)jqThe5P z=P9lV(5{^ncM=j!BE54%W3*Zqnh4Fr1razll`aE;EHKyCb4jJipx=h3Kgo%2bxx}5 z-V$p$J@_evbbJDcI_0h37#gUz6RR@M$p+&KYe*3Jc?n9`ves1QQuIUr-7<8XdrIG^ z24}B2$11ZXy3?$fB>81;X&}Q%6nizqgy4%Cb=(DtK@U=ONu)u|G#qa`!UPNZ{jU*H zs}dMvT|b9c#J$YHa!K`-&S3#`kJqP!DVCOL-v5d(`d~$6cMWC$SCm+1vPi3WXA656 zlE+`nP?W@~tX#r2ZeoqoBP2d!ZgpAvHiCkZ2LI)+y|4S5LyZv7vp{~&^oiwUY_EXx z;Ke^Yf{5^O2v*P!o^Yyxi6-6^*2z%6X)y)*eJA%HrK5HBc?x&`3^i-{CRu?&=x?_K zEcZm*+rXQpptD;NW%vfJS;lxq065kn6Sp|#;H6Dpvr)KPO%0mm^g+LdCl&6|rc^9) zV92!0p|R*j%L4{oq+6PaggFb8*AnTdb(pun0oacPdkWUz!&1NR@{$dE>?u%G8o)m+ z`3DbpAfBVQSzX>d2Hs zhy%!SS=O*R?DaaVQ5IHsJ{JJbwCBon{*SO#ba`J<=RubTc5|GaInCK{{K$#TQ*$Hrmh*TsJE9@u9d!IwK0X;ZzsXxGQhRh2GXpk3|q zlZWF@t-`b}rba9;g&w>=7t!<~{)L2d=g%S^4KQ6dTdt|x&79*}t_-ziCm;ffQHB#yXP5GV5GMQ)n!$sK?SaoO3qzThm zu$`Y-R#f3a08LlTLE(VVtGxev#FBFOA_Xo*6{2bN)Rc+vC)@_RM*2E2Li|X1Ai4gq zLc%eEzt2w4bteMY>E9|Gsy%GSmUJo{!HS(ovxD6ys+jGD>@x5bPoekzliuN5#?Iq2 z@jHanl~zi^?tK_-sJst8=^q? z;)K~zvDV8I(=%(2tRmO}U*hi?dRjoqMH!s0X}&IT&^BN;yCWEz(RohuvT(kta^vIs z4vauob*PY6i^1Cyl)Emh1ey`|X_Ssj`%p^bRx_hkHX{LO(sdSF*8|F+7J1S|J~wBe zrMq>YnuF!E8O2%il#z){iu}QoB{0}F4FYo~4EN#Yxsu^sAlHlFu_It3Ch7JAnYh1- zH+JQPlnzX)CaCs@8=RiU8PvtjmcPZCy7sr_vY

pkhiBj3Q;_vuxInk0ogLhCP* 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

i;wg$^?({; z5b>-Z2kHW{iG>-pu-87I(eXcO3R0+$eO2tvl)<7>1k8*Fc&1m**M8!@5DYZe%yO>E z=_j?I1BE-3%uEM(ejn|dPg4qR7k;@!noV+B^{z=ZB(?8U$0$yaF;~^DRiJHfcIB$E zP>H9^$?FQDC5$XY8%GN6O$mLg#f!c8b(QBhzoLK1pDY>L z@CBW6_##vbz4=TiLQFWMg|h-UHGT+uRy8&w3Ifun9J#9sQii+>@l*2m{}lZFBMJnw zO18Ctu2enSB~L~XH+k|XdMy=|NT&vIdgVs(HMHo;fuva}OzbKrzDsuvL-joD%0imD z<*~2Z!Hty;spqz%;mC@WE6<|t$=1H`xIeZLdJW^C)Fo9mtXI!yYvI9TnuYXYA=vs( zO8A#xr_P~6=vLQN$%)ge(b0*U-`9GIxm*N}Zo7ZZG%i$pCk-KSNX_jeb)f%=+n6#G z_)Lp9@C8#}Uex8p^ZTO(FD6xA=l2R_P`S-BB2%>#A29S$B6HGrj)Q?jGXi=0Q$Y5o zJzfz50dQNm9-8j|sf4Ky*T_9KaXNz5Ph$K*W<;Vw615b%j z(fU7w`oHWeuvm}oT&QV-5>f)DS9m{>EX02N_VEC0rje>}w9z!d*0cWJDA|xH&t#*R z++fA$P95bBk&e~LKw&z*>iMGs3=r$B=tJ!srM{B}+l~_Q&>-b%LNkp$B$!5a_vfb{4v)Y;VY#;_HO>1eB}ST?3A0@+z2@ zj_*HfK{-I(`Xv)OfM6W~r|iZf^H&wtGlUJ{^H}cIVNCn8wx2b0MCLam z3DLIBGmDw(r_did%Ma4s+SqN^QMYPvbS=?_Vq> z2p`O9w=*l&b$awj47Te(l;8uApXvU5@_v0&VQW1n65u&)=OfogKt#Xvgv9?RjT~%; ziCw==`10jyZH%4WgbVS^x3x+$wKXz}^N9e@wix}- zKWfJV9U{mD?MJ=s+Q$Nt$nVTFsp?Kg?bt6;jN`3eJw;Hbs|ZRKkZ6WoV|6Q!2S?*y zW7F#b(Su6j**GA1lMl5(aPa4F-~wrb|3SqCW~{!o&whs@5J+yS)@!}BZmYN5+(dyY zzQ0h#MBp*Kgu(&qBVaBtzUA{Qcc);+HLMu(w{u8GBhOj{tn1d3#6+hN-v+AV;}N&L zeyGUGXonOcg&zAu5$1xJ_8YWkMPSmW0(o_vpD=v5I@LEt5(~0*7Hg&_K zkxOuq=&PW`tbdo|W!Ai#sVmN5Py1}YyK^3&r(REyi~B0N$T*B0vK2KunJm9ZIZSWN zHp)`XLgZ()ay#Tj?Bb>IyVmZmBW@OVmqv*3r-J>MJG|}y6NRD?{)K=*|BthFoqLYN zXgjP5q|%(1E!D$Lz~^}*%rh_~BnQ{BXmobQIYyfTOmI;~dh zyL_EGU+z({xR1ny$`KRYM@FOGJOKw)#-J$(TjZ~-bnPcv@%NNB9KO3BthQKE8r*LW z;uAa8AdFg$D138{3^25V9qdZ)v+{G&uV3M7eU2e>nO6|AvXUXf)_|nBr|rC{?)|!x z&nQ_t;f%Jmp^!z#XjQ=~?)^1yDpAX|reAz6RMz*Qyx(MC^bLggW<(*gcLonge-L@l z7l4GvwA0ukJysFJ#&shQ>@`nU^@-q{-I%hj<6ci$A_j!iEJpk|DzWG9g(49+#0#**1?~@+sZ0;Q3tX_>7~Bz|nu;p|g?zXn`MlY}Yjw^1d$fUj3IZxI1<~nd&nn z-swA)T@!XU-1AlFosWI6Vtbu)kMLRelb}mCaf;4<@mn}fyFBWVjb^?7ySZVE5)+HI zuT(?g!`Sr61G{e{Aq5)tG5SpzG-sQG{M4E+`WC^VLCEPGW&?R{rwH5f1F8<$ti7+y$Zgs(>nu zbU@j8z`Ln}&@8_X5FdYD8x)v{{+nP1aBxCw7nT-9?5yb6{M9J}uQDQ^0MoP2I2&aG z+cx}P3?M)b!sZu%L;8V9N&yiYqwhj*pmtSV0(GZ503H3) zP4$w(#8_BJ7t&;4QeMga@88#d?d*K8_%eiYyf)20JNpi3ignD3Lp!x2SwwUL&`jZ*(T$m`A?wcfO-X#!y z{e&U|Xm0s~*G(Tje8`alsWmFA{0I%m4MHnFF#;e2Tz^*xcFB-*DkQo_IjSMDE~JSc zuga37Y{}$y@7a$|ww&9U@{km@vNGN0DI75&>BWgIx8mW_DJkpcwrw^kTv>15SA(lW z_scuxQlw`>_F9|1N~1AYA^Aoi1kiqRl@3<#{LZ1IriQ#91ZnNARlR!$0d;yILC*sM z$f&6!!BdDZalmsKh62OGujlD)3SYZ+?LjNB#N6Em41gGWzS_aVMn`d2lE7?g89*jJkCM~^QU&qEFp780~N;wrm7 zaSEy&8Mn5#L9mvIYc|?B5t>E?g?i!Q8L6wk00%g*N=PsOu3{SWw8*)+#pe9tL}<6( z1)?B!dV~^%{}x02#cIjcV>%hN5}Ku`M#+|vsc2Eyrl3d!odoELEM)Y7)3DvNK|{gs zW4G75O@yFY*3?_LxCaRDnKF_BHl$jrl7vafEKLrMc4$iTE6AfL@h}szXn$rmUW3g<;b1N|UMw@#%&CcftZ0Uu!8Sh04GQOQNE{IahA6TAh*xa~?7GH6c1 z7?w(kjA^wGn&|JZa&)wyGt!6XzL-k1!ccC&0mr!KN^}m>qfDzutgJl#)WHFDdr9wT zrK5t)lC#mXzE-hki;xQYQCMz2NJR{1GvvAAPhrdRoxTM4Gd%vkxHRzjrExU)AkRj% zG#F-P%Kc0&uv_h_P_@Gb)Lwf-16PPD^1*|Z&j}!zG0Y!rrSS)?ccu3gtV%val@=Tc zGf;Sr14y8%rJQ9@_UDjiP!0oH3aWbP>Tr5M*~YCZ-+}93SNs95`yaOkMIHTTORWyk zB`MK;rfAna#&h>GkslqZX4q&z7?o4v{hJ%k@&OY0lOr}^IB{Vvl>HhHbIjmd>cX_M z(~$r^TSX300qN5spF&qTVa%u4MFI^shOAI?1*a>4u=W8s&xjk5#_CTL z*&oyunyLJkXaNwC_0Qjbwhs02+AXTL5v696T64O2{U2(PuGkvcSV7IbzA=h`1Lp5| z|J^)Vab@KJZUQ-dcqb@XQTgdN3gk@~F5MFS@1j@0Cjh~huxuemd-X6t83cWjw#OE* zf*jANTc)9DayTZvCWPZ^McXUZ=Awtq;_u%xYV1KK%9myGjE`~lA$t>~>Zc$bmczC? ziVfJn@c+We0eOojQwEax3L!uq|Kpc3=I`e*1w7lXuHuU^tzp2Czm%-TETed(7l<T_bh+Vltsgij8ma3{KK0z2MGjmj3ozY_p3$Em>`w5ZxhBv0cVO%@7`<(=tucfaM ze&x<9_2GxEGWp`0?H?4oVF9OhQxW5DZuwLktV;TpzQ(ri=kiMJVw|E|!x&XFN;kb> zA2ZBx#0|3*%V?8L5k$~L#Q=|iU`)B~41R^c=&_qDp9neW3eq_>jsraT#;o!B+ zT?(MgUe8BCC2)g(u<-xhX8`Z%TmUlS|5SN^2!+c-r2=zTt{OFy_w^@DGa(xe zg3ZvD=AAUKKcE^>*kLJ0{!b(QFBt}~zI4TyXtBJE9+@d)<%%%s{S(ljfQtJu-u$oP zevr=*a~MY3^Il5ymCJFifXm%Jt&{@xq!fU$ziCjp5I)XhC8!wX$~&%$eIZf$6G~G1 z`;wyw88pbU%Q8zjC}e;`3|+Om&4NIb{I)@?;llN75d3k2XaB1k0Lh!FvOw>JEUHEa zm27$S=WYI*I)y%It<|~XBGUZ`kS+?%vHTg${Y`U>?u87SjlGDjR6wT^%C*UYO4EP1 zHn1Cihd%}wlLDq^U1~=%)gne4?yueb<|!u;FzQ)t1p5#-dMX0+F>$(o40Z$H;D6-N z{^npe?!7HE`-#P6JQ#CcIODiy`(3`!+xo(FdwMQD!@bVXcU^?+sN^VSw8Y1FFSL6v z=JbA6Txm>M+$W=w8IeB44w7{0P3H$qz1|`yU9`F*AjwB{hD8&&| zL>Y^r>en;gz@RSZ7e5{cqAZkSJ~}Xs&Jel z9(~2<;cepZarQ<-h$~Yxf5`me|4QZyghfC@Tv$Njg}Vp_^gL)5-HXoz1>@Q06^cO5 z_W%_7XR*zH%k2QuB@k(N;UlgqT$pd@-TzOFqU~?_C;w9m@IS;z;q^oMJI1fR@BVOK zqw=d{_F9Y)==x&*zU>mffIui_Vn8oi(5bmAEskqesEifhdlewFN|6~1s?wk@6;NIZ z8HTDSwKDFdwa)zPucd$}H_r|HvAKUy(oi2C>X=q@3(LugCH#}lZK*?MUg|K%fJf`O zK=xx@!12WYj>AS%8vQAtQoHU^8Y=lYHHn!_hKyn7!*WWQ{je3_G&-11F>5A>t@A17 z5B*mJl+cfCJ#?FSog8SV+xW!9`n8IaoV^bUfDthnU$MZARvyo2r3_#o0WgnwY&f2g*)u^cW zQ$KbWdNDwG zG0USB3%$3(AJ$8QN_v$ldh0Nl9^0+#F(T=f2XxtY5;GwKN~GNGAZ=msj@}w{4WmEA zH;eJN$-X%u(SHflmIh<<)S?eO;U-5FZ|gGgk5Ip%4$MT`PP- zU0;jin^CplCZUVj$em=tHWz`!8t6(4#4UJ4U=~St15ff`kBhLn1XoMII^6GEv})L3 zwSN_qD;oj!j<8gh0aS)^`$nZCS9=lW>oO4I;@-CYgr#$a*tH?HNgFd0=Wl*1#iz{4IR z^YS`vCY4pC@0Xzh1z8w9szA+(GZ~uKB-Fu=F8rEDRi_n*W9YePDE&wenV);OC`Q3V z$7TtEt3pQohbh z6A!GvIL_&=1a??$=p=U8!n<^8o>nJX9s>k?9-(a_gpR#pfh?E-@?&L%_r>|v2BZHc zg8Q_-5p*O*q~WW!FiH1}lGs*S>c$<=fWhb*kOmIyez87?owasIaZML=EqtMCX|@(x z4u=gf>`1wHgElC3E#D{2F5&fkB~^~(`)YOWTi8B5DO!?0DTNgdeRmljIhOOD@$qwW zZw>qw@iW>#BbqoC@VVvA4+Lv1AI% z96+`3oWfsiFQN7G2N*4=HZ5H>?0y+^n4`mKPyOuZ-jz8H>Pm(D<{2k3nf}rgF5A;@ zs0Ve#wh1}gGuw5Qt+uu_-+AY$MDaNB=|k>(i$g=6cO61(8*Q_=Mu{`~L!9`aGNDuZ zUm(@)`4F6BqpD!rXg`VW{w-GV7jlRzO3&-H%(XK^sr26{+jYd|wUoRSD<)q^g|9`d z-)!sNmAcvE=`fQ#d-?d+$Dxv0PKT1vB;Ie)w>8KWG%}PzjqMgL$Awtfzp^llVl`!J0Gi24a`HOfm#HIcAnAuSn=Gb1PdX!YloXBS zZ`(X0_)T{!=5rFC3cVslYB$tkb&3frTcYf3+!W0ys^K5UU`CU-EGAd8}i6lQZe zt)$3F))|?3&v~C=B+sq0&XUS+1Un0&ih6e+nyh_d&5#Tevwu=LB826nvzg`Ugg@2d z!G-uCemZm$r7MpkAXpn$y!fFh<@#U!(REI!0|ab1diRH^HYN>;2s`UID6yQ@eu;t8 z$My0j#L(}soD!i{pWygYy#8w2MU+Tu z?Bv!pE+8bOVy9y0rvJwgvXVd-UbesdO5S_qKI1OS{{RxUk->u?`~E1&2v*b5aILtj zKas=nO`XDt?~YV3=>HzD6v08)r4j;$saw$LZAd0WlRk)eOJgJo}qiZ3WCBKC{cv9Q-*$V;j&t^J9x zHIAdIKxJ6~E(CXJ(FYUgg#hqBQvDvH!{Z0;dzir)J^SIF?Ywr({cnJe=0%MWFjbH5 z@v8#dV3Jb?-~_wYmNOu@Ebl;hWwJcbU@}`)_5q~Ue$6SH5-D`^5mphtR=f}@@|Hy% z_FyH0J!_@BF|Y@DXT2jCC}<&+n%<+$vG9^QTs9T(-wt}H~qF?0L;L%eKb z%`)$r$;eAZ(~-bODZHX^pN~;1%?$rD9qD>`HsWr6%KI&6qK4bv?V;}19Bro{K+zYxX z0~e0E*@ozakg5d6jb|UmQi)Kaj=;PI0v!+W^{Yak9A~!A5AX>~3WT_*Mi#7X1yEr7UBI-77`l|!ADAoc< z#qdL#amC%jO1DSfDr!kjPBiOGou3WB4l05SH{y6?f(MEnPMQy`oGgpje`7uyO{prK z$M*IdXP%mI;%RW3ZxbRH14rVOy`q(~?A2Z#`gnMGWQb zmRMs#9z_^ol7&h#TalOC6ZH^ zl*a7YliP|19q@ZjTdi%I%{~urE*T+mmgu7;>S;Gd)E|^V(*2dIzOM$97U6#A-{o{4 zCdH4;Sn$F*!VZ}t3T@nS`>AVPxW8@<#L5Xg%%H`Ym^NnJ-sQ^saq?d3@G*(Vp0v zy>-z0VA|>Rz_aQ7!4@zbG=2b=8$DaxqS~AU-&5>rabGAy(p&q zEpN{S>#_3pm;BDYTQaWlMnYH07MiSGo~&Pwr5>1Cuk^k}ft-}wzmhZdK~H}S5hoEj zGd4xFDi$~XQZni6s`cf?5Si#IUh$rJ1g*TJ_br(fxi2A6F`t}7XGcN@L1L0o|8MJ> zler}bWd3PqfTMW)k_yRv|KS(3Umpe~g2^m6!gy0T`BnS-GLiKWo*URFxPgp|Vmpl+ zJDc_vq{|4xTpgYH*43=*i4=<1!ZPqFFT&$t~FYS;GeS5hTsHwo{F8F zlpd_6|KP0NCOAkg#@wluj$S{xes&^nE9ADPa54%W&=K=w-`f3h<2&3lMe0Wz6&c|K zQ~2&e4uun;wI-Z!5;ilqcO+d6fu{pk!1Rb{r69# zMgI3HcXKC$?}3YaZq#Nzci9GFuG^FkFJKpD{M5%Z{Tg+nM%4^?BjZ4&^< zz(f6JHkAF6^+A(QOFibP=pOpV;LMGU6|4=Mff}dHu7%B7d8@vOVgGhxlIgXG4~s+R z6p}7w6hXPnEq)$5SEpKj957G9FR|x3HnlMyv4j>dAsu~puO$`}-Wd0xsh~7%D($I5 z6ceR=u?m9t9tlaxR1lE(dEHo9NNpx*JZCUUeZicyUdl7oSSdaW^HA9&KZ)Xt%COI4 zP%{~hI;L6uvKJ~syAy#lKJsJh**2^S@e5>5UT&F!1ZZ(cc>++l2v%E3`}TKb^Gi$=Xep*+1JC5jd-Po|&0;$|n4{6ZQfPBX0q z1C7ph-qda&-_*zB9tke(+bCDyYWTQq;5T^9IA4z{vpTfF07QzW?B8~kAfuZma$zxk zqNEiIIyUm1suZVas8;ZZb;4;$S!tO>W3yQb(cd`afelQ=0BGh)W~uzfjo|5-ewlWH z-^RbUlrprX{-7L}faX{8Tz5cQDZRUlHwU%Rcu3p%Z`UfvQ$nU;ik2qRbJ9k!pHO7v z%*Y+yf~T3a)pQCs&dHdnA5jHIrutiTSVr&FJzw_))m9>cF5%Tz5bh81TB8h2K5vb* z6_xM#L`O;o?bqDfq)}{mIUcjTIeFt$NR{aNtfT4)1oWC8yq(*h)lzmC46>ur{~^R$&i(?DW551 zPDLhac?s>AxRWZ(7YdS!b3Q^m_aHD6oE&C4&bo7ggU%Vtx{V!~S@*20 zsL^cjP!GJh3bODyKIFl-^%)5nu@}n|36DD2p>^+zuuUbl*~W@z?vB-$Q52;6DJ~<) zPri-%Mah`>3P_J0-11)SjM@~S@%vE!dqlm4aB}QO;d+!&+Es+#;2AOXoNjuCf*fvp${|`PY@j0xQcCUq&hS5uyrxlc564EC(=d1Q7d0W4fym@%nfqyjj*VhwP3Opze7l(VXfeGz0lh86B2c}4_K&$ zfQ_+3eaRAg%)-+xoP%A7Q`{#1H%r(*Vr=@W$c-a9>0=2GM9f{c|~rOuCsdl zt+jF%CoZjRUqC8Lsxse>{cO8N2C0V(YXs5cR!~@m`nNK6qC`)XP^E9!pda!hpLH)K z@-7+IFrYfnAHl@9E?Y35MDh|=QHfTPKN_6K0sD!!p$^$zx;VyCDF{dx?4BkS(r^>! ze2%2J*#&>{#8gIMw1~i!LHdQ7pUsVAzT=I9%G40YQ{#hQ7`4+f=lCWbhqzuvq=pV7 zVSF*;9-DCjW=~G#55k8q4!$)ukr>cB_sEkxa&#rxJ6%2xF-=*y6^>EisjlA$^_R&} z96bUD>?8e3PNXHjdyt&%?KIB9<9soS?Y3h}Vh%>T{6cxyR)t`Cyf}P&XH?3vjYDUm zk-NsS$9l|XvrB4b7S0%FTVE^9F`fLIBS`w!n=)0HTLlX1{r&1T2ndhcoJK!)9ef`N zDLW0+hbFh@-dZb9=j^Ocjwd7Aw!v;4TMmGU?LRfY15UTJRPU?@y|*p`9G16lL+!wa zD*=F-76WI5XQJB_cgTz0L-@<{?>CKq5q)`h*R)LBhGydS-FR!x&0|t}`rPSfH_gT4 z4WNvT`$~Wc|YSL1q!e_rytHCBl7n zJMEZu>Byv6OYMv?B&qFk6ZLhoWqan}RaOR*{ko)Wn1}A1_(@lA&vgA+*um%z8M*To zQYL*j5+*%wiO8MQ2r{Hh_13k4Sl-sy5~_n^VVN&U<5|V|-t1>y<5opTeZhQ~-UHmQ zg~pOKlJaqx)LLKMOOK?6jLV^oy0w=$aQJQEkg!MY+69V(9?YrLdx=*Q*0U#q8(y;3 zjX6`Q)?&C1j3I;?X>e-QfNO*g4EEp05#@U#JE})>=VVrRKV>~|_Pdyo=}pU{gB({S zjckK2nqhICDiLpO@`&bOJc8kC1N(i}rs3DlwUcl9k_A*qQpWJf&9-0t86$vTprBoI zYz}gv=^c;=eBR1X{IP+Sjb^ebA<`LB?ohAB6^EMUpqJg3rk<{-mQW-tj`ctt&p_0} z#RP&Qf9qsDml-KlF0paetF2PQFJSO~bsg^Y?&clHd2^8IJIQ*sABj$h=H5!jblTd!=XN&LG|oQ&4X?_e%4B3npZt zjNRk_r2dGx0I3e3@>WzrfVhf4(h0Mk_R@aa`q(_;$8R~NllYB8Ql*EhQ3)A8_aF_G zUIVbI5v|DnRwCM6xQLMW6vJJ-7ensuwukrf4Js_kFm?~MIXkzfe##0njeFs`3#_(~ zL`l6UmC_db=|Vs2kH^cE*YxGP#gIV-`Pu(N+gry)y?6WKGb2bz2vX9r0g)DkK~fM9 z5m36j8|faTTSdA>Lb^LfX-R_?7#itD`hEuYx#xM#J?FW5Klk_hXZsqzd++(qC)Rqe z_j<3jo{1G)C7X-7+Tq|(OL{BLQh~DnS|vRZuA$M-7uKv+;?H$O`d_ICFF-|vCW8N9 zfR*+#oqY$$@(Ij9wmb0WXNpU2#Sg;!B~x9+NXudve8|Cg+}n9XLk=Q({FRw{l|58I znSDh2C#T=&EpcTi-WS1dt+o|bu}y{+i|3&RMft8donJrQ^z!(rLv(g=y5dume>jI< zGqcOK(YoCn{>xWE)NlA6`%m^($x0v|XO#NOKoD>yFm)gKZEUpVdgce*0$lcPphV^t z?Z@NHZ_$+&Ex4P|M(bl*e_d7B^z!$u@R_uP8a~p!cc#+B@C`pX|>C? zHD*HB2EZ;$L0G|$>?Gs!{u70{*#0a{(ihcqfHt87EaksPo1nA+17PA9EJ4ad=YrkD z+Dvl6MLX+xW=4-n5;Jq|ng1|mEtWPNxpH7qYSk$(YP!S!&f)vxLDXHDK(0 zmmv~2Ce+U`7!!xgW;c)mu|dH@S_{ z^^KPFjYJJoP4{S9uTFPQQ=YvY2aYGfE8?>1yilB83Fg-QM(T&l1WjI1k;LsAN61&T z&q37<8{BQHs**7q()`M$!w^xj@gTe*-evYnJl~AEnT%A2G8prwU-$IirfkqwR&j+C zDfXCaJ9XwG$R{z2pl=sFlo!VsXk~q0P5PW*m74ZFXuLSr*xTP1gX=d;2JNr%XTEz! ztaoudZD?rtsaGj^m>dv+_L?l}xT#8zTnKAEj$|g9E8;Eruf*g(8?$Jz7d)UZ$3Lvx z7ue|4=b;57-)>%T^*{8oQy#ktsMA8*FYjjwD+AkukwLc z)3I+5#=h!5Xm@Xn8}t@sbZHkg#lywr;T|mUPEFW)S5QE5av&VNv0^B-7gu?HBX-+s1z&5j%` zUyx$gRF3xZgYNA)wVL96T-xnigRa?+&b)Bv77+=Gq~f<)Z@c?tv-u=S^}6*U8uE_z z9^FfB1{fjl|Kaqe(90GAJBG{q+m4C&IbrM16~?h!w57UEMeZ&Q%pm>Lh|>yd4Ysqn zyfMKT z+{f9z&mCVE;8Q?Kr7-$~5v-Hj-@#GA^Hl0Sg|8(|w5)#3W&fpuxjFe(g*UjoW5ZR;^DH{^8V#fp)Xkbui8FOI#q@ z06zrgy|>&Q19%|sf19~fypD9ydQ^L?L$a(rS{OcDn)x3W`_VZ1Ub|hq57#_{th3Ca zFwhs;;N@kglgFL@J1NpDi+)!*xq?#HO&T~Dfu`Nyf=MW}Mbw`v7=Ctg$Ut#T5i($S z75oFHNk#}7-}x*2Wj7<=Yh4Vw<`l_^u>NMM9@DRboX)WleCBIMnZ?)PXI0k?WT8SF z_@ViskxP3e_>p)sP7CdOgX3Q@H*4*J=H)k&Ves`4C>HQ}^nLl;W18An3Yo`P7^Wr|%D-J05k40znnbbrr({Uk-I6<2n# z1YY`W2+sRdNIXIw0r!U0GCssC#qLr+(D~z|?d8Jnz7b=_+yX;$ z9VTpCQR_9+pN0z5wz?HW0(i~j!H_}%dqR{(zX&c$<7LlR17Ms{tbZ9!g(mi?Kq}B+ zdFK)=cVYMeo6L&HH36L@%nV<=xONGl1Hl`V*8XhKf5;;xCB@A%BkAsr+0og_EhJPp zbNn^F`6VbxMg@|m$>NEWjD(+`i-eS@x&!fTtPH>qUVq05Cl^4{bfH3y3;Ov(<)Lg? zylT$3yO;`|svf57xnD1_yg%fa)Kg}<2!E5?C6KKt+)Le~r|_Ylke3ZHx1fG1U;M`R zyos+22LCwSvZn%ZWdfYmaUQ6dJ&&Y`zPvI|i67@ebQ|4RHyU?swQILT2&mndW-LPC z=PM=65n0mFsCIH-HB+zLKz?}hIno8JsQceR_9t}qnKEM3 zVEpV_*ttE|V|s?ka8Xa6+D2VQR*AP>fi{|IHQ1hqQ#d>w*|OxQLo8FFqSI3^(2y6e zq{Rnt=F0NTCzrI({&_BD8o$9uiEe9Xgc=MV^g%XJ5IhFo$CITcQ7lAXu zEG;`MDdV@>8!&V#W3g^rdbF?m&M0zeUqsPL@SFOV8>SO#)^v3a@^znvBjDGXE7p4= zsHu#WzBZhZo{?R;G)+Ava=sGCe%;B}QVS=v)``ilC5iE!gmNptk(9=H+S zlaaW-U;@UzZe+0VkJruVC6s8F-_t_!+mVRDDwx3%u%Bmo%tZ>8IWF14soiJOg>Yso z4b07nM31^#GIMjyhL>WN#n7GiE1$B5%CjPv^r8PxJJYPPeGhZ%X+{heRJaEhwYb45 zE2i+Xlk9{y9?{>HjpRWmYV;2IOMhwsVCIc)m3i8m*<2x=?KV^ zaZygaY>6VE;hi}^J6{xYf$@D%_a+n=-=Me$Ho$0h$36vJe(qL&w*U;We6cYA-ttd@ z@r5fwsmEl$kMgT|kw!mmw>jnOPUFvt{@@uX)tO*@y1XRGULnj!UYGE3I6@?WPFM8q zNGzpe{}bL?Fm+ks@W5k#-?2BJz1Kn@`fi_5|_dxzSvTTASprr=T)sX$RycMWt`{mTj9WKT@{o_XEZc@aT;;uaTd(Qix*9ef(87Wmv8C41D z(3DU-gb{i*5R@P^?aN3&)3FtuK75Seq(9I48zccRAwRwnYeCtSDEX^w%2#TZd1YJ* z6TO*kC3M4;^^@6zau%&Q9r_m3**X|J;YxpJ_X;4UXrMTM2^3%9zzQMqVu_^4#DtgBmreB1DY`-zf`0=~{Qt%Q z^ap@aQr~`Uc~UNzLtkK@_z4Jx~&;uEmY^pyNv&}8}uh$MPIvgt2|!{93T3~&8r#Xtj3Ag?*DNHDtu z85%%-ow9(@>)?iq5`gt?%>b{5{OdU4Cpm}$J{VFP$;p+iS+*mI;TiL>XmR^mLp4|(kPSZv{9OzoL z`==%I5#21J@=&#cZpWI5h;(R+6)bhAZ$|CjS?O<;lR>bs7j@-kL~w%imop1diz}3B zoAWBy9E|4=J*dt`A18khU5&iOGycTdYPN8Sy#~u~IR=>b7fbx;%@Kp)pm#@D7){9h zO+Xu(xUjI0S#0}yI1f-2RwKpHp2+T)&CHS#*Kx;7sB1EQoe!SsPE#OM+F z+<9l6mvwl({IFTtieCzioI&Cb-I_?SF-{%SC?03yirhkE<-eE%;}0YO*AE-gh9c z_xJT=ra_RnfiU>3_cBp0U*3{C^=Q(SI}J0*Z1?rL^e|qG`s}Ifx>W5ggzc-l%gcGH z_|#2>FY>i#arCvi)PpqiJT%y$MR@vDUd7u#$dTCxZn9!5(r+4PT`lQC&xw8x+`p&# z@#p7ofzm1yW~fk;=r&amY;-d16l3)FNCbK|w9R`tS@{q!GZKlfqkzrh{yR30R{|n! zbC}1WVR>rp_G39cYXbL(&3JQkl%l|AA(sygKTElx+s%K7iqa7T)3mm>&IorfmXyqX zk7=61g|3ym8y=pf{s`v34_(`9;L(6m`#{M*kGd^4;7A|bkUv59%_B?O7rKARcRmEn zszAbx&{tsMnf`*967a8o{B{5OjRTRq5CcR0bow;MI@oqK-Ybn%oE9|K)pvl+rtQAO z#N+1U!%epnKeldB*#Q`8Y$1_|YAkNL z-&Tv4ONIdw8vf3={qBbkYSgf_;lv!~mqFERpuP_S=uwomgC zx&ft*FFy}1$SlK^SJQnOJ{)K3)|n+bW_U2R?F2& zp0ROopap*Y=CvO?Y!HR|@a+Qs z>v!~6j2tOEqclQpHms+#uh+NdakBo|3^WDhF(_w2NMalt4k*!S!#qTE`-RYDl|yJ} z6<0Ruc1Fnm=`izw{wS6E(!GVZZ9WuKvhj0n7l9EeYyX`N8_2t-usl=jQz-pbTT-7b zRDLC6ku(?|G_5jPykGF^8y_6g{_+!`T4og{P=LFXNFIs;h&@cS$X^M<(jj=rlmWB{ z!#KVDAnCU#43&UTo&3td{R4yowbQJ$p$8C`BjG#?z04|-xz)}9CZ}I4!fAQak~YfL zYfOc7EC)CFG^NL-FZx4dHhH}E=4%l}-$#d0;boS;6y|9<%`{9p7arZ6H2Z zV3#T#wrNyLbP=D$@0|T)Ss77jHgDWgzi?xtxFt%Oa0+20oJ~oo6#LL}mu+yB<|RM; zy68NSKGhcECjZFm!yc=DM`peR*l1E@M{~@F_c5N3T=7twOPwCkAf~;mdilyp-hdm4 zBe4cHkc)vr3H6^-S4JuPNs)~y=v*jZI6-c}l!MqY59x=h#>L=|gQYc6UaXkyuwNX{ z#c%n^3I7V;Eb7=^#I&H(^x_^ctze|Mmg8OMM3CXlIY<|<{)wI%t6raKC)*LubewZr z`Ig+*hj&Z9cD;pzqZoQm1`8;%BcFx>Rb1@j7$;C^3LXg{U~q?g5XqNl8vwqK{K^%y zBYp#6LqvWyQiZSy_)%U;*zK1Jgb6X7T_iJ@7mF1Hr<~%zf`3_I7Oa-t}K!MWbgA z6y#ACjk(w?gp1jB8TJG3jz?xnTQ?7Lz1ay~$-n^KlK68U>fV zvIQzKwg{wY$vCz1{u?t!&4#GBS0=y?!rn#({TxVjV1zh{PJYdr}=$Mkyle^W;#JxUVS-3lmnPvK712-=RfW=NMsUW+RK}mY+G-aQ%8A!UhoTU2B}_GD>hNn>R(RPo>0!Ckk&MQJD1MO;q3bwY25 zDnub!1?cn0FT0<-LiS=TrbB2K<$CYw5uxiKgre(5FuCmvH8~aoW{ZAJ3lqXtjK%-kq&QP-{v4BG$s z@HT??nvj3%HrUcpkiR=79u#K}5gh9nd1SO=Q&^8x3Wgn@M@L8R`g>D0_6yv=QBOp0 zB0O79igI@z6nuO92f`-i)@TG%hI1V|?Q!|n&kFpk$SGCtOQ(? zbH#C&(|m@TCnu=1IfBjBp_2Rl>WU*wL&0y0^#&ymHNsf$F_KKLXVj z8=a}71k{?W`^QQ!3=STe-UFvHVG%eiAR#B?xqf&WS+Xq^X{)5E8TRp`pMdOF$?%o3 z7Ymj)zOzQ1Q*!Pr^GoFVllA))6ck9nAjWX6qWRjJRPhGZ*4O&_;#uNJOY-u>mA>7v z$*zoHiMH^(9UmJz_iKA@`RC840d;T<4ayXU5|#1CeJWu z8;V@=b;TG?&>vJA%(0~8dwhkEs9Wi^)}wBGL$kBXOc^vhM>aM;XNdeq>a%Bg-Kes%F9|+5xcXnFbL5hrYiqweoDvLL9ho4)#z1Y)XMqM+ zXJ_7;&K1AL@G)&rt z2t`Ik_176{id+^^&`)4Q;G(+Tef}W%2uj@^3WHb4w5t9Fd}Sc)5n${E41hJ?m!k;~ z4BvMgNKW`aa+Bz*UI1rnc72kf<%nT#e9_URi!{`pi)z^RGEUd$#n{SMu`2V}zez3h z>t?m>aSV>d09!c5kb4|@4d@8=o^71F)lI)@5U%y5;F7=y>->-+McMS`B+6JlL zJT9u4ipa12b|i_X|0P)6r9M9&w=0~Xey=1hX*$SfPOh|i_)6s&Ui{P{EedCuP9;oPJvp_LxL-Bj4h%FVUui@P9EQF+7`mrvF><-Wu% zB^6ZUS+>&)c7B#PK^JO$k5^YIa%5t3#1I#CJ0+0>;4)l&9>bmI64)O%ZRfsU4rC_o zdJYb}KoUh@D^Rz<-37=VVA@A9wY|4@Bl-5nD}iDBKR@0^$iWhgCV?(WUHmC7Xng`6 zj^d*aNtggkoo|}~bbsr!z%kGL77Bj0pBrJ7?}hC6R6|c3$4Hx%fi(h%r$3rPsY$&;_+#p|x;j{u%kDz!D>7Qhaetl`UGrTn`nwt%DONn~u zLw)}UEeWONlcuFMjLfQyCKCUcQ9ZAi@2jE|XjLJIDxDz0y-I|gGu+T;8a!!`?#0M( zzH{};LyUH5|B5|OM@Q_2M*!lIkMGOF+LL53E0g2jX-X;wZyBJgw1>M*_7cG*<}La2 zr~;W~-F<1ufHG9bd9CXtrA`&XrLFEyBj_@_vk(sVK7Om3>ABlilUaB4rkbuqov-eL zMJ%%ySl`g$VXN^Ib_XtTAz=F@hinXHU?B^MfkGP_WIL|M66DC_=eoKC4Yh|Tdvi}{ zI8$!m@_kw*%&kcNjlrq8rn3XBakb|(>|n0f!FW}{?K_$dC$t#jdQv_q12NRdaHp4%eQqMD*pWJA&Cf`HR-a8l(DRw)pP=-GTI zcM{eu;&h!VuIxI8AZ1LBWvdaTFXc6NDw>93C&n`hnn&Yd&p!!|-bR@5+PPi(9nj!_ zYo05ieX-@+$(S78YDchEI*}=>w?6IRUt7A#@3wK|Uuy`vSmuoLK`Cr+*+iOq9&B#4 zy%u@8Tp-f-t5lFo|7VVteJ71)X<<3UC7I@9Cf?{pMfzM7-U!dlu6{WXlEtue2!Ysp zG^zVv`U0l@A^{*6JR;#hnCU^;i${QMuq16_QAlgs+M;g@ZfH+yGz>L)-p=;k+Qftj z*#CDNm>hRpCnhGoe0`yzHKoDc$&Mc4_$%zpjZ3#NBujcaOzDcF>F+IwJI)3IhSDKHByL~hz)@mk{D)d$nXTSj=Bg?OIMfl@!^%?X)!F-m=`mxun-uiK> z_wz(H+RbK947FnI;rzk2>DjQbJKu+f3}!xAuDb$z+dep$q3X_d-ggfU4@kP{Ewgku zEgJsp_Tr-7a4x9RT3)^lhHFBjbHzydXYD?{X0)>+ZG86$P6L$InBk5K#Dl}$so*?| z-GY4q1e`}x>aq4CNO-=sH-;*tlgVazMw!j87ULe52Aai6-~y+T#CTjKqCV9(M6{uT z!c6y^|J3b5rKzj{<9_(c^My3ztAVI@pKf7z^v@Uu6CN$Z=4q>kE7s6tqHZ6L3l5Hr z1zvyNXXS|0dG_*iAl`FL#cR=%;jjH@ohqFT?0dt5SV@s0YLqKfaqqqggbmA*4+@a! z5NijKCfj}Ln~=5N*gtby+PnW0q7LS%&H5!%*&l`4p_a@%QK{#f&6Nr^Al=BA#(xEE zScU)&{!^)gHZlJx-U+Li^~`OnOKpJIrVY&}_Ru2n@ntKs-*9Qeqw&c5UkKTb`_UrV4oLv)kuC zes@r*W`P@HYjE(DYLlRdNb!D+&zY2ylau)gZgga1p9TcauhF<$vGHIW3S@K{rKOJx zgj^bQk|1O!Fi)YQq%N{KoTJoqy$o;C7n*GxQDqZ004Jnr?|7)n%svDdK;WUi2d2HH zfw1cK(^{aP0x7N!eU#O|n?EFogOXD+Ffy2Aqxqt>*8KyC?k0s4%gbe<9f`GuMhs8i z3kmi04T(+!dDJIM_TJ65RncP+-CFLDMoi~X`(5u^s|mwV>0|CN@wa3i4%_?WTc0vx zZZ{q|zGljpuE?|<=-dwWjL$f1nx6TYz9~I%?XH?K&eB31iuKONpazk^2GxnJ#kuKL zwvnqS+5HMVW?j&nkoi-}k`6%Hj<7A}oPQKh{lm7T2$eXJBROLHDTd6tr30C@u&}Ul zLWhkz!`uKm2wGXOq<-M^OsjwFRn_dY=tRxtqvy}BgYKL!KYzBockiD0$we6MBmmh} zOzDA0(pze448WX^da8BJrV6@Rc>^2I0M@%bfLH+%t{(7Ax7u2uA9!Zjcus?%{2}!w z4}4u8_w?#(&W*wd5)LRwTx|19&^iS*_4fmQPPT%<{P;k7pVcD%sxTvl)OOF#7?x=X zZi=sWUbho}H{3KT!#F6`@vIbnMMynL7uVLEw*yAU`)M;1=|HX95|{Uf-GFB1xdym! zbwcfwRA`Ge4;l@l#_&*0Y&P)2MOpaP2By=#QC}yfAIqarca7)Tu zP{iXx%1uEem?hnVbmWoy=C$b4z@EWMC(@hAss?9aFCx;;IL`M+HZxq?;$uUlp(&(m zanxYU;u{MS((wD=@+aF!_&0J?lhyZ}mijEvT?vN%_m+VWk}gd)Wugub2yoel$w*yC zlqTX8D^qPSOFQQtg2-k4JrH4KsT|xS+&9&qZ^Q|vZBeQW{@VZLpNZWAnBp+%2A z-v$`O>?%@Xb#`8kM-}Swnw1uonjiK#@?-r!(py?tJ%9c@6r_4GYHHL97D+p!BO)@g zvo*AQG^rVnuk(aYA08e)OgRk1+q60%<>%x4mPWF4yTis>yLemF_ni9l95P&_Rl?!T z5m!$(n?ML`UlmT9DkS&Vg9^rm$l8$yy^kc3%a^ixEwoL1l@3s17OeJE$me)(7w#Z% z+O4TY8)g-kQC&!ZnI=>#+*7vHOw-j;O{Z{*BKlDy6cAi}WWRhwH&-L=QR%BqrgA@{ zx;M1BTJ^@}`8C@5A{-+#&W}wl__*VGZG_E-Y}yp^LV{0j@*7R$$f=i?!iJb!DpP&2 z?3&J*IrrSI>totib8ptEx-OYCbhm58H z!2bNaMPx^aQtn97gj)Nbi>_B)Kgio`-?ZMU>-eHENxl1=Hh$Va>40>c$0b=IK&-9^KOh? zaa&<2Zx7$zlQt$q38~G$f7DPNr|Z_)&Jyq_dEPbF9}V_pnbNHrY2{Tp!HthtuKb2uL%tn{ z2YMX|T)W9Yj0MLdFP98{4bzeR>0eXya&x}K;kFy& z##l9kTCftQ~!OYhxfA^`2G(PSx@Qp%{b2tfy^`E_`x zE?VT>7%-4Hi0qPsGy^;8(O&Kb7?~wDza>C4iorC1sL?tOG8KY#KIdP{bK!m3bC@Q+ z`U-1bYvW_*=ESw+Jji(`IZxS&s@MFX-NUINf43v#b*HSG$*z+T``PPm+ao93<%>|E z+XoOI0GG3R?$;g}5zZAK8#ErxyKaZi>4Z2Si!H53cORZk$%PL(A9FN%&$C~(23-j} zur_{FV_!MBz?t?ABt>e}zK6dL1$SRAAW=eRo7ohQ5^c}^{P-NQ^z81_Yk{!QM+pMo zNiP|T`DeeTSeszKR#e=f)VNUK6&0LZz(g^94OkE)s^#W(Z|+&qPVP+k!s`86!}|-} zCh;0jp+HSzoaGO%ayfB|=qNN`;|u-aD{KK)eT9(fwb(8a(8e+$9&Lc$>*T{~F$zSs z=tW$Vgr$n_XAP{1J7khqhwb0~ITp=wK0{vHoN;y4bvjt9W|-0LJ(mA%sfCyH#m&37 zd`>!WZmgZN(-PpJSfchmsy1K|itfm;1LwMw=1y#_l9<1$#rNcSvCHNsEEncn4Sw0Ci`k*dCgydg>Uk}W!ShgKmF+8aDB|`>n zYXOaBkGgm-yP|5qUgPRJ82=Eqo^$DD%4ntfDE;la=SGL``)aciAL~bufkuoGq$o!DYDMpbF?jc#SDL zlxFFm+9z1ZD`vuN>X(L4C$9dguA>kyxbluT6fpP=T(zAJ2PBYVNMfL~bv4i zgs5erih8UqWhe;0H|CA)!0q`%-x=H~Q?pTM?gWl>SMYYI*lE9w3wGIp7(}Fn?qi}z zL#(Cw%=y|@>n34uQ;TwEY97H9+2J@Bnp>oZIvTIg~d?s zg6y{87XUW2k9q~9PlRcZT~xD%*wL`rxK_A5&;uVB;UowcjW% zDpA+YS(56^<3zok*M6cMw47oDy;vL5@806+xFjzIeroVlQ%*=cUsMK%$7CBK~B6NTW zWoX`c{adOaIPC#4S*9KT7sz2Hg;~n;@~O#9HbjwU-!_^>?PWrvx8)HnqskAl$agR| zT3pnqu$P&9U|FSOIZc3>Pjhpb;S)^m9A${KRQd;URY&xP6Taqpy{3BjEnArT3 zuTtQ!*lV$OaA59x-g}umE^5Bc01v%G+!*#i!*SIpr)d~pQRxumMF8~Oc+4ovy($Xq z?Q*_tT0ojPA*!oPN?|5D-3)YjF9RWeN7f;AT14HCW}hVK$TLh#ZZ4|d`@M_(UIG#> z0*bfF^gqJncIqc>f7rLW*x)R?PPyZGdmqzzZ;zH5kbpS`QD*7h#1aw`nxv&fRUosF z!!-mdyQUgtzLWfgUv-(wVd`Jk#00Z+Z&O1mE=R=nC8(Y!DBE9%0D46&OxVVeeQt*$_)TCcV2L_4F(jUG+uO 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 g%hO&z07pG1 Date: Sat, 2 May 2026 18:02:38 +0530 Subject: [PATCH 04/23] chore: enhance UX and optimize performance + introduce zod schemas --- app/components/chat/ChatBox.tsx | 1042 ++++++++++++++++++++++++++++--- 1 file changed, 949 insertions(+), 93 deletions(-) diff --git a/app/components/chat/ChatBox.tsx b/app/components/chat/ChatBox.tsx index 8c0f9954..6f46d197 100644 --- a/app/components/chat/ChatBox.tsx +++ b/app/components/chat/ChatBox.tsx @@ -1,4 +1,5 @@ import React, { useState, useRef, useEffect } from "react"; +import { parseDuration } from "@alwatr/parse-duration"; import { Send, Bot, @@ -11,11 +12,49 @@ import { ChevronLeft, ChevronRight, RotateCcw, + History, + Trash2, + Pencil, + Eraser, + CornerUpLeft, } from "lucide-react"; import { Button } from "~/components/ui/button"; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, +} from "~/components/ui/alert-dialog"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "~/components/ui/dropdown-menu"; +import { Separator } from "~/components/ui/separator"; import { type MediaBinItem, type TimelineState, type ScrubberState } from "../timeline/types"; import { cn } from "~/lib/utils"; import axios from "axios"; +import { apiUrl } from "~/utils/api"; +import { + AiResponseSchema, + MoveScrubberArgsSchema, + ResizeScrubberArgsSchema, + AddScrubberByNameArgsSchema, + AddMediaByIdArgsSchema, + DeleteScrubbersInTrackArgsSchema, + UpdateTextContentArgsSchema, + UpdateTextStyleArgsSchema, + MoveScrubbersByOffsetArgsSchema, + ChatTabsStorageSchema, +} from "~/schemas/components/chat"; // llm tools import { @@ -23,6 +62,11 @@ import { llmMoveScrubber, llmAddScrubberByName, llmDeleteScrubbersInTrack, + llmResizeScrubber, + llmUpdateTextContent, + llmUpdateTextStyle, + llmMoveScrubbersByOffset, + llmSetResolution, } from "~/utils/llm-handler"; interface Message { @@ -30,12 +74,13 @@ interface Message { content: string; isUser: boolean; timestamp: Date; + snapshot?: TimelineState | null; } interface ChatBoxProps { className?: string; mediaBinItems: MediaBinItem[]; - handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => void; + handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => string; isMinimized?: boolean; onToggleMinimize?: () => void; messages: Message[]; @@ -43,6 +88,9 @@ interface ChatBoxProps { timelineState: TimelineState; handleUpdateScrubber: (updatedScrubber: ScrubberState) => void; handleDeleteScrubber?: (scrubberId: string) => void; + pixelsPerSecond: number; + handleAddTrack?: () => void; + restoreTimeline?: (state: TimelineState) => void; } export function ChatBox({ @@ -56,6 +104,9 @@ export function ChatBox({ timelineState, handleUpdateScrubber, handleDeleteScrubber, + pixelsPerSecond, + handleAddTrack, + restoreTimeline, }: ChatBoxProps) { const [inputValue, setInputValue] = useState(""); const [isTyping, setIsTyping] = useState(false); @@ -67,11 +118,195 @@ export function ChatBox({ const [textareaHeight, setTextareaHeight] = useState(36); // Starting height for proper size const [sendWithMedia, setSendWithMedia] = useState(false); // Track send mode const [mentionedItems, setMentionedItems] = useState([]); // Store actual mentioned items + const [contextMenu, setContextMenu] = useState<{ + open: boolean; + x: number; + y: number; + index: number; + message?: Message | null; + }>({ open: false, x: 0, y: 0, index: -1, message: null }); + const [showConfirmRestore, setShowConfirmRestore] = useState(false); + const [confirmRestoreIndex, setConfirmRestoreIndex] = useState(null); + const [showConfirmDelete, setShowConfirmDelete] = useState(false); + const [confirmDeleteIndex, setConfirmDeleteIndex] = useState(null); + const [showEdit, setShowEdit] = useState(false); + const [editIndex, setEditIndex] = useState(null); + const [editValue, setEditValue] = useState(""); + const [tabsMenu, setTabsMenu] = useState<{ open: boolean; x: number; y: number; tabId: string | null }>({ + open: false, + x: 0, + y: 0, + tabId: null, + }); + const headerRef = useRef(null); + const [historyWidthPx, setHistoryWidthPx] = useState(null); + const [historyQuery, setHistoryQuery] = useState(""); + const [isHistoryOpen, setIsHistoryOpen] = useState(false); + const [editingTabId, setEditingTabId] = useState(null); + const [editingTabName, setEditingTabName] = useState(""); + const [historyEditingId, setHistoryEditingId] = useState(null); + const [historyEditingName, setHistoryEditingName] = useState(""); + const tabsContainerRef = useRef(null); const messagesEndRef = useRef(null); const scrollContainerRef = useRef(null); + const scrollToTabId = (id: string) => { + const container = tabsContainerRef.current; + if (!container) return; + const el = container.querySelector(`[data-tab-id="${id}"]`); + if (!el) return; + const targetLeft = el.offsetLeft - container.clientWidth / 2 + el.clientWidth / 2; + container.scrollTo({ left: Math.max(0, targetLeft), behavior: "smooth" }); + }; const inputRef = useRef(null); const mentionsRef = useRef(null); const sendOptionsRef = useRef(null); + const latestTimelineRef = useRef(timelineState); + const [pendingResizeRequests, setPendingResizeRequests] = useState< + { id: string; durationSeconds: number; pixelsPerSecond: number; trackNumber: number }[] + >([]); + const getProjectIdFromPath = () => { + try { + const m = window.location.pathname.match(/\/project\/([^/]+)/); + return m ? m[1] : "default"; + } catch { + return "default"; + } + }; + const PROJECT_ID = getProjectIdFromPath(); + const STORAGE_KEY = `kimu.chat.tabs.v2.${PROJECT_ID}`; + const ACTIVE_TAB_KEY = `kimu.chat.activeTab.v2.${PROJECT_ID}`; + + const getRecencyGroup = (ts: number) => { + const now = Date.now(); + const diff = now - ts; + const oneHour = 60 * 60 * 1000; + const oneDay = 24 * oneHour; + const startOfToday = new Date(); + startOfToday.setHours(0, 0, 0, 0); + const startOfYesterday = new Date(startOfToday.getTime() - oneDay); + const startOfWeek = new Date(); + startOfWeek.setDate(startOfWeek.getDate() - startOfWeek.getDay()); + startOfWeek.setHours(0, 0, 0, 0); + + if (diff <= oneHour) return "Last hour"; + if (ts >= startOfToday.getTime()) return "Today"; + if (ts >= startOfYesterday.getTime()) return "Yesterday"; + if (ts >= startOfWeek.getTime()) return "This week"; + return "Older"; + }; + + type ChatTab = { + id: string; + name: string; + messages: Message[]; + timelineSnapshot: TimelineState | null; + createdAt: number; + }; + + const loadTabs = (): ChatTab[] => { + try { + const raw = localStorage.getItem(STORAGE_KEY); + if (!raw) return []; + const parsed = JSON.parse(raw); + if (Array.isArray(parsed)) { + return parsed.map((t: any) => ({ + id: String(t.id ?? Date.now().toString()), + name: String(t.name ?? "Chat"), + messages: Array.isArray(t.messages) + ? t.messages.map((m: any) => ({ + id: String(m.id ?? Date.now().toString()), + content: String(m.content ?? ""), + isUser: Boolean(m.isUser), + timestamp: m && m.timestamp ? new Date(m.timestamp) : new Date(), + })) + : [], + timelineSnapshot: t.timelineSnapshot ?? null, + createdAt: Number(t.createdAt ?? Date.now()), + })); + } + } catch {} + return []; + }; + + const [tabs, setTabs] = useState(() => { + const existing = loadTabs(); + if (existing.length) return existing; + return [{ id: Date.now().toString(), name: "Chat 1", messages: [], timelineSnapshot: null, createdAt: Date.now() }]; + }); + const [activeTabId, setActiveTabId] = useState(() => { + try { + const stored = localStorage.getItem(ACTIVE_TAB_KEY); + if (stored) return stored; + } catch {} + return tabs[0]?.id || ""; + }); + const activeTab = tabs.find((t) => t.id === activeTabId) || tabs[0]; + + useEffect(() => { + latestTimelineRef.current = timelineState; + }, [timelineState]); + + // Process queued resize requests once the timeline reflects new scrubbers + useEffect(() => { + if (!pendingResizeRequests.length) return; + const tl = latestTimelineRef.current; + const remaining: typeof pendingResizeRequests = []; + for (const req of pendingResizeRequests) { + const trackIndex = Math.max(0, req.trackNumber - 1); + const track = tl.tracks?.[trackIndex]; + const target = track?.scrubbers.find((s) => s.id === req.id); + if (target) { + llmResizeScrubber(target.id, req.durationSeconds, req.pixelsPerSecond, tl, handleUpdateScrubber); + } else { + remaining.push(req); + } + } + if (remaining.length !== pendingResizeRequests.length) { + setPendingResizeRequests(remaining); + } + }, [timelineState]); + + useEffect(() => { + if (activeTabId) { + scrollToTabId(activeTabId); + } + }, [activeTabId]); + + const persistTabs = (next: ChatTab[]) => { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); + localStorage.setItem(ACTIVE_TAB_KEY, activeTabId); + } catch {} + }; + + useEffect(() => { + persistTabs(tabs); + }, [tabs]); + + useEffect(() => { + const updateWidth = () => { + if (headerRef.current) { + const w = headerRef.current.offsetWidth; + setHistoryWidthPx(w); + } + }; + updateWidth(); + window.addEventListener("resize", updateWidth); + return () => window.removeEventListener("resize", updateWidth); + }, []); + + // Ensure activeTabId is valid after tabs change + useEffect(() => { + if (!tabs.find((t) => t.id === activeTabId)) { + setActiveTabId(tabs[0]?.id || ""); + } + }, [tabs, activeTabId]); + + // keep ChatBox external messages prop in sync with active tab + useEffect(() => { + if (!activeTab) return; + onMessagesChange(activeTab.messages); + }, [activeTabId]); // Auto-scroll to bottom when new messages are added useEffect(() => { @@ -184,106 +419,352 @@ export function ChatBox({ ]; } + const captureSnapshot = (): TimelineState => JSON.parse(JSON.stringify(latestTimelineRef.current)); + const userMessage: Message = { id: Date.now().toString(), content: messageContent, isUser: true, timestamp: new Date(), + snapshot: captureSnapshot(), }; + const nextTabs = tabs.map((t) => + t.id === activeTab.id + ? { + ...t, + // intelligent one-time auto-rename if this is the first message + name: + (t.messages?.length || 0) === 0 + ? messageContent.length > 24 + ? messageContent.slice(0, 24) + "…" + : messageContent + : t.name, + messages: [...(t.messages || []), userMessage], + } + : t, + ); + setTabs(nextTabs); + onMessagesChange( + (nextTabs.find((tt) => tt.id === activeTab.id)?.messages || []).map((m) => ({ + id: m.id, + content: m.content, + isUser: m.isUser, + timestamp: m.timestamp, + })), + ); - onMessagesChange([...messages, userMessage]); - setInputValue(""); - setMentionedItems([]); // Clear mentioned items after sending - setIsTyping(true); - - // Reset textarea height - if (inputRef.current) { - inputRef.current.style.height = "36px"; // Back to normal height - setTextareaHeight(36); - } + // Build assistant context + const chatHistoryPayload = (nextTabs.find((tt) => tt.id === activeTab.id)?.messages || []).map((m) => ({ + role: m.isUser ? "user" : "assistant", + content: m.content, + timestamp: m.timestamp, + })); try { + setIsTyping(true); // Use the stored mentioned items to get their IDs const mentionedScrubberIds = itemsToSend.map((item) => item.id); - // Build short chat history to give context to the backend - const history = messages.slice(-10).map((m) => ({ - role: m.isUser ? "user" : "assistant", - content: m.content, - timestamp: m.timestamp, - })); - - // Make API call to the backend - const response = await axios.post("/backend/ai", { + const response = await axios.post(apiUrl("/ai", true), { message: messageContent, mentioned_scrubber_ids: mentionedScrubberIds, timeline_state: timelineState, mediabin_items: mediaBinItems, - chat_history: history, + chat_history: chatHistoryPayload, }); - const functionCallResponse = response.data; + let functionCallResponse: any; + try { + // Be resilient to provider response shapes; avoid hard Zod failure on client + if (response && typeof response.data === "object" && response.data !== null) { + const data = response.data as any; + if (data.function_call || data.assistant_message) { + functionCallResponse = data; + } else { + functionCallResponse = { assistant_message: "I received an invalid response format from AI." } as any; + } + } else { + functionCallResponse = { assistant_message: "I received an invalid response format from AI." } as any; + } + } catch { + functionCallResponse = { assistant_message: "I received an invalid response format from AI." } as any; + } let aiResponseContent = ""; - // Handle the function call based on function_name + // Handle the function call (universal v2: {function_name, arguments}) if (functionCallResponse.function_call) { const { function_call } = functionCallResponse; + const fn = function_call.function_name; + const args = function_call.arguments || {}; + + const toNumber = (val: unknown): number | undefined => { + if (typeof val === "number") return Number.isFinite(val) ? val : undefined; + if (typeof val === "string") { + const n = parseFloat(val); + return Number.isFinite(n) ? n : undefined; + } + return undefined; + }; + + const toSeconds = (val: unknown): number | undefined => { + if (typeof val === "number") return Number.isFinite(val) ? val : undefined; + if (typeof val !== "string") return undefined; + const raw = val.trim().toLowerCase(); + // Try @alwatr/parse-duration (returns ms) + try { + const ms = (parseDuration as unknown as (v: unknown) => number)(raw); + if (typeof ms === "number" && Number.isFinite(ms)) return ms / 1000; + } catch {} + // Try hh:mm:ss / mm:ss + const colon = raw.match(/^\s*(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?\s*$/); + if (colon) { + const h = colon[3] ? parseFloat(colon[1]) : 0; + const m = colon[3] ? parseFloat(colon[2]) : parseFloat(colon[1]); + const s = colon[3] ? parseFloat(colon[2 + 1]) : parseFloat(colon[2]); + const total = (h || 0) * 3600 + (m || 0) * 60 + (s || 0); + return Number.isFinite(total) ? total : undefined; + } + // Fallback numeric seconds + const n = parseFloat(raw); + return Number.isFinite(n) ? n : undefined; + }; + + const getArg = (obj: Record | undefined, keys: string[]): T | undefined => { + if (!obj) return undefined; + for (const key of keys) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const value = obj[key]; + if (value !== undefined && value !== null) return value as T; + } + } + return undefined; + }; try { - if (function_call.function_name === "LLMAddScrubberToTimeline") { + if (fn === "LLMAddScrubberToTimeline") { // Find the media item by ID - const mediaItem = mediaBinItems.find((item) => item.id === function_call.scrubber_id); + const mediaItem = mediaBinItems.find((item) => item.id === (args.scrubber_id as string)); if (!mediaItem) { - aiResponseContent = `❌ Error: Media item with ID "${function_call.scrubber_id}" not found in the media bin.`; + aiResponseContent = `❌ Error: Media item with ID "${args.scrubber_id}" not found in the media bin.`; } else { // Execute the function llmAddScrubberToTimeline( - function_call.scrubber_id, + args.scrubber_id as string, mediaBinItems, - function_call.track_id, - function_call.drop_left_px, + args.track_id as string, + args.drop_left_px as number, handleDropOnTrack, ); - aiResponseContent = `βœ… Successfully added "${mediaItem.name}" to ${function_call.track_id} at position ${function_call.drop_left_px}px.`; + aiResponseContent = `βœ… Successfully added "${mediaItem.name}" to ${args.track_id} at position ${args.drop_left_px}px.`; } - } else if (function_call.function_name === "LLMMoveScrubber") { - // Execute move scrubber operation + } else if (fn === "LLMMoveScrubber" || fn === "MoveScrubber") { + const parsed = MoveScrubberArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for MoveScrubber"); + const a = parsed.data; + const posSec = (a.new_position_seconds ?? a.position_seconds ?? a.start_seconds ?? 0) as number; + const destTrack = Number(a.new_track_number ?? a.track_number ?? 1); llmMoveScrubber( - function_call.scrubber_id, - function_call.new_position_seconds, - function_call.new_track_number, - function_call.pixels_per_second, + a.scrubber_id, + posSec, + destTrack, + (a.pixels_per_second as number | undefined) ?? pixelsPerSecond, timelineState, handleUpdateScrubber, ); // Try to locate the scrubber name for a nicer message const allScrubbers = timelineState.tracks.flatMap((t) => t.scrubbers); - const moved = allScrubbers.find((s) => s.id === function_call.scrubber_id); - const movedName = moved ? moved.name : function_call.scrubber_id; - aiResponseContent = `βœ… Moved "${movedName}" to track ${function_call.new_track_number} at ${function_call.new_position_seconds}s.`; - } else if (function_call.function_name === "LLMAddScrubberByName") { - // Add media by name with defaults - llmAddScrubberByName( - function_call.scrubber_name, + const moved = allScrubbers.find((s) => s.id === (args.scrubber_id as string)); + const movedName = moved ? moved.name : (args.scrubber_id as string); + aiResponseContent = `βœ… Moved "${movedName}" to track ${args.new_track_number} at ${args.new_position_seconds}s.`; + } else if (fn === "LLMAddScrubberByName" || fn === "AddMediaByName") { + const parsed = AddScrubberByNameArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for AddScrubberByName"); + const a = parsed.data; + const name = a.scrubber_name; + const pps = (a.pixels_per_second as number | undefined) ?? pixelsPerSecond; + const startSeconds = (a.start_seconds ?? a.position_seconds ?? 0) as number; + const trackNumber = Number(a.track_number ?? 1); + const startPx = startSeconds * pps; + + const newId = llmAddScrubberByName( + name, mediaBinItems, - function_call.track_number, - function_call.position_seconds, - function_call.pixels_per_second ?? 100, + trackNumber, + startSeconds, + pps, handleDropOnTrack, - ); + ) as unknown as string; + + // Optional duration or end time handling (resize after drop) + const endSec = a.end_seconds as number | undefined; + const durationSeconds = + (a.duration_seconds as number | undefined) ?? + (endSec !== undefined ? Math.max(0, endSec - startSeconds) : undefined); + if (durationSeconds && durationSeconds > 0) { + if (newId) { + setPendingResizeRequests((prev) => [ + ...prev, + { id: newId as string, durationSeconds, pixelsPerSecond: pps, trackNumber }, + ]); + } + } - aiResponseContent = `βœ… Added "${function_call.scrubber_name}" to track ${function_call.track_number} at ${function_call.position_seconds}s.`; - } else if (function_call.function_name === "LLMDeleteScrubbersInTrack") { + aiResponseContent = `βœ… Added "${name}" to track ${trackNumber} at ${startSeconds}s.`; + } else if (fn === "AddMediaById") { + const parsed = AddMediaByIdArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for AddMediaById"); + const a = parsed.data; + const scrubberId = a.scrubber_id; + const pps = (a.pixels_per_second as number | undefined) ?? pixelsPerSecond; + const startSeconds = (a.start_seconds as number | undefined) ?? 0; + const trackNumber = Number(a.track_number ?? 1); + const startPx = startSeconds * pps; + + const mediaItem = mediaBinItems.find((i) => i.id === scrubberId); + if (!mediaItem) { + aiResponseContent = `❌ Error: Media item with ID "${scrubberId}" not found in the media bin.`; + } else { + const trackId = `track-${trackNumber}`; + const newId = handleDropOnTrack(mediaItem, trackId, startPx); + + const endSec2 = a.end_seconds as number | undefined; + const durationSeconds = + (a.duration_seconds as number | undefined) ?? + (endSec2 !== undefined ? Math.max(0, endSec2 - startSeconds) : undefined); + if (durationSeconds && durationSeconds > 0) { + if (newId) { + setPendingResizeRequests((prev) => [ + ...prev, + { id: newId, durationSeconds, pixelsPerSecond: pps, trackNumber }, + ]); + } + } + + aiResponseContent = `βœ… Added media to track ${trackNumber} at ${startSeconds}s.`; + } + } else if (fn === "LLMDeleteScrubbersInTrack" || fn === "DeleteScrubbersInTrack") { if (!handleDeleteScrubber) { throw new Error("Delete handler is not available"); } - llmDeleteScrubbersInTrack(function_call.track_number, timelineState, handleDeleteScrubber); - aiResponseContent = `βœ… Removed all scrubbers in track ${function_call.track_number}.`; + const parsed = DeleteScrubbersInTrackArgsSchema.safeParse(args); + const trackNum = parsed.success ? Number(parsed.data.track_number ?? 1) : 1; + llmDeleteScrubbersInTrack(trackNum, timelineState, handleDeleteScrubber); + aiResponseContent = `βœ… Removed all scrubbers in track ${trackNum}.`; + } else if (fn === "LLMResizeScrubber" || fn === "ResizeScrubber") { + const parsed = ResizeScrubberArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for ResizeScrubber"); + const a = parsed.data as any; + const startSecForDiff = (a.start_seconds ?? a.position_seconds) as number | undefined; + const candidateDur = (a.new_duration_seconds ?? + a.duration_seconds ?? + a.seconds ?? + a.duration ?? + a.newDurationSeconds ?? + a.durationInSeconds) as number | undefined; + const endSecVal = a.end_seconds as number | undefined; + const dur = + candidateDur ?? + (startSecForDiff !== undefined && endSecVal !== undefined + ? Math.max(0, endSecVal - startSecForDiff) + : undefined); + const ppsVal = (a.pixels_per_second as number | undefined) ?? pixelsPerSecond; + const trackNum = (a.track_number as number | undefined) ?? (a.new_track_number as number | undefined); + let targetId = typeof a.scrubber_id === "string" ? (a.scrubber_id as string) : undefined; + if (!targetId && trackNum !== undefined) { + const trackIndex = Math.max(0, Math.floor(trackNum) - 1); + const track = timelineState.tracks?.[trackIndex]; + if (track && track.scrubbers.length > 0) { + const nameRaw = a.scrubber_name as string | undefined; + const nameSub = typeof nameRaw === "string" ? nameRaw.toLowerCase() : undefined; + if (nameSub) { + const found = track.scrubbers.find((s) => s.name.toLowerCase().includes(nameSub)); + if (found) targetId = found.id; + } + if (!targetId) { + // fallback to rightmost scrubber + targetId = track.scrubbers.reduce( + (best, s) => (s.left > best.left ? s : best), + track.scrubbers[0], + ).id; + } + } + } + if (dur && dur > 0 && targetId) { + llmResizeScrubber(targetId, dur, ppsVal, timelineState, handleUpdateScrubber); + aiResponseContent = `βœ… Resized scrubber to ${dur}s.`; + } else if (!targetId) { + aiResponseContent = `❌ Unable to resize: could not identify target scrubber.`; + } else { + aiResponseContent = `❌ Unable to resize: invalid duration.`; + } + } else if (fn === "LLMUpdateTextContent" || fn === "UpdateTextContent") { + const parsed = UpdateTextContentArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for UpdateTextContent"); + llmUpdateTextContent( + parsed.data.scrubber_id, + parsed.data.new_text_content, + timelineState, + handleUpdateScrubber, + ); + aiResponseContent = `βœ… Updated text content.`; + } else if (fn === "LLMUpdateTextStyle" || fn === "UpdateTextStyle") { + const parsed = UpdateTextStyleArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for UpdateTextStyle"); + const { scrubber_id, ...style } = parsed.data as any; + llmUpdateTextStyle(scrubber_id, style, timelineState, handleUpdateScrubber); + aiResponseContent = `βœ… Updated text style.`; + } else if (fn === "LLMMoveScrubbersByOffset" || fn === "MoveScrubbersByOffset") { + const parsed = MoveScrubbersByOffsetArgsSchema.safeParse(args); + if (!parsed.success) throw new Error("Invalid arguments for MoveScrubbersByOffset"); + llmMoveScrubbersByOffset( + parsed.data.scrubber_ids, + parsed.data.offset_seconds as number, + (parsed.data.pixels_per_second as number | undefined) ?? pixelsPerSecond, + timelineState, + handleUpdateScrubber, + ); + aiResponseContent = `βœ… Moved ${parsed.data.scrubber_ids.length} scrubber(s) by ${parsed.data.offset_seconds}s.`; + } else if (fn === "CreateTrack") { + if (handleAddTrack) { + handleAddTrack(); + aiResponseContent = "βœ… Created 1 new track."; + } else { + aiResponseContent = "❌ Cannot create track: handler unavailable."; + } + } else if (fn === "CreateTracks") { + const count = toNumber((args as any).count) ?? 1; + if (handleAddTrack) { + const n = Math.max(1, Math.floor(count)); + for (let i = 0; i < n; i++) handleAddTrack(); + aiResponseContent = `βœ… Created ${n} track(s).`; + } else { + aiResponseContent = "❌ Cannot create tracks: handler unavailable."; + } + } else if (fn === "PlaceAllAssetsParallel") { + // Place each media bin item on a separate (new if needed) track at the same start time + const startSec = toSeconds((args as any).start_seconds) ?? 0; + const pps = toNumber((args as any).pixels_per_second) ?? pixelsPerSecond; + const startPx = startSec * pps; + const requiredTracks = mediaBinItems.length; + // Ensure enough tracks + const shortage = Math.max(0, requiredTracks - timelineState.tracks.length); + if (shortage > 0 && handleAddTrack) { + for (let i = 0; i < shortage; i++) handleAddTrack(); + } + mediaBinItems.forEach((item, index) => { + const trackId = timelineState.tracks[index]?.id || `track-${index + 1}`; + handleDropOnTrack(item, trackId, startPx); + }); + aiResponseContent = `βœ… Placed ${mediaBinItems.length} asset(s) in parallel across tracks at ${startSec}s.`; + } else if (fn === "LLMSetResolution" || fn === "SetResolution") { + // This requires handlers from parent; ChatBox doesn't own them, so we ignore here or bubble up later. + // Leaving placeholder for future wiring if exposed via props. + aiResponseContent = `ℹ️ Resolution change acknowledged.`; } else { - aiResponseContent = `❌ Unknown function: ${function_call.function_name}`; + aiResponseContent = `❌ Unknown function: ${fn}`; } } catch (error) { aiResponseContent = `❌ Error executing function: ${ @@ -302,8 +783,14 @@ export function ChatBox({ content: aiResponseContent, isUser: false, timestamp: new Date(), + snapshot: captureSnapshot(), }; - + const updated = tabs.map((t) => + t.id === activeTab.id + ? { ...t, messages: [...t.messages, userMessage, aiMessage], timelineSnapshot: latestTimelineRef.current } + : t, + ); + setTabs(updated); onMessagesChange([...messages, userMessage, aiMessage]); } catch (error) { console.error("Error calling AI API:", error); @@ -313,8 +800,15 @@ export function ChatBox({ content: `❌ Sorry, I encountered an error while processing your request. Please try again.`, isUser: false, timestamp: new Date(), + snapshot: captureSnapshot(), }; + const updated = tabs.map((t) => + t.id === activeTab.id + ? { ...t, messages: [...t.messages, userMessage, errorMessage], timelineSnapshot: latestTimelineRef.current } + : t, + ); + setTabs(updated); onMessagesChange([...messages, userMessage, errorMessage]); } finally { setIsTyping(false); @@ -357,41 +851,292 @@ export function ChatBox({ } }; - const formatTime = (date: Date) => { - return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); + // helpers to update current tab messages consistently + const setActiveTabMessages = (newMessages: Message[]) => { + const updatedTabs = tabs.map((t) => + t.id === activeTab.id ? { ...t, messages: newMessages, timelineSnapshot: latestTimelineRef.current } : t, + ); + setTabs(updatedTabs); + onMessagesChange(newMessages); + }; + + const truncateAtIndexPreserveReply = (index: number) => { + const base = activeTab?.messages || messages; + if (index < 0 || index >= base.length) return; + const keepUntil = base[index + 1] && !base[index + 1].isUser ? index + 1 : index; + setActiveTabMessages(base.slice(0, keepUntil + 1)); + }; + + const restoreAtIndex = (index: number) => { + const base = activeTab?.messages || messages; + if (index < 0 || index >= base.length) return; + const msg = base[index]; + const snap = msg?.snapshot || null; + if (snap && restoreTimeline) restoreTimeline(snap); + truncateAtIndexPreserveReply(index); + }; + + const startInlineEditAt = (index: number) => { + const base = activeTab?.messages || messages; + const msg = base[index]; + if (!msg) return; + // auto-restore to saved snapshot and truncate + restoreSnapshot?.(); + truncateAtIndexPreserveReply(index); + setInputValue(msg.content); + setTimeout(() => inputRef.current?.focus(), 0); + }; + + const formatTime = (dateLike: unknown) => { + try { + const d = dateLike instanceof Date ? dateLike : new Date(dateLike as any); + if (!(d instanceof Date) || isNaN(d.getTime())) return ""; + return d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); + } catch { + return ""; + } + }; + + // Tab actions + const createTab = () => { + const t: ChatTab = { + id: Date.now().toString(), + name: `Chat ${tabs.length + 1}`, + messages: [], + timelineSnapshot: null, + createdAt: Date.now(), + }; + const next = [...tabs, t]; + setTabs(next); + setActiveTabId(t.id); + }; + const renameTab = (id: string) => { + const name = prompt("Rename chat", tabs.find((x) => x.id === id)?.name || "Chat"); + if (!name) return; + setTabs(tabs.map((t) => (t.id === id ? { ...t, name } : t))); + }; + const deleteTab = (id: string) => { + const next = tabs.filter((t) => t.id !== id); + setTabs( + next.length + ? next + : [{ id: Date.now().toString(), name: "Chat 1", messages: [], timelineSnapshot: null, createdAt: Date.now() }], + ); + if (activeTabId === id) setActiveTabId((next[0] || { id: "" }).id); + }; + const saveSnapshot = () => { + setTabs(tabs.map((t) => (t.id === activeTab.id ? { ...t, timelineSnapshot: latestTimelineRef.current } : t))); + }; + const restoreSnapshot = () => { + const snap = activeTab.timelineSnapshot; + if (!snap || !restoreTimeline) return; + restoreTimeline(snap); + }; + + // Send to new chat helper + const [sendToTabId, setSendToTabId] = useState(null); + const sendMessageToNewChat = (includeAllMedia = false) => { + const newTab: ChatTab = { + id: Date.now().toString(), + name: `Chat ${tabs.length + 1}`, + messages: [], + timelineSnapshot: null, + createdAt: Date.now(), + }; + const next = [...tabs, newTab]; + setTabs(next); + setActiveTabId(newTab.id); + setSendToTabId(newTab.id); + // Slight delay to allow state to settle before sending + setTimeout(() => handleSendMessage(includeAllMedia), 0); }; return ( -

+
{/* Chat Header */} -
-
- - Ask Kimu -
- -
- - {onToggleMinimize && ( +
+ {/* Row 1: brand + actions */} +
+
+ + Ask Kimu +
+
+ - )} + {onToggleMinimize && ( + + )} +
+
+ {/* Row 2: tabs strip (single-line, horizontally scrollable) */} +
+
+ {tabs.map((t) => ( + + ))} +
+ {/* History panel centered (no blur overlay) */} + {isHistoryOpen && ( + <> + {/* slight dark/blur overlay only over the chat panel */} +
setIsHistoryOpen(false)} + /> +
+
+ setHistoryQuery(e.target.value)} + /> +
+
+ {(() => { + const filtered = tabs + .map((t) => ({ + ...t, + lastActivity: (t.messages?.[t.messages.length - 1]?.timestamp as any)?.getTime?.() || t.createdAt, + })) + .filter((t) => t.name.toLowerCase().includes(historyQuery.toLowerCase())) + .sort((a, b) => b.lastActivity - a.lastActivity); + + const groups: Record = {} as any; + filtered.forEach((t) => { + const g = getRecencyGroup(t.lastActivity); + if (!groups[g]) groups[g] = [] as any; + groups[g].push(t); + }); + + const order = ["Last hour", "Today", "Yesterday", "This week", "Older"]; + return order + .filter((g) => groups[g] && groups[g].length) + .map((g) => ( +
+
{g}
+ {groups[g].map((t) => ( +
{ + setActiveTabId(t.id); + setIsHistoryOpen(false); + scrollToTabId(t.id); + }}> + + {historyEditingId === t.id ? ( + setHistoryEditingName(e.target.value)} + onClick={(e) => e.stopPropagation()} + onBlur={() => { + const name = historyEditingName.trim(); + if (name) setTabs(tabs.map((x) => (x.id === t.id ? { ...x, name } : x))); + setHistoryEditingId(null); + }} + onKeyDown={(e) => { + if (e.key === "Enter") (e.currentTarget as HTMLInputElement).blur(); + if (e.key === "Escape") setHistoryEditingId(null); + }} + /> + ) : ( + t.name + )} + +
+ + +
+
+ ))} +
+ )); + })()} +
+
+ + )} + {/* Content Area */}
{messages.length === 0 ? ( @@ -429,28 +1174,50 @@ export function ChatBox({ className="flex-1 overflow-y-auto p-3 scroll-smooth" style={{ maxHeight: "calc(100vh - 200px)" }}>
- {messages.map((message) => ( -
-
-
- {!message.isUser && } -
-

{message.content}

- {formatTime(message.timestamp)} + {(activeTab?.messages || messages).map((message, idx) => ( +
{ + e.preventDefault(); + setContextMenu({ open: true, x: e.clientX, y: e.clientY, index: idx, message }); + }}> + {message.isUser ? ( +
+
+
+

{message.content}

+
+ {formatTime(message.timestamp)} + +
+
- {message.isUser && }
-
+ ) : ( +
+
+
+

{message.content}

+
+ {formatTime(message.timestamp)} +
+
+
+
+ )}
))} {/* Typing Indicator */} {isTyping && (
-
+
@@ -474,6 +1241,31 @@ export function ChatBox({ {/* Invisible element to scroll to */}
+ {/* Simple custom context menu */} + {contextMenu.open && ( +
setContextMenu({ ...contextMenu, open: false })}> +
{ + setContextMenu({ ...contextMenu, open: false }); + startInlineEditAt(contextMenu.index); + }}> + Edit here (inline) +
+
{ + setContextMenu({ ...contextMenu, open: false }); + setConfirmRestoreIndex(contextMenu.index); + setShowConfirmRestore(true); + }}> + Restore to this point +
+
+ )}
)} @@ -538,9 +1330,8 @@ export function ChatBox({ className="px-3 py-2 text-xs cursor-pointer hover:bg-muted rounded flex items-center justify-between" onClick={() => { // Clear current messages and send to new chat - onMessagesChange([]); setShowSendOptions(false); - handleSendMessage(false); + sendMessageToNewChat(false); }}> Send to New Chat
@@ -617,6 +1408,71 @@ export function ChatBox({
+ {/* Modals for restore/delete/edit */} + + + + Restore to this point? + + The timeline will be restored to the snapshot saved for this chat. Messages after this point can be + deleted optionally. + + + + Cancel + { + setShowConfirmRestore(false); + if (confirmRestoreIndex !== null) restoreAtIndex(confirmRestoreIndex); + }}> + Restore + + + + + + {/* Tabs context menu: Rename / Clear / Delete */} + {tabsMenu.open && ( +
setTabsMenu({ ...tabsMenu, open: false })}> +
{ + setTabsMenu({ ...tabsMenu, open: false }); + if (!tabsMenu.tabId) return; + const t = tabs.find((x) => x.id === tabsMenu.tabId); + if (!t) return; + setEditingTabId(t.id); + setEditingTabName(t.name); + }}> + Rename chat +
+
{ + setTabsMenu({ ...tabsMenu, open: false }); + if (!tabsMenu.tabId) return; + if (tabsMenu.tabId === activeTab.id) { + setActiveTabMessages([]); + } else { + setTabs(tabs.map((t) => (t.id === tabsMenu.tabId ? { ...t, messages: [] } : t))); + } + }}> + Clear chat +
+
{ + setTabsMenu({ ...tabsMenu, open: false }); + if (!tabsMenu.tabId) return; + deleteTab(tabsMenu.tabId); + }}> + Delete chat +
+
+ )}
); } From e296c0a41fad83eb298f505b8b9f9f19580ff4fc Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Sat, 2 May 2026 18:02:48 +0530 Subject: [PATCH 05/23] chore: enhance UX and implement enhancements + introduced Zod Schemas --- .claude/settings.local.json | 9 + .env.example | 5 + app/components/chat/ChatBox.tsx | 9 +- app/components/editor/LeftPanel.tsx | 76 +-- app/components/media/Transitions.tsx | 4 +- app/components/timeline/MediaBin.tsx | 48 +- app/components/timeline/TimelineTracks.tsx | 57 +-- app/components/ui/ProfileMenu.tsx | 23 +- app/hooks/useAuth.ts | 65 +++ app/hooks/useMediaBin.ts | 72 +-- app/hooks/useRenderer.ts | 68 +-- app/hooks/useTimeline.ts | 19 +- app/routes/home.tsx | 381 ++++++++-------- app/routes/profile.tsx | 38 +- app/schemas/apis/assets.ts | 36 ++ app/schemas/apis/misc.ts | 20 + app/schemas/apis/params.ts | 3 + app/schemas/apis/projects.ts | 45 ++ app/schemas/auth.ts | 65 +++ app/schemas/components/chat.ts | 30 ++ app/schemas/components/media.ts | 11 + app/schemas/components/timeline.ts | 8 + app/schemas/index.ts | 10 + app/schemas/llm.ts | 104 +++++ app/schemas/timeline.ts | 67 +++ app/utils/llm-handler.ts | 8 +- app/video-compositions/DragDrop.tsx | 1 - app/video-compositions/VideoPlayer.tsx | 31 +- app/videorender/Composition.tsx | 1 - app/videorender/videorender.ts | 36 +- backend/ai/routes.py | 90 ++-- backend/api/routes.py | 80 +++- backend/api/schema.py | 20 +- backend/auth/routes.py | 4 + backend/db.py | 30 +- backend/main.py | 32 +- backend/pyproject.toml | 1 + migrations/000_betterauth.sql | 113 +++++ migrations/000_init.sql | 129 ------ migrations/001_projects.sql | 28 ++ migrations/002_assets.sql | 21 + package.json | 18 +- pnpm-lock.yaml | 507 +++++---------------- 43 files changed, 1363 insertions(+), 1060 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 app/hooks/useAuth.ts create mode 100644 app/schemas/apis/assets.ts create mode 100644 app/schemas/apis/misc.ts create mode 100644 app/schemas/apis/params.ts create mode 100644 app/schemas/apis/projects.ts create mode 100644 app/schemas/auth.ts create mode 100644 app/schemas/components/chat.ts create mode 100644 app/schemas/components/media.ts create mode 100644 app/schemas/components/timeline.ts create mode 100644 app/schemas/index.ts create mode 100644 app/schemas/llm.ts create mode 100644 app/schemas/timeline.ts create mode 100644 migrations/000_betterauth.sql delete mode 100644 migrations/000_init.sql create mode 100644 migrations/001_projects.sql create mode 100644 migrations/002_assets.sql diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 00000000..54d85817 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(grep -E \"\\\\.\\(py|toml|txt|json\\)$\")", + "Bash(xargs ls *)", + "Bash(xargs cat *)" + ] + } +} diff --git a/.env.example b/.env.example index 0953762c..fbdb413d 100644 --- a/.env.example +++ b/.env.example @@ -7,3 +7,8 @@ BETTER_AUTH_URL= # https://trykimu.com (production) or http://lo GOOGLE_CLIENT_ID= # Google OAuth client ID GOOGLE_CLIENT_SECRET= # Google OAuth client secret GEMINI_API_KEY= + +# Render server (optional β€” defaults to http://localhost:8000) +# RENDER_HOST=http://localhost:8000 + +# NODE_ENV=production # Set to "production" to disable uvicorn hot-reload diff --git a/app/components/chat/ChatBox.tsx b/app/components/chat/ChatBox.tsx index 6f46d197..69fc6000 100644 --- a/app/components/chat/ChatBox.tsx +++ b/app/components/chat/ChatBox.tsx @@ -1,5 +1,4 @@ import React, { useState, useRef, useEffect } from "react"; -import { parseDuration } from "@alwatr/parse-duration"; import { Send, Bot, @@ -42,7 +41,6 @@ import { Separator } from "~/components/ui/separator"; import { type MediaBinItem, type TimelineState, type ScrubberState } from "../timeline/types"; import { cn } from "~/lib/utils"; import axios from "axios"; -import { apiUrl } from "~/utils/api"; import { AiResponseSchema, MoveScrubberArgsSchema, @@ -465,7 +463,7 @@ export function ChatBox({ // Use the stored mentioned items to get their IDs const mentionedScrubberIds = itemsToSend.map((item) => item.id); - const response = await axios.post(apiUrl("/ai", true), { + const response = await axios.post("/backend/ai", { message: messageContent, mentioned_scrubber_ids: mentionedScrubberIds, timeline_state: timelineState, @@ -510,11 +508,6 @@ export function ChatBox({ if (typeof val === "number") return Number.isFinite(val) ? val : undefined; if (typeof val !== "string") return undefined; const raw = val.trim().toLowerCase(); - // Try @alwatr/parse-duration (returns ms) - try { - const ms = (parseDuration as unknown as (v: unknown) => number)(raw); - if (typeof ms === "number" && Number.isFinite(ms)) return ms / 1000; - } catch {} // Try hh:mm:ss / mm:ss const colon = raw.match(/^\s*(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?\s*$/); if (colon) { diff --git a/app/components/editor/LeftPanel.tsx b/app/components/editor/LeftPanel.tsx index bc387708..6347c799 100644 --- a/app/components/editor/LeftPanel.tsx +++ b/app/components/editor/LeftPanel.tsx @@ -25,6 +25,11 @@ interface LeftPanelProps { handleDeleteFromContext: () => void; handleSplitAudioFromContext: () => void; handleCloseContextMenu: () => void; + showTabs?: boolean; + arrangeMode?: "default" | "group"; + sortBy?: "default" | "name_asc" | "name_desc"; + onArrangeModeChange?: (mode: "default" | "group") => void; + onSortByChange?: (sort: "default" | "name_asc" | "name_desc") => void; } export default function LeftPanel({ @@ -37,6 +42,11 @@ export default function LeftPanel({ handleDeleteFromContext, handleSplitAudioFromContext, handleCloseContextMenu, + showTabs = true, + arrangeMode, + sortBy, + onArrangeModeChange, + onSortByChange, }: LeftPanelProps) { const location = useLocation(); @@ -48,47 +58,47 @@ export default function LeftPanel({ return "media-bin"; // default }; - console.log("mediabinitems", mediaBinItems); const activeTab = getActiveTab(); return (
{/* Tab Headers */} -
- - - - - - - - - - - - - - - - - -
+ {showTabs && ( +
+ + + + + + + + + + + + + + + + + +
+ )} {/* Tab Content */} -
+
diff --git a/app/components/media/Transitions.tsx b/app/components/media/Transitions.tsx index 5fd5c423..26693f16 100644 --- a/app/components/media/Transitions.tsx +++ b/app/components/media/Transitions.tsx @@ -1,6 +1,7 @@ import React, { useState } from "react"; import { Card, CardContent } from "~/components/ui/card"; import { FPS } from "../timeline/types"; +import { TransitionDragPayloadSchema } from "~/schemas"; import { generateUUID } from "~/utils/uuid"; // Data router loader (no data needed, ensures route is compatible with data router) @@ -66,7 +67,8 @@ const TransitionThumbnail = ({ leftScrubberId: null, rightScrubberId: null, }; - e.dataTransfer.setData("application/json", JSON.stringify(transitionData)); + const payload = TransitionDragPayloadSchema.parse(transitionData); + e.dataTransfer.setData("application/json", JSON.stringify(payload)); e.dataTransfer.effectAllowed = "copy"; }; diff --git a/app/components/timeline/MediaBin.tsx b/app/components/timeline/MediaBin.tsx index 069f7f6b..107c48c1 100644 --- a/app/components/timeline/MediaBin.tsx +++ b/app/components/timeline/MediaBin.tsx @@ -55,6 +55,10 @@ interface MediaBinProps { handleDeleteFromContext: () => Promise; handleSplitAudioFromContext: () => Promise; handleCloseContextMenu: () => void; + arrangeModeExternal?: "default" | "group"; + sortByExternal?: "default" | "name_asc" | "name_desc"; + onArrangeModeChange?: (mode: "default" | "group") => void; + onSortByChange?: (sort: "default" | "name_asc" | "name_desc") => void; } // Memoized component for video thumbnails to prevent flickering @@ -222,14 +226,18 @@ export default function MediaBin() { handleDeleteFromContext, handleSplitAudioFromContext, handleCloseContextMenu, + arrangeModeExternal, + sortByExternal, + onArrangeModeChange, + onSortByChange, } = useOutletContext(); // Drag & Drop state for external file imports const [isDragOver, setIsDragOver] = useState(false); - // Arrange & sorting state - const [arrangeMode, setArrangeMode] = useState<"default" | "group">("default"); - const [sortBy, setSortBy] = useState<"default" | "name_asc" | "name_desc">("default"); + // Arrange & sorting state (controlled by parent when provided) + const [arrangeMode, setArrangeMode] = useState<"default" | "group">(arrangeModeExternal ?? "default"); + const [sortBy, setSortBy] = useState<"default" | "name_asc" | "name_desc">(sortByExternal ?? "default"); const [collapsed, setCollapsed] = useState<{ [key in "videos" | "gifs" | "images" | "audio" | "text"]: boolean; }>({ @@ -240,6 +248,30 @@ export default function MediaBin() { text: false, }); + useEffect(() => { + if (arrangeModeExternal && arrangeModeExternal !== arrangeMode) setArrangeMode(arrangeModeExternal); + }, [arrangeModeExternal, arrangeMode]); + + useEffect(() => { + if (sortByExternal && sortByExternal !== sortBy) setSortBy(sortByExternal); + }, [sortByExternal, sortBy]); + + const updateArrangeMode = useCallback( + (mode: "default" | "group") => { + setArrangeMode(mode); + onArrangeModeChange?.(mode); + }, + [onArrangeModeChange], + ); + + const updateSortBy = useCallback( + (sort: "default" | "name_asc" | "name_desc") => { + setSortBy(sort); + onSortByChange?.(sort); + }, + [onSortByChange], + ); + const handleDragOverRoot = useCallback((e: React.DragEvent) => { // Only react to file drags from OS, not internal element drags if (!Array.from(e.dataTransfer.types).includes("Files")) return; @@ -458,7 +490,7 @@ export default function MediaBin() { className={`h-5 w-5 p-0 bg-transparent hover:bg-transparent ${ arrangeMode === "default" ? "text-primary" : "text-muted-foreground/70 hover:text-foreground" }`} - onClick={() => setArrangeMode("default")} + onClick={() => updateArrangeMode("default")} title="Default order" aria-pressed={arrangeMode === "default"}> @@ -469,7 +501,7 @@ export default function MediaBin() { className={`h-5 w-5 p-0 bg-transparent hover:bg-transparent ${ arrangeMode === "group" ? "text-primary" : "text-muted-foreground/70 hover:text-foreground" }`} - onClick={() => setArrangeMode("group")} + onClick={() => updateArrangeMode("group")} title="Smart Group" aria-pressed={arrangeMode === "group"}> @@ -493,19 +525,19 @@ export default function MediaBin() { Sort setSortBy("default")} + onClick={() => updateSortBy("default")} className={`text-[12px] gap-2 ${sortBy === "default" ? "text-primary" : ""}`} data-variant="ghost"> Original order setSortBy("name_asc")} + onClick={() => updateSortBy("name_asc")} className={`text-[12px] gap-2 ${sortBy === "name_asc" ? "text-primary" : ""}`} data-variant="ghost"> Name A–Z setSortBy("name_desc")} + onClick={() => updateSortBy("name_desc")} className={`text-[12px] gap-2 ${sortBy === "name_desc" ? "text-primary" : ""}`} data-variant="ghost"> Name Z–A diff --git a/app/components/timeline/TimelineTracks.tsx b/app/components/timeline/TimelineTracks.tsx index 93092645..a8094c6a 100644 --- a/app/components/timeline/TimelineTracks.tsx +++ b/app/components/timeline/TimelineTracks.tsx @@ -12,6 +12,7 @@ import { type TimelineState, type Transition, } from "./types"; +import { MediaBinItemSchema } from "~/schemas/components/timeline"; interface TimelineTracksProps { timeline: TimelineState; @@ -169,7 +170,12 @@ export const TimelineTracks: React.FC = ({ const jsonString = e.dataTransfer.getData("application/json"); if (!jsonString) return; - const data = JSON.parse(jsonString); + let data: unknown; + try { + data = JSON.parse(jsonString); + } catch { + return; + } // Use containerRef for consistent coordinate calculation like the ruler does const scrollContainer = containerRef.current; @@ -194,17 +200,22 @@ export const TimelineTracks: React.FC = ({ } // Handle transition drop - if (data.type === "transition") { - onDropTransitionOnTrack(data, trackId, dropXInTimeline); + if ( + typeof data === "object" && + data !== null && + "type" in data && + (data as { type?: string }).type === "transition" + ) { + onDropTransitionOnTrack(data as unknown as Transition, trackId, dropXInTimeline); } else { - // Handle media item drop - onDropOnTrack(data as MediaBinItem, trackId, dropXInTimeline); + const validated = MediaBinItemSchema.safeParse(data); + if (!validated.success) return; + onDropOnTrack(validated.data as unknown as MediaBinItem, trackId, dropXInTimeline); } }}> - {/* Track backgrounds and grid lines */} + {/* Track backgrounds and grid lines (CSS background, no DOM nodes per segment) */} {timeline.tracks.map((track, trackIndex) => (
- {/* Track background */}
= ({ : "bg-timeline-background hover:bg-muted/20" }`} style={{ - top: `0px`, + top: 0, height: `${DEFAULT_TRACK_HEIGHT}px`, + backgroundImage: [ + `repeating-linear-gradient(to right, rgb(var(--border) / 0.5) 0, rgb(var(--border) / 0.5) 1px, transparent 1px, transparent ${pixelsPerSecond * 5}px)`, + `repeating-linear-gradient(to right, rgb(var(--border) / 0.25) 0, rgb(var(--border) / 0.25) 1px, transparent 1px, transparent ${pixelsPerSecond}px)`, + ].join(", "), }} onClick={(e) => { - // Deselect scrubber when clicking on track background if (e.target === e.currentTarget) { onSelectScrubber(null, false); } }} /> - - {/* Track label - positioned behind scrubbers -
- Track {trackIndex + 1} -
*/} - - {/* Grid lines */} - {Array.from({ length: Math.floor(timelineWidth / pixelsPerSecond) + 1 }, (_, index) => index).map( - (gridIndex) => ( -
- ), - )}
))} diff --git a/app/components/ui/ProfileMenu.tsx b/app/components/ui/ProfileMenu.tsx index f0aa98e4..a12f16ea 100644 --- a/app/components/ui/ProfileMenu.tsx +++ b/app/components/ui/ProfileMenu.tsx @@ -10,6 +10,7 @@ import { DropdownMenuTrigger, } from "~/components/ui/dropdown-menu"; import { Progress } from "~/components/ui/progress"; +import { StorageResponseSchema } from "~/schemas"; type UserLike = { name?: string | null; @@ -24,7 +25,7 @@ export function ProfileMenu({ }: { user: UserLike; starCount: number | null; - onSignOut: () => void; + onSignOut: () => void | Promise; }) { const { theme, setTheme } = useTheme(); const [usedBytes, setUsedBytes] = React.useState(null); @@ -38,10 +39,10 @@ export function ProfileMenu({ if (!res.ok) return; const j = await res.json(); if (!cancelled) { - const u = Number(j?.usedBytes || 0); - const l = Number(j?.limitBytes || limitBytes); - setUsedBytes(Number.isFinite(u) ? u : 0); - setLimitBytes(Number.isFinite(l) ? l : 2 * 1024 * 1024 * 1024); + const parsed = StorageResponseSchema.safeParse(j); + if (!parsed.success) return; + setUsedBytes(parsed.data.usedBytes); + setLimitBytes(parsed.data.limitBytes); } } catch { console.error("Storage fetch failed"); @@ -50,7 +51,7 @@ export function ProfileMenu({ return () => { cancelled = true; }; - }, [limitBytes]); + }, []); function formatBytes(bytes: number): string { if (!Number.isFinite(bytes) || bytes <= 0) return "0 B"; @@ -98,7 +99,7 @@ export function ProfileMenu({ )} - +
{user.name || user.email || "Signed in"}
@@ -180,12 +181,8 @@ export function ProfileMenu({
{ - onSignOut(); - setTimeout(() => { - // Use navigation API or router instead of direct href assignment - window.location.assign("/"); - }, 100); + onClick={async () => { + await onSignOut(); }} variant="destructive"> diff --git a/app/hooks/useAuth.ts b/app/hooks/useAuth.ts new file mode 100644 index 00000000..f754f355 --- /dev/null +++ b/app/hooks/useAuth.ts @@ -0,0 +1,65 @@ +import { useEffect, useState } from "react"; +import { authClient } from "~/lib/auth-client"; +import { normalizeAuthUser } from "~/schemas/auth"; + +type AuthUser = { + id: string; + email?: string | null; + name?: string | null; + image?: string | null; +}; + +export function useAuth() { + const [user, setUser] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [isSigningIn, setIsSigningIn] = useState(false); + + useEffect(() => { + let isMounted = true; + (async () => { + try { + const result = await authClient.getSession?.(); + const normalized = normalizeAuthUser(result); + if (isMounted) { + setUser( + normalized + ? { + id: normalized.id, + name: normalized.name ?? null, + email: normalized.email ?? null, + image: normalized.image ?? null, + } + : null, + ); + } + } catch { + if (isMounted) setUser(null); + } finally { + if (isMounted) setIsLoading(false); + } + })(); + return () => { + isMounted = false; + }; + }, []); + + const signInWithGoogle = async () => { + setIsSigningIn(true); + try { + await authClient.signIn.social({ provider: "google", callbackURL: "/projects" }); + } finally { + setIsSigningIn(false); + } + }; + + const signOut = async () => { + try { + await authClient.signOut(); + setUser(null); + } catch { + // Ignore sign-out errors in UI flow. + } + }; + + return { user, isLoading, isSigningIn, signInWithGoogle, signOut }; +} diff --git a/app/hooks/useMediaBin.ts b/app/hooks/useMediaBin.ts index b8493812..af00f512 100644 --- a/app/hooks/useMediaBin.ts +++ b/app/hooks/useMediaBin.ts @@ -1,5 +1,6 @@ import { useState, useCallback, useEffect } from "react"; import axios from "axios"; +import { toast } from "sonner"; import { type MediaBinItem, type ScrubberState } from "~/components/timeline/types"; import { generateUUID } from "~/utils/uuid"; @@ -167,65 +168,6 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri item: MediaBinItem; } | null>(null); - // Hydrate existing assets for the logged-in user - // DISABLED: Loading assets feature temporarily commented out - /* - useEffect(() => { - const loadAssets = async () => { - try { - const url = projectId - ? `/api/assets?projectId=${encodeURIComponent(projectId)}` - : "/api/assets"; - const res = await fetch(apiUrl(url, false, true), { - credentials: "include", - }); - if (!res.ok) return; - const json = await res.json(); - const assets = (json.assets || []) as Array<{ - id: string; - name: string; - mediaUrlRemote: string; - width: number | null; - height: number | null; - durationInSeconds: number | null; - }>; - const items: MediaBinItem[] = assets.map((a) => ({ - id: a.id, - name: a.name, - mediaType: ((): "video" | "image" | "audio" | "text" => { - const ext = a.name.toLowerCase(); - if (/(mp4|mov|webm|mkv|avi)$/.test(ext)) return "video"; - if (/(mp3|wav|aac|ogg|flac)$/.test(ext)) return "audio"; - if (/(jpg|jpeg|png|gif|bmp|webp)$/.test(ext)) return "image"; - return "image"; - })(), - mediaUrlLocal: null, // restored assets will use remote URL; local may be null - mediaUrlRemote: a.mediaUrlRemote, - durationInSeconds: a.durationInSeconds ?? 0, - media_width: a.width ?? 0, - media_height: a.height ?? 0, - text: null, - isUploading: false, - uploadProgress: null, - left_transition_id: null, - right_transition_id: null, - })); - // Merge: keep existing text items, replace non-text items with fetched assets - setMediaBinItems((prev) => { - const textItems = prev.filter((i) => i.mediaType === "text"); - return [...textItems, ...items]; - }); - } catch (e) { - console.error("Failed to load assets", e); - } finally { - setIsMediaLoading(false); - } - }; - loadAssets(); - }, [projectId]); - */ - - // Manually set loading to false since we're not loading assets useEffect(() => { setIsMediaLoading(false); }, []); @@ -238,18 +180,13 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri else if (file.type.startsWith("image/")) mediaType = "image"; else if (file.type.startsWith("audio/")) mediaType = "audio"; else { - alert("Unsupported file type. Please select a video or image."); + toast.error("Unsupported file type. Please select a video, image, or audio file."); return; } - console.log("Adding to bin:", name, mediaType); - try { const mediaUrlLocal = URL.createObjectURL(file); - - console.log(`Parsing ${mediaType} file for metadata...`); const metadata = await getMediaMetadata(file, mediaType); - console.log("Media metadata:", metadata); // Add item to media bin immediately with upload progress tracking const newItem: MediaBinItem = { @@ -278,9 +215,6 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri onUploadProgress: (progressEvent) => { if (progressEvent.total) { const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); - console.log(`Upload progress: ${percentCompleted}%`); - - // Update upload progress in the media bin setMediaBinItems((prev) => prev.map((item) => (item.id === id ? { ...item, uploadProgress: percentCompleted } : item)), ); @@ -289,7 +223,6 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri }); const uploadResult = uploadResponse.data; - console.log("Upload successful:", uploadResult); // Update item with successful upload result and remove progress tracking setMediaBinItems((prev) => @@ -516,7 +449,6 @@ export const useMediaBin = (handleDeleteScrubbersByMediaBinId: (mediaBinId: stri }; setMediaBinItems((prev) => [...prev, newItem]); - console.log("Added grouped scrubber to media bin:", newItem.name); }, []); return { diff --git a/app/hooks/useRenderer.ts b/app/hooks/useRenderer.ts index 4600d431..2f6bdcf3 100644 --- a/app/hooks/useRenderer.ts +++ b/app/hooks/useRenderer.ts @@ -16,47 +16,31 @@ export const useRenderer = () => { ) => { setIsRendering(true); setRenderStatus("Starting render..."); - console.log("Render server base URL:", "/render"); try { - // Test server connection first setRenderStatus("Connecting to render server..."); try { await axios.get("/renderer/health", { timeout: 5000 }); - } catch (healthError) { - throw new Error("Cannot connect to render server. Make sure the server is running on http://localhost:8000"); + } catch { + throw new Error("Cannot connect to render server. Run: pnpm dlx tsx app/videorender/videorender.ts"); } const timelineData = getTimelineData(); - // Calculate composition width if not provided + if (compositionWidth === null) { - let maxWidth = 0; - for (const item of timelineData) { - for (const scrubber of item.scrubbers) { - if (scrubber.media_width !== null && scrubber.media_width > maxWidth) { - maxWidth = scrubber.media_width; - } - } - } - compositionWidth = maxWidth || 1920; // Default to 1920 if no media found + compositionWidth = timelineData.flatMap((d) => d.scrubbers).reduce( + (max, s) => (s.media_width && s.media_width > max ? s.media_width : max), + 0, + ) || 1920; } - // Calculate composition height if not provided if (compositionHeight === null) { - let maxHeight = 0; - for (const item of timelineData) { - for (const scrubber of item.scrubbers) { - if (scrubber.media_height !== null && scrubber.media_height > maxHeight) { - maxHeight = scrubber.media_height; - } - } - } - compositionHeight = maxHeight || 1080; // Default to 1080 if no media found + compositionHeight = timelineData.flatMap((d) => d.scrubbers).reduce( + (max, s) => (s.media_height && s.media_height > max ? s.media_height : max), + 0, + ) || 1080; } - console.log("Composition width:", compositionWidth); - console.log("Composition height:", compositionHeight); - if (timeline.tracks.length === 0 || timeline.tracks.every((t) => t.scrubbers.length === 0)) { setRenderStatus("Error: No timeline data to render"); setIsRendering(false); @@ -71,20 +55,9 @@ export const useRenderer = () => { timelineData: timelineData, compositionWidth: compositionWidth, compositionHeight: compositionHeight, - durationInFrames: (() => { - const timelineData = getTimelineData(); - let maxEndTime = 0; - - timelineData.forEach((timelineItem) => { - timelineItem.scrubbers.forEach((scrubber) => { - if (scrubber.endTime > maxEndTime) { - maxEndTime = scrubber.endTime; - } - }); - }); - console.log("Max end time:", maxEndTime * 30); - return Math.ceil(maxEndTime * FPS); - })(), + durationInFrames: Math.ceil( + timelineData.flatMap((d) => d.scrubbers).reduce((max, s) => (s.endTime > max ? s.endTime : max), 0) * FPS, + ), getPixelsPerSecond: getPixelsPerSecond(), }, { @@ -110,19 +83,20 @@ export const useRenderer = () => { setRenderStatus("Video rendered and downloaded successfully!"); } catch (error) { - console.error("Render error:", error); if (axios.isAxiosError(error)) { if (error.code === "ECONNABORTED") { - setRenderStatus("Error: Render timeout - try a shorter video"); + setRenderStatus("Error: Render timed out β€” try a shorter video"); } else if (error.response?.status === 500) { - setRenderStatus(`Error: ${error.response.data?.message || "Server error during rendering"}`); + setRenderStatus("Error: Server error during rendering. Check render server logs."); + } else if (error.response?.status === 413) { + setRenderStatus("Error: Timeline data too large to render"); } else if (error.request) { - setRenderStatus( - "Error: Cannot connect to render server. Make sure the backend is running on localhost:8000. Run: pnpm dlx tsx app/videorender/videorender.ts", - ); + setRenderStatus("Error: Cannot connect to render server. Run: pnpm dlx tsx app/videorender/videorender.ts"); } else { setRenderStatus(`Error: ${error.message}`); } + } else if (error instanceof Error) { + setRenderStatus(`Error: ${error.message}`); } else { setRenderStatus("Error: Unknown rendering error occurred"); } diff --git a/app/hooks/useTimeline.ts b/app/hooks/useTimeline.ts index 15082800..3f977946 100644 --- a/app/hooks/useTimeline.ts +++ b/app/hooks/useTimeline.ts @@ -35,7 +35,7 @@ export const useTimeline = () => { const [redoStack, setRedoStack] = useState([]); const isApplyingHistoryRef = useRef(false); - const deepClone = useCallback((obj: T): T => JSON.parse(JSON.stringify(obj)), []); + const deepClone = useCallback((obj: T): T => structuredClone(obj), []); const snapshotTimeline = useCallback(() => { setUndoStack((prev) => { @@ -142,11 +142,6 @@ export const useTimeline = () => { })); }, []); - // TODO: remove this after testing - // useEffect(() => { - // console.log('timeline meoeoeo', JSON.stringify(timeline, null, 2)) - // }, [timeline]) - const getTimelineData = useCallback((): TimelineDataItem[] => { const pixelsPerSecond = getPixelsPerSecond(); @@ -163,7 +158,7 @@ export const useTimeline = () => { endTime: (scrubber.left + scrubber.width) / pixelsPerSecond, duration: scrubber.width / pixelsPerSecond, trackId: track.id, - trackIndex: scrubber.y || 0, + trackIndex: scrubber.y ?? 0, media_width: scrubber.media_width, media_height: scrubber.media_height, text: scrubber.text, @@ -208,8 +203,6 @@ export const useTimeline = () => { }, ]; - // console.log('bahahh', JSON.stringify(timelineData, null, 2)); - return timelineData; }, [timeline, getPixelsPerSecond]); @@ -296,7 +289,7 @@ export const useTimeline = () => { if (currentTrackIndex === -1) return prev; - const newTrackIndex = updatedScrubber.y || 0; + const newTrackIndex = updatedScrubber.y ?? 0; // If track hasn't changed, just update in place if (currentTrackIndex === newTrackIndex) { @@ -459,7 +452,6 @@ export const useTimeline = () => { ); const handleAddScrubberToTrack = useCallback((trackId: string, newScrubber: ScrubberState) => { - console.log("Adding scrubber to track", trackId, newScrubber); setTimeline((prev) => ({ ...prev, tracks: prev.tracks.map((track) => @@ -549,8 +541,6 @@ export const useTimeline = () => { const handleDropOnTrack = useCallback( (item: MediaBinItem, trackId: string, dropLeftPx: number) => { snapshotTimeline(); - console.log("Dropped", item.name, "on track", trackId, "at", dropLeftPx, "px"); - const pixelsPerSecond = getPixelsPerSecond(); let widthPx = item.mediaType === "text" ? 80 : 150; if ( @@ -564,7 +554,7 @@ export const useTimeline = () => { widthPx = Math.max(20, widthPx); const targetTrackIndex = timeline.tracks.findIndex((t) => t.id === trackId); - if (targetTrackIndex === -1) return; + if (targetTrackIndex === -1) return ""; // For text elements, provide default dimensions if they're 0 const playerWidth = @@ -639,6 +629,7 @@ export const useTimeline = () => { } else { handleAddScrubberToTrack(trackId, newScrubber); } + return newScrubber.id; }, [ timeline.tracks, diff --git a/app/routes/home.tsx b/app/routes/home.tsx index 5cd088d0..5503161c 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -1,4 +1,5 @@ import React, { useRef, useEffect, useCallback, useState } from "react"; +import type { ImperativePanelHandle } from "react-resizable-panels"; import type { PlayerRef, CallbackListener } from "@remotion/player"; import { Play, @@ -12,6 +13,10 @@ import { Save as SaveIcon, CornerUpLeft, CornerUpRight, + File, + Type, + BetweenVerticalEnd, + Bot, } from "lucide-react"; // Custom video controls @@ -39,36 +44,43 @@ import { useTimeline } from "~/hooks/useTimeline"; import { useMediaBin } from "~/hooks/useMediaBin"; import { useRuler } from "~/hooks/useRuler"; import { useRenderer } from "~/hooks/useRenderer"; +import { useAuth } from "~/hooks/useAuth"; // Types and constants import { FPS, type MediaBinItem, + type TimelineState, type Transition, type TrackState, type ScrubberState, } from "~/components/timeline/types"; -import { useNavigate, useParams } from "react-router"; +import { useNavigate, useParams, useLocation } from "react-router"; import { ChatBox } from "~/components/chat/ChatBox"; import { KimuLogo } from "~/components/ui/KimuLogo"; +import { GitHubRepoStatsSchema, ProjectStateResponseSchema } from "~/schemas"; interface Message { id: string; content: string; isUser: boolean; timestamp: Date; + snapshot?: TimelineState | null; } export default function TimelineEditor() { const containerRef = useRef(null); const playerRef = useRef(null); const fileInputRef = useRef(null); + const leftPanelRef = useRef(null); const navigate = useNavigate(); + const location = useLocation(); const params = useParams(); const projectId = params?.id as string | undefined; - console.log("projectId", projectId); const [projectName, setProjectName] = useState(""); + const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); + const [isUserExpandingSidebar, setIsUserExpandingSidebar] = useState(false); const [width, setWidth] = useState(1920); const [height, setHeight] = useState(1080); @@ -88,6 +100,7 @@ export default function TimelineEditor() { }, [height]); const [isChatMinimized, setIsChatMinimized] = useState(false); + const { user, signOut } = useAuth(); const [chatMessages, setChatMessages] = useState([]); const [starCount, setStarCount] = useState(null); @@ -125,7 +138,7 @@ export default function TimelineEditor() { handleDeleteTransition, getConnectedElements, handleUpdateScrubberWithLocking, - // setTimelineFromServer, + setTimelineFromServer, // undo/redo undo, redo, @@ -149,6 +162,9 @@ export default function TimelineEditor() { handleCloseContextMenu, } = useMediaBin(handleDeleteScrubbersByMediaBinId); + const [mediaArrangeMode, setMediaArrangeMode] = useState<"default" | "group">("default"); + const [mediaSortBy, setMediaSortBy] = useState<"default" | "name_asc" | "name_desc">("default"); + const { rulerPositionPx, isDraggingRuler, @@ -189,144 +205,60 @@ export default function TimelineEditor() { fileInputRef.current?.click(); }, []); - // // Hydrate project name and timeline from API - // useEffect(() => { - // (async () => { - // const id = projectId || (window.location.pathname.match(/\/project\/([^/]+)/)?.[1] ?? ""); - // if (!id) return; - // let j; - // try { - // const { data } = await axios.get(`/api/projects/${encodeURIComponent(id)}`, { - // withCredentials: true, - // }); - // j = data; - // } catch { - // navigate("/projects"); - // return; - // } - // setProjectName(j.project?.name || "Project"); - // if (j.timeline) setTimelineFromServer(j.timeline); - // // Use saved textBinItems if present, else extract from timeline - // try { - // if (Array.isArray(j.textBinItems) && j.textBinItems.length) { - // const textItems: typeof mediaBinItems = j.textBinItems.map((t: MediaBinItem) => ({ - // id: t.id, - // name: t.name, - // mediaType: "text" as const, - // media_width: Number(t.media_width) || 0, - // media_height: Number(t.media_height) || 0, - // text: t.text || null, - // mediaUrlLocal: null, - // mediaUrlRemote: null, - // durationInSeconds: Number(t.durationInSeconds) || 0, - // isUploading: false, - // uploadProgress: null, - // left_transition_id: null, - // right_transition_id: null, - // groupped_scrubbers: t.groupped_scrubbers || null, - // })); - // setTextItems(textItems); - // } else { - // const perTrack = (j.timeline?.tracks || []).flatMap((t: TrackState) => t.scrubbers || []); - // const rootScrubbers = Array.isArray(j.timeline?.scrubbers) ? (j.timeline!.scrubbers as ScrubberState[]) : []; - // const allScrubbers: ScrubberState[] = [...rootScrubbers, ...perTrack]; - // const textItems: typeof mediaBinItems = (allScrubbers || []) - // .filter((s: ScrubberState) => s && s.mediaType === "text" && s.text) - // .map((s: ScrubberState) => ({ - // id: s.sourceMediaBinId || s.id, - // name: s.text?.textContent || "Text", - // mediaType: "text" as const, - // media_width: s.media_width || 0, - // media_height: s.media_height || 0, - // text: s.text || null, - // mediaUrlLocal: null, - // mediaUrlRemote: null, - // durationInSeconds: s.durationInSeconds || 0, - // isUploading: false, - // uploadProgress: null, - // left_transition_id: null, - // right_transition_id: null, - // groupped_scrubbers: null, - // })); - // if (textItems.length) setTextItems(textItems); - // } - // } catch { - // console.error("Failed to load project"); - // } - // })(); - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [projectId]); - - // Re-link scrubbers to remote asset URLs after assets hydrate - // Ensures images/videos/audios render after refresh (when local blob URLs are gone) - // useEffect(() => { - // if (isMediaLoading) return; - // if (!mediaBinItems || mediaBinItems.length === 0) return; - - // const current = getTimelineState(); - // let changed = false; - - // const assetsByName = new Map(); - // for (const item of mediaBinItems) { - // if (item.mediaType === "text") continue; - // if (!item.mediaUrlRemote) continue; - // assetsByName.set(item.name, item); - // } - - // const newTracks = current.tracks.map((track) => ({ - // ...track, - // scrubbers: track.scrubbers.map((s) => { - // if (s.mediaType === "text") return s; - // if (!s.mediaUrlRemote) { - // const match = assetsByName.get(s.name); - // if (match && match.mediaUrlRemote) { - // changed = true; - // return { - // ...s, - // mediaUrlRemote: match.mediaUrlRemote, - // sourceMediaBinId: match.id, - // media_width: match.media_width || s.media_width, - // media_height: match.media_height || s.media_height, - // }; - // } - // } - // return s; - // }), - // })); - - // if (changed) { - // setTimelineFromServer({ ...current, tracks: newTracks }); - // } - // }, [isMediaLoading, mediaBinItems, getTimelineState, setTimelineFromServer]); - - // Save timeline to server - // const handleSaveTimeline = useCallback(async () => { - // try { - // toast.info("Saving state of the project..."); - // const id = projectId || (window.location.pathname.match(/\/project\/([^/]+)/)?.[1] ?? ""); - // if (!id) { - // toast.error("No project ID"); - // return; - // } - // const timelineState = getTimelineState(); - // // persist current text items alongside timeline - // const textItemsPayload = getMediaBinItems().filter((i) => i.mediaType === "text"); - // const res = await fetch(`/api/projects/${encodeURIComponent(id)}`, { - // method: "PATCH", - // credentials: "include", - // headers: { "Content-Type": "application/json" }, - // body: JSON.stringify({ - // timeline: timelineState, - // textBinItems: textItemsPayload, - // }), - // }); - // if (!res.ok) throw new Error(await res.text()); - // toast.success("Timeline saved"); - // } catch (e) { - // console.error(e); - // toast.error("Failed to save"); - // } - // }, [getMediaBinItems, getTimelineState, projectId]); + // Hydrate project name + timeline snapshot from backend + useEffect(() => { + let isMounted = true; + (async () => { + if (!projectId) return; + try { + const { data } = await axios.get(`/backend/projects/${encodeURIComponent(projectId)}`, { + withCredentials: true, + }); + const parsed = ProjectStateResponseSchema.safeParse(data); + if (!parsed.success || !isMounted) return; + setProjectName(parsed.data.project.name); + if (parsed.data.timeline && typeof parsed.data.timeline === "object") { + setTimelineFromServer(parsed.data.timeline as TimelineState); + } + } catch { + if (isMounted) navigate("/projects"); + } + })(); + return () => { + isMounted = false; + }; + }, [projectId, navigate, setTimelineFromServer]); + + const openSection = useCallback( + (section: "media-bin" | "text-editor" | "transitions") => { + const isProjectRoot = /^\/project\/[^/]+\/?$/.test(location.pathname); + const isActive = + (section === "media-bin" && (location.pathname.includes("/media-bin") || isProjectRoot)) || + (section !== "media-bin" && location.pathname.includes(`/${section}`)); + + if (isActive) { + if (isSidebarCollapsed) { + leftPanelRef.current?.expand?.(); + setIsSidebarCollapsed(false); + setIsUserExpandingSidebar(true); + setTimeout(() => leftPanelRef.current?.resize?.(20), 0); + } else { + leftPanelRef.current?.collapse?.(); + setIsSidebarCollapsed(true); + } + return; + } + + if (isSidebarCollapsed) { + leftPanelRef.current?.expand?.(); + setIsSidebarCollapsed(false); + setIsUserExpandingSidebar(true); + setTimeout(() => leftPanelRef.current?.resize?.(20), 0); + } + navigate(section); + }, + [isSidebarCollapsed, navigate, location.pathname], + ); const handleSaveTimeline = useCallback(async () => { try { @@ -657,7 +589,8 @@ export default function TimelineEditor() { const response = await fetch("https://api.github.com/repos/robinroy03/videoeditor"); if (response.ok) { const data = await response.json(); - setStarCount(data.stargazers_count); + const parsed = GitHubRepoStatsSchema.safeParse(data); + if (parsed.success) setStarCount(parsed.data.stargazers_count); } } catch (error) { console.error("Failed to fetch GitHub stars:", error); @@ -718,7 +651,7 @@ export default function TimelineEditor() { }}> {/* Ultra-minimal Top Bar */}
-
+

Kimu Studio

@@ -755,37 +688,99 @@ export default function TimelineEditor() { {isRendering ? "Rendering..." : "Export"} - {}} - />
- {/* Main content: Left panel full height, center preview+timeline, right chat always visible */} - - {/* Left Panel - Media Bin & Tools (full height) */} - -
- +
+
+ + + +
+
+ { + await signOut(); + window.location.assign("/login"); + }} />
- - - +
- {/* Center Area: Preview and Timeline */} - + { + const leftSize = sizes?.[0] ?? 0; + if (isSidebarCollapsed && leftSize > 0 && !isUserExpandingSidebar) { + leftPanelRef.current?.collapse?.(); + setIsSidebarCollapsed(true); + return; + } + if (isUserExpandingSidebar && leftSize >= 12) { + setIsUserExpandingSidebar(false); + } + setIsSidebarCollapsed(leftSize < 1); + }}> + {/* Left Panel - Media Bin & Tools */} + +
+ +
+
+ + + + {/* Center Area: Preview and Timeline */} + {/* Preview Area */} @@ -860,7 +855,7 @@ export default function TimelineEditor() { onClick={() => setIsChatMinimized(false)} className="h-6 w-6 p-0 text-primary" title="Open Chat"> - + )} @@ -1028,28 +1023,32 @@ export default function TimelineEditor() { - {/* Right Panel - Chat (toggleable) */} - {!isChatMinimized && ( - <> - - -
- setIsChatMinimized(true)} - messages={chatMessages} - onMessagesChange={setChatMessages} - timelineState={timeline} - handleUpdateScrubber={handleUpdateScrubberWithLocking} - handleDeleteScrubber={handleDeleteScrubber} - /> -
-
- - )} -
+ {/* Right Panel - Chat (toggleable) */} + {!isChatMinimized && ( + <> + + +
+ setIsChatMinimized(true)} + messages={chatMessages} + onMessagesChange={setChatMessages} + timelineState={timeline} + handleUpdateScrubber={handleUpdateScrubberWithLocking} + handleDeleteScrubber={handleDeleteScrubber} + pixelsPerSecond={getPixelsPerSecond()} + handleAddTrack={handleAddTrack} + restoreTimeline={setTimelineFromServer} + /> +
+
+ + )} + +
{/* Hidden file input */} (null); const [limitBytes, setLimitBytes] = React.useState(2 * 1024 * 1024 * 1024); const [projectCount, setProjectCount] = React.useState(null); @@ -21,10 +25,10 @@ export default function Profile() { if (!res.ok) return; const j = await res.json(); if (!cancelled) { - const u = Number(j?.usedBytes || 0); - const l = Number(j?.limitBytes || limitBytes); - setUsedBytes(Number.isFinite(u) ? u : 0); - setLimitBytes(Number.isFinite(l) ? l : 2 * 1024 * 1024 * 1024); + const parsed = StorageResponseSchema.safeParse(j); + if (!parsed.success) return; + setUsedBytes(parsed.data.usedBytes); + setLimitBytes(parsed.data.limitBytes); } } catch (error) { console.error("Failed to fetch storage info:", error); @@ -34,7 +38,7 @@ export default function Profile() { try { const { authClient } = await import("~/lib/auth-client"); const session = await authClient.getSession(); - const created = session?.data?.user?.createdAt ?? null; + const created = getAuthCreatedAt(session); if (!cancelled && created) setMemberSince(String(created)); } catch (error) { console.error("Failed to fetch user session:", error); @@ -45,7 +49,10 @@ export default function Profile() { const res = await fetch("/backend/projects", { credentials: "include" }); if (!res.ok) return; const j = await res.json(); - if (!cancelled) setProjectCount(Array.isArray(j?.projects) ? j.projects.length : 0); + if (!cancelled) { + const parsed = BackendProjectsResponseSchema.safeParse(j); + setProjectCount(parsed.success ? parsed.data.projects.length : 0); + } } catch (error) { console.error("Failed to fetch projects:", error); } @@ -53,7 +60,7 @@ export default function Profile() { return () => { cancelled = true; }; - }, [limitBytes]); + }, []); const formatBytes = (bytes: number): string => { if (!Number.isFinite(bytes) || bytes <= 0) return "0 B"; @@ -78,10 +85,15 @@ export default function Profile() {
- avatar + {user?.name
-

John Doe

-
john.doe@example.com
+

{user?.name || "User"}

+
{user?.email || "No email"}
@@ -141,7 +153,9 @@ export default function Profile() { Member since
- {memberSince ? new Date(memberSince).toLocaleDateString() : "β€”"} + {memberSince + ? new Date(/^\d+$/.test(memberSince) ? Number(memberSince) : memberSince).toLocaleDateString() + : "β€”"}
diff --git a/app/schemas/apis/assets.ts b/app/schemas/apis/assets.ts new file mode 100644 index 00000000..86cf5c0a --- /dev/null +++ b/app/schemas/apis/assets.ts @@ -0,0 +1,36 @@ +import { z } from "zod"; + +const numberish = z.union([z.number(), z.string()]).transform((v) => (typeof v === "number" ? v : parseFloat(v))); +const dateLikeToString = (v: unknown) => (v instanceof Date ? v.toISOString() : String(v)); +const DateString = z.union([z.string(), z.date()]).transform((v) => dateLikeToString(v)); + +export const AssetsResponseSchema = z.object({ + assets: z.array( + z.object({ + id: z.string(), + name: z.string(), + mime_type: z.string(), + size_bytes: numberish, + width: z.number().nullable(), + height: z.number().nullable(), + duration_seconds: z.number().nullable(), + durationInSeconds: z.number().nullable(), + created_at: DateString, + mediaUrlRemote: z.string(), + }), + ), +}); + +const opt = (schema: T) => + schema.nullish().transform((v) => v ?? (undefined as z.infer | undefined)); + +export const RegisterAssetBodySchema = z.object({ + filename: z.string(), + originalName: z.string(), + size: opt(z.number()), + width: z.number().nullish(), + height: z.number().nullish(), + duration: z.number().nullish(), +}); + +export const CloneAssetBodySchema = z.object({ suffix: z.string().default("copy") }); diff --git a/app/schemas/apis/misc.ts b/app/schemas/apis/misc.ts new file mode 100644 index 00000000..d37052cd --- /dev/null +++ b/app/schemas/apis/misc.ts @@ -0,0 +1,20 @@ +import { z } from "zod"; + +export const StorageResponseSchema = z.object({ + usedBytes: z.coerce.number().nonnegative().default(0), + limitBytes: z.coerce.number().positive().default(2 * 1024 * 1024 * 1024), +}); + +export const BackendProjectsResponseSchema = z.object({ + projects: z.array( + z.object({ + id: z.string(), + name: z.string(), + created_at: z.string().optional(), + }), + ), +}); + +export const GitHubRepoStatsSchema = z.object({ + stargazers_count: z.coerce.number().nonnegative(), +}); diff --git a/app/schemas/apis/params.ts b/app/schemas/apis/params.ts new file mode 100644 index 00000000..652755eb --- /dev/null +++ b/app/schemas/apis/params.ts @@ -0,0 +1,3 @@ +import { z } from "zod"; + +export const IdParamSchema = z.string().min(1).max(128); diff --git a/app/schemas/apis/projects.ts b/app/schemas/apis/projects.ts new file mode 100644 index 00000000..d421beb4 --- /dev/null +++ b/app/schemas/apis/projects.ts @@ -0,0 +1,45 @@ +import { z } from "zod"; + +const dateLikeToString = (v: unknown) => (v instanceof Date ? v.toISOString() : String(v)); +const DateString = z.union([z.string(), z.date()]).transform((v) => dateLikeToString(v)); + +export const ProjectsResponseSchema = z.object({ + projects: z.array( + z.object({ + id: z.string(), + user_id: z.string(), + name: z.string(), + created_at: DateString, + updated_at: DateString, + }), + ), +}); + +export const ProjectStateResponseSchema = z.object({ + project: z.object({ + id: z.string(), + user_id: z.string(), + name: z.string(), + created_at: DateString, + updated_at: DateString, + }), + timeline: z.unknown(), + textBinItems: z.array(z.unknown()), +}); + +export const CreateProjectBodySchema = z.object({ name: z.string().min(1).max(120).default("Untitled Project") }); + +const opt = (schema: T) => + schema.nullish().transform((v) => v ?? (undefined as z.infer | undefined)); + +export const PatchProjectBodySchema = z.object({ + name: opt(z.string().min(1).max(120)), + timeline: z + .unknown() + .nullish() + .transform((v) => v ?? undefined), + textBinItems: z + .array(z.unknown()) + .nullish() + .transform((v) => v ?? undefined), +}); diff --git a/app/schemas/auth.ts b/app/schemas/auth.ts new file mode 100644 index 00000000..1f470cca --- /dev/null +++ b/app/schemas/auth.ts @@ -0,0 +1,65 @@ +import { z } from "zod"; + +export const AuthUserSchema = z.object({ + id: z.string(), + email: z.string().email().nullable().optional(), + name: z.string().nullable().optional(), + image: z.string().url().nullable().optional(), +}); + +export const BetterAuthUserSchema = z.object({ + id: z.union([z.string(), z.number()]).optional(), + userId: z.union([z.string(), z.number()]).optional(), + email: z.string().optional(), + name: z.string().optional(), + image: z.string().optional(), + avatarUrl: z.string().optional(), +}); + +export const BetterAuthEnvelopeSchema = z.object({ + user: BetterAuthUserSchema.optional(), + data: z.object({ user: BetterAuthUserSchema.optional() }).optional(), + session: z + .object({ + user: BetterAuthUserSchema.optional(), + userId: z.union([z.string(), z.number()]).optional(), + }) + .optional(), +}); + +export function normalizeAuthUser(input: unknown): z.infer | null { + const env = BetterAuthEnvelopeSchema.safeParse(input); + if (!env.success) return null; + const raw = env.data.user || env.data.data?.user || env.data.session?.user; + const id = raw?.id ?? raw?.userId ?? env.data.session?.userId; + if (!id) return null; + const normalized = { + id: String(id), + email: (raw?.email as string | undefined) ?? null, + name: (raw?.name as string | undefined) ?? null, + image: (raw?.image as string | undefined) ?? (raw?.avatarUrl as string | undefined) ?? null, + }; + return AuthUserSchema.parse(normalized); +} + +export function getAuthCreatedAt(input: unknown): string | null { + if (!input || typeof input !== "object") return null; + const obj = input as Record; + const fromUser = obj.user as Record | undefined; + const fromDataUser = + obj.data && typeof obj.data === "object" + ? ((obj.data as Record).user as Record | undefined) + : undefined; + const created = + fromUser?.createdAt ?? + fromUser?.created_at ?? + fromUser?.created_at_ms ?? + fromDataUser?.createdAt ?? + fromDataUser?.created_at ?? + fromDataUser?.created_at_ms; + if (created == null) return null; + if (typeof created === "number") return String(created); + if (typeof created === "string") return created; + if (created instanceof Date) return created.toISOString(); + return null; +} diff --git a/app/schemas/components/chat.ts b/app/schemas/components/chat.ts new file mode 100644 index 00000000..4cefac81 --- /dev/null +++ b/app/schemas/components/chat.ts @@ -0,0 +1,30 @@ +import { z } from "zod"; + +export { + AiResponseSchema, + MoveScrubberArgsSchema, + ResizeScrubberArgsSchema, + AddScrubberByNameArgsSchema, + AddMediaByIdArgsSchema, + DeleteScrubbersInTrackArgsSchema, + UpdateTextContentArgsSchema, + UpdateTextStyleArgsSchema, + MoveScrubbersByOffsetArgsSchema, +} from "../llm"; + +export const ChatMessageSchema = z.object({ + id: z.string(), + content: z.string(), + isUser: z.boolean(), + timestamp: z.union([z.date(), z.string()]).transform((v) => (typeof v === "string" ? new Date(v) : v)), +}); + +export const ChatTabSchema = z.object({ + id: z.string(), + name: z.string(), + messages: z.array(ChatMessageSchema), + timelineSnapshot: z.unknown().nullable(), + createdAt: z.number(), +}); + +export const ChatTabsStorageSchema = z.array(ChatTabSchema); diff --git a/app/schemas/components/media.ts b/app/schemas/components/media.ts new file mode 100644 index 00000000..7a4023b0 --- /dev/null +++ b/app/schemas/components/media.ts @@ -0,0 +1,11 @@ +import { z } from "zod"; + +export const TransitionDragPayloadSchema = z.object({ + id: z.string(), + type: z.literal("transition"), + presentation: z.enum(["fade", "wipe", "clockWipe", "slide", "flip", "iris"]), + timing: z.enum(["linear", "spring"]).default("linear"), + durationInFrames: z.number().int().positive(), + leftScrubberId: z.string().nullable(), + rightScrubberId: z.string().nullable(), +}); diff --git a/app/schemas/components/timeline.ts b/app/schemas/components/timeline.ts new file mode 100644 index 00000000..154a0b2f --- /dev/null +++ b/app/schemas/components/timeline.ts @@ -0,0 +1,8 @@ +export { + MediaBinItemSchema, + ScrubberStateSchema, + TrackStateSchema, + TimelineStateSchema, + TextPropertiesSchema, + TransitionSchema, +} from "../timeline"; diff --git a/app/schemas/index.ts b/app/schemas/index.ts new file mode 100644 index 00000000..659219cd --- /dev/null +++ b/app/schemas/index.ts @@ -0,0 +1,10 @@ +export * from "./timeline"; +export * from "./llm"; +export * from "./auth"; +export * from "./components/chat"; +export * from "./components/timeline"; +export * from "./components/media"; +export * from "./apis/assets"; +export * from "./apis/projects"; +export * from "./apis/params"; +export * from "./apis/misc"; diff --git a/app/schemas/llm.ts b/app/schemas/llm.ts new file mode 100644 index 00000000..583e2f7c --- /dev/null +++ b/app/schemas/llm.ts @@ -0,0 +1,104 @@ +import { z } from "zod"; + +export const numberish = z.union([z.number(), z.string()]).transform((v) => { + if (typeof v === "number") return v; + const n = parseFloat(v); + if (!Number.isFinite(n)) throw new Error("Invalid number"); + return n; +}); + +export const seconds = numberish.refine((n) => Number.isFinite(n) && n >= 0, "Invalid seconds"); + +const opt = (schema: T) => + schema.nullish().transform((v) => (v ?? undefined) as z.infer | undefined); + +export const optNumberish = opt(numberish); +export const optSeconds = opt(seconds); +export const optString = opt(z.string()); + +export const FunctionCallSchema = z.object({ + function_name: z.string(), + arguments: z.record(z.string(), z.unknown()).default({}), +}); + +export const AiResponseSchema = z.object({ + function_call: FunctionCallSchema.optional(), + assistant_message: z.string().optional(), +}); + +export const MoveScrubberArgsSchema = z.object({ + scrubber_id: z.string(), + new_position_seconds: optSeconds, + position_seconds: optSeconds, + start_seconds: optSeconds, + new_track_number: optNumberish, + track_number: optNumberish, + pixels_per_second: optNumberish, +}); + +export const ResizeScrubberArgsSchema = z.object({ + scrubber_id: optString, + new_duration_seconds: optSeconds, + duration_seconds: optSeconds, + seconds: optSeconds, + duration: optSeconds, + newDurationSeconds: optSeconds, + durationInSeconds: optSeconds, + start_seconds: optSeconds, + position_seconds: optSeconds, + end_seconds: optSeconds, + track_number: optNumberish, + new_track_number: optNumberish, + pixels_per_second: optNumberish, + scrubber_name: optString, + new_text_content: optString, +}); + +export const AddScrubberByNameArgsSchema = z.object({ + scrubber_name: z.string(), + pixels_per_second: optNumberish, + start_seconds: optSeconds, + position_seconds: optSeconds, + track_number: optNumberish, + end_seconds: optSeconds, + duration_seconds: optSeconds, +}); + +export const AddMediaByIdArgsSchema = z.object({ + scrubber_id: z.string(), + pixels_per_second: optNumberish, + start_seconds: optSeconds, + track_number: optNumberish, + end_seconds: optSeconds, + duration_seconds: optSeconds, +}); + +export const DeleteScrubbersInTrackArgsSchema = z.object({ + track_number: optNumberish, +}); + +export const UpdateTextContentArgsSchema = z.object({ + scrubber_id: z.string(), + new_text_content: z.string(), +}); + +export const UpdateTextStyleArgsSchema = z.object({ + scrubber_id: z.string(), + fontSize: optNumberish, + fontFamily: optString, + color: optString, + textAlign: z + .enum(["left", "center", "right"]) + .nullish() + .transform((v) => v ?? undefined), + fontWeight: z + .enum(["normal", "bold"]) + .nullish() + .transform((v) => v ?? undefined), +}); + +export const MoveScrubbersByOffsetArgsSchema = z.object({ + scrubber_ids: z.array(z.string()), + offset_seconds: seconds, + pixels_per_second: optNumberish, +}); diff --git a/app/schemas/timeline.ts b/app/schemas/timeline.ts new file mode 100644 index 00000000..eac266dd --- /dev/null +++ b/app/schemas/timeline.ts @@ -0,0 +1,67 @@ +import { z } from "zod"; + +export const TextPropertiesSchema = z.object({ + textContent: z.string(), + fontSize: z.number(), + fontFamily: z.string(), + color: z.string(), + textAlign: z.enum(["left", "center", "right"]), + fontWeight: z.enum(["normal", "bold"]), + template: z.enum(["normal", "glassy"]).nullable(), +}); + +export const TransitionSchema = z.object({ + id: z.string(), + presentation: z.enum(["fade", "wipe", "clockWipe", "slide", "flip", "iris"]), + timing: z.enum(["spring", "linear"]), + durationInFrames: z.number().int().nonnegative(), + leftScrubberId: z.string().nullable(), + rightScrubberId: z.string().nullable(), +}); + +export const MediaBinBaseSchema = z.object({ + id: z.string(), + mediaType: z.enum(["video", "image", "audio", "text", "groupped_scrubber"]), + mediaUrlLocal: z.string().nullable(), + mediaUrlRemote: z.string().nullable(), + media_width: z.number(), + media_height: z.number(), + text: TextPropertiesSchema.nullable(), + groupped_scrubbers: z.any().nullable(), + left_transition_id: z.string().nullable(), + right_transition_id: z.string().nullable(), +}); + +export const MediaBinItemSchema = MediaBinBaseSchema.extend({ + name: z.string(), + durationInSeconds: z.number().nonnegative(), + uploadProgress: z.number().nullable(), + isUploading: z.boolean(), +}); + +export const ScrubberStateSchema = MediaBinItemSchema.extend({ + left: z.number().nonnegative(), + y: z.number().int().nonnegative(), + width: z.number().nonnegative(), + sourceMediaBinId: z.string(), + left_player: z.number(), + top_player: z.number(), + width_player: z.number(), + height_player: z.number(), + is_dragging: z.boolean(), + trimBefore: z.number().int().nullable(), + trimAfter: z.number().int().nullable(), +}); + +export const TrackStateSchema = z.object({ + id: z.string(), + scrubbers: z.array(ScrubberStateSchema), + transitions: z.array(TransitionSchema), +}); + +export const TimelineStateSchema = z.object({ + tracks: z.array(TrackStateSchema), +}); + +export type TimelineStateParsed = z.infer; +export type ScrubberStateParsed = z.infer; diff --git a/app/utils/llm-handler.ts b/app/utils/llm-handler.ts index 240ea3f2..69e43212 100644 --- a/app/utils/llm-handler.ts +++ b/app/utils/llm-handler.ts @@ -19,14 +19,14 @@ export function llmAddScrubberToTimeline( mediaBinItems: MediaBinItem[], track: string, dropLeftPx: number, - handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => void, + handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => string, ) { // take a scrubber from the media bin and add it to the timeline. It is best to leave the import to media bin to the user. const scrubber = mediaBinItems.find((item) => item.id === id); if (!scrubber) { throw new Error(`Scrubber with id ${id} not found`); } - handleDropOnTrack(scrubber, track, dropLeftPx); + return handleDropOnTrack(scrubber, track, dropLeftPx); } // everything below is untested and written by claude @@ -37,7 +37,7 @@ export function llmAddScrubberByName( trackNumber: number, positionSeconds: number, pixelsPerSecond: number, - handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => void, + handleDropOnTrack: (item: MediaBinItem, trackId: string, dropLeftPx: number) => string, ) { const scrubber = mediaBinItems.find((item) => item.name.toLowerCase().includes(name.toLowerCase())); if (!scrubber) { @@ -45,7 +45,7 @@ export function llmAddScrubberByName( } const trackId = `track-${trackNumber}`; const dropLeftPx = positionSeconds * pixelsPerSecond; - handleDropOnTrack(scrubber, trackId, dropLeftPx); + return handleDropOnTrack(scrubber, trackId, dropLeftPx); } export function llmMoveScrubber( diff --git a/app/video-compositions/DragDrop.tsx b/app/video-compositions/DragDrop.tsx index 470da76b..3a5ed30f 100644 --- a/app/video-compositions/DragDrop.tsx +++ b/app/video-compositions/DragDrop.tsx @@ -223,7 +223,6 @@ export const SelectionOutline: React.FC<{ return; } - console.log("onPointerDown is called", ScrubberState.id); setSelectedItem(ScrubberState.id); startDragging(e); }, diff --git a/app/video-compositions/VideoPlayer.tsx b/app/video-compositions/VideoPlayer.tsx index 382e2a5c..abe8c9b3 100644 --- a/app/video-compositions/VideoPlayer.tsx +++ b/app/video-compositions/VideoPlayer.tsx @@ -52,8 +52,13 @@ export function TimelineComposition({ }: TimelineCompositionProps) { // Resolve pixels per second based on rendering mode const resolvedPixelsPerSecond = isRendering ? (getPixelsPerSecond as number) : (getPixelsPerSecond as () => number)(); + + if (!timelineData?.length) { + return ; + } + // Get all transitions from timelineData - const allTransitions = timelineData[0].transitions; + const allTransitions = timelineData[0].transitions ?? {}; // Step 1: Group scrubbers by trackIndex const trackGroups: { @@ -120,6 +125,7 @@ export function TimelineComposition({ const imageUrl = isRendering ? scrubber.mediaUrlRemote || scrubber.mediaUrlLocal : scrubber.mediaUrlLocal || scrubber.mediaUrlRemote; + if (!imageUrl) break; content = ( - + ); break; @@ -137,6 +143,7 @@ export function TimelineComposition({ const videoUrl = isRendering ? scrubber.mediaUrlRemote || scrubber.mediaUrlLocal : scrubber.mediaUrlLocal || scrubber.mediaUrlRemote; + if (!videoUrl) break; content = (
+ + + {/* Right Panel - Chat (toggleable) */} {!isChatMinimized && ( diff --git a/app/routes/learn.tsx b/app/routes/learn.tsx index a2e9f867..ec682d7a 100644 --- a/app/routes/learn.tsx +++ b/app/routes/learn.tsx @@ -3,7 +3,6 @@ // import { Player } from "@remotion/player"; // import { createTikTokStyleCaptions } from "@remotion/captions"; - // type Caption = { // text: string; // startMs: number; diff --git a/app/routes/login.tsx b/app/routes/login.tsx index fde89dbe..c3bc6514 100644 --- a/app/routes/login.tsx +++ b/app/routes/login.tsx @@ -93,8 +93,7 @@ export default function LoginPage() {
diff --git a/app/routes/projects.tsx b/app/routes/projects.tsx index 9c9261a2..c2083a82 100644 --- a/app/routes/projects.tsx +++ b/app/routes/projects.tsx @@ -299,7 +299,13 @@ export default function Projects() { starCount={starCount} onSignOut={async () => { const { authClient } = await import("~/lib/auth-client"); - await authClient.signOut({ fetchOptions: { onSuccess: () => { window.location.href = "/login"; } } }); + await authClient.signOut({ + fetchOptions: { + onSuccess: () => { + window.location.href = "/login"; + }, + }, + }); }} />
diff --git a/app/schemas/apis/misc.ts b/app/schemas/apis/misc.ts index d37052cd..de87e5d3 100644 --- a/app/schemas/apis/misc.ts +++ b/app/schemas/apis/misc.ts @@ -2,7 +2,10 @@ import { z } from "zod"; export const StorageResponseSchema = z.object({ usedBytes: z.coerce.number().nonnegative().default(0), - limitBytes: z.coerce.number().positive().default(2 * 1024 * 1024 * 1024), + limitBytes: z.coerce + .number() + .positive() + .default(2 * 1024 * 1024 * 1024), }); export const BackendProjectsResponseSchema = z.object({ diff --git a/app/schemas/apis/projects.ts b/app/schemas/apis/projects.ts index d421beb4..f2927dea 100644 --- a/app/schemas/apis/projects.ts +++ b/app/schemas/apis/projects.ts @@ -1,30 +1,27 @@ import { z } from "zod"; +import { MediaBinItemSchema, TimelineStateSchema } from "../timeline"; const dateLikeToString = (v: unknown) => (v instanceof Date ? v.toISOString() : String(v)); const DateString = z.union([z.string(), z.date()]).transform((v) => dateLikeToString(v)); +const ProjectMetaSchema = z.object({ + id: z.string(), + user_id: z.string(), + name: z.string(), + created_at: DateString, + updated_at: DateString, +}); + export const ProjectsResponseSchema = z.object({ - projects: z.array( - z.object({ - id: z.string(), - user_id: z.string(), - name: z.string(), - created_at: DateString, - updated_at: DateString, - }), - ), + projects: z.array(ProjectMetaSchema), }); +// Timeline payload accepts either a fully-validated TimelineState or any plain object +// (older saves pre-date the schema). Loaders fall back to a default state on parse failure. export const ProjectStateResponseSchema = z.object({ - project: z.object({ - id: z.string(), - user_id: z.string(), - name: z.string(), - created_at: DateString, - updated_at: DateString, - }), - timeline: z.unknown(), - textBinItems: z.array(z.unknown()), + project: ProjectMetaSchema, + timeline: z.union([TimelineStateSchema, z.record(z.string(), z.unknown())]).nullable(), + textBinItems: z.array(MediaBinItemSchema).default([]), }); export const CreateProjectBodySchema = z.object({ name: z.string().min(1).max(120).default("Untitled Project") }); @@ -34,12 +31,6 @@ const opt = (schema: T) => export const PatchProjectBodySchema = z.object({ name: opt(z.string().min(1).max(120)), - timeline: z - .unknown() - .nullish() - .transform((v) => v ?? undefined), - textBinItems: z - .array(z.unknown()) - .nullish() - .transform((v) => v ?? undefined), + timeline: opt(TimelineStateSchema), + textBinItems: opt(z.array(MediaBinItemSchema)), }); diff --git a/app/video-compositions/VideoPlayer.tsx b/app/video-compositions/VideoPlayer.tsx index 6e839031..9e37ccd0 100644 --- a/app/video-compositions/VideoPlayer.tsx +++ b/app/video-compositions/VideoPlayer.tsx @@ -1,6 +1,6 @@ import { Player, type PlayerRef } from "@remotion/player"; import { Sequence, AbsoluteFill, Img, Video, Audio } from "remotion"; -import { linearTiming, springTiming, TransitionSeries } from "@remotion/transitions"; +import { linearTiming, springTiming, TransitionSeries, type TransitionPresentation } from "@remotion/transitions"; import { fade } from "@remotion/transitions/fade"; import { iris } from "@remotion/transitions/iris"; import { wipe } from "@remotion/transitions/wipe"; @@ -182,21 +182,26 @@ export function TimelineComposition({ return content; }; - // Helper function to get transition presentation - const getTransitionPresentation = (transition: Transition) => { + // Helper function to get transition presentation. + // Each per-effect helper returns its own TransitionPresentation

generic; the union of those + // is not assignable to any single TransitionPresentation

, so we erase the prop generic to a + // permissive `Record` (Remotion accepts any presentation factory at runtime). + type AnyPresentation = TransitionPresentation>; + const getTransitionPresentation = (transition: Transition): AnyPresentation => { + const cast = (p: unknown) => p as AnyPresentation; switch (transition.presentation) { case "fade": - return fade(); + return cast(fade()); case "wipe": - return wipe(); + return cast(wipe()); case "slide": - return slide(); + return cast(slide()); case "flip": - return flip(); + return cast(flip()); case "iris": - return iris({ width: 1920, height: 1080 }); + return cast(iris({ width: 1920, height: 1080 })); default: - return fade(); + return cast(fade()); } }; @@ -273,7 +278,7 @@ export function TimelineComposition({ transitionSeriesElements.push( , ); @@ -328,7 +333,7 @@ export function TimelineComposition({ transitionSeriesElements.push( , ); diff --git a/app/videorender/videorender.ts b/app/videorender/videorender.ts index 2b3cd688..231deaa0 100644 --- a/app/videorender/videorender.ts +++ b/app/videorender/videorender.ts @@ -15,15 +15,13 @@ import { } from "@aws-sdk/client-s3"; import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; import { Upload } from "@aws-sdk/lib-storage"; -import pkg from "pg"; -import type { PoolClient } from "pg"; +import pkg, { type PoolClient } from "pg"; const { Pool } = pkg; const scriptDir = path.dirname(fileURLToPath(import.meta.url)); const envPath = path.resolve(scriptDir, "../../.env"); dotenv.config({ path: envPath }); - // ─── R2 client (S3-compatible) ─────────────────────────────────────────────── const r2 = new S3Client({ @@ -276,7 +274,7 @@ app.post("/assets/initiate-upload", async (req: Request, res: Response): Promise fileSize: number; mimeType: string; mediaType: string; - contentHash: string; // SHA-256 hex from browser + contentHash: string; // SHA-256 hex from browser projectId?: string | null; }; @@ -311,8 +309,17 @@ app.post("/assets/initiate-upload", async (req: Request, res: Response): Promise mime_type, media_type, status) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,'ready') ON CONFLICT (id) DO NOTHING`, - [assetId, userId, projectId ?? null, contentHash, r2Key, - filename, fileSize || null, mimeType, mediaType || null], + [ + assetId, + userId, + projectId ?? null, + contentHash, + r2Key, + filename, + fileSize || null, + mimeType, + mediaType || null, + ], ); console.log(`⚑ Dedup hit: ${filename} (${contentHash.slice(0, 8)}…)`); @@ -329,8 +336,7 @@ app.post("/assets/initiate-upload", async (req: Request, res: Response): Promise ON CONFLICT (id) DO UPDATE SET content_hash=$4, r2_key=$5, filename=$6, file_size=$7, mime_type=$8, media_type=$9, status='uploading'`, - [assetId, userId, projectId ?? null, contentHash, r2Key, - filename, fileSize || null, mimeType, mediaType || null], + [assetId, userId, projectId ?? null, contentHash, r2Key, filename, fileSize || null, mimeType, mediaType || null], ); console.log(`πŸ“€ Upload initiated: ${filename} β†’ ${r2Key}`); @@ -455,10 +461,7 @@ app.post("/assets/complete-upload", async (req: Request, res: Response): Promise const contentHash: string = lookup[0].content_hash; // Mark the shared R2 object as confirmed (idempotent β€” no-op if already ready) - await db.query( - "UPDATE r2_objects SET status='ready' WHERE content_hash=$1 AND status='pending'", - [contentHash], - ); + await db.query("UPDATE r2_objects SET status='ready' WHERE content_hash=$1 AND status='pending'", [contentHash]); const { rows } = await db.query( `UPDATE assets @@ -558,10 +561,10 @@ app.delete("/projects/:projectId", async (req: Request, res: Response): Promise< try { await client.query("BEGIN"); - const { rows: projectRows } = await client.query( - "SELECT id FROM projects WHERE id=$1 AND user_id=$2 FOR UPDATE", - [projectId, userId], - ); + const { rows: projectRows } = await client.query("SELECT id FROM projects WHERE id=$1 AND user_id=$2 FOR UPDATE", [ + projectId, + userId, + ]); if (projectRows.length === 0) { await client.query("ROLLBACK"); res.status(404).json({ error: "Project not found" }); @@ -709,10 +712,10 @@ app.post("/assets/:assetId/clone", async (req: Request, res: Response): Promise< const { suffix } = req.body as { suffix?: string }; try { - const { rows } = await db.query( - "SELECT * FROM assets WHERE id=$1 AND user_id=$2 AND deleted_at IS NULL", - [assetId, userId], - ); + const { rows } = await db.query("SELECT * FROM assets WHERE id=$1 AND user_id=$2 AND deleted_at IS NULL", [ + assetId, + userId, + ]); if (rows.length === 0) { res.status(404).json({ error: "Source asset not found" }); @@ -733,9 +736,7 @@ app.post("/assets/:assetId/clone", async (req: Request, res: Response): Promise< }), ); - const newFilename = suffix - ? `${path.basename(source.filename, ext)} ${suffix}${ext}` - : source.filename; + const newFilename = suffix ? `${path.basename(source.filename, ext)} ${suffix}${ext}` : source.filename; const { rows: newRows } = await db.query( `INSERT INTO assets @@ -744,9 +745,17 @@ app.post("/assets/:assetId/clone", async (req: Request, res: Response): Promise< VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,'ready') RETURNING *`, [ - newAssetId, userId, source.project_id, newR2Key, newFilename, - source.file_size, source.mime_type, source.media_type, - source.duration_seconds, source.width, source.height, + newAssetId, + userId, + source.project_id, + newR2Key, + newFilename, + source.file_size, + source.mime_type, + source.media_type, + source.duration_seconds, + source.width, + source.height, ], ); // Note: cloned assets intentionally have no content_hash since they represent @@ -798,15 +807,24 @@ app.post("/render", async (req: Request, res: Response): Promise => { logLevel: "info", ffmpegOverride: ({ args }) => [ ...args, - "-preset", "fast", - "-crf", "28", - "-threads", "3", - "-tune", "film", - "-x264-params", "ref=3:me=hex:subme=6:trellis=1", - "-g", "30", - "-bf", "2", - "-maxrate", "5M", - "-bufsize", "10M", + "-preset", + "fast", + "-crf", + "28", + "-threads", + "3", + "-tune", + "film", + "-x264-params", + "ref=3:me=hex:subme=6:trellis=1", + "-g", + "30", + "-bf", + "2", + "-maxrate", + "5M", + "-bufsize", + "10M", ], timeoutInMilliseconds: 900000, }); diff --git a/backend/Dockerfile b/backend/Dockerfile index f9b0689e..8ffa7a83 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,6 +1,9 @@ -FROM python:3.12-slim +FROM python:3.12.7-slim -RUN pip install uv +# curl for healthchecks; uv installed via pip. +RUN apt-get update && apt-get install -y --no-install-recommends curl \ + && rm -rf /var/lib/apt/lists/* \ + && pip install --no-cache-dir uv WORKDIR /app @@ -10,6 +13,11 @@ RUN uv sync --frozen --no-dev COPY . . +# Run as a non-root user. +RUN useradd --system --uid 1001 --create-home appuser \ + && chown -R appuser:appuser /app +USER appuser + EXPOSE 3000 CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/backend/ai/routes.py b/backend/ai/routes.py index 2272e0bb..0429b830 100644 --- a/backend/ai/routes.py +++ b/backend/ai/routes.py @@ -1,12 +1,16 @@ import json import logging +import time +from collections import defaultdict, deque from typing import Any -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter, Depends, HTTPException, status from google import genai from pydantic import BaseModel, ConfigDict, Field from ai.schema import FunctionCallResponse +from auth.routes import get_current_user +from auth.schema import SessionUser from utils import require_env logger = logging.getLogger(__name__) @@ -18,8 +22,32 @@ GEMINI_API_KEY: str = require_env("GEMINI_API_KEY") gemini_client: genai.Client = genai.Client(api_key=GEMINI_API_KEY) -_MAX_MESSAGE_LENGTH = 5_000 -_MAX_HISTORY_ITEMS = 20 +_MAX_MESSAGE_LENGTH = 20_000 +_MAX_HISTORY_ITEMS = 50 +# Permissive caps β€” large enough for real projects (hundreds of scrubbers / media items) without +# hitting Gemini 2.5 Flash's ~1M-token context window. Tune when we have load data. +_MAX_TIMELINE_BYTES = 10 * 1024 * 1024 # 10 MB +_MAX_MEDIABIN_BYTES = 4 * 1024 * 1024 # 4 MB + +# Per-user in-process rate limit. Sized for an interactive editor where a power user might +# iterate at ~1 req/sec during a session. Revisit with Redis once we move to multi-worker. +_RATE_LIMIT_WINDOW_SECONDS = 60 +_RATE_LIMIT_MAX_REQUESTS = 60 +_recent_requests: dict[str, deque[float]] = defaultdict(deque) + + +def _enforce_rate_limit(user_id: str) -> None: + now = time.monotonic() + window_start = now - _RATE_LIMIT_WINDOW_SECONDS + bucket = _recent_requests[user_id] + while bucket and bucket[0] < window_start: + bucket.popleft() + if len(bucket) >= _RATE_LIMIT_MAX_REQUESTS: + raise HTTPException( + status_code=status.HTTP_429_TOO_MANY_REQUESTS, + detail=f"Rate limit exceeded: {_RATE_LIMIT_MAX_REQUESTS} requests per minute", + ) + bucket.append(now) class Message(BaseModel): @@ -33,7 +61,26 @@ class Message(BaseModel): @router.post("/ai") -async def process_ai_message(request: Message) -> FunctionCallResponse: +async def process_ai_message( + request: Message, + user: SessionUser = Depends(get_current_user), +) -> FunctionCallResponse: + _enforce_rate_limit(user.user_id) + + # Bound the serialized payload before forwarding to Gemini to cap token spend. + timeline_json = json.dumps(request.timeline_state or {}, ensure_ascii=False) + if len(timeline_json) > _MAX_TIMELINE_BYTES: + raise HTTPException( + status_code=status.HTTP_413_REQUEST_ENTITY_TOO_LARGE, + detail="Timeline state too large", + ) + mediabin_json = json.dumps(request.mediabin_items or [], ensure_ascii=False) + if len(mediabin_json) > _MAX_MEDIABIN_BYTES: + raise HTTPException( + status_code=status.HTTP_413_REQUEST_ENTITY_TOO_LARGE, + detail="Media bin too large", + ) + # Truncate history to last N items to limit prompt size history = (request.chat_history or [])[-_MAX_HISTORY_ITEMS:] @@ -58,8 +105,8 @@ async def process_ai_message(request: Message) -> FunctionCallResponse: User message: {json.dumps(request.message, ensure_ascii=False)} Mentioned scrubber ids: {json.dumps(request.mentioned_scrubber_ids or [])} -Timeline state: {json.dumps(request.timeline_state or {}, ensure_ascii=False)} -Media bin items: {json.dumps(request.mediabin_items or [], ensure_ascii=False)} +Timeline state: {timeline_json} +Media bin items: {mediabin_json} """ try: @@ -73,8 +120,13 @@ async def process_ai_message(request: Message) -> FunctionCallResponse: ) return FunctionCallResponse.model_validate(response.parsed) except ValueError as exc: - logger.warning("AI response validation error: %s", exc) - raise HTTPException(status_code=422, detail="Invalid response from AI model") from exc + # Don't include user content (timeline / messages) in logs β€” log the type only. + logger.warning("AI response validation failed: %s", type(exc).__name__) + raise HTTPException( + status_code=422, detail="Invalid response from AI model" + ) from exc except Exception as exc: - logger.exception("Unexpected error in AI endpoint") - raise HTTPException(status_code=500, detail="AI service temporarily unavailable") from exc + logger.exception("Unexpected error in AI endpoint for user %s", user.user_id) + raise HTTPException( + status_code=500, detail="AI service temporarily unavailable" + ) from exc diff --git a/backend/api/routes.py b/backend/api/routes.py index 89db95ac..110cbe39 100644 --- a/backend/api/routes.py +++ b/backend/api/routes.py @@ -1,9 +1,21 @@ import json import logging - -from fastapi import APIRouter, Depends, HTTPException, Query, status - -from api.schema import CreateProjectRequest, RenameProjectRequest, TimelinePayload +from typing import Any +from uuid import UUID + +from fastapi import APIRouter, Depends, HTTPException, Path, Query, status + +from api.schema import ( + CreateProjectRequest, + ProjectCreateResponse, + ProjectListResponse, + ProjectMeta, + ProjectMutationResponse, + ProjectStateResponse, + RenameProjectRequest, + StorageResponse, + TimelinePayload, +) from auth.routes import get_current_user from auth.schema import SessionUser from db import get_db_pool @@ -12,13 +24,26 @@ router = APIRouter(tags=["api"]) +# 2 GB per user (per-tier limits live in user_plans table once introduced). +_DEFAULT_STORAGE_LIMIT_BYTES = 2 * 1024 * 1024 * 1024 + + +def _row_to_meta(row: Any) -> ProjectMeta: + return ProjectMeta( + id=str(row["id"]), + user_id=str(row["user_id"]), + name=row["name"], + created_at=row["created_at"], + updated_at=row["updated_at"], + ) -@router.get("/projects") + +@router.get("/projects", response_model=ProjectListResponse) async def list_projects( user: SessionUser = Depends(get_current_user), limit: int = Query(default=20, ge=1, le=100), offset: int = Query(default=0, ge=0), -) -> dict: +) -> ProjectListResponse: pool = await get_db_pool() async with pool.acquire() as conn: rows = await conn.fetch( @@ -38,25 +63,23 @@ async def list_projects( user.user_id, ) - projects = [ - { - "id": str(row["id"]), - "user_id": str(row["user_id"]), - "name": row["name"], - "created_at": row["created_at"].isoformat(), - "updated_at": row["updated_at"].isoformat(), - } - for row in rows - ] - - return {"projects": projects, "total": total, "limit": limit, "offset": offset} + return ProjectListResponse( + projects=[_row_to_meta(row) for row in rows], + total=int(total or 0), + limit=limit, + offset=offset, + ) -@router.post("/projects", status_code=status.HTTP_201_CREATED) +@router.post( + "/projects", + status_code=status.HTTP_201_CREATED, + response_model=ProjectCreateResponse, +) async def create_project( body: CreateProjectRequest, user: SessionUser = Depends(get_current_user), -) -> dict: +) -> ProjectCreateResponse: pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -77,21 +100,15 @@ async def create_project( ) logger.info("Project created: %s by user %s", str(row["id"]), user.user_id) - return { - "project": { - "id": str(row["id"]), - "user_id": str(row["user_id"]), - "name": row["name"], - "created_at": row["created_at"].isoformat(), - "updated_at": row["updated_at"].isoformat(), - } - } - - -@router.put("/projects/{project_id}") + return ProjectCreateResponse(project=_row_to_meta(row)) + + +@router.put("/projects/{project_id}", response_model=ProjectMutationResponse) async def save_project( - project_id: str, timeline: TimelinePayload, user: SessionUser = Depends(get_current_user) -) -> dict: + timeline: TimelinePayload, + project_id: UUID = Path(...), + user: SessionUser = Depends(get_current_user), +) -> ProjectMutationResponse: pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -103,7 +120,7 @@ async def save_project( RETURNING id """, json.dumps(timeline.model_dump(mode="json")), - project_id, + str(project_id), user.user_id, ) @@ -113,13 +130,14 @@ async def save_project( detail="Project not found", ) - return {"ok": True, "project_id": str(row["id"])} + return ProjectMutationResponse(ok=True, project_id=str(row["id"])) -@router.get("/projects/{project_id}") +@router.get("/projects/{project_id}", response_model=ProjectStateResponse) async def get_project( - project_id: str, user: SessionUser = Depends(get_current_user) -) -> dict: + project_id: UUID = Path(...), + user: SessionUser = Depends(get_current_user), +) -> ProjectStateResponse: pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -128,7 +146,7 @@ async def get_project( FROM projects WHERE id = $1 AND user_id = $2 """, - project_id, + str(project_id), user.user_id, ) @@ -138,23 +156,26 @@ async def get_project( detail="Project not found", ) - return { - "project": { - "id": str(row["id"]), - "user_id": str(row["user_id"]), - "name": row["name"], - "created_at": row["created_at"].isoformat(), - "updated_at": row["updated_at"].isoformat(), - }, - "timeline": row["timeline_state"] if row["timeline_state"] is not None else {"tracks": []}, - "textBinItems": [], - } + timeline_raw = row["timeline_state"] + if isinstance(timeline_raw, str): + try: + timeline_raw = json.loads(timeline_raw) + except json.JSONDecodeError: + timeline_raw = None + return ProjectStateResponse( + project=_row_to_meta(row), + timeline=timeline_raw if isinstance(timeline_raw, dict) else {"tracks": []}, + textBinItems=[], + ) -@router.patch("/projects/{project_id}") + +@router.patch("/projects/{project_id}", response_model=ProjectMutationResponse) async def rename_project( - project_id: str, body: RenameProjectRequest, user: SessionUser = Depends(get_current_user) -) -> dict: + body: RenameProjectRequest, + project_id: UUID = Path(...), + user: SessionUser = Depends(get_current_user), +) -> ProjectMutationResponse: pool = await get_db_pool() async with pool.acquire() as conn: row = await conn.fetchrow( @@ -165,7 +186,7 @@ async def rename_project( RETURNING id """, body.name, - project_id, + str(project_id), user.user_id, ) @@ -175,11 +196,11 @@ async def rename_project( detail="Project not found", ) - return {"ok": True, "project_id": str(row["id"])} + return ProjectMutationResponse(ok=True, project_id=str(row["id"])) -@router.get("/storage") -async def get_storage(user: SessionUser = Depends(get_current_user)) -> dict: +@router.get("/storage", response_model=StorageResponse) +async def get_storage(user: SessionUser = Depends(get_current_user)) -> StorageResponse: pool = await get_db_pool() async with pool.acquire() as conn: used_bytes = await conn.fetchval( @@ -192,21 +213,22 @@ async def get_storage(user: SessionUser = Depends(get_current_user)) -> dict: """, user.user_id, ) - return { - "usedBytes": int(used_bytes or 0), - "limitBytes": 2 * 1024 * 1024 * 1024, # 2 GB per user (adjust per plan later) - } + return StorageResponse( + usedBytes=int(used_bytes or 0), + limitBytes=_DEFAULT_STORAGE_LIMIT_BYTES, + ) @router.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT) async def delete_project( - project_id: str, user: SessionUser = Depends(get_current_user) + project_id: UUID = Path(...), + user: SessionUser = Depends(get_current_user), ) -> None: pool = await get_db_pool() async with pool.acquire() as conn: result = await conn.execute( "DELETE FROM projects WHERE id = $1 AND user_id = $2", - project_id, + str(project_id), user.user_id, ) diff --git a/backend/api/schema.py b/backend/api/schema.py index eecfc26f..0cf834cc 100644 --- a/backend/api/schema.py +++ b/backend/api/schema.py @@ -1,12 +1,19 @@ +from datetime import datetime +from typing import Any + from pydantic import BaseModel, ConfigDict, Field class CreateProjectRequest(BaseModel): - name: str = Field(min_length=1, max_length=255, description="The name of the project") + name: str = Field( + min_length=1, max_length=255, description="The name of the project" + ) class RenameProjectRequest(BaseModel): - name: str = Field(min_length=1, max_length=255, description="The new name for the project") + name: str = Field( + min_length=1, max_length=255, description="The new name for the project" + ) class TimelineTrackPayload(BaseModel): @@ -14,10 +21,52 @@ class TimelineTrackPayload(BaseModel): # scrubber fields) is passed through and stored verbatim as JSONB. model_config = ConfigDict(extra="allow") - scrubbers: list[dict] = Field(default_factory=list, description="Track scrubbers list") + scrubbers: list[dict] = Field( + default_factory=list, description="Track scrubbers list" + ) class TimelinePayload(BaseModel): model_config = ConfigDict(extra="allow") - tracks: list[TimelineTrackPayload] = Field(..., description="Timeline tracks payload") + tracks: list[TimelineTrackPayload] = Field( + ..., description="Timeline tracks payload" + ) + + +# ─── Response models ───────────────────────────────────────────────────────── + + +class ProjectMeta(BaseModel): + id: str + user_id: str + name: str + created_at: datetime + updated_at: datetime + + +class ProjectListResponse(BaseModel): + projects: list[ProjectMeta] + total: int + limit: int + offset: int + + +class ProjectCreateResponse(BaseModel): + project: ProjectMeta + + +class ProjectStateResponse(BaseModel): + project: ProjectMeta + timeline: dict[str, Any] + textBinItems: list[dict[str, Any]] + + +class ProjectMutationResponse(BaseModel): + ok: bool + project_id: str + + +class StorageResponse(BaseModel): + usedBytes: int + limitBytes: int diff --git a/backend/auth/routes.py b/backend/auth/routes.py index b9772f19..34fbddca 100644 --- a/backend/auth/routes.py +++ b/backend/auth/routes.py @@ -24,6 +24,7 @@ def _extract_session_token_from_cookies(request: Request) -> str | None: token = decoded_cookie.split(".", 1)[0] return token or None + router = APIRouter(prefix="/auth", tags=["auth"]) @@ -36,7 +37,9 @@ async def get_current_user( """ session_token = _extract_session_token_from_cookies(request) if not session_token: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated") + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated" + ) pool = await get_db_pool() async with pool.acquire() as conn: @@ -52,7 +55,10 @@ async def get_current_user( if row is None: logger.warning("Invalid or expired session token attempted") - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid or expired session") + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired session", + ) return SessionUser( user_id=str(row["id"]), diff --git a/backend/main.py b/backend/main.py index 17ab8f69..0e6bd18c 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,5 +1,6 @@ import logging import os +from collections.abc import AsyncIterator from contextlib import asynccontextmanager from pathlib import Path @@ -13,7 +14,7 @@ from ai.routes import router as ai_router # noqa: E402 from api.routes import router as api_router # noqa: E402 from auth.routes import router as auth_router # noqa: E402 -from db import close_db_pool +from db import close_db_pool # noqa: E402 logging.basicConfig( level=logging.INFO, @@ -23,7 +24,7 @@ @asynccontextmanager -async def lifespan(app: FastAPI): +async def lifespan(app: FastAPI) -> AsyncIterator[None]: logger.info("Starting up") yield logger.info("Shutting down β€” closing DB pool") diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index ec147f46..1f14cf5b 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -6,6 +6,19 @@ services: environment: POSTGRES_DB: videoeditor POSTGRES_USER: videoeditor - POSTGRES_PASSWORD: videoeditor + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-videoeditor} ports: - "5432:5432" + volumes: + # Persist data across `docker compose down` so dev DBs survive restarts. + - postgres_data_dev:/var/lib/postgresql/data + # Auto-run migrations on first init only (postgres entrypoint convention). + - ./migrations:/docker-entrypoint-initdb.d:ro + healthcheck: + test: ["CMD-SHELL", "pg_isready -U videoeditor -d videoeditor"] + interval: 5s + timeout: 3s + retries: 5 + +volumes: + postgres_data_dev: diff --git a/docker-compose.yml b/docker-compose.yml index 31a94756..b57259bd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,13 @@ services: - ./nginx.conf:/etc/nginx/nginx.conf - /etc/letsencrypt:/etc/letsencrypt:ro # Mount certs read-only depends_on: - - frontend - - backend + frontend: + condition: service_healthy + backend: + condition: service_healthy + fastapi: + condition: service_healthy + restart: unless-stopped frontend: build: @@ -28,6 +33,17 @@ services: # - "3000:3000" depends_on: - backend + healthcheck: + test: + [ + "CMD-SHELL", + 'node -e "require(''http'').get(''http://127.0.0.1:3000/'', res => process.exit(res.statusCode < 500 ? 0 : 1)).on(''error'', () => process.exit(1))"', + ] + interval: 15s + timeout: 5s + retries: 5 + start_period: 30s + restart: unless-stopped backend: build: @@ -45,6 +61,13 @@ services: mem_limit: 2g memswap_limit: 2g shm_size: 1g + healthcheck: + test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8000/health"] + interval: 15s + timeout: 5s + retries: 5 + start_period: 30s + restart: unless-stopped fastapi: build: @@ -57,3 +80,10 @@ services: NODE_ENV: production HOST: 0.0.0.0 PORT: 3000 + healthcheck: + test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/beep"] + interval: 15s + timeout: 5s + retries: 5 + start_period: 20s + restart: unless-stopped diff --git a/eslint.config.js b/eslint.config.js index 68241cef..a9249e90 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -6,6 +6,20 @@ import reactHooksPlugin from "eslint-plugin-react-hooks"; import remotionPlugin from "@remotion/eslint-plugin"; export default [ + { + ignores: [ + ".react-router/**", + "build/**", + "dist/**", + "out/**", + "public/**", + "node_modules/**", + "coverage/**", + "backend/.venv/**", + "backend/**/__pycache__/**", + "**/*.min.js", + ], + }, eslint.configs.recommended, { files: ["**/*.{ts,tsx}"], diff --git a/migrations/000_betterauth.sql b/migrations/000_betterauth.sql index a8c4cce3..b91672c4 100644 --- a/migrations/000_betterauth.sql +++ b/migrations/000_betterauth.sql @@ -1,7 +1,7 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto; -- BetterAuth: user table -CREATE TABLE "user" ( +CREATE TABLE IF NOT EXISTS "user" ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, @@ -12,7 +12,7 @@ CREATE TABLE "user" ( ); -- BetterAuth: session table -CREATE TABLE session ( +CREATE TABLE IF NOT EXISTS session ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, "expiresAt" TIMESTAMPTZ NOT NULL, token TEXT NOT NULL UNIQUE, @@ -24,7 +24,7 @@ CREATE TABLE session ( ); -- BetterAuth: account table -CREATE TABLE account ( +CREATE TABLE IF NOT EXISTS account ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, "accountId" TEXT NOT NULL, "providerId" TEXT NOT NULL, @@ -41,7 +41,7 @@ CREATE TABLE account ( ); -- BetterAuth: verification table -CREATE TABLE verification ( +CREATE TABLE IF NOT EXISTS verification ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, identifier TEXT NOT NULL, value TEXT NOT NULL, @@ -77,37 +77,44 @@ BEGIN END; $$ LANGUAGE plpgsql; +DROP TRIGGER IF EXISTS trg_user_updated_at ON "user"; CREATE TRIGGER trg_user_updated_at BEFORE UPDATE ON "user" FOR EACH ROW EXECUTE FUNCTION set_updated_at_camel(); +DROP TRIGGER IF EXISTS trg_session_updated_at ON session; CREATE TRIGGER trg_session_updated_at BEFORE UPDATE ON session FOR EACH ROW EXECUTE FUNCTION set_updated_at_camel(); +DROP TRIGGER IF EXISTS trg_account_updated_at ON account; CREATE TRIGGER trg_account_updated_at BEFORE UPDATE ON account FOR EACH ROW EXECUTE FUNCTION set_updated_at_camel(); +DROP TRIGGER IF EXISTS trg_verification_updated_at ON verification; CREATE TRIGGER trg_verification_updated_at BEFORE UPDATE ON verification FOR EACH ROW EXECUTE FUNCTION set_updated_at_camel(); +DROP TRIGGER IF EXISTS trg_user_set_id ON "user"; CREATE TRIGGER trg_user_set_id BEFORE INSERT ON "user" FOR EACH ROW EXECUTE FUNCTION set_user_id(); +DROP TRIGGER IF EXISTS trg_verification_set_id ON verification; CREATE TRIGGER trg_verification_set_id BEFORE INSERT ON verification FOR EACH ROW EXECUTE FUNCTION set_verification_id(); -CREATE INDEX idx_session_user_id ON session("userId"); -CREATE INDEX idx_account_user_id ON account("userId"); -CREATE INDEX idx_account_provider ON account("providerId", "accountId"); -CREATE INDEX idx_verification_identifier ON verification(identifier); +CREATE INDEX IF NOT EXISTS idx_session_user_id ON session("userId"); +CREATE INDEX IF NOT EXISTS idx_session_token ON session(token); +CREATE INDEX IF NOT EXISTS idx_account_user_id ON account("userId"); +CREATE INDEX IF NOT EXISTS idx_account_provider ON account("providerId", "accountId"); +CREATE INDEX IF NOT EXISTS idx_verification_identifier ON verification(identifier); diff --git a/migrations/001_projects.sql b/migrations/001_projects.sql index 94aea33d..506b74b7 100644 --- a/migrations/001_projects.sql +++ b/migrations/001_projects.sql @@ -1,5 +1,5 @@ -- Projects table with timeline persistence. -CREATE TABLE projects ( +CREATE TABLE IF NOT EXISTS projects ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, name TEXT NOT NULL, @@ -16,13 +16,14 @@ BEGIN END; $$ LANGUAGE plpgsql; +DROP TRIGGER IF EXISTS trg_projects_updated_at ON projects; CREATE TRIGGER trg_projects_updated_at BEFORE UPDATE ON projects FOR EACH ROW EXECUTE FUNCTION set_updated_at_snake(); -CREATE INDEX idx_projects_user_created_at +CREATE INDEX IF NOT EXISTS idx_projects_user_created_at ON projects(user_id, created_at DESC); -CREATE INDEX idx_projects_user_updated_at +CREATE INDEX IF NOT EXISTS idx_projects_user_updated_at ON projects(user_id, updated_at DESC); diff --git a/migrations/002_assets.sql b/migrations/002_assets.sql index e4b4dac0..b530125f 100644 --- a/migrations/002_assets.sql +++ b/migrations/002_assets.sql @@ -7,19 +7,20 @@ -- ─── Shared R2 objects (dedup store) ───────────────────────────────────────── -CREATE TABLE r2_objects ( +CREATE TABLE IF NOT EXISTS r2_objects ( content_hash TEXT PRIMARY KEY, -- SHA-256 hex (64 chars) r2_key TEXT NOT NULL UNIQUE, -- e.g. objects/abc123.mp4 file_size BIGINT NOT NULL, mime_type TEXT NOT NULL, - status TEXT NOT NULL DEFAULT 'pending', -- pending | ready + status TEXT NOT NULL DEFAULT 'pending' + CHECK (status IN ('pending', 'ready')), created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- ─── Per-user asset records ─────────────────────────────────────────────────── -CREATE TABLE assets ( +CREATE TABLE IF NOT EXISTS assets ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE, project_id UUID REFERENCES projects(id) ON DELETE SET NULL, @@ -32,18 +33,21 @@ CREATE TABLE assets ( duration_seconds FLOAT, width INT, height INT, - status TEXT NOT NULL DEFAULT 'pending', -- pending | uploading | ready | failed + status TEXT NOT NULL DEFAULT 'pending' + CHECK (status IN ('pending', 'uploading', 'ready', 'failed')), public_url TEXT, -- legacy URL field (no longer required for auth-protected access) created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), deleted_at TIMESTAMPTZ ); +DROP TRIGGER IF EXISTS trg_assets_updated_at ON assets; CREATE TRIGGER trg_assets_updated_at BEFORE UPDATE ON assets FOR EACH ROW EXECUTE FUNCTION set_updated_at_snake(); +DROP TRIGGER IF EXISTS trg_r2_objects_updated_at ON r2_objects; CREATE TRIGGER trg_r2_objects_updated_at BEFORE UPDATE ON r2_objects FOR EACH ROW @@ -51,14 +55,14 @@ CREATE TRIGGER trg_r2_objects_updated_at -- ─── Indexes ────────────────────────────────────────────────────────────────── -CREATE INDEX idx_assets_user_created_at +CREATE INDEX IF NOT EXISTS idx_assets_user_created_at ON assets(user_id, created_at DESC); -CREATE INDEX idx_assets_user_project_created_at +CREATE INDEX IF NOT EXISTS idx_assets_user_project_created_at ON assets(user_id, project_id, created_at DESC); -CREATE INDEX idx_assets_status +CREATE INDEX IF NOT EXISTS idx_assets_status ON assets(user_id, status) WHERE deleted_at IS NULL; -CREATE INDEX idx_assets_content_hash +CREATE INDEX IF NOT EXISTS idx_assets_content_hash ON assets(content_hash) WHERE deleted_at IS NULL; diff --git a/package.json b/package.json index 792136ce..0a059990 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,11 @@ "dev": "react-router dev --host 0.0.0.0", "start": "react-router-serve ./build/server/index.js", "typecheck": "react-router typegen && tsc", - "lint": "eslint . --ext .ts,.tsx", + "lint": "eslint \"**/*.{ts,tsx,js,mjs,cjs}\"", + "lint:fix": "eslint \"**/*.{ts,tsx,js,mjs,cjs}\" --fix", "format": "prettier --write .", - "format:check": "prettier --check ." + "format:check": "prettier --check .", + "check": "pnpm typecheck && pnpm lint && pnpm format:check" }, "dependencies": { "@radix-ui/react-alert-dialog": "^1.1.15", diff --git a/tsconfig.json b/tsconfig.json index a6b90b7c..da3da7d7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ "noEmit": true, "resolveJsonModule": true, "skipLibCheck": true, - "strict": true + "strict": true, + "noFallthroughCasesInSwitch": true } } From 9ca22c962fd287948e63694a0345d48be848f12f Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Sun, 3 May 2026 13:47:12 +0530 Subject: [PATCH 09/23] refactor: enhance ChatBox hydration logic --- .eslintignore | 8 ---- app/components/chat/ChatBox.tsx | 65 +++++++++++++++++++++++---------- app/routes/home.tsx | 21 ++++++++--- app/schemas/llm.ts | 19 +++++++--- vite.config.ts | 10 +++++ 5 files changed, 83 insertions(+), 40 deletions(-) delete mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index e0a3eaba..00000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -.react-router/ -build/ -dist/ -out/ -public/ -node_modules/ -coverage/ -*.min.js diff --git a/app/components/chat/ChatBox.tsx b/app/components/chat/ChatBox.tsx index a6af7f73..f589f954 100644 --- a/app/components/chat/ChatBox.tsx +++ b/app/components/chat/ChatBox.tsx @@ -226,22 +226,41 @@ export function ChatBox({ } }; - const [tabs, setTabs] = useState(() => { + // Tabs init must NOT touch localStorage or Date.now() during render β€” those values diverge + // between server SSR (no window, no real time) and the first client render, causing hydration + // mismatches. Start with a deterministic empty list and hydrate inside useEffect below. + const [tabs, setTabs] = useState([]); + const [activeTabId, setActiveTabId] = useState(""); + const [isTabsHydrated, setIsTabsHydrated] = useState(false); + + useEffect(() => { const existing = loadTabs(); - if (existing.length) return existing; - return [{ id: Date.now().toString(), name: "Chat 1", messages: [], timelineSnapshot: null, createdAt: Date.now() }]; - }); - const [activeTabId, setActiveTabId] = useState(() => { - if (typeof window !== "undefined") { - try { - const stored = window.localStorage.getItem(ACTIVE_TAB_KEY); - if (stored) return stored; - } catch { - // localStorage may throw on quota or privacy-mode browsers; fall through. - } + let storedActive = ""; + try { + storedActive = window.localStorage.getItem(ACTIVE_TAB_KEY) ?? ""; + } catch { + // ignore } - return tabs[0]?.id || ""; - }); + if (existing.length) { + setTabs(existing); + setActiveTabId(storedActive && existing.some((t) => t.id === storedActive) ? storedActive : existing[0].id); + } else { + const fresh: ChatTab = { + id: `${Date.now()}`, + name: "Chat 1", + messages: [], + timelineSnapshot: null, + createdAt: Date.now(), + }; + setTabs([fresh]); + setActiveTabId(fresh.id); + } + setIsTabsHydrated(true); + // One-shot hydration: read localStorage exactly once on mount. ACTIVE_TAB_KEY and loadTabs + // are stable closures over PROJECT_ID and don't need to be re-run on change. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const activeTab = tabs.find((t) => t.id === activeTabId) || tabs[0]; useEffect(() => { @@ -289,11 +308,14 @@ export function ChatBox({ }; useEffect(() => { + // Don't write before the hydration effect has populated tabs β€” otherwise the empty initial + // state would overwrite real saved tabs in localStorage. + if (!isTabsHydrated) return; persistTabs(tabs); // persistTabs is a closure that reads activeTabId; we deliberately re-run on tabs OR // activeTabId so the persisted active-tab pointer stays in sync. // eslint-disable-next-line react-hooks/exhaustive-deps - }, [tabs, activeTabId]); + }, [tabs, activeTabId, isTabsHydrated]); useEffect(() => { const updateWidth = () => { @@ -490,17 +512,20 @@ export function ChatBox({ assistant_message: "I received an invalid response format from AI.", } satisfies z.infer; const aiParsed = AiResponseSchema.safeParse(response?.data); + if (!aiParsed.success && import.meta.env?.DEV) { + console.warn("AI response failed schema validation:", aiParsed.error.format(), response?.data); + } + const hasContent = aiParsed.success && (aiParsed.data.function_call || aiParsed.data.assistant_message); const functionCallResponse: z.infer = - aiParsed.success && (aiParsed.data.function_call || aiParsed.data.assistant_message) - ? aiParsed.data - : fallbackResponse; + aiParsed.success && hasContent ? aiParsed.data : fallbackResponse; let aiResponseContent = ""; - // Handle the function call (universal v2: {function_name, arguments}) + // Backend's function_call is flat: { function_name, ...arg fields }. Read fn name, treat the + // rest of the object as the args bag β€” per-tool zod schemas tolerate the extra function_name. if (functionCallResponse.function_call) { const { function_call } = functionCallResponse; const fn = function_call.function_name; - const args = function_call.arguments || {}; + const args: Record = function_call; const toNumber = (val: unknown): number | undefined => { if (typeof val === "number") return Number.isFinite(val) ? val : undefined; diff --git a/app/routes/home.tsx b/app/routes/home.tsx index a9c6bdb6..16341823 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -214,13 +214,22 @@ export default function TimelineEditor() { const { data } = await axios.get(`/backend/projects/${encodeURIComponent(projectId)}`, { withCredentials: true, }); + if (!isMounted) return; + // Set the project name from the raw response without gating on the strict schema β€” + // older saves predate the timeline shape and we don't want a parse failure to leave + // the topbar showing "Project". The schema is still applied to the timeline below. + const rawName: unknown = data?.project?.name; + if (typeof rawName === "string" && rawName.length > 0) { + setProjectName(rawName); + } const parsed = ProjectStateResponseSchema.safeParse(data); - if (!parsed.success || !isMounted) return; - setProjectName(parsed.data.project.name); - const timeline = parsed.data.timeline; - // Server may return a legacy/loose timeline object; only restore when it parses to the - // strict TimelineState shape. Otherwise leave the default empty timeline in place. - const strictTimeline = TimelineStateSchema.safeParse(timeline); + if (!parsed.success) { + if (import.meta.env?.DEV) { + console.warn("Project response failed schema validation:", parsed.error.format()); + } + return; + } + const strictTimeline = TimelineStateSchema.safeParse(parsed.data.timeline); if (strictTimeline.success) { setTimelineFromServer(strictTimeline.data as TimelineState); } diff --git a/app/schemas/llm.ts b/app/schemas/llm.ts index 583e2f7c..c6c4d1be 100644 --- a/app/schemas/llm.ts +++ b/app/schemas/llm.ts @@ -16,14 +16,21 @@ export const optNumberish = opt(numberish); export const optSeconds = opt(seconds); export const optString = opt(z.string()); -export const FunctionCallSchema = z.object({ - function_name: z.string(), - arguments: z.record(z.string(), z.unknown()).default({}), -}); +// Backend (FunctionCallResponse in backend/ai/schema.py) emits the function call as a flat object: +// { function_name: "LLMMoveScrubber", scrubber_id: "...", new_position_seconds: 5, ... } +// We accept any extra keys via passthrough and treat the whole object (minus function_name) as the +// args bag β€” per-tool argument schemas (MoveScrubberArgsSchema, etc.) can safeParse it directly. +export const FunctionCallSchema = z + .object({ + function_name: z.string(), + }) + .catchall(z.unknown()); +// `function_call` and `assistant_message` use `nullish()` because the backend serializes the +// "no result for this field" case as JSON `null`, not an absent key. export const AiResponseSchema = z.object({ - function_call: FunctionCallSchema.optional(), - assistant_message: z.string().optional(), + function_call: FunctionCallSchema.nullish(), + assistant_message: z.string().nullish(), }); export const MoveScrubberArgsSchema = z.object({ diff --git a/vite.config.ts b/vite.config.ts index 010f5c03..ef48e34d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,6 +5,16 @@ import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ plugins: [tailwindcss(), reactRouter(), tsconfigPaths()], + // Force a single instance of React/React-DOM. Without dedupe, Radix UI's peer dependency on + // React can lead Vite's optimizer to ship two copies (each with its own dispatcher), which + // surfaces as "Invalid hook call" / "Cannot read properties of null (reading 'useMemo')" the + // first time a route loads a Radix component such as + onUpdate({ ...scrubber, volume: parseFloat(e.target.value), muted: false }) + } + className="w-full h-1 accent-primary cursor-pointer" + /> +

+ {scrubber.muted ? "muted" : `${Math.round((scrubber.volume ?? 1) * 100)}%`} +
+
+ )} + + {/* Speed (audio/video only) */} + {hasAudio && ( +
+
Speed
+
+ {SPEED_OPTIONS.map((rate) => ( + + ))} +
+
+ )} + + {/* Player position (non-audio) */} + {scrubber.mediaType !== "audio" && ( +
+
Position
+
+ {( + [ + { label: "X", key: "left_player" as const }, + { label: "Y", key: "top_player" as const }, + { label: "W", key: "width_player" as const }, + { label: "H", key: "height_player" as const }, + ] as { label: string; key: keyof ScrubberState }[] + ).map(({ label, key }) => ( + + ))} +
+
+ )} +
+
+ ); +}; diff --git a/app/components/timeline/Scrubber.tsx b/app/components/timeline/Scrubber.tsx index bd88eb5f..38d52c6e 100644 --- a/app/components/timeline/Scrubber.tsx +++ b/app/components/timeline/Scrubber.tsx @@ -1,6 +1,6 @@ import React, { useState, useRef, useCallback, useEffect, useMemo } from "react"; import { DEFAULT_TRACK_HEIGHT, type ScrubberState, type Transition } from "./types"; -import { Trash2, Group, Ungroup, Archive } from "lucide-react"; +import { Trash2, Group, Ungroup, Archive, Volume2, VolumeX } from "lucide-react"; export interface SnapConfig { enabled: boolean; @@ -67,6 +67,7 @@ export const Scrubber: React.FC = ({ x: number; y: number; }>({ visible: false, x: 0, y: 0 }); + const [showSpeedMenu, setShowSpeedMenu] = useState(false); const MINIMUM_WIDTH = 20; @@ -411,6 +412,16 @@ export const Scrubber: React.FC = ({ [onUngroupScrubber, scrubber.id], ); + // Handle speed change + const handleSpeedChange = useCallback( + (rate: number) => { + onUpdate({ ...scrubber, playbackRate: rate }); + setContextMenu({ visible: false, x: 0, y: 0 }); + setShowSpeedMenu(false); + }, + [onUpdate, scrubber], + ); + // Handle context menu move to media bin action const handleContextMenuMoveToMediaBin = useCallback( (e: React.MouseEvent) => { @@ -476,6 +487,18 @@ export const Scrubber: React.FC = ({ {scrubber.name}
+ {/* Speed / mute badges */} +
+ {scrubber.muted && ( +
M
+ )} + {scrubber.playbackRate !== undefined && scrubber.playbackRate !== 1 && ( +
+ {scrubber.playbackRate}x +
+ )} +
+ {/* Left resize handle - more visible */} {scrubber.mediaType !== "video" && scrubber.mediaType !== "audio" && @@ -565,6 +588,64 @@ export const Scrubber: React.FC = ({ )} + {/* Volume control β€” video and audio only */} + {(scrubber.mediaType === "video" || scrubber.mediaType === "audio") && ( +
+
+ Volume + +
+ onUpdate({ ...scrubber, volume: parseFloat(e.target.value), muted: false })} + className="w-full h-1 accent-primary cursor-pointer" + onClick={(e) => e.stopPropagation()} + /> +
+ {scrubber.muted ? "muted" : `${Math.round((scrubber.volume ?? 1) * 100)}%`} +
+
+ )} + + {/* Speed submenu β€” video and audio only */} + {(scrubber.mediaType === "video" || scrubber.mediaType === "audio") && ( +
+ + {showSpeedMenu && ( +
setShowSpeedMenu(true)} + onMouseLeave={() => setShowSpeedMenu(false)}> + {[0.25, 0.5, 1, 1.5, 2, 4].map((rate) => ( + + ))} +
+ )} +
+ )} + +
+ +
+ {/* Resolution */} +
+
Resolution
+
+ + +
+ {!autoSize && ( +
+ { + setWidthInput(e.target.value); + const n = Number(e.target.value); + if (isFinite(n) && n > 0) setWidth(n); + }} + onBlur={() => { + const n = Number(widthInput); + const safe = isFinite(n) && n > 0 ? n : 1920; + setWidth(safe); + setWidthInput(String(safe)); + }} + className="h-7 text-xs" + placeholder="1920" + /> + Γ— + { + setHeightInput(e.target.value); + const n = Number(e.target.value); + if (isFinite(n) && n > 0) setHeight(n); + }} + onBlur={() => { + const n = Number(heightInput); + const safe = isFinite(n) && n > 0 ? n : 1080; + setHeight(safe); + setHeightInput(String(safe)); + }} + className="h-7 text-xs" + placeholder="1080" + /> +
+ )} +
+ + + + {/* Codec */} +
+
Format
+ +
Output: {outputExt}
+
+ + + + {/* Quality */} +
+
Quality
+
+ {(Object.keys(QUALITY_LABELS) as QualityPreset[]).map((preset) => ( + + ))} +
+
+ CRF {QUALITY_CRF[quality]} β€” {quality === "lossless" ? "no quality loss" : quality === "web" ? "optimized for streaming" : quality === "high" ? "visually lossless" : "good balance of size/quality"} +
+
+ + + + {/* Render progress */} + {isRendering && ( +
+
Progress
+ +
{renderProgress}%
+
+ )} +
+ + {/* Export button */} +
+ + {isEmpty && ( +

Add clips to the timeline first

+ )} +
+
+ ); +} diff --git a/app/components/editor/InspectorPanel.tsx b/app/components/editor/InspectorPanel.tsx new file mode 100644 index 00000000..724209ee --- /dev/null +++ b/app/components/editor/InspectorPanel.tsx @@ -0,0 +1,164 @@ +import React from "react"; +import { Volume2, VolumeX, X, MousePointerClick } from "lucide-react"; +import { Separator } from "~/components/ui/separator"; +import { type ScrubberState } from "~/components/timeline/types"; + +interface InspectorPanelProps { + selectedScrubberIds: string[]; + getAllScrubbers: () => ScrubberState[]; + pixelsPerSecond: number; + onUpdate: (s: ScrubberState) => void; + onClose: () => void; +} + +const SPEED_OPTIONS = [0.25, 0.5, 1, 1.5, 2, 4]; + +const MEDIA_TYPE_LABELS: Record = { + video: "Video", + audio: "Audio", + image: "Image", + text: "Text", + groupped_scrubber: "Group", +}; + +export function InspectorPanel({ selectedScrubberIds, getAllScrubbers, pixelsPerSecond, onUpdate, onClose }: InspectorPanelProps) { + const scrubber = selectedScrubberIds.length === 1 + ? getAllScrubbers().find((s) => s.id === selectedScrubberIds[0]) ?? null + : null; + + return ( +
+ {/* Header */} +
+ Inspector + +
+ + {!scrubber ? ( +
+ +

Select a clip on the timeline to inspect its properties.

+
+ ) : ( +
+ {/* Identity */} +
+
Clip
+
{scrubber.name}
+
+ {MEDIA_TYPE_LABELS[scrubber.mediaType] ?? scrubber.mediaType} +
+
+ + + + {/* Timing */} +
+
Timing
+
+ {[ + { label: "Start", val: (scrubber.left / pixelsPerSecond).toFixed(2) + "s" }, + { label: "End", val: ((scrubber.left + scrubber.width) / pixelsPerSecond).toFixed(2) + "s" }, + { label: "Duration", val: (scrubber.width / pixelsPerSecond).toFixed(2) + "s" }, + ].map(({ label, val }) => ( +
+
{val}
+
{label}
+
+ ))} +
+
+ + + + {/* Volume (audio/video only) */} + {(scrubber.mediaType === "video" || scrubber.mediaType === "audio") && ( + <> +
+
+
Volume
+ +
+ onUpdate({ ...scrubber, volume: parseFloat(e.target.value), muted: false })} + className="w-full h-1 accent-primary cursor-pointer" + /> +
+ 0% + + {scrubber.muted ? "Muted" : `${Math.round((scrubber.volume ?? 1) * 100)}%`} + + 100% +
+
+ + + + {/* Speed */} +
+
Speed
+
+ {SPEED_OPTIONS.map((rate) => ( + + ))} +
+
+ + + + )} + + {/* Position in player (non-audio) */} + {scrubber.mediaType !== "audio" && ( +
+
Player Position
+
+ {( + [ + { label: "X", key: "left_player" as const }, + { label: "Y", key: "top_player" as const }, + { label: "Width", key: "width_player" as const }, + { label: "Height", key: "height_player" as const }, + ] as { label: string; key: keyof ScrubberState }[] + ).map(({ label, key }) => ( +
+
{label}
+ { + const val = parseInt(e.target.value, 10); + if (!isNaN(val)) onUpdate({ ...scrubber, [key]: val }); + }} + className="w-full h-6 px-2 text-[11px] bg-muted/30 border border-border/50 rounded focus:outline-none focus:border-primary font-mono" + /> +
+ ))} +
+
+ )} +
+ )} +
+ ); +} diff --git a/app/hooks/useRenderer.ts b/app/hooks/useRenderer.ts index 2020b973..99c3ceb4 100644 --- a/app/hooks/useRenderer.ts +++ b/app/hooks/useRenderer.ts @@ -1,10 +1,17 @@ import { useState, useCallback, useRef } from "react"; import axios from "axios"; +import { toast } from "sonner"; import { type TimelineDataItem, type TimelineState, FPS } from "~/components/timeline/types"; +export interface RenderOptions { + codec?: "h264" | "h265" | "vp9"; + crf?: number; +} + +const RENDER_TOAST_ID = "kimu-render"; + export const useRenderer = () => { const [isRendering, setIsRendering] = useState(false); - const [renderStatus, setRenderStatus] = useState(""); const [renderProgress, setRenderProgress] = useState(0); const evtSourceRef = useRef(null); @@ -15,21 +22,28 @@ export const useRenderer = () => { compositionWidth: number | null, compositionHeight: number | null, getPixelsPerSecond: () => number, + options?: RenderOptions, ) => { - // Cancel any existing render stream if (evtSourceRef.current) { evtSourceRef.current.close(); evtSourceRef.current = null; } + if (timeline.tracks.length === 0 || timeline.tracks.every((t) => t.scrubbers.length === 0)) { + toast.error("Nothing to render β€” add clips to the timeline first"); + return; + } + setIsRendering(true); setRenderProgress(0); - setRenderStatus("Connecting to render server..."); + toast.loading("Connecting to render server…", { id: RENDER_TOAST_ID }); try { await axios.get("/renderer/health", { timeout: 5000 }); } catch { - setRenderStatus("Error: Cannot connect to render server. Run: pnpm dlx tsx app/videorender/videorender.ts"); + toast.error("Cannot reach render server. Start it with: pnpm dlx tsx app/videorender/videorender.ts", { + id: RENDER_TOAST_ID, + }); setIsRendering(false); return; } @@ -42,7 +56,6 @@ export const useRenderer = () => { .flatMap((d) => d.scrubbers) .reduce((max, s) => (s.media_width && s.media_width > max ? s.media_width : max), 0) || 1920; } - if (compositionHeight === null) { compositionHeight = timelineData @@ -50,13 +63,7 @@ export const useRenderer = () => { .reduce((max, s) => (s.media_height && s.media_height > max ? s.media_height : max), 0) || 1080; } - if (timeline.tracks.length === 0 || timeline.tracks.every((t) => t.scrubbers.length === 0)) { - setRenderStatus("Error: No timeline data to render"); - setIsRendering(false); - return; - } - - setRenderStatus("Queuing render job..."); + toast.loading("Queuing render job…", { id: RENDER_TOAST_ID }); let jobId: string; try { @@ -68,39 +75,28 @@ export const useRenderer = () => { timelineData.flatMap((d) => d.scrubbers).reduce((max, s) => (s.endTime > max ? s.endTime : max), 0) * FPS, ), getPixelsPerSecond: getPixelsPerSecond(), + codec: options?.codec ?? "h264", + crf: options?.crf ?? 28, }); jobId = data.jobId; } catch (err) { - if (axios.isAxiosError(err)) { - if (err.response?.status === 500) { - setRenderStatus("Error: Server error. Check render server logs."); - } else if (err.request) { - setRenderStatus("Error: Cannot connect to render server."); - } else { - setRenderStatus(`Error: ${err.message}`); - } - } else { - setRenderStatus("Error: Failed to queue render job"); - } + const msg = axios.isAxiosError(err) && err.response?.status === 500 + ? "Server error β€” check render server logs" + : "Failed to queue render job"; + toast.error(msg, { id: RENDER_TOAST_ID }); setIsRendering(false); return; } - setRenderStatus("Render queued β€” waiting for worker..."); + toast.loading("Render queued β€” waiting for worker…", { id: RENDER_TOAST_ID, description: "0%" }); const evtSource = new EventSource(`/renderer/render/${jobId}/events`); evtSourceRef.current = evtSource; - const finish = (clearAfterMs?: number) => { + const finish = () => { evtSource.close(); evtSourceRef.current = null; setIsRendering(false); - if (clearAfterMs !== undefined) { - setTimeout(() => { - setRenderStatus(""); - setRenderProgress(0); - }, clearAfterMs); - } }; evtSource.onmessage = (e: MessageEvent) => { @@ -119,36 +115,30 @@ export const useRenderer = () => { if (event.type === "progress") { setRenderProgress(event.percent); - setRenderStatus(`Rendering... ${event.percent}%`); + toast.loading("Rendering…", { id: RENDER_TOAST_ID, description: `${event.percent}%` }); } else if (event.type === "completed") { setRenderProgress(100); - setRenderStatus("Downloading..."); + toast.success("Render complete β€” download starting", { id: RENDER_TOAST_ID }); const link = document.createElement("a"); link.href = event.downloadUrl; link.setAttribute("download", "rendered-video.mp4"); document.body.appendChild(link); link.click(); link.remove(); - setRenderStatus("Render complete!"); - finish(8000); + finish(); } else if (event.type === "failed" || event.type === "error") { - setRenderStatus(`Error: ${event.message}`); - finish(8000); + toast.error(`Render failed: ${event.message}`, { id: RENDER_TOAST_ID }); + finish(); } }; evtSource.onerror = () => { - setRenderStatus("Error: Lost connection to render server"); - finish(8000); + toast.error("Lost connection to render server", { id: RENDER_TOAST_ID }); + finish(); }; }, [], ); - return { - isRendering, - renderStatus, - renderProgress, - handleRenderVideo, - }; + return { isRendering, renderProgress, handleRenderVideo }; }; diff --git a/app/routes/home.tsx b/app/routes/home.tsx index 09a570fb..5dc4339e 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -5,18 +5,18 @@ import { Play, Pause, Upload, - Download, Settings, Plus, Minus, Scissors, - Save as SaveIcon, CornerUpLeft, CornerUpRight, File, Type, BetweenVerticalEnd, Bot, + SlidersHorizontal, + Clapperboard, } from "lucide-react"; // Custom video controls @@ -25,8 +25,8 @@ import { MuteButton, FullscreenButton } from "~/components/ui/video-controls"; // Components import LeftPanel from "~/components/editor/LeftPanel"; import { VideoPlayer } from "~/video-compositions/VideoPlayer"; -import { RenderStatus } from "~/components/timeline/RenderStatus"; -import { ClipInspector } from "~/components/timeline/ClipInspector"; +import { InspectorPanel } from "~/components/editor/InspectorPanel"; +import { ExportPanel } from "~/components/editor/ExportPanel"; import { TimelineRuler } from "~/components/timeline/TimelineRuler"; import { TimelineTracks } from "~/components/timeline/TimelineTracks"; import { Button } from "~/components/ui/button"; @@ -182,7 +182,8 @@ export default function TimelineEditor() { updateRulerFromPlayer, } = useRuler(playerRef, timelineWidth, getPixelsPerSecond()); - const { isRendering, renderStatus, renderProgress, handleRenderVideo } = useRenderer(); + const { isRendering, renderProgress, handleRenderVideo } = useRenderer(); + const [sidebarMode, setSidebarMode] = useState<"default" | "inspector" | "export">("default"); // Wrapper function for transition drop handler to match expected interface const handleDropTransitionOnTrackWrapper = (transition: Transition, trackId: string, dropLeftPx: number) => { @@ -252,6 +253,19 @@ export default function TimelineEditor() { const openSection = useCallback( (section: "media-bin" | "text-editor" | "transitions") => { + // If we're in a non-default mode, just switch back to default and navigate + if (sidebarMode !== "default") { + setSidebarMode("default"); + if (isSidebarCollapsed) { + leftPanelRef.current?.expand?.(); + setIsSidebarCollapsed(false); + setIsUserExpandingSidebar(true); + setTimeout(() => leftPanelRef.current?.resize?.(20), 0); + } + navigate(section); + return; + } + const isProjectRoot = /^\/project\/[^/]+\/?$/.test(location.pathname); const isActive = (section === "media-bin" && (location.pathname.includes("/media-bin") || isProjectRoot)) || @@ -278,7 +292,24 @@ export default function TimelineEditor() { } navigate(section); }, - [isSidebarCollapsed, navigate, location.pathname], + [sidebarMode, isSidebarCollapsed, navigate, location.pathname], + ); + + const openSidePanel = useCallback( + (mode: "inspector" | "export") => { + if (sidebarMode === mode) { + setSidebarMode("default"); + return; + } + setSidebarMode(mode); + if (isSidebarCollapsed) { + leftPanelRef.current?.expand?.(); + setIsSidebarCollapsed(false); + setIsUserExpandingSidebar(true); + setTimeout(() => leftPanelRef.current?.resize?.(20), 0); + } + }, + [sidebarMode, isSidebarCollapsed], ); const saveTimelineSilently = useCallback(async () => { @@ -408,22 +439,6 @@ export default function TimelineEditor() { [handleAddMediaToBin], ); - const handleRenderClick = useCallback(() => { - if (timelineData.length === 0 || timelineData.every((item) => item.scrubbers.length === 0)) { - toast.error("No timeline to render. Add some media first!"); - return; - } - - handleRenderVideo( - getTimelineData, - timeline, - isAutoSize ? null : width, - isAutoSize ? null : height, - getPixelsPerSecond, - ); - toast.info("Starting render..."); - }, [handleRenderVideo, getTimelineData, timeline, width, height, isAutoSize, timelineData, getPixelsPerSecond]); - const handleLogTimelineData = useCallback(() => { if (timelineData.length === 0) { toast.error("Timeline is empty"); @@ -706,39 +721,29 @@ export default function TimelineEditor() {

Kimu Studio

- {/* Center project name + save status */} -
+ {/* Center: project name */} +
{projectName || "Project"} - {saveStatus === "unsaved" && } - {saveStatus === "saving" && saving...}
-
- {/* Save / Import / Export */} - - + {/* Right: save status + Import */} +
+ {saveStatus === "saved" && ( + saved + )} + {saveStatus === "saving" && ( + saving… + )} + {saveStatus === "unsaved" && ( + + )} - -
@@ -778,6 +783,29 @@ export default function TimelineEditor() { title="Transitions"> + +
+ + +
- {/* Left Panel - Media Bin & Tools */} + {/* Left Panel - Media Bin, Inspector, or Export */}
- + {sidebarMode === "inspector" ? ( + setSidebarMode("default")} + /> + ) : sidebarMode === "export" ? ( + setSidebarMode("default")} + /> + ) : ( + + )}
@@ -1112,28 +1161,6 @@ export default function TimelineEditor() { onChange={handleFileInputChange} /> - {/* Clip Inspector β€” shown when exactly one clip is selected */} - {selectedScrubberIds.length === 1 && (() => { - const s = getAllScrubbers().find((sc) => sc.id === selectedScrubberIds[0]); - if (!s) return null; - return ( -
- setSelectedScrubberIds([])} - /> -
- ); - })()} - - {/* Render Status as Toast */} - {renderStatus && ( -
- -
- )}
); } diff --git a/app/videorender/videorender.ts b/app/videorender/videorender.ts index f651ff23..b4cda0b4 100644 --- a/app/videorender/videorender.ts +++ b/app/videorender/videorender.ts @@ -77,6 +77,8 @@ function createRedisConnection() { interface RenderJobData { userId: string; renderJobId: string; + codec: "h264" | "h265" | "vp9"; + crf: number; inputProps: { timelineData: unknown; durationInFrames: number; @@ -87,14 +89,22 @@ interface RenderJobData { }; } +function extForCodec(codec: string) { + return codec === "vp9" ? "webm" : "mp4"; +} +function mimeForCodec(codec: string) { + return codec === "vp9" ? "video/webm" : "video/mp4"; +} + const renderQueue = new Queue("renders", { connection: createRedisConnection() }); const renderQueueEvents = new QueueEvents("renders", { connection: createRedisConnection() }); const renderWorker = new Worker( "renders", async (job) => { - const { userId, renderJobId, inputProps } = job.data; - const localOutputPath = `out/${renderJobId}.mp4`; + const { userId, renderJobId, inputProps, codec = "h264", crf = 28 } = job.data; + const ext = extForCodec(codec); + const localOutputPath = `out/${renderJobId}.${ext}`; await job.updateProgress(5); @@ -110,7 +120,7 @@ const renderWorker = new Worker( await renderMedia({ composition, serveUrl: bundleLocation, - codec: "h264", + codec, outputLocation: localOutputPath, inputProps, concurrency: 3, @@ -123,25 +133,29 @@ const renderWorker = new Worker( void job.updateProgress(percent); } }, - ffmpegOverride: ({ args }) => [ - ...args, - "-preset", "fast", - "-crf", "28", - "-threads", "3", - "-tune", "film", - "-x264-params", "ref=3:me=hex:subme=6:trellis=1", - "-g", "30", - "-bf", "2", - "-maxrate", "5M", - "-bufsize", "10M", - ], + ffmpegOverride: codec === "h264" + ? ({ args }) => [ + ...args, + "-preset", "fast", + "-crf", String(crf), + "-threads", "3", + "-tune", "film", + "-x264-params", "ref=3:me=hex:subme=6:trellis=1", + "-g", "30", + "-bf", "2", + "-maxrate", "8M", + "-bufsize", "16M", + ] + : codec === "h265" + ? ({ args }) => [...args, "-preset", "fast", "-crf", String(crf), "-tag:v", "hvc1"] + : ({ args }) => [...args, "-b:v", "0", "-crf", String(crf)], timeoutInMilliseconds: 900000, }); console.log("βœ… Render completed β€” uploading to R2"); await job.updateProgress(92); - const renderKey = `${userId}/${renderJobId}.mp4`; + const renderKey = `${userId}/${renderJobId}.${ext}`; const fileStream = fs.createReadStream(localOutputPath); const upload = new Upload({ client: r2, @@ -149,7 +163,7 @@ const renderWorker = new Worker( Bucket: RENDERS_BUCKET, Key: renderKey, Body: fileStream, - ContentType: "video/mp4", + ContentType: mimeForCodec(codec), }, queueSize: 4, partSize: 10 * 1024 * 1024, @@ -163,7 +177,7 @@ const renderWorker = new Worker( new GetObjectCommand({ Bucket: RENDERS_BUCKET, Key: renderKey, - ResponseContentDisposition: 'attachment; filename="rendered-video.mp4"', + ResponseContentDisposition: `attachment; filename="rendered-video.${ext}"`, }), { expiresIn: 3600 }, ); @@ -249,6 +263,43 @@ function generateUUID(): string { }); } +// ─── Renderer-internal asset proxy (no auth β€” called by headless Chrome) ───── +// Headless Chrome launched by Remotion has no session cookies. This route lets +// it fetch assets during rendering. The path matches `mediaUrlLocal` values +// stored as `/renderer/assets/{id}/file` in the timeline JSON. + +app.get("/renderer/assets/:assetId/file", async (req: Request, res: Response): Promise => { + const { assetId } = req.params; + if (!UUID_PATTERN.test(assetId)) { + res.status(400).end(); + return; + } + try { + const { rows } = await db.query<{ r2_key: string; mime_type: string }>( + `SELECT r2_key, mime_type FROM assets WHERE id = $1 AND deleted_at IS NULL AND status = 'ready' LIMIT 1`, + [assetId], + ); + if (rows.length === 0) { + res.status(404).end(); + return; + } + const object = await r2.send(new GetObjectCommand({ Bucket: ASSETS_BUCKET, Key: rows[0].r2_key })); + const body = object.Body as NodeJS.ReadableStream | undefined; + if (!body || typeof (body as { pipe?: unknown }).pipe !== "function") { + res.status(500).end(); + return; + } + res.setHeader("Content-Type", object.ContentType || rows[0].mime_type || "application/octet-stream"); + res.setHeader("Cache-Control", "private, max-age=300"); + if (typeof object.ContentLength === "number") res.setHeader("Content-Length", String(object.ContentLength)); + body.on("error", () => { if (!res.headersSent) res.status(500).end(); else res.end(); }); + body.pipe(res); + } catch (err) { + console.error("renderer asset proxy error:", err); + res.status(500).end(); + } +}); + // ─── Health check ───────────────────────────────────────────────────────────── app.get("/health", (_req: Request, res: Response) => { @@ -944,6 +995,12 @@ app.post("/render", async (req: Request, res: Response): Promise => { const userId = (await getAuthenticatedUserId(req)) ?? "anonymous"; const renderJobId = generateUUID(); + const VALID_CODECS = new Set(["h264", "h265", "vp9"]); + const codec = VALID_CODECS.has(req.body.codec) ? req.body.codec : "h264"; + const crf = typeof req.body.crf === "number" && req.body.crf >= 0 && req.body.crf <= 51 + ? Math.round(req.body.crf) + : 28; + const inputProps = { timelineData: req.body.timelineData, durationInFrames: req.body.durationInFrames, @@ -954,7 +1011,7 @@ app.post("/render", async (req: Request, res: Response): Promise => { }; try { - const job = await renderQueue.add("render", { userId, renderJobId, inputProps }); + const job = await renderQueue.add("render", { userId, renderJobId, codec, crf, inputProps }); console.log(`πŸ“¬ Render job queued: ${job.id}`); res.json({ jobId: job.id }); } catch (err) { From 1fb58eaa066535eef65d5eaa3c4102d27e05389d Mon Sep 17 00:00:00 2001 From: sr2echa <65058816+sr2echa@users.noreply.github.com> Date: Sun, 3 May 2026 18:08:06 +0530 Subject: [PATCH 16/23] refactor: improve UI consistency across panels --- app/components/editor/ExportPanel.tsx | 11 +- app/components/editor/InspectorPanel.tsx | 12 +- app/components/media/TextEditor.tsx | 290 ++++++++++----------- app/components/timeline/TimelineTracks.tsx | 8 +- app/hooks/useRenderer.ts | 19 +- app/routes/home.tsx | 44 +++- app/videorender/videorender.ts | 20 +- 7 files changed, 218 insertions(+), 186 deletions(-) diff --git a/app/components/editor/ExportPanel.tsx b/app/components/editor/ExportPanel.tsx index 94c64b46..80d1ca62 100644 --- a/app/components/editor/ExportPanel.tsx +++ b/app/components/editor/ExportPanel.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback } from "react"; -import { Download, X } from "lucide-react"; +import { Download } from "lucide-react"; import { Button } from "~/components/ui/button"; import { Label } from "~/components/ui/label"; import { Switch } from "~/components/ui/switch"; @@ -31,7 +31,6 @@ interface ExportPanelProps { getPixelsPerSecond: () => number, options?: RenderOptions, ) => void; - onClose: () => void; } type QualityPreset = "web" | "balanced" | "high" | "lossless"; @@ -56,7 +55,6 @@ export function ExportPanel({ getTimelineData, getPixelsPerSecond, handleRenderVideo, - onClose, }: ExportPanelProps) { const [codec, setCodec] = useState<"h264" | "h265" | "vp9">("h264"); const [quality, setQuality] = useState("balanced"); @@ -84,13 +82,8 @@ export function ExportPanel({ return (
{/* Header */} -
+
Export -
diff --git a/app/components/editor/InspectorPanel.tsx b/app/components/editor/InspectorPanel.tsx index 724209ee..92ba910e 100644 --- a/app/components/editor/InspectorPanel.tsx +++ b/app/components/editor/InspectorPanel.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Volume2, VolumeX, X, MousePointerClick } from "lucide-react"; +import { Volume2, VolumeX, MousePointerClick } from "lucide-react"; import { Separator } from "~/components/ui/separator"; import { type ScrubberState } from "~/components/timeline/types"; @@ -8,7 +8,6 @@ interface InspectorPanelProps { getAllScrubbers: () => ScrubberState[]; pixelsPerSecond: number; onUpdate: (s: ScrubberState) => void; - onClose: () => void; } const SPEED_OPTIONS = [0.25, 0.5, 1, 1.5, 2, 4]; @@ -21,19 +20,16 @@ const MEDIA_TYPE_LABELS: Record = { groupped_scrubber: "Group", }; -export function InspectorPanel({ selectedScrubberIds, getAllScrubbers, pixelsPerSecond, onUpdate, onClose }: InspectorPanelProps) { +export function InspectorPanel({ selectedScrubberIds, getAllScrubbers, pixelsPerSecond, onUpdate }: InspectorPanelProps) { const scrubber = selectedScrubberIds.length === 1 ? getAllScrubbers().find((s) => s.id === selectedScrubberIds[0]) ?? null : null; return ( -
+
{/* Header */} -
+
Inspector -
{!scrubber ? ( diff --git a/app/components/media/TextEditor.tsx b/app/components/media/TextEditor.tsx index 835706d3..cfb3be84 100644 --- a/app/components/media/TextEditor.tsx +++ b/app/components/media/TextEditor.tsx @@ -4,7 +4,6 @@ import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Label } from "~/components/ui/label"; import { Badge } from "~/components/ui/badge"; -import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { Separator } from "~/components/ui/separator"; import { AlignLeft, AlignCenter, AlignRight, Bold, ChevronDown, Type, Plus } from "lucide-react"; import { @@ -53,161 +52,162 @@ export default function TextEditor() { }; return ( -
-
- - -
- - Text Properties -
-
- - {/* Text Content */} -
- -