From 5fdbcdadc9e23e57b195ad06fe48046f0ab65e10 Mon Sep 17 00:00:00 2001 From: Nicholas Riegel Date: Sat, 30 May 2026 11:17:49 -0400 Subject: [PATCH] =?UTF-8?q?release:=20v0.5.0=20=E2=80=94=20establish=20Odo?= =?UTF-8?q?o=2014.0=20branch=20(ITSulu=20production=20target)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seed the 14.0 series branch from the 17.0 baseline: - .odoo-series = 14.0; Dockerfile FROM odoo:14.0; manifest 14.0.0.5.0 - PORTING.md tracks the Odoo-14 checklist (biggest delta: mail templates must revert to Odoo 14's Jinja2 syntax; render API differs) - README retargeted to 14.0 with porting-in-progress notice - CHANGELOG v0.5.0 entry NOTE: seeded from 17.0 — the Odoo-14 port is NOT yet verified (PORTING.md). Not deploy-ready on the production 14.0 instance until the suite is green there. Co-Authored-By: Claude Opus 4.8 --- .odoo-series | 1 + CHANGELOG.md | 25 +++++++++++++ Dockerfile | 2 +- PORTING.md | 39 ++++++++++++++++++++ README.md | 16 +++++--- VERSION | 2 +- addons/itsulu_blog_publisher/__manifest__.py | 2 +- 7 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 .odoo-series create mode 100644 PORTING.md diff --git a/.odoo-series b/.odoo-series new file mode 100644 index 0000000..ed9d00f --- /dev/null +++ b/.odoo-series @@ -0,0 +1 @@ +14.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index d6315a5..e379c7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,31 @@ Release notes are written in plain language so anyone on the team can follow wha --- +## v0.5.0 — 2026-05-30 + +Sets up support for **multiple Odoo Community versions**, each on its own branch — the same +model the Odoo project itself uses. We initially target **Odoo 19.0** (the latest stable) and +**Odoo 14.0** (the version ITSulu runs in production). + +### Added + +- **Per-Odoo-version branches.** The addon now lives on a branch per Odoo release — `19.0` + and `14.0` — so each can track the API differences of its Odoo version independently. Check + out the branch that matches your Odoo install. +- **Version tooling is Odoo-aware.** The release helper (`bump-version.sh`) now reads which + Odoo series a branch targets and stamps the addon and release tags accordingly + (e.g. `19.0-v0.5.0`, `14.0-v0.5.0`), so one product version can ship on several Odoo versions. +- A `PORTING.md` on each version branch tracks what still needs checking for that Odoo release. + +### Notes + +- This `14.0` branch is the target for the **ITSulu production** instance. It is **seeded from + the 17.0 codebase**, so the Odoo-14 port is still being completed — most notably the email + template must move back to Odoo 14's older Jinja syntax. See `PORTING.md`. +- Documentation (`README`, `CLAUDE.md` §15) now describes the branch-per-version model. + +--- + ## v0.4.8 — 2026-05-30 The first tagged release. This version gets the whole test suite running green on the diff --git a/Dockerfile b/Dockerfile index 86677bd..670e9af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM odoo:17.0 +FROM odoo:14.0 # Install Python testing dependencies using the system Python RUN python3 -m pip install --no-cache-dir \ diff --git a/PORTING.md b/PORTING.md new file mode 100644 index 0000000..6d869f7 --- /dev/null +++ b/PORTING.md @@ -0,0 +1,39 @@ +# Porting status — Odoo 14.0 branch + +This branch targets **Odoo Community 14.0** — the version **ITSulu runs in production**. It was +**seeded from the 17.0 baseline** and the Odoo-14 porting is tracked here. Until every item is +verified, treat this branch as **work in progress** — do not deploy to the production 14.0 +instance unverified. + +> The product feature set is the same across all Odoo branches; only the Odoo-API-specific code +> differs. Odoo 14 is **older** than the 17.0 baseline, so several things move *backwards*. +> See `CLAUDE.md` §15 for the branch model and §11.5 / §12 for version-specific gotchas. + +## Series markers (done) + +- [x] `.odoo-series` = `14.0` +- [x] `Dockerfile` base image = `odoo:14.0` +- [x] manifest version prefix = `14.0.` (via `bump-version.sh`) + +## API porting checklist (verify on a real Odoo 14.0 instance) + +- [ ] **Mail template syntax — REVERT to Jinja2.** Odoo 14 renders `mail.template` with Jinja2 + (`${object.blog_post_id.name}`, `% if`, `% for`), **not** the qweb `` used on 17.0. + The 17.0 template in `data/mail_template_data.xml` must be converted back to Jinja for 14.0. +- [ ] **Mail render API.** 14.0 uses `template.render_template(...)` / `_render_template(...)`, + not 17.0's `_render_field`. Update `blog_generation_log.send_notification_email` + tests. +- [ ] `blog.post` body field name on 14.0 (the 17.0 baseline writes `content` — confirm 14.0). +- [ ] Python 3.6–3.8 only — remove any 3.9+ syntax (dict `|` merge, `str.removeprefix`, etc.). +- [ ] `@api.model_create_multi`, `name_get`, and other ORM signatures valid on 14.0. +- [ ] View/RELAXNG validation for 14.0 (attrs/states syntax differs from 17.0). +- [ ] `ir.cron` + mail data XML formats. +- [ ] Full test suite green on a 14.0 template DB (K8s job, §8, base image `odoo:14.0`). +- [ ] pytest-odoo / pytest-bdd versions compatible with the 14.0 Python. + +## How to work this branch + +1. Stand up a 14.0 template DB (mirror §8, base image `odoo:14.0`). +2. Start with the mail template (Jinja revert) and the render API — those are the biggest deltas. +3. Run the suite, fix one Odoo-API difference at a time. +4. Record each gotcha in `CLAUDE.md` §12 tagged with the series. +5. When green, cut a release on this branch (`bump-version.sh` → tag `14.0-vX.Y.Z`). diff --git a/README.md b/README.md index 7c0c859..b8fd287 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ -# ITSulu Blog Publisher — Odoo 17 Addon +# ITSulu Blog Publisher — Odoo 14 Addon -**Version:** 0.4.8 +**Version:** 0.5.0 -Automated blog post generation and publishing for Odoo 17 Community Edition, powered by generative AI (Anthropic Claude, OpenAI, Google Gemini, or Ollama). +Automated blog post generation and publishing for Odoo 14.0 Community Edition, powered by generative AI (Anthropic Claude, OpenAI, Google Gemini, or Ollama). + +> ⚠️ **Porting in progress.** This `14.0` branch is the target for the ITSulu production +> instance. It is seeded from the 17.0 baseline; the Odoo-14 API port (notably the older +> Jinja-style mail templates) is tracked in [PORTING.md](PORTING.md). > **Versioning** — `MAJOR.MINOR.PATCH` (each 0–999). MAJOR = major release for sale / significant change; MINOR = features or performance improvements; PATCH = a single group of commits. See [CHANGELOG.md](CHANGELOG.md) for release notes and [CLAUDE.md](CLAUDE.md) §15 for the full scheme. @@ -63,9 +67,9 @@ primed PostgreSQL template database. See [CLAUDE.md](CLAUDE.md) §8 for the K8s ### Prerequisites -- Odoo 17.0 Community -- Python 3.10+ -- PostgreSQL 13+ +- Odoo 14.0 Community +- Python 3.6–3.8 +- PostgreSQL 10+ - pip packages: `requests`, `pytest-odoo`, `pytest-bdd` ### Steps diff --git a/VERSION b/VERSION index cb498ab..8f0916f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.8 +0.5.0 diff --git a/addons/itsulu_blog_publisher/__manifest__.py b/addons/itsulu_blog_publisher/__manifest__.py index 161ac5e..d193e06 100644 --- a/addons/itsulu_blog_publisher/__manifest__.py +++ b/addons/itsulu_blog_publisher/__manifest__.py @@ -3,7 +3,7 @@ 'name': 'ITSulu Blog Publisher', # Odoo manifest version = .. Product version # is tracked in the repo-root VERSION file (currently 0.4.8). See CLAUDE.md §15. - 'version': '17.0.0.4.8', + 'version': '14.0.0.5.0', 'summary': 'AI-powered blog post generation with multi-LLM support, scheduling, and social media copy', 'description': """ ITSulu Blog Publisher