Modern TUI-driven Odoo Worktree Manager
Project description
Odoo Worktree Assistant (odoo-wt)
A professional, modern TUI-driven Git worktree manager explicitly designed for Odoo developers. Built with Python, Textual, and uv.
The Pitch
I work with Odoo using Git Worktrees every single day. Every time I start a new feature or need to check out a colleague's code, I find myself doing the same tedious dance: creating a new folder, fetching branches from the remote, adding the community worktree, adding the enterprise worktree, and then setting up the Python environment.
If you also work like this, I built this tool for you. It handles that entire handshake between Git and your virtual environments in seconds through a fast Terminal UI, so you can just focus on the code.
The Structure
The tool creates and manages a standardized folder structure that looks like this:
~/repos/Odoo/wt/ <-- Your Worktree Root
│
├── master/ <-- Your base repositories
│ ├── odoo/ (Main clone of community)
│ └── enterprise/ (Main clone of enterprise)
│
├── 17.0-fix-account-bug-pian/ <-- A new task
│ ├── .venv/ <-- Auto-linked shared UV environment
│ ├── odoo/ <-- Checked out to the task branch
│ └── enterprise/ <-- Checked out to the task branch
│
└── saas-17.4-feature-xyz-mate/ <-- Checking a colleague's code
├── .venv/
├── odoo/
└── enterprise/
Key Features
- Modern TUI: A sleek, reactive All-in-One form built with Textual.
- Smart Branching: Follows the Odoo standard: [VERSION]-[description]-[SUFFIX].
- Dual Repo Support: Simultaneously creates worktrees for both odoo (Community) and enterprise.
- Automated UV Environments:
- Centralizes environments in ~/.envs/[VERSION].
- Automatically runs uv venv and uv pip install if the environment is missing.
- Instantly symlinks .venv into your new worktree folder for automatic VS Code detection.
- Proactive Status Checks: Checks odoo-dev and local remotes to detect if branches already exist before creation.
Installation
1. From PyPI (Recommended)
odoo-wt is officially published on PyPI. The easiest way to install it globally is using uv tool:
uv tool install odoo-wt
To update to the latest release:
uv tool upgrade odoo-wt
2. From Source (For Contributors)
If you want to run the latest unreleased version or contribute to the project:
git clone https://github.com/nd-dew/odoo-wt.git
cd odoo-wt
uv tool install . --force
(Tip: For active development, use uv tool install --editable . --force to see code changes instantly without re-installing.)
Configuration
The tool saves its configuration to ~/.config/odoo-wt.json. You can edit paths directly in the Settings tab within the application.
- wt_root: Where your worktree folders live (e.g., ~/repos/Odoo/wt).
- env_root: Where your centralized global Python environments are stored (e.g., ~/.envs).
- suffix: Your default developer quadrigram (e.g., pian).
Usage
Interactive Mode
Simply run the command with no arguments:
odoo-wt
- Use Tab to switch between Version, Description, and Suffix.
- Type custom... in any dropdown to reveal a custom input field.
- Press Ctrl+S to instantly submit and deploy.
- Press Esc to cancel and exit.
Fast Mode
If you already have a full branch name ready:
odoo-wt 17.0-fix-account-bug-pian
Development Guide
Running Tests
We use pytest for our modern test suite. It covers core logic, file management, and UI rendering via Textual's headless pilot.
# Run all tests
uv run pytest
# Run tests with detailed output
uv run pytest -v
Applying Changes
If you modify the source code, you can apply your changes to your local installation using:
uv tool install . --force
Known Limitations
- Clipboard Interactions (Copy/Paste): Because odoo-wt uses mouse-capture to enable clickable buttons and scrollbars in the terminal, your terminal emulator's native click-to-highlight features are disabled by default.
- To copy text manually: Hold the Shift key while clicking and dragging over the text to bypass the app and use your terminal's native selection, then use Ctrl+Shift+C.
- To paste text: Sometimes native terminal paste (Ctrl+Shift+V or middle-click) events are intercepted unreliably by the underlying framework. If pasting into an input field fails, you may need to type the branch name manually.
Development
To apply changes made to the source:
uv tool install . --force
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_wt-1.2.10.tar.gz.
File metadata
- Download URL: odoo_wt-1.2.10.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4497cb2ca5a2ee9d9f622067acf148c51192960024d465ede6820cad155a0385
|
|
| MD5 |
07f99cbb7e70e61f165d2b59d0dda178
|
|
| BLAKE2b-256 |
c54aa43f3e6c8b3e6fa541fbfbb295f422ca0c4f03735ef6b2c24c8e5d9c9d7b
|
Provenance
The following attestation bundles were made for odoo_wt-1.2.10.tar.gz:
Publisher:
publish.yml on nd-dew/odoo-wt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_wt-1.2.10.tar.gz -
Subject digest:
4497cb2ca5a2ee9d9f622067acf148c51192960024d465ede6820cad155a0385 - Sigstore transparency entry: 1308352354
- Sigstore integration time:
-
Permalink:
nd-dew/odoo-wt@08c26abd43efca76168fc7f43b22bda2820b39dd -
Branch / Tag:
refs/tags/v1.2.10 - Owner: https://github.com/nd-dew
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@08c26abd43efca76168fc7f43b22bda2820b39dd -
Trigger Event:
release
-
Statement type:
File details
Details for the file odoo_wt-1.2.10-py3-none-any.whl.
File metadata
- Download URL: odoo_wt-1.2.10-py3-none-any.whl
- Upload date:
- Size: 27.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9968f22db46dcff41c84f0c004461e90485137ad590ce94d69f2d997b2c7367a
|
|
| MD5 |
5eeb01873c16f623525d1b7bac3beb0c
|
|
| BLAKE2b-256 |
abc3839e76dd0d7c57294f8e1bc6741b9aede19c774b72e50a1e85fac5a39899
|
Provenance
The following attestation bundles were made for odoo_wt-1.2.10-py3-none-any.whl:
Publisher:
publish.yml on nd-dew/odoo-wt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_wt-1.2.10-py3-none-any.whl -
Subject digest:
9968f22db46dcff41c84f0c004461e90485137ad590ce94d69f2d997b2c7367a - Sigstore transparency entry: 1308352520
- Sigstore integration time:
-
Permalink:
nd-dew/odoo-wt@08c26abd43efca76168fc7f43b22bda2820b39dd -
Branch / Tag:
refs/tags/v1.2.10 - Owner: https://github.com/nd-dew
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@08c26abd43efca76168fc7f43b22bda2820b39dd -
Trigger Event:
release
-
Statement type: