Skip to content

Common CSS styles for spacing, padding, gaps and font-size - #16708

Merged
Siedlerchr merged 9 commits into
mainfrom
common-style
Sep 6, 2026
Merged

Common CSS styles for spacing, padding, gaps and font-size#16708
Siedlerchr merged 9 commits into
mainfrom
common-style

Conversation

@Maran23

@Maran23 Maran23 commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

Decreases the amount of CSS styles.
That is around ~600 lines less CSS code, because all of them can now be expressed with some common style classes.

Beside less CSS code, the other advantage is that we have some rules and common spacings. So the UI will look more unified.
From my experience, many contributors added more and more styleClasses just for some padding. They now should use the common styleClasses (or we should tell them in the PR review otherwise).

Steps to test

The whole JabRef application is affected

Related issues and pull requests

Closes #16042

AI usage

Reviewed by AI.

Checklist

  • I own the copyright of the code submitted and I license it under the MIT license
  • If AI tools were used, I disclosed them in the "AI usage" section and reviewed, understood, and take full ownership of all AI-generated code
  • I manually tested my changes in running JabRef (always required)
  • I added JUnit tests for changes (if applicable)
  • [.] I added screenshots in the PR description (if change is visible to the user)
  • I added one sentence (max 20 words) to CHANGELOG.md describing the change from the user's point of view (if the change is visible to the user)
  • I checked the user documentation for up to dateness and submitted a pull request to our user documentation repository

@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Standardize JavaFX UI styling with reusable utility classes

✨ Enhancement 🕐 40+ Minutes

Grey Divider

AI Description

• Adds reusable, font-scaled utilities for spacing, typography, colors, and alignment.
• Migrates Java and FXML views from one-off styles to common classes.
• Removes duplicated component CSS to unify presentation and reduce stylesheet maintenance.
Diagram

graph TD
  T["Theme tokens"] --> U["Utility classes"] --> J["Java views"] --> C["JavaFX controls"]
  U --> F["FXML views"] --> C
  U --> M["Markdown renderer"] --> C
  U --> X["Cell factories"] --> C
Loading
High-Level Assessment

The utility-class approach is appropriate because JavaFX CSS lacks a mature composition or mixin mechanism. Retaining one-off component classes or using inline styles would preserve duplication and weaken the shared spacing scale; review should instead focus on visual regression testing and utility naming consistency.

Files changed (80) +462 / -953

Enhancement (3) +227 / -730
ViewModelListCellFactory.javaSupport static multi-class list-cell styling +13/-7

Support static multi-class list-cell styling

• Replaces item-dependent single-class callbacks with a list supplier applied once when each cell is created.

jabgui/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java

ViewModelTreeTableCellFactory.javaSupport static multi-class tree-cell styling +15/-7

Support static multi-class tree-cell styling

• Adds a list supplier for applying multiple style classes once during tree-table cell creation.

jabgui/src/main/java/org/jabref/gui/util/ViewModelTreeTableCellFactory.java

jabref-base.cssIntroduce the shared JavaFX utility system +199/-716

Introduce the shared JavaFX utility system

• Adds font-scaled utilities for typography, semantic text colors, padding, spacing, gaps, alignment, and surfaces. Removes duplicated component declarations and preserves component-specific appearance rules.

jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css

Refactor (77) +235 / -223
AiChatView.javaApply shared padding to follow-up questions +1/-1

Apply shared padding to follow-up questions

• Adds the common compact padding utility to example-question buttons while retaining their visual component style.

jabgui/src/main/java/org/jabref/gui/ai/chat/AiChatView.java

EntryChangeDetailsView.javaCompose change headers from shared utilities +2/-2

Compose change headers from shared utilities

• Replaces the dedicated library-change header style with common heading and padding classes.

jabgui/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java

PreviewWithSourceTab.javaApply shared padding to source preview +1/-0

Apply shared padding to source preview

• Adds standardized padding to the disabled BibTeX code area.

jabgui/src/main/java/org/jabref/gui/collab/entrychange/PreviewWithSourceTab.java

MetadataChangeDetailsView.javaStandardize metadata change typography and spacing +4/-4

Standardize metadata change typography and spacing

• Migrates section headers, comparison headers, and the diff legend to shared typography, color, and padding utilities.

jabgui/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java

PreambleChangeDetailsView.javaStandardize preamble change header +1/-1

Standardize preamble change header

• Replaces the section-specific header class with shared heading and top-padding utilities.

jabgui/src/main/java/org/jabref/gui/collab/preamblechange/PreambleChangeDetailsView.java

BibTexStringAddDetailsView.javaStandardize added-string header +1/-1

Standardize added-string header

• Uses shared heading and top-padding utilities for the change section header.

jabgui/src/main/java/org/jabref/gui/collab/stringadd/BibTexStringAddDetailsView.java

BibTexStringChangeDetailsView.javaStandardize modified-string header +1/-1

Standardize modified-string header

• Uses shared heading and top-padding utilities for the change section header.

