Skip to content

Refactoring of settings - #2178

Open
davidwaroquiers wants to merge 5 commits into
datalab-org:mainfrom
Matgenix:dw/settings
Open

davidwaroquiers wants to merge 5 commits into
datalab-org:mainfrom
Matgenix:dw/settings

Conversation

@davidwaroquiers

@davidwaroquiers davidwaroquiers commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

This PR reorganizes settings.

  • Replaces the account-settings modal with a dedicated /settings page
  • Combines Account settings and Tag management under Settings navigation
  • Updates the user dropdown and "Manage tags" links to use the new Settings page
  • Preserves profile changes ewhen switching sections and warns before leaving with unsaved changes
  • Added Ctrl+S/Cmd+S profile saving and an unsaved indicator (similar to what is in the item edit page)
  • Sends verification emails only when the contact email is changed (additional fix)
  • Keeps the existing Profile, API keys, Activity, connected accounts, groups, and avatar functionality
  • Introduces a reusable responsive sidebar shared by Settings and Administration (one comment by @DianaAliabieva was to potentially "merge" the admin settings into this settings, see below)
  • Improves narrow-screen layouts, loading states, permissions handling, and accessibility
  • Improved responsiveness for screen sizes
  • Added tests

A few screenshots:
{E5B20324-75C1-45D7-A519-DAA901BD142F}

When something is modified, a small dot appears in profile and Save button becomes yellow (similar to the item edit page):
{929E3937-5F9D-4BE2-B9AA-095B1009FF2D}

For the merging of admin settings into Settings it could be something like:

Settings
 > Account
 > Tag management
[optionally, when a user is an admin]:
Administration
 > Users
 > Groups
 > Access Tokens

The Administration part would not be shown if the user is not an admin. I would anyway keep this for a follow-up PR in case.

Closes #2139

@codecov

codecov Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.48%. Comparing base (ddb057c) to head (b8bbfc7).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2178   +/-   ##
=======================================
  Coverage   82.48%   82.48%           
=======================================
  Files          91       91           
  Lines        8782     8782           
=======================================
  Hits         7244     7244           
  Misses       1538     1538           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@DianaAliabieva

Copy link
Copy Markdown
Contributor
  1. Unsaved changes

Problem:
Go to Settings → Account and change the display name.
Leave the page without clicking Save (e.g. click "Samples" in the navbar).
Come back to Settings: the new name is shown and Save is disabled, so it looks saved.
Reload the page: the old name is back, because the change never reached the server.

Solution:
Ask before leaving with unsaved changes. When hasChanges is true and the user navigates away, show a confirm dialog, e.g. "You have unsaved changes. Leave without saving?" with Leave / Stay:

// Settings.vue
async beforeRouteLeave() {
if (!this.$refs.accountSettings?.hasChanges) return true;
return await DialogService.confirm({
title: "Unsaved changes",
message: "You have unsaved changes. Leave without saving?",
type: "warning",
});
}

Also add a beforeunload listener so the browser asks before closing or reloading the tab

@DianaAliabieva DianaAliabieva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is only one comment, that is it! Thanks!

@davidwaroquiers

Copy link
Copy Markdown
Member Author
  1. Unsaved changes

Problem: Go to Settings → Account and change the display name. Leave the page without clicking Save (e.g. click "Samples" in the navbar). Come back to Settings: the new name is shown and Save is disabled, so it looks saved. Reload the page: the old name is back, because the change never reached the server.

Solution: Ask before leaving with unsaved changes. When hasChanges is true and the user navigates away, show a confirm dialog, e.g. "You have unsaved changes. Leave without saving?" with Leave / Stay:

// Settings.vue async beforeRouteLeave() { if (!this.$refs.accountSettings?.hasChanges) return true; return await DialogService.confirm({ title: "Unsaved changes", message: "You have unsaved changes. Leave without saving?", type: "warning", }); }

Also add a beforeunload listener so the browser asks before closing or reloading the tab

Fixed

@davidwaroquiers
davidwaroquiers marked this pull request as ready for review October 9, 2026 15:25
@davidwaroquiers

Copy link
Copy Markdown
Member Author

This should be ready for review @ml-evs

Preview is available on our preview server (if you want to have a first look there if you have access, I still don't know if you do have access or not :)

This branch has not been deployed

No deployments
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.

Tag table should have a button to find it, and clicking on a tag should show all entries with that tag

2 participants