Skip to content

S3 Features Overhaul 🚀#1057

Open
garronej wants to merge 380 commits into
mainfrom
explorer_deep_rework
Open

S3 Features Overhaul 🚀#1057
garronej wants to merge 380 commits into
mainfrom
explorer_deep_rework

Conversation

@garronej
Copy link
Copy Markdown
Contributor

No description provided.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 15, 2026

Important

Review skipped

Too many files!

This PR contains 245 files, which is 95 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b2ff1d22-d077-42d3-82a4-d6e2770393cb

📥 Commits

Reviewing files that changed from the base of the PR and between cd4e806 and a90a54d.

⛔ Files ignored due to path filters (3)
  • web/src/ui/assets/svg/S3UriBucket.svg is excluded by !**/*.svg
  • web/src/ui/assets/svg/S3UriHome.svg is excluded by !**/*.svg
  • web/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (245)
  • .gitignore
  • .vscode/mcp.json
  • web/.env
  • web/package.json
  • web/spec.md
  • web/src/core/adapters/onyxiaApi/ApiTypes.ts
  • web/src/core/adapters/onyxiaApi/onyxiaApi.ts
  • web/src/core/adapters/s3Client/s3Client.ts
  • web/src/core/adapters/s3Client/utils/bucketNameAndObjectNameFromS3Path.ts
  • web/src/core/adapters/s3Client/utils/bucketPolicy.test.ts
  • web/src/core/adapters/s3Client/utils/bucketPolicy.ts
  • web/src/core/adapters/s3Client/utils/policySchema.ts
  • web/src/core/adapters/sqlOlap/sqlOlap.ts
  • web/src/core/bootstrap.ts
  • web/src/core/ports/OnyxiaApi/DeploymentRegion.ts
  • web/src/core/ports/OnyxiaApi/XOnyxia.ts
  • web/src/core/ports/S3Client.ts
  • web/src/core/tools/S3Uri.test.ts
  • web/src/core/tools/S3Uri.ts
  • web/src/core/tools/bucketPolicies.test.ts
  • web/src/core/tools/bucketPolicies.ts
  • web/src/core/usecases/fileExplorer/selectors.ts
  • web/src/core/usecases/fileExplorer/state.ts
  • web/src/core/usecases/fileExplorer/thunks.ts
  • web/src/core/usecases/index.ts
  • web/src/core/usecases/k8sCodeSnippets.ts
  • web/src/core/usecases/launcher/selectors.ts
  • web/src/core/usecases/launcher/state.ts
  • web/src/core/usecases/launcher/thunks.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/ProjectConfigs.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/clearProjectConfigs.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/migration/ProjectConfigs_v1.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/migration/migrateProjectConfigsV1ToV2.test.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/migration/migrateProjectConfigsV1ToV2.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/projectConfigsMigration/index.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/projectConfigsMigration/projectConfigsMigration.ts
  • web/src/core/usecases/projectManagement/decoupledLogic/projectConfigsMigration/v0ToV1.ts
  • web/src/core/usecases/projectManagement/selectors.ts
  • web/src/core/usecases/projectManagement/state.ts
  • web/src/core/usecases/projectManagement/thunks.ts
  • web/src/core/usecases/restorableConfigManagement/decoupledLogic/getAreSameRestorableConfig.ts
  • web/src/core/usecases/restorableConfigManagement/selectors.ts
  • web/src/core/usecases/restorableConfigManagement/thunks.ts
  • web/src/core/usecases/s3CodeSnippets/selectors.ts
  • web/src/core/usecases/s3CodeSnippets/state.ts
  • web/src/core/usecases/s3CodeSnippets/thunks.ts
  • web/src/core/usecases/s3ConfigConnectionTest/selectors.ts
  • web/src/core/usecases/s3ConfigConnectionTest/state.ts
  • web/src/core/usecases/s3ConfigConnectionTest/thunks.ts
  • web/src/core/usecases/s3ConfigCreation/selectors.ts
  • web/src/core/usecases/s3ConfigCreation/state.ts
  • web/src/core/usecases/s3ConfigCreation/thunks.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/getS3Configs.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/getWorkingDirectoryBucket.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/getWorkingDirectoryPath.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/projectS3ConfigId.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/resolveS3AdminBookmarks.ts
  • web/src/core/usecases/s3ConfigManagement/decoupledLogic/updateDefaultS3ConfigsAfterPotentialDeletion.ts
  • web/src/core/usecases/s3ConfigManagement/selectors.ts
  • web/src/core/usecases/s3ConfigManagement/state.ts
  • web/src/core/usecases/s3ConfigManagement/thunks.ts
  • web/src/core/usecases/s3ExplorerUiController/decoupledLogic/computeUploadStatusAtPrefix.ts
  • web/src/core/usecases/s3ExplorerUiController/decoupledLogic/uploadProgress.ts
  • web/src/core/usecases/s3ExplorerUiController/evt.ts
  • web/src/core/usecases/s3ExplorerUiController/index.ts
  • web/src/core/usecases/s3ExplorerUiController/selectors.ts
  • web/src/core/usecases/s3ExplorerUiController/state.ts
  • web/src/core/usecases/s3ExplorerUiController/thunks.ts
  • web/src/core/usecases/s3ProfilesCreationUiController/index.ts
  • web/src/core/usecases/s3ProfilesCreationUiController/selectors.ts
  • web/src/core/usecases/s3ProfilesCreationUiController/state.ts
  • web/src/core/usecases/s3ProfilesCreationUiController/thunks.ts
  • web/src/core/usecases/s3ProfilesDetailsUiController/decoupledLogic/codeSnippets.ts
  • web/src/core/usecases/s3ProfilesDetailsUiController/index.ts
  • web/src/core/usecases/s3ProfilesDetailsUiController/selectors.ts
  • web/src/core/usecases/s3ProfilesDetailsUiController/state.ts
  • web/src/core/usecases/s3ProfilesDetailsUiController/thunks.ts
  • web/src/core/usecases/s3ProfilesManagement/decoupledLogic/resolveTemplatedBookmark.ts
  • web/src/core/usecases/s3ProfilesManagement/decoupledLogic/resolveTemplatedStsRole.ts
  • web/src/core/usecases/s3ProfilesManagement/decoupledLogic/s3Profiles.ts
  • web/src/core/usecases/s3ProfilesManagement/decoupledLogic/userConfigsS3Bookmarks.ts
  • web/src/core/usecases/s3ProfilesManagement/index.ts
  • web/src/core/usecases/s3ProfilesManagement/selectors.ts
  • web/src/core/usecases/s3ProfilesManagement/state.ts
  • web/src/core/usecases/s3ProfilesManagement/thunks.ts
  • web/src/core/usecases/s3ShareObjectUiController/evt.ts
  • web/src/core/usecases/s3ShareObjectUiController/index.ts
  • web/src/core/usecases/s3ShareObjectUiController/selectors.ts
  • web/src/core/usecases/s3ShareObjectUiController/state.ts
  • web/src/core/usecases/s3ShareObjectUiController/thunks.ts
  • web/src/core/usecases/userConfigs.ts
  • web/src/core/usecases/userProfileForm/thunks.ts
  • web/src/ui/App/App.tsx
  • web/src/ui/App/LeftBar.tsx
  • web/src/ui/i18n/resources/de.tsx
  • web/src/ui/i18n/resources/en.tsx
  • web/src/ui/i18n/resources/es.tsx
  • web/src/ui/i18n/resources/fi.tsx
  • web/src/ui/i18n/resources/fr.tsx
  • web/src/ui/i18n/resources/it.tsx
  • web/src/ui/i18n/resources/nl.tsx
  • web/src/ui/i18n/resources/no.tsx
  • web/src/ui/i18n/resources/zh-CN.tsx
  • web/src/ui/i18n/types.ts
  • web/src/ui/pages/account/AccountStorageTab.tsx
  • web/src/ui/pages/account/Page.tsx
  • web/src/ui/pages/account/accountTabIds.ts
  • web/src/ui/pages/dataExplorer/DataGrid.tsx
  • web/src/ui/pages/dataExplorer/Page.tsx
  • web/src/ui/pages/fileExplorer/Explorer/Explorer.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerButtonBar.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerButtonBar.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerDownloadSnackbar.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerIcon/ExplorerIcon.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerIcon/ExplorerIcon.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerIcon/icons.ts
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerIcon/index.ts
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerItems/ExplorerItem.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerItems/ExplorerItem.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerItems/ExplorerItems.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerItems/ExplorerItems.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerItems/index.ts
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadModal.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadModal.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadModalDropArea.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadModalDropArea.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadProgress.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/ExplorerUploadProgress.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ExplorerUploadModal/index.ts
  • web/src/ui/pages/fileExplorer/Explorer/ListExplorer/ListExplorerItems.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/ListExplorer/ListExplorerItems.tsx
  • web/src/ui/pages/fileExplorer/Explorer/PolicySwitch.stories.tsx
  • web/src/ui/pages/fileExplorer/Explorer/PolicySwitch.tsx
  • web/src/ui/pages/fileExplorer/Explorer/index.ts
  • web/src/ui/pages/fileExplorer/Page.tsx
  • web/src/ui/pages/fileExplorer/ShareFile/SelectTime.stories.tsx
  • web/src/ui/pages/fileExplorer/ShareFile/SelectTime.tsx
  • web/src/ui/pages/fileExplorer/ShareFile/ShareDialog.stories.tsx
  • web/src/ui/pages/fileExplorer/ShareFile/ShareDialog.tsx
  • web/src/ui/pages/fileExplorer/route.ts
  • web/src/ui/pages/fileExplorer/shared/DirectoryOrFileDetailed.stories.tsx
  • web/src/ui/pages/fileExplorer/shared/DirectoryOrFileDetailed.tsx
  • web/src/ui/pages/fileExplorer/shared/tools.ts
  • web/src/ui/pages/fileExplorer/shared/types.ts
  • web/src/ui/pages/fileExplorerEntry/FileExplorerDisabledDialog.stories.tsx
  • web/src/ui/pages/fileExplorerEntry/FileExplorerDisabledDialog.tsx
  • web/src/ui/pages/fileExplorerEntry/Page.tsx
  • web/src/ui/pages/fileExplorerEntry/S3Entries/S3Entries.tsx
  • web/src/ui/pages/fileExplorerEntry/S3Entries/S3EntryCard.tsx
  • web/src/ui/pages/fileExplorerEntry/index.ts
  • web/src/ui/pages/fileExplorerEntry/route.ts
  • web/src/ui/pages/home/Page.tsx
  • web/src/ui/pages/index.ts
  • web/src/ui/pages/launcher/LauncherMainCard.tsx
  • web/src/ui/pages/launcher/Page.tsx
  • web/src/ui/pages/mySecrets/SecretsExplorer/SecretsExplorer.tsx
  • web/src/ui/pages/myService/Page.tsx
  • web/src/ui/pages/myServices/Page.tsx
  • web/src/ui/pages/projectSettings/Page.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/ProjectSettingsS3ConfigTab.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/S3ConfigCard.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/S3ConfigDialogs/AddCustomS3ConfigDialog.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/S3ConfigDialogs/ConfirmCustomS3ConfigDeletionDialog.stories.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/S3ConfigDialogs/S3ConfigDialogs.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/S3ConfigDialogs/index.ts
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/TestS3ConnectionButton.stories.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/TestS3ConnectionButton.tsx
  • web/src/ui/pages/projectSettings/ProjectSettingsS3ConfigTab/index.ts
  • web/src/ui/pages/projectSettings/ProjectSettingsSecurityInfosTab.tsx
  • web/src/ui/pages/projectSettings/index.ts
  • web/src/ui/pages/projectSettings/route.ts
  • web/src/ui/pages/projectSettings/tabIds.ts
  • web/src/ui/pages/s3Explorer/Page.tsx
  • web/src/ui/pages/s3Explorer/Uploads.tsx
  • web/src/ui/pages/s3Explorer/dialogs/ConfirmBucketCreationAttemptDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/ConfirmCustomS3ConfigDeletionDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/ConfirmOverwriteDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/CreateOrRenameBookmarkDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/DirectoryCreationDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/DisplayErrorDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/MakePrefixPublicDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/S3ExplorerDialogs.tsx
  • web/src/ui/pages/s3Explorer/dialogs/S3ProfileDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/S3ShareObjectDialog.tsx
  • web/src/ui/pages/s3Explorer/dialogs/index.ts
  • web/src/ui/pages/s3Explorer/index.ts
  • web/src/ui/pages/s3Explorer/route.ts
  • web/src/ui/shared/CommandBar.stories.tsx
  • web/src/ui/shared/CommandBar.tsx
  • web/src/ui/shared/Datagrid/CustomNoRowsOverlay.tsx
  • web/src/ui/shared/MaybeAcknowledgeConfigVolatilityDialog.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBar/S3BookmarksBar.spec.md
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBar/S3BookmarksBar.stories.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBar/S3BookmarksBar.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBar/index.ts
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBarItem/S3BookmarksBarItem.spec.md
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBarItem/S3BookmarksBarItem.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksBarItem/index.ts
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksEntryPointItem/S3BookmarksEntryPointItem.spec.md
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksEntryPointItem/S3BookmarksEntryPointItem.stories.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksEntryPointItem/S3BookmarksEntryPointItem.tsx
  • web/src/ui/shared/codex/S3Bookmarks/S3BookmarksEntryPointItem/index.ts
  • web/src/ui/shared/codex/S3ContextActionButton/S3ContextActionButton.spec.md
  • web/src/ui/shared/codex/S3ContextActionButton/S3ContextActionButton.stories.tsx
  • web/src/ui/shared/codex/S3ContextActionButton/S3ContextActionButton.tsx
  • web/src/ui/shared/codex/S3ContextActionButton/index.ts
  • web/src/ui/shared/codex/S3ExplorerMainView/S3ExplorerMainView.spec.md
  • web/src/ui/shared/codex/S3ExplorerMainView/S3ExplorerMainView.stories.tsx
  • web/src/ui/shared/codex/S3ExplorerMainView/S3ExplorerMainView.tsx
  • web/src/ui/shared/codex/S3ExplorerMainView/index.ts
  • web/src/ui/shared/codex/S3ExplorerMainView/preSelectedS3Uri.ts
  • web/src/ui/shared/codex/S3ProfileSelect/S3ProfilSelect.spec.md
  • web/src/ui/shared/codex/S3ProfileSelect/S3ProfileSelect.stories.tsx
  • web/src/ui/shared/codex/S3ProfileSelect/S3ProfileSelect.tsx
  • web/src/ui/shared/codex/S3ProfileSelect/index.ts
  • web/src/ui/shared/codex/S3SelectionActionBar/S3SelectionActionBar.spec.md
  • web/src/ui/shared/codex/S3SelectionActionBar/S3SelectionActionBar.stories.tsx
  • web/src/ui/shared/codex/S3SelectionActionBar/S3SelectionActionBar.tsx
  • web/src/ui/shared/codex/S3SelectionActionBar/index.ts
  • web/src/ui/shared/codex/S3ShareObjectDialog/S3ShareObjectDialog.spec.md
  • web/src/ui/shared/codex/S3ShareObjectDialog/S3ShareObjectDialog.stories.tsx
  • web/src/ui/shared/codex/S3ShareObjectDialog/S3ShareObjectDialog.tsx
  • web/src/ui/shared/codex/S3ShareObjectDialog/index.ts
  • web/src/ui/shared/codex/S3Uploads/ConfirmAbortUploadDialog.tsx
  • web/src/ui/shared/codex/S3Uploads/S3Upload.spec.md
  • web/src/ui/shared/codex/S3Uploads/S3Upload.stories.tsx
  • web/src/ui/shared/codex/S3Uploads/S3Upload.tsx
  • web/src/ui/shared/codex/S3Uploads/index.ts
  • web/src/ui/shared/codex/S3UriBar/S3UriBar.spec.md
  • web/src/ui/shared/codex/S3UriBar/S3UriBar.stories.tsx
  • web/src/ui/shared/codex/S3UriBar/S3UriBar.tsx
  • web/src/ui/shared/codex/S3UriBar/index.ts
  • web/src/ui/shared/codex/general.spec.md
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileDetails/S3ProfileDetails.spec.md
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileDetails/S3ProfileDetails.stories.tsx
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileDetails/S3ProfileDetails.tsx
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileDetails/index.ts
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileForm/S3ProfileForm.spec.md
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileForm/S3ProfileForm.stories.tsx
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileForm/S3ProfileForm.tsx
  • web/src/ui/shared/codex/s3ProfileDialog/S3ProfileForm/index.ts
  • web/src/ui/shared/textEditor/CodeTextEditor/CodeTextEditor.tsx
  • web/src/ui/shared/textEditor/CodeTextEditor/LegacyModeCodeTextEditor.tsx
  • web/src/ui/theme/theme.tsx
  • web/src/ui/tools/withLoader.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch explorer_deep_rework

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@garronej garronej force-pushed the explorer_deep_rework branch from 74b8602 to a96af2d Compare March 2, 2026 10:50
@garronej garronej changed the base branch from s3Profiles_2 to main March 4, 2026 13:10
@garronej garronej changed the title Explorer deep rework S3 Features Overhaul 🚀 Mar 4, 2026
garronej and others added 25 commits March 4, 2026 14:15
expirationTime: Date.now() + 1000 * 60 * 60 * 4,
accessKeyId: "ASIAIOSFODNN7EXAMPLE",
secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
sessionToken: "IQoJb3JpZ2luX2VjEOr//////////wEaCXVzLWVhc3QtMSJHMEUCIDbN",
@garronej garronej force-pushed the explorer_deep_rework branch from 2859b26 to 6f77cde Compare May 16, 2026 08:11
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
5 Security Hotspots
E Security Rating on New Code (required ≥ A)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants