Files
checkflow/.cline-context.md
T
2026-08-22 09:08:10 +09:00

8.1 KiB

Project Current Status & Rules

  • Objective: Maintain, review, and enhance the CheckFlow self-hosted TickTick-style task management web application according to specifications in AGENTS.md, ensuring full feature integrity, security compliance, clean code quality, and responsive UX across all devices.

  • Core Architecture & Source Structure:

    • src/app/: Next.js App Router root layouts, providers, auth/demo/admin views, and REST/CalDAV API endpoints (/api/tasks, /api/lists, /api/import, /api/dav/[...path]).
    • src/components/layout/: AppShell.tsx (3-panel main layout, resizer coordination, mobile drawer overlay), Sidebar.tsx (draggable resizer, lists tree, tag & trash navigation, profile, import & export popover, admin console link).
    • src/components/tasks/:
      • TaskList.tsx: Recursive n-depth hierarchical checklist, Notion-style 6-dot drag handle (⋮⋮) with DND reordering, inline title editing (F2/double-click), right-aligned hover subtask trigger, 6-second interactive Undo toast banner.
      • TaskDetail.tsx: Right-side detail panel, modular block swap (Subtasks ⇄ Markdown Note), mouse drag split resizer, mobile bottom-sheet with swipe-down dismissal.
      • MarkdownNoteEditor.tsx: Distraction-free text/markdown note canvas with DOMPurify sanitization & preview rendering.
      • KanbanView.tsx: CheckFlow Labs 3-column Kanban board view (To Do / In Progress / Done).
    • src/components/settings/: SettingsModal.tsx (Profile, Preferences, Labs, Integrations/CalDAV, Admin tabs).
    • src/lib/: userPrefs.ts (global user customization state store), useUserPrefs.ts (reactive preferences hook & CSS variable injector), i18n/ (modular EN/KO/JA localization dictionaries: types.ts, locales/en.ts, locales/ko.ts, locales/ja.ts), mockData.ts (LocalStorage demo store), auth.ts, prisma.ts.
    • src/middleware.ts: Route-level auth and admin role verification guard.
  • Completed So Far:

    • Standardized complete localization across all 3 supported languages (EN, KO, JA) without partial fallback leaks; translated all Settings Modal tabs (Profile, Preferences, Labs, Sync Integrations, Admin) and interactive guides (v0.7.1).
    • Resolved list header rename layout shift bug where editing list title pushed the completed items toggle button (v0.7.1).
    • Enhanced Markdown Note Editor preview/editor canvas alignment and unified description typography heights (v0.7.1).
    • Standardized Task Detail priority picker into a sleek custom popover chip matching the central quick-add toolbar (v0.7.1).
    • Rewrote entire Git commit history with active local Git identity across all branches and tags, and force-pushed to self-hosted Gitea remote origin.
    • Conducted full audit of codebase against all specification items in AGENTS.md.
    • Verified 100% implementation of core features: n-depth recursive checklist, real-time subtask synchronization, modular blocks & split resizer, 3-way theme (VSCode dark / pastel light / system), global UserPrefs customization, Labs Kanban view, and mobile bottom sheet.
    • Enhanced CalDAV / DAVx⁵ synchronization endpoint (src/app/api/dav/[...path]/route.ts) with full RFC 4791 support: OPTIONS, PROPFIND (principal & calendar collection discovery), REPORT (calendar-query/multiget), PUT (task upsert from VTODO), and DELETE.
    • Upgraded Settings Modal "Integrations (CalDAV)" tab with multi-platform interactive guides (Android/DAVx⁵, Apple Reminders, Thunderbird), one-click URL copy feedback, ICS feed direct download, and live endpoint test ping.
    • Implemented full-fidelity standard Task Export pair (/api/export) supporting RFC 4180 / TickTick-compatible CSV with UTF-8 BOM, and RFC 5545 iCalendar (.ics VTODO) format.
    • Added Export modal in Sidebar user popover menu supporting format selection, target list filtering, completed tasks inclusion toggle, and seamless Demo mode client-side Blob generation.
    • Refactored i18n into a clean modular dictionary architecture (src/lib/i18n/types.ts, locales/en.ts, locales/ko.ts, locales/ja.ts) with 100% dictionary completeness and natural phrasing across English, Korean, and Japanese.
    • Enhanced Admin console (src/app/admin/page.tsx), Settings Modal Admin tab, and Middleware to seamlessly support both authenticated ADMIN users and Demo mode admin preview.
    • Added Admin Console direct entry in Sidebar user popover menu for swift navigation.
    • Fixed Docker container runtime Prisma migration dependencies by adding effect and ensuring full node_modules availability in the production runner stage of Dockerfile for seamless entrypoint prisma migrate deploy.
    • Refined docker-compose.yml and .env.example to support standalone 2-file deployment (docker-compose.yml + .env) without cloning source code, public registry images (CHECKFLOW_IMAGE), Watchtower auto-updating labels, and automated database migrations.
    • Automated Gitea Actions CI workflow (.gitea/workflows/docker-build.yaml) for building & pushing container images to Gitea Container Registry with lowercase repository name normalization (env.REPO) and OCI source labels (org.opencontainers.image.source) for automatic repository package linkage.
    • Completely revamped README.md to reflect universal 2-file Docker deployment for general users, Watchtower auto-update, architecture, and open-standard CalDAV sync guidelines.
    • Enhanced Task Row UX & Interactive Undo Toast (v0.6.3): Notion-style 6-dot drag handle (⋮⋮), DND reordering, F2 inline editing, right-aligned subtask button, and 6-second floating Undo toast banner.
    • Completely redesigned Left Sidebar UI/UX (v0.7.0): Brand checkmark SVG logo, centered matte search box (Ctrl+K), bottom-docked user card, fixed list redirect bug on trash selection, and synchronized live trash counter.
    • Minimal & Matte Kanban View Switcher (v0.7.0): Compact single toggle visible only when Kanban is enabled in Labs, with seamless real-time switching.
    • Markdown Note Editor defaulting to Preview mode with one-touch toggle button (v0.7.0).
    • Real-time Optimistic UI updates for subtask inline addition & checklist checkbox clicks without requiring page refreshes (v0.7.0).
    • Auto-promotion of the first-ever registered user to ADMIN role on self-hosted instances (v0.7.0).
    • Full N-depth tree drag-and-drop (DND) reordering for main tasks and subtasks with LocalStorage persistence (v0.7.0).
    • Recursive soft-delete cascading (deleting a parent task automatically soft-deletes all descendant subtasks) in both Prisma database and LocalStorage mock store (v0.7.0).
    • Real-time Admin console API endpoints (/api/admin/stats, /api/admin/users) with Live/Demo duality (v0.7.0).
    • Validated that npm run lint and npm run build execute with 0 errors and 0 warnings.
  • Next Steps (Todo):

    • Continuous refinement of user experience based on feedback.
    • Enhance keyboard accessibility & global shortcuts (shortcuts for switching list/kanban view, quick task navigation, Command Palette bindings).
    • Add optional automatic synchronization background polling / webhook integration if requested.
    • Plan next feature iterations or custom integrations as requested by user.
  • Caveats & Absolute Rules:

    • Security & Multi-user Privacy: All API endpoints must strictly verify session ownership (userId === session.user.id) and list ownership before creating/updating/deleting tasks or lists.
    • Sanitization: Never render raw HTML without DOMPurify; always sanitize CSV/ICS user inputs against formula injection (sanitizeFormula).
    • Admin Gatekeeping: Admin routes must strictly require role === "ADMIN" both on server/middleware and client.
    • User Customization Priority: Any new UI preferences (sizes, positions, order) must be persisted through userPrefs.ts and respect the "Reset to Defaults" Labs option.
    • i18n Consistency: Any newly added UI string must be translated across all 3 language dictionaries (en, ko, ja) in src/lib/i18n/locales/.
    • Mobile Bottom-Sheet Convention: Maintain touch gestures (mobile-open class, Y-axis swipe threshold > 120px) for the detail panel on mobile screens.