Commit Graph

74110 Commits

Author SHA1 Message Date
benjdlambert 8dd6dce9ed feat(catalog-model): add addKindVersion builder method and move v1alpha2 to own layer
Adds addKindVersion to CatalogModelLayerBuilder so layers can add
versions to an existing kind without re-declaring its metadata.
Moves v1alpha2 API registration into ApiEntityV1alpha2.ts as a
separate model layer using the new method.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert fc407b805e chore: remove explanatory comments from apiEntityModel test
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 2cf453f328 refactor(catalog-model): rename API v1beta2 to v1alpha2
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert dddcc0b382 chore(catalog-model): regenerate API report for v1beta2 additions
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:33 +02:00
benjdlambert 27aee3a9b1 feat(catalog-model): add API v1beta2 with mcp-server subtype
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:33 +02:00
benjdlambert 163561085b feat(catalog-model): add API v1beta2 default and mcp-server schemas
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:33 +02:00
benjdlambert 9e0572b88c refactor: move AiResource types to @backstage/catalog-model alpha
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:33 +02:00
benjdlambert 19f9330073 docs: document source-location annotation for skill/rule content
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:14:58 +02:00
Fredrik Adelöw baeb4431e8 Merge pull request #34278 from backstage/freben/deprecate-immediate-stitching
catalog-backend: deprecate immediate mode stitching
2026-05-19 14:12:30 +02:00
Fredrik Adelöw 644adbd19a Move sweep before cache lookup to simplify expired entry handling
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 14:09:58 +02:00
Fredrik Adelöw fdf8f753bc Merge pull request #34301 from backstage/freben/incremental-ingestion-any-array
incremental-ingestion: use ANY(array) instead of IN(...) on Postgres
2026-05-19 14:06:34 +02:00
Fredrik Adelöw 624c39c93c Refactor whereInArray to use knex .modify() for linear query chains
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 13:37:49 +02:00
Fredrik Adelöw 0f8c977018 Reuse whereInArray helper in deleteMarkEntities and fix test formatting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 13:30:21 +02:00
dependabot[bot] 998664c1d2 chore(deps): Bump ws from 8.20.0 to 8.20.1
Bumps [ws](https://github.com/websockets/ws) from 8.20.0 to 8.20.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.20.0...8.20.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.20.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 10:22:54 +00:00
copilot-swe-agent[bot] fd2c369f7b test(notifications-backend): increase router test timeout for DB teardown
Agent-Logs-Url: https://github.com/backstage/backstage/sessions/7f504e1c-86b2-4d51-add3-6fb873dfe222
2026-05-19 10:21:51 +00:00
dependabot[bot] 86a2828257 chore(deps): Bump fast-uri from 3.1.0 to 3.1.2 in /workspaces/ui
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 10:18:33 +00:00
dependabot[bot] e0678d6557 chore(deps): Bump vm2 from 3.10.5 to 3.11.5 in /workspaces/ui
Bumps [vm2](https://github.com/patriksimek/vm2) from 3.10.5 to 3.11.5.
- [Release notes](https://github.com/patriksimek/vm2/releases)
- [Changelog](https://github.com/patriksimek/vm2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/patriksimek/vm2/compare/v3.10.5...v3.11.5)

---
updated-dependencies:
- dependency-name: vm2
  dependency-version: 3.11.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 10:18:16 +00:00
Patrik Oldsberg c35e968254 Merge pull request #34077 from backstage/mob/workspaces
workspaces: introduce isolated ui workspace
2026-05-19 12:15:54 +02:00
benjdlambert a185d7e0f8 feat: restore per-type guards for union narrowing
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 12:14:25 +02:00
Patrik Oldsberg dcf850f1f5 Merge pull request #34108 from backstage/rugvip/forward-embedded-pg-config
cli-module-build: forward user config to embedded Postgres
2026-05-19 12:10:05 +02:00
benjdlambert e5671e44c0 refactor: extend default type and remove per-type guards
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 12:09:21 +02:00
Fredrik Adelöw 32f0dfe7f8 incremental-ingestion: use ANY(array) instead of IN(...) on Postgres
The whereIn('ref', refs) calls on ingestion_mark_entities generated
a unique prepared statement for every distinct array length, bloating
the Postgres query plan cache. On Postgres, use = ANY($1) with a
single array parameter instead. Falls back to regular whereIn on
SQLite/MySQL.

Signed-off-by: Fredrik Adelöw <freben@gmail.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 11:55:30 +02:00
Patrik Oldsberg 2a03b0798c Apply suggestion from @Rugvip
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-05-19 11:48:20 +02:00
Fredrik Adelöw 8f867a2078 Merge pull request #34272 from backstage/freben/relations-target-index
catalog-backend: add missing index on relations.target_entity_ref
2026-05-19 11:43:39 +02:00
Patrik Oldsberg 2ec4c54b5f Remove rolled-back nav item disable changeset
The grumpy-experts-leave fix was superseded by removing nav-item config
matching entirely.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:29:29 +02:00
Patrik Oldsberg 59d62d3019 docs: use Remix icon in building plugins tutorial
Update the PageBlueprint example to use RiPuzzleLine and drop stale
nav item references from later snippets.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:29:12 +02:00
Patrik Oldsberg 36998fea17 scaffolder: restore page nav title to Create
Use Create on the page extension rather than the former nav item label.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:28:12 +02:00
Patrik Oldsberg b5032acd83 docs: remove legacy items input row from app nav table
The items input is internal backward compatibility, not public API.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:23:03 +02:00
Patrik Oldsberg 15afdd994d Fix plugin-app changeset to describe legacy nav-item support
Page-based nav discovery is unchanged; the app nav change is backward
compatibility after NavItemBlueprint removal.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:22:38 +02:00
Patrik Oldsberg e1b0499b7d docs: use Remix icon in plugin override example
Update the architecture plugins doc to match page IconElement usage.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:22:05 +02:00
Patrik Oldsberg 177a1c1af6 Clarify plugin-app changeset message in isolation
Explain page-based nav discovery and legacy nav-item compatibility together.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:21:23 +02:00
Patrik Oldsberg 2ba8c10106 Split plugin-app into its own changeset
Keep legacy nav-item compatibility note on plugin-app only; other
plugins get a changeset focused on page title/icon for sidebar entries.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:20:28 +02:00
Patrik Oldsberg fe72a38768 Mark renderInTestApp nav removal as breaking in changeset
Bump frontend-test-utils as minor with user-facing impact guidance.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:16:14 +02:00
Patrik Oldsberg 269c4f9f0d Remove legacy nav stub from renderInTestApp
Disable app/nav in the minimal test shell instead of rendering
legacy nav-item extensions. Use renderTestApp when nav behavior matters.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:15:31 +02:00
Patrik Oldsberg 483297f845 Trim Remix icon migration diff in changeset
Show only import and icon param changes for the Remix Icon example.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:13:45 +02:00
benjdlambert 9c7cb8f232 fix: set initial package version to 0.0.0
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 11:05:59 +02:00
Patrik Oldsberg 7089280c6e Add Remix icon migration notes to NavItemBlueprint changeset
Document switching from MUI IconComponent nav items to Remix Icon
elements on PageBlueprint.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:03:20 +02:00
Patrik Oldsberg 44d77e9680 Split nav item removal into separate changesets
Use dedicated changesets for the breaking frontend-plugin-api removal,
plugin migrations, and frontend-test-utils update.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:01:58 +02:00
Patrik Oldsberg 77ceb88228 Remove Nav Target legend from app visualizer
Legacy nav-item output is no longer a first-class extension type worth
highlighting in the detailed visualizer legend.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:01:05 +02:00
Patrik Oldsberg 10e5d6f8aa Remove NavItemBlueprint in favor of page-based nav discovery
Drop the deprecated NavItemBlueprint from the public API and migrate core
plugins to set title and icon on PageBlueprint instead. AppNav keeps
backward compatibility for legacy nav-item extensions via an internal
core.nav-item.target data ref.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:00:46 +02:00
Patrik Oldsberg 9a88d85d50 Merge pull request #34089 from backstage/otel/mcp-tools-call
feat: Instrument MCP tool calls with semantically appropriate span
2026-05-19 10:53:13 +02:00
Fredrik Adelöw bc32c13de6 catalog-backend: add missing index on relations.target_entity_ref
The relations table had indexes on originating_entity_id and
source_entity_ref but none on target_entity_ref. Several query paths
join or filter on this column:

- Orphan deletion (LEFT JOIN relations ON target_entity_ref)
- Entity ancestry (INNER JOIN relations ON target_entity_ref)
- Eager pruning (JOIN relations ON target_entity_ref)

Without an index these queries seq-scan the full table (~3.5M rows,
714 MB heap). On a production replica, a single point lookup takes
~122ms via seq scan. With the index it drops to <1ms.

The index is ~141 MB based on column width (~35 bytes avg) across
~3.5M rows. On PostgreSQL it's created with CONCURRENTLY to avoid
blocking reads/writes.

Signed-off-by: Fredrik Adelöw <freben@gmail.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 10:50:06 +02:00
benjdlambert 21835f6f52 feat: add rule specType with disciplines, category, and rationale
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:48:59 +02:00
Patrik Oldsberg 6651f2be06 app: remove nav item disable matching
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-05-19 10:48:24 +02:00
benjdlambert 333b10c2ab refactor: move AiResource types to @backstage/catalog-model alpha
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:49 +02:00
benjdlambert 46fbd60aef refactor: rename package to @backstage/plugin-catalog-backend-module-ai-model
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:49 +02:00
benjdlambert cf29736923 refactor: rename AIResource to AiResource for PascalCase consistency
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:48 +02:00
benjdlambert 07a2ece671 feat: install AIResource module in example backend with test entities
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:48 +02:00
benjdlambert 8e1e1bb06e fix: use CatalogModelSources.static for model registration
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:48 +02:00
benjdlambert 65c8533ba1 refactor: extract shared relation fields and fix type guard safety
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:48 +02:00