Commit Graph

73927 Commits

Author SHA1 Message Date
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
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
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
benjdlambert c41b6d09f7 docs: add README for ai-resource-entity-model module
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:48 +02:00
benjdlambert 37267be659 fix: clarify type guard test names
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:42 +02:00
benjdlambert 3170784f18 feat: add specType dispatch with skill-specific schema
Adds discriminated union on spec.type with specType dispatch in the
model layer. The skill type adds disciplines, categories, agents,
and dependsOn fields. Fixes model source to not duplicate the default
catalog entity model.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:41 +02:00
benjdlambert 3664148c2e feat: add AIResource catalog entity kind as opt-in module
Introduces @backstage/plugin-catalog-backend-module-ai-resource-entity-model,
a new backend module that registers the AIResource kind with the catalog.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 10:42:41 +02:00
Patrik Oldsberg 05f13d50c0 Merge pull request #34296 from backstage/worktree-fix-e2e-tests
fix(create-app): remove disabled nav-item config that breaks custom sidebar
2026-05-19 10:40:58 +02:00
MT Lewis 2bd0450cb4 feat(catalog-backend-module-msgraph): filter out disabled users by default (#34165)
* feat(catalog-backend-module-msgraph): filter out disabled users by default

The Microsoft Graph provider now always applies an `accountEnabled eq true`
base filter when fetching users. Any custom `user.filter` is combined with
the base filter using `and`, so adopters no longer need to manually add
`accountEnabled eq true` to their configuration.

Also removes the legacy mutual exclusivity check between `userFilter` and
`userGroupMemberFilter` — these serve orthogonal purposes (user-level
filtering vs group selection) and the downstream code already handles
both being set.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>

* chore: mark msgraph disabled-user filtering as breaking change

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>

* docs(catalog-backend-module-msgraph): clarify automatic accountEnabled filter in docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>

---------

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-19 10:30:30 +02:00
Patrik Oldsberg d11836fd22 workspaces/ui: add yarn settings from root
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-05-19 10:25:36 +02:00
Fredrik Adelöw a29edc58fb Merge pull request #34267 from backstage/freben/describe-each-databases
tests: use describe.each for database test iteration
2026-05-19 10:24:00 +02:00
Fredrik Adelöw 98f496a1ad Merge pull request #34265 from backstage/freben/stable-multi-org-order
github: stabilize entity order in multi-org provider
2026-05-19 10:23:43 +02:00