diff --git a/packages/app-next/app-config.yaml b/packages/app-next/app-config.yaml
index 49a2c9681c..3d29f19c13 100644
--- a/packages/app-next/app-config.yaml
+++ b/packages/app-next/app-config.yaml
@@ -1,107 +1,146 @@
app:
packages: 'all' # ✨
- extensions:
- - graphiql.page:
- config:
- path: /
- # - core.signInPage:
- # props:
- # provider:
- # id: google
- # title: Google
- # message: Sign In using Google
- # apiRef: googleAuthApiRef # ???
- # - core.nav:
- # config:
- # logo: assets/logo.png
- # layout:
- # - label: Search
- # icon: search
- # to: /search
- # items:
- # - point: search
- # - type: divider
- # - label: Menu
- # icon: menu
- # items:
- # - label: Home
- # icon: home
- # to: /catalog
- # - label: Create...
- # icon: create
- # to: /create
- # - type: divider
- # - type: scroll-wrapper
- # items:
- # - label: Tech Radar
- # icon: map
- # to: /tech-radar
- # - label: GraphiQL
- # icon: graphiql
- # to: /graphiql
- # - type: divider
- # - point: shortcuts
- # - type: space
- # - type: divider
- # - label: Settings
- # icon: avatar
- # to: /settings
- # items:
- # - point: settings
- # - core.nav/search: '@backstage/plugin-search#SidebarSearchModal'
- # - core.nav/shortcuts:
- # use: '@backstage/plugin-shortcuts#Shortcuts'
- # config:
- # allowExternalLinks: true
- # - core.nav/settings: '@backstage/plugin-user-settings#SidebarSettings'
+ # scmAuthExtension: >-
+ # createScmAuthExtension({
+ # id: 'apis.scmAuth.addons.ghe',
+ # factory({ bind }) {
+ # bind.scmAuthAddon({
+ # baseUrl: 'https://github.spotify.net',
+ # api: githubAuthApiRef,
+ # })
+ # }
+ # })
- # - core.pages.index:
- # at:
- # point: core.routes
- # config:
- # path: /
- # use: 'react-router-dom#Navigate'
- # config:
- # to: /catalog
+ # externalRouteRefs:
+ # bind(catalogPlugin.externalRoutes, {
+ # createComponent: scaffolderPlugin.routes.root,
+ # viewTechDoc: techdocsPlugin.routes.docRoot,
+ # createFromTemplate: scaffolderPlugin.routes.selectedTemplate,
+ # });
+ # bind(apiDocsPlugin.externalRoutes, {
+ # registerApi: catalogImportPlugin.routes.importPage,
+ # });
+ # bind(scaffolderPlugin.externalRoutes, {
+ # registerComponent: catalogImportPlugin.routes.importPage,
+ # viewTechDoc: techdocsPlugin.routes.docRoot,
+ # });
+ # bind(orgPlugin.externalRoutes, {
+ # catalogIndex: catalogPlugin.routes.catalogIndex,
+ # });
- # - scaffolder.page:
- # config:
- # groups:
- # - title: Recommended
- # filter:
- # entity.metadata.tags: recommended
- # - scaffolder.page/fields: '@backstage/plugin-scaffolder#LowerCaseValuePickerFieldExtension'
- # - scaffolder.page/layout: '@backstage/plugin-scaffolder#TwoColumnLayout'
+ # extensions:
+ # - plugin.catalog:
+ # config:
+ # externalRoutes:
+ # createComponent: plugin.scaffolder.page
+ # viewTechDoc: plugin.techdocs.docRootPage
+ # createFromTemplate: plugin.scaffolder.templatePage
+ # - graphiql.page:
+ # config:
+ # path: /
+ # - apis.auth.providers.github:
+ # config:
+ # provider: ghe
- # - search.page/content: 'app#customSearchPage' # custom search page from somewhere
+ # - core.signInPage:
+ # props:
+ # provider:
+ # id: google
+ # title: Google
+ # message: Sign In using Google
+ # apiRef: googleAuthApiRef # ???
- # - user-settings.page.routes.advanced:
- # at:
- # point: user-settings.page/routes
- # config:
- # title: Advanced
- # path: /advanced
- # use: '@backstage/plugin-user-settings#AdvancedSettings'
+ # - core.nav:
+ # config:
+ # logo: assets/logo.png
+ # layout:
+ # - label: Search
+ # icon: search
+ # to: /search
+ # items:
+ # - point: search
+ # - type: divider
+ # - label: Menu
+ # icon: menu
+ # items:
+ # - label: Home
+ # icon: home
+ # to: /catalog
+ # - label: Create...
+ # icon: create
+ # to: /create
+ # - type: divider
+ # - type: scroll-wrapper
+ # items:
+ # - label: Tech Radar
+ # icon: map
+ # to: /tech-radar
+ # - label: GraphiQL
+ # icon: graphiql
+ # to: /graphiql
+ # - type: divider
+ # - point: shortcuts
+ # - type: space
+ # - type: divider
+ # - label: Settings
+ # icon: avatar
+ # to: /settings
+ # items:
+ # - point: settings
+ # - core.nav/search: '@backstage/plugin-search#SidebarSearchModal'
+ # - core.nav/shortcuts:
+ # use: '@backstage/plugin-shortcuts#Shortcuts'
+ # config:
+ # allowExternalLinks: true
+ # - core.nav/settings: '@backstage/plugin-user-settings#SidebarSettings'
- # - entity.card.orphanWarning
- # - entity.card.processingErrors
- # - entity.card.about
- # - entity.card.catalogGraph
- # - entity.card.pagerDuty
- # - entity.card.links
- # - entity.card.labels
- # - entity.card.githubInsightsLanguages
- # - entity.card.githubInsightsReleases
- # - entity.card.githubInsightsReadme:
- # config:
- # maxHeight: 350 # Throwing this config in to have an example, but in practice rely on default
- # - entity.card.subcomponentsCard
- # - entity.card.userProfile
- # - entity.card.ownership
- # - entity.card.likeDislikeRatings
- # - entity.content.dependsOnComponents
- # - entity.content.codeInsights
- # - entity.content.todo
- # - entity.content.feedbackResponse
+ # - core.pages.index:
+ # at:
+ # point: core.routes
+ # config:
+ # path: /
+ # use: 'react-router-dom#Navigate'
+ # config:
+ # to: /catalog
+
+ # - scaffolder.page:
+ # config:
+ # groups:
+ # - title: Recommended
+ # filter:
+ # entity.metadata.tags: recommended
+ # - scaffolder.page/fields: '@backstage/plugin-scaffolder#LowerCaseValuePickerFieldExtension'
+ # - scaffolder.page/layout: '@backstage/plugin-scaffolder#TwoColumnLayout'
+
+ # - search.page/content: 'app#customSearchPage' # custom search page from somewhere
+
+ # - user-settings.page.routes.advanced:
+ # at:
+ # point: user-settings.page/routes
+ # config:
+ # title: Advanced
+ # path: /advanced
+ # use: '@backstage/plugin-user-settings#AdvancedSettings'
+
+ # - entity.card.orphanWarning
+ # - entity.card.processingErrors
+ # - entity.card.about
+ # - entity.card.catalogGraph
+ # - entity.card.pagerDuty
+ # - entity.card.links
+ # - entity.card.labels
+ # - entity.card.githubInsightsLanguages
+ # - entity.card.githubInsightsReleases
+ # - entity.card.githubInsightsReadme:
+ # config:
+ # maxHeight: 350 # Throwing this config in to have an example, but in practice rely on default
+ # - entity.card.subcomponentsCard
+ # - entity.card.userProfile
+ # - entity.card.ownership
+ # - entity.card.likeDislikeRatings
+ # - entity.content.dependsOnComponents
+ # - entity.content.codeInsights
+ # - entity.content.todo
+ # - entity.content.feedbackResponse
diff --git a/packages/app-next/src/examples/graphiqlPlugin.tsx b/packages/app-next/src/examples/graphiqlPlugin.tsx
index 4e3768dafa..e80e137ae5 100644
--- a/packages/app-next/src/examples/graphiqlPlugin.tsx
+++ b/packages/app-next/src/examples/graphiqlPlugin.tsx
@@ -23,6 +23,7 @@ import React from 'react';
export const GraphiqlPage = createPageExtension({
id: 'graphiql.page',
defaultPath: '/graphiql',
+ disabled: true,
component: () =>
import('@backstage/plugin-graphiql').then(({ Router }) =>