jabgui/src/main/java/org/jabref/gui/collab/stringchange/BibTexStringChangeDetailsView.java

BibTexStringDeleteDetailsView.javaStandardize deleted-string header +1/-1

Standardize deleted-string header

• Uses shared heading and top-padding utilities for the change section header.

jabgui/src/main/java/org/jabref/gui/collab/stringdelete/BibTexStringDeleteDetailsView.java

AllFieldsTab.javaMigrate all-fields layout to spacing utilities +9/-7

Migrate all-fields layout to spacing utilities

• Applies common padding, spacing, and gap classes throughout the all-fields editor. Explicitly removes inherited padding for its flush list layout.

jabgui/src/main/java/org/jabref/gui/entryeditor/AllFieldsTab.java

FieldsEditorTab.javaStandardize editor grid gaps and padding +1/-1

Standardize editor grid gaps and padding

• Adds shared gap and padding utilities to the entry editor grid.

jabgui/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java

LatexCitationsTab.javaCompose citation states from typography utilities +7/-6

Compose citation states from typography utilities

• Migrates directory, empty-state, and error-state formatting to shared padding, heading, bold, italic, and monospace classes.

jabgui/src/main/java/org/jabref/gui/entryeditor/LatexCitationsTab.java

RelatedArticlesTab.javaStandardize related-articles presentation +8/-6

Standardize related-articles presentation

• Replaces bespoke headings, descriptions, indentation, and privacy-notice spacing with common utility classes.

jabgui/src/main/java/org/jabref/gui/entryeditor/RelatedArticlesTab.java

SourceTab.javaUse shared source-editor font sizing +1/-1

Use shared source-editor font sizing

• Moves the source code area's font size to the common relative type scale.

jabgui/src/main/java/org/jabref/gui/entryeditor/SourceTab.java

BibEntryView.javaAdopt shared entry typography scale +6/-6

Adopt shared entry typography scale

• Maps entry metadata to shared heading, bold, and padding utilities instead of role-specific font rules.

jabgui/src/main/java/org/jabref/gui/entryeditor/citationrelationtab/BibEntryView.java

CitationRelationsTab.javaStandardize citation relation controls +7/-6

Standardize citation relation controls

• Migrates errors, metrics, action icons, entry rows, and labels to common typography and padding utilities.

jabgui/src/main/java/org/jabref/gui/entryeditor/citationrelationtab/CitationRelationsTab.java

ErrorConsoleView.javaCompose error-console cell spacing +3/-2

Compose error-console cell spacing

• Applies shared spacing and padding utilities directly to log cell containers.

jabgui/src/main/java/org/jabref/gui/errorconsole/ErrorConsoleView.java

FileSelectionPage.javaStandardize file-selection progress layout +1/-1

Standardize file-selection progress layout

• Replaces the dedicated progress-pane class with common centering and padding utilities.

jabgui/src/main/java/org/jabref/gui/externalfiles/FileSelectionPage.java

ImportResultsPage.javaStandardize import progress layout +1/-1

Standardize import progress layout

• Replaces the dedicated progress-pane class with common centering and padding utilities.

jabgui/src/main/java/org/jabref/gui/externalfiles/ImportResultsPage.java

LinkedFilesEditor.javaUse shared linked-file row padding +1/-1

Use shared linked-file row padding

• Replaces the linked-files alignment class with standardized vertical padding.

jabgui/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java

ImportEntriesDialog.javaStandardize imported-entry row styling +2/-2

Standardize imported-entry row styling

• Uses shared icon sizing and row padding for import selection controls.

jabgui/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java

WebSearchPaneView.javaUse shared search-mode font size +1/-1

Use shared search-mode font size

• Adds the common compact font-size utility to the mode indicator.

jabgui/src/main/java/org/jabref/gui/importer/fetcher/WebSearchPaneView.java

DeleteFileAction.javaUse shared delete-dialog padding +1/-1

Use shared delete-dialog padding

• Moves delete-dialog header padding into the common spacing scale.

jabgui/src/main/java/org/jabref/gui/linkedfile/DeleteFileAction.java

MainTable.javaStandardize empty-table typography +3/-3

Standardize empty-table typography

• Applies shared heading and bold utilities to empty-table actions and messaging.

jabgui/src/main/java/org/jabref/gui/maintable/MainTable.java

MainTableColumnFactory.javaUse shared muted header color +1/-1

Use shared muted header color

• Replaces the index header's dedicated style with the common muted-text utility.

jabgui/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java

MultiMergeEntriesView.javaApply shared merge-header padding +1/-1

Apply shared merge-header padding

• Adds standardized padding to multi-merge source header toggles.

jabgui/src/main/java/org/jabref/gui/mergeentries/multiwaymerge/MultiMergeEntriesView.java

ThreeWayMergeCell.javaApply shared merge-cell padding +2/-1

Apply shared merge-cell padding

• Adds a reusable padding class to every three-way merge field cell.

jabgui/src/main/java/org/jabref/gui/mergeentries/threewaymerge/cell/ThreeWayMergeCell.java

NewEntryView.javaUse shared generate-button padding +1/-1

