Skip to content

feat(projects): project-less tasks via private personal project (+ requestIdleCallback polyfill fix)#5

Merged
JOBYINC merged 2 commits into
feature/lark-oauth-providerfrom
feature/personal-tasks
May 19, 2026
Merged

feat(projects): project-less tasks via private personal project (+ requestIdleCallback polyfill fix)#5
JOBYINC merged 2 commits into
feature/lark-oauth-providerfrom
feature/personal-tasks

Conversation

@JOBYINC
Copy link
Copy Markdown
Owner

@JOBYINC JOBYINC commented May 19, 2026

Round 1 — Personal Tasks (Asana-style project-less tasks)

Tasks no longer require picking a project. A per-user private "My Tasks" project is lazily created server-side and reused, so project-less tasks need no issue-schema change — they inherit states, custom fields, layouts, the create flow, everything.

Backend (Inc1)a7f1039e66

  • Project.is_personal + personal_owner + migration 0126 (additive, single leaf on 0125).
  • GET workspaces/<slug>/projects/personal/ — get-or-create, mirrors the create() bootstrap (DEFAULT_STATES + ADMIN ProjectMember + identifier), Secret network, owner-only.
  • Excluded is_personal from the normal project list/list_detail (still reachable by pk for issue CRUD + the My Tasks view).

Frontend (Inc2)a7f1039e66

  • projectService.getPersonalProject; sidebar My Tasks entry; /my-tasks route resolves the personal project and redirects to its issues page (reuses 100% of existing issue UI + create flow); i18n en/zh.

Verified end-to-end against the local stack: migration 0126 applied, endpoint 200 creating a correct bucket (Secret / ADMIN / identifier MT…), idempotent, excluded from the normal project list.

Independent fix — 3cdae19e3c

Pre-existing bug, unrelated to the feature: the repo ships a requestIdleCallback/cancelIdleCallback polyfill in core/lib/polyfills that no module imported → dead code → WebKit/Safari < 17.4 crashed in any virtualized list. Fix = side-effect import at app/entry.client.tsx; existing polyfill now runs globally, HOC untouched. Kept as a separate commit.

Notes

  • Branched off prod line 6d750a9112; base = feature/lark-oauth-provider (repo convention).
  • No deploy/merge in this PR — review only.
  • Inc3 polish (page title "My Tasks", hide project breadcrumb, Home card, move-to-project) deliberately deferred.

Marcus Cheung added 2 commits May 18, 2026 17:13
…roject

Tasks no longer require picking a project. A per-user private
"My Tasks" project is lazily created server-side (hidden from normal
project lists, owner-only ADMIN member, Secret network) and reused so
project-less tasks need NO issue-schema change — they get states,
custom fields, layouts, etc. for free.

Backend (Inc1): Project.is_personal + personal_owner + migration 0126;
GET workspaces/<slug>/projects/personal/ get-or-create endpoint
mirroring the create() bootstrap; exclude is_personal from the normal
project list/list_detail (still reachable by pk for issue CRUD).

Frontend (Inc2): projectService.getPersonalProject; sidebar "My Tasks"
entry (workspace.ts + sidebar-item staticItems + ce icon); /my-tasks
route resolves the personal project and redirects to its issues page
(reuses 100% of existing issue UI + create flow); i18n en/zh.

Verified end-to-end against the local stack: migration applied,
endpoint 200 creating a correct bucket, idempotent, excluded from
the normal project list.
Pre-existing bug, unrelated to the personal-tasks feature. The repo
ships a requestIdleCallback/cancelIdleCallback polyfill in
core/lib/polyfills but no module ever imported it, so it was dead
code: WebKit/Safari < 17.4 crashed in any virtualized list
(render-if-visible-HOC's unguarded window.requestIdleCallback).

Fix: side-effect import "@/lib/polyfills" in app/entry.client.tsx so
the existing polyfill runs before any component mounts — fixes it
globally, no new code, HOC left untouched.
@JOBYINC JOBYINC merged commit 3cdae19 into feature/lark-oauth-provider May 19, 2026
@JOBYINC
Copy link
Copy Markdown
Owner Author

JOBYINC commented May 19, 2026

Deployed to production 2026-05-19 (user-authorized). Prod line feature/lark-oauth-provider fast-forwarded 6d750a9112..3cdae19e3c (clean FF, no force). GHCR run 26076573538 green; droplet compose pull && up. Migration applied: showmigrations db confirms [X] 0126_project_personal (additive Project.is_personal/personal_owner; migrator logged Applying db.0126_project_personal... OK). web/admin healthy, api RestartCount=0 stable. Personal-tasks feature + requestIdleCallback polyfill fix are live.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant