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>
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>
@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
Net-new package does not need alpha exports per awanlin's review.
Revert alpha.ts to export {}, remove default alias from module/index.ts,
and restore empty report-alpha.api.md.
Signed-off-by: pillaris <pillaris@adobe.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: Add status check functions for scaffolder steps
- Introduced `always()` and `failure()` functions to control step execution after failures.
- Updated documentation to explain usage of new status check functions.
- Enhanced NunjucksWorkflowRunner to process these functions in step conditions.
- Added tests to verify behavior of steps using `always()` and `failure()`.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
* feat: Enhance status check functions in scaffolder steps
- Updated documentation to clarify usage of status check functions with template expressions.
- Modified tests to reflect changes in syntax for status checks.
- Refactored NunjucksWorkflowRunner to ensure proper handling of status check functions in step conditions.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
* docs: Clarify usage of status check functions in writing templates
- Removed redundant explanation about truthy conditions after step failure.
- Streamlined the description for better clarity on status check functions.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
---------
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
Re-export catalogModuleMicrosoftGraphIncrementalEntityProvider as @alpha
default from src/alpha.ts, matching the pattern of catalog-backend-module-msgraph.
Add default export alias in module/index.ts and regenerate report-alpha.api.md.
Signed-off-by: pillaris <pillaris@adobe.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The manually-written empty report-alpha.api.md didn't match what API
Extractor generates for an empty alpha entry point. Use the correct
generated output to pass the CI api-reports check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Update copyright year from 2024 to 2026 across all new source files
- Clear alpha entry point (no alpha exports needed for a net-new package)
and regenerate report-alpha.api.md accordingly
- Delete CHANGELOG.md (auto-generated by the release process)
- Change changeset bump from patch to minor so the first release is 0.1.0,
and remove the redundant "New package:" title line
- Reset package version to 0.0.0 (release process sets the real version)
- Add incremental ingestion section to docs/integrations/azure/org.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
A throwing custom groupTransformer on a child group member would fail
the entire groups-phase burst. Apply the same try/catch + debug/warn
logging pattern already used for user member transformation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Guard getUserPhotoGated with user.id presence to prevent requesting
users/undefined/photo when Graph omits the id field
- Log a warning when groupIncludeSubGroups is configured, matching the
existing warning for unsupported userGroupMember* options
- Skip spec.children population when groupFilter/groupSearch is active,
since child groups may not pass the filter and would create dangling
references in the catalog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
Update all references to "up to 999 items" to accurately reflect that
users are fetched in pages of 999 while groups use a smaller page of
100. Also document groupIncludeSubGroups as unsupported in the JSDoc
@remarks, README, and comparison table.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
These modules are not needed by all Backstage users, so registering them
unconditionally in the example backend adds unnecessary routes, services,
and runtime dependencies. The backend.add(...) lines are documented in
the plugin README instead.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
Without $select, Microsoft Graph returns only id and @odata.type for
group members, which causes defaultUserTransformer/defaultGroupTransformer
to return undefined and silently drop membership refs. Requesting the
minimum fields needed by both transformers ensures member objects always
have enough data to produce stable entity refs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
@backstage/plugin-catalog-backend-module-msgraph is only used
transitively via msgraph-incremental; no direct import exists in
packages/backend/src/index.ts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Wrap userTransformer call for group members in try/catch so a sparse
object that causes the transformer to throw logs a warning and skips
that member rather than failing the entire groups page
- Split PAGE_SIZE into USER_PAGE_SIZE (999) and GROUP_PAGE_SIZE (100)
so each burst stays within its time budget despite per-group member
fetching in the groups phase
- Always send $count=true in advanced mode even when no query object is
provided (use empty object spread instead of short-circuit on query)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- getUserPhotoGated now throws for non-404 errors (401/403/5xx) so
callers can distinguish a missing photo from a real API failure
- Log a debug message when photo loading fails instead of swallowing
the error silently
- Merge transformer-pre-populated spec.members/spec.children with
fetched Graph membership rather than overwriting them
- deriveRestLength now also excludes manual-trigger schedule objects
(not just cron expressions) from being cast as HumanDuration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- 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>
- 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>