Skip to content

Merge Icon Colorization - EXO-90342 - eXIP7.3.0.31 - #580

Merged
MayTekayaa merged 4 commits into
developfrom
backport/EXO-90342-icon-colorization
Oct 12, 2026
Merged

MayTekayaa merged 4 commits into
developfrom
backport/EXO-90342-icon-colorization

Conversation

@MayTekayaa

Copy link
Copy Markdown
Contributor

eXIP 7.3.0.31 — Icon Colorization

Integration PR of the eXip onto feature/mips. Tech Spec: note 51586 — board: project 8381 (every story Tested & Validated on the devx acceptance server; US08's D8 and the D6 placeholder ruling await the spec resync).

Classification: N1 at 1fcd87c — the /classify run over the full eXip diff of the delivery branches against feature/mips, confirming the Tech Spec's proposal: administrator- and editor-entered colour values rendered for every viewer (the branding stylesheet, the inline --appIconColor), with layout's LayoutStyleValidator rewritten on that trust boundary and extended to the site layout save; the portal attribute and theme keys N2 on their own, the rest N3 — max-severity over the full 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 → commons-exo → portal → social → layout → digital-workplace, then the audit PRs (agenda, analytics, app-center, content, documents, gamification, notes, onlyoffice, processes, task, wallet) in any order. One PR per repo, same eXip; the cherry-picks 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; the declared commits listed below, where present, are review fixes made on this branch.

Knowledge: Meeds-io/eng-standards#222 and #233 (the ledger pitfalls of the eXip, drafts until develop), and Meeds-io/eng-standards#321 (the domain refresh of portal, platform-ui, social and layout with four delivery checks, draft until develop).

This repo: the Icon row in the page, application and site section editors (placeholder = the colour the level inherits, read with getThemeColor at the document root or from the parent container), --appIconColor written by getStyle, LayoutStyleValidator validating every style value on the page and the site layout save paths (hex-only icon colour, the <top>@<middle> background pair, 400 from SiteLayoutRest), and the site navigation visibility icons on the cascade.

Commits (cherry-picked from feature/devx)

Declared commits (fixes on this branch, round 1)

  • chore: Code comments keep their invariant and drop the eXip tag EXO-90342 — 1fcd87c: test comments only, no code change

🤖 Generated with Claude Code

MayTekayaa and others added 4 commits October 12, 2026 14:28
…90337 (#576)

**Why**

eXIP 7.3.0.31 US04 (EXO-90337, note 51586 §4 *Access*, *Renderers*, §2
*Security*): the Edit Page drawer and the application editor offer the
Icon row of the Text section, and saving applies the colour to that
page's icons or to that app's icons only. The site banner, sidebar and
application drawers render the same shared input, so they get the row
too.

**How**

- The five drawers pass `custom-icon` to the shared text input; the row
stays empty when the section is switched on and stores a value only when
the user picks one (D6).
- `LayoutModel` and `EntityMapper` carry `iconColor` like the text
colour; a container whose only custom value is the icon colour still
gets a `css-style`.
- `ApplicationUtils.getStyle` emits `--appIconColor` where it emits
`--appTextColor`, so a page value is inherited by its applications and
an application value wins; `LayoutUtils.applyContainerStyle` copies the
field.
- `LayoutStyleValidator` (new): the page save's style validation, moved
as is and shared with `SiteLayoutService.updateSiteLayout`, which
validated nothing before; the icon colour is hex-only (D7), and a sticky
section's `top@middle` scroll colours are checked half by half.
`SiteLayoutRest` maps the refusal to a 400 as the page endpoint does.
- Tests: the model round trip, the hex-only refusal on page and site,
the sticky colours accepted, the 400 on the site endpoint.

Depends on Meeds-io/portal's `ModelStyle.iconColor` under the same task
id.

Knowledge: owed by the eXIP's knowledge update (EXO-90341), gated at the
`feature/mips` integration PR.

This change is classified N1 at bd41ff7: the validator between
editor-supplied style values and the inline CSS every viewer receives is
rewritten and widened to the site save path. Its approver must be an
Archi/Dev who knows it is N1, not an approval on AI review alone, and
must not be the author.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 4a857b6)
(cherry picked from commit 48dc650)
…our EXO-90340 (#577)

**Why**

eXIP 7.3.0.31 US07 (EXO-90340): every icon honours the configured icon
colour. The site-navigation icons that still carried a neutral
hard-coded colour are rebased on platform-ui's `@iconColor` chain,
`var(--appIconColor, var(--allPagesBaseIconColor, <built-in>))`, so they
follow the container keys of US02 and US03 and keep the platform grey
when none is set.

**How**

- `NodeItem.vue`: the visibility and access icons lose `color="grey"`
and `dark` (which would have painted them white).

Left as they are: `disabled--text` on system items, success, error,
white and primary icons.

Verified: Less compiles and the war builds; deployed on a local server.

Knowledge: owed at the `feature/mips` integration PR — the US07 audit's
two lessons (a text helper class painting an icon outside the chain, an
SVG image used as an icon) go to the eng-standards PR the delivery owes.

This change is classified N3 at c66a3cb: no REST/DAO/schema/ACL
surface touched (`classification.md` §3), stylesheet and template
changes only; the delivery is N1 by max-severity at the `feature/mips`
integration PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 2278e4b)
(cherry picked from commit 3a27187)
…herits EXO-90337 (#578)

**Symptom**

With a Page & Apps icon colour set in Branding, the Edit Page drawer's
Icon row shows its dimmed `Inherited` swatch in the built-in grey, not
the configured colour; the application editor shows the grey too once
the page stores an icon colour (EXO-90337, PO feedback on US04).

**Cause**

The shared text input (Meeds-io/social, `styling-inputs/TextInput.vue`)
passed the built-in `#707070` as the Icon row's placeholder at every
level, by design of note 51586 §4 (D6). The PO ruled on EXO-90337 that
the page-level row shows the platform's customised colour and the
application-level row shows the page's; nothing is stored until the user
picks (D6 kept). The editors never resolved that colour.

**Fix**

- `ApplicationUtils.getThemeColor(name)`: the value of a branding theme
variable as computed at the document root, null when the branding
stylesheet emits `initial`.
- `EditPageDrawer.vue`: the platform's `--allPagesAppIconColor`.
- `common-layout/EditApplicationDrawer.vue`: the page root container's
stored icon colour, else the platform's.
- The site layout editor drawers are unchanged and keep the built-in
grey.

Known limit, left to the PO: a colour the site stores on its own page
area (the site layout editor's page properties, `middleCenterContainer`)
is inherited by every page of the site at view time but is not read by
the page editor, which renders the page alone, outside the site layout
that carries that colour, and reads the theme at the document root; the
page and application placeholders then show the platform's colour, and
covering it needs a fetch of the site layout at open.

Depends on the `iconPlaceholder` prop of the shared text input in
Meeds-io/social, same task id.

Verified with eslint on the changed files and a headless Chrome check of
`getThemeColor`: an `initial` custom property computes to the empty
string, a set one and `transparent` come back as written. No committed
JS test (frontend-vue.md).

Knowledge: owed by the eXIP's knowledge update (EXO-90341), gated at the
`feature/mips` integration PR.

This change is classified N3 at a7b90cd: editor-side placeholder only,
no REST/DAO/schema/ACL surface touched (`classification.md` §3); the
delivery is N1 by max-severity at the `feature/mips` integration PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 116aacc)
(cherry picked from commit 4ee2897)
…0342

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

Copy link
Copy Markdown
Contributor Author

Reviewer's evidence — eXIP 7.3.0.31 Icon Colorization backport to develop

Source

  • feat: Deliver eXIP 7.3.0.31 Icon Colorization EXO-90342 #579, merged into feature/mips (final head 1fcd87c286), approved at that head by @boubaker.
  • Validated state: feature/mips @ 5969202612 (the commits carrying the source PRs after the lineage's daily rebase, paired below by patch-id). Mips ACC validation on EXO-90342: Samuel Renault (2026-10-09) and Julien Dubois (confirmed to the developer, 2026-10-12).

Picks (git cherry-pick -x, onto develop @ a586a6f134; the FB's Task-87990: Create FB mips and update projects versions/dependencies commit is not carried)

Adaptations: none. Every pick applied clean, no POM touched, no commit added.

Verification

  • Diff-equivalence: each pick's git show -U0 <sha> | git patch-id --stable equals its source commit's on feature/mips @ 5969202612: 4/4 equal.
  • Build: this PR's CI build at its head. Release order matters for it: platform-ui's @iconColor Less variable must be on the develop snapshot before the Less of social, agenda, analytics, content, notes and the other audit repos compiles; for content and notes, the commons develop snapshot must also be rebuilt after the platform-ui merge (commons pitfall: commons-extension-webapp's sources jar carries a copy of platform-ui's skin/less). Re-run this PR's build once its prerequisites are merged.

Level: N1, restated from the source integration PR (the eXip's full-diff classification). A backport from feature/mips whose picks are all patch-id equal to the approved source merges on its first approval (ai-review-and-merge.md §3); author ≠ approver.

🤖 Generated with Claude Code

@MayTekayaa
MayTekayaa requested a review from boubaker October 12, 2026 15:37
@MayTekayaa
MayTekayaa merged commit 246c057 into develop Oct 12, 2026
7 of 10 checks passed
@MayTekayaa
MayTekayaa deleted the backport/EXO-90342-icon-colorization branch October 12, 2026 16:22
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