Skip to content

feat: Deliver eXIP 7.3.0.30 Platform-wide Apps Styling & Containers Consistency EXO-90734 - #574

Merged
akhanfir merged 7 commits into
feature/mipsfrom
deliver-exip-7.3.0.30
Sep 30, 2026
Merged

akhanfir merged 7 commits into
feature/mipsfrom
deliver-exip-7.3.0.30

Conversation

@akhanfir

@akhanfir akhanfir commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

eXIP 7.3.0.30 — Platform-wide Apps Styling & Containers Consistency

Integration PR of the eXip onto feature/mips. Tech Spec: note 51584, revision 4 — board: project 8377 (every story and feedback Tested & Validated on the devx acceptance server; US06 configuration-file precedence under test).

Classification: N1 — client-controlled theme values substituted into the platform-wide branding stylesheet served to every user (BrandingServiceImpl grammar, Less escape, trial compile), configuration-file precedence over the UI, a shared component (stylingInputs) consumed by four editors — max-severity over the full eXip diff. Per ai-review-and-merge.md §5: the approver must be an Architect/Senior Developer who knows this is N1, not an approval on AI review alone; author ≠ approver.

Release order: platform-ui → portal → social → layout → digital-workplace. One PR per repo, same eXip; the commits are cherry-pick -x of the feature/devx commits onto feature/mips, diff-identical to the validated devx state on every touched file, no POM touched.

Knowledge: Meeds-io/eng-standards#194 (draft until develop — portal, platform-ui, social and layout domain refresh, two ledger pitfalls), Meeds-io/eng-standards#196 (two portal pitfalls, approved).

This repo: margins in the page layout editor's styling options and at every level; ApplicationUtils.getStyle writing --appMargin* only for the two application renderers (applicationMargins) and the page container (pageStyle, pageAppMargins for the editor's PageBody); LayoutModel#convertLegacyMarginTokens converting stored mt-N/mb-nN tokens to margin values on the platform scale at read; the layout-editor-* aliases resolving social's shared inputs, stylingInputs a dependency of the seven editor portlets only; the site layout editor's Topbar with the Fix Position when Scrolling switch under the colour and no gradient, a stored gradient ignored at render (first colour, else the Topbar colour); English bundle only. Tests: LayoutModelTest (4) — green on this branch.

Commits (cherry-picked from feature/devx)

  • feat: Shared styling inputs and platform margins EXO-89879
  • fix: Application-only margins, styling inputs loaded by editors only EXO-89879
  • fix: Preview page-level application margins in the page editor EXO-89879
  • fix: Keep the English bundle change only EXO-89879
  • fix: Topbar fix-position option under the colour in site layout editor EXO-90620

Declared on this branch

  • fix: Colour swatch styling served by the styling inputs module EXO-90734 — the rule leaves editor.less (social's StylingInputs skin carries it); no delivery reference left in comments.
  • fix: Styling inputs skin declared by the seven editor portlets EXO-90734 — <additional-module>StylingInputs</additional-module> on the <portlet-skin> of LayoutEditor, SiteLayoutEditor, SectionEditor, SectionTemplates, and new <portlet-skin> entries for PageTemplatesManagement, Portlets, PortletEditor.

🤖 Generated with Claude Code

akhanfir and others added 5 commits September 29, 2026 16:22
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 84d3e17)
…XO-89879

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 3398963)


Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit aa8d9db)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit bcbc1df)
…EXO-90620

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 6b03a62)
@akhanfir
akhanfir requested a review from boubaker September 29, 2026 15:29

@boubaker boubaker left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI review — Round #1

