Skip to content

Display PDF annotations in entry preview#16074

Open
Gustavotakehara wants to merge 16 commits into
JabRef:mainfrom
Gustavotakehara:issue4257_PdfAnotation
Open

Display PDF annotations in entry preview#16074
Gustavotakehara wants to merge 16 commits into
JabRef:mainfrom
Gustavotakehara:issue4257_PdfAnotation

Conversation

@Gustavotakehara

@Gustavotakehara Gustavotakehara commented Jun 23, 2026

Copy link
Copy Markdown

Related issues and pull requests

Closes #4257

PR #15491
PR #15492
PR #15493

PR Description

This PR revives and improves the work started in #15493 addressing the previous feedback by implementing safe HTML rendering and using proper localization metrics.

issue4257_1

Steps to test

  1. Open JabRef and select or create a bibliographic entry.
  2. Link a PDF file to this entry that contains active annotations (such as text highlights, inline notes, or pop-up comments).
  3. Select the entry and navigate to the Preview tab at the bottom panel.
  4. Verify that a dedicated section titled PDF Annotations appears, showing your highlights and notes cleanly organized and sorted ascendingly by page number.
issue4257_2

jabref-contrib-policy:4.2:reviewed​:ok

Analogies: Honey reflects how this lightweight code glazes the existing pipeline, appending annotations without altering the original layout system. Chocolate matches the design, ensuring that no matter what custom layout flavor the user chooses, the metadata blends reliably into the final body. And the moon mirrors how this post-processing stays independent of core UI changes, illuminating hidden PDF contents while keeping the codebase small and maintainable.

AI usage

Gemini (model gemini-1.5-pro / 2026-06)

