Skip to content

odoo-pulse 1.9.1

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Aug 06:45
· 5 commits to main since this release

odoo-pulse 1.9.1

A bug-fix release. No tool name, argument, default, or schema changed — only
how a handful of report tools resolve "closed" project stages.

What changed

Closed-stage matching is now always by literal stage name

only_closed_stages / closed_stage_names (project_dashboard,
project_subtask_hours), team_workload's done_stages, and
standup_digest's exclude_stages now match tasks by literal
stage_id.name only.

Previously, on Odoo schemas exposing project.task.state or is_closed
the common case — those internal Kanban fold/closed markers were preferred
over the caller's named stages. Those flags are configured per stage in the
Kanban view and don't reliably correspond to the named stages a caller
actually asked for: a custom stage folded/closed in the Kanban config but not
named Done/Cancelled/Delivered (or whatever list was passed) could be
miscounted as closed. Worse, when closed_stage_names used its default, no
name check was applied at all — pure internal-state matching.

Practical effect: hour totals and task counts from these tools may shift
for a project whose Kanban stage configuration doesn't align 1:1 with
project.task.state. This is a correctness fix, not a behavior change to
rely on staying put — the new numbers match what the same
stage_id.name in/not in [...] filter returns directly against Odoo.

Verified environments

Python Python 3.10-3.13 (+3.14 exercised in CI)
Odoo Odoo 18 and 19

Install

Pin the exact version:

pip install "odoo-pulse==1.9.1"

Run without installing:

uvx odoo-pulse@1.9.1

Container:

docker run -i --rm \
  -e ODOO_URL=https://acme.odoo.com \
  -e ODOO_DB=acme \
  -e ODOO_USERNAME=you@example.com \
  -e ODOO_API_KEY=your-api-key \
  ghcr.io/minhhq-a1/odoo-pulse:1.9.1

The 1.9.1 image tag is immutable. 1.9, 1, and latest also resolve to
this release, but they move when the next release publishes — pin 1.9.1 if
you need reproducibility.

Upgrading from 1.9.0

No configuration change is required. Existing environment variables, tool
calls, and MCP client configuration continue to work unchanged:

pip install --upgrade "odoo-pulse==1.9.1"

Expect the closed-stage numbers described above to move for affected
projects. If your integration or dashboard hardcoded the old (incorrect)
totals, re-baseline against this release instead.

Rolling back to 1.9.0

Every channel keeps its previous exact version, so rollback is a downgrade:

pip install "odoo-pulse==1.9.0"
docker pull ghcr.io/minhhq-a1/odoo-pulse:1.9.0

The MCP surface is identical in both versions, so a rollback needs no client
change.

Write safety is unchanged

odoo-pulse remains read-only by default. A write reaches Odoo only when
all four of these hold:

  1. ODOO_READ_ONLY=false — the master switch, default true.
  2. The target model is listed in ODOO_WRITABLE_MODELS.
  3. ODOO_ALLOW_DELETE=true, required only for delete_records, default
    false.
  4. confirm=True on the call — every write tool returns a preview struct
    otherwise.

System models such as ir.*, base*, res.users, and res.groups are
permanently blocked regardless of configuration.