Add resizable saved-view columns - #2421
Conversation
9d9adb1 to
9eb09f6
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9eb09f6ab6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 16bbb8a14a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 028da3feea
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
|
Preview deployed
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5e177baeaf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8158f17104
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
|
/preview |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 16362ae1f5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: acd467a3c5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1daa84f3bf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/preview |
|
/preview |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5384e98df9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - name: Run Development Migrations | ||
| if: ${{ needs.version.outputs.is_dev_deploy == 'true' }} | ||
| run: | | ||
| migration_job="ex-dev-jobs-migration-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" | ||
| kubectl create job --from=cronjob/ex-dev-jobs-migration "$migration_job" --namespace "$DEV_NAMESPACE" |
There was a problem hiding this comment.
Run migrations before rolling out the new saved-view model
During a development rollout with legacy boolean columns documents, the workflow applies the Helm upgrade before starting and awaiting this migration job, so new API pods can serve saved-view requests while SavedView.Columns already expects SavedViewColumnSettings; those requests can fail deserialization until migration 5 finishes. Fresh evidence beyond the resolved seed-order issue is this newly added deployment ordering: run the migration before making the incompatible API pods available, or retain legacy deserialization during the rollout.
AGENTS.md reference: AGENTS.md:L74-L74
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4020671cd5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| helm upgrade --set "version=${VERSION}" --reuse-values --values ./k8s/ex-dev-values.yaml ex-dev --namespace $DEV_NAMESPACE ./k8s/exceptionless | ||
|
|
||
| - name: Run Development Migrations | ||
| if: ${{ needs.version.outputs.is_dev_deploy == 'true' }} |
There was a problem hiding this comment.
Run the saved-view migration for production deployments
When a production tag is deployed over an installation containing legacy boolean saved-view columns, this migration step is skipped because it is gated exclusively to is_dev_deploy; the production branch at lines 674–678 only performs the Helm upgrade, and a repository-wide search finds no production migration invocation in this workflow. Since the chart's migration CronJob uses an effectively manual schedule, production can roll out the new SavedViewColumnSettings model while the old documents remain, causing saved-view reads to fail indefinitely; create and await the versioned production migration job before upgrading the incompatible workloads.
AGENTS.md reference: AGENTS.md:L72-L74
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eaf57a709c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <DataTableColumnHeader class={getHeaderContentClass(header, headerClass)} column={header.column} | ||
| ><FlexRender {header} /></DataTableColumnHeader | ||
| > | ||
| {#if header.column.getCanResize()} |
There was a problem hiding this comment.
Disable resizing when only one data column remains
When column management hides every data column but one, getColumnStyle deliberately returns no sizing styles, yet this condition still renders an active resize handle. Mouse dragging or pressing the arrow keys therefore changes and persists the column-sizing state—and can mark the saved view modified—while the sole column remains full width and shows no visual response. Hide/disable the handle under the same single-column condition, or apply the computed size.
Useful? React with 👍 / 👎.
Summary
columnsproperty, keyed by column ID with{ visible, position, width }settings.column_orderand avoid introducing a parallelcolumn_settingsproperty.columnsvalues, fold incolumn_order, and remove the legacy field.Why
Project names are commonly truncated, and column width customizations should follow the saved view. Keeping one extensible
columnsmap also gives future column settings a stable place without adding more top-level fields.Migration and rollout
This intentionally changes the persisted and API shape of
columnsfrom boolean values to settings objects and removescolumn_order. There are no older clients to support, but existing saved-view documents must be migrated.The Migration job runs version 4 before predefined saved views are seeded. The migration is resumable, uses optimistic concurrency to protect edits made while it runs, and can be retried safely after a conflict. The updated web application may return brief saved-view errors until the migration completes.
Validation
dotnet build tests/Exceptionless.Tests/Exceptionless.Tests.csproj --no-restore -m:1— 0 warnings, 0 errorsnpm run validate— formatting, Svelte diagnostics, and lint passedgit diff --check— clean