821 Commits
Author SHA1 Message Date
Techno Tim f6458d27c3 chore(deps): combine dependabot updates (next, eslint-config-next, setup-buildx-action) (#873)
- bump next from 16.3.0 to 16.3.1
- bump eslint-config-next from 16.3.0 to 16.3.1
- bump docker/setup-buildx-action from v4.2.0 to v4.3.0
2026-08-23 15:19:27 -05:00
Techno Tim 3840e187a7 chore(deps): combine dependabot dev dependency bumps (#869)
- bump @types/node from 26.1.2 to 26.2.0
- bump eslint-config-next from 16.2.12 to 16.3.0
- bump tsx from 4.23.11 to 4.23.12
2026-08-16 17:02:36 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b6a031349a chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates (#865)
Bumps the npm_and_yarn group with 2 updates in the / directory: [fast-uri](https://github.com/fastify/fast-uri) and [postcss](https://github.com/postcss/postcss).


Updates `fast-uri` from 3.1.4 to 3.1.5
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.4...v3.1.5)

Updates `postcss` from 8.5.19 to 8.5.23
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.19...8.5.23)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: postcss
  dependency-version: 8.5.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-09 09:16:38 -05:00
Techno TimandCopilot 0f228c20c5 chore(deps): combine open dependabot dependency bumps (#864)
- bump next 16.2.12 -> 16.3.0
- bump @playwright/test 1.62.0 -> 1.62.1
- bump @types/react 19.2.17 -> 19.2.18
- bump @types/react-dom 19.2.3 -> 19.2.4
- bump tsx 4.23.1 -> 4.23.8
- regenerate yarn.lock and next-env.d.ts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-09 03:29:33 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d5fd0a627c chore(deps-dev): bump @types/node from 26.1.1 to 26.1.2 (#856)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 26.1.1 to 26.1.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-01 23:02:33 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> dbd8d1f521 chore(deps-dev): bump eslint-config-next from 16.2.10 to 16.2.12 (#857)
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 16.2.10 to 16.2.12.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 16.2.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-01 23:02:29 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 707ca777e0 chore(deps): bump docker/login-action from 4.5.1 to 4.6.0 (#858)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7...dbcb813823bdd20940b903addbd779551569679f)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-01 23:02:26 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Timothy Stewart
b265e17e09 chore(deps-dev): bump @playwright/test from 1.61.1 to 1.62.0 (#852)
* chore(deps-dev): bump @playwright/test from 1.61.1 to 1.62.0

Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.61.1 to 1.62.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.61.1...v1.62.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(ci): update playwright Docker image to v1.62.0

Bump the CI container image to match the updated playwright version.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Timothy Stewart <timothystewart6@gmail.com>
2026-07-27 19:53:00 +00:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Timothy Stewart
4b7146b680 chore(deps): bump react from 19.2.7 to 19.2.8 (#850)
* chore(deps): bump react from 19.2.7 to 19.2.8

Bumps [react](https://github.com/react/react/tree/HEAD/packages/react) from 19.2.7 to 19.2.8.
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(deps): bump react-dom to 19.2.8 to match react 19.2.8

react and react-dom must have exact same version. Dependabot missed react-dom when bumping react.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Timothy Stewart <timothystewart6@gmail.com>
2026-07-27 19:52:47 +00:00
Techno Tim 93612dd01e fix(docker): use IPv4 loopback for healthcheck (#855)
- Avoid localhost resolving to IPv6 when the server listens on IPv4.\n- Add a container health regression test to the Docker smoke-test workflow.\n- Closes #854.
2026-07-26 22:58:48 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 529d1cfa8b chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 (#851)
Bumps [prettier](https://github.com/prettier/prettier) from 3.9.5 to 3.9.6.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.9.5...3.9.6)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 12:37:12 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 7c34dd4504 chore(deps): bump docker/login-action from 4.4.0 to 4.5.1 (#848)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.5.1.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...abd2ef45e78c5afb21d64d4ca52ee8550d9572c7)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 12:36:51 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 79ff577b97 chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#849)
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 12:36:45 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 996b6427c0 chore(deps): bump next from 16.2.10 to 16.2.12 (#853)
Bumps [next](https://github.com/vercel/next.js) from 16.2.10 to 16.2.12.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/compare/v16.2.10...v16.2.12)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 12:36:25 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a273660a8d chore(deps): bump fast-uri from 3.1.3 to 3.1.4 (#847)
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.3...v3.1.4)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 10:46:13 -05:00
Techno Tim dc5039c6b0 docs(contributing): refresh contribution guidance (#846)
- Add a conventional CONTRIBUTING guide for humans and automation agents
- Refresh issue templates and add a feature request form
- Clarify MIT license documentation and README links
2026-07-19 19:38:44 +00:00
Techno Tim ddcddc82e9 docs(pr-template): refresh pull request checklist (#845)
- Replace stale checklist items with current validation prompts
- Add sections for change type, configuration, docs, and reviewer notes
2026-07-19 19:32:20 +00:00
Techno Tim 874c8954ef Document all compose runtime envs (#844)
* docs(compose): document all runtime envs

- Add missing runtime environment examples to docker-compose
- Sort compose environment entries alphabetically
- Remove obsolete Compose version key

* docs(compose): include robots env examples

- Add robots runtime variables to docker-compose
- Keep the compose environment list aligned with ENV_NAMES

* docs(compose): add compose env sync script

- Add a script that syncs docker-compose env examples from ENV_NAMES
- Add check and write commands for compose env maintenance
- Include the compose env check in CI

* chore(compose): rename env scripts by context

- Rename compose env commands to context-first script names
- Update CI and script usage text for the new names
2026-07-19 19:29:48 +00:00
Techno Tim d211426bee feat(robots): add runtime robots configuration (#843)
- Generate robots.txt from runtime environment settings

- Add full override and additional crawler rule env vars

- Cover generated and minimal robots behavior in tests
2026-07-19 14:21:12 -05:00
Techno Tim a2028d2f4c feat(sitemap): add runtime sitemap route (#842)
- Generate sitemap.xml from OG_URL at request time

- Respect noindex and missing public URL settings

- Add unit and e2e coverage for sitemap behavior
2026-07-19 19:09:57 +00:00
Timothy Stewart 568cba075f ci(actions): target main branch
- Update release workflow pushes to run on main

- Update pull request workflow filters to target main

- Align GitHub Actions with the renamed default branch
2026-07-19 13:57:44 -05:00
Techno Tim 372ef52d7e fix(layout): keep mobile buttons centered (#841)
- Let buttons shrink within narrow containers

- Center button icons and labels with flexible layout

- Add unit and e2e regressions for mobile overflow
2026-07-19 13:54:06 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Techno Tim
f248afb830 chore(deps-dev): bump markdownlint-cli from 0.48.0 to 0.49.1 (#840)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.48.0 to 0.49.1.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.48.0...v0.49.1)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.49.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Techno Tim <timothystewart6@gmail.com>
2026-07-19 18:39:30 +00:00
Timothy Stewart 201da75eae fix(docker): lock build cache mounts
- Use explicit fresh BuildKit cache IDs for Yarn and Next build caches

- Serialize cache writes during multi-platform production builds

- Avoid corrupt Yarn tar extraction from concurrent cache writes
2026-07-19 13:36:20 -05:00
Timothy Stewart ade47ac6e6 ci(actions): allow release publish workflow permissions
- Grant the publish-images job actions write access

- Keep the release workflow default token scoped to contents read

- Satisfy the permissions requested by the reusable publish workflow
2026-07-19 13:28:49 -05:00
Techno Tim 794bfdb73d feat(nextjs): migrate application to Next.js (#839)
* test(migration): capture Razzle compatibility baseline

- Add parity test suite with 49 tests covering theme, shadows, button target, email links, Mastodon rel, share visibility, analytics inclusion, custom buttons, button order, README example, injection regression, and Dark theme exact-match semantics
- Add production HTTP smoke test script for container-level validation
- All 8 existing suites and 14 tests remain unchanged and green

* chore(nextjs): add Next.js 16 App Router foundation

- Install Next.js 16.2.10, React 19.2.7, React DOM 19.2.7, server-only
- Add dev dependencies: eslint@8.57.0, eslint-config-next@14.2.30, @testing-library/react, @testing-library/dom, @testing-library/jest-dom
- Upgrade react-test-renderer to 19.2.7 for React 19 compatibility
- Add next.config.js with poweredByHeader: false and reactStrictMode: true
- Add jsconfig.json with @/* path alias
- Create minimal App Router layout and healthcheck route
- Update parity and Sort tests to use @testing-library/react instead of deprecated react-test-renderer
- Add .next to gitignore
- 9 suites, 49 tests, 5 snapshots all green

* refactor(config): add request-time environment reader

- Add src/config/envNames.js with canonical allowlist of 165 supported keys
- Add src/config/runtimeConfig.js with getRuntimeConfig(), getTheme(), and shouldSkipHealthLog() helpers
- Import server-only to prevent client bundling
- Return a new plain object on every call (no module-level caching)
- Keep raw values as strings without type coercion
- Add comprehensive unit tests: key reading, missing keys, special characters, mutation isolation, theme logic, health log suppression, and allowlist invariants
- 10 suites, 70 tests, 5 snapshots all green

* refactor(assets): serve brand icons through Next.js public assets

- Copy all SVG icons from src/icons to public/icons
- Replace all 112 SVG imports in Home.js with stable /icons/ URLs
- Update Sort test to use URL paths instead of SVG imports
- All 10 suites, 70 tests, 5 snapshots green
- CSS order and desktop/mobile layout unchanged

* feat(nextjs): port runtime document metadata

- Replace static metadata object with async generateMetadata()
- Add force-dynamic to prevent build-time capture of config values
- Read LANG, THEME, FAVICON_URL and stylesheet config at request time
- Render stylesheets in original order (fonts, normalize, theme, os, littlelink, brands)
- Render og:type, author, keywords, and X-UA-Compatible meta tags in <head>
- Set html class to dark/light based on THEME=Dark exact match
- Add layout unit tests covering config-driven rendering and injection safety
- Add generateMetadata unit tests for all metadata fields with edge cases

* feat(nextjs): port link page to Server Components

- Convert Home, Button, Avatar, Sort to Server Components
- Convert Share to Client Component with use client directive
- Create AnalyticsTracker Client Component with event delegation
- Replace onClick handlers with data-analytics-event attribute
- Accept config values as props instead of importing runtimeConfig
- Pass dropShadow and buttonTarget from page to all buttons/avatar
- Remove memo, prop-types, react-router-dom dependencies from components
- Add try/catch for navigator.share rejection
- Update app/page.js to render Home with runtime config and AnalyticsTracker

* feat(analytics): port runtime scripts and click tracking

- Create AnalyticsScripts Server Component using next/script
- Implement safeJsEncode() for inline script value encoding
- Support Google Analytics, Umami, Matomo, and Plausible providers
- Preserve required value checks for each provider
- Preserve Umami default script filename and custom override
- Preserve Matomo image fallback with referrer policy
- Add comprehensive unit tests for safeJsEncode encoding
- Add unit tests for provider conditional rendering logic

* feat(server): run Next.js with compatible container middleware

- Create root server.js with Next.js custom server
- Use Express for production Morgan combined logging and compression
- Honor SKIP_HEALTH_CHECK_LOGS via shouldSkipHealthLog helper
- Listen on 0.0.0.0 with configurable PORT (default 3000)
- Disable x-powered-by header via Express and Next.js config
- Set compress: false in next.config.js to avoid double compression
- Forward all requests to Next.js request handler after middleware

* test(nextjs): migrate component tests to Testing Library

- Replace react-test-renderer with @testing-library/react in all tests
- Remove 5 obsolete snapshot files no longer used
- Remove setupTests.js (React Router warning suppression)
- Add comprehensive Button tests: rendering, styles, target, rel, analytics, dropShadow
- Add Avatar tests: src, srcSet, size, dropShadow
- Add Share tests: navigator.share availability and rejection handling
- Simplify Home and App tests to verify rendering without snapshot

* feat(container): build Next.js runtime image

- Replace Razzle build stage with Next.js build stage
- Remove patches directory from build context
- Copy app, next.config.js, jsconfig.json, and server.js into build stage
- Copy .next, public, server.js, next.config.js, package.json, and node_modules into runtime stage
- Add HOSTNAME=0.0.0.0 and PORT=3000 environment variables
- Change CMD from build/server.js to server.js (custom Next.js server)

* ci(nextjs): validate production container compatibility

- Run yarn build in main workflow CI after lint and test
- Run yarn build in PR workflow CI after lint and test
- Add Docker smoke test to PR workflow with runtime environment check
- Add GitHub Actions ecosystem to Dependabot updates
- Change npm Dependabot schedule from daily to weekly

* chore(razzle): remove Razzle build system and react-router

- Delete all Razzle-related source files (src/index.js, src/server.js, src/client.js, src/config.js)
- Delete App component with react-router Routes/Route pattern
- Create FontAwesomeInit client component for icon library initialization
- Update layout.js to wrap children with FontAwesomeInit
- Remove Razzle dependencies from package.json (razzle, webpack, react-router-dom, babel-preset-razzle, etc.)
- Update test scripts to use next/jest instead of razzle test
- Fix Google and Umami analytics tests for Jest 30 compatibility
- Fix parity test import for new runtimeConfig module
- Update .eslintrc to use next/core-web-vitals config
- Update .env.example to remove RAZZLE_ prefix
- Update yarn.lock after dependency changes

* docs(nextjs): update documentation for Next.js migration

- Update README with migration note, developer setup commands, and link to docs/
- Update CONTRIBUTION.md with Node 24 requirement and corrected file paths
- Update docs/healthcheck.md to remove express-specific language
- Remove duplicate analytics and healthcheck sections from README
- Keep README Docker Compose and docker run examples unchanged

* test(e2e): add Playwright e2e tests with full-env and minimal-env scenarios

- Add playwright.config.cjs with chromium and minimal-env projects
- Add e2e/full-env.spec.js: 14 tests for full docker-compose example env
- Add e2e/minimal-env.spec.js: 6 tests for zero-env-var scenario
- Add e2e/minimal-env.sh: script to run minimal-env tests via Docker
- Add test-results to .gitignore
- Add test:e2e and test:e2e:minimal npm scripts
- Fix #undefined rendering bug in Home.js (template literals with undefined)
- Fix duplicate meta keywords/author in layout.js
- Fix Dockerfile missing src/ copy (runtime MODULE_NOT_FOUND)
- Remove babel packages from package.json

* fix(parity-test): use empty env object to avoid next/jest .env loading

next/jest automatically loads .env files, which now contain unprefixed
env vars picked up by getRuntimeConfig. The old getCleanRuntimeConfig
only removed LANG/THEME, not the full set of .env vars.
Passing {} ensures a true clean baseline.

* refactor(tests): co-locate all tests under src/__tests__/

- Move analytics tests (google, umami, AnalyticsScripts) to src/__tests__/analytics/
- Move component tests (Avatar, Button, Home, Share, Sort) to src/__tests__/components/
- Move runtimeConfig.test.js to src/__tests__/config/
- Update all relative import paths in moved test files
- Add .prettierrc config matching eslint prettier rule (singleQuote: true)
- Fix public/css/brands.css: change button display from inline-block to block
  to prevent side-by-side layout on wide screens

* chore(deps): remove unused helmet and server-only packages

- helmet was a leftover from Razzle era, never imported in the codebase
- server-only cannot be used with CommonJS require() from the custom server
- Both removed from dependencies and yarn.lock updated

* chore(typescript): add strict TypeScript toolchain and ESLint flat config

- Add typescript, @types/node, @types/react, @types/react-dom as dev deps
- Upgrade eslint-config-next from 14.2.30 to 16.2.10
- Upgrade eslint from 8.57.0 to ^9.39.5
- Remove deprecated eslint plugins (eslint-config-prettier, eslint-plugin-import, eslint-plugin-jsx, eslint-plugin-node, eslint-plugin-promise, eslint-plugin-react)
- Create tsconfig.json based on Next.js 16.2.10 template with allowJs: true
- Create eslint.config.mjs with flat config, core-web-vitals and typescript presets
- Delete jsconfig.json, .eslintrc, .eslintignore
- Add typegen and typecheck scripts
- Add *.tsbuildinfo to .gitignore
- Fix prettier formatting in playwright.config.cjs

* refactor(config): type runtime environment configuration

- Rename envNames.js to envNames.ts with as const readonly tuple
- Rename runtimeConfig.js to runtimeConfig.ts with typed RuntimeConfig
- Add RuntimeConfig, Theme, DropShadow, and EnvName types
- Convert CommonJS exports to named ES module exports
- Update runtimeConfig test to .ts with proper type assertions
- Add @types/jest and jest to tsconfig types
- Delete unused src/utils.js
- Add moduleFileExtensions with ts/tsx to jest config

* refactor(components): type shared UI components

- Convert Avatar.js to Avatar.tsx with AvatarProps interface
- Convert Button.js to Button.tsx with ButtonProps interface
- Convert Share.js to Share.tsx with ShareProps interface
- Convert FontAwesomeInit.js to FontAwesomeInit.tsx with typed children
- Convert corresponding tests to .tsx with proper type handling
- Add moduleNameMapper rule for .js->.ts resolution in jest config

* refactor(analytics): type scripts and browser tracking

- Add src/types/global.d.ts for window.gtag, umami, and _paq
- Convert google.js, umami.js, matomo.js to .ts with typed functions
- Convert AnalyticsScripts.js to .tsx with typed RuntimeConfig
- Convert AnalyticsTracker.js to .tsx with AnalyticsTrackerProps
- Convert analytics tests to .ts/.tsx
- Use optional chaining for window analytics globals

* refactor(home): type button rendering and ordering

- Convert Sort.js to Sort.tsx with typed SortableElement interface
- Convert Home.js to Home.tsx with HomeProps using RuntimeConfig
- Convert Sort and Home tests to .tsx
- Cast dropShadow from config as DropShadow type
- Use data-order instead of non-standard order on div elements

* feat(app-router): type App Router entry points with TypeScript

- Rename app/layout.js -> app/layout.tsx, app/page.js -> app/page.tsx, app/healthcheck/route.js -> app/healthcheck/route.ts
- Add generateMetadata return type as Promise<Metadata> in layout.tsx with typed RuntimeConfig
- Rename test files to .tsx extension: layout.test.tsx, parity.test.tsx
- Fix prettier formatting and lint issues in layout.tsx and layout.test.tsx
- Add non-null assertions for openGraph, twitter, and other metadata properties in tests
- Fix Twitter card type assertion in test to handle discriminated union narrowing
- Suppress @typescript-eslint/no-require-imports for dynamic export test

* test(typescript): type unit and end-to-end tests

- Convert Font Awesome mock to .tsx with typed return type React.ReactElement
- Convert full-env.spec.js to .spec.ts with typed ENV fixture via Record<string, string>
- Convert minimal-env.spec.js to .spec.ts
- Convert playwright.config.cjs to playwright.config.ts with ES module syntax
- Update minimal-env.sh to reference playwright.config.ts and use yarn playwright
- Update testMatch patterns in playwright config to .spec.ts
- Remove old .js and .cjs test/configuration files

* refactor(server): run typed custom server in Docker

- Convert server.js to server.ts with typed Express Request parameter for Morgan skip
- Add @types/express, @types/morgan, @types/compression dev dependencies
- Add tsx dev dependency for development server execution
- Create tsconfig.server.json for server-side compilation to dist-server/
- Add dist-server/ to .gitignore and eslint.config.mjs ignores
- Update package.json scripts: dev=tsx server.ts, build=next build && tsc -p tsconfig.server.json, start=NODE_ENV=production node dist-server/server.js
- Update Dockerfile: copy tsconfig.json, tsconfig.server.json, next-env.d.ts, server.ts to build stage; copy dist-server/ to runtime; CMD uses dist-server/server.js
- Update playwright.config.ts webServer command to use dist-server/server.js
- Add tsconfig.server.json for CommonJS compilation of server.ts and its runtime dependencies
- Remove server.js, jsconfig.json reference from Dockerfile

* ci(typescript): enforce types and end-to-end tests

- Rename js-install-and-test job to install-test-build in both PR and main workflows
- Split monolithic install+test+lint+typecheck+build step into separate named steps
- Add explicit yarn typecheck step after lint and before build
- Update PR template checklist to include yarn typecheck

* docs(typescript): document typed development workflow

- Add yarn typecheck and file extension conventions to README.md
- Add VS Code workspace TypeScript version instructions to README.md and CONTRIBUTION.md
- Document runtime configuration behavior (per-request env reading, no NEXT_PUBLIC_ prefix)
- Update CONTRIBUTION.md with typecheck, lint, and full validation commands
- Update file references in CONTRIBUTION.md from .js to .ts/.tsx extensions

* chore(typescript): tighten config with allowJs false

- Set allowJs to false now that all application code uses .ts/.tsx
- Remove .js, .jsx, .mjs, .cjs from include globs
- jest.config.js and next.config.js retained as documented tool config exceptions

* chore(config): convert next.config.js to next.config.ts

- Replace CommonJS next.config.js with ES module next.config.ts using NextConfig type
- Update Dockerfile to copy next.config.ts instead of next.config.js
- jest.config.js remains as the only .js file (documented tool config exception)

* ci(e2e): add Playwright e2e jobs to CI workflows

- Add full-env-e2e job to PR workflow (needs install-test-build, runs yarn test:e2e with Playwright chromium)
- Add full-env-e2e and minimal-env-e2e jobs to release workflow
- Make release build-and-push-docker-image depend on both e2e jobs
- Split full-env (webServer with dev build) and minimal-env (Docker container with no env vars)
- Use trap for Docker cleanup in minimal-env job
- Install Playwright browsers with --with-deps chromium in each e2e job
- Update PR template checklist to include yarn test:e2e

* ci(e2e): pin Playwright container to v1.61.1 with digest

- Switch full-env-e2e jobs to use mcr.microsoft.com/playwright:v1.61.1 pinned to sha256:5b8f294aff9041b7191c34a4bab3ac270157a28774d4b0660e9743297b697e48
- Remove playwright install step from full-env-e2e jobs (browsers preinstalled in container)
- Add playwright install step to minimal-env-e2e (needs host-based browsers)
- Pin matches local @playwright/test version 1.61.1 from yarn.lock

* chore(types): update next-env.d.ts to production route types

- Import path changed from .next/dev/types/routes.d.ts to .next/types/routes.d.ts
- Auto-generated by next typegen after production build

* refactor(ci): DRY up workflows into reusable components

- Extract install-test-build.yml as reusable workflow with build-docker input
- Extract full-env-e2e.yml as reusable Playwright container workflow
- Extract minimal-env-e2e.yml as reusable Docker+minimal workflow
- Extract build-and-push.yml as reusable multi-arch publish workflow
- Remove inline job definitions from pull-request.yml and main.yml
- Both top-level workflows now call shared reusable workflows via uses:

* chore(docker): optimize Docker build and add .dockerignore

- Add .dockerignore to reduce build context from 822MB to 92KB
- Prune .next/ of build-only artifacts (cache, dev, turbopack, diagnostics, traces, source maps)
- Remove unnecessary runtime copies of src/, server.ts, next.config.ts, package.json
- Remove unused apk add curl from both stages (wget is built into Alpine)

* chore(ci): fix FUNDING.yml missing trailing newline

- Add missing newline at end of FUNDING.yml
- next-env.d.ts reverted to dev route types after running next dev

* chore(docker): use Next standalone runtime image

- Enable Next.js standalone output for traced production runtime files
- Build dependencies in a dedicated cached deps stage
- Copy only standalone server, static assets, and public files into the final image
- Pin the Node Alpine base image by digest
- Run the final container as the non-root node user

* chore(ci): include typecheck in ci script

- Add yarn typecheck to the package ci script
- Commit the next-env.d.ts route type path generated by next typegen

* chore(docker): tighten production runtime image

- Disable Next.js telemetry during Docker build and runtime
- Cache .next build artifacts with BuildKit to speed up rebuilds
- Prune unused glibc Sharp binaries from the Alpine standalone bundle
- Keep the final image on the pinned Node 24.18.0 Alpine base

* chore(lint): suppress intentional Next warnings

- Suppress public stylesheet link warnings in the runtime-configured layout
- Suppress plain img warnings for analytics pixels and runtime-configured image URLs
- Keep ESLint clean without changing rendered behavior

* ci(actions): tighten reusable workflows

- Restore pull request and release workflows to local reusable workflow calls
- Pin reusable jobs to ubuntu-24.04 and add job timeouts
- Scope full-env Playwright runs to the chromium project after building
- Reuse the minimal-env Docker e2e helper with configurable image names
- Add GitHub Actions cache backend to Docker publish builds

* docs(readme): refresh Next.js project overview

- Remove migration-specific README notes

- Describe the current Next.js and TypeScript application setup

- Clean up developer commands and configuration wording

* chore(cleanup): remove old build references

- Update comments to describe the current test behavior

- Remove the obsolete prefix-specific allowlist test

- Keep runtime configuration docs focused on documented environment names

* fix(icons): resolve custom button icon warnings

- Use Font Awesome 6 icon names in README and e2e examples

- Register Font Awesome packs during server rendering

- Remove missing-icon noise from full-env Playwright runs

* ci(actions): clarify reusable workflow checks

- Give caller jobs and reusable jobs distinct names

- Add js-install-and-test compatibility gate for required checks

- Keep the required check tied to the Node quality gate result

* ci(actions): remove legacy required-check shim

- Remove the compatibility js-install-and-test job

- Keep PR checks named for the actual quality and e2e suites

- Expect branch protection to require the new workflow check name
2026-07-19 13:26:37 -05:00
Techno Tim e29511e875 chore(ci): update all GitHub Actions to latest versions with SHA pins (#838)
- actions/checkout v4.1.1 -> v7.0.0 (9c091bb)
- actions/setup-node v4.0.1 -> v7.0.0 (8207627)
- docker/setup-qemu-action v3.0.0 -> v4.2.0 (96fe6ef)
- docker/setup-buildx-action v3.0.0 -> v4.2.0 (bb05f3f)
- docker/login-action v3.0.0 -> v4.4.0 (af1e73f)
- docker/build-push-action v5.1.0 -> v7.3.0 (53b7df9)
2026-07-17 19:19:47 -05:00
Techno Tim 84e3718e00 fix(build): Verify Docker build and patch failures (#837) 2026-07-17 19:16:08 -05:00
Techno Tim c1596a00cf fix(build): replace css-minimizer-webpack-plugin's md4 hash with sha256 for Node 24 OpenSSL 3 compat (#835)
- Switched 'md4' to 'sha256' in css-minimizer-webpack-plugin via patch-package, since Node 24 dropped OpenSSL 3 support for md4
- Added patch-package as a devDependency and postinstall hook to apply the patch on install
- Added COPY patches/ to Dockerfile so the patch is applied during yarn install v1.22.22
[1/4] Resolving packages...
success Already up-to-date.
$ command -v patch-package >/dev/null 2>&1 && patch-package || true
patch-package 8.0.1
Applying patches...
css-minimizer-webpack-plugin@1.3.0 ✔
Done in 0.40s.
- Fixed legacy ENV key=value format warning in Dockerfile
2026-07-17 19:03:00 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b39290fa19 chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 (#832)
Bumps [websocket-driver](https://github.com/faye/websocket-driver-node) from 0.7.4 to 0.7.5.
- [Changelog](https://github.com/faye/websocket-driver-node/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-driver-node/compare/0.7.4...0.7.5)

---
updated-dependencies:
- dependency-name: websocket-driver
  dependency-version: 0.7.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 17:13:03 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 93d2743177 chore(deps): bump form-data from 3.0.4 to 3.0.5 (#827)
Bumps [form-data](https://github.com/form-data/form-data) from 3.0.4 to 3.0.5.
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v3.0.4...v3.0.5)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 3.0.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 17:12:50 -05:00
Techno Tim 76592afe4c chore(deps): upgrade to Node 24 and fix broken dependencies (#833)
- Downgrade webpack to v4 for razzle 4.2.18 compatibility
- Downgrade webpack-dev-server to ~3.11.0 (razzle peer dep)
- Downgrade html-webpack-plugin to ~4.5.2 and mini-css-extract-plugin to ^1.6.2
- Remove outdated resolutions block (string-width, table were conflicting)
- Add src/setupTests.js to suppress React Router v6->v7 async deprecation warnings
- Update .nvmrc, Dockerfile, and workflows to Node v24.18.0
2026-07-17 16:42:46 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d8fe0436a1 chore(deps): bump launch-editor from 2.13.2 to 2.14.1 (#824)
Bumps [launch-editor](https://github.com/vitejs/launch-editor) from 2.13.2 to 2.14.1.
- [Commits](https://github.com/vitejs/launch-editor/compare/v2.13.2...v2.14.1)

---
updated-dependencies:
- dependency-name: launch-editor
  dependency-version: 2.14.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 12:01:15 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> cb4c952ea9 chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 (#815)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 12:23:45 -05:00
Timothy Stewart ad60f30db0 chore(deps): Updated 2026-05-04 12:22:51 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 20088bc861 chore(deps-dev): bump webpack from 5.105.4 to 5.106.1 (#814)
Bumps [webpack](https://github.com/webpack/webpack) from 5.105.4 to 5.106.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.4...v5.106.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.106.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 08:46:38 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> e340c329fc chore(deps-dev): bump prettier from 3.8.1 to 3.8.2 (#813)
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.1 to 3.8.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.1...3.8.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 08:46:27 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> bb74232464 chore(deps): bump lodash from 4.17.23 to 4.18.1 (#811)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-04 18:16:50 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Techno Tim
3a68e905c6 chore(deps): bump path-to-regexp from 0.1.12 to 0.1.13 (#810)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Techno Tim <timothystewart6@gmail.com>
2026-04-03 16:27:34 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> f8388c4514 chore(deps-dev): bump mini-css-extract-plugin from 2.10.1 to 2.10.2 (#809)
Bumps [mini-css-extract-plugin](https://github.com/webpack/mini-css-extract-plugin) from 2.10.1 to 2.10.2.
- [Release notes](https://github.com/webpack/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack/mini-css-extract-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/mini-css-extract-plugin/compare/v2.10.1...v2.10.2)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-version: 2.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 11:26:30 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b478196dfc chore(deps): bump serialize-javascript from 7.0.4 to 7.0.5 (#808)
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v7.0.4...v7.0.5)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 7.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 11:26:08 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> e1bdc198cb chore(deps): bump serialize-javascript from 7.0.3 to 7.0.4 (#807)
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-24 17:47:43 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 67df0e21a4 chore(deps-dev): bump markdownlint-cli from 0.47.0 to 0.48.0 (#803)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.48.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 21:49:06 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> c51b2e0cf3 chore(deps): bump serialize-javascript from 6.0.2 to 7.0.3 (#802)
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 6.0.2 to 7.0.3.
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.2...v7.0.3)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 7.0.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 16:46:56 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b9518e65e1 chore(deps-dev): bump webpack from 5.105.2 to 5.105.4 (#804)
Bumps [webpack](https://github.com/webpack/webpack) from 5.105.2 to 5.105.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.2...v5.105.4)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.105.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 16:46:53 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b7a04ee583 chore(deps-dev): bump mini-css-extract-plugin from 2.10.0 to 2.10.1 (#805)
Bumps [mini-css-extract-plugin](https://github.com/webpack/mini-css-extract-plugin) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/webpack/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack/mini-css-extract-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/mini-css-extract-plugin/compare/v2.10.0...v2.10.1)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-version: 2.10.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 16:46:51 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d3070e1239 chore(deps): bump flatted from 3.3.3 to 3.4.2 (#806)
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 16:46:49 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d72f8c5e1b chore(deps): bump qs from 6.14.1 to 6.14.2 (#800)
Bumps [qs](https://github.com/ljharb/qs) from 6.14.1 to 6.14.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.1...v6.14.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 10:06:53 -06:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> cc1f2e85cc chore(deps-dev): bump webpack from 5.104.1 to 5.105.2 (#799)
Bumps [webpack](https://github.com/webpack/webpack) from 5.104.1 to 5.105.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.104.1...v5.105.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.105.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 10:06:45 -06:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 02e5bca8ec chore(deps-dev): bump @babel/core from 7.28.6 to 7.29.0 (#796)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.6 to 7.29.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 10:06:36 -06:00