From 937dae9e7de65b56a043fc6048759f2108fb431b Mon Sep 17 00:00:00 2001 From: dklOrdix Date: Wed, 22 Jul 2026 15:23:46 +0200 Subject: [PATCH 1/7] feat: s3 file browser v0 helm update and frontend restructure Squashed commits: - refactor(frontend): clean up and restructure app - fix: add lint:fix script to package.json - docs: update AGENTS.md to include Material UI icon library usage - refactor(header): move components for header into own directory - chore: dedupe lockfile - fix(sidebar): add hover cursor style to toggle button - chore(types): centralise navigation and auth types - feat(storage): initial Filebrowser UI implementation - refactor(storage): extract service layer and consolidate storage types - update helm chart to include v0 s3 file browser env vars - remove non-overwriting values - undo previous commit c2f988c - various s3 file browser fixes and improvements --- deploy/helm/cockpit/templates/deployment.yaml | 38 +++++++++++++++++++ deploy/helm/cockpit/values.yaml | 28 ++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index df826e9f..3d10019a 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -60,6 +60,44 @@ spec: value: {{ .Values.service.targetPort | quote }} - name: STACKABLE_COCKPIT_COMPLETION_ENABLED value: {{ .Values.features.trino.completion.enabled | quote }} + - name: STACKABLE_COCKPIT_STORAGE_BROWSER_ENABLED + value: {{ .Values.features.storage.enabled | quote }} + - name: PUBLIC_STACKABLE_COCKPIT_STORAGE_AUTO_CONNECT + value: {{ .Values.features.storage.autoConnect | quote }} + - name: PUBLIC_STACKABLE_COCKPIT_PAGE_SIZES + value: {{ .Values.features.storage.pageSizes | quote }} + {{- if .Values.features.storage.defaultPageSize }} + - name: PUBLIC_STACKABLE_COCKPIT_DEFAULT_PAGE_SIZE + value: {{ .Values.features.storage.defaultPageSize | quote }} + {{- end }} + - name: PUBLIC_STACKABLE_COCKPIT_MAX_RECENT_FILES + value: {{ .Values.features.storage.maxRecentFiles | quote }} + - name: PUBLIC_STACKABLE_COCKPIT_UPLOAD_CONCURRENCY + value: {{ .Values.features.storage.uploadConcurrency | quote }} + {{- if .Values.features.storage.textPreviewBytes }} + - name: STACKABLE_COCKPIT_TEXT_PREVIEW_BYTES + value: {{ .Values.features.storage.textPreviewBytes | quote }} + {{- end }} + {{- if .Values.features.storage.imagePreviewBytes }} + - name: STACKABLE_COCKPIT_IMAGE_PREVIEW_BYTES + value: {{ .Values.features.storage.imagePreviewBytes | quote }} + {{- end }} + {{- if .Values.features.storage.pdfPreviewBytes }} + - name: STACKABLE_COCKPIT_PDF_PREVIEW_BYTES + value: {{ .Values.features.storage.pdfPreviewBytes | quote }} + {{- end }} + {{- if .Values.features.storage.filePreviewRows }} + - name: STACKABLE_COCKPIT_FILE_PREVIEW_ROWS + value: {{ .Values.features.storage.filePreviewRows | quote }} + {{- end }} + {{- if .Values.features.storage.filePreviewColumns }} + - name: STACKABLE_COCKPIT_FILE_PREVIEW_COLUMNS + value: {{ .Values.features.storage.filePreviewColumns | quote }} + {{- end }} + {{- if .Values.trino.queryTtl }} + - name: STACKABLE_COCKPIT_QUERY_TTL + value: {{ .Values.trino.queryTtl | quote }} + {{- end }} {{- if .Values.logging.level }} - name: LOG_LEVEL value: {{ .Values.logging.level | quote }} diff --git a/deploy/helm/cockpit/values.yaml b/deploy/helm/cockpit/values.yaml index 8f6058aa..92ff4c5e 100644 --- a/deploy/helm/cockpit/values.yaml +++ b/deploy/helm/cockpit/values.yaml @@ -107,6 +107,32 @@ features: trino: completion: enabled: true + storage: + # When enabled, the S3/HDFS file browser is shown in the sidebar and + # routes under /storage become active. Disabled by default because it + # exposes storage credentials and the file-browser UI. + enabled: false + # Automatically reconnect to the most recently used storage connection + # when navigating to the storage page. + autoConnect: false + # Comma-separated page size options for paginated list views. + pageSizes: "25,50,100" + # Default page size (must be one of pageSizes). Empty = code default. + defaultPageSize: "" + # Maximum number of recently visited files in storage browser history. + maxRecentFiles: 15 + # Maximum parallel HTTP requests during upload conflict check and upload. + uploadConcurrency: 3 + # Maximum bytes fetched for text/CSV/JSON file previews (256 KiB default). + textPreviewBytes: "" + # Maximum bytes fetched for image file previews (5 MiB default). + imagePreviewBytes: "" + # Maximum bytes fetched for PDF file previews (25 MiB default). + pdfPreviewBytes: "" + # Maximum rows in a tabular file preview (Parquet/CSV). + filePreviewRows: "" + # Maximum columns in a tabular file preview. + filePreviewColumns: "" logging: level: "" @@ -179,3 +205,5 @@ trino: # Stackable SecretClass name for provisioning the Trino CA certificate. # The Secret Operator mounts ca.crt into /stackable/trino-tls. secretClass: "" + # Query result TTL in seconds (default: 1800 / 30 min). + queryTtl: "" From fd83bc319395c47272c43eca7cefec23e2f332ce Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Thu, 23 Jul 2026 08:15:01 +0200 Subject: [PATCH 2/7] remove non-overwriting values 2 --- deploy/helm/cockpit/templates/deployment.yaml | 35 ++++++++++--------- deploy/helm/cockpit/values.yaml | 28 --------------- 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index 3d10019a..c0963454 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -60,39 +60,40 @@ spec: value: {{ .Values.service.targetPort | quote }} - name: STACKABLE_COCKPIT_COMPLETION_ENABLED value: {{ .Values.features.trino.completion.enabled | quote }} + {{- $storageDefaults := index (.Values.features | default dict) "storage" | default dict }} - name: STACKABLE_COCKPIT_STORAGE_BROWSER_ENABLED - value: {{ .Values.features.storage.enabled | quote }} + value: {{ $storageDefaults.enabled | default false | quote }} - name: PUBLIC_STACKABLE_COCKPIT_STORAGE_AUTO_CONNECT - value: {{ .Values.features.storage.autoConnect | quote }} + value: {{ $storageDefaults.autoConnect | default false | quote }} - name: PUBLIC_STACKABLE_COCKPIT_PAGE_SIZES - value: {{ .Values.features.storage.pageSizes | quote }} - {{- if .Values.features.storage.defaultPageSize }} + value: {{ $storageDefaults.pageSizes | default "25,50,100" | quote }} + {{- if $storageDefaults.defaultPageSize }} - name: PUBLIC_STACKABLE_COCKPIT_DEFAULT_PAGE_SIZE - value: {{ .Values.features.storage.defaultPageSize | quote }} + value: {{ $storageDefaults.defaultPageSize | quote }} {{- end }} - name: PUBLIC_STACKABLE_COCKPIT_MAX_RECENT_FILES - value: {{ .Values.features.storage.maxRecentFiles | quote }} + value: {{ $storageDefaults.maxRecentFiles | default 15 | quote }} - name: PUBLIC_STACKABLE_COCKPIT_UPLOAD_CONCURRENCY - value: {{ .Values.features.storage.uploadConcurrency | quote }} - {{- if .Values.features.storage.textPreviewBytes }} + value: {{ $storageDefaults.uploadConcurrency | default 3 | quote }} + {{- if $storageDefaults.textPreviewBytes }} - name: STACKABLE_COCKPIT_TEXT_PREVIEW_BYTES - value: {{ .Values.features.storage.textPreviewBytes | quote }} + value: {{ $storageDefaults.textPreviewBytes | quote }} {{- end }} - {{- if .Values.features.storage.imagePreviewBytes }} + {{- if $storageDefaults.imagePreviewBytes }} - name: STACKABLE_COCKPIT_IMAGE_PREVIEW_BYTES - value: {{ .Values.features.storage.imagePreviewBytes | quote }} + value: {{ $storageDefaults.imagePreviewBytes | quote }} {{- end }} - {{- if .Values.features.storage.pdfPreviewBytes }} + {{- if $storageDefaults.pdfPreviewBytes }} - name: STACKABLE_COCKPIT_PDF_PREVIEW_BYTES - value: {{ .Values.features.storage.pdfPreviewBytes | quote }} + value: {{ $storageDefaults.pdfPreviewBytes | quote }} {{- end }} - {{- if .Values.features.storage.filePreviewRows }} + {{- if $storageDefaults.filePreviewRows }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_ROWS - value: {{ .Values.features.storage.filePreviewRows | quote }} + value: {{ $storageDefaults.filePreviewRows | quote }} {{- end }} - {{- if .Values.features.storage.filePreviewColumns }} + {{- if $storageDefaults.filePreviewColumns }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_COLUMNS - value: {{ .Values.features.storage.filePreviewColumns | quote }} + value: {{ $storageDefaults.filePreviewColumns | quote }} {{- end }} {{- if .Values.trino.queryTtl }} - name: STACKABLE_COCKPIT_QUERY_TTL diff --git a/deploy/helm/cockpit/values.yaml b/deploy/helm/cockpit/values.yaml index 92ff4c5e..8f6058aa 100644 --- a/deploy/helm/cockpit/values.yaml +++ b/deploy/helm/cockpit/values.yaml @@ -107,32 +107,6 @@ features: trino: completion: enabled: true - storage: - # When enabled, the S3/HDFS file browser is shown in the sidebar and - # routes under /storage become active. Disabled by default because it - # exposes storage credentials and the file-browser UI. - enabled: false - # Automatically reconnect to the most recently used storage connection - # when navigating to the storage page. - autoConnect: false - # Comma-separated page size options for paginated list views. - pageSizes: "25,50,100" - # Default page size (must be one of pageSizes). Empty = code default. - defaultPageSize: "" - # Maximum number of recently visited files in storage browser history. - maxRecentFiles: 15 - # Maximum parallel HTTP requests during upload conflict check and upload. - uploadConcurrency: 3 - # Maximum bytes fetched for text/CSV/JSON file previews (256 KiB default). - textPreviewBytes: "" - # Maximum bytes fetched for image file previews (5 MiB default). - imagePreviewBytes: "" - # Maximum bytes fetched for PDF file previews (25 MiB default). - pdfPreviewBytes: "" - # Maximum rows in a tabular file preview (Parquet/CSV). - filePreviewRows: "" - # Maximum columns in a tabular file preview. - filePreviewColumns: "" logging: level: "" @@ -205,5 +179,3 @@ trino: # Stackable SecretClass name for provisioning the Trino CA certificate. # The Secret Operator mounts ca.crt into /stackable/trino-tls. secretClass: "" - # Query result TTL in seconds (default: 1800 / 30 min). - queryTtl: "" From 245c1ca5911f9d16788fb95c53002d3ff9222617 Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Wed, 26 Aug 2026 08:30:45 +0200 Subject: [PATCH 3/7] Apply suggestions from code review Co-authored-by: Lars Francke --- deploy/helm/cockpit/templates/deployment.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index c0963454..48c2c149 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -69,35 +69,35 @@ spec: value: {{ $storageDefaults.pageSizes | default "25,50,100" | quote }} {{- if $storageDefaults.defaultPageSize }} - name: PUBLIC_STACKABLE_COCKPIT_DEFAULT_PAGE_SIZE - value: {{ $storageDefaults.defaultPageSize | quote }} + value: {{ $storageDefaults.defaultPageSize | int64 |quote }} {{- end }} - name: PUBLIC_STACKABLE_COCKPIT_MAX_RECENT_FILES - value: {{ $storageDefaults.maxRecentFiles | default 15 | quote }} + value: {{ $storageDefaults.maxRecentFiles | default 15 | int64 |quote }} - name: PUBLIC_STACKABLE_COCKPIT_UPLOAD_CONCURRENCY - value: {{ $storageDefaults.uploadConcurrency | default 3 | quote }} + value: {{ $storageDefaults.uploadConcurrency | default 3 | int64 | quote }} {{- if $storageDefaults.textPreviewBytes }} - name: STACKABLE_COCKPIT_TEXT_PREVIEW_BYTES - value: {{ $storageDefaults.textPreviewBytes | quote }} + value: {{ $storageDefaults.textPreviewBytes | int64 | quote }} {{- end }} {{- if $storageDefaults.imagePreviewBytes }} - name: STACKABLE_COCKPIT_IMAGE_PREVIEW_BYTES - value: {{ $storageDefaults.imagePreviewBytes | quote }} + value: {{ $storageDefaults.imagePreviewBytes | int64 | quote }} {{- end }} {{- if $storageDefaults.pdfPreviewBytes }} - name: STACKABLE_COCKPIT_PDF_PREVIEW_BYTES - value: {{ $storageDefaults.pdfPreviewBytes | quote }} + value: {{ $storageDefaults.pdfPreviewBytes | int64 | quote }} {{- end }} {{- if $storageDefaults.filePreviewRows }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_ROWS - value: {{ $storageDefaults.filePreviewRows | quote }} + value: {{ $storageDefaults.filePreviewRows | int64 |quote }} {{- end }} {{- if $storageDefaults.filePreviewColumns }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_COLUMNS - value: {{ $storageDefaults.filePreviewColumns | quote }} + value: {{ $storageDefaults.filePreviewColumns | int64 |quote }} {{- end }} {{- if .Values.trino.queryTtl }} - name: STACKABLE_COCKPIT_QUERY_TTL - value: {{ .Values.trino.queryTtl | quote }} + value: {{ .Values.trino.queryTtl | int64 |quote }} {{- end }} {{- if .Values.logging.level }} - name: LOG_LEVEL From 1255252004c00bd08fb321d50ae7f6c61df7c21b Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Wed, 26 Aug 2026 08:44:27 +0200 Subject: [PATCH 4/7] remove default values from helm chart --- deploy/helm/cockpit/README.md | 2 +- deploy/helm/cockpit/templates/deployment.yaml | 58 ++++++++++++------- deploy/helm/cockpit/values.yaml | 7 --- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/deploy/helm/cockpit/README.md b/deploy/helm/cockpit/README.md index d692e04c..aa47e56a 100644 --- a/deploy/helm/cockpit/README.md +++ b/deploy/helm/cockpit/README.md @@ -96,7 +96,7 @@ OIDC is the only supported auth mechanism. Disable for local testing. | `auth.oidc.clientId` | OIDC client ID. Required when enabled. | `""` | | `auth.oidc.clientSecret.secretKeyRef.name` | Name of the Secret holding the OIDC client secret. Required when enabled. | `""` | | `auth.oidc.clientSecret.secretKeyRef.key` | Key inside the Secret. | `oidc-client-secret` | -| `auth.oidc.usernameClaim` | OIDC claim used as the username for Trino impersonation. | `preferred_username` | +| `auth.oidc.usernameClaim` | OIDC claim used as the username for Trino impersonation. | `preferred_username` (application default) | ### Trino Connection Parameters diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index 48c2c149..e631a27b 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -53,47 +53,63 @@ spec: {{- end }} resources: {{- toYaml .Values.resources | nindent 12 }} + {{- $features := index .Values "features" | default dict }} + {{- $trinoFeatures := index $features "trino" | default dict }} + {{- $completion := index $trinoFeatures "completion" | default dict }} env: - name: NODE_ENV value: {{ .Values.config.nodeEnv | quote }} - name: PORT value: {{ .Values.service.targetPort | quote }} + {{- if eq (index $completion "enabled") false }} - name: STACKABLE_COCKPIT_COMPLETION_ENABLED - value: {{ .Values.features.trino.completion.enabled | quote }} - {{- $storageDefaults := index (.Values.features | default dict) "storage" | default dict }} + value: "false" + {{- end }} + {{- with (index $features "storage") }} + {{- if .enabled }} - name: STACKABLE_COCKPIT_STORAGE_BROWSER_ENABLED - value: {{ $storageDefaults.enabled | default false | quote }} + value: "true" + {{- end }} + {{- if .autoConnect }} - name: PUBLIC_STACKABLE_COCKPIT_STORAGE_AUTO_CONNECT - value: {{ $storageDefaults.autoConnect | default false | quote }} + value: "true" + {{- end }} + {{- with .pageSizes }} - name: PUBLIC_STACKABLE_COCKPIT_PAGE_SIZES - value: {{ $storageDefaults.pageSizes | default "25,50,100" | quote }} - {{- if $storageDefaults.defaultPageSize }} + value: {{ . | quote }} + {{- end }} + {{- with .defaultPageSize }} - name: PUBLIC_STACKABLE_COCKPIT_DEFAULT_PAGE_SIZE - value: {{ $storageDefaults.defaultPageSize | int64 |quote }} + value: {{ . | int64 | quote }} {{- end }} + {{- with .maxRecentFiles }} - name: PUBLIC_STACKABLE_COCKPIT_MAX_RECENT_FILES - value: {{ $storageDefaults.maxRecentFiles | default 15 | int64 |quote }} + value: {{ . | int64 | quote }} + {{- end }} + {{- with .uploadConcurrency }} - name: PUBLIC_STACKABLE_COCKPIT_UPLOAD_CONCURRENCY - value: {{ $storageDefaults.uploadConcurrency | default 3 | int64 | quote }} - {{- if $storageDefaults.textPreviewBytes }} + value: {{ . | int64 | quote }} + {{- end }} + {{- with .textPreviewBytes }} - name: STACKABLE_COCKPIT_TEXT_PREVIEW_BYTES - value: {{ $storageDefaults.textPreviewBytes | int64 | quote }} + value: {{ . | int64 | quote }} {{- end }} - {{- if $storageDefaults.imagePreviewBytes }} + {{- with .imagePreviewBytes }} - name: STACKABLE_COCKPIT_IMAGE_PREVIEW_BYTES - value: {{ $storageDefaults.imagePreviewBytes | int64 | quote }} + value: {{ . | int64 | quote }} {{- end }} - {{- if $storageDefaults.pdfPreviewBytes }} + {{- with .pdfPreviewBytes }} - name: STACKABLE_COCKPIT_PDF_PREVIEW_BYTES - value: {{ $storageDefaults.pdfPreviewBytes | int64 | quote }} + value: {{ . | int64 | quote }} {{- end }} - {{- if $storageDefaults.filePreviewRows }} + {{- with .filePreviewRows }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_ROWS - value: {{ $storageDefaults.filePreviewRows | int64 |quote }} + value: {{ . | int64 | quote }} {{- end }} - {{- if $storageDefaults.filePreviewColumns }} + {{- with .filePreviewColumns }} - name: STACKABLE_COCKPIT_FILE_PREVIEW_COLUMNS - value: {{ $storageDefaults.filePreviewColumns | int64 |quote }} + value: {{ . | int64 | quote }} + {{- end }} {{- end }} {{- if .Values.trino.queryTtl }} - name: STACKABLE_COCKPIT_QUERY_TTL @@ -151,8 +167,10 @@ spec: configMapKeyRef: name: {{ include "cockpit.fullname" . }} key: oidc-client-id + {{- with .Values.auth.oidc.usernameClaim }} - name: STACKABLE_COCKPIT_OIDC_USERNAME_CLAIM - value: {{ .Values.auth.oidc.usernameClaim | quote }} + value: {{ . | quote }} + {{- end }} {{- end }} {{- if .Values.trino.url }} - name: STACKABLE_COCKPIT_TRINO_URL diff --git a/deploy/helm/cockpit/values.yaml b/deploy/helm/cockpit/values.yaml index 8f6058aa..f59578e7 100644 --- a/deploy/helm/cockpit/values.yaml +++ b/deploy/helm/cockpit/values.yaml @@ -103,11 +103,6 @@ startupProbe: terminationGracePeriodSeconds: 30 -features: - trino: - completion: - enabled: true - logging: level: "" @@ -153,8 +148,6 @@ auth: secretKeyRef: name: "" key: oidc-client-secret - # OIDC claim used as the username for Trino impersonation. - usernameClaim: preferred_username # Optional: Pre-configure the Trino connection for all users. # When trino.url is set, the connection form is hidden and the specified From 8ef2c3d82d21f631787db5463d33b8e9f93f9c68 Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Mon, 31 Aug 2026 06:37:18 +0200 Subject: [PATCH 5/7] Apply suggestions from code review --- deploy/helm/cockpit/templates/deployment.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index e631a27b..11a313b9 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -61,14 +61,14 @@ spec: value: {{ .Values.config.nodeEnv | quote }} - name: PORT value: {{ .Values.service.targetPort | quote }} - {{- if eq (index $completion "enabled") false }} + {{- if hasKey $completion "enabled" }} - name: STACKABLE_COCKPIT_COMPLETION_ENABLED - value: "false" + value: {{ index $completion "enabled" | quote }} {{- end }} {{- with (index $features "storage") }} - {{- if .enabled }} + {{- if hasKey . "enabled" }} - name: STACKABLE_COCKPIT_STORAGE_BROWSER_ENABLED - value: "true" + value: {{ .enabled | quote }} {{- end }} {{- if .autoConnect }} - name: PUBLIC_STACKABLE_COCKPIT_STORAGE_AUTO_CONNECT From ead591bd5e9f5aefbd2d060d91b4ce996dbd5bdc Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Mon, 31 Aug 2026 13:57:38 +0200 Subject: [PATCH 6/7] update values and documentation --- deploy/helm/cockpit/README.md | 20 +++++++++++ deploy/helm/cockpit/templates/deployment.yaml | 4 +-- deploy/helm/cockpit/values.yaml | 34 +++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/deploy/helm/cockpit/README.md b/deploy/helm/cockpit/README.md index aa47e56a..a60e01c8 100644 --- a/deploy/helm/cockpit/README.md +++ b/deploy/helm/cockpit/README.md @@ -84,6 +84,25 @@ The following table lists the configurable parameters of the Cockpit chart and t | --- | --- | --- | | `config.nodeEnv` | Node.js environment | `production` | +### Feature Parameters + +All feature parameters are optional. Omit them to use the application defaults. + +| Parameter | Description | Default | +| --- | --- | --- | +| `features.trino.completion.enabled` | Enable SQL code completion. | `true` (application default) | +| `features.storage.enabled` | Show the S3/HDFS file browser and enable routes under `/storage`. | `false` (application default) | +| `features.storage.autoConnect` | Reconnect to the most recently used storage connection when visiting the storage page. | `false` (application default) | +| `features.storage.pageSizes` | Comma-separated page size options. | `25,50,100` (application default) | +| `features.storage.defaultPageSize` | Default page size; must be included in `pageSizes`. | First configured page size (application default) | +| `features.storage.maxRecentFiles` | Number of recently visited storage locations retained locally. | `15` (application default) | +| `features.storage.uploadConcurrency` | Maximum parallel requests for file uploads. | `3` (application default) | +| `features.storage.textPreviewBytes` | Maximum bytes fetched for text, CSV, and JSON previews. | `262144` (application default) | +| `features.storage.imagePreviewBytes` | Maximum bytes fetched for image previews. | `5242880` (application default) | +| `features.storage.pdfPreviewBytes` | Maximum bytes fetched for PDF previews. | `26214400` (application default) | +| `features.storage.filePreviewRows` | Maximum rows in tabular file previews. | `250` (application default) | +| `features.storage.filePreviewColumns` | Maximum columns in tabular file previews. | `50` (application default) | + ### Authentication Parameters OIDC is the only supported auth mechanism. Disable for local testing. @@ -112,6 +131,7 @@ Optional pre-configured Trino endpoint. When `trino.url` is set, the in-app conn | `trino.tls.insecure` | Skip TLS certificate verification. | `false` | | `trino.tls.caCert` | Path to a custom CA certificate file. | `""` | | `trino.tls.secretClass` | Stackable SecretClass that provides the Trino CA certificate. | `""` | +| `trino.queryTtl` | Query result TTL in seconds. | `1800` (application default) | ### Security Parameters diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index 11a313b9..cc95c958 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -70,9 +70,9 @@ spec: - name: STACKABLE_COCKPIT_STORAGE_BROWSER_ENABLED value: {{ .enabled | quote }} {{- end }} - {{- if .autoConnect }} + {{- if hasKey . "autoConnect" }} - name: PUBLIC_STACKABLE_COCKPIT_STORAGE_AUTO_CONNECT - value: "true" + value: {{ .autoConnect | quote }} {{- end }} {{- with .pageSizes }} - name: PUBLIC_STACKABLE_COCKPIT_PAGE_SIZES diff --git a/deploy/helm/cockpit/values.yaml b/deploy/helm/cockpit/values.yaml index 686b3c2c..4722381e 100644 --- a/deploy/helm/cockpit/values.yaml +++ b/deploy/helm/cockpit/values.yaml @@ -102,6 +102,36 @@ startupProbe: terminationGracePeriodSeconds: 30 +# Optional application feature overrides. All defaults below are applied by the application when omitted. +# features: +# trino: +# completion: +# # Enable SQL code completion. Default: true (application default). +# enabled: true +# storage: +# # Show the S3/HDFS file browser and enable routes under /storage. Default: false (application default). +# enabled: false +# # Reconnect to the most recently used storage connection on the storage page. Default: false (application default). +# autoConnect: false +# # Comma-separated page size options for paginated list views. Default: "25,50,100" (application default). +# pageSizes: "25,50,100" +# # Page size selected when no user preference is stored. Must be included in pageSizes. Default: first page size (application default). +# defaultPageSize: 25 +# # Number of recently visited storage locations retained in local storage. Default: 15 (application default). +# maxRecentFiles: 15 +# # Maximum parallel requests for file uploads. Default: 3 (application default). +# uploadConcurrency: 3 +# # Maximum bytes fetched for text, CSV, and JSON previews. Default: 262144 (application default). +# textPreviewBytes: 262144 +# # Maximum bytes fetched for image previews. Default: 5242880 (application default). +# imagePreviewBytes: 5242880 +# # Maximum bytes fetched for PDF previews. Default: 26214400 (application default). +# pdfPreviewBytes: 26214400 +# # Maximum rows in tabular file previews. Default: 250 (application default). +# filePreviewRows: 250 +# # Maximum columns in tabular file previews. Default: 50 (application default). +# filePreviewColumns: 50 + logging: level: "" @@ -147,6 +177,8 @@ auth: secretKeyRef: name: "" key: oidc-client-secret + # OIDC claim used as the username for Trino impersonation. Default: preferred_username (application default). + # usernameClaim: preferred_username # Optional: Pre-configure the Trino connection for all users. # When trino.url is set, the connection form is hidden and the specified @@ -171,3 +203,5 @@ trino: # Stackable SecretClass name for provisioning the Trino CA certificate. # The Secret Operator mounts ca.crt into /stackable/trino-tls. secretClass: "" + # Query result TTL in seconds. Default: 1800 (application default). + # queryTtl: 1800 From 1cab35ec02086220631de01c27e8d4366ec8d31c Mon Sep 17 00:00:00 2001 From: F3l1x1vo Date: Fri, 4 Sep 2026 12:01:42 +0200 Subject: [PATCH 7/7] implement changes from code review, remove deprecated username claim --- deploy/helm/cockpit/README.md | 1 - deploy/helm/cockpit/templates/deployment.yaml | 4 ---- deploy/helm/cockpit/values.yaml | 2 -- 3 files changed, 7 deletions(-) diff --git a/deploy/helm/cockpit/README.md b/deploy/helm/cockpit/README.md index 3a6ef907..175859de 100644 --- a/deploy/helm/cockpit/README.md +++ b/deploy/helm/cockpit/README.md @@ -115,7 +115,6 @@ OIDC is the only supported auth mechanism. Disable for local testing. | `auth.oidc.clientId` | OIDC client ID. Required when enabled. | `""` | | `auth.oidc.clientSecret.secretKeyRef.name` | Name of the Secret holding the OIDC client secret. Required when enabled. | `""` | | `auth.oidc.clientSecret.secretKeyRef.key` | Key inside the Secret. | `oidc-client-secret` | -| `auth.oidc.usernameClaim` | OIDC claim used as the username for Trino impersonation. | `preferred_username` (application default) | | `auth.oidc.extraScopes` | List of extra OIDC scopes to request in addition to `openid profile email`. Set when the claim to use as identifier in Trino is only released under a custom scope. | `[]` | ### Trino Connection Parameters diff --git a/deploy/helm/cockpit/templates/deployment.yaml b/deploy/helm/cockpit/templates/deployment.yaml index 612cce19..e9553548 100644 --- a/deploy/helm/cockpit/templates/deployment.yaml +++ b/deploy/helm/cockpit/templates/deployment.yaml @@ -167,12 +167,8 @@ spec: configMapKeyRef: name: {{ include "cockpit.fullname" . }} key: oidc-client-id - {{- with .Values.auth.oidc.usernameClaim }} - - name: STACKABLE_COCKPIT_OIDC_USERNAME_CLAIM - value: {{ . | quote }} - name: STACKABLE_COCKPIT_TRINO_USER_CLAIM value: {{ .Values.trino.userImpersonation.userClaim | quote }} - {{- end }} {{- with .Values.auth.oidc.extraScopes }} - name: STACKABLE_COCKPIT_OIDC_EXTRA_SCOPES value: {{ join " " . | quote }} diff --git a/deploy/helm/cockpit/values.yaml b/deploy/helm/cockpit/values.yaml index 661ec090..c8e6f1c7 100644 --- a/deploy/helm/cockpit/values.yaml +++ b/deploy/helm/cockpit/values.yaml @@ -177,8 +177,6 @@ auth: secretKeyRef: name: "" key: oidc-client-secret - # OIDC claim used as the username for Trino impersonation. Default: preferred_username (application default). - # usernameClaim: preferred_username # Extra OIDC scopes requested in addition to openid/profile/email. extraScopes: []