19202 Commits

Author SHA1 Message Date
Fredrik Adelöw 1500fe31b4 restructure retry loop to remove parallel response/error variables
Each catch path now decides for itself whether to rethrow or sleep and
continue, so the loop body has a definite Response after the try/catch
and there is no shared `error: unknown` slot that could in principle be
thrown unset. Pulls the exponential delay into a tiny local helper to
share between the two retry paths.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:28:29 +02:00
Fredrik Adelöw d7f994308e drop non-null assertion in retry loop
Flip the order of the response/error check so TypeScript narrows the
types itself rather than relying on `response!` to assert what the code
already guarantees by construction.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:17:51 +02:00
Fredrik Adelöw 90d3968e6c address review comments
- Cancel discarded response bodies before retrying so the underlying
  connection can be returned to the pool instead of being held open
  until the response is garbage collected.
- Stop asserting on the rejected error message in the network-error
  retry test; track rejection via a flag so the test isn't tied to
  fetch/MSW error strings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:01:41 +02:00
Fredrik Adelöw 6b112d3fe8 fix(integration): correct GitLab fetch mode and retry on network errors
Removes a misplaced `mode: 'same-origin'` option that would have rejected
cross-origin requests when the integration is used from a browser, and
extends the retry wrapper so transient network errors are retried using
the configured `maxRetries`. Caller-initiated aborts still propagate
immediately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 10:43:49 +02:00
Charles de Dreuille eecd8130dc fix(ui): tune plugin header core spacing
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-05-04 08:41:17 +01:00
Charles de Dreuille 36825fe290 Update PluginHeaderAndHeader.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 15:01:45 +01:00
Patrik Oldsberg c9468995fa Move config reading into startEmbeddedDb
Encapsulate the config-loading and embedded-postgres decision inside
`startEmbeddedDb` so that `runBackend` only needs to pass through the
raw `configPaths` and `targetDir`. This simplifies the interface between
the two modules and keeps all embedded-postgres concerns in one place.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-30 13:07:04 +02:00
Patrik Oldsberg a3a1802284 Use mockServices.rootConfig.mock for config mocking in tests
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-30 12:35:55 +02:00
Ruslans Tarasovs 5011e30c2c Update packages/techdocs-cli/src/legacy-docs/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Ruslans Tarasovs <49794769+rtar@users.noreply.github.com>
Signed-off-by: Ruslans Tarasovs <ruslan@tarasovs.com>
2026-04-30 13:09:39 +03:00
Ruslans Tarasovs 18b2059ce3 Fixed incorrect parameter name
Signed-off-by: Ruslans Tarasovs <ruslan@tarasovs.com>
2026-04-30 13:09:38 +03:00
Ruslans Tarasovs ff860a985d Added forgotten test file
Signed-off-by: Ruslans Tarasovs <ruslan@tarasovs.com>
2026-04-30 13:09:38 +03:00
Ruslans Tarasovs 6ce84626ab Move docs directory validation to after copying README.md
Signed-off-by: Ruslans Tarasovs <ruslan@tarasovs.com>
2026-04-30 13:09:38 +03:00
Patrik Oldsberg d7e22c23c4 Fix config read crash when database connection is a string
The readDatabaseConfig function would crash when trying to read
sub-keys of backend.database.connection when the value is a plain
string (e.g. ':memory:' for better-sqlite3). Guard by checking the
raw value type before attempting to read structured connection keys.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-30 11:50:58 +02:00
Patrik Oldsberg be7e4eb48b cli-module-build: forward user config to embedded Postgres
When using the embedded-postgres database client, user-provided
connection config (host, port, user, password) is now forwarded to
the embedded Postgres instance. Only values that the user hasn't
configured are filled in with defaults and injected into the app
config, preserving existing behavior when no config is provided.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-30 11:34:51 +02:00
Charles de Dreuille 4955e51e07 fix(ui): handle core page after plugin header
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 09:56:17 +01:00
Charles de Dreuille 021b36800f fix(ui): collapse plugin header spacing before headers
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 09:33:18 +01:00
Juan Escalada c3e07a5cb3 fix: prevent unexpected signouts when disabling autologout
Signed-off-by: Juan Escalada <juanescalada175@gmail.com>
2026-04-30 12:04:03 +09:00
Juan Escalada 6b96557718 fix: add isLoggedRef and modify login checking logic
Signed-off-by: Juan Escalada <juanescalada175@gmail.com>
2026-04-30 11:45:48 +09:00
Andre Wanlin 2f33a9f63f Fixes for non-breaking typos and typos configuration
Signed-off-by: Andre Wanlin <awanlin@spotify.com>

