Branch

Pending: 0 Building: 0 Running: 4 Failed: 191

[FIX] viin_brand_hr_expense: restore empty-state image size on v18 On v18 the core placeholder %o-nocontent-init-image no longer declares width/height (each consumer must set its own, e.g. core sets 120x80). The branded phone-bill :before only set background + background-size, so it collapsed to height:0 and the image was invisible on the My Expenses empty-state. Add explicit width:300px / height:230px matching the background-size. Caught by live-browser render verification. Claude-Session: https://claude.ai/code/session_01FsCCRaAZ4Tb84s2UdQQQS2

PR: [FIX] viin_brand_hr_expense: re-enable on 18.0 + refresh live_test_url

Committer: David Tran

Instance ID: 0

PR State: merged

Delete Date:

age: up-time:

[FIX] viin_brand_hr_expense: restore empty-state image size on v18 On v18 the core placeholder %o-nocontent-init-image no longer declares width/height (each consumer must set its own, e.g. core sets 120x80). The branded phone-bill :before only set background + background-size, so it collapsed to height:0 and the image was invisible on the My Expenses empty-state. Add explicit width:300px / height:230px matching the background-size. Caught by live-browser render verification. Claude-Session: https://claude.ai/code/session_01FsCCRaAZ4Tb84s2UdQQQS2

PR: [FIX] viin_brand_hr_expense: re-enable on 18.0 + refresh live_test_url

Committer: David Tran

Instance ID: 0

PR State: merged

age: Not finished up-time: Not finished

[FIX] viin_brand: refresh live_test_url to v18demo Point live_test_url / live_test_url_vi_VN at v18demo-int / v18demo-vn (were still v17demo) on the 18.0 branding modules. Claude-Session: https://claude.ai/code/session_01FsCCRaAZ4Tb84s2UdQQQS2

PR: [FIX] viin_brand_hr_expense: re-enable on 18.0 + refresh live_test_url

Committer: David Tran

Instance ID: 0

PR State: merged

age: up-time: Not finished

[FWD] branding: forward-port 17.0 styling fixes to 18.0 Forward-port 8 white-label frontend commits (b1e478d..a83807d) from 17.0 onto 18.0: viin_brand_mail / viin_brand_common / viin_brand_pos / web_responsive SCSS plus the apps_menu preferences OWL group-guard. Platform-drift adaptations for v18: - viin_brand_mail manifest: register new message/message_seen_indicator overrides and move the messaging_menu asset anchor to mail/static/src/core/public_web (v18 relocated it from core/web), keeping the v18 mail.assets_public + im_livechat bundles. - apps_menu_preferences.esm.js: re-graft the base.group_system visibility guard (useState + onWillStart + t-if) onto the v18 @web/core/user singleton idiom and static template. - viin_brand_pos/style.scss: drop dead v17-era POS highlight rules. Verified on a live v18 instance: install-clean, asset bundles build with zero console errors, the apps_menu OWL component mounts, and the white-label styling applies. Claude-Session: https://claude.ai/code/session_01Vxr24zjvJXj5gmv6vgzPPd

PR: [FWD] branding: forward-port 17.0 styling fixes to 18.0

Committer: David Tran

Instance ID: 0

PR State: merged

Delete Date:

age: up-time:

[FIX] viin_brand_website_slides: fix bad UI

PR: [FIX][18.0] viin_brand_website_slides: fix bad UI

Committer: Viinbot

Instance ID: 0

PR State: open

Delete Date:

age: up-time:

[IMP] web_responsive: change home menu to action

PR: [IMP][18.0] web_responsive: change home menu to action

Committer: Huy Lee

Instance ID: 0

PR State: merged

age: up-time:

[IMP] web_responsive: change home menu to action

PR: [IMP][18.0] web_responsive: change home menu to action

Committer: Huy Lee

Instance ID: 0

PR State: merged

age: up-time:

[IMP] web_responsive: change home menu to action

PR: [IMP][18.0] web_responsive: change home menu to action

Committer: Huy Lee

Instance ID: 0

PR State: merged

age: up-time:

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time: Not finished

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[FIX] viin_brand: change odoo email template to viindoo

