Skip to content

My Planner - personal place to plan your day - #26101

Draft
shiroginne wants to merge 30 commits into
devfrom
my-page-upgrade
Draft

shiroginne wants to merge 30 commits into
devfrom
my-page-upgrade

Conversation

@shiroginne

Copy link
Copy Markdown
Contributor

My planner

This adds My planner, a personal place to plan your day, behind the planner feature flag. It started as the "My Page as a Today list" idea from the offsite. You get four views in the global menu:

  • Today: your to-dos and the meetings you're in, split into morning, afternoon and evening. Drag a to-do between them, or filter to to-dos or meetings only.
  • Upcoming: the next 7 days, same idea, with non-working days marked.
  • Overdue: whatever you didn't get to, plus undated to-dos, so it doubles as a backlog. One click puts something back on Today.
  • Completed: what you closed in the last week.
Screenshot 2026-10-16 at 15 56 35

You can add to-dos inline in each section, or with the "Add to-do" dialog, where you can also pick a work package the to-do is about. Typing #123 in a to-do links that work package and adds a relation. A to-do that's only #123 shows up as that work package's card. There's also a sun button in the work package toolbar (split and full view) that adds the work package to My planner.

Screenshot 2026-10-16 at 15 57 06 Screenshot 2026-10-16 at 15 57 27 Screenshot 2026-10-16 at 15 58 01

A to-do like /meeting with @maya about wiki permissions gets a "Create meeting" button that opens the meeting dialog with the title and participants filled in.

How it works

  • Every user gets a private "My work" project on first visit, and to-dos are plain work packages in it. They show up in that project like any other work package, but can only be added through My planner. The owner gets a "My planner owner" role without "Add work packages", so core keeps the project out of create pickers and the move dialog.
  • Day part is a list custom field (semantic_key: :day_part) on a "My work" variant of the first non-milestone type. It's created once per instance, in the instance's default language.
  • Meetings come from the meetings module, including future occurrences of recurring series that don't exist as meetings yet.
  • Everything goes through the normal work package services and contracts. Planner actions are mapped onto the work package permissions in the engine, like overviews/grids do. The check runs against the user's "My work" project without setting @project, because that would switch the page into that project's context.
  • Deleting a user (or removing them from their "My work") deletes that project, so personal to-dos aren't left behind.

Outside the module

  • semantic_key enum on WorkPackageCustomField (same as job_title on users)
  • planner_project_id in the user preferences schema
  • The new meeting dialog accepts a prefilled title and participants (/meeting)
  • Angular toolbar button + sun icon registration

Things to know

  • Admins pass every permission check, so as an admin you'll still see "My work" in create pickers. Use a regular user to see the restriction.
  • Completed uses updated_at as the completion time for now, so editing a closed to-do moves it to that day.
  • Only English translations so far.

Testing

Enable the planner feature flag and open My planner in the global menu. Specs live in modules/planner/spec, including a browser spec for the add dialog.

AI involvement

Directed – I specified the requirements and AI implemented most of it; I validated via testing rather than a full line-by-line review.

Merge checklist

  • Added/updated tests

@shiroginne shiroginne self-assigned this Oct 16, 2026
@github-actions github-actions Bot added the ai: Directed 🪄 A human specified the requirements and AI implemented most of it; They validated via testing. label Oct 16, 2026
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Deploying openproject with ⚡ PullPreview

Field Value
Latest commit 7911796
Job deploy
Status ✅ Deploy successful
Preview URL https://pr-26101-my-page-upgrade-ip-2-31-42-134.my.opf.run:443

View logs

This branch has not been deployed

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

Labels

ai: Directed 🪄 A human specified the requirements and AI implemented most of it; They validated via testing.

Development

Successfully merging this pull request may close these issues.

1 participant