AI CHECKLIST.md walkthrough
  • [/] JSpecify annotations used instead of == null checks.
  • [/] org.jabref.logic.util.strings.StringUtil.isBlank(java.lang.String) used instead of == null || ...isBlank().
  • No catch (Exception e) — only specific exceptions caught.
  • No commented-out code left behind.
  • User-facing text is localized (Localization.lang in Java, % prefix in FXML).
  • [/] New BibEntry objects created with withers (withField, not setField).
  • User-controlled data (request params, entry fields, file contents) is HTML-escaped before being written into any text/html response — including exception/error messages, not just the success body (XSS).
  • Tests added or updated for changed behavior in org.jabref.model / org.jabref.logic.

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 a screenshot in the PR description showing a library with a single entry with me as author and as title the issue number
  • I described the change in CHANGELOG.md in a way that can be understood by the average user (if 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

@github-actions

Copy link
Copy Markdown
Contributor

Hey @Gustavotakehara! 👋

Thank you for contributing to JabRef!

We have automated checks in place, based on which you will soon get feedback if any of them are failing. We also use Qodo for review assistance. It will update your pull request description with a review help and offer suggestions to improve the pull request.

After all automated checks pass, a maintainer will also review your contribution. Once that happens, you can go through their comments in the "Files changed" tab and act on them, or reply to the conversation if you have further inputs. You can read about the whole pull request process in our contribution guide.

Please ensure that your pull request is in line with our AI Usage Policy and make necessary disclosures.

@github-actions github-actions Bot added first contrib status: changes-required Pull requests that are not yet complete labels Jun 23, 2026
@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Show linked PDF annotations in the entry preview
✨ Enhancement 🧪 Tests 📝 Documentation 🕐 20-40 Minutes

Grey Divider

Description

• Append a localized “PDF Annotations” section to the entry preview for linked PDFs.
• Render annotation content safely as HTML (escaped) and sort annotations by page.
• Generate previews asynchronously with throttling to avoid stale/overlapping UI updates.
Diagram

graph TD
  PV["PreviewViewer"] --> TH["DelayTaskThrottler"] --> BT["BackgroundTask"]
  BT --> PL["PreviewLayout"] --> WV["Preview WebView"]
  BT --> EAI["EntryAnnotationImporter"] --> PDF[("Linked PDF files")]
  EAI --> FAP["FileAnnotationPreview"] --> WV
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Cache extracted annotations per PDF (mtime-based)
  • ➕ Avoids re-parsing PDFs on every preview refresh
  • ➕ Improves responsiveness for entries with many/large PDFs
  • ➖ Needs invalidation strategy (file changes, preference changes)
  • ➖ Adds state and concurrency considerations
2. Integrate annotations into the layout engine as a dedicated layout command
  • ➕ Keeps preview composition inside the existing layout pipeline
  • ➕ Allows users to place annotations anywhere in their preview style
  • ➖ More invasive change to the layout system and documentation
  • ➖ Harder to ensure safe HTML escaping across custom layouts
3. Render annotations as JavaFX nodes instead of HTML concatenation
  • ➕ Avoids HTML string building and reduces XSS surface
  • ➕ More flexible styling via JavaFX CSS
  • ➖ Preview is currently WebView/HTML-based; mixing renderers adds complexity
  • ➖ More UI code and potential styling inconsistencies

Recommendation: The current approach (append a safely-escaped, localized HTML section after the generated preview) is a pragmatic fit for the existing WebView-based preview and keeps scope contained. Consider a follow-up optimization to cache annotation extraction (especially for large PDFs) if performance becomes an issue; also verify that cover-download behavior is still triggered as intended after the update() refactor.

Files changed (5) +242 / -13

Enhancement (2) +125 / -13
PreviewViewer.javaThrottle and asynchronously append PDF annotations to preview HTML +50/-13

Throttle and asynchronously append PDF annotations to preview HTML

• Refactors preview updates to use a DelayTaskThrottler and request-id based staleness checks to prevent outdated background results from overwriting the UI. Generates the base preview HTML via PreviewLayout, then imports annotations for linked PDFs and appends rendered annotation HTML before displaying.

jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java

FileAnnotationPreview.javaAdd safe HTML renderer for file annotations +75/-0

Add safe HTML renderer for file annotations

• Introduces a renderer that formats extracted annotations into a localized “PDF Annotations” HTML block, grouped by filename and sorted by page. Escapes filenames, headers, and annotation content (including linked notes) to prevent HTML injection.

jablib/src/main/java/org/jabref/logic/pdf/FileAnnotationPreview.java

Tests (1) +112 / -0
FileAnnotationPreviewTest.javaAdd unit tests for annotation preview HTML rendering +112/-0

Add unit tests for annotation preview HTML rendering

• Adds tests covering empty input handling, filtering of null/blank annotations, HTML escaping, page-order sorting, and rendering of linked note comments.

jablib/src/test/java/org/jabref/logic/pdf/FileAnnotationPreviewTest.java

Documentation (1) +1 / -0
CHANGELOG.mdDocument PDF-annotation preview support +1/-0

Document PDF-annotation preview support

• Adds a changelog entry noting that linked PDF annotations can now be displayed in the entry preview, referencing issue #4257.

CHANGELOG.md

Other (1) +4 / -0
JabRef_en.propertiesAdd localization keys for annotation preview labels +4/-0

Add localization keys for annotation preview labels

• Adds English strings for “PDF Annotations”, “Note”, and “Unknown” used by the annotation preview renderer.

jablib/src/main/resources/l10n/JabRef_en.properties

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

qodo-free-for-open-source-projects Bot commented Jun 23, 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. RuntimeException caught in preview ✓ Resolved 📘 Rule violation ☼ Reliability
Description
generatePreviewWithAnnotations catches RuntimeException, which is overly broad and can hide
programming errors while bypassing the BackgroundTask failure path. This violates the requirement
to catch specific exceptions and avoid unchecked-exception-based control flow.
Code

jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java[R436-447]

+        try {
+            EntryAnnotationImporter entryAnnotationImporter = new EntryAnnotationImporter(currentEntry);
+            java.util.Map<java.nio.file.Path, List<FileAnnotation>> annotationsMap =
+                    entryAnnotationImporter.importAnnotationsFromFiles(databaseContext, filePreferences);
+
+            if (annotationsMap != null && !annotationsMap.isEmpty()) {
+                String annotationsHtml = FileAnnotationPreview.render(annotationsMap);
+                previewHtml.append(annotationsHtml);
+            }
+        } catch (RuntimeException e) {
+            LOGGER.error("Failed to generate preview with annotations due to a runtime error", e);
+        }
Evidence
The checklist requires catching specific exceptions and avoiding unchecked exceptions; the new code
explicitly catches RuntimeException in the preview generation flow.

AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions, and Avoid Unchecked Exceptions: AGENTS.md: Exception Handling: Keep try Blocks Small, Catch Specific Exceptions,...

Comment thread jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java
Comment thread jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java Outdated
@koppor koppor marked this pull request as draft June 24, 2026 00:04
@Gustavotakehara Gustavotakehara changed the title Issue4257 pdf anotation Display PDF annotations in entry preview Jun 24, 2026
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from 0af6b53 to ca7c401 Compare June 24, 2026 00:38
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from c06c896 to 0126e6a Compare June 24, 2026 00:53
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from 490da24 to 7364ef5 Compare June 24, 2026 01:14
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from 38ad345 to cca9e96 Compare June 24, 2026 01:20
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from bf004ee to 7d2494e Compare June 24, 2026 01:30
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Jun 24, 2026
@Gustavotakehara Gustavotakehara marked this pull request as ready for review June 24, 2026 01:50
Comment thread jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java
Comment thread jablib/src/main/java/org/jabref/logic/pdf/FileAnnotationPreview.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/pdf/FileAnnotationPreview.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/pdf/FileAnnotationPreview.java Outdated
Comment thread jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java
Comment thread jabgui/src/main/java/org/jabref/gui/preview/PreviewViewer.java
@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 880cee9

@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch 2 times, most recently from 4489a9b to 345e874 Compare June 24, 2026 02:45
@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jun 24, 2026
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch 4 times, most recently from c38cdf2 to 9827bdd Compare June 24, 2026 03:22
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Jun 24, 2026
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch 2 times, most recently from 7018355 to 4adb776 Compare June 24, 2026 03:47
@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jun 24, 2026
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from 4adb776 to 6b258ec Compare June 24, 2026 03:50
@Gustavotakehara Gustavotakehara force-pushed the issue4257_PdfAnotation branch from 6b258ec to 16ae8bc Compare June 24, 2026 03:53
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Jun 24, 2026
@calixtus

Copy link
Copy Markdown
Member

Please do not force push. Removes context from comments.

@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jul 6, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Your pull request conflicts with the target branch.

Please merge with your code. For a step-by-step guide to resolve merge conflicts, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.

@jabref-machine

Copy link
Copy Markdown
Collaborator

Your code currently does not meet JabRef's code guidelines. We use Checkstyle to identify issues. You can see which checks are failing by locating the box "Some checks were not successful" on the pull request page. To see the test output, locate "Source Code Tests / Checkstyle (pull_request)" and click on it.

In case of issues with the import order, double check that you activated Auto Import. You can trigger fixing imports by pressing Ctrl+Alt+O to trigger Optimize Imports.

Please carefully follow the setup guide for the codestyle. Afterwards, please run checkstyle locally and fix the issues, commit, and push.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component: ui first contrib status: changes-required Pull requests that are not yet complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PDF Annotation Preview Entry field

3 participants