PR: [FIX][18.0] viin_brand: change odoo email template to viindoo

Committer: Tuyentran12345

Instance ID: 0

PR State: merged

age: up-time:

[FIX] viin_brand: change odoo email template to viindoo

PR: [FIX][18.0] viin_brand: change odoo email template to viindoo

Committer: Tuyentran12345

Instance ID: 0

PR State: merged

age: up-time:

[FIX] viin_brand: bad UI 2

PR: [FIX][18.0] viin_brand: bad UI 2

Committer: Tuyentran12345

Instance ID: 0

PR State: merged

age: up-time:

[FIX] viin_brand: bad UI 2

PR: [FIX][18.0] viin_brand: bad UI 2

Committer: Tuyentran12345

Instance ID: 0

PR State: merged

age: up-time: Not finished

[MISC] viin_brand_website_forum: add viindoo logo and texts

PR: [MISC][18.0] viin_brand_website_forum: add viindoo logo and texts

Committer: Tuyentran12345

Instance ID: 0

PR State: open

age: up-time:

[FIX] viin_brand_auth_signup: Header values may not contain linefeed

PR: [ADD][16.0] viin_brand_auth_signup: Viindoo Branding for module Signup

Committer: Viinbot

Instance ID: 0

PR State: open

age: up-time:

[IMP] viin_brand_auth_totp_mail: fix test pylint

PR: [IMP][16.0] viin_brand_auth_totp*: Viindoo debranding for module auth_totp*

Committer: Viinbot

Instance ID: 0

PR State: open

age: up-time:

[IMP] viin_brand_calendar: fix test pylint

PR: [ADD][16.0] viin_brand_calendar: Calendar Branding For Viindoo

Committer: Viinbot

Instance ID: 0

PR State: open

age: up-time:

Update viin_brand_hr_skills/__manifest__.py

PR: [IMP][16.0] viin_brand_hr*: replace odoo brand by viindoo

Committer: GitHub

Instance ID: 0

PR State: open

age: up-time:

[FIX] web_responsive: mv text-input.scss to viin_brand_mail

PR: [FIX] web_responsive: mv text-input.scss to viin_brand_mail

Committer: David Tran

Instance ID: 0

PR State: merged

age: up-time:

[FIX] web_responsive: fix show scroll in text input

PR: [FIX][16.0] web_responsive: fix show scroll in text input

Committer: TuyenTran

Instance ID: 0

PR State: merged

age: up-time:

[FIX] web_responsive: fix show scroll in text input

PR: [FIX][16.0] web_responsive: fix show scroll in text input

Committer: TuyenTran

Instance ID: 0

PR State: merged

age: up-time:

[FIX] web_chatter_position: Fixed an issue where form height was lost in the Note app.

PR: [FIX][16.0] web_chatter_position: Fixed an issue where form height was lost…

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time:

[FIX] web_chatter_position: Fixed an issue where form height was lost in the Note app.

PR: [FIX][16.0] web_chatter_position: Fixed an issue where form height was lost…

Committer: quyen

Instance ID: 0

PR State: merged

age: Not finished up-time: Not finished

[FIX] web_chatter_position: Fixed an issue where form height was lost in the Note app.

PR: [FIX][16.0] web_chatter_position: Fixed an issue where form height was lost…

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time: Not finished

[FIX] web_chatter_position: Fixed an issue where form height was lost in the Note app.

PR: [FIX][16.0] web_chatter_position: Fixed an issue where form height was lost…

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time:

[MISC] *: enrich demo data

PR: [MISC] *: enrich demo data

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[IMP] web_responsive: adjust button styles and alignment in the chatter The purpose is to reduce spacing so that all icons and buttons fit within the window without having to scroll.

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[IMP] web_responsive: adjust button styles and alignment in the chatter The purpose is to reduce spacing so that all icons and buttons fit within the window without having to scroll.

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: Not finished up-time: Not finished

[IMP] web_responsive: adjust button styles and alignment in the chatter The purpose is to reduce spacing so that all icons and buttons fit within the window without having to scroll.

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[UPD] web_responsive: update code from upstream

PR: [UPD] web_responsive: update code from upstream

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

