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