Model auto date groups#1
Merged
Merged
Conversation
* Prevent brief flash of the default JavaFX (Modena) theme on startup * Avoid spamming IndexOutOfBoundsException when the theme is updated at runtime - IndexOutOfBoundsException keeps being thrown although the theme is applied correctly. By catching the exception, we avoid spamming the exception to user. * Fix button-bar buttons truncating long text with ellipsis * Update Changelog * use clear * Revert "Avoid spamming IndexOutOfBoundsException when the theme is updated at runtime" This reverts commit 7361b5a. * Update CHANGELOG.md --------- Co-authored-by: Houssem Nasri <houssem.nasri@360t.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com>
* Add checkerframework to jablib * Add ADR * Refine * Revise endorsement for nullness checking framework Updated endorsement reference to JUnit 6 with a link. * Migrate to Errorprone with NullAway * Refine ADR * Remove jakarta.inject dependency * Add architecture test * No eclipse jgit nullable annotations * Fix architecture test --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Oliver Kopp <kopp.dev@gmail.com> Co-authored-by: Christoph <siedlerkiller@gmail.com>
…abRef#14045) * Merged scite metrics tab into the Citation Relations Tab (now called "Citations") and removed SciteTab from view in EntryEditor. * Removed SciteTab.java and SciteTabViewModel.java. Moved fetchTallies method to new class ScienceAiFetcher.java. Moved SciteTallyModel to jabref.model.sciteTallies and renamed to TalliesResponse. * Added info to CHANGELOG.md. * CHANGELOG formatting. * Updated CHANGELOG.md after PR comments. Moved URLs to URLs helper class. Added nicer styling to the Citations tab. * Updated CHANGELOG.md after PR comments. Moved URLs to URLs helper class. Added nicer styling to the Citations tab. * Added missing localization keys and removed obsolete localization keys. * Added localization to citation tab labels * Renamed labels in Citations tab and added a help button with a popup explaining the source and linking to the respective page. * Updated Citation Metrics section to a single line * Made Citation Metrics a single line. Also broke up its text into elements to have better separation. * Removed labels in the Citations tab. The provided by buttons are now entirely in the Metrics line. --------- Co-authored-by: Mitkens374 <michal.leso@student.tuke.sk>
…JabRef#14031) * Changed ComboBox to SearchableComboBox in FieldFormatterCleanupsPanel * Changed the combobox to a searchable combobox * Revert "Changed the combobox to a searchable combobox" This reverts commit 348762b. * changed combobox to a searchable combobox * Added bugfix to CHANGELOG.md * Corrected an issue number in CHANGELOG.md * Revise CHANGELOG for recent updates and fixes Updated CHANGELOG with new features, changes, fixes, and removals. --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
* JabRef#14058 - fix alphabetical ordering * JabRef#14058 - update change log * JabRef#14058 feedback - reorder
* Fix search query reset issue after entry deletion - Add EntriesRemovedEvent listener to MainTableDataModel.SearchIndexListener - Refresh search matches when entries are removed to prevent stale entries - Ensure filtered list is properly updated after entry deletion - Maintain search query state during entry manipulation operations This fixes the issue where search results would show stale entries after deleting entries from search results, making it appear as if the search query was reset even though it remained in the search bar. * Fix import order for EntriesRemovedEvent - Move EntriesRemovedEvent import to correct alphabetical position - Fixes checkstyle ImportOrder violation * Update CHANGELOG with fixed issue description and link --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
* New translations jabref_en.properties (French) * New translations jabref_en.properties (Spanish) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Italian) * New translations jabref_en.properties (Turkish) * New translations jabref_en.properties (Chinese Simplified) * New translations jabref_en.properties (Portuguese, Brazilian)
Co-authored-by: Ruslan <ruslanpopov1512@gmail.com>
Bumps [jablib/src/main/resources/csl-locales](https://github.com/citation-style-language/locales) from `8c149db` to `fbb76f6`. - [Release notes](https://github.com/citation-style-language/locales/releases) - [Commits](citation-style-language/locales@8c149db...fbb76f6) --- updated-dependencies: - dependency-name: jablib/src/main/resources/csl-locales dependency-version: fbb76f6129728a234c4e42ba598c7bbbedd73301 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [jablib/src/main/abbrv.jabref.org](https://github.com/JabRef/abbrv.jabref.org) from `fc3ef9e` to `176c06c`. - [Release notes](https://github.com/JabRef/abbrv.jabref.org/releases) - [Commits](JabRef/abbrv.jabref.org@fc3ef9e...176c06c) --- updated-dependencies: - dependency-name: jablib/src/main/abbrv.jabref.org dependency-version: 176c06c4727fa1005117ead24e8d5b9051e4f3ab dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ef#14075) Bumps org.openrewrite.rewrite from 7.17.0 to 7.18.0. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…4074) Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.15.0 to 3.16.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.15.0...v3.16.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps org.cyclonedx.bom from 3.0.0 to 3.0.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
JabRef#14077) Bumps [com.autonomousapps:dependency-analysis-gradle-plugin](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin) from 3.0.4 to 3.1.0. - [Changelog](https://github.com/autonomousapps/dependency-analysis-gradle-plugin/blob/main/CHANGELOG.md) - [Commits](autonomousapps/dependency-analysis-gradle-plugin@v3.0.4...v3.1.0) --- updated-dependencies: - dependency-name: com.autonomousapps:dependency-analysis-gradle-plugin dependency-version: 3.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Revert "Fix eadr missing (JabRef#14043)" This reverts commit 74dd1d8. * Use 2.0.0 of e-adr * Fix module issues --------- Co-authored-by: Christoph <siedlerkiller@gmail.com>
* add fulltext * Implement search based fetcher as well * Implement search based fetcher as well * Update jablib/src/main/java/org/jabref/logic/importer/fetcher/EuropePmcFetcher.java Co-authored-by: Subhramit Basu <subhramit.bb@live.in> * Update jablib/src/main/java/org/jabref/logic/importer/fetcher/EuropePmcFetcher.java Co-authored-by: Subhramit Basu <subhramit.bb@live.in> * Update jablib/src/main/java/org/jabref/logic/importer/fetcher/EuropePmcFetcher.java Co-authored-by: Subhramit Basu <subhramit.bb@live.in> * apply suggestions * Fix failing SLR tests & extract date pattern constant --------- Co-authored-by: Subhramit Basu <subhramit.bb@live.in>
…the status bar (JabRef#14053) * changed initializeNotice() in AiChatComponent class / now should work properly / need to add test * add test for checking if the value of ai model is changing * changed CHANGELOG.md * deleted System.out from AiChatComponent.java * some changes in CHANGELOG.md * another changes in CHANGELOG.md * updates test for AiChatComponent class * CHANGELOG.md changes * edit CHANGELOG.md * update for tests in AiChatComponentTest class / update for function computeNoticeText() in AiChatComponent class * Fix submodules * Fix submodules * Update * Update csl-locales * Update submodules * Fix submodules * Update jabgui/src/test/java/org/jabref/gui/ai/components/aichat/AiChatComponentTest.java Co-authored-by: Subhramit Basu <subhramit.bb@live.in> * Update jabgui/src/test/java/org/jabref/gui/ai/components/aichat/AiChatComponentTest.java Co-authored-by: Subhramit Basu <subhramit.bb@live.in> * Update AiChatComponentTest.java * Update AiChatComponentTest.java - make som cleanup changes --------- Co-authored-by: Subhramit Basu <subhramit.bb@live.in>
* Add context menu for multi-file entries (JabRef#12567) Extend the Entry Editor context menu to handle entries with multiple linked files. This improves UX when managing more than one file per entry and aligns behavior across single- and multi-file scenarios. Changes: - Add plural actions to StandardActions enum - Rewrite ContextAction.execute() for multi-file cases - Extend ContextMenuFactory to build multi-file items - Rework MultiContextAction to operate on selections - Introduce CopyMultipleFilesAction (new class) - Update/add localization keys; tests pass - Add unit tests: ContextActionTest, ContextMenuFactoryTest, MultiContextActionTest, CopyMultipleFilesActionTest - Guard LinkedFileViewModel to avoid a JavaFX crash Fixes JabRef#12567 Keywords: context menu, linked files, multi-selection, UI * Apply OpenRewrite recipes * Fixed test and optimized imports * fixed library and space in catch block * Runned rewrite, fixed catch block and optimize logic of test ContextMenuFactory * Fix tests: initialize JavaFX toolkit; replace empty catch with meaningful check * Fix tests: added space after { * Trigger CI * Trigger CI * Update jabgui/src/test/java/org/jabref/gui/copyfiles/CopyMultipleFilesActionTest.java Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * refactor(gui/contextmenu): restore Strategy pattern for linked files menu - Introduce ContextMenuBuilder + SingleSelectionMenuBuilder + MultiSelectionMenuBuilder - Extract shared checks/openContainingFolders into SelectionChecks - ContextMenuFactory delegates to strategies; no more branching by selection size - LinkedFilesEditor initializes ContextMenuFactory once and just requests menus on right-click - Replace plural menu commands with single StandardActions; multi-selection handled inside builders - Fix NPE in ContextAction executable binding by removing null observables and binding menu disable state properly - Remove obsolete MultiContextAction and its tests Follow-ups: - Convert hardcoded labels to i18n keys (Download file(s), Open folder(s), etc.) - Consider removing *_FILES actions from enum if unused elsewhere - Re-add unit tests around builders/factory (TestFX/JUnit5) once API stabilized * feat(gui): multi-file context menu for linked files - Introduce selection-aware builders (SingleSelectionMenuBuilder / MultiSelectionMenuBuilder) with SelectionChecks - Wire into LinkedFilesEditor via ContextMenuFactory/ContextAction; proper enablement bindings - Remove CopyMultipleFilesAction; update StandardActions and view models - i18n updates for pluralized items and copy messages - Tests for ContextAction/ContextMenuFactory/Single&MultiSelection builders/SelectionChecks - Changelog + cleanup Closes JabRef#12567 * Address review: Optional/map, non-null params, logger, tests, menus * fixed tests * Update jabgui/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Update jabgui/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * wip: local changes before style sync * Fix styles * Final style and CI checks * docs: sync http-server howto; jablib: sync jspecify @nullable from upstream * Naming convention * Fix LOGGER naming (convension) * fixed submodules * Fix submodules * chore: reset submodules to upstream/main (csl-styles, csl-locales) * Fix submodules * Fix test classes * Fix test classes V2 (forget to update MultiSelectionMenuBuilderTest and SelectionChecksTest) * Apply JSpecify annotations * Fixed bot's cases and fixed submodules * Fix submodules * Migrate to JSpecify annotations * Fix wording * Changed assert methods for readability * interface ---< class, deleted variable * Refactored ContextMenuFactoryTest for readability * Added fixes, deleted SelectionChecks * changelog fixed and localization --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
Bumps [jablib/src/main/resources/csl-styles](https://github.com/citation-style-language/styles) from `b61592e` to `7235025`. - [Release notes](https://github.com/citation-style-language/styles/releases) - [Commits](citation-style-language/styles@b61592e...7235025) --- updated-dependencies: - dependency-name: jablib/src/main/resources/csl-styles dependency-version: 723502506457f6b3a1b202c2debb8b8cf085098a dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com>
* New translations jabref_en.properties (French) * New translations jabref_en.properties (Spanish) * New translations jabref_en.properties (Arabic) * New translations jabref_en.properties (Danish) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Greek) * New translations jabref_en.properties (Finnish) * New translations jabref_en.properties (Italian) * New translations jabref_en.properties (Japanese) * New translations jabref_en.properties (Korean) * New translations jabref_en.properties (Dutch) * New translations jabref_en.properties (Norwegian) * New translations jabref_en.properties (Polish) * New translations jabref_en.properties (Portuguese) * New translations jabref_en.properties (Russian) * New translations jabref_en.properties (Swedish) * New translations jabref_en.properties (Turkish) * New translations jabref_en.properties (Ukrainian) * New translations jabref_en.properties (Chinese Simplified) * New translations jabref_en.properties (Chinese Traditional) * New translations jabref_en.properties (Vietnamese) * New translations jabref_en.properties (Portuguese, Brazilian) * New translations jabref_en.properties (Indonesian) * New translations jabref_en.properties (Persian) * New translations jabref_en.properties (Tagalog)
…c tests currently only group based on year not months
* JabRef#14088 prevent custom entry types with spaces * JabRef#14088 update changelog * JabRef#14088 resolve LocalizationConsistencyTest * try rerun automated tests * remove trailing
* New translations jabref_en.properties (French) * New translations jabref_en.properties (Spanish) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Italian) * New translations jabref_en.properties (Japanese) * New translations jabref_en.properties (Korean) * New translations jabref_en.properties (Dutch) * New translations jabref_en.properties (Russian) * New translations jabref_en.properties (Turkish) * New translations jabref_en.properties (Chinese Simplified) * New translations jabref_en.properties (Portuguese, Brazilian)
…to-date-groups
XMJ3083
approved these changes
Oct 16, 2025
XMJ3083
left a comment
Collaborator
There was a problem hiding this comment.
Considering that the issue has not been fully developed yet, manual black box testing has been temporarily suspended. The code looks good to me.
added 3 commits
October 16, 2025 19:11
…year following month and day, changing AutomaticDateGroup/DateGroup+ DateGranularity + tests (year/month/day)
XMJ3083
approved these changes
Oct 17, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds back end logic of Automatic Date Groups feature to JabRef. Users can create automatic groups by year, by year-month or by full date when the date field of entries are set. Membership is dynamic—no manual assignment. The following are the specifics of implementation for this PR.
DateGranularity enum: YEAR, MONTH, FULL_DATE.DateGroup extends AbstractGroup: represents a single key like 2024, 2024-10, or 2024-10-14. Matching uses JabRef’s aliasing (date ↔ year/month/day).AutomaticDateGroup: builds child DateGroups for all entries at the chosen granularity and merges identical keys.and also unit tests and integration tests in
AutomaticDateGroupTest.Steps to test
Automated test
running command
./gradlew :jablib:test --tests "org.jabref.model.groups.AutomaticDateGroupTest"
Mandatory checks
CHANGELOG.mdin a way that is understandable for the average user (if change is visible to the user)