Update __manifest__.py

PR: [IMP][17.0] web_responsive: imp ux/ui

Committer: GitHub

Instance ID: 0

PR State: merged

age: Not finished up-time: Not finished

[IMP] web_responsive: imp ux/ui

PR: [IMP][17.0] web_responsive: imp ux/ui

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time:

[IMP] web_responsive: imp ux/ui

PR: [IMP][17.0] web_responsive: imp ux/ui

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time:

[IMP] viin_brand_common: Display icon only on small screen

PR: [IMP] viin_brand_common: Display icon only on small screen

Committer: Giang Pham

Instance ID: 0

PR State: merged

age: up-time: Not finished

[FIX] web_responsive: Don't override z-index of toolbar Before this changes when trying to edit a message using web_editor, the toolbar is showed behind the wizard. After this changes, it is showed correctly.

PR: [FIX] web_responsive: Don't override z-index of toolbar

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time: Not finished

[FIX] viin_brand_pos: fix the scss issues.

PR: [FIX][17.0] viin_brand_pos: fix the scss issues.

Committer: Nguyễn Trung Tuấn

Instance ID: 0

PR State: merged

age: up-time:

[FIX] viin_brand_mrp: Fix Bad UI

PR: [FIX][17.0] viin_brand_mrp: Fix Bad UI

Committer: Tuyentran12345

Instance ID: 0

PR State: closed

age: up-time:

[FIX] viin_brand_mrp: Fix Bad UI

PR: [FIX][17.0] viin_brand_mrp: Fix Bad UI

Committer: Tuyentran12345

Instance ID: 0

PR State: closed

age: Not finished up-time: Not finished

[FIX] viin_brand_common: fix ui badge

PR: [FIX][17.0] viin_brand_common: fix badge ui

Committer: quyen

Instance ID: 0

PR State: merged

age: up-time: Not finished

[UPG] viin_brand*: upgrade to version 19.0

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: Roy Le

Instance ID: 0

PR State: open

age: up-time:

[FIX] web_responsive: converting OWL component props/template to static class

PR: [UPD] web_responsive: merged from OCA at 19/06/2026

Committer: Roy Le

Instance ID: 0

PR State: merged

Delete Date:

age: up-time:

[UPD] web_responsive: merged from OCA at 19/06/2026

PR: [UPD] web_responsive: merged from OCA at 19/06/2026

Committer: Roy Le

Instance ID: 0

PR State: merged

age: up-time:

[REM] viin_brand_*: drop 4 new branding modules (diagnostic)

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[REM] viin_brand_*: drop 4 new modules (runbot isolation experiment) Throwaway branch to isolate whether the four auto_install modules added in 224e02a (viin_brand_gamification, viin_brand_lunch, viin_brand_account_peppol, viin_brand_website_crm_partner_assign) are what tips the non-deterministic to_base icon-cache failure on runbot. to_base is kept at the 19.0 base (old current_test guard) so the only changed variable is the module set. Not for merge.

PR: WIP 19 exp drop 4 new modules

Committer: SonCrits

Instance ID: 0

PR State: closed

age: up-time:

