Skip to content
Open

17.0 #49

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cf11d78
sec(17.0.7.0.0): fix 4 critical issues raised in public security audit
arunrajiah Apr 26, 2026
0d5f7f5
style: apply ruff format to security release files
arunrajiah Apr 27, 2026
20202bf
docs: add SECURITY.md with private disclosure policy
arunrajiah Apr 28, 2026
36466ca
sec(17.0.8.0.0): fix 5 issues from internal post-release audit
arunrajiah Apr 28, 2026
7482a73
sec(17.0.9.0.0): defence-in-depth pass — token scrub, sudo_env rename…
arunrajiah Apr 28, 2026
639c0e1
docs(listing): redesign for the Odoo App Store HTML sanitiser
arunrajiah Apr 28, 2026
7c131ba
feat(settings): expand author strip into 4-card community panel
arunrajiah Apr 28, 2026
4103f5c
docs: reposition as employee-empowerment tool, not generic AI agent
arunrajiah Apr 28, 2026
2d64314
release: 17.0.10.0.0 - repositioning + community panel + listing fix
arunrajiah Apr 30, 2026
8f10324
release: 17.0.11.0.0 - polish pass (banner, CI hardening, listing lin…
arunrajiah May 2, 2026
c72c710
docs(readme): refresh to match the current 17.0.11 state, add banner
arunrajiah May 2, 2026
2b2e9e6
feat(admin): redesign Linked Users + Audit Log views (17.0.12.0.0)
arunrajiah May 2, 2026
d572cfe
chore: prep for 18.0 branch (CI trigger, SECURITY.md, CHANGELOG header)
arunrajiah May 2, 2026
49c2da0
sec(17.0.13.0.0): scope guard - refuse off-topic LLM requests
arunrajiah May 3, 2026
5cb0716
feat(17.0.14.0.0): employee-self-service tool sprint
arunrajiah May 3, 2026
72e779c
docs(readme): elevate voice messages, add internal security audit as …
arunrajiah May 3, 2026
2569b43
sec(17.0.15.0.0): internal audit fixes - 2 High, 2 Medium, 1 hygiene
arunrajiah May 3, 2026
262e298
docs(readme): add Sizing & capacity section
arunrajiah May 3, 2026
772a4b3
docs: 18.0 listing live on Odoo App Store
arunrajiah May 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 44 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ name: CI

on:
push:
branches: [main, develop]
# Per-version branches (17.0, 18.0, ...) get the same CI as main so a
# direct push -- e.g. a security backport -- runs the full check set.
branches: [main, develop, "*.0"]
pull_request:

jobs:
Expand Down Expand Up @@ -46,3 +48,44 @@ jobs:
else:
print(f"All XML files are well-formed ({len(list(pathlib.Path('odoopilot').rglob('*.xml')))} files checked).")
EOF

listing-renderable:
name: App Store listing renderable
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lint listing for App Store sanitiser compatibility
# Catches the three patterns the App Store HTML sanitiser breaks:
# background declarations (stripped silently), white text (invisible
# once the matching dark background is stripped), and styled <a>
# tags (rewritten to non-clickable <span href>).
run: python3 scripts/check_listing_rendering.py

security-scan:
name: Static security scan
runs-on: ubuntu-latest
# Continue running other jobs even if a finding lands so a noisy false
# positive cannot block an unrelated PR. Real findings still surface in
# the job log; the goal here is ongoing visibility rather than a hard
# gate. Tighten to a hard gate once the rule set is tuned.
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install scanners
run: pip install bandit semgrep
- name: bandit
# -ll = report Medium and High severity only; skip Low (mostly noise
# like "subprocess used"). -ii = same threshold for confidence.
# Excludes test files because security tests deliberately exercise
# patterns that look risky in isolation (e.g. fixtures with weak
# secrets).
run: bandit -r odoopilot -x odoopilot/tests -ll -ii
- name: semgrep
# Default config covers OWASP Top 10 + common Python pitfalls.
# --error makes a real finding fail the job (caught by
# continue-on-error at the job level so it stays advisory until we
# tune the rule set).
run: semgrep --config=auto --error --skip-unknown-extensions odoopilot
Loading
Loading