Skip to content

chore(v3): merge main - #680

Merged
wesleyboar merged 97 commits into
TACC:epic/v3from
wesleyboar:chore/v3-merge-main
Aug 6, 2026
Merged

chore(v3): merge main#680
wesleyboar merged 97 commits into
TACC:epic/v3from
wesleyboar:chore/v3-merge-main

Conversation

@wesleyboar

@wesleyboar wesleyboar commented Aug 5, 2026

Copy link
Copy Markdown
Member

Overview

Syncs epic/v3 with main (90 commits behind).

Warning

Performed by AI, Claude Sonnet 5 (under my direction).

Related

Changes

  • merged main into epic/v3
  • resolved dist/* modify/delete conflicts by keeping epic/v3's deletion (dist/ is not committed on v3)
  • resolved 4 renamed source files (headings--cms, headings--docs, html-elements.docs, s-footer) using main's content with v3's .postcss import extensions
  • renamed 5 new source files added by main (x-headings*, typography-headings--cms/docs) from .css to .postcss to match v3's source convention
  • regenerated package-lock.json via npm install, keeping v3's package.json version

Testing

  1. npm run build - no errors
  2. npm run lint - No dist files found in source. Ready to publish.

wesleyboar and others added 30 commits March 18, 2026 16:37
## Overview

Prepare for v2.54.0 release.
## Overview

Define `@mixin`s for `.align-*` classes.

<sup>So [TACC/Core-CMS](https://github.com/TACC/Core-) can use them to
align images that have such classes but are within an `<a>` or
`<figure>`.</sup>

## Related

- required by https://github.com/TACC/Core-CMS/pull/___

## Changes

- **adds** (and uses) simple mixins for simple classes

## Testing

1. `npm run build:css` has no change to `dist/`

## UI

Skipped.

<sup>The fact that `dist/` is unchanged on build means build output is
identical.</sup>
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to
2.3.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/micromatch/picomatch/releases">picomatch's
releases</a>.</em></p>
<blockquote>
<h2>2.3.2</h2>
<p>This is a security release fixing several security relevant
issues.</p>
<h2>What's Changed</h2>
<ul>
<li>fix: exception when glob pattern contains constructor by <a
href="https://github.com/Jason3S"><code>@​Jason3S</code></a> in <a
href="https://redirect.github.com/micromatch/picomatch/pull/144">micromatch/picomatch#144</a></li>
<li>Fix for <a
href="https://github.com/micromatch/picomatch/security/advisories/GHSA-c2c7-rcm5-vvqj">CVE-2026-33671</a></li>
<li>Fix for <a
href="https://github.com/micromatch/picomatch/security/advisories/GHSA-3v7f-55p6-f55p">CVE-2026-33672</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2">https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md">picomatch's
changelog</a>.</em></p>
<blockquote>
<h1>Release history</h1>
<p><strong>All notable changes to this project will be documented in
this file.</strong></p>
<p>The format is based on <a
href="http://keepachangelog.com/en/1.0.0/">Keep a Changelog</a>
and this project adheres to <a
href="http://semver.org/spec/v2.0.0.html">Semantic Versioning</a>.</p>
<!-- raw HTML omitted -->
<ul>
<li>Changelogs are for humans, not machines.</li>
<li>There should be an entry for every single version.</li>
<li>The same types of changes should be grouped.</li>
<li>Versions and sections should be linkable.</li>
<li>The latest version comes first.</li>
<li>The release date of each versions is displayed.</li>
<li>Mention whether you follow Semantic Versioning.</li>
</ul>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<p>Changelog entries are classified using the following labels <em>(from
<a href="http://keepachangelog.com/">keep-a-changelog</a></em>):</p>
<ul>
<li><code>Added</code> for new features.</li>
<li><code>Changed</code> for changes in existing functionality.</li>
<li><code>Deprecated</code> for soon-to-be removed features.</li>
<li><code>Removed</code> for now removed features.</li>
<li><code>Fixed</code> for any bug fixes.</li>
<li><code>Security</code> in case of vulnerabilities.</li>
</ul>
<!-- raw HTML omitted -->
<h2>4.0.0 (2024-02-07)</h2>
<h3>Fixes</h3>
<ul>
<li>Fix bad text values in parse <a
href="https://redirect.github.com/micromatch/picomatch/issues/126">#126</a>,
thanks to <a
href="https://github.com/connor4312"><code>@​connor4312</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>Remove process global to work outside of node <a
href="https://redirect.github.com/micromatch/picomatch/issues/129">#129</a>,
thanks to <a
href="https://github.com/styfle"><code>@​styfle</code></a></li>
<li>Add sideEffects to package.json <a
href="https://redirect.github.com/micromatch/picomatch/issues/128">#128</a>,
thanks to <a
href="https://github.com/frandiox"><code>@​frandiox</code></a></li>
<li>Removed <code>os</code>, make compatible browser environment. See <a
href="https://redirect.github.com/micromatch/picomatch/issues/124">#124</a>,
thanks to <a
href="https://github.com/gwsbhqt"><code>@​gwsbhqt</code></a></li>
</ul>
<h2>3.0.1</h2>
<h3>Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/micromatch/picomatch/commit/81cba8d4b767cab3cb29d26eb4f691eed75b73b2"><code>81cba8d</code></a>
Publish 2.3.2</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/fc1f6b69006e9435caf8fb40d8aff378bc0b7bce"><code>fc1f6b6</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/eec17aee5428a7249e9ca5adbb8a0d28fa29619b"><code>eec17ae</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/78f8ca4362d9e66cadea97b93e292f10096452ed"><code>78f8ca4</code></a>
Merge pull request <a
href="https://redirect.github.com/micromatch/picomatch/issues/156">#156</a>
from micromatch/backport-144</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/3f4f10eaa65bf3a52e8f2999674cd27e11fa3c9b"><code>3f4f10e</code></a>
Merge pull request <a
href="https://redirect.github.com/micromatch/picomatch/issues/144">#144</a>
from Jason3S/jdent-object-properties</li>
<li>See full diff in <a
href="https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=picomatch&package-manager=npm_and_yarn&previous-version=2.3.1&new-version=2.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Overview / Changes

Use `@define-mixin` and `@mixin` for figure and blockquote mixins.

> [!TIP]
> Backwards-compatible.

## Related

- used by https://github.com/TACC/Core-CMS/pull/__

## Testing

1. `npm run build:css`
2. No _functional_ change to `/dist`.[^1]


[^1]: Diff of `/dist` is build-noise from mixin expansion + selector
de-grouping; behavior is unchanged; deprecated .x-figure* and
.x-blockquote* compatibility exists, just as separate rulesets. I
manually reviewed and suspected this. A.I. verified it independently.

## UI

Skipped.
## Overview

Fix caption text not legible on dark section cuz dark text was used.

## Related

- required by TACC/tup-ui#537

## Changes

- **changes** dark color tex to lower opacity text

## Testing

1. Compare caption on
http://localhost:3001/components/preview/html-elements--docs before and
after.
2. Verify color changes because of `opacity` not `color`.

## UI

| before | after |
| - | - |
| <img width="900" height="475" alt="Screenshot 2026-03-26 at 15 14 58"
src="https://github.com/user-attachments/assets/0175570c-93f3-4438-8280-733ed8ebfdd4"
/> | <img width="900" height="475" alt="Screenshot 2026-03-26 at 15 16
01"
src="https://github.com/user-attachments/assets/275dc3f5-440f-4d90-a4a9-095fa27fbd50"
/> |
## Overview

Restore `#222222` as value for `--global-color-primary--xx-dark`.

The `#000000` was an overcorrection, and is too stark.

## Related

- required by TACC/tup-ui#537
- reported in [2026-03-19 TUP Testing Session: Release v1.1.21
(-rc1)](https://tacc-main.atlassian.net/wiki/x/AQCbRg)

## Changes

- **changed** "Primitives/v2" `dark-2x` token back to `TACC#222` from `#000`

## Testing

TACC/tup-ui#537 will have me test colors again
on TUP client dev server.

## UI

Skipped. Simple token change. Diff shows what I expect.
## Overview

Prepare for v2.54.0-rc1 release.
- Changed "bin" from a string to an object to specify "core-styles" as the command.
- Updated "repository" field to use an object format with "type" and "url" properties.
## Overview

Prepare for v2.54.1-rc1 release.
## Overview

Allow publishing "release candidate" versions to NPM via script.

## Changes

- Changed the way version numbers are extracted and used in the script.
- Updated checks for published versions to use the new version number
variable.
- Added logic to handle release candidate tags during npm publish.

## Testing

This is how I published [`v2.54.1-rc1` on
NPM](https://www.npmjs.com/package/@tacc/core-styles/v/2.54.1-rc1).
## Overview

Feed list should not hide overflow, because:
- that crops focus outline
- the text can just wrap
    <sup>if editor makes it too long[^1]</sup>

[^1]: A pattern library's CSS is to style, not to stop ridiculous text
content from being used.

## Related

- found during [2026-03-19 TUP Testing Session: Release v1.1.21
(-rc1)](https://tacc-main.atlassian.net/wiki/pages/resumedraft.action?draftId=1184563201)
- mirrored by
TACC/tup-ui@6838ca0

## Changes

- **deletes** styles

## Testing & UI


https://github.com/user-attachments/assets/66c53e7a-4d1d-4dd4-b960-8c9b1ddea02a

| text can wrap |
| - |
| <img width="900" height="475" alt="text can wrap"
src="https://github.com/user-attachments/assets/90e677a2-a939-41bf-bffb-dc6c89c37b3a"
/> |
## Overview

Prepare to release `v2.54.1`.
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js)
from 4.7.8 to 4.7.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/handlebars-lang/handlebars.js/releases">handlebars's
releases</a>.</em></p>
<blockquote>
<h2>v4.7.9</h2>
<ul>
<li>fix: enable shell mode for spawn to resolve Windows EINVAL issue -
e0137c2</li>
<li>fix type &quot;RuntimeOptions&quot; also accepting string partials -
eab1d14</li>
<li>feat(types): set <code>hash</code> to be a <code>Record&lt;string,
any&gt;</code> - de4414d</li>
<li>fix non-contiguous program indices - 4512766</li>
<li>refactor: rename i to startPartIndex - e497a35</li>
<li>security: fix security issues - 68d8df5
<ul>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2w6w-674q-4c4q">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2w6w-674q-4c4q</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-3mfm-83xf-c92r">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-3mfm-83xf-c92r</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xhpv-hc6g-r9c6">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xhpv-hc6g-r9c6</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xjpj-3mr7-gcpf">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xjpj-3mr7-gcpf</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-9cx6-37pm-9jff">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-9cx6-37pm-9jff</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2qvq-rjwj-gvw9">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2qvq-rjwj-gvw9</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-7rx3-28cr-v5wh">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-7rx3-28cr-v5wh</a></li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-442j-39wm-28r2">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-442j-39wm-28r2</a></li>
</ul>
</li>
</ul>
<p><a
href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9">Commits</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md">handlebars's
changelog</a>.</em></p>
<blockquote>
<h2>v4.7.9 - March 26th, 2026</h2>
<ul>
<li>fix: enable shell mode for spawn to resolve Windows EINVAL issue -
e0137c2</li>
<li>fix type &quot;RuntimeOptions&quot; also accepting string partials -
eab1d14</li>
<li>feat(types): set <code>hash</code> to be a <code>Record&lt;string,
any&gt;</code> - de4414d</li>
<li>fix non-contiguous program indices - 4512766</li>
<li>refactor: rename i to startPartIndex - e497a35</li>
<li>security: fix security issues - 68d8df5</li>
</ul>
<p><a
href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9">Commits</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/dce542c9a660048d31f0981ac8a45c08b919bddb"><code>dce542c</code></a>
v4.7.9</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/8a41389ba5b2624b6f43a5463d8e2533b843a562"><code>8a41389</code></a>
Update release notes</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/68d8df5a88e0a26fe9e6084c5c6aaebe67b07da2"><code>68d8df5</code></a>
Fix security issues</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/b2a083136b11e1da9f0f47a11f749a9830a49328"><code>b2a0831</code></a>
Fix browser tests</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/9f98c1629834abf8de5a127caff8a2eab03d2c12"><code>9f98c16</code></a>
Fix release script</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/45443b4290475dfb7cec32a85d344f12ab345eb9"><code>45443b4</code></a>
Revert &quot;Improve partial indenting performance&quot;</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/8841a5f6d35096aee95d68e1e49636a4cb5c661e"><code>8841a5f</code></a>
Fix CI errors with linting</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/e0137c26f2202593bca7cc25184e733e87d54709"><code>e0137c2</code></a>
fix: enable shell mode for spawn to resolve Windows EINVAL issue</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/e914d6037ffb0dd371f7e4823cdb019732ae66d7"><code>e914d60</code></a>
Improve rendering performance</li>
<li><a
href="https://github.com/handlebars-lang/handlebars.js/commit/7de4b41c344a5d702edca93d1841b59642fa32bd"><code>7de4b41</code></a>
Upgrade GitHub Actions checkout and setup-node on 4.x branch</li>
<li>Additional commits viewable in <a
href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=handlebars&package-manager=npm_and_yarn&previous-version=4.7.8&new-version=4.7.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Overview

Adds a Bootstrap 4 extension for the [media
object](https://getbootstrap.com/docs/4.6/components/media-object/),
`.media-link` modifier which aligns thumbnail and body.

Demo has variant markup for Bootstrap and TACC.

## Related

- used by TACC/tup-ui#535

## Changes

- **added** stylesheet
- **added** demo

## Testing

1. Run `npm run build:css` and confirm `dist/core-styles.bootstrap4.css`
includes `.media-link`.
2. Run `npm start` (or `npm run build:demo`) and open the Bootstrap 3.
[**Media** pattern](http://localhost:3000/components/detail/media);
confirm examples match intended layout.

## UI

<img width="900" height="475" alt="boostrap media extended by tacc"
src="https://github.com/user-attachments/assets/100b5780-146c-4b71-91db-3dfb1e97c6fd"
/>
> [!IMPORTANT]
> This is the missing commit from TACC#620.
Not legible enough on white background.

Was legible enough on black background, and still is.
Explained the pull request template with additional comments.
## Overview

Adds an `o-section--style-accent` variant (pale blue band).

## Related

- required by TACC/Core-CMS-Custom#531

## Changes

- **added** accent style block `section…accent`
- **updated** template, config, readme
- **built** `dist/`

## Testing

1. `npm run build:css` — confirm `dist/objects/o-section.css` includes
accent selectors and warning tokens
2. `npm start` — open
[o-section--style-accent](http://localhost:3000/components/preview/o-section--style-accent)
and confirm it reads clearly next to default, muted, and nested variants

## UI

<img width="1783" height="5585"
alt="localhost_3000_components_preview_o-section--style-accent"
src="https://github.com/user-attachments/assets/415c7ec8-5ddb-44bb-8f44-475bb1d452f7"
/>

## Notes

Aggregated `dist/` edits (e.g. `core-styles.*.css`, `x-blockquote`,
`x-figure`, `html-elements.docs`) are from the shared CSS build picking
up selector list changes, not separate feature work.
## Overview

Restore borders between pairs of the same style section.

## Related

- lost at some point, dunno when

## Changes

- **added** border
- **changed** border colors (for sections)


## Testing

1. `npm run build:css`
2. `npm start`
3. Open:
    - http://localhost:3000/components/preview/o-section--style-light
    - http://localhost:3000/components/preview/o-section--style-muted
    - http://localhost:3000/components/preview/o-section--style-accent
    - http://localhost:3000/components/preview/o-section--style-dark

## UI

| Light | Muted |
| - | - |
| <img width="900" height="295" alt="light"
src="https://github.com/user-attachments/assets/6ac22a6d-cb70-47e5-a61c-efb720c1a40e"
/> | <img width="900" height="295" alt="muted"
src="https://github.com/user-attachments/assets/35b52820-a4ca-4758-b67c-53ec15509a1a"
/> |

| Dark | Accent |
| - | - |
| <img width="900" height="295" alt="dark"
src="https://github.com/user-attachments/assets/396caedc-d274-4dd1-a45d-d02571508910"
/> | <img width="900" height="295" alt="accent"
src="https://github.com/user-attachments/assets/305d99d0-e73d-40bb-a839-43103e8668f7"
/> |

<!--
## Notes

Optional: rollout, follow-ups, known limitations, unrelated dist churn.
-->
## Overview

Colors of headings in sections (besides light) had poor color contrast

## Related

- required by TACC/Core-CMS-Custom#531


## Changes

- **added** `h2` color overrides

## Testing

[Color contrast](https://webaim.org/resources/linkcontrastchecker/) of
heading passes AA:
- http://localhost:3000/components/preview/o-section--style-muted
- http://localhost:3000/components/preview/o-section--style-accent
- http://localhost:3000/components/preview/o-section--style-dark


## UI

<img width="900" height="470" alt="screenshot of section headings"
src="https://github.com/user-attachments/assets/0a4b9db2-241f-44a6-b382-2383ca25cde9"
/>

## Notes

Color contrast of heading with link is not great, but we don't create
headings with links inside them; the whole link might be a heading. If
we start doing link inside, I'll handle that case.
## Overview

Prepare for v2.55.0 release.
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lodash/lodash/releases">lodash's
releases</a>.</em></p>
<blockquote>
<h2>4.18.1</h2>
<h2>Bugs</h2>
<p>Fixes a <code>ReferenceError</code> issue in <code>lodash</code>
<code>lodash-es</code> <code>lodash-amd</code> and
<code>lodash.template</code> when using the <code>template</code> and
<code>fromPairs</code> functions from the modular builds. See <a
href="https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769">lodash/lodash#6167</a></p>
<p>These defects were related to how lodash distributions are built from
the main branch using <a
href="https://github.com/lodash-archive/lodash-cli">https://github.com/lodash-archive/lodash-cli</a>.
When internal dependencies change inside lodash functions, equivalent
updates need to be made to a mapping in the lodash-cli. (hey, it was
ahead of its time once upon a time!). We know this, but we missed it in
the last release. It's the kind of thing that passes in CI, but fails bc
the build is not the same thing you tested.</p>
<p>There is no diff on main for this, but you can see the diffs for each
of the npm packages on their respective branches:</p>
<ul>
<li><code>lodash</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm">https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm</a></li>
<li><code>lodash-es</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es">https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es</a></li>
<li><code>lodash-amd</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd">https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd</a></li>
<li><code>lodash.template</code><a
href="https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages">https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages</a></li>
</ul>
<h2>4.18.0</h2>
<h2>v4.18.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.0">https://github.com/lodash/lodash/compare/4.17.23...4.18.0</a></p>
<h3>Security</h3>
<p><strong><code>_.unset</code> / <code>_.omit</code></strong>: Fixed
prototype pollution via <code>constructor</code>/<code>prototype</code>
path traversal (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh">GHSA-f23m-r3pf-42rh</a>,
<a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b">fe8d32e</a>).
Previously, array-wrapped path segments and primitive roots could bypass
the existing guards, allowing deletion of properties from built-in
prototypes. Now <code>constructor</code> and <code>prototype</code> are
blocked unconditionally as non-terminal path keys, matching
<code>baseSet</code>. Calls that previously returned <code>true</code>
and deleted the property now return <code>false</code> and leave the
target untouched.</p>
<p><strong><code>_.template</code></strong>: Fixed code injection via
<code>imports</code> keys (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc">GHSA-r5fr-rjxr-66jc</a>,
CVE-2026-4800, <a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6">879aaa9</a>).
Fixes an incomplete patch for CVE-2021-23337. The <code>variable</code>
option was validated against <code>reForbiddenIdentifierChars</code> but
<code>importsKeys</code> was left unguarded, allowing code injection via
the same <code>Function()</code> constructor sink. <code>imports</code>
keys containing forbidden identifier characters now throw
<code>&quot;Invalid imports option passed into
_.template&quot;</code>.</p>
<h3>Docs</h3>
<ul>
<li>Add security notice for <code>_.template</code> in threat model and
API docs (<a
href="https://redirect.github.com/lodash/lodash/pull/6099">#6099</a>)</li>
<li>Document <code>lower &gt; upper</code> behavior in
<code>_.random</code> (<a
href="https://redirect.github.com/lodash/lodash/pull/6115">#6115</a>)</li>
<li>Fix quotes in <code>_.compact</code> jsdoc (<a
href="https://redirect.github.com/lodash/lodash/pull/6090">#6090</a>)</li>
</ul>
<h3><code>lodash.*</code> modular packages</h3>
<p><a
href="https://redirect.github.com/lodash/lodash/pull/6157">Diff</a></p>
<p>We have also regenerated and published a select number of the
<code>lodash.*</code> modular packages.</p>
<p>These modular packages had fallen out of sync significantly from the
minor/patch updates to lodash. Specifically, we have brought the
following packages up to parity w/ the latest lodash release because
they have had CVEs on them in the past:</p>
<ul>
<li><a
href="https://www.npmjs.com/package/lodash.orderby">lodash.orderby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.tonumber">lodash.tonumber</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trim">lodash.trim</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trimend">lodash.trimend</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.sortedindexby">lodash.sortedindexby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.zipobjectdeep">lodash.zipobjectdeep</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.unset">lodash.unset</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.omit">lodash.omit</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.template">lodash.template</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e"><code>cb0b9b9</code></a>
release(patch): bump main to 4.18.1 (<a
href="https://redirect.github.com/lodash/lodash/issues/6177">#6177</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51"><code>75535f5</code></a>
chore: prune stale advisory refs (<a
href="https://redirect.github.com/lodash/lodash/issues/6170">#6170</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4"><code>62e91bc</code></a>
docs: remove n_ Node.js &lt; 6 REPL note from README (<a
href="https://redirect.github.com/lodash/lodash/issues/6165">#6165</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4"><code>59be2de</code></a>
release(minor): bump to 4.18.0 (<a
href="https://redirect.github.com/lodash/lodash/issues/6161">#6161</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d"><code>af63457</code></a>
fix: broken tests for _.template 879aaa9</li>
<li><a
href="https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0"><code>1073a76</code></a>
fix: linting issues</li>
<li><a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6"><code>879aaa9</code></a>
fix: validate imports keys in _.template</li>
<li><a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b"><code>fe8d32e</code></a>
fix: block prototype pollution in baseUnset via constructor/prototype
traversal</li>
<li><a
href="https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d"><code>18ba0a3</code></a>
refactor(fromPairs): use baseAssignValue for consistent assignment (<a
href="https://redirect.github.com/lodash/lodash/issues/6153">#6153</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2"><code>b819080</code></a>
ci: add dist sync validation workflow (<a
href="https://redirect.github.com/lodash/lodash/issues/6137">#6137</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.23&new-version=4.18.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wesley B <62723358+wesleyboar@users.noreply.github.com>
## Overview

Add `--global-color-accent--light-alt` to color--cms.auto.css`.

## Related

- required by TACC/Core-CMS-Custom#531

## Changes

- **added** `--global-color-accent--light-alt` math

## Testing

Via TACC/Core-CMS-Custom#531, verify footer has
purple links.

## UI

| Before (Blue) | After (Purple) |
| - | - |
| <img width="350" height="240" alt="before"
src="https://github.com/user-attachments/assets/89d93673-6945-4646-86c5-7aaa0ab76d6e"
/> | <img width="350" height="240" alt="after"
src="https://github.com/user-attachments/assets/aebbf79b-2127-47f0-b88f-190671db1a0f"
/> |
## Overview / Changes

For dark section and the footer:
- fix color contrast
- make colors consistent

## Related

- required by TACC/Core-CMS-Custom#531

## Testing & UI

> [!WARNING]
> Undocumented.

I apply changes I tested on TACC and ECEP clients.
wesleyboar and others added 11 commits July 2, 2026 21:01
## Overview

Prepare for v2.57.3 release.
Added guidelines for updating dependencies and formatting commits and pull requests.
…er (TACC#672)

Bumps [ws](https://github.com/websockets/ws),
[engine.io-client](https://github.com/socketio/socket.io),
[engine.io](https://github.com/socketio/socket.io) and
[socket.io-adapter](https://github.com/socketio/socket.io). These
dependencies needed to be updated together.
Updates `ws` from 8.18.3 to 8.21.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/websockets/ws/releases">ws's
releases</a>.</em></p>
<blockquote>
<h2>8.21.1</h2>
<h1>Bug fixes</h1>
<ul>
<li>Empty fragments are now counted toward the limit (a2f4e7c0).</li>
<li>The default values of the <code>maxBufferedChunks</code> and
<code>maxFragments</code> options have
been reduced (f197ac65).</li>
</ul>
<h2>8.21.0</h2>
<h1>Features</h1>
<ul>
<li>Introduced the <code>maxBufferedChunks</code> and
<code>maxFragments</code> options (2b2abd45).</li>
</ul>
<h1>Bug fixes</h1>
<ul>
<li>Fixed a remote memory exhaustion DoS vulnerability (2b2abd45).</li>
</ul>
<p>A high volume of tiny fragments and data chunks could be sent by a
peer, using
modest network traffic, to crash a <code>ws</code> server or client due
to OOM.</p>
<pre lang="js"><code>import { WebSocket, WebSocketServer } from 'ws';
<p>const wss = new WebSocketServer({ port: 0 }, function () {
const data = Buffer.alloc(1);
const options = { fin: false };
const { port } = wss.address();
const ws = new WebSocket(<code>ws://localhost:${port}</code>);</p>
<p>ws.on('open', function () {
(function send() {
ws.send(data, options, function (err) {
if (err) return;
send();
});
})();
});</p>
<p>ws.on('error', console.error);
ws.on('close', function (code, reason) {
console.log(<code>client close - code: ${code} reason:
${reason.toString()}</code>);
});
});</p>
<p>wss.on('connection', function (ws) {
ws.on('error', console.error);
ws.on('close', function (code, reason) {
console.log(<code>server close - code: ${code} reason:
${reason.toString()}</code>);
});
});
</code></pre></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/websockets/ws/commit/ae1de54330cef77e487548890fabfeb9aae1d83d"><code>ae1de54</code></a>
[dist] 8.21.1</li>
<li><a
href="https://github.com/websockets/ws/commit/8e9511b86b3fc6deebbd97dd9af7c9056deea8d1"><code>8e9511b</code></a>
[ci] Trust Coveralls Homebrew tap</li>
<li><a
href="https://github.com/websockets/ws/commit/f197ac65140920bdcecdab74bfc69c2d7858e55d"><code>f197ac6</code></a>
[fix] Lower default values of <code>maxBufferedChunks</code> and
<code>maxFragments</code></li>
<li><a
href="https://github.com/websockets/ws/commit/8df8265c2f63fd44af3193a98e23cf38888cd991"><code>8df8265</code></a>
[ci] Update actions/checkout action to v7</li>
<li><a
href="https://github.com/websockets/ws/commit/a2f4e7c046c2112bbce6fef39a083dac77d6f0d2"><code>a2f4e7c</code></a>
[fix] Count empty fragments toward the limit (<a
href="https://redirect.github.com/websockets/ws/issues/2329">#2329</a>)</li>
<li><a
href="https://github.com/websockets/ws/commit/e79f912cb3f492ae04c28feb9459a209e186b0ad"><code>e79f912</code></a>
[pkg] Approve install scripts for bufferutil and utf-8-validate</li>
<li><a
href="https://github.com/websockets/ws/commit/4ea355d6d3069394994f82ca1b6d38c32ba208fb"><code>4ea355d</code></a>
[doc] Document 32-bit signed integer coercion for option values</li>
<li><a
href="https://github.com/websockets/ws/commit/2120f4c8c625a76316792680a231496e1b615252"><code>2120f4c</code></a>
[example] Remove uuid dependency</li>
<li><a
href="https://github.com/websockets/ws/commit/4c534a6b8a5224a563af116e85c6ced7d4ca60cf"><code>4c534a6</code></a>
[security] Add latest vulnerability to SECURITY.md</li>
<li><a
href="https://github.com/websockets/ws/commit/bca91adf15677e47dbe4f959653452727be28b94"><code>bca91ad</code></a>
[dist] 8.21.0</li>
<li>Additional commits viewable in <a
href="https://github.com/websockets/ws/compare/8.18.3...8.21.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `engine.io-client` from 6.6.4 to 6.6.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/socketio/socket.io/releases">engine.io-client's
releases</a>.</em></p>
<blockquote>
<h2>engine.io-client@6.6.6</h2>
<p>The <code>ws</code> dependency was bumped to <code>~8.21.0</code>
following <a
href="https://github.com/advisories/GHSA-96hv-2xvq-fx4p">CVE-2026-48779</a>.</p>
<h3>Bug Fixes</h3>
<ul>
<li>preserve transport literal suggestions (<a
href="https://redirect.github.com/socketio/socket.io/issues/5469">#5469</a>)
(<a
href="https://github.com/socketio/socket.io/commit/d8f392eec724f9f6d78a9523f8ef7a383a807a6d">d8f392e</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://github.com/websockets/ws/releases/tag/8.21.0"><code>ws@~8.21.0</code></a>
(<a
href="https://github.com/websockets/ws/compare/8.20.1...8.21.0">diff</a>)</li>
</ul>
<h2>engine.io-client@6.6.5</h2>
<p>The <code>ws</code> dependency was bumped to <code>~8.20.1</code>
following <a
href="https://github.com/advisories/GHSA-58qx-3vcg-4xpx">CVE-2026-45736</a>.</p>
<p>Note from the <code>ws</code> maintainers:</p>
<blockquote>
<p>Although the calculated CVSS severity is medium, the actual severity
is believed to be low, as the flaw is only exploitable through misuse
that is unlikely in practice.</p>
</blockquote>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://github.com/websockets/ws/releases/tag/8.20.1"><code>ws@~8.20.1</code></a>
(<a
href="https://github.com/websockets/ws/compare/8.18.3...8.20.1">diff</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/socketio/socket.io/commit/22cc483786a5084b8c6d8595e46f7d99d1587fea"><code>22cc483</code></a>
chore(release): engine.io-client@6.6.6</li>
<li><a
href="https://github.com/socketio/socket.io/commit/9dbec8128fa76c3143e93cf41991e903adfdc6da"><code>9dbec81</code></a>
chore(release): engine.io@6.6.9</li>
<li><a
href="https://github.com/socketio/socket.io/commit/3ad4e1f2dcf0e8b7d1bb05892be5ede2ab100abf"><code>3ad4e1f</code></a>
docs: improve example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/0e5afeeba45b1b3dc926584253ac93e9d0c9eae1"><code>0e5afee</code></a>
docs: add example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/eab9623c8476308e735472ce1bf70e90eb3de604"><code>eab9623</code></a>
docs(eio): correct maxHttpBufferSize default in JSDoc (<a
href="https://redirect.github.com/socketio/socket.io/issues/5508">#5508</a>)</li>
<li><a
href="https://github.com/socketio/socket.io/commit/c17890c5e5bd3a2f2e40ca240059906c51156d49"><code>c17890c</code></a>
docs: add documentation about WebTransport</li>
<li><a
href="https://github.com/socketio/socket.io/commit/20df6ae561e379dabdceecbdf0532ac052994cc9"><code>20df6ae</code></a>
docs(examples): add client-side load balancing example</li>
<li><a
href="https://github.com/socketio/socket.io/commit/16d19236132293c415f511aa5631de558be9ab70"><code>16d1923</code></a>
ci(publish): enable staged publishing</li>
<li><a
href="https://github.com/socketio/socket.io/commit/ad48a9bac723303d8bde81c4394828822abe57e0"><code>ad48a9b</code></a>
docs(examples): add example with HTTP/2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/190572d2459681a757e23e6010939ac5e53fdfcf"><code>190572d</code></a>
refactor(eio-client): remove XMLHttpRequest from the definition
file</li>
<li>Additional commits viewable in <a
href="https://github.com/socketio/socket.io/compare/engine.io-client@6.6.4...engine.io-client@6.6.6">compare
view</a></li>
</ul>
</details>
<br />

Updates `engine.io` from 6.6.5 to 6.6.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/socketio/socket.io/releases">engine.io's
releases</a>.</em></p>
<blockquote>
<h2>engine.io@6.6.9</h2>
<p>The <code>ws</code> dependency was bumped to <code>~8.21.0</code>
following <a
href="https://github.com/advisories/GHSA-96hv-2xvq-fx4p">CVE-2026-48779</a>.</p>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://github.com/websockets/ws/releases/tag/8.21.0"><code>ws@~8.21.0</code></a>
(<a
href="https://github.com/websockets/ws/compare/8.20.1...8.21.0">diff</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/socketio/socket.io/commit/9dbec8128fa76c3143e93cf41991e903adfdc6da"><code>9dbec81</code></a>
chore(release): engine.io@6.6.9</li>
<li><a
href="https://github.com/socketio/socket.io/commit/3ad4e1f2dcf0e8b7d1bb05892be5ede2ab100abf"><code>3ad4e1f</code></a>
docs: improve example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/0e5afeeba45b1b3dc926584253ac93e9d0c9eae1"><code>0e5afee</code></a>
docs: add example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/eab9623c8476308e735472ce1bf70e90eb3de604"><code>eab9623</code></a>
docs(eio): correct maxHttpBufferSize default in JSDoc (<a
href="https://redirect.github.com/socketio/socket.io/issues/5508">#5508</a>)</li>
<li><a
href="https://github.com/socketio/socket.io/commit/c17890c5e5bd3a2f2e40ca240059906c51156d49"><code>c17890c</code></a>
docs: add documentation about WebTransport</li>
<li><a
href="https://github.com/socketio/socket.io/commit/20df6ae561e379dabdceecbdf0532ac052994cc9"><code>20df6ae</code></a>
docs(examples): add client-side load balancing example</li>
<li><a
href="https://github.com/socketio/socket.io/commit/16d19236132293c415f511aa5631de558be9ab70"><code>16d1923</code></a>
ci(publish): enable staged publishing</li>
<li><a
href="https://github.com/socketio/socket.io/commit/ad48a9bac723303d8bde81c4394828822abe57e0"><code>ad48a9b</code></a>
docs(examples): add example with HTTP/2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/190572d2459681a757e23e6010939ac5e53fdfcf"><code>190572d</code></a>
refactor(eio-client): remove XMLHttpRequest from the definition
file</li>
<li><a
href="https://github.com/socketio/socket.io/commit/fad463c54d04799e1592361b0fd8344a5fab960d"><code>fad463c</code></a>
docs(examples): fix duplicate self messages (<a
href="https://redirect.github.com/socketio/socket.io/issues/5341">#5341</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/socketio/socket.io/compare/engine.io@6.6.5...engine.io@6.6.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `socket.io-adapter` from 2.5.6 to 2.5.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/socketio/socket.io/releases">socket.io-adapter's
releases</a>.</em></p>
<blockquote>
<h2>socket.io-adapter@2.5.8</h2>
<p>The <code>ws</code> dependency was bumped to <code>~8.21.0</code>
following <a
href="https://github.com/advisories/GHSA-96hv-2xvq-fx4p">CVE-2026-48779</a>.</p>
<h2>socket.io-adapter@2.5.7</h2>
<p>The <code>ws</code> dependency was bumped to <code>~8.20.1</code>
following <a
href="https://github.com/advisories/GHSA-58qx-3vcg-4xpx">CVE-2026-45736</a>.</p>
<p>Note from the <code>ws</code> maintainers:</p>
<blockquote>
<p>Although the calculated CVSS severity is medium, the actual severity
is believed to be low, as the flaw is only exploitable through misuse
that is unlikely in practice.</p>
</blockquote>
<h3>Bug Fixes</h3>
<ul>
<li>do not skip local broadcast when publishAndReturnOffset throws (<a
href="https://redirect.github.com/socketio/socket/issues/5457">#5457</a>)
(<a
href="https://github.com/socketio/socket/commit/f6301588ca65de270ecfe22da9023d7ec79ba23a">f630158</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/socketio/socket.io/commit/ac83bfad2eb8bdd1ceddd46ddb1b4ee692d7262d"><code>ac83bfa</code></a>
chore(release): socket.io-adapter@2.5.8</li>
<li><a
href="https://github.com/socketio/socket.io/commit/22cc483786a5084b8c6d8595e46f7d99d1587fea"><code>22cc483</code></a>
chore(release): engine.io-client@6.6.6</li>
<li><a
href="https://github.com/socketio/socket.io/commit/9dbec8128fa76c3143e93cf41991e903adfdc6da"><code>9dbec81</code></a>
chore(release): engine.io@6.6.9</li>
<li><a
href="https://github.com/socketio/socket.io/commit/3ad4e1f2dcf0e8b7d1bb05892be5ede2ab100abf"><code>3ad4e1f</code></a>
docs: improve example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/0e5afeeba45b1b3dc926584253ac93e9d0c9eae1"><code>0e5afee</code></a>
docs: add example with PM2</li>
<li><a
href="https://github.com/socketio/socket.io/commit/eab9623c8476308e735472ce1bf70e90eb3de604"><code>eab9623</code></a>
docs(eio): correct maxHttpBufferSize default in JSDoc (<a
href="https://redirect.github.com/socketio/socket.io/issues/5508">#5508</a>)</li>
<li><a
href="https://github.com/socketio/socket.io/commit/c17890c5e5bd3a2f2e40ca240059906c51156d49"><code>c17890c</code></a>
docs: add documentation about WebTransport</li>
<li><a
href="https://github.com/socketio/socket.io/commit/20df6ae561e379dabdceecbdf0532ac052994cc9"><code>20df6ae</code></a>
docs(examples): add client-side load balancing example</li>
<li><a
href="https://github.com/socketio/socket.io/commit/16d19236132293c415f511aa5631de558be9ab70"><code>16d1923</code></a>
ci(publish): enable staged publishing</li>
<li><a
href="https://github.com/socketio/socket.io/commit/ad48a9bac723303d8bde81c4394828822abe57e0"><code>ad48a9b</code></a>
docs(examples): add example with HTTP/2</li>
<li>Additional commits viewable in <a
href="https://github.com/socketio/socket.io/compare/socket.io-adapter@2.5.6...socket.io-adapter@2.5.8">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Overview

Height of `<input type="file">` was cut short, cutting off its native
browser UI.

## Related

- mimicked by TACC/Core-CMS-Custom#544

## Changes

- **added** selector qualifier

## Testing & UI


https://github.com/user-attachments/assets/c3dde447-c247-4734-96fc-11d2b3e4f44a
Bumps [svgo](https://github.com/svg/svgo) from 2.8.2 to 2.8.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/svg/svgo/releases">svgo's
releases</a>.</em></p>
<blockquote>
<h2>v2.8.3</h2>
<h2>What's Changed</h2>
<h3>Security</h3>
<ul>
<li><a
href="https://svgo.dev/docs/plugins/removeScripts/">removeScriptElement</a>,
make <code>&lt;script&gt;</code> handling namespace aware. By <a
href="https://github.com/SethFalco"><code>@​SethFalco</code></a></li>
</ul>
<h2>Support</h2>
<p>SVGO v2 is not officially supported, please consider upgrading to
SVGO v4 instead. We've backported this fix as there are security
implications, but there is no commitment to do this for more complex
changes in future.</p>
<p>Consider reading our <a
href="https://svgo.dev/docs/migrations/migration-from-v2-to-v3/">Migration
Guide from v2 to v3</a> and <a
href="https://svgo.dev/docs/migrations/migration-from-v3-to-v4/">Migration
Guide from v3 to v4</a> which should ease the process.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/svg/svgo/commit/628e3bc7336625a30365d0a9b60185307d852466"><code>628e3bc</code></a>
Merge commit from fork</li>
<li>See full diff in <a
href="https://github.com/svg/svgo/compare/v2.8.2...v2.8.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=svgo&package-manager=npm_and_yarn&previous-version=2.8.2&new-version=2.8.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Overview

Adds a demo section that combines `.container` directly on an
`.o-section`, to make the wide-viewport fake-background gap bug
reproducible in this repo's own component preview.

## Related

- Reproduction case for the fix in
[TACC#675](TACC#675)

## Changes

- **added** an "Accent Section (with `.container`)" demo variant
combining `.container` and `.o-section` classes on the same element

## Testing

1. `npm start`
2. Visit the `o-section` component preview
3. Zoom out (or use an ultra-wide viewport) past ~3160px effective width
4. Observe the gap in the fake background on the new "Accent Section
(with `.container`)" demo

## UI

| before | after |
| - | - |
| <img width="900" height="535" alt="before"
src="https://github.com/user-attachments/assets/c396a277-db7b-42a9-831d-5ca306238bbe"
/> | <img width="900" height="535" alt="after"
src="https://github.com/user-attachments/assets/88b85d2e-c6c2-48fd-b100-5b85b3332b51"
/> |
## Overview

Fixes gray background gaps (on wide screens) beside sections that use a
"fake" full-width background (`o-section--style`).

## Related

- similar to
[TACC/Core-CMS#1218](TACC/Core-CMS#1218)

## Changes

- **changed** `/src/**/o-section.css`

## Testing

1. `npm start`
2. View a demo with a styled `container o-section` at a wide viewport
(e.g. 1920px).
3. Verify the fake full-width background has no gaps.


| before | after |
| - | - |
| <img width="900" height="535" alt="before"
src="https://github.com/user-attachments/assets/c396a277-db7b-42a9-831d-5ca306238bbe"
/> | <img width="900" height="535" alt="after"
src="https://github.com/user-attachments/assets/88b85d2e-c6c2-48fd-b100-5b85b3332b51"
/> |
## Overview

Prepare for v2.57.4 release.
Bumps [socket.io-parser](https://github.com/socketio/socket.io) from
4.2.5 to 4.2.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/socketio/socket.io/releases">socket.io-parser's
releases</a>.</em></p>
<blockquote>
<h2>socket.io-parser@4.2.7</h2>
<h3>Bug Fixes</h3>
<ul>
<li>honor toJSON() when deconstructing a binary packet (<a
href="https://redirect.github.com/socketio/socket.io/issues/5518">#5518</a>)
(<a
href="https://github.com/socketio/socket.io/commit/57f111439513809c633f2554be2f3104e4ad432c">57f1114</a>)</li>
<li>reject binary packets with zero attachments (<a
href="https://github.com/socketio/socket.io/commit/7c6ef571a00656718e9e05e3b948fd1758b2a7b4">7c6ef57</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/spokodev"><code>@​spokodev</code></a>
made their first contribution in <a
href="https://redirect.github.com/socketio/socket.io/pull/5518">socketio/socket.io#5518</a></li>
</ul>
<h2>socket.io-parser@4.2.6</h2>
<p>This release includes a fix for <a
href="https://github.com/socketio/socket.io/security/advisories/GHSA-677m-j7p3-52f9">CVE-2026-33151</a>.
Please upgrade as soon as possible.</p>
<h3>Bug Fixes</h3>
<ul>
<li>add a limit to the number of binary attachments (<a
href="https://github.com/socketio/socket.io/commit/b25738c416c4e32fbff62ee182afa8f6d0dacf78">b25738c</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/socketio/socket.io/commit/4054894738817f5a2125e6e6b18e79d92c75ab33"><code>4054894</code></a>
chore(release): socket.io-parser@4.2.7</li>
<li><a
href="https://github.com/socketio/socket.io/commit/7c6ef571a00656718e9e05e3b948fd1758b2a7b4"><code>7c6ef57</code></a>
fix(parser): reject binary packets with zero attachments</li>
<li><a
href="https://github.com/socketio/socket.io/commit/57f111439513809c633f2554be2f3104e4ad432c"><code>57f1114</code></a>
fix(parser): honor toJSON() when deconstructing a binary packet (<a
href="https://redirect.github.com/socketio/socket.io/issues/5518">#5518</a>)</li>
<li><a
href="https://github.com/socketio/socket.io/commit/8d2e4f7b8671ed2c4fa1fca9ec6f68e5cf82266e"><code>8d2e4f7</code></a>
docs(security): add CVE-2026-59724 and CVE-2026-59725</li>
<li><a
href="https://github.com/socketio/socket.io/commit/d2d753fed4435015c2d83fe62e676b44e07fa3f7"><code>d2d753f</code></a>
refactor(sio): align client file matching in Node.js HTTP server</li>
<li><a
href="https://github.com/socketio/socket.io/commit/dfb5ab3b6a2f00d1ecb226939022ea56e5701124"><code>dfb5ab3</code></a>
fix(sio): prevent uWebSockets.js from serving missing client files</li>
<li><a
href="https://github.com/socketio/socket.io/commit/dcbd96154352dd84c189b41e5c0ec0df4b7fe6a5"><code>dcbd961</code></a>
perf(eio): optimize polling request body buffering</li>
<li><a
href="https://github.com/socketio/socket.io/commit/6bb2e7f5fb7c548f0776328b4a19719723e27efd"><code>6bb2e7f</code></a>
refactor(sio): internalize base64id dependency</li>
<li><a
href="https://github.com/socketio/socket.io/commit/a80711a8c3b11a3e75a84de567ac4d84820f4714"><code>a80711a</code></a>
refactor(eio): internalize base64id dependency</li>
<li><a
href="https://github.com/socketio/socket.io/commit/8bead0f4c6fba027996bb9eab02f05120f35513d"><code>8bead0f</code></a>
chore: upgrade to TypeScript 6</li>
<li>Additional commits viewable in <a
href="https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.5...socket.io-parser@4.2.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=socket.io-parser&package-manager=npm_and_yarn&previous-version=4.2.5&new-version=4.2.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/TACC/Core-Styles/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sync epic/v3 with 90 commits from main.

- resolved dist/* modify/delete conflicts by keeping v3's deletion (dist is not committed on v3)
- resolved 4 renamed source files (headings--cms, headings--docs, html-elements.docs, s-footer) using main's content with v3's .postcss import extensions
- renamed 5 new source files added by main (x-headings*, typography-headings--cms/docs) from .css to .postcss to match v3's source convention
- regenerated package-lock.json via npm install after keeping v3's package.json version
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

chore(v3): merge main (90 commits) into epic/v3

✨ Enhancement 🐞 Bug fix ⚙️ Configuration changes 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Merges 90 commits from main into epic/v3, bringing in new components (Bootstrap4 alert/media,
 c-callout, o-section--accent), footer/header/heading refactors, and mixin-based
 heading/link/blockquote/figure tooling.
• Resolves merge conflicts: keeps epic/v3's deletion of dist/*, and renames 5 new/4 renamed
 source files from .css/main conventions to v3's .postcss import extensions.
• Updates release tooling (bin/release.sh replaces release-prepare.sh/release-publish.sh with
 an automated PR + npm publish + GitHub release flow), PR templates, AGENTS.md, .gitmessage, and
 labels config.
• Regenerates package-lock.json via npm install (dependency bumps) while keeping v3's
 package.json version; updates package.json bin/repository field formats.
• Bug fixes: input:not([type="file"]) height fix, CLI version string prefix (v + version), token
 color adjustment.
Diagram

graph TD
  A["main branch (90 commits)"] --> B["Merge into epic/v3"] --> C["Conflict resolution"]
  C --> D[".postcss rename mapping"]
  C --> E["dist/ deletion kept"]
  D --> F["CSS mixins refactor"]
  F --> G["New components (alert, media, callout)"]
  B --> H["package-lock.json regen"]
  B --> I["Release tooling (release.sh)"]
Loading
High-Level Assessment

This is a routine branch-sync merge PR bringing an epic branch up to date with main; there is no alternative architectural approach to consider beyond standard merge conflict resolution, which was handled correctly (favoring v3's dist/ deletion and .postcss conventions).

Files changed (73) +1306 / -484

Enhancement (36) +818 / -84
headings-and-paragraphs.hbsAdd shared headings-and-paragraphs partial +12/-0

Add shared headings-and-paragraphs partial

• New Handlebars partial rendering h1-h6 with paragraph text, reused across heading demos.

src/lib/_imports/_partials/headings-and-paragraphs.hbs

alert.cssAdd Bootstrap4 alert component styles +76/-0

Add Bootstrap4 alert component styles

• New CSS skinning Bootstrap v4 Alert plugin output using message mixins.

src/lib/_imports/bootstrap4/components/alert.css

alert.hbsAdd alert component demo markup +36/-0

Add alert component demo markup

• New Handlebars template rendering alert demo groups/types.

src/lib/_imports/bootstrap4/components/alert/alert.hbs

config.ymlAdd alert component demo config +29/-0

Add alert component demo config

• Defines demo groups/types/context for the new alert pattern.

src/lib/_imports/bootstrap4/components/alert/config.yml

demo.cssAdd alert demo-only spacing CSS +5/-0

Add alert demo-only spacing CSS

• Pattern-library-only styling to add margin around alert demos.

src/lib/_imports/bootstrap4/components/alert/demo.css

media.cssAdd media-link component styles +6/-0

Add media-link component styles

• New CSS for '.media-link' spacing/gap rules.

src/lib/_imports/bootstrap4/components/media.css

config.ymlAdd media component demo config +3/-0

Add media component demo config

• Defines demo context loading Bootstrap for the media pattern.

src/lib/_imports/bootstrap4/components/media/config.yml

demo.cssAdd media demo-only styles +14/-0

Add media demo-only styles

• Pattern-library-only CSS for image sizing and definition list layout in media demos.

src/lib/_imports/bootstrap4/components/media/demo.css

media.hbsAdd Bootstrap Media Object demo markup +41/-0

Add Bootstrap Media Object demo markup

• New Handlebars template demoing Bootstrap '.media' and TACC '.media.media-link' variants.

src/lib/_imports/bootstrap4/components/media/media.hbs

config.ymlAdd Bootstrap heading typography demo config +25/-0

Add Bootstrap heading typography demo config

• Defines default/cms/docs variants for Bootstrap '.h1'-'.h6' heading classes demo.

src/lib/_imports/bootstrap4/content/typography-headings/config.yml

typography-headings--cms.postcssAdd CMS variant heading class styles +13/-0

Add CMS variant heading class styles

• New PostCSS file applying heading mixins to '.h1'-'.h6' for CMS context (renamed from main's '.css').

src/lib/_imports/bootstrap4/content/typography-headings/typography-headings--cms.postcss

typography-headings--docs.postcssAdd Docs variant heading class styles +13/-0

Add Docs variant heading class styles

• New PostCSS file applying heading mixins to '.h1'-'.h6' for Docs context (renamed from main's '.css').

src/lib/_imports/bootstrap4/content/typography-headings/typography-headings--docs.postcss

typography-headings.hbsAdd typography headings demo markup +12/-0

Add typography headings demo markup

• New Handlebars template demoing '.h1'-'.h6' classes on '<p>' tags.

src/lib/_imports/bootstrap4/content/typography-headings/typography-headings.hbs

c-callout.hbsAdd c-callout demo markup +74/-0

Add c-callout demo markup

• New Handlebars template demoing text-only, image, and linked callout variants.

src/lib/_imports/components/c-callout/c-callout.hbs

config.ymlAdd c-callout prototype status config +1/-0

Add c-callout prototype status config

• Marks the new c-callout pattern as a prototype.

src/lib/_imports/components/c-callout/config.yml

demo.cssAdd c-callout demo-only spacing +5/-0

Add c-callout demo-only spacing

• Pattern-library-only CSS to space callout demo groups.

src/lib/_imports/components/c-callout/demo.css

c-message--expanded.postcssExtend expanded message padding to alerts +8/-1

Extend expanded message padding to alerts

• Adds '.alert' to the expanded message padding selector and adjusts dismissible alert padding.

src/lib/_imports/components/c-message--expanded.postcss

core-styles.bootstrap4.cssImport new alert and media component styles +2/-0

Import new alert and media component styles

• Adds imports for the new bootstrap4 alert and media component CSS files.

src/lib/_imports/core-styles.bootstrap4.css

config.ymlAdd CMS/Docs vs Bootstrap heading demo variants +14/-6

Add CMS/Docs vs Bootstrap heading demo variants

• Adds new comparison variants (cms-vs-bootstrap, docs-vs-bootstrap), renames labels, and removes the portal heading variant.

src/lib/_imports/elements/headings/config.yml

headings--bootstrap.hbsAdd semantic vs Bootstrap heading comparison markup +50/-0

Add semantic vs Bootstrap heading comparison markup

• New Handlebars template comparing semantic heading tags to '.hN' classes on '<p>'.

src/lib/_imports/elements/headings/headings--bootstrap.hbs

links.postcssExempt alert links from link styling via new selector +8/-3

Exempt alert links from link styling via new selector

• Introduces ':--exempt-link' custom selector covering buttons, cards, and '.alert-link' to exclude from base link mixins.

src/lib/_imports/elements/links.postcss

o-section.postcssAdd accent section style, fix background clipping and borders +32/-5

Add accent section style, fix background clipping and borders

• Adds ':--o-section--accent' style, updates dark section colors, expands fake-background box-shadow with clip-path fix, and adds border-top rules between same-style adjacent sections.

src/lib/_imports/objects/o-section.postcss

o-section.selectors.postcssAdd accent selector to o-section style group +4/-0

Add accent selector to o-section style group

• Registers new ':--o-section--accent' custom selector and adds it to the style group.

src/lib/_imports/objects/o-section.selectors.postcss

config.ymlAdd accent style demo variant +4/-0

Add accent style demo variant

• Adds a new 'style-accent' demo variant for o-section.

src/lib/_imports/objects/o-section/config.yml

o-section.hbsAdd accent section demo markup and sub-heading example +19/-3

Add accent section demo markup and sub-heading example

• Adds accent section demo blocks (including nested and container variants) and a sub-heading example in the base template.

src/lib/_imports/objects/o-section/o-section.hbs

color--cms.auto.postcssAdd computed light-alt accent color token +3/-0

Add computed light-alt accent color token

• Adds a new '--global-color-accent--light-alt' custom property computed via oklab color mixing.

src/lib/_imports/settings/color--cms.auto.postcss

x-headings--cms.postcssAdd CMS heading-level mixins +40/-0

Add CMS heading-level mixins

• New file defining 'heading-1' through 'heading-6' mixins with CMS-specific sizing/weight/margin rules.

src/lib/_imports/tools/x-headings--cms.postcss

x-headings--docs.postcssAdd Docs heading-level mixins +32/-0

Add Docs heading-level mixins

• New file defining 'heading-1' through 'heading-6' mixins with Docs-specific sizing/weight rules.

src/lib/_imports/tools/x-headings--docs.postcss

x-headings.postcssAdd shared base heading mixin +3/-0

Add shared base heading mixin

• New file defining a shared 'heading' mixin resetting line-height.

src/lib/_imports/tools/x-headings.postcss

s-footer.postcssAdd fat-footer identity column and mixin-based link styling +58/-9

Add fat-footer identity column and mixin-based link styling

• Introduces 'footer-link' mixin, '.s-footer__identity' element for multi-column footers, '.s-footer--fat' modifier, and refines base footer color/text-align rules.

src/lib/_imports/trumps/s-footer.postcss

s-footer.properties.postcssAdd vertical padding custom properties +2/-0

Add vertical padding custom properties

• Adds '--pad-vert--thick'/'--pad-vert--thin' properties for footer padding.

src/lib/_imports/trumps/s-footer.properties.postcss

config.ymlAdd fat-footer demo variant and rename modifier context keys +24/-6

Add fat-footer demo variant and rename modifier context keys

• Renames 'modifier' context key to 'width', adds 'isPortalOrCMS' flag, and introduces a new 'fat-footer' prototype variant with identity column.

src/lib/_imports/trumps/s-footer/config.yml

demo.cssAdd fat-footer identity responsive demo override +8/-0

Add fat-footer identity responsive demo override

• New pattern-library CSS resetting identity column background/spacing on narrow screens.

src/lib/_imports/trumps/s-footer/demo.css

s-footer.hbsRework footer demo markup for fat-footer with identity/nav columns +61/-32

Rework footer demo markup for fat-footer with identity/nav columns

• Restructures footer demo template to support width/weight modifiers and a multi-column fat footer with nav sections and identity aside.

src/lib/_imports/trumps/s-footer/s-footer.hbs

s-header.postcssRefactor header logo sizing and add AI chatbot button styles +75/-17

Refactor header logo sizing and add AI chatbot button styles

• Renames header height variable, computes logo default height, refines navbar-brand logo alignment rules, and adds new '.ai-button' chatbot styling block.

src/lib/_imports/trumps/s-header.postcss

s-header--different-logos.hbsAdd CMS vs Portal logo demo variants +6/-2

Add CMS vs Portal logo demo variants

• Extends demo to show wide vector/narrow raster logos both as CMS and Portal logos.

src/lib/_imports/trumps/s-header/s-header--different-logos.hbs

Bug fix (8) +12 / -14
version.jsPrefix CLI version string with 'v' +1/-1

Prefix CLI version string with 'v'

• Fixes generated app version string to include a leading 'v' before the package version.

src/bin/version.js

c-button.selectors.postcssReassign Bootstrap button color classes to selector groups +6/-6

Reassign Bootstrap button color classes to selector groups

• Moves '.btn-success' to primary group and '.btn-warning'/'.btn-danger' to secondary group instead of tertiary.

src/lib/_imports/components/c-button.selectors.postcss

form.postcssExclude file inputs from height rule +1/-1

Exclude file inputs from height rule

• Fixes form input height rule to skip 'input[type="file"]', avoiding unintended sizing.

src/lib/_imports/elements/form.postcss

html-elements.cms.postcssAdjust definition term spacing +1/-1

Adjust definition term spacing

• Changes 'dt' margin from bottom-only to block top/bottom spacing values.

src/lib/_imports/elements/html-elements.cms.postcss

x-feed-list.postcssRemove truncate mixin from feed-list more-link +0/-2

Remove truncate mixin from feed-list more-link

• Removes the '@mixin truncate--one-line' call from feed-list styling.

src/lib/_imports/tools/x-feed-list.postcss

s-header.hbsConditionally apply portal-logo class +1/-1

Conditionally apply portal-logo class

• Only applies 'class="portal-logo"' when 'forPortal' context flag is set.

src/lib/_imports/trumps/s-header/s-header.hbs

tokens.jsonAdjust dark-2x neutral color token +1/-1

Adjust dark-2x neutral color token

• Changes 'dark-2x' neutral color value from pure black to '#222222'.

src/lib/tokens.json

v2.jsonSync v2 token dark-2x color value +1/-1

Sync v2 token dark-2x color value

• Updates the generated v2 tokens file to reflect the 'dark-2x' color change.

src/lib/tokens/v2.json

Refactor (11) +110 / -289
release-prepare.shRemove old release-prepare script +0/-89

Remove old release-prepare script

• Deletes the previous release preparation script, superseded by release.sh.

bin/release-prepare.sh

release-publish.shRemove old release-publish script +0/-63

Remove old release-publish script

• Deletes the previous release publish script, superseded by release.sh.

bin/release-publish.sh

branding_logos.postcssRemove duplicate portal-logo selector styles +0/-9

Remove duplicate portal-logo selector styles

• Removes now-redundant '.portal-logo' selector rules, likely superseded by s-header changes.

src/lib/_imports/branding_logos.postcss

align.postcssConvert align classes to mixins +8/-5

Convert align classes to mixins

• Refactors '.align-right/left/center' into '@define-mixin' definitions consumed by the classes, enabling reuse elsewhere.

src/lib/_imports/components/align.postcss

headings--cms.postcssRefactor CMS headings to use shared mixins +18/-42

Refactor CMS headings to use shared mixins

• Replaces inline heading structure/skin rules with calls to new heading mixins, and applies mixins to '.h1'-'.h6' classes too.

src/lib/_imports/elements/headings--cms.postcss

headings--docs.postcssRefactor Docs headings to use shared mixins +18/-32

Refactor Docs headings to use shared mixins

• Replaces inline heading structure/skin rules with calls to new heading mixins, and applies mixins to '.h1'-'.h6' classes too.

src/lib/_imports/elements/headings--docs.postcss

headings--cms.hbsRemove old CMS headings demo markup +0/-22

Remove old CMS headings demo markup

• Deletes CMS-specific headings demo now consolidated into the shared headings.hbs template.

src/lib/_imports/elements/headings/headings--cms.hbs

headings.hbsRestructure headings demo with definition list layout +32/-12

Restructure headings demo with definition list layout

• Replaces flat heading list with a nav-linked section using '<dl>' and shared partial for light/muted/dark/unstyled sections.

src/lib/_imports/elements/headings/headings.hbs

html-elements.docs.postcssRefactor figure/blockquote to mixins, add dt styling +15/-5

Refactor figure/blockquote to mixins, add dt styling

• Switches figure/blockquote/caption rules from '@extend' classes to new '@mixin' calls and adds definition-term font-weight styling.

src/lib/_imports/elements/html-elements.docs.postcss

x-blockquote.postcssConvert blockquote styles to mixins with deprecated class aliases +12/-7

Convert blockquote styles to mixins with deprecated class aliases

• Refactors '.x-blockquote'/'.x-blockquote-caption' into '@define-mixin blockquote'/'blockquote-caption', keeping deprecated class wrappers.

src/lib/_imports/tools/x-blockquote.postcss

x-figure.postcssConvert figure styles to mixins, change caption color to opacity +7/-3

Convert figure styles to mixins, change caption color to opacity

• Refactors '.x-figure'/'.x-figure-caption' into mixins, changes caption color styling to use opacity, keeps deprecated class aliases.

src/lib/_imports/tools/x-figure.postcss

Documentation (12) +118 / -52
PULL_REQUEST_TEMPLATE.mdAdd guidance comments to PR template +41/-6

Add guidance comments to PR template

• Adds explanatory HTML comments/examples to each PR template section (Overview, Related, Changes, Testing, UI) to guide contributors.

.github/PULL_REQUEST_TEMPLATE.md

release_template.mdSimplify release PR template +1/-27

Simplify release PR template

• Strips release template down to a single-line placeholder overview.

.github/PULL_REQUEST_TEMPLATE/release_template.md

AGENTS.mdAdd AGENTS.md contributor/agent guide +40/-0

Add AGENTS.md contributor/agent guide

• New documentation describing build, dependency, commit, and PR conventions for the project.

AGENTS.md

PUBLISHING.mdSimplify release process docs +3/-18

Simplify release process docs

• Updates publishing docs to reference the new consolidated 'release.sh' script and removes manual tag-annotation steps.

PUBLISHING.md

README.mdAdd Core CMS Custom as known client +2/-0

Add Core CMS Custom as known client

• Adds a new known-client reference link for Core CMS Custom.

README.md

readme.mdAdd alert component readme +1/-0

Add alert component readme

• Documents the alert pattern's purpose (skinning Bootstrap v4 Alerts for Django CMS plugin).

src/lib/_imports/bootstrap4/components/alert/readme.md

readme.mdAdd media component readme +3/-0

Add media component readme

• Documents the Bootstrap Media Object skin pattern.

src/lib/_imports/bootstrap4/components/media/readme.md

readme.mdAdd Bootstrap heading typography readme +3/-0

Add Bootstrap heading typography readme

• Documents skinning of Bootstrap v4 heading classes.

src/lib/_imports/bootstrap4/content/typography-headings/readme.md

readme.mdAdd c-callout component readme +7/-0

Add c-callout component readme

• Documents the new callout component usage for static and linked variants.

src/lib/_imports/components/c-callout/readme.md

readme.mdDocument accent section style +1/-0

Document accent section style

• Adds a table row documenting the new '.o-section--style-accent' modifier.

src/lib/_imports/objects/o-section/readme.md

x-mailto-text-replace.postcssFlag mailto-text-replace as deprecated (accessibility) +2/-0

Flag mailto-text-replace as deprecated (accessibility)

• Adds warning/TODO comments noting a keyboard-navigation accessibility issue in this tool.

src/lib/_imports/tools/x-mailto-text-replace.postcss

readme.mdDocument s-footer__identity usage +14/-1

Document s-footer__identity usage

• Adds documentation explaining the fat-footer identity column and link style scoping behavior.

src/lib/_imports/trumps/s-footer/readme.md

Other (6) +248 / -45
labels.ymlAdd accessibility label +4/-0

Add accessibility label

• Adds a new 'accessibility' label definition for GitHub issue/PR labeling.

.github/labels.yml

.gitmessageAdd git commit message template +20/-0

Add git commit message template

• Introduces a new '.gitmessage' file defining conventional commit format guidance.

.gitmessage

release.shAdd consolidated automated release script +161/-0

Add consolidated automated release script

• New script combining CSS build, version bump, PR creation/auto-merge, npm publish, and GitHub release creation into one flow.

bin/release.sh

package-lock.jsonRegenerate lockfile with dependency bumps +54/-43

Regenerate lockfile with dependency bumps

• Regenerated via 'npm install', bumping several dev dependencies (ws, engine.io, socket.io-parser, picomatch, lodash, handlebars, etc.).

package-lock.json

package.jsonUpdate bin and repository field formats +7/-2

Update bin and repository field formats

• Converts 'bin' to an object keyed by 'core-styles' and 'repository' to an object with 'type'/'url' fields.

package.json

config.ymlAdd bootstrap4 content subdir config +2/-0

Add bootstrap4 content subdir config

• Sets subdir context for bootstrap4 content demos.

src/lib/_imports/bootstrap4/content/config.yml

@qodo-code-review

qodo-code-review Bot commented Aug 5, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Missing x-message import ✓ Resolved 🐞 Bug ≡ Correctness
Description
src/lib/_imports/bootstrap4/components/alert.css imports ../../tools/x-message.css, but the repo
only contains x-message.postcss, so PostCSS import resolution will fail and break builds that
include core-styles.bootstrap4.css. This is on a published build path because
core-styles.bootstrap4.css directly imports alert.css.
Code

src/lib/_imports/bootstrap4/components/alert.css[1]

+@import url("../../tools/x-message.css");
Evidence
The new alert stylesheet imports a .css file that does not exist in the tools directory, while the
actual tool is x-message.postcss. Since core-styles.bootstrap4.css imports the alert stylesheet,
this broken import is exercised during normal Bootstrap 4 CSS builds.

src/lib/_imports/bootstrap4/components/alert.css[1-8]
src/lib/_imports/tools/x-message.postcss[1-17]
src/lib/_imports/core-styles.bootstrap4.css[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`src/lib/_imports/bootstrap4/components/alert.css` imports `../../tools/x-message.css`, but the project’s actual file is `x-message.postcss`. This will cause the PostCSS import step to fail when compiling Bootstrap 4 styles.

## Issue Context
`src/lib/_imports/core-styles.bootstrap4.css` imports `./bootstrap4/components/alert.css`, so this error is on the normal build path.

## Fix Focus Areas
- src/lib/_imports/bootstrap4/components/alert.css[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Invalid top-level nesting ✓ Resolved 🐞 Bug ≡ Correctness
Description
src/lib/_imports/elements/html-elements.docs.postcss uses a top-level nested selector (& dt)
even though it’s imported at the top level by core-styles.docs.postcss, which makes the selector
invalid and can break PostCSS compilation. The file also no longer scopes its rules to main content
(unlike other element styles), increasing the risk of unintended global style leakage.
Code

src/lib/_imports/elements/html-elements.docs.postcss[R8-10]

+& dt {
+  font-weight: var(--medium);
+}
Evidence
core-styles.docs.postcss imports html-elements.docs.postcss directly, but the docs file starts
with a root-level & dt selector, which has no parent selector to bind to. Comparable element files
demonstrate the intended pattern: import selectors and wrap content in a main-content scope before
using &.

src/lib/_imports/core-styles.docs.postcss[15-22]
src/lib/_imports/elements/html-elements.docs.postcss[1-19]
src/lib/_imports/elements/headings--docs.postcss[1-20]
src/lib/_imports/elements/html-elements.cms.postcss[1-6]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`html-elements.docs.postcss` contains `& dt` at the stylesheet root, but it is imported as a standalone file by `core-styles.docs.postcss`. The `&` nesting operator requires an enclosing selector, so this can fail compilation or produce incorrect output.

## Issue Context
Other element styles (e.g., `headings--docs.postcss`, `html-elements.cms.postcss`) import `selectors.postcss` and wrap nested rules inside a `:where(:--main-content, ...) { ... }` scope before using `& ...`.

## Fix Focus Areas
- src/lib/_imports/elements/html-elements.docs.postcss[1-19]
- src/lib/_imports/core-styles.docs.postcss[16-20]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread src/lib/_imports/bootstrap4/components/alert.css Outdated
Comment thread src/lib/_imports/elements/html-elements.docs.postcss Outdated

@wesleyboar wesleyboar left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Looks good. One question. @cursor, answer.

Comment thread package.json
- alert.css imported x-message.css, but v3 only has x-message.postcss
- html-elements.docs.postcss used top-level `& dt` with no enclosing selector

Relates-to TACC#680
The `& dt` rule had no enclosing selector, so `&` resolved to `:scope`
(i.e. the whole document) instead of scoping to main content like the
sibling element styles do.

Relates-to TACC#680 (discussion)
…instead

Superseded by merging TACC#682 in next commit, so the fix
is properly sourced from main rather than living only on this branch.
…' into chore/v3-merge-main

# Conflicts:
#	dist/core-styles.docs.css
#	dist/elements/html-elements.docs.css
#	src/lib/_imports/elements/html-elements.docs.postcss
Simpler than scoping to main content: the `&` was unnecessary since
the rule already applied everywhere via `:scope` (same net effect as
no `&` at all), so just drop it instead of adding new scoping.
wesleyboar added a commit that referenced this pull request Aug 6, 2026
## Overview

Properly fixes syntax bug that browser and compile were fixing.

_Remove unscoped `&` from `html-elements.docs.css`._

<details>

`html-elements.docs.css` styles `dt` with a top-level `& dt { ... }`
rule that has no enclosing selector, so `&` resolves to `:scope` (the
whole document) instead of scoping to main content like the sibling
element styles do. Flagged by Qodo on #680.

</details>

## Related

- flagged in
#680 (comment)

## Changes

- **deleted** the `&` from `dt` rule

## Testing

1. `npm run build`
2. Confirm `dist/core-styles.docs.css` has
`dt{font-weight:var(--medium)}` instead of `dt{...}`.
…' into chore/v3-merge-main

# Conflicts:
#	dist/core-styles.docs.css
#	dist/elements/html-elements.docs.css
#	src/lib/_imports/elements/html-elements.docs.postcss
@wesleyboar
wesleyboar merged commit dfd78b0 into TACC:epic/v3 Aug 6, 2026
@wesleyboar
wesleyboar deleted the chore/v3-merge-main branch August 6, 2026 15:49
wesleyboar added a commit to wesleyboar/Core-Styles that referenced this pull request Aug 6, 2026
epic/v3 was squash-merged for PR TACC#680, so this branch's history has
no shared ancestor with origin/epic/v3 even though the tree content
is already identical (verified via `git diff origin/epic/v3 <old-tip>`
showing zero differences). Using the 'ours' strategy to record this
branch as up to date with epic/v3 without re-resolving conflicts that
were already resolved via the (squashed) merge history.
wesleyboar added a commit that referenced this pull request Aug 6, 2026
main's tip (#682) was already applied to epic/v3 via #680's chain
propagation, but #680 was squash-merged, severing epic/v3's ancestry
link to main. Recording this merge with the 'ours' strategy (verified
zero net content change) to restore that link so future `git merge
main` operations compute the correct merge-base instead of redoing
already-resolved conflicts.
wesleyboar added a commit that referenced this pull request Aug 6, 2026
## Overview

Syncs `epic/v3--reorg` with `epic/v3`'s merge of `main`.

## Related

- updates #455
- depends on #680 (merge that PR into `epic/v3` first)

## Changes

- **merged** `epic/v3` (with `main` merged in) into `epic/v3--reorg`
- **placed** new `bootstrap4/content/typography-headings` and
`tools/x-headings*` files per the reorg's client-library directory
structure
- **combined** reorg's own `portal` headings variant with main's new
`cms-vs-bootstrap`/`docs-vs-bootstrap` variants
- **combined** reorg's footer Bootstrap4 side-effects caveat with main's
newer footer note
- **removed** `headings--cms.hbs`, superseded by the generic
`headings.hbs` view

## Testing

1. `npm run build` - no errors
2. `npm run lint` - `No dist files found in source. Ready to publish.`

## UI

…

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Garrett Edmonds <43251554+edmondsgarrett@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
wesleyboar added a commit that referenced this pull request Aug 6, 2026
epic/v3's content (incl. main, via #680/#682) was already applied to
epic/v3--reorg via #681's chain propagation, but #681 was squash-merged,
severing the ancestry link again (same issue as #680 on epic/v3).
Recording this merge with the 'ours' strategy (verified zero net
content change) so future `git merge epic/v3` (and transitively
`git merge main`) operations compute the correct merge-base.
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