Use shared generate-button padding

• Moves the generate button's spacing into the common padding scale.

jabgui/src/main/java/org/jabref/gui/newentry/NewEntryView.java

PreferencesDialogView.javaUse shared preference-content padding +1/-1

Use shared preference-content padding

• Replaces the preferences-tab spacing class with a common padding utility.

jabgui/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java

CitationKeyPatternTab.javaStandardize citation-key option indentation +2/-2

Standardize citation-key option indentation

• Uses the common left-padding utility for nested citation-key settings.

jabgui/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java

CustomEntryTypesTab.javaStandardize custom-type section headers +2/-2

Standardize custom-type section headers

• Migrates entry-type and field headers to shared heading and top-padding classes.

jabgui/src/main/java/org/jabref/gui/preferences/customentrytypes/CustomEntryTypesTab.java

PreferencesFormBuilder.javaGenerate utility-based preference headers +1/-1

Generate utility-based preference headers

• Ensures form-builder section headers consistently use the shared type and spacing scale.

jabgui/src/main/java/org/jabref/gui/preferences/forms/PreferencesFormBuilder.java

KeyBindingsTab.javaCompose keybinding cell utility classes +4/-2

Compose keybinding cell utility classes

• Configures action icon cells with shared right alignment and padding through the new multi-class factory API.

jabgui/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java

PreviewTab.javaStandardize preview editor and headers +2/-1

Standardize preview editor and headers

• Applies zero padding to the code editor and shared heading spacing to section labels.

jabgui/src/main/java/org/jabref/gui/preferences/preview/PreviewTab.java

TableTab.javaStandardize table preference indentation +2/-2

Standardize table preference indentation

• Replaces dedicated indentation styling with the shared left-padding utility.

jabgui/src/main/java/org/jabref/gui/preferences/table/TableTab.java

WebSearchTab.javaMigrate web-search layout utilities +3/-3

Migrate web-search layout utilities

• Uses common gaps, padding, spacing, and alignment for toggles, fetcher rows, and configuration buttons.

jabgui/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.java

SidePaneComponent.javaUse shared side-pane header padding +1/-1

Use shared side-pane header padding

• Moves side-pane header spacing into the common padding scale.

jabgui/src/main/java/org/jabref/gui/sidepane/SidePaneComponent.java

CitationsDisplay.javaUse shared citation-context padding +1/-1

Use shared citation-context padding

• Adds standardized padding to citation context boxes while preserving their visual style.

jabgui/src/main/java/org/jabref/gui/texparser/CitationsDisplay.java

IconValidationDecorator.javaUse semantic validation color utilities +1/-1

Use semantic validation color utilities

• Replaces dedicated warning and error icon classes with shared semantic text-color utilities.

jabgui/src/main/java/org/jabref/gui/util/IconValidationDecorator.java

MarkdownTextFlow.javaMap Markdown onto shared typography +8/-8

Map Markdown onto shared typography

• Uses shared heading, bold, italic, and monospace utilities while retaining code-specific visual classes.

jabgui/src/main/java/org/jabref/gui/util/component/MarkdownTextFlow.java

WalkthroughRenderer.javaMigrate walkthrough layout to utilities +12/-12

Migrate walkthrough layout to utilities

• Composes tooltip, panel, content, action, text, and button layouts from shared spacing and typography classes.

jabgui/src/main/java/org/jabref/gui/walkthrough/WalkthroughRenderer.java

WelcomeTab.javaCompose welcome layout from shared utilities +21/-21

Compose welcome layout from shared utilities

• Migrates welcome typography, columns, sections, links, community content, and version details to reusable classes.

jabgui/src/main/java/org/jabref/gui/welcome/WelcomeTab.java

DonationProvider.javaStandardize donation toast composition +7/-7

Standardize donation toast composition

• Uses shared font, spacing, padding, and alignment utilities for toast content and actions.

jabgui/src/main/java/org/jabref/gui/welcome/components/DonationProvider.java

PushToApplicationCell.javaUse shared application-cell padding +1/-1

Use shared application-cell padding

• Moves push-application row padding into the common spacing scale.

jabgui/src/main/java/org/jabref/gui/welcome/components/PushToApplicationCell.java

QuickSettings.javaStandardize quick-settings layout +4/-4

Standardize quick-settings layout

• Composes section headings, content spacing, and action-button geometry from common utility classes.

jabgui/src/main/java/org/jabref/gui/welcome/components/QuickSettings.java

Walkthroughs.javaStandardize walkthrough-list layout +4/-4

Standardize walkthrough-list layout

• Uses shared section, heading, list spacing, button padding, and alignment utilities.

jabgui/src/main/java/org/jabref/gui/welcome/components/Walkthroughs.java

AiPrivacyNotice.fxmlMigrate AI privacy notice styles +3/-3

Migrate AI privacy notice styles

• Applies shared padding and heading utilities to the AI privacy layout.

jabgui/src/main/resources/org/jabref/gui/ai/AiPrivacyNotice.fxml

