Commit Graph

73940 Commits

Author SHA1 Message Date
Fredrik Adelöw 779749fbd7 Guard against empty-filter fetch on mount and premature URL sync
The lastFetchParamsRef starts as undefined, so the initial debounce
would have fetched with an empty filter (returning every entity in
the catalog). Guard against this by skipping the fetch when no filter
components have registered yet.

Also skip the URL sync effect until at least one filter has been set,
to avoid briefly clearing filter query params from the URL bar before
filter components initialize.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:57:33 +02:00
Fredrik Adelöw 4694eb16e3 Revert EntityKindPicker ref — provider dedup handles it
The label is read by CatalogTable for the table title (e.g. "All
Components (42)"), so suppressing the label update would cause a
visible regression. The provider's ref-based fetch dedup already
prevents the redundant API call when only the label changes, so
the second updateFilters call is harmless.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:37:35 +02:00
Fredrik Adelöw 7c205457b6 Add changeset for entity list triple-fetch fix
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:31:38 +02:00
Fredrik Adelöw a103f0e604 test(catalog-react): add regression test for entity list fetch dedup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:30:49 +02:00
Fredrik Adelöw 4222c73fd3 fix(catalog-react): eliminate redundant fetches in useEntityListProvider
Replace useAsyncFn + outputState comparison with ref-based fetch dedup
and generation counter. Split entity filtering into a synchronous
useMemo so frontend-only filter changes are instant.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:29:44 +02:00
Fredrik Adelöw dfb920fb6e fix(catalog-react): prevent EntityKindPicker from double-firing updateFilters on label change
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:28:00 +02:00
Fredrik Adelöw 813608335f Merge pull request #34321 from backstage/freben/enter-prerelease-mode
Enter changeset prerelease mode
2026-05-20 11:21:53 +02:00
Fredrik Adelöw 34d86b8fe3 Enter changeset prerelease mode with tag "next"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 11:10:47 +02:00
Fredrik Adelöw cd8e20d7bb Merge pull request #34314 from backstage/freben/stitch-claim-transaction
Fix stitch queue race: wrap claim in transaction
2026-05-20 10:33:53 +02:00
Fredrik Adelöw 1d10fc41e8 Update changeset and PR description to cover both fix sites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:59:37 +02:00
Fredrik Adelöw dd52890773 Use ternary with await for consistent style and better stack traces
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:49:08 +02:00
Fredrik Adelöw 139a784ad4 Skip transaction wrapping when locking is not used
Only wrap the SELECT+UPDATE in a transaction for MySQL/PostgreSQL
where FOR UPDATE SKIP LOCKED is actually used. For sqlite3 the
transaction adds unnecessary BEGIN/COMMIT overhead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:44:31 +02:00
Fredrik Adelöw afc872aac6 Fix implicit any types on transaction callback parameters
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 08:06:37 +02:00
Fredrik Adelöw 6713e9fe72 Apply same transaction fix to getProcessableEntities
Same FOR UPDATE SKIP LOCKED race: the processing loop's claim query
had the SELECT and UPDATE as separate auto-committed statements.
The existing caller already wraps in a transaction, but this makes
the function self-protecting if called without one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 00:09:16 +02:00
Fredrik Adelöw f328b6f37e Merge pull request #34316 from backstage/freben/fix-empty-each-tests
fix: correct postgres env var casing in deploy_packages workflow
2026-05-19 23:34:19 +02:00
Fredrik Adelöw 8abfa78e4c Revert eachSupportedId guard — env var fix is sufficient
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:23:37 +02:00
Fredrik Adelöw 2c53691962 Fix postgres env var casing in deploy_packages workflow
The env vars used lowercase postgres18/postgres14 instead of uppercase
POSTGRES18/POSTGRES14, which didn't match the names expected by
TestDatabases. This caused all postgres-only test suites to see no
available databases and crash.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:21:47 +02:00
Patrik Oldsberg 6733eb1823 Merge pull request #34313 from backstage/worktree-v1.51-release-notes
Add v1.51.0 release notes
2026-05-19 23:21:12 +02:00
Fredrik Adelöw 03f0f3f953 Add changeset
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:19:18 +02:00
Fredrik Adelöw 1cbc3241a1 fix(backend-test-utils): prevent suite crash when no databases are available
When eachSupportedId() returned an empty array, describe.each([]) would
throw and crash the entire test suite. Return a placeholder ID instead,
so individual tests fail with a clear error rather than preventing the
entire suite from running.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:19:07 +02:00
Fredrik Adelöw 32548ad82c Use .modify() for conditional FOR UPDATE SKIP LOCKED
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:33:18 +02:00
Fredrik Adelöw d42f1ab765 Skip wrapping in transaction when caller already provides one
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:21:27 +02:00
benjdlambert 757bbfdbae restore changelog links in release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 22:18:27 +02:00
Fredrik Adelöw 774d69884a Wrap stitch queue claim in a transaction to hold row locks
The SELECT FOR UPDATE SKIP LOCKED and the subsequent UPDATE of
next_stitch_at now run inside a single transaction. Previously the
row locks were released after the SELECT auto-committed, allowing
another worker to claim the same rows before the UPDATE ran.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:12:59 +02:00
benjdlambert 9683a46b57 address PR review feedback on v1.51.0 release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 21:27:06 +02:00
Ben Lambert cfb9f07c28 Merge pull request #34228 from backstage/changeset-release/master 2026-05-19 21:21:29 +02:00
benjdlambert 82c81085b1 add v1.51.0 release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 20:47:20 +02:00
github-actions[bot] b97fcb0a93 Version Packages 2026-05-19 18:28:24 +00:00
Patrik Oldsberg 0a44fb3cb8 Merge pull request #33895 from ganievs/fix-valkey-cluster-client
fix: use iovalkey Cluster for Valkey cluster mode
2026-05-19 20:14:27 +02:00
Ben Lambert e16b564c6f Merge pull request #34310 from backstage/copilot/copy-commits-from-pr-34066
MCP structured responses, OIDC error improvements, catalog model reference config
2026-05-19 20:12:47 +02:00
benjdlambert 3f5e7ec2b4 Improve MCP safeStringify, OIDC error messages, and catalog model reference config
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 19:27:45 +02:00
Ben Lambert a5a269c27a Merge pull request #34300 from backstage/github-omit-suspended-rest
feat(catalog-backend-module-github): add experimental REST-based suspended user check
2026-05-19 19:19:59 +02:00
Love Kumar Chauhan ca8951ae87 fix(mcp-actions-backend): return structured content and remove markdown formatting in tool responses
This change aligns the MCP tool execution responses with the specification by returning plain text in the 'content' array and providing the raw JSON in a new 'structuredContent' field. It also removes the unnecessary Markdown code block formatting that was previously added to tool results.

Fixes #34052

Signed-off-by: Love Kumar Chauhan <lovechauhan6564@gmail.com>

Co-authored-by: benjdlambert <3645856+benjdlambert@users.noreply.github.com>
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 18:48:50 +02:00
Ben Lambert 381cf2ae10 Merge pull request #34308 from backstage/freben/cached-service-cleanup
Fix cache eviction race in CachedUserInfoService
2026-05-19 18:37:27 +02:00
Ben Lambert 359d5a502f Merge pull request #34016 from backstage/benjdlambert/api-v1beta2-mcp-server 2026-05-19 16:01:11 +02:00
Ben Lambert 484c073be9 Merge pull request #34261 from backstage/session/scheming-finch-ks70 2026-05-19 16:00:41 +02:00
MT Lewis 7c43925d68 feat(catalog-backend-module-github): remove @public tags from non-public github library functions
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:34 +01:00
MT Lewis 253c014cc1 feat(catalog-backend-module-github): memoize isGitHubEnterprise check
We should mostly get these for free because of the
GitHub conditional request caching, but this is a
nice safety net and also probably saves us some
time.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:34 +01:00
MT Lewis 91d7d91317 feat(catalog-backend-module-github): restore previous sequential processing of connection nodes
Keeping this change as minimal as possible for
this first phase, will restore the parallel
processing in a later iteration.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
MT Lewis 340977de5e feat(catalog-backend-module-github): rename options_ to wrappedOptions
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
MT Lewis d745f1c39c feat(catalog-backend-module-github): add experimental REST-based suspended user check
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
Fredrik Adelöw 97d3bd4c7b Add changeset for cached service cleanup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 15:27:22 +02:00
Fredrik Adelöw 4b4a614c5c Guard cache eviction on identity and use createDeferred in test
Only delete the cache entry on error if the map still holds the same
promise, preventing a stale rejection from evicting a newer entry.
Also switch the test to createDeferred for readability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 15:26:58 +02:00
Fredrik Adelöw 6eacdc036e Merge pull request #34252 from backstage/freben/lazy-permission-user
permission: cache user info, clean up PolicyQueryUser, drop getPluginRequestToken
2026-05-19 15:20:48 +02:00
Patrik Oldsberg 1dbc1543f4 Merge pull request #34299 from backstage/rugvip/nav-item-gone
frontend-plugin-api: remove NavItemBlueprint
2026-05-19 14:44:58 +02:00
Fredrik Adelöw a9f5560b49 Address review feedback: use fake timers and type the shared cache map
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:44:28 +02:00
Ben Lambert f0f6823a66 docs(scaffolder): update form decorators docs for promoted API (#34181)
* docs(scaffolder): update form decorators docs for promoted API

Signed-off-by: benjdlambert <ben@blam.sh>

* docs(scaffolder): address review feedback on form decorators docs

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:24:58 +02:00
benjdlambert 3bf3c9d878 chore: remove unnecessary as const assertions
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:44 +02:00
benjdlambert 34e52d13e7 chore: regenerate API reports after rebase
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:35 +02:00
benjdlambert 6d98fcefe0 chore: regenerate API reports
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:35 +02:00