Skip to content

feat(architectures): dates, catalog sort, and tag search chips - #1964

Merged
mrbobbytables merged 3 commits into
cncf:mainfrom
mrbobbytables:feat/architecture-dates
Oct 28, 2026
Merged

mrbobbytables merged 3 commits into
cncf:mainfrom
mrbobbytables:feat/architecture-dates

Conversation

@mrbobbytables

@mrbobbytables mrbobbytables commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Remit: maintainer-requested feature; /architectures cards show when each architecture was last updated, the catalog can be sorted alphabetically or by most recently updated, and it can be narrowed by tag through chips in the search box.

Changes

  • Data: every record in data/architectures/records/ and catalog.json gains published and updated (YYYY-MM-DD, UTC), sourced from cncf/architecture at each record's pinned sourceCommit:
    • published: the upstream page's front-matter date
    • updated: date of the last upstream commit touching content/en/architectures/<id>/
  • Importer: issue-sourced records take published from the issue's created_at and updated from updated_at (falling back to created_at); a payload without a valid created_at is rejected.
  • Validator: validate:architectures requires both dates to be real calendar dates and updated >= published.
  • Cards: show "Updated " in a <time> element, using the shared UTC formatDate.
  • Sort: a new "Sort architectures" select, with "Alphabetical" (default; organization, then title) and "Recently updated" (newest first, alphabetical within a day).
    • It is kept separate from the filters, so it is not counted as active and Clear filters does not reset it.
    • Rendered through FilterToolbar; a select may now omit allLabel to drop the empty "All" option.
  • Tag chips: a new "Add a tag" select adds the chosen tag to the search box as a removable chip.
    • Results match any selected tag, ignoring case, and combine with the other filters. Tags differing only in case (Kubernetes, kubernetes) are listed once.
    • Removing a chip returns focus to the search box. Backspace in an empty search box removes the last chip.
    • Selected tags count as one active filter, and Clear filters removes them.
    • FilterToolbar gains an optional searchChips prop; useFilterToolbar counts a list-valued filter as active only while it is non-empty.
  • Search: typed text now matches organization, title, summary, and tags. The label reads "Search architectures by organization, title, or tag".
  • Tag data: underscores in tags become spaces (private_cloud is now private cloud) in 5 records and the catalog. The issue importer converts underscores, and validate:architectures rejects them.
  • Docs: CONTRIBUTING and the catalog intro describe the new fields, the sort, and the tag format.
Record published updated
adobe 2024-10-11 2026-06-04
allianz 2024-10-28 2024-11-10
capital-one 2026-10-23 2026-10-23
cern-scientific-computing 2026-03-09 2026-06-04
colopl 2026-07-28 2026-07-28
flipkart-chaos-engineering 2026-06-08 2026-06-15
sncf-onprem 2026-07-03 2026-10-27
swisscom-cloud-native-telco 2026-03-16 2026-06-04
swisscom-kubernetes-service 2026-03-04 2026-10-27
zeiss 2026-03-17 2026-06-04

Validation

  • npm run test:unit:coverage:check: passes (3678 tests)
  • Mutation testing on the four changed src/ files: score 100% (one equivalent mutant annotated)
  • check:format, check:spelling, check:markdown, check:lint, check:unused, check:duplication, validate:architectures, build:production: all pass
  • Browser tests in tests/e2e/interactions.spec.js cover the sort control, adding and clearing tag chips, and Backspace removing the last chip. The full local end-to-end coverage lane passes (419 tests) at the CI thresholds, and ArchitectureFilters, ReferenceArchitectures, FilterToolbar and useFilterToolbar are at 100% source and region coverage. Two guards the UI cannot reach were removed (the addTag dedupe, since the tag select lists only unselected tags, and optional chaining on the search input focus). The bare-input arm of FilterToolbar is recorded as span-drift in tests/e2e/fixtures/accepted-regions.json: the member and case study toolbars take it in other chunks.

Each architecture record now carries published and updated dates
(YYYY-MM-DD, UTC). For records from cncf/architecture, published is the
upstream front-matter date and updated is the last upstream commit to the
architecture directory at the pinned sourceCommit. Issue-sourced records
take them from the issue's created_at and updated_at.

Catalog cards show the updated date, and a new sort control orders the
catalog alphabetically (default) or by most recently updated. The sort is
not a filter: it is not counted as active and Clear filters keeps it.
validate:architectures rejects missing, malformed or inverted dates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Bob Killen <bkillen@linuxfoundation.org>
@netlify

netlify Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for endusers ready!

Name Link
🔨 Latest commit 8215b76
🔍 Latest deploy log https://app.netlify.com/projects/endusers/deploys/6ae1513c4e91a919f7603e81
😎 Deploy Preview https://deploy-preview-1964--endusers.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

A new "Add a tag" select puts tags into the search box as removable
chips. Selected tags match any one of them, case-insensitively, and
combine with the other filters; Backspace in an empty search box removes
the last chip. Typed search now also matches tags, alongside
organization, title and summary.

Tags are stored with spaces rather than underscores: the shipped records
are updated, the issue importer converts them, and
validate:architectures rejects an underscore. FilterToolbar gains an
optional searchChips prop, and useFilterToolbar counts a list-valued
filter as active only while it is non-empty.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Bob Killen <bkillen@linuxfoundation.org>
@mrbobbytables mrbobbytables changed the title feat(architectures): show updated dates and add catalog sort feat(architectures): dates, catalog sort, and tag search chips Oct 28, 2026
Drop two guards the catalog UI cannot reach (the addTag dedupe, since
the tag select lists only unselected tags, and optional chaining on the
always-present search input), add a browser test for Backspace removing
the last chip, and record the no-chip toolbar arm as span drift.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Bob Killen <bkillen@linuxfoundation.org>
@mrbobbytables
mrbobbytables added this pull request to the merge queue Oct 28, 2026
Merged via the queue into cncf:main with commit b72ce96 Oct 28, 2026
14 checks passed
@mrbobbytables
mrbobbytables deleted the feat/architecture-dates branch October 29, 2026 18:44
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.

1 participant