v1.9.0 -> v1.10.0: file upload UI + attachment management
- Paperclip icon left of text input, file preview pill (image thumb or file icon)
- Conversation list shows attachment icon right of trash, opens gallery overlay
- Gallery overlay: scrollable, close (X), delete attachment per item
- DELETE /api/upload/{id} removes from SQLite + Qdrant
- PATCH /api/upload/{id}/link ties upload to conversation
- GET /api/upload/by-conversation/{id} lists attachments
- Chat accepts upload_context_id, injects [ATTACHED DOCUMENT] into system prompt
- Conversation list includes attachment_count field
- 8 new tests: upload context injection, delete, link, by-conversation, image type, attachment count
Still missing (P3): drag-and-drop upload, global attachments page, file download, batch upload
This commit is contained in:
@@ -15,8 +15,16 @@ router = APIRouter()
|
||||
async def list_conversations():
|
||||
db = get_db()
|
||||
rows = db.execute("SELECT * FROM conversations ORDER BY updated_at DESC").fetchall()
|
||||
result = []
|
||||
for r in rows:
|
||||
c = dict(r)
|
||||
attach_count = db.execute(
|
||||
"SELECT COUNT(*) FROM upload_context WHERE conversation_id = ?", (c["id"],)
|
||||
).fetchone()[0]
|
||||
c["attachment_count"] = attach_count
|
||||
result.append(c)
|
||||
db.close()
|
||||
return [dict(r) for r in rows]
|
||||
return result
|
||||
|
||||
|
||||
@router.post("/api/conversations")
|
||||
|
||||
Reference in New Issue
Block a user