AiChatStatus.fxmlStandardize AI chat status headings +4/-4

Standardize AI chat status headings

• Replaces dedicated title and section classes with the shared heading and spacing scale.

jabgui/src/main/resources/org/jabref/gui/ai/chat/AiChatStatus.fxml

DocumentViewer.fxmlApply shared zero-padding utility +1/-1

Apply shared zero-padding utility

• Moves the document viewer pane's zero padding from a scoped selector into FXML.

jabgui/src/main/resources/org/jabref/gui/documentviewer/DocumentViewer.fxml

ClearContentTab.fxmlStandardize clear-content layout +2/-2

Standardize clear-content layout

• Adds common pane spacing and converts the section header to shared utilities.

jabgui/src/main/resources/org/jabref/gui/edit/automaticfieldeditor/clearcontent/ClearContentTab.fxml

CopyOrMoveFieldContentTab.fxmlStandardize copy-or-move field layout +4/-4

Standardize copy-or-move field layout

• Migrates pane, header, grid, and action-row geometry to reusable spacing and alignment classes.

jabgui/src/main/resources/org/jabref/gui/edit/automaticfieldeditor/copyormovecontent/CopyOrMoveFieldContentTab.fxml

EditFieldContentTab.fxmlStandardize field-content editor layout +4/-4

Standardize field-content editor layout

• Migrates pane, header, and action-row geometry to common spacing and alignment utilities.

jabgui/src/main/resources/org/jabref/gui/edit/automaticfieldeditor/editfieldcontent/EditFieldContentTab.fxml

RenameFieldTab.fxmlStandardize rename-field layout +3/-3

Standardize rename-field layout

• Migrates pane, header, and action-row styling to shared spacing and alignment utilities.

jabgui/src/main/resources/org/jabref/gui/edit/automaticfieldeditor/renamefield/RenameFieldTab.fxml

EntryEditor.fxmlCompose entry-editor navigation styles +3/-3

Compose entry-editor navigation styles

• Applies shared label typography and splits special navigation button behavior into composable style classes.

jabgui/src/main/resources/org/jabref/gui/entryeditor/EntryEditor.fxml

FileAnnotationTab.fxmlStandardize annotation editor geometry +1/-1

Standardize annotation editor geometry

• Adds shared grid-gap and padding utilities to the annotation tab.

jabgui/src/main/resources/org/jabref/gui/entryeditor/fileannotationtab/FileAnnotationTab.fxml

ErrorConsole.fxmlStandardize error-console layout styles +2/-2

Standardize error-console layout styles

• Uses shared zero padding and header typography while retaining informational surface styling.

jabgui/src/main/resources/org/jabref/gui/errorconsole/ErrorConsole.fxml

JournalInfo.fxmlAdopt shared journal typography scale +5/-5

Adopt shared journal typography scale

• Maps journal title, metric labels, and h-index values to common font-size utilities.

jabgui/src/main/resources/org/jabref/gui/fieldeditors/journalinfo/JournalInfo.fxml

GroupDialog.fxmlStandardize group section heading +1/-1

Standardize group section heading

• Replaces the group dialog's section class with shared heading and top-padding utilities.

jabgui/src/main/resources/org/jabref/gui/groups/GroupDialog.fxml

AboutDialog.fxmlMigrate About dialog spacing and typography +12/-12

Migrate About dialog spacing and typography

• Replaces numerous one-off padding and heading classes with the shared utility scale.

jabgui/src/main/resources/org/jabref/gui/help/AboutDialog.fxml

ImportEntriesDialog.fxmlUse shared import source font size +1/-1

Use shared import source font size

• Applies the common compact font-size utility to imported BibTeX source.

jabgui/src/main/resources/org/jabref/gui/importer/ImportEntriesDialog.fxml

ConstantsProperties.fxmlStandardize constants section heading +1/-1

Standardize constants section heading

• Uses shared heading and top-padding utilities for string constants.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/constants/ConstantsProperties.fxml

ContentSelector.fxmlStandardize content-selector headings +2/-2

Standardize content-selector headings

• Migrates field-name and keyword headers to the common heading scale.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/contentselectors/ContentSelector.fxml

GeneralProperties.fxmlStandardize general-property headings +2/-2

Standardize general-property headings

• Uses common heading and top-padding utilities for file-directory and general sections.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/general/GeneralProperties.fxml

KeyPatternProperties.fxmlStandardize key-pattern heading +1/-1

Standardize key-pattern heading

• Migrates the key-pattern section header to shared typography and spacing.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/keypattern/KeyPatternProperties.fxml

PreambleProperties.fxmlStandardize preamble property heading +1/-1

Standardize preamble property heading

• Migrates the preamble section header to shared typography and spacing.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/preamble/PreambleProperties.fxml

SavingProperties.fxmlStandardize saving-property headings +4/-4

Standardize saving-property headings

• Migrates all saving configuration section headers to shared heading and top-padding utilities.

jabgui/src/main/resources/org/jabref/gui/libraryproperties/saving/SavingProperties.fxml

