feat: tasks app, security hardening, mobile fixes, iOS app shell
- Custom SQLite task manager replacing TickTick wrapper - 73 tasks migrated from TickTick across 15 projects - RRULE recurrence engine with lazy materialization - Dashboard tasks widget (desktop sidebar + mobile card) - Tasks page with project tabs, add/edit/complete/delete - Security: locked ports to localhost, removed old containers - Gitea Actions runner configured and all 3 CI jobs passing - Fixed mobile overflow on dashboard cards - iOS Capacitor app shell (Second Brain) - Frontend/backend guide docs for adding new services - TickTick Google Calendar sync re-authorized Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -283,7 +283,7 @@ class GatewayHandler(ResponseMixin, BaseHTTPRequestHandler):
|
||||
self._send_json({"error": "Unknown service"}, 404)
|
||||
return
|
||||
|
||||
from config import MINIFLUX_API_KEY, INVENTORY_SERVICE_API_KEY, BUDGET_SERVICE_API_KEY
|
||||
from config import MINIFLUX_API_KEY, INVENTORY_SERVICE_API_KEY, BUDGET_SERVICE_API_KEY, TASKS_SERVICE_API_KEY
|
||||
headers = {}
|
||||
ct = self.headers.get("Content-Type")
|
||||
if ct:
|
||||
@@ -298,6 +298,11 @@ class GatewayHandler(ResponseMixin, BaseHTTPRequestHandler):
|
||||
headers["X-API-Key"] = INVENTORY_SERVICE_API_KEY
|
||||
elif service_id == "budget" and BUDGET_SERVICE_API_KEY:
|
||||
headers["X-API-Key"] = BUDGET_SERVICE_API_KEY
|
||||
elif service_id == "tasks":
|
||||
# Inject user identity for the task manager
|
||||
if user:
|
||||
headers["X-Gateway-User-Id"] = str(user["id"])
|
||||
headers["X-Gateway-User-Name"] = user.get("display_name", user.get("username", ""))
|
||||
elif user:
|
||||
svc_token = get_service_token(user["id"], service_id)
|
||||
if svc_token:
|
||||
|
||||
Reference in New Issue
Block a user