Skip to content

Fix/macos launcher and splash#1776

Open
itsBOTzilla wants to merge 2 commits into
chsami:mainfrom
itsBOTzilla:fix/macos-launcher-and-splash
Open

Fix/macos launcher and splash#1776
itsBOTzilla wants to merge 2 commits into
chsami:mainfrom
itsBOTzilla:fix/macos-launcher-and-splash

Conversation

@itsBOTzilla
Copy link
Copy Markdown

Summary

Two small launcher-path fixes that affect anyone running Microbot from source on macOS.

1. macOS IllegalAccessError at startup

OSXFullScreenAdapter extends com.apple.eawt.FullScreenAdapter, which lives in a sealed JDK
module. On JDK 17+ the module system rejects the subclass at class-load time:

java.lang.IllegalAccessError: superclass access check failed:
class net.runelite.client.ui.OSXFullScreenAdapter ...

Fix: add --add-opens/--add-exports for java.desktop/com.apple.eawt(.event) to the run,
runDebug, and runTest Gradle tasks, plus matching Add-Opens/Add-Exports attributes on
the shaded-jar manifest so java -jar launches also work.

2. SplashScreen UX

  • action, subAction, and the error-summary label become non-editable
    JTextField/JTextArea so users can highlight and copy them (helpful when reporting a startup
    failure).
  • The "Did you know?" fact area is made focusable for the same reason.
  • The undecorated frame now has a press/drag mouse listener on the root panel and logo, so it
    can be moved out of the way during long downloads.
  • HTML wrapping on the error summary is removed since JTextArea handles wrapping natively.

Test plan

  • ./gradlew :client:run on macOS (JDK 17) — splash + client open without
    IllegalAccessError.
  • Splash window: action/subAction/error text is selectable; clicking-and-dragging the
    splash moves it.
  • ./gradlew :client:compileJava clean.
  • (Reviewer) Verify no regression on Linux/Windows where the eawt flags are ignored.

tyler added 2 commits May 15, 2026 08:10
OSXFullScreenAdapter extends com.apple.eawt.FullScreenAdapter, a sealed
JDK class. On JDK 17+ the module system rejects the subclass at load
time with "IllegalAccessError: superclass access check failed" unless
java.desktop/com.apple.eawt is opened to the unnamed module.

- Add --add-opens/--add-exports for java.desktop/com.apple.eawt(.event)
  to the run, runDebug, and runTest Gradle tasks.
- Add Add-Opens/Add-Exports manifest attributes to the shaded jar so
  packaged launches via \`java -jar\` also work.
The undecorated splash screen had a few small UX rough edges:
- Status/sub-action/error-summary text was rendered with JLabel, so
  users could not select or copy it (useful when reporting a startup
  error).
- The frame has no titlebar, so there was no way to move the splash
  out of the way during long downloads.

Changes:
- Swap the action / subAction JLabels for non-editable JTextFields and
  the error summary JLabel for a JTextArea; keep the same visual style.
- Strip the HTML wrapper from the error summary now that JTextArea
  handles wrapping natively.
- Make the "Did you know?" fact area focusable so its text can also be
  selected.
- Install a mouse press/drag listener on the root panel and logo so the
  splash window can be repositioned. Text components consume their own
  mouse events, so selection still works.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 15, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 42792fa7-0c18-4d13-954b-da4ad4e0eda3

📥 Commits

Reviewing files that changed from the base of the PR and between 0a44224 and 876c8ff.

📒 Files selected for processing (2)
  • runelite-client/build.gradle.kts
  • runelite-client/src/main/java/net/runelite/client/ui/SplashScreen.java

Walkthrough

This PR modifies the RuneLite client build configuration and splash screen UI. The build configuration now exposes Java module access for macOS's com.apple.eawt packages by adding --add-opens and --add-exports flags to development and testing tasks as well as to the packaged JAR manifest. The SplashScreen UI refactors text display components to support text selection and copying by replacing non-selectable labels with transparent, non-editable text fields and text areas. A new window drag handler enables window movement in the undecorated splash frame. Error text rendering switches from HTML markup to plain text, relying on native text component wrapping.

Possibly related PRs

  • chsami/Microbot#1570: Both PRs modify SplashScreen error rendering, with the main PR converting error display to plain-text selectable components that directly support crash-details display features.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main changes: macOS launcher fixes and splash screen improvements, matching the primary objectives of the pull request.
Description check ✅ Passed The description provides comprehensive detail on both changes (macOS IllegalAccessError fix and splash screen UX improvements), directly aligned with the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant