[FIX] viin_ai_chat: 62 strings the extractor could never see
Two assertions this PR added could not fail. 'Agent error: %s' is always a
non-empty string and the controller never emits a traceback, so both held no
matter what the code did - written while making tests locale-stable, and breaking
the exact property that work existed to protect. They now assert the CAUSE
survives into the reply. Proven twice: red when the content is emptied, and red
when the friendly wording is kept but the cause dropped - the second is the
regression the old form structurally could not catch.
A fixture string was still wrapped in _(), shipping "No credits left." into the
released catalogue. It is an opaque sentinel now, and the assertion binds to the
exception CLASS surviving the round trip rather than to prose.
The bigger item: 62 user-facing strings across six templates were written as
t-esc="_t('...')" or t-att-title="...", neither of which Odoo's extractor can
see - it reads element text and a fixed attribute allow-list, and the t-att-
form is not in it. The tool-confirm dialog, the first-run banner, the session
rail and the feedback widget were entirely absent from the catalogue. This PR
had demonstrated the fix on ONE string and left the rest, and the new vi_VN.po
then MASKED the gap by making the module look translated. All 62 move into
component getters, and the escape hatch that enabled the pattern is deleted so it
cannot return quietly. Catalogue: viin_ai_chat 95 -> 142 msgids, viin_ai_brain
77 -> 85, every new entry translated.
Three comments this PR added were false. sql_template.description IS rendered -
it has its own notebook page - so the decision to keep it non-translatable stands
but the stated reason did not. And the note added to four manifests claimed a
non-application module gets no Apps tile: core annotates 'images' as a WEBSITE
key, its only reader is the theme-image updater, update_list never copies it, and
the backend tile is icon_image for every module. The reviewer was right and the
comment was wrong; it now says what is true.
Two reds found while working and fixed: a dashboard test that had become
ambient-DB-dependent since the usable-provider resolver landed - it resolves a
provider before reaching the stub, and every provider on the test database is
keyless - now carries its own fixture; and making "Reported" extractable would
have reddened a tour selecting on that word, so the tour binds to a class instead.
| Subbuilds | Name | State | Detail |
|---|---|---|---|
| Build 398400 | Check the quality with Pylint: from test_lint to test_pylint | Killed | Log |
| Build 398401 | At install tests: from account to website_twitter | Killed | Log |
| Build 398402 | Post install tests: step install all modules | Killed | Log |
| Build 398403 | Post install tests: from account to l10n_vn_viin_hr_payroll_meal_account | Killed | |
| Build 398404 | Post install tests: from l10n_vn_viin_hr_payroll_overtime to resource | Killed | |
| Build 398405 | Post install tests: from sale to to_erponline_utility | Killed | |
| Build 398406 | Post install tests: from to_event_project to to_stock_block_quantity | Killed | |
| Build 398407 | Post install tests: from to_stock_equipment to viin_brain | Killed | |
| Build 398408 | Post install tests: from viin_brain_account to viin_features_activate_website | Killed | |
| Build 398409 | Post install tests: from viin_fleet to viin_mail_tracking | Killed | |
| Build 398410 | Post install tests: from viin_maintenance to viin_stock_backdate | Killed | |
| Build 398411 | Post install tests: from viin_stock_internal_transfer to website_twitter | Killed | |
| Build 398412 | Test install all modules without demo data: from account to website_twitter | Killed | Log |
| Create Date | Level | Message |
|---|---|---|
| 07/27/2026 21:00:57 | INFO |
Updated repository Viindoo-odoo
|
| 07/27/2026 21:00:57 | INFO |
Updated repository Viindoo-tvtmaaddons
|
| 07/27/2026 21:00:57 | INFO |
Updated repository Viindoo-erponline-enterprise
|
| 07/27/2026 21:00:57 | INFO |
Updated repository Viindoo-branding
|
| 07/27/2026 21:00:57 | INFO |
Cloned repository Viindoo-ai
|