-
Notifications
You must be signed in to change notification settings - Fork 2
Deploy to production 🚀 #646
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add diff sidebar Shows changes to OpenAPI spec between two branches using the oasdiff tool. --------- Co-authored-by: Ulrik Andersen <[email protected]>
* Add scroll-to-change navigation from diff sidebar
Clicking on a change in the diff sidebar now scrolls to that operation
in the documentation viewer. Supports all three visualizers:
- SwaggerUI: DOM-based scrolling with operation expansion
- Stoplight: Hash-based navigation
- Redocly: Hash set on iframe
Also removes unused DiffDialog component.
* refactor: remove unused hasChanges property from Selector items
* fix: prevent SwaggerUI panel from closing when clicking sidebar item
Check is-open class on the block element itself rather than a child
.opblock element, since SwaggerUI applies the class directly to the
operations-{tag}-{operationId} element.
* refactor: simplify scrollToSwaggerOperation with Array.find
Show a visual indicator (orange dot with tooltip) on specs that have been modified in the current PR. Only specs whose filenames appear in the PR's changed files list will display the indicator. - Fetch changed files from PR via GraphQL - Add changedFiles to GitHubRepositoryRef type - Only set diffURL on specs in changedFiles - Display subtle orange dot with "Has changes" tooltip
Move level labels above path for better visual hierarchy and increase color saturation for better visibility.
The Selector component was updated to display an orange dot for specs with changes, but TrailingToolbarItem and MobileToolbar weren't passing the hasChanges property when mapping specifications.
…ocly (#637) oasdiff provides method+path but not operationId. This change allows scroll-to-change to work by deriving the operation ID from method and path for SwaggerUI, and by searching for matching links in the Redocly iframe.
Bumps [next](https://github.com/vercel/next.js) from 16.0.7 to 16.0.10. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](vercel/next.js@v16.0.7...v16.0.10) --- updated-dependencies: - dependency-name: next dependency-version: 16.0.10 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Previously only listened to visibilitychange which fires on tab switch but not when alt-tabbing back from another application. Now also listens to window focus event.
Show a subtle spinner in the sidebar header when projects and versions are being refreshed, with a tooltip explaining the action.
The encrypted URLs for remote specs contain random IVs, causing different ciphertext on each refresh. This triggered unnecessary state updates and re-renders, resetting the documentation viewer's scroll position. Add urlHash field computed from underlying remote config, and compare projects by fingerprint (urlHash for remote specs, URL for others).
Bumps the react group with 2 updates: [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom). Updates `react` from 19.2.0 to 19.2.3 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.3/packages/react) Updates `react-dom` from 19.2.0 to 19.2.3 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.3/packages/react-dom) --- updated-dependencies: - dependency-name: react dependency-version: 19.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react - dependency-name: react-dom dependency-version: 19.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react ... Signed-off-by: dependabot[bot] <[email protected]>
Bumps the everything-else group with 17 updates: | Package | From | To | | --- | --- | --- | | [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) | `7.3.5` | `7.3.6` | | [@mui/material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material) | `7.3.5` | `7.3.6` | | [@octokit/webhooks](https://github.com/octokit/webhooks.js) | `14.1.3` | `14.2.0` | | [next](https://github.com/vercel/next.js) | `16.0.10` | `16.1.1` | | [npm](https://github.com/npm/cli) | `11.6.4` | `11.7.0` | | [swr](https://github.com/vercel/swr) | `2.3.7` | `2.3.8` | | [zod](https://github.com/colinhacks/zod) | `4.1.13` | `4.3.4` | | [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.1.17` | `4.1.18` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.10.1` | `25.0.3` | | [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg) | `8.15.6` | `8.16.0` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.48.0` | `8.51.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.48.0` | `8.51.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.48.0` | `8.51.0` | | [eslint](https://github.com/eslint/eslint) | `9.39.1` | `9.39.2` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `16.0.6` | `16.1.1` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.1.17` | `4.1.18` | | [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.4.5` | `29.4.6` | Updates `@mui/icons-material` from 7.3.5 to 7.3.6 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v7.3.6/packages/mui-icons-material) Updates `@mui/material` from 7.3.5 to 7.3.6 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v7.3.6/packages/mui-material) Updates `@octokit/webhooks` from 14.1.3 to 14.2.0 - [Release notes](https://github.com/octokit/webhooks.js/releases) - [Commits](octokit/webhooks.js@v14.1.3...v14.2.0) Updates `next` from 16.0.10 to 16.1.1 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](vercel/next.js@v16.0.10...v16.1.1) Updates `npm` from 11.6.4 to 11.7.0 - [Release notes](https://github.com/npm/cli/releases) - [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md) - [Commits](npm/cli@v11.6.4...v11.7.0) Updates `swr` from 2.3.7 to 2.3.8 - [Release notes](https://github.com/vercel/swr/releases) - [Commits](vercel/swr@v2.3.7...v2.3.8) Updates `zod` from 4.1.13 to 4.3.4 - [Release notes](https://github.com/colinhacks/zod/releases) - [Commits](colinhacks/zod@v4.1.13...v4.3.4) Updates `@tailwindcss/postcss` from 4.1.17 to 4.1.18 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/@tailwindcss-postcss) Updates `@types/node` from 24.10.1 to 25.0.3 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@types/pg` from 8.15.6 to 8.16.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg) Updates `@typescript-eslint/eslint-plugin` from 8.48.0 to 8.51.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.48.0 to 8.51.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/parser) Updates `typescript-eslint` from 8.48.0 to 8.51.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/typescript-eslint) Updates `eslint` from 9.39.1 to 9.39.2 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v9.39.1...v9.39.2) Updates `eslint-config-next` from 16.0.6 to 16.1.1 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v16.1.1/packages/eslint-config-next) Updates `tailwindcss` from 4.1.17 to 4.1.18 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/tailwindcss) Updates `ts-jest` from 29.4.5 to 29.4.6 - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](kulshekhar/ts-jest@v29.4.5...v29.4.6) --- updated-dependencies: - dependency-name: "@mui/icons-material" dependency-version: 7.3.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: "@mui/material" dependency-version: 7.3.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: "@octokit/webhooks" dependency-version: 14.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: next dependency-version: 16.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: npm dependency-version: 11.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: swr dependency-version: 2.3.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: zod dependency-version: 4.3.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: "@tailwindcss/postcss" dependency-version: 4.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: "@types/node" dependency-version: 25.0.3 dependency-type: direct:development update-type: version-update:semver-major dependency-group: everything-else - dependency-name: "@types/pg" dependency-version: 8.16.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.51.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: "@typescript-eslint/parser" dependency-version: 8.51.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: typescript-eslint dependency-version: 8.51.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: eslint dependency-version: 9.39.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: eslint-config-next dependency-version: 16.1.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: everything-else - dependency-name: tailwindcss dependency-version: 4.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: ts-jest dependency-version: 29.4.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else ... Signed-off-by: dependabot[bot] <[email protected]>
…45c185b5 Bump the react group with 2 updates
…ng-else-9c4dcef4e3 Bump the everything-else group with 17 updates
…t-refresh Hotfix/preserve scroll on project refresh
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces three main features to enhance the documentation experience: a diff sidebar for viewing OpenAPI specification changes, a "has changes" indicator in the specification dropdown, and a loading indicator for project refresh operations.
Key Changes
- New diff sidebar with integration of the
oasdiffCLI tool to compute and display specification changes - Enhanced GitHub API integration to fetch PR metadata and changed files for change detection
- Project refresh improvements with fingerprinting to avoid unnecessary re-renders and window focus event handling
Reviewed changes
Copilot reviewed 46 out of 47 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
src/features/sidebar/view/internal/tertiary/RightContainer.tsx |
New right-side drawer component for the diff sidebar with responsive mobile/desktop variants |
src/features/sidebar/view/internal/sidebar/Header.tsx |
Loading indicator with animated spinner and checkmark for project refresh feedback |
src/features/sidebar/view/internal/diffbar/* |
Complete diff sidebar implementation including list components, diff data fetching, and level-based styling |
src/features/sidebar/view/SecondarySplitHeader.tsx |
Toggle button for diff sidebar with keyboard shortcut (Cmd+K) and availability detection |
src/features/diff/data/OasDiffCalculator.ts |
Core diff calculation logic using oasdiff CLI with URL validation for security |
src/features/projects/data/GitHubRepositoryDataSource.ts |
PR data fetching via GraphQL to identify changed files across repositories |
src/features/projects/data/GitHubProjectDataSource.ts |
URL hash generation for remote specs and diff URL construction for changed files |
src/features/projects/view/ProjectsContextProvider.tsx |
Fingerprinting logic to prevent unnecessary state updates and window focus listener |
src/features/projects/domain/* |
Extended domain models with diff-related fields (diffURL, diffBaseBranch, etc.) |
src/common/github/* |
New compareCommitsWithBasehead method for finding merge base commits |
src/app/api/diff/[owner]/[repository]/[...path]/route.ts |
API endpoint for calculating diffs between specification versions |
Dockerfile |
Integration of oasdiff CLI tool installation |
package.json |
Dependency updates (Next.js 16.1.1, React 19.2.3, various MUI and tooling updates) |
__test__/diff/OasDiffCalculator.test.ts |
Comprehensive tests for URL validation and diff calculation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…w-specification Fixes loading screen shown below documentation
Rename project configuration filename in .env.example
Description
Three new features:
Motivation and Context
Screenshots (if appropriate):
Types of changes