feat: Deliver eXIP 7.3.0.30 Platform-wide Apps Styling & Containers Consistency EXO-90734 - #574
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 84d3e17)
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)
boubaker
left a comment
There was a problem hiding this comment.
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.LayoutModelTestpins the two legacy shapes (XML 16 +mt-n1, editor −4 +mt-n1) to the same −4px. Re-run at head: 4/4, launched directly becausemvn -ocannot compile layout-service against the published portal snapshot. Release order portal → layout is therefore mandatory:ApplicationBackgroundStyle#getMarginTopmust be published first. --appMargin*gating (pitfalllayout/get-style-app-style-is-every-container): written only under the dedicatedapplicationMargins/pageStyle/pageAppMarginsoptions, never onappStyle, 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 pullstylingInputs. The 57 labels moved with their keys unchanged. - Topbar gradient: hidden in
EditSiteBannerDrawerand 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
|
@boubaker — round 1 folded in
The PR Build still needs portal#1326's 🤖 Generated with Claude Code |
boubaker
left a comment
There was a problem hiding this comment.
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.lessand 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
|
@boubaker — companion of social#6158 round 2, in 🤖 Generated with Claude Code |
boubaker
left a comment
There was a problem hiding this comment.
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
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 (
BrandingServiceImplgrammar, 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. Perai-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 -xof thefeature/devxcommits ontofeature/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.getStylewriting--appMargin*only for the two application renderers (applicationMargins) and the page container (pageStyle,pageAppMarginsfor the editor'sPageBody);LayoutModel#convertLegacyMarginTokensconverting storedmt-N/mb-nNtokens to margin values on the platform scale at read; thelayout-editor-*aliases resolvingsocial's shared inputs,stylingInputsa 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)Declared on this branch
editor.less(social'sStylingInputsskin carries it); no delivery reference left in comments.<additional-module>StylingInputs</additional-module>on the<portlet-skin>ofLayoutEditor,SiteLayoutEditor,SectionEditor,SectionTemplates, and new<portlet-skin>entries forPageTemplatesManagement,Portlets,PortletEditor.🤖 Generated with Claude Code