Project updates
- Updates on every project: where it stands (On track, At risk, Off track, On hold, Done) and a short note, on a new Updates tab. The note is drafted from the project's tasks since the last update (done, in progress, stuck for a week, overdue, due in the next 7 days, time logged), each task once, with a suggested health. Counted in the author's time zone.
- Posting tells the project's members (by email for those who get task emails), can also post to a channel, and can show the update on the project's client link. A chip beside the project's name shows the latest health; admins see "An update is due" after a week.
- New:
GET/POST /project/{id}/updates,GET /project/{id}/updates/draft,POST /project/{id}/updates/{update}/edit|delete; migration 185 (project_updates). - AI summary (with AI): two or three sentences above the facts, in the voice of the team's recent updates; the facts stay below it.
POST /ai/project-update/draft.
Lists and boards from the keyboard
- J/K (or arrows) move through a task list or down a board column, ←/→ cross columns, Enter opens the task (J/K then walk tasks with the panel following), X selects, Shift+J/K or Shift-click selects a run, Ctrl/⌘-click picks.
- With a selection, S/A/T(L)/P set status, assignee, tags (on for all, or off when all have it) or priority for all of it, through the single-task endpoints. Admin-only as before; tasks you can't change are left alone and counted.
- G then a letter goes to a page; a task's status list offers "Edit statuses…". A first-visit tip shows Ctrl/⌘ K, Alt-click and ?.
Calls
- The call buttons in channels, DMs and groups open the call beside the conversation on a computer. One call at a time; a running call is never closed to make room, swapped or restored on reload; Focus on another view keeps it going with "On a call" in the top bar.
Fixes
- Dropping a card into another row and column could answer 500 (the status and assignee writes conflicted in Dgraph); task writes now retry an aborted transaction.
- A doc set aside by Focus left its block drag handle on screen.
- A project's admins could not remove a comment on its tasks (only the author could): the comment lookup never asked whether the reader runs the project. A client's comment on a shared project can now be removed.
- Email is no longer sent to domains that cannot receive mail (reserved names, or no such domain in DNS): those bounced and cost sending reputation and quota. The queue marks them suppressed.
- Search writes refused by a busy OpenSearch (429) were dropped; the client now retries them with backoff.
- OpenSearch's daily
security-auditlog-*indices are deleted after 90 days (ISM policy installed at start), and backups no longer include them or query insights. - Plain-text email bodies and imported ClickUp comments keep their paragraphs and lists; ClickUp task names are cut by characters, not bytes.