project_task_state_selection
The task state selector is the colored status bubble on every Odoo task: In Progress, Changes Requested, Approved, Done or Canceled, with click behavior that adapts to where you are.
| Technical name | project_task_state_selection |
|---|---|
| Field types | selection |
| Views | form, kanban, list, activity, calendar |
| Form variant | Form views get a rounded pill button and the Alt+F command instead of the plain icon toggler |
| Also registered as | task_stage_with_state_selection composes it next to the stage field |
| Module | project |
| Used in core | 11 occurrences across 1 module: every task-facing view of project, from kanban and list to the sharing portal views |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Partially. The widget appears automatically on task views; options need XML. |
| Alternatives | state_selection, selection_badge, priority, boolean_favorite |
What the task state selector does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
is_toggle_mode | boolean | Single click toggles between Done and In Progress instead of opening the dropdown. The same behavior activates automatically on tasks without a project. |
autosave | boolean | Inherited from state_selection. Picking a state saves the whole record immediately, pending edits included. Set false to stage the change without saving.(default: true) |
hide_label | boolean | Inherited from state_selection. Hides the state label text next to the icon where the template would show it. |
Waiting is not in the option list on purpose. No configuration makes Waiting user-settable from this widget: it appears in the label formatting but is excluded from the dropdown choices. The state is entered and left by the task dependency machinery, so if a task is stuck in Waiting, the fix is on its blocking tasks, not on this field.
Working examples
Why the bubble behaves differently per view
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Icon set and view-name changes are visible on the development branch; options unchanged. Details below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Byte-identical component apart from the removed module pragma. |
| Odoo 17.0 | Verified | Same state model and widget behavior. |
| Odoo 16.0 | Partial / changed | Task states in their current 6-value form landed in 17.0; 16.0 used kanban_state instead. |
Upgrade note for 18 to 19. The component is byte-identical between 18.0 and 19.0 apart from the removed module pragma, so views and customizations carry over as they are. The 6-state selection on the task model is likewise stable across both versions.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The dropdown only offers Done and Canceled | The task is in the Waiting state, which the dependency system controls. Complete or cancel the blocking tasks; the working states reappear once the task leaves Waiting. |
| Clicking the bubble completes the task instead of opening the dropdown | Toggle mode is active, either via is_toggle_mode or because the task has no project. Expected on private tasks. Remove the option or assign a project for dropdown behavior. |
| Changing state saved the whole record | Inherited autosave defaults to true. Set options="{'autosave': False}" where immediate saves are unwanted. |
| Alt+F does nothing on the kanban view | The command is registered only when the widget mounts on a form view. Open the task form; the command palette entry is available there. |
| The widget shows a plain selection dropdown on my custom model | The state values are hardcoded to project.task's selection keys, so foreign selections match no icons. Use the generic state_selection widget for non-task models. |
Task state selector vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
project_task_state_selection | The task state bubble on anything rendering project.task | Project-specific icons, waiting-state lockout and private-task toggle |
state_selection | The same icon-plus-dropdown pattern on any selection field | Generic three-state styling, no project logic |
| selection_badge | Choosing one value from a short list as visible badges | All options rendered flat, no icons or dropdown |
| priority | Star-based importance ranking next to the state | Stars over a selection, with the same autosave-by-default behavior |
| boolean_favorite | A single done-or-not flag with no intermediate states | Boolean toggle rendered as a star |
Frequently asked questions
What is the difference between task stages and task states in Odoo?+
Why can I not set a task back to In Progress?+
How do I make the task state a one-click done toggle?+
Does changing the state save the record?+
Is there a keyboard shortcut for setting the task state?+
Will Odoo 20 change the task state widget?+
Making Odoo Project fit how your team runs?
Custom task lifecycles, dependency rules, approval states that mean something in your reports: project workflows are where off-the-shelf Odoo needs shaping. We tailor Odoo Project for delivery teams, from state logic to portal sharing.
Shape your project workflow