You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -215,6 +215,7 @@ Without Traefik, use `http://localhost:<port>` directly. The `*.klicker.com` dom
215
215
-**Assistant UI chat drop targets**: `ComposerPrimitive.AttachmentDropzone` must wrap both normal and edit chat composer roots; it owns the drag/drop capture handlers that prevent native browser file navigation, while Klicker-specific limits stay in local composer code. (`apps/chat/src/components/thread.tsx`)
216
216
-**Deployed chat model registries default attachment support off**: `apps/chat` loads `CHAT_MODEL_REGISTRY_JSON` via `chatModelRegistry.ts`, where omitted `supportsImageAttachments` values default to `false`; if deployment values override the built-in registry, each image-capable model must set the flag explicitly in `deploy/env-uzh-*/values.yaml` or the attach button disappears.
217
217
-**OpenAI Responses storage and tool calls**: GPT-5.5 via the OpenAI Responses API can reference prior response items across tool-call steps; with `store: false`, LiteLLM/Azure can return "item not found" for those references. Keep `CHAT_OPENAI_STORE_RESPONSES=true` in shared/staged deployments that use Responses-compatible OpenAI backends, while local OpenRouter-style setups can leave it false. (`apps/chat/src/app/api/chatbots/[chatbotId]/chat/route.ts`, `deploy/env-uzh-*/values.yaml`)
218
+
-**Chat fallback allow-lists**: Zero-credit course chatbots require a usable fallback model (`gpt-4.1-mini` / `CHAT_FALLBACK_MODEL_ID`) and explicit chatbot `allowedModelIds` must include it. Use `packages/prisma-data/src/scripts/2026-06-15_ensure_chatbot_fallback_model.ts` to audit or fix allow-lists. (`apps/chat/src/lib/server/chatModelRegistry.ts`)
218
219
-**Embedded PWA messaging trust boundary**: For embedded PWA pages, use a parent-initiated `postMessage` handshake to capture `event.origin` and avoid `'*'` target origins; do not add a second per-platform messaging allowlist in page code. Embedding permission remains enforced separately by ingress `frame-ancestors`. (`apps/frontend-pwa/src/pages/course/[courseId]/practiceQuizzes/[id].tsx`, `deploy/charts/klicker-uzh-v3/templates/ingress-frontend-pwa.yaml`)
219
220
-**Local embed harness target**: `util/embed-harness/` is for local verification only and should target the branch-local PWA (`http://127.0.0.1:3101/...`), not `https://pwa.klicker.com/...`, because production CSP / `frame-ancestors` blocks localhost embedding. (`util/embed-harness/`)
220
221
-**Chat PWA login redirects**: `apps/chat/src/app/noLogin/page.tsx` must pass an absolute chat URL to the PWA login `redirect_to`; a relative chatbot path makes the PWA redirect to its own domain and 404. Local chat dev also needs ignored local env values for the backend `APP_SECRET` and `DATABASE_URL` so participant cookies verify and Prisma can load chatbot data.
0 commit comments