@libredb/studio 0.9.7 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-34YQUUCM.mjs +319 -0
- package/dist/chunk-34YQUUCM.mjs.map +1 -0
- package/dist/chunk-4LVB3K53.mjs +37 -0
- package/dist/chunk-4LVB3K53.mjs.map +1 -0
- package/dist/chunk-6DRZXXNT.mjs +100 -0
- package/dist/chunk-6DRZXXNT.mjs.map +1 -0
- package/dist/chunk-CZVV3JJB.mjs +160 -0
- package/dist/chunk-CZVV3JJB.mjs.map +1 -0
- package/dist/chunk-D4WVWWWF.js +332 -0
- package/dist/chunk-D4WVWWWF.js.map +1 -0
- package/dist/chunk-DY3KXE44.mjs +3 -0
- package/dist/chunk-DY3KXE44.mjs.map +1 -0
- package/dist/chunk-DZ2UB3C6.mjs +6679 -0
- package/dist/chunk-DZ2UB3C6.mjs.map +1 -0
- package/dist/chunk-FYSE52VB.js +242 -0
- package/dist/chunk-FYSE52VB.js.map +1 -0
- package/dist/chunk-G4WYE6TI.js +4 -0
- package/dist/chunk-G4WYE6TI.js.map +1 -0
- package/dist/chunk-JOGLIOFO.js +1310 -0
- package/dist/chunk-JOGLIOFO.js.map +1 -0
- package/dist/chunk-JZO5KRZN.js +165 -0
- package/dist/chunk-JZO5KRZN.js.map +1 -0
- package/dist/chunk-KV356UXJ.js +253 -0
- package/dist/chunk-KV356UXJ.js.map +1 -0
- package/dist/chunk-PPODO6HX.mjs +237 -0
- package/dist/chunk-PPODO6HX.mjs.map +1 -0
- package/dist/chunk-PTIRB2JO.js +258 -0
- package/dist/chunk-PTIRB2JO.js.map +1 -0
- package/dist/chunk-Q6LRDBK7.js +42 -0
- package/dist/chunk-Q6LRDBK7.js.map +1 -0
- package/dist/chunk-QJP5FZRY.mjs +255 -0
- package/dist/chunk-QJP5FZRY.mjs.map +1 -0
- package/dist/chunk-R3POCJK6.mjs +248 -0
- package/dist/chunk-R3POCJK6.mjs.map +1 -0
- package/dist/chunk-RBVDMLFV.js +6747 -0
- package/dist/chunk-RBVDMLFV.js.map +1 -0
- package/dist/chunk-RCQB4FCE.js +186 -0
- package/dist/chunk-RCQB4FCE.js.map +1 -0
- package/dist/chunk-SR5DRGBX.mjs +174 -0
- package/dist/chunk-SR5DRGBX.mjs.map +1 -0
- package/dist/chunk-VLCRUZX7.js +102 -0
- package/dist/chunk-VLCRUZX7.js.map +1 -0
- package/dist/chunk-VWVRUCQO.mjs +1289 -0
- package/dist/chunk-VWVRUCQO.mjs.map +1 -0
- package/dist/components.d.mts +273 -0
- package/dist/components.d.ts +273 -0
- package/dist/components.js +59 -0
- package/dist/components.js.map +1 -0
- package/dist/components.mjs +6 -0
- package/dist/components.mjs.map +1 -0
- package/dist/custom-BNDOYC5P.js +134 -0
- package/dist/custom-BNDOYC5P.js.map +1 -0
- package/dist/custom-S2EKFMP3.mjs +132 -0
- package/dist/custom-S2EKFMP3.mjs.map +1 -0
- package/dist/gemini-4ASHNK4H.js +81 -0
- package/dist/gemini-4ASHNK4H.js.map +1 -0
- package/dist/gemini-C5RBLQEJ.mjs +79 -0
- package/dist/gemini-C5RBLQEJ.mjs.map +1 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +10 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mongodb-XMZEZA4A.mjs +748 -0
- package/dist/mongodb-XMZEZA4A.mjs.map +1 -0
- package/dist/mongodb-YQJJTLX3.js +750 -0
- package/dist/mongodb-YQJJTLX3.js.map +1 -0
- package/dist/mssql-PMOU4D36.js +916 -0
- package/dist/mssql-PMOU4D36.js.map +1 -0
- package/{src/lib/db/providers/sql/mssql.ts → dist/mssql-ZH5VP2C5.mjs} +268 -423
- package/dist/mssql-ZH5VP2C5.mjs.map +1 -0
- package/{src/lib/db/providers/sql/mysql.ts → dist/mysql-I3WJQXN2.mjs} +277 -428
- package/dist/mysql-I3WJQXN2.mjs.map +1 -0
- package/dist/mysql-Y3MSA5QY.js +833 -0
- package/dist/mysql-Y3MSA5QY.js.map +1 -0
- package/dist/ollama-26BYLVEV.mjs +115 -0
- package/dist/ollama-26BYLVEV.mjs.map +1 -0
- package/dist/ollama-HVWAGKQC.js +117 -0
- package/dist/ollama-HVWAGKQC.js.map +1 -0
- package/dist/openai-4U56KPG7.mjs +111 -0
- package/dist/openai-4U56KPG7.mjs.map +1 -0
- package/dist/openai-AK3R37BS.js +113 -0
- package/dist/openai-AK3R37BS.js.map +1 -0
- package/dist/oracle-L6VEAVXO.js +917 -0
- package/dist/oracle-L6VEAVXO.js.map +1 -0
- package/{src/lib/db/providers/sql/oracle.ts → dist/oracle-P2G7T4P4.mjs} +321 -454
- package/dist/oracle-P2G7T4P4.mjs.map +1 -0
- package/{src/lib/db/providers/sql/postgres.ts → dist/postgres-O5KOQUVP.mjs} +261 -471
- package/dist/postgres-O5KOQUVP.mjs.map +1 -0
- package/dist/postgres-RLCWNFFX.js +971 -0
- package/dist/postgres-RLCWNFFX.js.map +1 -0
- package/dist/providers.d.mts +149 -0
- package/dist/providers.d.ts +149 -0
- package/dist/providers.js +44 -0
- package/dist/providers.js.map +1 -0
- package/dist/providers.mjs +7 -0
- package/dist/providers.mjs.map +1 -0
- package/dist/redis-4WMQOVLX.mjs +435 -0
- package/dist/redis-4WMQOVLX.mjs.map +1 -0
- package/dist/redis-QVQ6YU62.js +441 -0
- package/dist/redis-QVQ6YU62.js.map +1 -0
- package/dist/sqlite-4I2P2OGQ.js +554 -0
- package/dist/sqlite-4I2P2OGQ.js.map +1 -0
- package/dist/sqlite-OA4YJX5S.mjs +531 -0
- package/dist/sqlite-OA4YJX5S.mjs.map +1 -0
- package/dist/types-BJvJfxSY.d.mts +141 -0
- package/dist/types-BJvJfxSY.d.ts +141 -0
- package/dist/types-ClAg_v5k.d.mts +343 -0
- package/dist/types-Der_X8E8.d.ts +343 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +3 -0
- package/dist/types.mjs.map +1 -0
- package/dist/workspace.d.mts +80 -0
- package/dist/workspace.d.ts +80 -0
- package/dist/workspace.js +4182 -0
- package/dist/workspace.js.map +1 -0
- package/dist/workspace.mjs +4155 -0
- package/dist/workspace.mjs.map +1 -0
- package/package.json +60 -5
- package/.claude/settings.local.json +0 -127
- package/.cursorrules +0 -426
- package/.devin/wiki.json +0 -143
- package/.dockerignore +0 -80
- package/.env.example +0 -159
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -49
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -29
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -57
- package/.github/workflows/ci.yml +0 -185
- package/.github/workflows/codeql.yml +0 -57
- package/.github/workflows/docker-build-push.yml +0 -118
- package/.github/workflows/helm-release.yml +0 -113
- package/CLAUDE.md +0 -265
- package/CODE_OF_CONDUCT.md +0 -124
- package/CONTRIBUTING.md +0 -154
- package/Dockerfile +0 -73
- package/SECURITY.md +0 -107
- package/artifacthub-repo.yml +0 -4
- package/bun.lock +0 -1714
- package/bunfig.toml +0 -3
- package/charts/libredb-studio/.helmignore +0 -11
- package/charts/libredb-studio/Chart.lock +0 -6
- package/charts/libredb-studio/Chart.yaml +0 -50
- package/charts/libredb-studio/README.md +0 -206
- package/charts/libredb-studio/templates/NOTES.txt +0 -59
- package/charts/libredb-studio/templates/_helpers.tpl +0 -135
- package/charts/libredb-studio/templates/configmap.yaml +0 -37
- package/charts/libredb-studio/templates/deployment.yaml +0 -184
- package/charts/libredb-studio/templates/hpa.yaml +0 -32
- package/charts/libredb-studio/templates/ingress.yaml +0 -41
- package/charts/libredb-studio/templates/networkpolicy.yaml +0 -50
- package/charts/libredb-studio/templates/pdb.yaml +0 -18
- package/charts/libredb-studio/templates/pvc.yaml +0 -23
- package/charts/libredb-studio/templates/secret.yaml +0 -30
- package/charts/libredb-studio/templates/seed-configmap.yaml +0 -11
- package/charts/libredb-studio/templates/service.yaml +0 -22
- package/charts/libredb-studio/templates/serviceaccount.yaml +0 -13
- package/charts/libredb-studio/values.schema.json +0 -246
- package/charts/libredb-studio/values.yaml +0 -286
- package/components.json +0 -22
- package/conductor/code_styleguides/typescript.md +0 -43
- package/conductor/product-guidelines.md +0 -43
- package/conductor/product.md +0 -3
- package/conductor/setup_state.json +0 -1
- package/conductor/tech-stack.md +0 -39
- package/conductor/tracks/enhance_postgres_monitoring_20251227/metadata.json +0 -8
- package/conductor/tracks/enhance_postgres_monitoring_20251227/plan.md +0 -44
- package/conductor/tracks/enhance_postgres_monitoring_20251227/spec.md +0 -31
- package/conductor/tracks.md +0 -8
- package/conductor/workflow.md +0 -333
- package/database-compose.yml +0 -55
- package/docker/postgres-init/01-extensions.sql +0 -10
- package/docker/postgres-init/02-sample-data.sql +0 -585
- package/docker/postgres.yml +0 -68
- package/docker-compose.yml +0 -38
- package/docs/AI_PLAN.md +0 -74
- package/docs/API_DOCS.md +0 -875
- package/docs/ARCHITECTURE.md +0 -218
- package/docs/DATABASE_PROVIDERS.md +0 -358
- package/docs/FEATURES.md +0 -116
- package/docs/HELM_CHART.md +0 -252
- package/docs/LOGIN_PAGE.md +0 -178
- package/docs/MONACO_EDITOR_PERFORMANCE.md +0 -315
- package/docs/OIDC_ARCH.md +0 -681
- package/docs/OIDC_SETUP.md +0 -322
- package/docs/POSTGRES_METRICS.md +0 -516
- package/docs/QUERY_OPTIMIZATION.md +0 -370
- package/docs/SEED_CONNECTIONS.md +0 -468
- package/docs/SQL_ALIAS_COMPLETION.md +0 -190
- package/docs/STORAGE_ARCHITECTURE.md +0 -565
- package/docs/STORAGE_QUICK_SETUP.md +0 -419
- package/docs/TECHNICAL_PLAN.md +0 -36
- package/docs/THEMING.md +0 -345
- package/docs/adding-a-new-database-provider.md +0 -642
- package/docs/backlogs/000-PLATFORM_DATA_SYNC_DATABASE.md +0 -360
- package/docs/backlogs/001-INLINE_DATA_EDITING.md +0 -118
- package/docs/backlogs/002-DATA_IMPORT.md +0 -215
- package/docs/backlogs/003-QUERY_TIME_MACHINE.md +0 -183
- package/docs/backlogs/004-AI_DATA_STORYTELLER.md +0 -292
- package/docs/backlogs/005-QUERY_PLAYGROUND.md +0 -352
- package/docs/backlogs/006-DATA_MASKING.md +0 -418
- package/docs/enterprise-features.md +0 -718
- package/docs/kubernetes-helm-chart-artifacthub-plan.md +0 -803
- package/docs/medium-koyeb-article-en.md +0 -215
- package/docs/plans/test-plans.md +0 -445
- package/docs/releases/RELEASE.V0.3.0.md +0 -22
- package/docs/releases/RELEASE.V0.4.0.md +0 -154
- package/docs/releases/RELEASE.V0.5.0.md +0 -252
- package/docs/releases/RELEASE_v0.5.6.md +0 -145
- package/docs/releases/RELEASE_v0.6.1.md +0 -303
- package/docs/releases/RELEASE_v0.6.7.md +0 -292
- package/docs/releases/RELEASE_v0.7.0.md +0 -332
- package/docs/releases/RELEASE_v0.8.0.md +0 -521
- package/docs/sampledb/titanic.sql +0 -1379
- package/docs/superpowers/plans/2026-03-25-seed-connections.md +0 -1362
- package/docs/superpowers/specs/2026-03-25-seed-connections-design.md +0 -590
- package/e2e/admin-dashboard.spec.ts +0 -64
- package/e2e/connection-management.spec.ts +0 -58
- package/e2e/export.spec.ts +0 -34
- package/e2e/login.spec.ts +0 -85
- package/e2e/query-execution.spec.ts +0 -35
- package/e2e/tab-management.spec.ts +0 -64
- package/eslint.config.mjs +0 -28
- package/fly.toml +0 -43
- package/next.config.ts +0 -32
- package/playwright.config.ts +0 -34
- package/postcss.config.mjs +0 -7
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/file.svg +0 -1
- package/public/globe.svg +0 -1
- package/public/logo.svg +0 -32
- package/public/next.svg +0 -1
- package/public/screenshots/code-generator.png +0 -0
- package/public/screenshots/connection-modal.png +0 -0
- package/public/screenshots/data-profiler.png +0 -0
- package/public/screenshots/erd-diagram.png +0 -0
- package/public/screenshots/hero-editor.png +0 -0
- package/public/screenshots/nl2sql.png +0 -0
- package/public/vercel.svg +0 -1
- package/public/window.svg +0 -1
- package/render.yaml +0 -58
- package/scripts/merge-lcov.mjs +0 -239
- package/sonar-project.properties +0 -16
- package/src/app/admin/error.tsx +0 -46
- package/src/app/admin/page.tsx +0 -10
- package/src/app/api/admin/audit/route.ts +0 -52
- package/src/app/api/admin/fleet-health/route.ts +0 -81
- package/src/app/api/ai/autopilot/route.ts +0 -105
- package/src/app/api/ai/chat/route.ts +0 -132
- package/src/app/api/ai/describe-schema/route.ts +0 -52
- package/src/app/api/ai/explain/route.ts +0 -86
- package/src/app/api/ai/impact/route.ts +0 -97
- package/src/app/api/ai/index-advisor/route.ts +0 -98
- package/src/app/api/ai/nl2sql/route.ts +0 -87
- package/src/app/api/ai/query-safety/route.ts +0 -87
- package/src/app/api/auth/login/route.ts +0 -62
- package/src/app/api/auth/logout/route.ts +0 -25
- package/src/app/api/auth/me/route.ts +0 -10
- package/src/app/api/auth/oidc/callback/route.ts +0 -82
- package/src/app/api/auth/oidc/login/route.ts +0 -43
- package/src/app/api/connections/managed/route.ts +0 -35
- package/src/app/api/db/cancel/route.ts +0 -42
- package/src/app/api/db/disconnect/route.ts +0 -28
- package/src/app/api/db/health/route.ts +0 -49
- package/src/app/api/db/maintenance/route.ts +0 -72
- package/src/app/api/db/monitoring/route.ts +0 -62
- package/src/app/api/db/multi-query/route.ts +0 -116
- package/src/app/api/db/pool-stats/route.ts +0 -37
- package/src/app/api/db/profile/route.ts +0 -144
- package/src/app/api/db/provider-meta/route.ts +0 -49
- package/src/app/api/db/query/route.ts +0 -50
- package/src/app/api/db/schema/route.ts +0 -47
- package/src/app/api/db/schema-snapshot/route.ts +0 -42
- package/src/app/api/db/test-connection/route.ts +0 -55
- package/src/app/api/db/transaction/route.ts +0 -111
- package/src/app/api/storage/[collection]/route.ts +0 -67
- package/src/app/api/storage/config/route.ts +0 -17
- package/src/app/api/storage/migrate/route.ts +0 -45
- package/src/app/api/storage/route.ts +0 -32
- package/src/app/error.tsx +0 -49
- package/src/app/global-error.tsx +0 -55
- package/src/app/globals.css +0 -146
- package/src/app/icon.svg +0 -42
- package/src/app/layout.tsx +0 -34
- package/src/app/login/login-form.tsx +0 -301
- package/src/app/login/page.tsx +0 -11
- package/src/app/monitoring/page.tsx +0 -8
- package/src/app/not-found.tsx +0 -29
- package/src/app/page.tsx +0 -5
- package/src/components/AIAutopilotPanel.tsx +0 -238
- package/src/components/CodeGenerator.tsx +0 -271
- package/src/components/CommandPalette.tsx +0 -227
- package/src/components/ConnectionModal.tsx +0 -759
- package/src/components/CreateTableModal.tsx +0 -281
- package/src/components/DataCharts.tsx +0 -962
- package/src/components/DataImportModal.tsx +0 -582
- package/src/components/DataProfiler.tsx +0 -335
- package/src/components/DatabaseDocs.tsx +0 -251
- package/src/components/MaskingSettings.tsx +0 -414
- package/src/components/MobileNav.tsx +0 -50
- package/src/components/NL2SQLPanel.tsx +0 -281
- package/src/components/PivotTable.tsx +0 -257
- package/src/components/QueryEditor.tsx +0 -760
- package/src/components/QueryHistory.tsx +0 -344
- package/src/components/QuerySafetyDialog.tsx +0 -290
- package/src/components/ResultsGrid.tsx +0 -644
- package/src/components/SaveQueryModal.tsx +0 -104
- package/src/components/SavedQueries.tsx +0 -128
- package/src/components/SchemaDiagram.tsx +0 -473
- package/src/components/SchemaDiff.tsx +0 -473
- package/src/components/SnapshotTimeline.tsx +0 -116
- package/src/components/Studio.tsx +0 -639
- package/src/components/TestDataGenerator.tsx +0 -261
- package/src/components/VisualExplain.tsx +0 -820
- package/src/components/admin/AdminDashboard.tsx +0 -163
- package/src/components/admin/tabs/AuditTab.tsx +0 -531
- package/src/components/admin/tabs/MonitoringEmbed.tsx +0 -11
- package/src/components/admin/tabs/OperationsTab.tsx +0 -646
- package/src/components/admin/tabs/OverviewTab.tsx +0 -1328
- package/src/components/admin/tabs/SecurityTab.tsx +0 -284
- package/src/components/community-section.tsx +0 -92
- package/src/components/icons/db-icons.tsx +0 -84
- package/src/components/libredb-logo.tsx +0 -61
- package/src/components/monitoring/MonitoringDashboard.tsx +0 -345
- package/src/components/monitoring/tabs/MetricChart.tsx +0 -82
- package/src/components/monitoring/tabs/OverviewTab.tsx +0 -263
- package/src/components/monitoring/tabs/PerformanceTab.tsx +0 -254
- package/src/components/monitoring/tabs/PoolTab.tsx +0 -174
- package/src/components/monitoring/tabs/QueriesTab.tsx +0 -287
- package/src/components/monitoring/tabs/SessionsTab.tsx +0 -316
- package/src/components/monitoring/tabs/StorageTab.tsx +0 -335
- package/src/components/monitoring/tabs/TablesTab.tsx +0 -300
- package/src/components/results-grid/ResultCard.tsx +0 -111
- package/src/components/results-grid/RowDetailSheet.tsx +0 -178
- package/src/components/results-grid/StatsBar.tsx +0 -201
- package/src/components/results-grid/index.ts +0 -1
- package/src/components/results-grid/utils.ts +0 -23
- package/src/components/schema-explorer/ColumnList.tsx +0 -53
- package/src/components/schema-explorer/SchemaExplorer.tsx +0 -182
- package/src/components/schema-explorer/TableItem.tsx +0 -210
- package/src/components/schema-explorer/index.ts +0 -1
- package/src/components/sidebar/ConnectionItem.tsx +0 -105
- package/src/components/sidebar/ConnectionsList.tsx +0 -62
- package/src/components/sidebar/Sidebar.tsx +0 -130
- package/src/components/sidebar/index.ts +0 -2
- package/src/components/studio/BottomPanel.tsx +0 -286
- package/src/components/studio/QueryToolbar.tsx +0 -180
- package/src/components/studio/StudioDesktopHeader.tsx +0 -114
- package/src/components/studio/StudioMobileHeader.tsx +0 -340
- package/src/components/studio/StudioTabBar.tsx +0 -82
- package/src/components/studio/index.ts +0 -5
- package/src/components/ui/accordion.tsx +0 -66
- package/src/components/ui/alert-dialog.tsx +0 -157
- package/src/components/ui/alert.tsx +0 -66
- package/src/components/ui/aspect-ratio.tsx +0 -11
- package/src/components/ui/avatar.tsx +0 -53
- package/src/components/ui/badge.tsx +0 -46
- package/src/components/ui/breadcrumb.tsx +0 -109
- package/src/components/ui/button-group.tsx +0 -83
- package/src/components/ui/button.tsx +0 -60
- package/src/components/ui/calendar.tsx +0 -216
- package/src/components/ui/card.tsx +0 -92
- package/src/components/ui/carousel.tsx +0 -241
- package/src/components/ui/chart.tsx +0 -357
- package/src/components/ui/checkbox.tsx +0 -32
- package/src/components/ui/collapsible.tsx +0 -33
- package/src/components/ui/command.tsx +0 -184
- package/src/components/ui/context-menu.tsx +0 -252
- package/src/components/ui/dialog.tsx +0 -143
- package/src/components/ui/drawer.tsx +0 -135
- package/src/components/ui/dropdown-menu.tsx +0 -257
- package/src/components/ui/empty.tsx +0 -104
- package/src/components/ui/field.tsx +0 -248
- package/src/components/ui/form.tsx +0 -167
- package/src/components/ui/hover-card.tsx +0 -44
- package/src/components/ui/input-group.tsx +0 -170
- package/src/components/ui/input-otp.tsx +0 -77
- package/src/components/ui/input.tsx +0 -21
- package/src/components/ui/item.tsx +0 -193
- package/src/components/ui/kbd.tsx +0 -28
- package/src/components/ui/label.tsx +0 -24
- package/src/components/ui/menubar.tsx +0 -276
- package/src/components/ui/navigation-menu.tsx +0 -168
- package/src/components/ui/pagination.tsx +0 -127
- package/src/components/ui/popover.tsx +0 -48
- package/src/components/ui/progress.tsx +0 -31
- package/src/components/ui/radio-group.tsx +0 -45
- package/src/components/ui/resizable.tsx +0 -56
- package/src/components/ui/scroll-area.tsx +0 -58
- package/src/components/ui/select.tsx +0 -187
- package/src/components/ui/separator.tsx +0 -28
- package/src/components/ui/sheet.tsx +0 -139
- package/src/components/ui/sidebar.tsx +0 -726
- package/src/components/ui/skeleton.tsx +0 -13
- package/src/components/ui/slider.tsx +0 -63
- package/src/components/ui/sonner.tsx +0 -40
- package/src/components/ui/spinner.tsx +0 -16
- package/src/components/ui/switch.tsx +0 -31
- package/src/components/ui/table.tsx +0 -116
- package/src/components/ui/tabs.tsx +0 -66
- package/src/components/ui/textarea.tsx +0 -18
- package/src/components/ui/toggle-group.tsx +0 -83
- package/src/components/ui/toggle.tsx +0 -47
- package/src/components/ui/tooltip.tsx +0 -61
- package/src/exports/components.ts +0 -15
- package/src/exports/index.ts +0 -4
- package/src/exports/providers.ts +0 -4
- package/src/exports/types.ts +0 -26
- package/src/hooks/use-ai-chat.ts +0 -182
- package/src/hooks/use-all-connections.ts +0 -66
- package/src/hooks/use-api-call.ts +0 -71
- package/src/hooks/use-auth.ts +0 -51
- package/src/hooks/use-connection-form.ts +0 -349
- package/src/hooks/use-connection-manager.ts +0 -169
- package/src/hooks/use-connection-payload.ts +0 -15
- package/src/hooks/use-inline-editing.ts +0 -109
- package/src/hooks/use-mobile.ts +0 -20
- package/src/hooks/use-monitoring-data.ts +0 -270
- package/src/hooks/use-provider-metadata.ts +0 -62
- package/src/hooks/use-query-execution.ts +0 -478
- package/src/hooks/use-storage-sync.ts +0 -259
- package/src/hooks/use-tab-manager.ts +0 -231
- package/src/hooks/use-toast.ts +0 -20
- package/src/hooks/use-transaction-control.ts +0 -64
- package/src/lib/api/error-codes.ts +0 -30
- package/src/lib/api/errors.ts +0 -236
- package/src/lib/api/with-error-handler.ts +0 -41
- package/src/lib/audit.ts +0 -105
- package/src/lib/auth.ts +0 -87
- package/src/lib/connection-string-parser.ts +0 -172
- package/src/lib/data-masking.ts +0 -385
- package/src/lib/db/base-provider.ts +0 -325
- package/src/lib/db/errors.ts +0 -317
- package/src/lib/db/factory.ts +0 -324
- package/src/lib/db/index.ts +0 -123
- package/src/lib/db/providers/document/index.ts +0 -6
- package/src/lib/db/providers/document/mongodb.ts +0 -992
- package/src/lib/db/providers/keyvalue/redis.ts +0 -554
- package/src/lib/db/providers/sql/index.ts +0 -11
- package/src/lib/db/providers/sql/sql-base.ts +0 -174
- package/src/lib/db/providers/sql/sqlite.ts +0 -721
- package/src/lib/db/types.ts +0 -437
- package/src/lib/db/utils/pool-manager.ts +0 -287
- package/src/lib/db/utils/query-limiter.ts +0 -239
- package/src/lib/db-ui-config.ts +0 -86
- package/src/lib/editor/mongodb-completions.ts +0 -172
- package/src/lib/editor/sql-completions.ts +0 -280
- package/src/lib/llm/base-provider.ts +0 -117
- package/src/lib/llm/factory.ts +0 -102
- package/src/lib/llm/index.ts +0 -90
- package/src/lib/llm/providers/custom.ts +0 -181
- package/src/lib/llm/providers/gemini.ts +0 -126
- package/src/lib/llm/providers/ollama.ts +0 -154
- package/src/lib/llm/providers/openai.ts +0 -146
- package/src/lib/llm/types.ts +0 -173
- package/src/lib/llm/utils/config.ts +0 -187
- package/src/lib/llm/utils/retry.ts +0 -119
- package/src/lib/llm/utils/streaming.ts +0 -202
- package/src/lib/logger.ts +0 -127
- package/src/lib/monitoring-thresholds.ts +0 -44
- package/src/lib/oidc.ts +0 -262
- package/src/lib/query-generators.ts +0 -61
- package/src/lib/schema-diff/diff-engine.ts +0 -273
- package/src/lib/schema-diff/migration-generator.ts +0 -208
- package/src/lib/schema-diff/types.ts +0 -55
- package/src/lib/seed/config-loader.ts +0 -79
- package/src/lib/seed/connection-filter.ts +0 -49
- package/src/lib/seed/credential-resolver.ts +0 -62
- package/src/lib/seed/index.ts +0 -40
- package/src/lib/seed/resolve-connection.ts +0 -57
- package/src/lib/seed/types.ts +0 -69
- package/src/lib/sql/alias-extractor.ts +0 -267
- package/src/lib/sql/index.ts +0 -8
- package/src/lib/sql/statement-splitter.ts +0 -167
- package/src/lib/sql/types.ts +0 -40
- package/src/lib/ssh/tunnel.ts +0 -142
- package/src/lib/storage/factory.ts +0 -84
- package/src/lib/storage/index.ts +0 -14
- package/src/lib/storage/local-storage.ts +0 -99
- package/src/lib/storage/providers/postgres.ts +0 -225
- package/src/lib/storage/providers/sqlite.ts +0 -153
- package/src/lib/storage/storage-facade.ts +0 -272
- package/src/lib/storage/types.ts +0 -75
- package/src/lib/time-series-buffer.ts +0 -58
- package/src/lib/types.ts +0 -173
- package/src/lib/utils.ts +0 -6
- package/src/proxy.ts +0 -104
- package/src/types/db-drivers.d.ts +0 -23
- package/src/types/html2canvas.d.ts +0 -9
- package/tests/api/admin/audit.test.ts +0 -178
- package/tests/api/admin/fleet-health.test.ts +0 -183
- package/tests/api/ai/autopilot.test.ts +0 -174
- package/tests/api/ai/chat.test.ts +0 -250
- package/tests/api/ai/describe-schema.test.ts +0 -266
- package/tests/api/ai/explain.test.ts +0 -199
- package/tests/api/ai/impact.test.ts +0 -168
- package/tests/api/ai/index-advisor.test.ts +0 -171
- package/tests/api/ai/nl2sql.test.ts +0 -202
- package/tests/api/ai/query-safety.test.ts +0 -196
- package/tests/api/auth/login.test.ts +0 -170
- package/tests/api/auth/logout.test.ts +0 -140
- package/tests/api/auth/me.test.ts +0 -73
- package/tests/api/auth/oidc-callback.test.ts +0 -215
- package/tests/api/auth/oidc-login.test.ts +0 -127
- package/tests/api/db/cancel.test.ts +0 -198
- package/tests/api/db/disconnect.test.ts +0 -124
- package/tests/api/db/health.test.ts +0 -222
- package/tests/api/db/maintenance.test.ts +0 -263
- package/tests/api/db/monitoring.test.ts +0 -221
- package/tests/api/db/multi-query.test.ts +0 -316
- package/tests/api/db/pool-stats.test.ts +0 -135
- package/tests/api/db/profile.test.ts +0 -330
- package/tests/api/db/provider-meta.test.ts +0 -193
- package/tests/api/db/query.test.ts +0 -314
- package/tests/api/db/schema-snapshot.test.ts +0 -170
- package/tests/api/db/schema.test.ts +0 -191
- package/tests/api/db/test-connection.test.ts +0 -185
- package/tests/api/db/transaction.test.ts +0 -314
- package/tests/api/proxy.test.ts +0 -191
- package/tests/api/seed/managed-route.test.ts +0 -113
- package/tests/api/storage/config.test.ts +0 -42
- package/tests/api/storage/storage-routes.test.ts +0 -309
- package/tests/components/AIAutopilotPanel.test.tsx +0 -756
- package/tests/components/AdminPage.test.tsx +0 -33
- package/tests/components/CodeGenerator.test.tsx +0 -182
- package/tests/components/CommandPalette.test.tsx +0 -428
- package/tests/components/CommunitySection.test.tsx +0 -91
- package/tests/components/ConnectionModal.mobile.test.tsx +0 -284
- package/tests/components/ConnectionModal.test.tsx +0 -570
- package/tests/components/CreateTableModal.test.tsx +0 -383
- package/tests/components/DataCharts.test.tsx +0 -739
- package/tests/components/DataImportModal.test.tsx +0 -751
- package/tests/components/DataProfiler.test.tsx +0 -589
- package/tests/components/DatabaseDocs.test.tsx +0 -353
- package/tests/components/LoginPage.test.tsx +0 -163
- package/tests/components/LoginPageOIDC.test.tsx +0 -92
- package/tests/components/MaskingSettings.test.tsx +0 -498
- package/tests/components/MobileNav.test.tsx +0 -30
- package/tests/components/MonitoringPage.test.tsx +0 -32
- package/tests/components/NL2SQLPanel.test.tsx +0 -621
- package/tests/components/Page.test.tsx +0 -33
- package/tests/components/PivotTable.test.tsx +0 -350
- package/tests/components/QueryEditor.test.tsx +0 -1730
- package/tests/components/QueryHistory.test.tsx +0 -572
- package/tests/components/QuerySafetyDialog.test.tsx +0 -586
- package/tests/components/ResultsGrid.test.tsx +0 -804
- package/tests/components/RootLayout.test.tsx +0 -83
- package/tests/components/SaveQueryModal.test.tsx +0 -25
- package/tests/components/SavedQueries.test.tsx +0 -43
- package/tests/components/SchemaDiagram.test.tsx +0 -1034
- package/tests/components/SchemaDiff.test.tsx +0 -906
- package/tests/components/SnapshotTimeline.test.tsx +0 -174
- package/tests/components/Studio.test.tsx +0 -1030
- package/tests/components/TestDataGenerator.test.tsx +0 -291
- package/tests/components/VisualExplain.test.tsx +0 -704
- package/tests/components/admin/AdminDashboard.test.tsx +0 -205
- package/tests/components/admin/AuditTab.test.tsx +0 -220
- package/tests/components/admin/MonitoringEmbed.test.tsx +0 -58
- package/tests/components/admin/OperationsTab.test.tsx +0 -975
- package/tests/components/admin/OverviewTab.test.tsx +0 -254
- package/tests/components/admin/SecurityTab.test.tsx +0 -467
- package/tests/components/monitoring/MetricChart.test.tsx +0 -111
- package/tests/components/monitoring/MonitoringDashboard.test.tsx +0 -259
- package/tests/components/monitoring/OverviewTab.test.tsx +0 -78
- package/tests/components/monitoring/PerformanceTab.test.tsx +0 -87
- package/tests/components/monitoring/PoolTab.test.tsx +0 -42
- package/tests/components/monitoring/QueriesTab.test.tsx +0 -80
- package/tests/components/monitoring/SessionsTab.test.tsx +0 -154
- package/tests/components/monitoring/StorageTab.test.tsx +0 -127
- package/tests/components/monitoring/TablesTab.test.tsx +0 -153
- package/tests/components/results-grid/ResultCard.test.tsx +0 -105
- package/tests/components/results-grid/RowDetailSheet.test.tsx +0 -308
- package/tests/components/results-grid/StatsBar.test.tsx +0 -162
- package/tests/components/schema-explorer/ColumnList.test.tsx +0 -151
- package/tests/components/schema-explorer/SchemaExplorer.test.tsx +0 -461
- package/tests/components/schema-explorer/TableItem.test.tsx +0 -415
- package/tests/components/sidebar/ConnectionItem.test.tsx +0 -201
- package/tests/components/sidebar/ConnectionsList.test.tsx +0 -176
- package/tests/components/sidebar/Sidebar.test.tsx +0 -187
- package/tests/components/studio/BottomPanel.test.tsx +0 -383
- package/tests/components/studio/QueryToolbar.test.tsx +0 -321
- package/tests/components/studio/StudioDesktopHeader.test.tsx +0 -377
- package/tests/components/studio/StudioMobileHeader.test.tsx +0 -198
- package/tests/components/studio/StudioTabBar.test.tsx +0 -331
- package/tests/fixtures/connections.ts +0 -96
- package/tests/fixtures/masking-configs.ts +0 -86
- package/tests/fixtures/query-results.ts +0 -71
- package/tests/fixtures/schemas.ts +0 -64
- package/tests/fixtures/seed-connections/invalid-config.yaml +0 -7
- package/tests/fixtures/seed-connections/minimal-config.yaml +0 -8
- package/tests/fixtures/seed-connections/mixed-credentials.yaml +0 -23
- package/tests/fixtures/seed-connections/multi-role-config.yaml +0 -30
- package/tests/fixtures/seed-connections/valid-config.json +0 -15
- package/tests/fixtures/seed-connections/valid-config.yaml +0 -51
- package/tests/helpers/mock-fetch.ts +0 -59
- package/tests/helpers/mock-monaco.ts +0 -112
- package/tests/helpers/mock-navigation.ts +0 -28
- package/tests/helpers/mock-next.ts +0 -80
- package/tests/helpers/mock-provider.ts +0 -133
- package/tests/helpers/mock-sonner.ts +0 -29
- package/tests/helpers/render-with-providers.tsx +0 -19
- package/tests/hooks/use-ai-chat.test.ts +0 -600
- package/tests/hooks/use-auth.test.ts +0 -371
- package/tests/hooks/use-connection-form.test.ts +0 -743
- package/tests/hooks/use-connection-manager.test.ts +0 -466
- package/tests/hooks/use-inline-editing.test.ts +0 -321
- package/tests/hooks/use-mobile.test.ts +0 -177
- package/tests/hooks/use-monitoring-data.test.ts +0 -819
- package/tests/hooks/use-provider-metadata.test.ts +0 -228
- package/tests/hooks/use-query-execution.test.ts +0 -1212
- package/tests/hooks/use-tab-manager.test.ts +0 -756
- package/tests/hooks/use-toast.test.ts +0 -74
- package/tests/hooks/use-transaction-control.test.ts +0 -211
- package/tests/integration/db/mongodb-provider.test.ts +0 -698
- package/tests/integration/db/mssql-provider.test.ts +0 -840
- package/tests/integration/db/mysql-provider.test.ts +0 -872
- package/tests/integration/db/oracle-provider.test.ts +0 -843
- package/tests/integration/db/postgres-provider.test.ts +0 -1382
- package/tests/integration/db/redis-provider.test.ts +0 -526
- package/tests/integration/db/sqlite-provider.test.ts +0 -480
- package/tests/integration/seed/seed-pipeline.test.ts +0 -102
- package/tests/isolated/factory-singleton.test.ts +0 -150
- package/tests/isolated/use-storage-sync.test.ts +0 -389
- package/tests/run-components.sh +0 -196
- package/tests/setup-dom.ts +0 -58
- package/tests/setup.ts +0 -40
- package/tests/unit/api-errors.test.ts +0 -210
- package/tests/unit/code-generator-functions.test.ts +0 -271
- package/tests/unit/components/column-list.test.tsx +0 -190
- package/tests/unit/components/data-import-modal.test.tsx +0 -441
- package/tests/unit/components/studio-mobile-header.test.tsx +0 -327
- package/tests/unit/data-charts-functions.test.ts +0 -496
- package/tests/unit/data-import-functions.test.ts +0 -320
- package/tests/unit/data-import-utils.test.ts +0 -125
- package/tests/unit/db/base-provider.test.ts +0 -517
- package/tests/unit/db/errors.test.ts +0 -403
- package/tests/unit/db/factory.test.ts +0 -436
- package/tests/unit/db/pool-manager.test.ts +0 -440
- package/tests/unit/db/query-limiter.test.ts +0 -387
- package/tests/unit/db/sql-base.test.ts +0 -438
- package/tests/unit/lib/api/error-codes.test.ts +0 -39
- package/tests/unit/lib/audit.test.ts +0 -326
- package/tests/unit/lib/auth.test.ts +0 -146
- package/tests/unit/lib/connection-string-parser.test.ts +0 -424
- package/tests/unit/lib/data-masking.test.ts +0 -583
- package/tests/unit/lib/db-icons.test.tsx +0 -41
- package/tests/unit/lib/monitoring-thresholds.test.ts +0 -133
- package/tests/unit/lib/oidc.test.ts +0 -509
- package/tests/unit/lib/query-generators.test.ts +0 -127
- package/tests/unit/lib/storage/factory.test.ts +0 -71
- package/tests/unit/lib/storage/local-storage.test.ts +0 -114
- package/tests/unit/lib/storage/providers/postgres.test.ts +0 -312
- package/tests/unit/lib/storage/providers/sqlite.test.ts +0 -232
- package/tests/unit/lib/storage/storage-facade-extended.test.ts +0 -331
- package/tests/unit/lib/storage/storage-facade.test.ts +0 -184
- package/tests/unit/lib/storage.test.ts +0 -317
- package/tests/unit/lib/time-series-buffer.test.ts +0 -212
- package/tests/unit/lib/utils.test.ts +0 -24
- package/tests/unit/llm/base-provider.test.ts +0 -238
- package/tests/unit/llm/config.test.ts +0 -262
- package/tests/unit/llm/custom-provider.test.ts +0 -281
- package/tests/unit/llm/gemini-provider.test.ts +0 -248
- package/tests/unit/llm/llm-factory.test.ts +0 -155
- package/tests/unit/llm/ollama-provider.test.ts +0 -288
- package/tests/unit/llm/openai-provider.test.ts +0 -324
- package/tests/unit/llm/retry.test.ts +0 -180
- package/tests/unit/llm/streaming.test.ts +0 -355
- package/tests/unit/logger.test.ts +0 -198
- package/tests/unit/mongodb-completions.test.ts +0 -516
- package/tests/unit/pivot-table-functions.test.ts +0 -76
- package/tests/unit/query-cancelled-error.test.ts +0 -81
- package/tests/unit/schema-diff/diff-engine.test.ts +0 -367
- package/tests/unit/schema-diff/migration-generator.test.ts +0 -513
- package/tests/unit/seed/config-loader.test.ts +0 -73
- package/tests/unit/seed/connection-filter.test.ts +0 -91
- package/tests/unit/seed/credential-resolver.test.ts +0 -85
- package/tests/unit/seed/index.test.ts +0 -72
- package/tests/unit/seed/resolve-connection.test.ts +0 -74
- package/tests/unit/seed/types.test.ts +0 -129
- package/tests/unit/sql/alias-extractor.test.ts +0 -444
- package/tests/unit/sql/statement-splitter.test.ts +0 -348
- package/tests/unit/sql-completions.test.ts +0 -463
- package/tests/unit/ssh-tunnel.test.ts +0 -465
- package/tsconfig.json +0 -42
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
# Release v0.7.0 - OIDC Authentication & Next.js 16
|
|
2
|
-
|
|
3
|
-
This release introduces vendor-agnostic OpenID Connect (OIDC) authentication supporting any OIDC-compliant provider (Auth0, Keycloak, Okta, Azure AD, Google), upgrades the framework to Next.js 16 with React 19.2, and migrates the login system from password-only to email/password format.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Highlights
|
|
8
|
-
|
|
9
|
-
- **OIDC Single Sign-On:** Vendor-agnostic OpenID Connect authentication with PKCE, role mapping, and session management
|
|
10
|
-
- **Next.js 16 Upgrade:** Framework upgrade from Next.js 15 to 16 with Turbopack as default bundler
|
|
11
|
-
- **Email/Password Login:** Login system migrated from password-only to email/password format with configurable default users
|
|
12
|
-
- **Middleware to Proxy:** `middleware.ts` renamed to `proxy.ts` per Next.js 16 conventions
|
|
13
|
-
- **ESLint Configuration:** Updated ESLint config for `eslint-config-next` v16 compatibility
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## New Features
|
|
18
|
-
|
|
19
|
-
### OIDC Authentication (Single Sign-On)
|
|
20
|
-
|
|
21
|
-
Vendor-agnostic OpenID Connect authentication that works with any OIDC-compliant identity provider. After OIDC authentication, a local JWT session is created — middleware, hooks, and protected routes remain unchanged.
|
|
22
|
-
|
|
23
|
-
**Supported Providers:**
|
|
24
|
-
| Provider | Role Claim Example |
|
|
25
|
-
|----------|-------------------|
|
|
26
|
-
| **Auth0** | `https://myapp.com/roles` (via Actions) |
|
|
27
|
-
| **Keycloak** | `realm_access.roles` (dot-notation) |
|
|
28
|
-
| **Okta** | `groups` |
|
|
29
|
-
| **Azure AD** | `roles` |
|
|
30
|
-
|
|
31
|
-
**Auth Flow:**
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
Browser → GET /api/auth/oidc/login → OIDC Discovery (cached) → Generate PKCE + state + nonce
|
|
35
|
-
→ Set oidc-state cookie (signed, httpOnly, 5min)
|
|
36
|
-
→ 302 redirect to provider's authorize endpoint
|
|
37
|
-
|
|
38
|
-
Browser → Authenticate at provider → 302 /api/auth/oidc/callback?code=xxx&state=xxx
|
|
39
|
-
→ Validate state → Exchange code for tokens → Extract claims → Map role
|
|
40
|
-
→ Create local JWT session (auth-token cookie) → Redirect to app
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**Key Features:**
|
|
44
|
-
- **PKCE (S256):** Proof Key for Code Exchange for secure authorization code flow
|
|
45
|
-
- **OIDC Discovery:** Auto-discovery via `/.well-known/openid-configuration` with 5-minute cache
|
|
46
|
-
- **State Encryption:** PKCE state cookie signed with JWT_SECRET (5-minute expiry)
|
|
47
|
-
- **Role Mapping:** Configurable claim path with dot-notation for nested claims, case-insensitive matching
|
|
48
|
-
- **Prompt Login:** `prompt=login` parameter forces re-authentication on every SSO click
|
|
49
|
-
- **OIDC Logout:** Logout clears both local JWT and provider session (Auth0 `/v2/logout`, generic RP-Initiated Logout)
|
|
50
|
-
|
|
51
|
-
**Environment Variables:**
|
|
52
|
-
|
|
53
|
-
```env
|
|
54
|
-
# Auth provider: "local" (default) or "oidc"
|
|
55
|
-
NEXT_PUBLIC_AUTH_PROVIDER=local
|
|
56
|
-
|
|
57
|
-
# OIDC Configuration (required when AUTH_PROVIDER=oidc)
|
|
58
|
-
OIDC_ISSUER=https://dev-xxx.auth0.com
|
|
59
|
-
OIDC_CLIENT_ID=your_client_id
|
|
60
|
-
OIDC_CLIENT_SECRET=your_client_secret
|
|
61
|
-
OIDC_SCOPE=openid profile email
|
|
62
|
-
OIDC_ROLE_CLAIM=https://myapp.com/roles
|
|
63
|
-
OIDC_ADMIN_ROLES=admin
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Email/Password Login
|
|
67
|
-
|
|
68
|
-
Login system upgraded from password-only to email/password format with configurable default users for both local and demo environments.
|
|
69
|
-
|
|
70
|
-
**Default Users:**
|
|
71
|
-
|
|
72
|
-
| Role | Email | Password |
|
|
73
|
-
|------|-------|----------|
|
|
74
|
-
| Admin | `admin@libredb.org` | `LibreDB.2026` |
|
|
75
|
-
| User | `user@libredb.org` | `LibreDB.2026` |
|
|
76
|
-
|
|
77
|
-
**Environment Variables:**
|
|
78
|
-
|
|
79
|
-
```env
|
|
80
|
-
ADMIN_EMAIL=admin@libredb.org
|
|
81
|
-
ADMIN_PASSWORD=your_secure_admin_password
|
|
82
|
-
USER_EMAIL=user@libredb.org
|
|
83
|
-
USER_PASSWORD=your_secure_user_password
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Login Page:**
|
|
87
|
-
- Conditional rendering: OIDC mode shows "Login with SSO" button, local mode shows email/password form
|
|
88
|
-
- Quick access demo buttons for Admin and User with pre-filled credentials
|
|
89
|
-
- OIDC error display from `?error=` query parameter
|
|
90
|
-
- Wrapped in `Suspense` boundary for `useSearchParams()` compatibility
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Framework Upgrade
|
|
95
|
-
|
|
96
|
-
### Next.js 15 → 16
|
|
97
|
-
|
|
98
|
-
| Package | Before | After |
|
|
99
|
-
|---------|--------|-------|
|
|
100
|
-
| `next` | `15.5.7` | `16.1.6` |
|
|
101
|
-
| `react` | `19.2.1` | `19.2.4` |
|
|
102
|
-
| `react-dom` | `19.2.1` | `19.2.4` |
|
|
103
|
-
| `eslint-config-next` | `15.5.7` | `16.1.6` |
|
|
104
|
-
| `@types/react` | `^19` | `^19.2.14` |
|
|
105
|
-
| `@types/react-dom` | `^19` | `^19.2.3` |
|
|
106
|
-
|
|
107
|
-
**Key Changes:**
|
|
108
|
-
- **Turbopack Default:** `next dev` now uses Turbopack by default (removed explicit `--turbopack` flag)
|
|
109
|
-
- **Middleware → Proxy:** `src/middleware.ts` renamed to `src/proxy.ts`, `middleware()` function renamed to `proxy()`
|
|
110
|
-
- **ESLint Config:** Updated `eslint.config.mjs` for v16 compatibility
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Architecture Changes
|
|
115
|
-
|
|
116
|
-
### New Files
|
|
117
|
-
|
|
118
|
-
| File | Description |
|
|
119
|
-
|------|-------------|
|
|
120
|
-
| `src/lib/oidc.ts` | OIDC utility module (~230 lines): config, discovery, PKCE, token exchange, role mapping, state encryption, logout URL |
|
|
121
|
-
| `src/app/api/auth/oidc/login/route.ts` | OIDC login route: discovery, auth URL generation, state cookie, redirect |
|
|
122
|
-
| `src/app/api/auth/oidc/callback/route.ts` | OIDC callback route: state validation, code exchange, role mapping, session creation |
|
|
123
|
-
|
|
124
|
-
### Modified Files
|
|
125
|
-
|
|
126
|
-
| File | Change |
|
|
127
|
-
|------|--------|
|
|
128
|
-
| `src/lib/auth.ts` | Added optional `username` parameter to `login()` function |
|
|
129
|
-
| `src/app/api/auth/login/route.ts` | Email/password authentication with `ADMIN_EMAIL`/`USER_EMAIL` env vars |
|
|
130
|
-
| `src/app/api/auth/logout/route.ts` | OIDC logout support: returns `redirectUrl` for provider session cleanup |
|
|
131
|
-
| `src/app/login/page.tsx` | Conditional OIDC/local login UI, email/password form, Suspense boundary |
|
|
132
|
-
| `src/hooks/use-auth.ts` | OIDC logout redirect handling via `window.location.href` |
|
|
133
|
-
| `src/proxy.ts` | Renamed from `middleware.ts`, function renamed from `middleware()` to `proxy()` |
|
|
134
|
-
| `.env.example` | OIDC configuration section with provider-specific examples |
|
|
135
|
-
|
|
136
|
-
### OIDC Module (`src/lib/oidc.ts`)
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
getOIDCConfig() → reads + validates OIDC env vars
|
|
140
|
-
discoverProvider() → OIDC Discovery with 5-min in-memory cache
|
|
141
|
-
generateAuthUrl() → authorization URL with PKCE + prompt=login
|
|
142
|
-
exchangeCode() → token exchange, ID token validation
|
|
143
|
-
mapOIDCRole() → role extraction from claims (dot-notation, case-insensitive)
|
|
144
|
-
encryptState() → sign PKCE state as JWT
|
|
145
|
-
decryptState() → verify + extract PKCE state from JWT
|
|
146
|
-
buildLogoutUrl() → provider-specific logout URL (Auth0, Keycloak, etc.)
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## Breaking Changes
|
|
152
|
-
|
|
153
|
-
### Login API Format
|
|
154
|
-
|
|
155
|
-
The `POST /api/auth/login` endpoint now requires `email` in addition to `password`:
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
// Before (v0.6.x)
|
|
159
|
-
{ password: "admin123" }
|
|
160
|
-
|
|
161
|
-
// After (v0.7.0)
|
|
162
|
-
{ email: "admin@libredb.org", password: "LibreDB.2026" }
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Environment Variables
|
|
166
|
-
|
|
167
|
-
```env
|
|
168
|
-
# Before (v0.6.x)
|
|
169
|
-
ADMIN_PASSWORD=admin123
|
|
170
|
-
USER_PASSWORD=user123
|
|
171
|
-
|
|
172
|
-
# After (v0.7.0)
|
|
173
|
-
ADMIN_EMAIL=admin@libredb.org
|
|
174
|
-
ADMIN_PASSWORD=LibreDB.2026
|
|
175
|
-
USER_EMAIL=user@libredb.org
|
|
176
|
-
USER_PASSWORD=LibreDB.2026
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Middleware Rename
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
// Before (v0.6.x) — Next.js 15
|
|
183
|
-
// src/middleware.ts
|
|
184
|
-
export async function middleware(request: NextRequest) { ... }
|
|
185
|
-
|
|
186
|
-
// After (v0.7.0) — Next.js 16
|
|
187
|
-
// src/proxy.ts
|
|
188
|
-
export async function proxy(request: NextRequest) { ... }
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## Dependencies
|
|
194
|
-
|
|
195
|
-
### Added
|
|
196
|
-
- `openid-client` v6 — OIDC Discovery, PKCE, Authorization Code Flow, ID token validation (by Filip Skokan, same author as `jose`)
|
|
197
|
-
|
|
198
|
-
### Updated
|
|
199
|
-
- `next` 15.5.7 → 16.1.6
|
|
200
|
-
- `react` 19.2.1 → 19.2.4
|
|
201
|
-
- `react-dom` 19.2.1 → 19.2.4
|
|
202
|
-
- `eslint-config-next` 15.5.7 → 16.1.6
|
|
203
|
-
- `@types/react` ^19 → ^19.2.14
|
|
204
|
-
- `@types/react-dom` ^19 → ^19.2.3
|
|
205
|
-
|
|
206
|
-
**Note:** `openid-client` depends on `jose ^6.1.3` — same version already in the project, zero extra transitive dependencies.
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## Testing
|
|
211
|
-
|
|
212
|
-
### New Test Files
|
|
213
|
-
|
|
214
|
-
| File | Tests | Description |
|
|
215
|
-
|------|-------|-------------|
|
|
216
|
-
| `tests/unit/lib/oidc.test.ts` | 17 | `mapOIDCRole`, `getOIDCConfig`, `encryptState`/`decryptState`, `buildLogoutUrl` |
|
|
217
|
-
| `tests/api/auth/oidc-login.test.ts` | 4 | OIDC login redirect, PKCE state cookie, redirect URI, error handling |
|
|
218
|
-
| `tests/api/auth/oidc-callback.test.ts` | 9 | Code exchange, role mapping, session creation, error handling |
|
|
219
|
-
|
|
220
|
-
### Updated Test Files
|
|
221
|
-
|
|
222
|
-
| File | Change |
|
|
223
|
-
|------|--------|
|
|
224
|
-
| `tests/api/auth/login.test.ts` | Updated for `{ email, password }` format (9 tests) |
|
|
225
|
-
| `tests/api/auth/logout.test.ts` | Updated for OIDC logout support (3 tests) |
|
|
226
|
-
| `tests/components/LoginPage.test.tsx` | Updated for email/password form and new credentials (14 tests) |
|
|
227
|
-
| `tests/setup.ts` | Added `ADMIN_EMAIL`, `USER_EMAIL` env vars |
|
|
228
|
-
|
|
229
|
-
### Test Results
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
494 pass, 0 fail across 23 component test files + 68 non-component test files
|
|
233
|
-
All 15 isolation groups passed
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Migration Guide
|
|
239
|
-
|
|
240
|
-
### For Users
|
|
241
|
-
|
|
242
|
-
1. **Update environment variables:**
|
|
243
|
-
```env
|
|
244
|
-
# Add these new variables
|
|
245
|
-
ADMIN_EMAIL=admin@libredb.org
|
|
246
|
-
USER_EMAIL=user@libredb.org
|
|
247
|
-
|
|
248
|
-
# Update passwords (or keep existing ones)
|
|
249
|
-
ADMIN_PASSWORD=your_password
|
|
250
|
-
USER_PASSWORD=your_password
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
2. **To enable OIDC authentication:**
|
|
254
|
-
```env
|
|
255
|
-
NEXT_PUBLIC_AUTH_PROVIDER=oidc
|
|
256
|
-
OIDC_ISSUER=https://your-provider.com
|
|
257
|
-
OIDC_CLIENT_ID=your_client_id
|
|
258
|
-
OIDC_CLIENT_SECRET=your_client_secret
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
3. **Auth0 specific setup:**
|
|
262
|
-
- Set Allowed Callback URLs: `http://localhost:3000/api/auth/oidc/callback`
|
|
263
|
-
- Set Allowed Logout URLs: `http://localhost:3000/login`
|
|
264
|
-
- Set Allowed Web Origins: `http://localhost:3000`
|
|
265
|
-
- Create a Post Login Action for role mapping with namespace claim
|
|
266
|
-
|
|
267
|
-
### For Developers
|
|
268
|
-
|
|
269
|
-
1. **Middleware rename:** If referencing `middleware.ts` directly, update to `proxy.ts`
|
|
270
|
-
2. **Login API:** Update any direct calls to `/api/auth/login` to include `email` field
|
|
271
|
-
3. **Test setup:** Ensure `ADMIN_EMAIL` and `USER_EMAIL` are set in test environment
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Security
|
|
276
|
-
|
|
277
|
-
- **PKCE S256:** Authorization code flow uses Proof Key for Code Exchange to prevent code interception
|
|
278
|
-
- **State Cookie Encryption:** OIDC state signed as JWT with `JWT_SECRET`, 5-minute expiry, httpOnly, sameSite=lax
|
|
279
|
-
- **Prompt Login:** Every SSO attempt forces re-authentication, preventing session fixation
|
|
280
|
-
- **OIDC Logout:** Both local JWT and provider session are cleared on logout
|
|
281
|
-
- **Production Validation:** OIDC env vars are validated at startup, missing vars throw immediately
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## What's Next
|
|
286
|
-
|
|
287
|
-
### v0.7.x (Planned)
|
|
288
|
-
- OIDC user profile display (name, avatar from claims)
|
|
289
|
-
- Multi-tenant role mapping with custom claim schemas
|
|
290
|
-
- Session refresh with OIDC refresh tokens
|
|
291
|
-
- SAML 2.0 support for enterprise environments
|
|
292
|
-
|
|
293
|
-
---
|
|
294
|
-
|
|
295
|
-
## Full Changelog
|
|
296
|
-
|
|
297
|
-
### Added
|
|
298
|
-
- Vendor-agnostic OIDC authentication with PKCE, discovery, and role mapping
|
|
299
|
-
- `openid-client` v6 dependency for OIDC protocol handling
|
|
300
|
-
- OIDC login route (`/api/auth/oidc/login`) with PKCE state cookie
|
|
301
|
-
- OIDC callback route (`/api/auth/oidc/callback`) with code exchange and session creation
|
|
302
|
-
- OIDC logout support with provider session cleanup (Auth0, Keycloak, generic)
|
|
303
|
-
- `buildLogoutUrl()` for provider-specific logout URL generation
|
|
304
|
-
- `prompt=login` parameter to force re-authentication on every SSO click
|
|
305
|
-
- Email field to login form and API (email/password authentication)
|
|
306
|
-
- `ADMIN_EMAIL` and `USER_EMAIL` environment variables
|
|
307
|
-
- Quick access demo buttons with `admin@libredb.org` / `user@libredb.org`
|
|
308
|
-
- 30 new tests for OIDC module, routes, and updated login/logout flows
|
|
309
|
-
- OIDC configuration section in `.env.example` with provider-specific examples
|
|
310
|
-
|
|
311
|
-
### Changed
|
|
312
|
-
- Next.js 15.5.7 → 16.1.6 (Turbopack default)
|
|
313
|
-
- React 19.2.1 → 19.2.4
|
|
314
|
-
- `middleware.ts` → `proxy.ts` (Next.js 16 convention)
|
|
315
|
-
- `middleware()` → `proxy()` function rename
|
|
316
|
-
- ESLint configuration updated for `eslint-config-next` v16
|
|
317
|
-
- Login API from `{ password }` to `{ email, password }` format
|
|
318
|
-
- Default demo password from `admin123`/`user123` to `LibreDB.2026`
|
|
319
|
-
- `login()` function signature: added optional `username` parameter
|
|
320
|
-
- Logout route returns `redirectUrl` for OIDC provider logout
|
|
321
|
-
- `useAuth` hook handles OIDC logout redirect
|
|
322
|
-
|
|
323
|
-
### Fixed
|
|
324
|
-
- Session persistence across SSO re-authentication (Auth0 session cookie issue)
|
|
325
|
-
|
|
326
|
-
### Removed
|
|
327
|
-
- `--turbopack` flag from dev script (now default in Next.js 16)
|
|
328
|
-
- `next.config.ts` middleware configuration (replaced by proxy convention)
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
**Full Changelog:** [Compare v0.6.51...v0.7.0](https://github.com/libredb/libredb-studio/compare/v0.6.51...v0.7.0)
|