Part of the eXIP 7.3.0.30 delivery review (platform-ui#1010, portal#1326, social#6158, layout#574, digital-workplace#223), reviewed as one delivery against note 51584 (Rev. 4) and board 8377.

Delivery-wide ranking (5 PRs, one eXIP — each finding is posted inline on the PR it belongs to)

# Sev PR Finding
1 🟡 portal#1326 (+layout#574) Grid-cell margins imported from XML are no longer rendered — Architect/PO decision needed
2 🟡 platform-ui#1010 (+social#6158) US09 sub-menu rule misses the mobile bottom sheet, which also lost layout-top-bar
3 🟡 portal#1326 (+social#6158) url() strip needs a closing paren: a truncated legacy value answers 400 on every Branding save
4 🟡 social#6158 .layout-color-picker-swatch CSS stayed in layout's editor skin: unstyled in the Branding drawers
5 🟡 all 5 Change history / decision dialogue in code comments (eXIP 7.3.0.30, Architects Lead decision, PO decision n) — pr-conventions.md §3
6–10 🟢 portal, layout Custom-CSS double append race; unitless size / narrow shadow grammar; template cached for the JVM life; stylingUtils on every page view; 4 labels in two bundles

Every 🟡 above went through an independent refute pass; #1 was narrowed there (WebUI containers never got margins from ModelStyle; cells already stored in DB keep their tokens) and #3 rescoped (the Topbar path is safe, see its thread).

Verified conform

  • Legacy margin read (M9): tokens are read as N×4+20, the stored attribute is ignored, and the tokens are stripped. LayoutModelTest pins the two legacy shapes (XML 16 + mt-n1, editor −4 + mt-n1) to the same −4px. Re-run at head: 4/4, launched directly because mvn -o cannot compile layout-service against the published portal snapshot. Release order portal → layout is therefore mandatory: ApplicationBackgroundStyle#getMarginTop must be published first.
  • --appMargin* gating (pitfall layout/get-style-app-style-is-every-container): written only under the dedicated applicationMargins / pageStyle / pageAppMargins options, never on appStyle, so sections and cells never write it.
  • Moved inputs: re-registered under the existing layout-editor-* tags through async factories, so the view renderer does not pull stylingInputs. The 57 labels moved with their keys unchanged.
  • Topbar gradient: hidden in EditSiteBannerDrawer and cleared on the next save. The render-time fallback matches portal's read path (R10).

What this PR does well

The legacy-margin conversion reads old data without rewriting it (no upgrade plugin, as the note ruled), and it is pinned by a test on both historical shapes. The editor-side pageAppMargins gate shows that the known appStyle pitfall was read and avoided.

Classification: N1 (max-severity across the five PRs): administrator-controlled theme values substituted into the stylesheet served to every user (portal BrandingServiceImpl, bounded by grammar + escape + trial compile), three new file-materialise surfaces (appBackground, appTextTitleBackground, appTextHeaderBackground) with their REST resources; shared styling components across repos (N2 on their own). This integration PR must be approved by an Architect/Senior Developer who knows it is N1 — not merged on AI review alone; author ≠ approver.

🤖 Generated with Claude Code

Comment thread layout-service/src/main/java/io/meeds/layout/model/LayoutModel.java
Comment thread layout-service/src/main/java/io/meeds/layout/model/LayoutModel.java Outdated
Comment thread layout-webapp/src/main/webapp/WEB-INF/gatein-resources.xml


Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@akhanfir

Copy link
Copy Markdown
Contributor Author

@boubaker — round 1 folded in 761d91b4 (LayoutModelTest 4 green locally).

  • 🟡 cell margins — decision (a) taken in portal#1326: cells keep the spacing tokens from ModelStyle#getCellCssClass, so nothing changes here; the Container branch keeps cssClass as is.
  • 🟡 comments — LayoutModel, LayoutModelTest, initComponents.js, LayoutUtils.js (2), ApplicationUtils.js: the scale and the legacy rule are described without the delivery number.
  • swatch — .layout-color-picker-swatch leaves editor.less; social#6158 serves it with the stylingInputs module (merge order social → layout).
  • 🟢 stylingUtils on every page view and the 4 labels in two bundles: noted for the spec resync, unchanged here.

The PR Build still needs portal#1326's 7.3.x-mips-SNAPSHOT (ApplicationBackgroundStyle margin accessors): a re-run after portal merges.

🤖 Generated with Claude Code

@boubaker boubaker left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI review — Round #2 (follow-up)

Head: 761d91b4dc. Fix commits since round 1 re-reviewed in full.

Round 1 finding Status
🟡 Cell-margin companion (legacy conversion covers applications only) ✅ Fixed upstream by decision (a) in portal#1326 (4679d06020 + 5adbbe67f8, verified). Cells keep their spacing tokens and nothing is needed here.
🟡 Change history in comments ✅ Fixed in 761d91b4dc (LayoutModel, LayoutModelTest, initComponents.js, LayoutUtils.js ×2, ApplicationUtils.js). No eXIP 7.3.0.30 is left in layout.
🟢 stylingUtils on every page view · 4 labels in two bundles ➖ Accepted: noted for the spec resync, unchanged here.

New — companion of social#6158's unfiltered <portal-skin> finding

🟡 Medium — once social marks StylingInputs <filtered>true</filtered> (the fix is described in the social#6158 thread), the layout editors only get the checkerboard if their <portlet-skin> names the module. Add <additional-module>StylingInputs</additional-module> to the four <portlet-skin> entries at gatein-resources.xml:32-58 (LayoutEditor, SiteLayoutEditor, SectionEditor, SectionTemplates). Also add a new <portlet-skin> with only that line for PageTemplatesManagement, Portlets and PortletEditor, which have none today. Those are the seven portlets that <depends> on stylingInputs. Merge order social → layout is unchanged.

Verified conform

  • The fix diff (8+/18−) only removes the swatch rule from editor.less and rewords comments.

Classification: N1 (unchanged; max-severity across the five PRs: administrator theme values compiled into the stylesheet every user loads, three new file-materialise surfaces with their REST resources). The fix commits re-entered review and are classified like the rest of the diff. This integration PR must be approved by an Architect/Senior Developer who knows it is N1, not merged on AI review alone; author ≠ approver.

🤖 Generated with Claude Code



Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@akhanfir

Copy link
Copy Markdown
Contributor Author

@boubaker — companion of social#6158 round 2, in 53a8b989: <additional-module>StylingInputs</additional-module> on LayoutEditor, SiteLayoutEditor, SectionEditor, SectionTemplates, and new <portlet-skin> entries for PageTemplatesManagement, Portlets, PortletEditor — the seven portlets whose <depends> names stylingInputs. The 🟢 on stylingUtils at page view and the four duplicated labels stay noted for the spec resync.

🤖 Generated with Claude Code

@boubaker boubaker left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI review — Round #3 (final)

Head: 53a8b9891a. Fix commit 53a8b9891a re-reviewed.

Round 2 finding Status
🟡 Companion: editor portlets must name StylingInputs ✅ Fixed in 53a8b9891a. <additional-module>StylingInputs</additional-module> is on the four existing <portlet-skin> entries, and there are new entries for PageTemplatesManagement, Portlets and PortletEditor. Those are exactly the seven portlets that <depends> on stylingInputs, and the names match portlet.xml.
🟢 stylingUtils on every page view · 4 labels in two bundles ➖ Accepted for the spec resync (thread left open for a human to close).

All findings from previous rounds are resolved, nothing outstanding from the AI review side on this PR.

Delivery status (5 PRs): platform-ui#1010, digital-workplace#223, portal#1326, social#6158 and layout#574 are all closed on the AI review side. Merge order is platform-ui → portal → social → layout → digital-workplace: layout cannot build until portal's snapshot is published, and it needs social's StylingInputs skin.

Classification: N1 (unchanged; max-severity across the five PRs: administrator theme values compiled into the stylesheet every user loads, three new file-materialise surfaces with their REST resources). The fix commits re-entered review and are classified like the rest of the diff. This integration PR must be approved by an Architect/Senior Developer who knows it is N1, not merged on AI review alone; author ≠ approver.

🤖 Generated with Claude Code

@akhanfir
akhanfir merged commit 5110cb0 into feature/mips Sep 30, 2026
4 of 6 checks passed
@akhanfir
akhanfir deleted the deliver-exip-7.3.0.30 branch September 30, 2026 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants