fix: resolve 15+ UX issues across the full app

- CreateItemDialog: shared Zustand store for dialog state
- TopBar: use store instead of router.push navigation
- TaskDetailPanel: dynamic domain fetch from /api/domains
- TodayTasksWidget: domain name resolution from UUIDs
- ProjectProgressWidget: fetch real progress, default to 0
- Calendar page: domain filter fetches from API dynamically
- Habits page: edit/delete dropdown with AlertDialog
- Projects page: domain name display + delete button
- Notes page: domain picker on creation, names in list
- Settings domains: add color picker input
- Tasks list view: MoreHorizontal wired to edit/delete
- HabitCard: domain resolution + edit/delete dropdown
- PocketBase compat: add JSDoc migration comment
This commit is contained in:
2026-07-25 02:22:01 +00:00
parent 73335484f8
commit 953a947874
18 changed files with 474 additions and 586 deletions
+11 -6
View File
@@ -43,13 +43,15 @@ export async function GET(request: NextRequest) {
await server.connect(transport);
// Store transport for POST requests
// Handle the request first — sessionId is set during handleRequest
const response = await transport.handleRequest(request);
// Store transport AFTER handleRequest sets the session ID
if (transport.sessionId) {
transports.set(transport.sessionId, transport);
}
// Handle the request
return transport.handleRequest(request);
return response;
}
export async function POST(request: NextRequest) {
@@ -84,12 +86,15 @@ export async function POST(request: NextRequest) {
await server.connect(transport);
// Store transport for subsequent requests
// Handle the request first — sessionId is set during handleRequest
const response = await transport.handleRequest(request);
// Store transport AFTER handleRequest sets the session ID
if (transport.sessionId) {
transports.set(transport.sessionId, transport);
}
return transport.handleRequest(request);
return response;
}
export async function DELETE(request: NextRequest) {
@@ -124,4 +129,4 @@ export async function DELETE(request: NextRequest) {
transports.delete(sessionId);
return response;
}
}