MultiMergeEntries.fxmlMigrate multi-merge spacing utilities +6/-6

Migrate multi-merge spacing utilities

• Replaces generic box and grid classes with explicit shared spacing and gap utilities.

jabgui/src/main/resources/org/jabref/gui/mergeentries/multiwaymerge/MultiMergeEntries.fxml

NewEntry.fxmlAlign jump-button padding to scale +1/-1

Align jump-button padding to scale

• Moves the jump-to-entry control from a one-off 15-pixel class to the 16-step utility.

jabgui/src/main/resources/org/jabref/gui/newentry/NewEntry.fxml

StyleSelectDialog.fxmlStandardize style-selection typography +8/-8

Standardize style-selection typography

• Migrates section headings and current-style emphasis to shared heading, padding, and bold utilities.

jabgui/src/main/resources/org/jabref/gui/openoffice/StyleSelectDialog.fxml

PreferencesDialog.fxmlStandardize preferences title heading +1/-1

Standardize preferences title heading

• Replaces the dedicated title class with shared heading and bottom-padding utilities.

jabgui/src/main/resources/org/jabref/gui/preferences/PreferencesDialog.fxml

ApiKeyDialog.fxmlStandardize API-key dialog padding +2/-2

Standardize API-key dialog padding

• Uses shared content and button padding utilities instead of dialog-specific spacing classes.

jabgui/src/main/resources/org/jabref/gui/preferences/websearch/ApiKeyDialog.fxml

ManageStudyDefinition.fxmlStandardize study-management panes and warnings +6/-6

Standardize study-management panes and warnings

• Replaces tab padding and warning styling with shared spacing and semantic color utilities.

jabgui/src/main/resources/org/jabref/gui/slr/ManageStudyDefinition.fxml

EntryTableConfigurationDialog.fxmlStandardize entry-table dialog layout +1/-1

Standardize entry-table dialog layout

• Adds common padding and spacing utilities to the quick-settings dialog container.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/EntryTableConfigurationDialog.fxml

LargeLibraryOptimizationDialog.fxmlStandardize optimization dialog layout +2/-2

Standardize optimization dialog layout

• Applies shared container spacing and nested checkbox indentation.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/LargeLibraryOptimizationDialog.fxml

MainFileDirectoryDialog.fxmlStandardize directory dialog layout +1/-1

Standardize directory dialog layout

• Adds common padding and spacing utilities to the quick-settings dialog container.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/MainFileDirectoryDialog.fxml

OnlineServicesDialog.fxmlStandardize online-services dialog layout +2/-2

Standardize online-services dialog layout

• Uses shared dialog padding and fetcher-list spacing utilities.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/OnlineServicesDialog.fxml

PushApplicationDialog.fxmlStandardize push-application dialog layout +1/-1

Standardize push-application dialog layout

• Adds common padding and spacing utilities to the quick-settings dialog container.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/PushApplicationDialog.fxml

ThemeDialog.fxmlStandardize theme dialog layout +1/-1

Standardize theme dialog layout

• Adds common padding and spacing utilities to the quick-settings dialog container.

jabgui/src/main/resources/org/jabref/gui/welcome/quicksettings/ThemeDialog.fxml

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. error-message styling removed ✓ Resolved 📎 Requirement gap ≡ Correctness
Description
The PR deletes the .error-message rule while the study-definition validationHeaderLabel still
uses that class, causing the blocking “In order to proceed” header to lose its danger color and
render only in bold whenever validation prevents proceeding. Replace the stale class with the new
shared text-danger utility to preserve the visual error state.
Code

jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css[L503-506]

-.error-message {
-    -fx-fill: -color-danger;
-    -fx-text-fill: -color-danger;
-}
Evidence
Rule 2 requires affected elements to use the shared style set consistently. The FXML still assigns
error-message to the validation header and binds its visibility to a non-empty validation message,
but the PR removes the only CSS rule that supplied its danger text/fill color; the replacement
.text-danger utility exists in the new stylesheet but is not applied to the header.

Maintain Consistent UI Spacing and Styling
jabgui/src/main/resources/org/jabref/gui/slr/ManageStudyDefinition.fxml[289-293]
jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css[86-94]
jabgui/src/main/resources/org/jabref/gui/slr/ManageStudyDefinition.fxml[283-293]
jabgui/src/main/java/org/jabref/gui/slr/ManageStudyDefinitionView.java[304-306]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The `.error-message` CSS rule was removed, but `ManageStudyDefinition.fxml` still assigns that class to `validationHeaderLabel`, causing the blocking validation header to lose its danger color. Replace the stale class with the shared `text-danger` utility so validation errors retain their visual indication.
## Issue Context
The header becomes visible when the validation message is non-empty and tells users why they cannot proceed. Apply the newly introduced shared `text-danger` utility while retaining the existing `bold` class.
## Fix Focus Areas
- jabgui/src/main/resources/org/jabref/gui/slr/ManageStudyDefinition.fxml[289-293]
- jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css[503-506]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Changelog entry is missing ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
This PR visibly changes spacing and typography throughout the application but adds no user-facing
entry under Unreleased. Rule 33 requires one matching We changed sentence of at most 20 words
with the existing issue link.
Code

jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css[R48-51]

+ * These are the only style classes that are allowed to declare spacing and
+ * typography. Every other style class in this file describes what a component
+ * *looks* like (fills, borders, radii, effects) and leaves how much room it
+ * takes up to the utilities below, applied from FXML or Java.
Evidence
Rule 33 requires a strictly formatted changelog entry for user-visible changes. The new stylesheet
explicitly centralizes application spacing and typography, while the branch's Unreleased changelog
has no entry for issue #16042.

AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes: AGENTS.md: Add Strictly Formatted Changelog Entries Only for User-Visible Changes
jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css[45-64]
CHANGELOG.md[10-12]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The application-wide visual styling change has no changelog entry.
## Issue Context
Add one user-focused sentence of at most 20 words under `Unreleased` → `Changed`, beginning with `We changed` and linking issue `#16042`.
## Fix Focus Areas
- CHANGELOG.md[61-64]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can show, collapse, or hide each part of a finding: code, evidence, and all

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment on lines 25 to 27
Label header = new Label(Localization.lang("The following metadata changed:"));
header.getStyleClass().add("sectionHeader");
header.getStyleClass().addAll("h4", "padding-top-12");
container.getChildren().add(header);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not so sure if every change is going in the right direction here. As i understand it, we abandon here semantic use of style classes in favor of pure direct styling. I' m no expert here, but shouldn't we keep the semantic style classes for the controls and map in a jabref.css the styling classes to the semantic classes?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I would not recommend that. This new notation has multiple advantages:

  • Now, we can directly see that this is a header with a bigger font size and padding on top.
    Before, we need to lookup sectionHeader in CSS.
  • Now everything that is styled uses the same set of styles. So it should be more consistent. What is one header has a padding of 9, another one has 11, another has 10, another has 8? While we can still have very different paddings with this change, it is now much harder to use completely different values as we provide a fixed amount (and we should decrease that - in my apps, I usually only use a padding of 2,4, rarely 8) and that works pefectly fine.
  • Last one: We now use em everywhere and there is no more px and new contributions should reuse that styles, so they can not make this wrong and add another new styleClass, as example subHeader, use a different font size and lets say 6px padding.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Mh, my thinking was more about "reviewability". We now always have to keep in mind that these particular headers have to be h4 and padding-top-12. These headers will repeat everywhere in the app. A contributor who does not care about how an app looks will do h3 maybe, bc he thinks his header is most important, or h5 bc he is a minimalist. We don't see it in review or have to look it up if it's the right h size.

This is like in word formatting directly the whole text instead of using formatting templates. Its also not really the latex approach. Imho that should stay semantic with a mapping css. Maybe other @JabRef/developers have a different take on this?

@Maran23 Maran23 Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maybe as a reference, in the web app world, most developers will use tailwind that work the exact same way I propose here.

The concerns you mentioned are valid, and also exist with tailwind. The solution is usually to write a already styled and ready to use component. So in our case, we could write a SectionHeader or SectionLabel class and reuse that.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I have mixed feelings about this. But maybe I lean slightly more towards semantic reuse - is it possible to keep them "while" decreasing the number of css styles (did not go through the entire PR)?
But that may be a bit of bias because I usually don't work much with UI, so I don't think in terms of values as much as I think in terms of semantics. applyPadding(DEFAULT_HEADER_PADDING) makes code much easier for me to interpret compared to applyPadding(12), for example. If I really need to tweak it, I just look it up.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Maybe for the few semantic cases, we could also extract a constant with the List of styleClasses and reuse that?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would be ok with class or constant. But to some extent, a style class is a constant too...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

dont we have a class ui constants or something?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I would be ok with class or constant. But to some extent, a style class is a constant too...

yes, maybe just for the styles that are used often together in different code locations, maybe put into an ui constants class.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Generated with Claude Code

Implemented the constants suggestion in f53ebaa: the recurring change-view combinations (h4 padding-2 header, font-size-090 text-subtle padding-4 legend) are now StyleClasses.CHANGE_VIEW_HEADER / CHANGE_VIEW_LEGEND in org.jabref.gui.theme.StyleClasses, used from EntryChangeDetailsView, MetadataChangeDetailsView and GitEntryChangeDetailsView. Further recurring combinations can move there as they surface.

@github-actions github-actions Bot added the status: changes-required Pull requests that are not yet complete label Aug 29, 2026
# Conflicts:
#	jabgui/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java
#	jabgui/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java
#	jabgui/src/main/resources/org/jabref/gui/theme/internal/jabref-base.css
@koppor

koppor commented Aug 31, 2026

Copy link
Copy Markdown
Member

🤖 Generated with Claude Code