[IMP] viin_brand_{}: replace SQL branding hooks with XML data overrides Replace _register_hook + post_init_hook + raw SQL REPLACE patterns with declarative XML data overrides for all branding mail.template and QWeb templates. Server restart no longer overwrites customer customizations because <data noupdate="1"> respects existing records. viin_brand_mail._render_field runtime override is kept as defense-in-depth safety net. Removed: - viin_brand: helper function replace_odoo_branding_in_mail_templates in __init__.py - viin_brand_mail: _register_hook method + import in models/mail_template.py (keep _render_field safety net) - viin_brand_auth_signup: post_init_hook from __init__.py and __manifest__.py - viin_brand_calendar: post_init_hook from __init__.py and __manifest__.py Added 4 new branding modules with mail.template XML overrides: - viin_brand_gamification: email_template_badge_received - viin_brand_lunch: lunch_order_mail_supplier - viin_brand_website_crm_partner_assign: email_template_lead_forward_mail - viin_brand_account_peppol: mail_template_peppol_registration + QWeb layout (mail_notification_layout_with_responsible_signature_and_peppol) Modified existing branding modules with new XML data overrides: - viin_brand_account: new data/mail_template_data.xml with mail_template_einvoice_notification + mail_template_invoice_subscriber - viin_brand_auth_signup: append 3 records (set_password_email, mail_template_user_signup_account_created, portal_set_password_email) + replace OdooBot fallback with ViindooBot in set_password_email - viin_brand_auth_totp_mail: new xpath override account_security_alert with viindoo.com 2FA doc URL - viin_brand_calendar: new data/ folder with 4 calendar templates (meeting_invitation, changedate, update, reminder) - viin_brand_website_profile: new data/mail_template_data.xml with validation_email Manifest cluster convention compliance: - version '0.1' (Odoo auto-prepends to '19.0.0.1' as latest_version) - price 0.0 (branding modules are not-for-sale, internal/customer-service only) - license 'OPL-1', currency 'EUR', auto_install True, category 'Hidden' - bilingual fields name_vi_VN, summary_vi_VN, description_vi_VN required for all 4 new modules - live_test_url uses v17demo-{int,vn}.viindoo.com (v19demo server not yet live; v17demo verified alive to avoid dead links on Apps Store) - viin_brand_account and viin_brand_website_profile depend on viin_brand_mail (transitively brings viin_brand via viin_brand_common); 'viin_brand' is no longer listed explicitly to avoid redundant declaration, matching the 6 other branding modules in scope - viin_brand_account_peppol QWeb override uses position="attributes" + position="replace" mode="inner" to preserve any future attributes Odoo may add to the target node - t-att-href with Python expression preferred over t-attf-href interpolation for raw URL fields Test coverage: - Fresh DB install: 12/12 scope modules installed, 0 ParseError, 0 Traceback - SQL verify mail.template debrand: 0 rows in scope (auth_signup, auth_totp_mail, account, account_peppol, gamification, website_crm_partner_assign, website_profile, lunch, calendar) - Automation tests --test-enable: 5010/5016 passed; 6 failures all in core Odoo CE (survey, project, base barcode, account_payment, calendar, website mass_mailing snippet) — pre-existing, unrelated to branding

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[IMP] viin_brand_auth_totp_mail: replace post_init_hook with XML data override

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

Apply suggestion from @royle-vietnam

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: GitHub

Instance ID: 0

PR State: open

age: up-time:

Apply suggestion from @royle-vietnam

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: GitHub

Instance ID: 0

PR State: open

age: Not finished up-time: Not finished

[UPG] viin_brand_{}: upgrade to version 19.0

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[UPG] viin_brand_{}: upgrade to version 19.0

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[UPG] viin_brand_{}: upgrade to version 19.0

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[I18N] viin_brand_*: export translate when upgrade to 19

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time: Not finished

[IMP] viin_brand: add viin bot assistant

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[IMP] viin_brand_*: debrand Odoo in mail.template email content Restore email template debranding that was dropped since 17.0. mail.template body_html (type="html", stored as jsonb) cannot be xpath'd like QWeb <template> views, so two mechanisms are used: - _register_hook: raw SQL REPLACE on jsonb::text after all modules loaded, fixing stored body_html for the backend form view - _render_field override: runtime string replacement when rendering emails, as a safety net for Reset Template or new templates Also add QWeb xpath override for website_slides channel invite template (which IS a <template> view, not a mail.template record). Simplify mail_template_terms in apriori.py: replace fragile Markup-based exact HTML matching with generic plain string patterns.

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time:

[FIX] viin_brand_mail: fix post-install test failures for OdooBot branding In the runbot post-install test workflow, modules are installed without --test-enable, so post_init_hook never reverts ViindooBot back to OdooBot. The DB keeps ViindooBot but Odoo core tests expect OdooBot. Add post_load() that patches MailCommon.setUpClass to revert partner_root to OdooBot at the start of each test class. This fixes all failing tests in im_livechat, mail, test_discuss_full and test_mail without skipping any test or patching individual methods.

PR: [19.0][UPG] viin_brand_*: upgrade to 19

Committer: SonCrits

Instance ID: 0

PR State: open

age: up-time: