From a2277b481cda3e0659013adbf0e49d00dd9af1c1 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Thu, 4 Jun 2026 16:51:44 -0400 Subject: [PATCH 1/2] fix(fusion_claims): service-booking wizard scrolls + responsive + padded fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported on the live wizard: no scroll on small screens, not responsive, fields look unpadded. - .o_service_booking: min-height:100% -> height:100% so the root is capped to the action area and overflow:auto scrolls INTERNALLY (min-height let it grow to content height, so the clipping action container never scrolled). - input/select/textarea.f: padding 10px 12px !important + line-height 1.4 so Odoo's backend input normalisation can't strip the field padding. - add a <=560px media query collapsing the .two/.three sub-grids, wrapping the time picker, and tightening margins (the main .grid already collapses at 780px). - bump version 19.0.9.4.0 -> 19.0.9.5.0 (asset cache-bust). Also harden scripts/verify_service_booking.sh: force-compile web.assets_backend + web.assets_web_dark on the clone after tests, so a broken SCSS fails the deploy gate BEFORE prod (a bad stylesheet would break the whole backend bundle; -u does not compile assets — Odoo compiles them lazily). Co-Authored-By: Claude Opus 4.8 (1M context) --- fusion_claims/__manifest__.py | 2 +- .../static/src/scss/service_booking.scss | 18 ++++++++++++++++-- scripts/verify_service_booking.sh | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/fusion_claims/__manifest__.py b/fusion_claims/__manifest__.py index 5c9d3725..86e95d55 100644 --- a/fusion_claims/__manifest__.py +++ b/fusion_claims/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Claims', - 'version': '19.0.9.4.0', + 'version': '19.0.9.5.0', 'category': 'Sales', 'summary': 'Complete ADP Claims Management with Dashboard, Sales Integration, Billing Automation, and Two-Stage Verification.', 'description': """ diff --git a/fusion_claims/static/src/scss/service_booking.scss b/fusion_claims/static/src/scss/service_booking.scss index 65fc2e50..307ece27 100644 --- a/fusion_claims/static/src/scss/service_booking.scss +++ b/fusion_claims/static/src/scss/service_booking.scss @@ -16,7 +16,10 @@ color: var(--sb-text); font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, system-ui, sans-serif; font-size: 14px; - min-height: 100%; + // Fill the action area and scroll INTERNALLY. min-height let the root grow + // to its content height so the (clipping) action container never scrolled; + // height:100% caps it so overflow:auto engages on small screens. + height: 100%; overflow: auto; * { box-sizing: border-box; } @@ -65,6 +68,14 @@ .body { padding: 20px 24px 6px; } .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } @media (max-width: 780px) { .grid { grid-template-columns: 1fr; } } + @media (max-width: 560px) { + .wrap { margin: 12px auto; padding: 0 10px; } + .body { padding: 14px 16px 4px; } + .topbar { padding: 14px 16px; } + .foot { padding: 14px 16px; flex-wrap: wrap; } + .two, .three { grid-template-columns: 1fr; } + .timepick { flex-wrap: wrap; } + } .card { background: var(--sb-card); @@ -109,8 +120,11 @@ color: var(--sb-text); border: 1px solid var(--sb-field-border); border-radius: 9px; - padding: 9px 11px; + // !important so Odoo's backend input normalisation can't strip the + // field padding inside a client action. + padding: 10px 12px !important; font-size: 13.5px; + line-height: 1.4; font-family: inherit; outline: none; transition: border .15s, box-shadow .15s; diff --git a/scripts/verify_service_booking.sh b/scripts/verify_service_booking.sh index 99ae0ec6..cf42719b 100755 --- a/scripts/verify_service_booking.sh +++ b/scripts/verify_service_booking.sh @@ -140,6 +140,22 @@ else TESTS_OK=0; err "TESTS FAILED (exit $?)"; grep -E 'FAIL|ERROR|Traceback' "$LOG" | tail -40 || true fi +# Asset-bundle compile check: a broken SCSS/SASS breaks the ENTIRE +# web.assets_backend bundle (the whole backend UI for every user), and `-u` does +# NOT compile it — Odoo compiles assets lazily at request time. Force-compile +# both bundles here so a stylesheet error fails the gate BEFORE prod, not after. +# (CLAUDE.md asset cache-busting #3.) +if [[ "${TESTS_OK:-0}" == "1" ]]; then + c "Compile asset bundles on clone (catches SCSS errors)" + echo "env['ir.qweb']._get_asset_bundle('web.assets_backend').css(); env['ir.qweb']._get_asset_bundle('web.assets_web_dark').css(); print('ASSETS_COMPILED_OK')" \ + | dexec -i "$APP" odoo shell -d "$CLONE_DB" --db_host db --db_port 5432 --db_user "$PGUSER" --db_password "$PGPW" --addons-path="$ADDONS_PATH" >>"$LOG" 2>&1 || true + if grep -q ASSETS_COMPILED_OK "$LOG"; then + ok "Asset bundles compiled OK" + else + TESTS_OK=0; err "ASSET COMPILE FAILED — see $LOG"; grep -iE 'error|scss|sass|Traceback' "$LOG" | tail -25 || true + fi +fi + echo c "VERIFY RESULT" if [[ "${TESTS_OK:-0}" == "1" ]]; then ok "✅ Clone-verify GREEN (full log: $LOG)"; else err "❌ Clone-verify RED (full log: $LOG)"; fi From a10b7425f75ec3882f510fa95bfd20aae8114d66 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Thu, 4 Jun 2026 16:57:38 -0400 Subject: [PATCH 2/2] =?UTF-8?q?fix(scripts):=20asset-compile=20gate=20?= =?UTF-8?q?=E2=80=94=20odoo=20shell=20needs=20--no-http=20(port=208069=20h?= =?UTF-8?q?eld=20by=20live=20app)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The compile gate's 'odoo shell' tried to bind 8069 (the running app holds it) and died with 'Address already in use' before compiling, false-failing the gate. Add --no-http --http-port=0 --gevent-port=0 (same as the test run) so the shell loads the registry and force-compiles the bundles without binding a port. Co-Authored-By: Claude Opus 4.8 (1M context) --- scripts/verify_service_booking.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/verify_service_booking.sh b/scripts/verify_service_booking.sh index cf42719b..6df6fbda 100755 --- a/scripts/verify_service_booking.sh +++ b/scripts/verify_service_booking.sh @@ -148,7 +148,7 @@ fi if [[ "${TESTS_OK:-0}" == "1" ]]; then c "Compile asset bundles on clone (catches SCSS errors)" echo "env['ir.qweb']._get_asset_bundle('web.assets_backend').css(); env['ir.qweb']._get_asset_bundle('web.assets_web_dark').css(); print('ASSETS_COMPILED_OK')" \ - | dexec -i "$APP" odoo shell -d "$CLONE_DB" --db_host db --db_port 5432 --db_user "$PGUSER" --db_password "$PGPW" --addons-path="$ADDONS_PATH" >>"$LOG" 2>&1 || true + | dexec -i "$APP" odoo shell -d "$CLONE_DB" --db_host db --db_port 5432 --db_user "$PGUSER" --db_password "$PGPW" --addons-path="$ADDONS_PATH" --no-http --http-port=0 --gevent-port=0 >>"$LOG" 2>&1 || true if grep -q ASSETS_COMPILED_OK "$LOG"; then ok "Asset bundles compiled OK" else