Skip to content

Split up Advanced tab into Attributes Attachments#13224

Open
simonzachau wants to merge 8 commits intokeepassxreboot:developfrom
simonzachau:feature/split-advanced-tab
Open

Split up Advanced tab into Attributes Attachments#13224
simonzachau wants to merge 8 commits intokeepassxreboot:developfrom
simonzachau:feature/split-advanced-tab

Conversation

@simonzachau
Copy link
Copy Markdown

@simonzachau simonzachau commented Apr 6, 2026

This PR restructures the "Advanced" tab in both the entry preview pane and the entry edit dialog by splitting it into dedicated pages for better discoverability and clearer organization. By splitting the "Advanced" tab into dedicated pages that each serve a single purpose, we make the UI more intuitive and consistent with how other pages (Auto-Type, Properties, History) each handle one concern.

Entry Preview Pane (bottom detail panel)

The single "Advanced" tab that combined attributes and attachments side-by-side is replaced with two separate tabs:

  • Attributes — shows custom key-value fields with reveal toggles for protected values
  • Attachments — shows file attachments

Each tab is independently enabled based on whether the entry has custom attributes or attachments, rather than the previous behavior where one tab was enabled if either existed.

Entry Edit Dialog (left sidebar menu)

The "Advanced" page, which bundled four unrelated concerns (attributes, attachments, colors, and an exclude-from-reports checkbox), is replaced with dedicated pages:

  • General (renamed from "Entry" to be consistent with the entry preview pane tab title) — core fields (title, username, password, URL, tags, expiry, notes) plus the exclude-from-reports checkbox which was moved here from Advanced
  • Attributes — custom key-value field management (splitter with list view, text editor, and action buttons). Uses a new format-list-bulleted-square MDI icon
  • Attachments — file attachment management. Uses the existing paperclip icon
  • Style (replaces "Icon") — combines icon selection with foreground/background color pickers, grouping all visual appearance settings together. Uses a new palette MDI icon

This PR was developed with assistance from Claude (Anthropic, claude-opus-4-6 model).

Screenshots

Before After
Preview Pane Tabs Screenshot 2026-04-06 at 03 05 34 Screenshot 2026-04-06 at 03 04 29
Edit Dialog Menu Screenshot 2026-04-06 at 03 08 44 Screenshot 2026-04-06 at 03 09 54
More Images https://github.com/keepassxreboot/keepassxc/pull/13224/changes

Testing strategy

  • Built the project successfully on macOS (Apple Silicon) with cmake and verified no compiler errors or warnings related to the changes
  • Launched the application and manually verified:
    • Opening a database and selecting an entry shows separate Attributes and Attachments tabs in the preview pane, each independently enabled/disabled based on entry content
    • Editing an entry shows the new sidebar layout: General, Attributes, Attachments, Style, Auto-Type, Properties, History
    • Adding, editing, protecting, and revealing custom attributes works on the Attributes page
    • Adding and previewing file attachments works on the Attachments page
    • Foreground and background color pickers work on the Style page and colors persist after saving
    • Icon selection (default and custom) works on the Style page below the color controls
    • The exclude-from-reports checkbox works on the General page and persists after saving
    • Editing a group still shows the original "Icon" page (not "Style"), confirming the shared EditWidgetIcons widget is unaffected
  • Updated existing tests in TestGui.cpp:
    • Page::Advanced references changed to Page::Attributes for attribute tests
    • Removed unnecessary switchToPage calls for controls now on the General page
  • Added new tests:
    • Switching to Page::Style and verifying color controls (fgColorButton, fgColorCheckBox, bgColorButton, bgColorCheckBox) are found and functional
    • Switching to Page::Attachments and verifying the attachments widget is found and visible

Type of change

  • ✅ Refactor (significant modification to existing code)
  • ✅ Documentation (non-code change)

Replace the single Advanced tab in the entry preview pane with two
separate tabs for Attributes and Attachments. Each tab is independently
enabled based on whether the entry has custom attributes or attachments.
…Style

Replace the Advanced page in the entry edit dialog with three pages:
- Attributes: custom key-value fields (format-list-bulleted-square icon)
- Attachments: file attachments (paperclip icon)
- Style: icon selection and foreground/background color pickers (palette icon)

Rename the Entry page to General. Move the exclude-from-reports checkbox
to the General page. Add new MDI icons for Attributes and Style pages.
Update Page::Advanced references to Page::Attributes for attribute
tests. Remove unnecessary page switches for controls now on General.
Restructure DatabaseOperations.adoc to match the new UI layout:
- Remove Entry Icons section from Entry Handling (now part of Style)
- Rename Additional Attributes to Attributes
- Replace Foreground and Background Color section with Style, combining
  icon selection and color picker documentation
- Update Advanced Entry Handling intro paragraph

Add tests for switching to the Attachments and Style pages with
verification that the color controls and attachments widget are found.
Replace obsolete translation strings with new ones to match the
restructured entry edit dialog: Entry→General, Advanced→Attributes,
Icon→Style. Add new strings for Attachments, color controls, and the
exclude-from-reports label. Remove strings for deleted UI elements.
@droidmonkey
Copy link
Copy Markdown
Member

droidmonkey commented Apr 6, 2026

Why is this desirable? The ideal state is to merge advanced attributes into the general tab and create more a flow to editing an entry. This is consistent with entry templates / layouts that we have been wanting to implement. Splitting the tabs does not bring us closer to that state and this appears to be unnecessary.

@simonzachau
Copy link
Copy Markdown
Author

simonzachau commented Apr 6, 2026

Why is this desirable? The ideal state is to merge advanced attributes into the general tab and create more a flow to editing an entry. This is consistent with entry templates / layouts that we have been wanting to implement. Splitting the tabs does not bring us closer to that state and this appears to be unnecessary.

Thanks for the quick reaction. I looked for existing issues on the matter and couldn't find any. Would you please link one?

My attempt was to try out how to make it more consistent and intuitive. "Advanced" currently feels like a random selection of fields that are not more or less advanced than certain other fields and the complexity of the sublevel felt cumbersome to me.

Happy to iterate in a way that makes it more helpful for the vision.

@droidmonkey
Copy link
Copy Markdown
Member

#8228 and #4244

@simonzachau
Copy link
Copy Markdown
Author

#8228 and #4244

I read through both and to me they look largely unrelated to this PR. Neither issue solves the random hierarchy of the Advanced section.

#8228 is about templates, ie. what fields to show when you pick a template. We can still hide custom attributes or attachments fields when a template will be defined as such, and move them altogether onto one page. The need for logical sections, either to scroll or to click through, will stay.

#4244 is mostly about options on icon sizes and moving the preview pane from the bottom to the right hand side. I think that would be a very good idea as column layouts have been on a forefront for quite a while now and users expect and welcome a certain familiarity. Would love to implement that one next. Still, if we keep the current horizontal layout as an option, the current solution will be helpful, and in the vertical preview column as well, just that tabs will look/work different.

I think this PR serves well as a - not quite as radical but still progressive - stepping stone for future UI changes. Users seem to be longing for UI improvements both in my experience and from what I read in the linked issues.

@droidmonkey
Copy link
Copy Markdown
Member

I am personally not interested in merging this, tbh.

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.

2 participants