Merged main into this branch and resolved the conflicts:

  • EntryChangeDetailsView / MetadataChangeDetailsView: kept main's new two-constructor/label-parameter structure, applied this PR's style classes (h4 padding-2).
  • jabref-base.css: kept main's new .lib-change-text-area / .lib-change-scroll-pane rules; the removed .lib-change-header / .lib-change-legend stay removed.
  • GitEntryChangeDetailsView (new on main, still used the removed classes): ported to the common classes (h4 padding-2, font-size-090 text-subtle padding-4) to match this PR.

:jabgui:compileJava and :rewriteRun pass locally with no diffs.

koppor and others added 2 commits August 31, 2026 12:04
The .error-message rule was removed with the common-style cleanup, but
ManageStudyDefinition.fxml still referenced it, leaving the blocking
validation header without its danger color.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0195q9VEakTp3xiXcqV5eggV
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0195q9VEakTp3xiXcqV5eggV
koppor added a commit to JabRef/jabref-koppor that referenced this pull request Aug 31, 2026
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HKn7io1Av1DrQyqCRqEAWY
Button jumpTo = ControlHelper.iconButton(IconTheme.JabRefIcons.LINK);
jumpTo.setTooltip(new Tooltip(Localization.lang("Jump to entry in library")));
jumpTo.getStyleClass().add("addEntryButton");
jumpTo.getStyleClass().addAll("addEntryButton", "h1");

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

addEntryButton might be worth to replace as well

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Generated with Claude Code

addEntryButton cannot become a utility class — its only styling is the :selected state (transparent background because the icon color itself signals selection), which the padding/font utilities cannot express. Done in f53ebaa instead: removed the class from the plain jumpTo Button (a Button has no :selected, so it was inert there) and consolidated the two identical #importEntriesDialog/#citationRelationsTab-scoped rules into a single .addEntryButton:selected rule next to the .icon-button styles.