More

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-04-29 16:54:05 -05:00
Charles de Dreuille a9f3d7189f Update PluginHeader.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Charles de Dreuille 93d1d40e64 fix(ui): refine plugin header spacing
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Charles de Dreuille 38bb056aa6 fix(ui): adjust plugin header spacing
Align PluginHeader spacing across tabbed and non-tabbed variants so the component owns the surrounding page spacing more consistently.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Andre Wanlin 84913005fd Merge pull request #31838 from karthikjeeyar/mkdocs-patch
feat(techdocs): add app-config option to disable external font download
2026-04-29 12:47:12 -05:00
github-actions[bot] 7295193bb6 Version Packages (next) 2026-04-28 15:53:09 +00:00
James Brooks e7fc79fb13 Add support for sections to Select (#34012)
Updates the Select component to accept a set of sections with options as opposed to just a flat list of options.

---------

Signed-off-by: James Brooks <jamesbrooks@spotify.com>
2026-04-28 16:13:39 +01:00
Patrik Oldsberg 7daa136495 create-app: pin protobufjs and @protobufjs/inquire in yarn.lock seed
@protobufjs/inquire@1.1.1 dropped the eval-based workaround that hid its
dynamic require() from bundlers, which makes webpack/rspack emit a
"Critical dependency: the request of a dependency is an expression"
warning that fails the build under CI=true. protobufjs@7.5.6 also
bumped its dependency on @protobufjs/inquire from ^1.1.0 to ^1.1.1, so
pinning just the inquire range isn't enough — pin protobufjs to 7.5.5
for all known workspace ranges as well.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-28 16:05:29 +02:00
Dylan O'Gara c0f4540146 Remove type name from JSDoc comments
Signed-off-by: Dylan O'Gara <dogara@webstaurantstore.com>
2026-04-27 14:30:38 -04:00
Dylan O'Gara fa363f9d3c Add support for external refs renderInTestApp
Signed-off-by: Dylan O'Gara <dogara@webstaurantstore.com>
2026-04-27 14:06:08 -04:00
Charles de Dreuille ca53b86336 Merge pull request #34067 from backstage/cursor/header-sticky-prop
BUI - Add sticky Header support
2026-04-27 14:20:23 +01:00
Charles de Dreuille de75f7c0f4 fix(ui): set CardBody minimum height
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-27 08:56:12 +01:00
Charles de Dreuille ec93dd281a fix(ui): always render headerTop, adjust content padding, add story
- Always render headerTop wrapper for consistent spacing
- Reduce default content padding-top from space-6 to space-3
- Add PluginHeaderAndHeader story and update Spotify theme

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 21:15:42 +01:00
Charles de Dreuille 7b0c998fea fix(ui): remove unused root class name from HeaderDefinition
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 20:57:57 +01:00
Charles de Dreuille 84f151c5ee fix(ui): simplify HeaderTop padding-top to always use space-6
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 20:52:54 +01:00
Charles de Dreuille 8a0a5c9553 feat(ui): improve Header layout with tag-aware padding and renamed sections
- Add data-has-tags attribute to reduce header padding-top when tags are present
- Rename beforeSticky/afterSticky classes to headerTop/headerBottom
- Always render headerBottom for consistent bottom margin
- Inline JSX sections into a single return statement

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 20:36:24 +01:00
Charles de Dreuille 0e71545ee6 Preserve Header className target
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 17:36:18 +01:00
Charles de Dreuille 68d1f91c91 Avoid hidden duplicate Header links
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 16:07:50 +01:00
Charles de Dreuille aa56d03cd2 Unify Header landmark structure
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 15:43:41 +01:00
Charles de Dreuille fc6f0d98e0 Remove display contents from sticky Header
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 15:29:36 +01:00
Charles de Dreuille 6b05c0a4de Address sticky Header review feedback
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 15:20:12 +01:00
Charles de Dreuille 6c4606a71c Polish sticky Header implementation
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 15:05:45 +01:00
Charles de Dreuille dceca05fb4 Fix non-sticky Header title duplication
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 14:16:09 +01:00
Charles de Dreuille eb1fabae6b Refine sticky Header title transition
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 09:26:12 +01:00
Charles de Dreuille 5351d8ac63 Add sticky Header support
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 09:04:51 +01:00
Charles de Dreuille 030fb311aa Merge pull request #33997 from backstage/charlesdedreuille/act-355-header-improvements
feat(ui): add description, tags, and metadata props to Header
2026-04-24 13:59:56 +01:00
Charles de Dreuille 10728b562e refactor(ui): rename HeaderMetadataStatusItem to HeaderMetadataStatusProps
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-24 13:47:06 +01:00
Charles de Dreuille 9e71172bfd perf(ui): memoize inline markdown rendering in Header description
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-24 12:43:03 +01:00
Johan Persson 2da0b663bc Replace useHref with useResolvedPath in useDefinition
useResolvedPath returns the resolved path without the router basename,
eliminating the need for manual basename detection and stripping.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-24 10:27:33 +02:00
Marat Dyatko 6b171fa5f1 Merge pull request #34041 from dyatko/fix/self-package-imports
Fix circular self-imports and add no-self-package-imports lint rule
2026-04-23 20:28:26 +02:00
Patrik Oldsberg f635139ebc Limit @remixicon/react to versions below 4.9.0
The license changed in 4.9.0, so we need to cap the allowed version
range across all packages that depend on it.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-23 16:42:38 +02:00
Marat Dyatko f1e26b8ed7 Address review feedback on no-self-package-imports rule
- `visitImports` now also reads `exportKind` so `export type { … } from`
  statements are classified as type-only, fixing a false positive in the
  self-import rule (and correctly skipping them in `no-undeclared-imports`
  too).
- The reachability-graph regex in `no-self-package-imports` skips
  `import type` / `export type` edges so files reachable only via
  type-only re-exports aren't pulled into a runtime bundle and no longer
  get false-positive same-entry errors.
- `SOURCE_EXTENSIONS` now includes `.mts` and `.cts` so entries and
  barrels using those extensions are followed correctly.
- The ESLint plugin changeset wording matches the `error` severity of
  the recommended config.
- Adds regression fixtures and RuleTester cases for `export type …` at
  both entries and for a file only reachable via a type-only edge.

Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
2026-04-23 16:28:20 +02:00