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
Implement shared AI context opt-in feature #26 notes concept lookup builds PostgREST in.() from raw-joined names — routes/notes.py:159-179. Unquoted/unescaped; names with commas/parens/quotes silently fail to link. Fix: quote/escape each value, or match by normalized id.
Add BU undergraduate course database and course selection UI #25 Concepts from unenrolled courses become ungrouped floaters — graph_service.py:344,96,152,163 · KnowledgeGraph2D.tsx:257. delete_course unenrolls but keeps graph_nodes; orphans render under an undefined subject bucket. Fix: cascade/soft-archive on unenroll, or synthesize an "Archived" subject in get_graph.
Mobile responsiveness: Dashboard and post-login pages #23note_chat prompt references an unregistered tool name — agents/note_chat.py:27-53 · chat_context.py:234. Prompt says search_course_materials but the registered name is search_course_materials_tool. Fix: register with Tool(..., name="search_course_materials") or fix the prompt.
Severity: LOW · Source:
docs/backend-contract-bug-audit.md(findings #20, #23, #25, #26, #27)Lower-severity correctness/contract cleanups.
routes/study_guide.py:116-131,99. Fix: batch withid=in.(...); wrap the Gemini call →HTTPException(502).in.()from raw-joined names —routes/notes.py:159-179. Unquoted/unescaped; names with commas/parens/quotes silently fail to link. Fix: quote/escape each value, or match by normalized id.graph_service.py:344,96,152,163·KnowledgeGraph2D.tsx:257.delete_courseunenrolls but keepsgraph_nodes; orphans render under anundefinedsubject bucket. Fix: cascade/soft-archive on unenroll, or synthesize an "Archived" subject inget_graph.note_chatprompt references an unregistered tool name —agents/note_chat.py:27-53·chat_context.py:234. Prompt sayssearch_course_materialsbut the registered name issearch_course_materials_tool. Fix: register withTool(..., name="search_course_materials")or fix the prompt.createNoteresponse omitslast_summary_atdeclared in FENotetype —types.ts:402·api.ts:1109·notes_service.py:45. Returnsundefined(notnull). Fix: add"last_summary": None, "last_summary_at": Noneto the row.