if (!gridPane.getStyleClass().contains("all-fields-list")) {
gridPane.getStyleClass().add("all-fields-list");
// The list variant sits flush in its scroll pane, unlike the padded grid of the other tabs.
gridPane.getStyleClass().remove("padding-4");

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

should be reevaluated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Generated with Claude Code

Reevaluated in f53ebaa: all-fields-list had no CSS rule at all (it only served as a re-entry sentinel), and padding-0 was redundant once padding-4 is removed (GridPane defaults to zero padding, nothing else pads it). Simplified to an unconditional getStyleClass().remove("padding-4"), which is idempotent on its own.

private VBox getErrorPane() {
Label titleLabel = new Label(Localization.lang("Error"));
titleLabel.getStyleClass().add("latex-citations-error-label");
titleLabel.getStyleClass().addAll("latex-citations-error-label", "h3", "bold");

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

latex-citations-error-label might be worth to replace, especially all CSS styles with only a color. Maybe as follow-up

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Generated with Claude Code

Replaced in f53ebaa: the label now uses the shared text-danger utility (it is an error heading; the old -color-accent-subtle looked accidental for an error) and the #entryEditor .latex-citations-error-label rule is gone.

xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="org.jabref.gui.fieldeditors.journalinfo.JournalInfoView">
<Label fx:id="title" styleClass="info-heading">
<Label fx:id="title" styleClass="info-heading,font-size-250">

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

info-heading, also a good candidate for dropping

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Generated with Claude Code

Dropped in f53ebaa: the FXML now uses the shared text-accent utility and the CSS rule only covers .info-label (kept — it has many usages in the same file and still maps to one shared rule).

Extract repeated change-view header/legend combinations into StyleClasses
constants, drop the color-only latex-citations-error-label and info-heading
classes in favor of text utilities, consolidate the duplicated
addEntryButton:selected rules, and simplify the AllFieldsTab padding tweak.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0195q9VEakTp3xiXcqV5eggV
HBox info = new HBox(8);
HBox.setHgrow(info, Priority.ALWAYS);
info.getStyleClass().add("linked-files-info"); // To align with buttons below which also have 0.5em padding
info.getStyleClass().add("padding-6-0"); // To align with buttons below which also have 0.5em padding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Discussion:

semantic class ("linked-files-info")

versus

layout-classes ("padding-6-0")

I think, https://getbootstrap.com/docs/5.3/getting-started/introduction/ is more on the latter.

@subhramit subhramit Aug 31, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

My opinion (rephrased from #16708 (comment)) - web development frameworks like bootstrap or tailwind will always lean towards that convention as the flow for building website is generally different from building a desktop app. They come more from the world of "hot reload"/instant render where you keep adjusting the raw values as per visible results till satisfied. It is not from a reusability/review-ability or maintainability first perspective.

Any maintainability that people start thinking about when building websites starts from the javascript layer.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

bootstrap also has layout classes, yes. See e.g. for container: https://getbootstrap.com/docs/5.3/layout/containers/

Desktop and Web development are different, but JavaFX is very close. And adding or removing a styleClass like h4 in code will make it also easier to hot-reload for us as well. Because we usually never need to adjust the CSS, rather the code or fxml. Both very easy to hot-reload.

Another minor advantage is also, that people coming from Web will immediately understand it, since it is inspired by the CSS Utility frameworks.

@github-actions github-actions Bot added the component: external-application-integration Ingegeration with TeXStudio, Acrobat Reader, ... label Aug 31, 2026
@calixtus

calixtus commented Sep 2, 2026

Copy link
Copy Markdown
Member

Maybe we can find a middle way: semantic, but as general as possible. Instead of "linked-files-header" or "preferences-tab-whatever" use "dialog-header" and so on.

@Maran23

Maran23 commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator Author

Maybe we can find a middle way: semantic, but as general as possible. Instead of "linked-files-header" or "preferences-tab-whatever" use "dialog-header" and so on.

Yeah that makes sense, especially for more than one style.

…tyle

# Conflicts:
#	jabgui/src/main/java/org/jabref/gui/git/GitEntryChangeDetailsView.java
#	jabgui/src/main/java/org/jabref/gui/newentry/NewEntryView.java
#	jabgui/src/main/java/org/jabref/gui/preferences/journals/JournalAbbreviationsTab.java
#	jabgui/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java
@jabref-machine jabref-machine added status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers and removed status: changes-required Pull requests that are not yet complete labels Sep 6, 2026
@Siedlerchr
Siedlerchr added this pull request to the merge queue Sep 6, 2026
@github-actions github-actions Bot added the status: to-be-merged PRs which are accepted and should go into the merge-queue. label Sep 6, 2026
Merged via the queue into main with commit 1756935 Sep 6, 2026
81 checks passed
@Siedlerchr
Siedlerchr deleted the common-style branch September 6, 2026 13:37
Siedlerchr added a commit to Siedlerchr/jabref that referenced this pull request Sep 6, 2026
* upstream/main:
  Common CSS styles for spacing, padding, gaps and font-size (JabRef#16708)
  Group file operations in the entry context menu (JabRef#16829)
  add subset search (JabRef#16871)
  Speed up building (JabRef#16873)
  Enhance developer documentation (JabRef#16760)
  Fix BST entry preview formatting (JabRef#16853)
  Fix invalid regex handling in search (JabRef#16855)
  New Crowdin updates (JabRef#16867)

# Conflicts:
#	jabgui/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java
Siedlerchr added a commit that referenced this pull request Sep 6, 2026
* upstream/main:
  fix(bibtex): recover after unmatched braces (#16869)
  Common CSS styles for spacing, padding, gaps and font-size (#16708)
  Group file operations in the entry context menu (#16829)
  add subset search (#16871)
  Speed up building (#16873)
  Enhance developer documentation (#16760)
  Fix BST entry preview formatting (#16853)
Siedlerchr added a commit that referenced this pull request Sep 6, 2026
* main: (66 commits)
  Fix undo C - One undomanager / journal per library and some cleanups (#16857)
  Fix status label update for reviews on fork PRs (#16883)
  Rework shared SQL database synchronization (PostgreSQL, live updates) (#11879)
  Gracefully handle JGit errors (#16882)
  Require SHA-pinned GitHub Actions in AGENTS.md (#16875)
  fix(ai): keep group chat window after library edits (#16879)
  Add auto-commit, push & pull features for Git (#16651)
  Pin issue only when the PR author is the assignee (#16872)
  Select newly added entry (#16845)
  Add infer style button (#16870)
  Show group changes in Git diff (#16868)
  Label CI/CD and build-system pull requests automatically (#16877)
  AsyncEmbeddingModel.java: Switch NotNull annotation to NonNull from jspecify. (#16880)
  fix(bibtex): recover after unmatched braces (#16869)
  Common CSS styles for spacing, padding, gaps and font-size (#16708)
  Group file operations in the entry context menu (#16829)
  add subset search (#16871)
  Speed up building (#16873)
  Enhance developer documentation (#16760)
  Fix BST entry preview formatting (#16853)
  ...

# Conflicts:
#	docs/requirements/shared-database.md
#	jabgui/src/main/java/org/jabref/gui/autosaveandbackup/AutosaveManager.java
#	jabgui/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java
#	jabgui/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogViewModel.java
#	jabgui/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java
#	jabgui/src/main/resources/org/jabref/gui/shared/SharedDatabaseLoginDialog.fxml
#	jablib/src/main/java/org/jabref/logic/shared/DBMSConnectionProperties.java
#	jablib/src/main/java/org/jabref/logic/shared/DBMSConnectionPropertiesBuilder.java
#	jablib/src/main/java/org/jabref/logic/shared/prefs/SharedDatabasePreferences.java
koppor added a commit to JabRef/jabref-koppor that referenced this pull request Sep 7, 2026
…list

origin/common-style (JabRef#16708), origin/fulltext-context-menu
(JabRef#16829) and origin/fulltext-download-background-task
(JabRef#16831) no longer exist upstream; last night's run warned
about all three.

Upstream has landed each of them itself: the StyleClasses migration, the
GroupChangeDetailsView extraction and the background full text search
(req~fetchers.fulltext-background-search~1) all arrived via origin/main,
so experimental keeps the work without the branches.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEfEAwaU63aKf2XzAKa7p8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Decrease the amount of CSS variables

6 participants