Update main with latest dev changes#117
Merged
DaRealTurtyWurty merged 42 commits intomainfrom Jan 16, 2026
Merged
Conversation
Signed-off-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
Extended the auto-closing character logic in JsonCodeEditorPane to support parentheses, single quotes, angle brackets, and backticks for improved editing experience.
* Added new language localization: Russian (ru-ru) * Update src/main/resources/assets/railroad/lang/ru_ru.lang Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> * Update src/main/resources/assets/railroad/lang/ru_ru.lang Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> * Update src/main/resources/assets/railroad/lang/ru_ru.lang Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> * Update src/main/resources/assets/railroad/lang/ru_ru.lang Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> --------- Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Added a comprehensive security policy outlining supported versions, vulnerability reporting, disclosure policy, and best practices for plugin developers. Signed-off-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
Refactors KeybindsList to a card-based, searchable, and filterable UI with category chips, empty state, and shortcut management. Updates KeyComboNode for better editing and display, adds new localized strings, and introduces a dedicated CSS file for keybinds styling.
* feat(welcome): Display project facets as tags in the project list Updates ProjectListCell to display a project's facets (e.g., Java, Gradle) as styled tags on the welcome screen. This gives users an at-a-glance understanding of a project's nature directly from the list. * Apply suggestions from code review Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> Signed-off-by: Subhashini Ganesh <105427420+subha0319@users.noreply.github.com> * feat(welcome): Display project facets as tags in the project list Updates ProjectListCell to display a project's facets (e.g., Java, Gradle) as styled tags on the welcome screen. This gives users an at-a-glance understanding of a project's nature directly from the list. --------- Signed-off-by: Subhashini Ganesh <105427420+subha0319@users.noreply.github.com> Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
Major refactor of JavaCodeEditorPane to improve diagnostics, syntax highlighting, code completion, and bracket matching. Replaces previous error and completion logic with more robust, asynchronous implementations using AST parsing and type analysis. TextEditorPane now features debounced auto-saving, external file change detection, and improved font resizing. Removes legacy code and streamlines event handling for better performance and maintainability.
Introduces a signature help feature in JavaCodeEditorPane that displays method and constructor signatures as a popup near the caret. Implements logic to compute active parameter, display relevant type information, and styles the popup and its contents in code-area.css for improved user experience during code editing.
Moved signature help computation from JavaCodeEditorPane to new SignatureHelpProvider interface and JdtSignatureHelpProvider implementation. Added SignatureHelp and ParameterInfo records for immutable signature metadata. JavaCodeEditorPane now delegates signature help requests to the provider, improving separation of concerns and maintainability.
Extracted completion-related classes (CompletionItem, CompletionProvider, CompletionResult, JdtCompletionProvider) into a new package for better modularity and reuse. Updated JavaCodeEditorPane and JdtSignatureHelpProvider to use the new completion API, removing duplicated logic and improving maintainability.
Introduces DiagnosticsProvider, EditorDiagnostic, and JdtDiagnosticsProvider for unified diagnostics handling. Refactors JavaCodeEditorPane to use EditorDiagnostic instead of ProblemDiagnostic, removing duplicate logic and improving modularity and maintainability.
Changed the Discord menu item URL to 'https://discord.turtywurty.dev/' and removed unnecessary 'this' qualifier in getMenus().
Introduced isMac(), isWindows(), and isLinux() methods to OperatingSystem for cleaner OS checks. Refactored usages across the codebase to use these methods, improving readability and maintainability, especially for Mac-specific logic in menu bar handling and keybind localization.
* Updated Russian (ru-ru) localization * Updated Russian (ru-ru) localization 2.fix
Introduces a 'square' property and setter to RRButton, allowing buttons to be forced into a square shape via a style class. Updates button.css to ensure square buttons have fixed dimensions and no padding.
Updated RRButton initialization to add 'rr-button' style class only if not already present, preventing duplicate entries and ensuring custom styles override the default button theme.
Updated RRListView and RRTextField to only add custom style classes if they are not already present, avoiding duplicate entries in the style class list.
* add nix flake * add lombok * fix file picker error on gtk4 * fix missing libs * Delete .envrc --------- Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
* Added markdown viewer - Added a new pane that allows users to view and edit markdown files more easily, with a markdown viewer. * Introduced live updating of markdown preview - The markdown preview now updates live when the markdown file is edited. - Created fields for the various panes for increased reusability. * Fixed invisible code view bug and auto scroll when switching views - Refactor MarkdownPreviewPane to improve content display and layout management. - Fixed a bug where the code view is invisible. - The code editor pane now auto scrolls to the top when switching between split view and code editor view. * Refactor MarkdownPreviewPane to create view and markdown buttons dynamically * Adds code for markdown formatting buttons Adds buttons for headings (with a submenu for H1-H6), bold, italic, quote, code, link, unordered list and ordered list. Each button inserts the corresponding markdown syntax at the current cursor position in the editor. Temporarily removed the task list button as it isn't previewed correctly. * Dark theme for the markdown preview pane Added dark theme for the preview markdown pane. This is enabled by default when the theme name contains the word "dark", and automatically updates to either dark or light mode when a new theme is applied. In the future, themes will have dark/light mode tags which will be used instead. * Fixed requested changes for pull request * Remove unnecessary comment Signed-off-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> * Fixed copilot requested changes for pull request --------- Signed-off-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
* Discover JDKs during initialisation (#87) * Add JDK management UI and brand detection Introduces new settings panes for managing JDK scan paths and manual JDKs, adds detected JDK list UI, and enhances JDK brand detection with icons and images. Updates JDKManager to support exclusion and manual addition of JDKs, and adds new settings for JDK management. Integrates SVG support and updates build dependencies. * Refactor JDK discovery logic and add JDKUtils helper Moved JDK discovery and parsing utilities from JDKManager to a new JDKUtils class for better separation of concerns. Updated JDKManager to use JDKUtils and FileUtils for path normalization and JDK metadata extraction. Improved platform-specific JDK detection, added more robust version parsing, and enhanced comments for clarity. Minor UI logic fix in DetectedJdkListPane for icon handling and version formatting. * Implement copilot suggestions - Check for vendor and implementor as first port of call - Scan only C-Z drives as A and B are floppy only. - Add setting for java version checking timeout - Minor formatting cleanups --------- Signed-off-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
* Adds fullscreen toggle functionality - Implements a fullscreen toggle feature using the F11 key or a menu item. - This allows users to easily switch between windowed and fullscreen modes. - The key can be changed in the keybinds setting menu. * Fixed bug Fixed a bug preventing the fullscreen taskbar button from working correctly. * Fixed a bug Removed a line of code that caused the screen to be set to fullscreen then windowed when the f11 key was pressed * Extracted repeated code to method. Extracted repeated code and created a new method in WindowManager to contain this. * Update src/main/java/dev/railroadide/railroad/ide/IDESetup.java Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> Signed-off-by: Alex <88453457+FrostyFlippper@users.noreply.github.com> * Update src/main/java/dev/railroadide/railroad/settings/keybinds/Keybinds.java Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com> Signed-off-by: Alex <88453457+FrostyFlippper@users.noreply.github.com> --------- Signed-off-by: Alex <88453457+FrostyFlippper@users.noreply.github.com> Co-authored-by: TurtyWurty <43997792+DaRealTurtyWurty@users.noreply.github.com>
* Move around some directories to be more consistent * Create ProjectDataStore * Fix weird import error (unsure why this was here) * Improve file path resolution and watcher cleanup Enhances security by verifying resolved file paths do not escape the project data directory using real paths. Also refactors watcher shutdown logic to ensure both the watch service and executor are properly closed.
* Add core run configuration system (before details pane) * Refactor run configuration form handling and validation Updated RunConfigurationData and related classes to pass the RunConfiguration instance to form creation methods, enabling improved validation and context handling. Refactored RunConfigurationEditorPane to cache and manage configuration form contexts per UUID, and implemented proper form validation and data application for configuration changes. Improved GradleRunConfigurationType to close handles asynchronously and merged environment variables with system environment. * Refactor IDESetup and implement stop and restart buttons IDESetup became really hard to work with in this PR, and so even though the changes are a bit unrelated, I figured I'd do this now rather than keep delaying it. Stop Buttons for run configurations have been added, with support for stopping multiple configurations. The run and debug buttons now turn into restart buttons for configurations that allow multiple ran at once. The run configuration drop-down has been cleaned up and fixed a little bit, though it still needs some work to iron out bugs. * Refactor compound run config selection and execution Compound run configurations now store selected configuration UUIDs instead of direct references, resolving them at execution time. Added FormRunConfigurationPicker and RunConfigurationPickerComponent for UI selection, updated form and validation logic, and improved execution handling for parallel/sequential modes. Also fixed Path conversion in form data application for Java, Jar, and ShellScript run configs, and updated styles and localization for the new picker UI. * Add Gradle task autocomplete and validation Introduces auto-complete support for text fields, including a new RRAutoCompleteTextField and AutoCompleteOptions. Gradle run configuration now loads and caches Gradle tasks and CLI options for autocomplete, with improved validation for Gradle project paths and JAR files. Updates language resources for new validation messages. * Cleanup and fix text field autocomplete suggestion
* Create JDK CLI system * Add javadocs to all JDK-Java Process related code
* Updated Russian (ru-ru) localization (2nd) * Update src/main/resources/assets/railroad/lang/ru_ru.lang Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> --------- Signed-off-by: fredtheking <113716640+fredtheking@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Overhaul Gradle integration with Tooling API This commit completely revamps the Gradle integration by replacing the old, fragile system with a new one built on the Gradle Tooling API. This provides a more robust and feature-rich foundation for interacting with Gradle projects. The key changes include: - New Service Layer: Introduced a new service layer with GradleExecutionService and GradleModelService to handle task execution and model building respectively. This separates concerns and makes the system more modular. - Gradle Tooling API: The new implementation leverages the Gradle Tooling API to fetch project models and execute tasks. This is a more reliable and efficient approach than the previous method of parsing gradle --help output. - Asynchronous Operations: All Gradle operations are now asynchronous, using CompletableFuture to avoid blocking the UI thread. - Event-Driven Architecture: The execution service now emits events for progress, output, and status changes, allowing for a more responsive and informative UI. - New Data Models: Introduced new data models for Gradle projects, tasks, and arguments, providing a structured representation of Gradle metadata. - Code Cleanup: Removed the old GradleHelper, GradleHelpParser, and GradleTask classes. * Improve autocomplete filtering for Gradle tasks Refactored GradleRunConfigurationData to use a query-based autocomplete filter for Gradle tasks, providing more relevant suggestions based on user input. Adjusted RRAutoCompleteTextField popup sizing logic for better UI consistency. * Flush output after every write in GradleOutputStream Overrides write methods to call flushOutput after each write operation, ensuring output is processed immediately. This improves responsiveness when handling Gradle output streams. * Delete GradleProjectContext.java * Add TODO for runtime JDK change support Added a TODO comment in GradleManager to indicate future support for changing the JDK at runtime, which would require recreating the execution service. * Fix JVM argument handling in Gradle execution service Improves JVM argument processing by splitting and filtering arguments before adding them to the build. Also replaces setJvmArguments with addJvmArguments for debug JVM arguments to ensure proper argument accumulation. * Add TODO for custom JVM support in Gradle connector A TODO comment was added to indicate that setting Java home via environment.jvm() should be enabled when custom JVM support is implemented. * Change Gradle model refresh to non-forced mode Updated the fetchTasksForProject method to call refreshModel with 'false' instead of 'true', preventing forced refreshes of the Gradle model. This will improve performance and avoid unnecessary reloads. * Fix type check in Gradle environment loop Replaces unsafe cast with instanceof check for GradleRunConfigurationData in the configurations loop to prevent ClassCastException.
* Fix styling and translation of the appearence section * Added a lot of new UI components * Fix: Theme preview window * Fix styling and translation of the appearence section * Added a lot of new UI components * Fix: Theme preview window * Fixa buncha things * Fix stuff * Make translation of components easier, using beans properties were i cared to * Fixed typos & minor issues * Applied remarks of Turty * Fixed localized text formatting error * Fixed Theme related UI * Removed impossible statement * Fixes and sunshine :) --------- Co-authored-by: Exanc <12597611-Exanc@users.noreply.gitlab.com>
* Fix duplicate control key on Windows * Fix localization --------- Co-authored-by: Exanc <12597611-Exanc@users.noreply.gitlab.com>
…s) (#115) * Add Gradle UI components and refactor Gradle model Introduces new Gradle UI classes for project and task context menus, task tree builder, and tasks pane. Refactors RRButton to use a support class for shared logic and adds LocalizedTab for localized JavaFX tabs. GradleSettings is converted from a record to a class with getters/setters, and related usages are updated. GradleModelMapper and GradleTaskModel are updated to associate tasks with their project, improving model mapping and equality checks. GradleManager now supports saving Gradle settings. Various improvements and new features for Gradle integration and UI localization. * Add Gradle sources download feature Introduces a new 'Download Sources' button in the Gradle tool window, which triggers a bundled init script to download sources for all Gradle projects using the updated download-sources plugin (v1.0.1). Implements supporting logic in GradleManager and adds the required init script resource. * Reuse existing Gradle run configurations if available GradleTaskContextMenu now checks for an existing run configuration before creating a new one, preventing duplicate configurations for the same Gradle task. Added a helper to set the selected run configuration in RunConfigurationManager. GradleTasksPane updated to use the new logic. * Refactor Gradle UI to support dependency tree view Replaces GradleTasksPane and related classes with a generic GradleTreeViewPane and GradleTreeBuilder interface, enabling both task and dependency tree views. Adds support for displaying Gradle dependency configurations and their trees in the UI, updates model mapping to include dependency data, and refactors context menus and resource keys for consistency. Removes obsolete task tree classes and updates styles and resource references accordingly. * Remove plugin properties files from META-INF Deleted dev.railroadide.fabricExtractorPlugin.properties and dev.railroadide.javaVersionExtractorPlugin.properties from META-INF/gradle-plugins * Refactor Gradle model to use plugin DTOs Replaces custom Gradle model and task classes with DTOs from railroad-gradle-plugin. Removes obsolete mapping and argument classes, updates UI and service layers to use new types, and simplifies model loading logic. Also updates build.gradle to depend on the unified plugin and removes unused init scripts. This is a WIP. * Refactor Gradle integration and improve model loading Refactored GradleManager to detect Gradle projects and extract Gradle version directly from gradle-wrapper.properties. Updated GradleFacetDetector to simplify facet data and rely on GradleManager for detection. Improved Gradle model loading by injecting an init script for plugin application in ToolingGradleModelService. Enhanced GradleTasksPane and GradleDependenciesPane to extract data from the cached model. Added error logging for model reload failures. Moved Gradle tab opening logic into a reusable method in IDESetup. Added the init-gradle-plugin.gradle script to resources. * Refactor Gradle plugin integration and dependency tree Updated Gradle plugin usage to 'RailroadGradlePlugin:1.0.0' and refactored init scripts for improved plugin application. Enhanced dependency tree builder to group configurations by module and display module nodes. Improved model service to handle missing models gracefully. Minor code cleanups and bug fixes in JavaFacetDetector, GradleTasksPane, and JDK class. * Implement copilot suggestions and fix merge errors --------- Signed-off-by: Ryan <43997792+DaRealTurtyWurty@users.noreply.github.com>
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 introduces the recent commits from dev to the main branch. A brief summary of said changes is as follows, but check for the full commit list for exact changes.
Localization UTF-8
Localization now supports UTF-8 allowing for languages such as russian or chinese to work. Work still needs to be done to allow for RTL languages, however.
Russian language added
Russian language has been added now that UTF-8 languages are possible.
Admin-related changes
UI redesigns
Dynamic Language Loading
Languages can now be loaded purely from the language files in the resources. It is no longer required to have them hardcoded.
Display facets for project in welcome screen
Facets now display as tags in the project list in the welcome screen.
Rewrite code editor
Add support for developing with NixOS
Adds flake.lock and flake.nix for easier development on NixOS
Implement markdown viewer
Added a markdown viewer with rich view, code view and split view, with toolbar for bolding, headings and more.
JDK Discovery and Management
The system/user's JDKs are now discovered during initialization and remembered by Railroad, for later ability to select a specific JDK. This system also supports adding custom paths to JDKs and will later be extended to allow for downloading JDKs.
Fullscreen Toggle
Toggling between fullscreen and not using a keybind and the menu item in the IDE now work.
Per-project data
Each project can now store its own data which will live inside
$PROJECT_FOLDER/.railroad/. These files will be managed independently by the system that uses them, and have no specific file type or data structures required (this is by design to allow for fluid data storage and configuration).Run Configurations
The IDE now supports being able to run a program. This can be through a variety of formats:
Java Process Builder
Running java processes is now made significantly easier with the Java Process Builder, which allows you to easily construct common Java processes, passing in the required arguments. This system supports many of the default java command-line executables, including:
jarjarsignerjavadocjavajavapjcmdjdbjdeprscanjdepsjfrjinfojlinkjmapjmodjpackagejpsjshelljstackjstatjstatdkeytoolrmicrmidrmiregistryserialverGradle Manager
Handling gradle integration is now made significantly easier with the Gradle Manager, which allows for direct integration with the gradle tooling system for a specific project, and with no need to directly access it outside of that system.
Fixes to theme-related issues and introduce new UI components
Fixes a bunch of inconsistencies and bugs int he theme/styling of many Railroad components, and also introduces some new components for future consistency.
Fixes to keybinds having duplicate control keys
Keybinds had an issue where pressing control would insert it multiple times, this has been fixed.
Gradle Tab
Introduces a new tab within the IDE for Gradle projects which provides the ability to list and run specific gradle tasks, list dependencies, download sources, sync the gradle project and some other internal gradle-related changes and improvements, including the connection to a new Gradle plugin developed specifically for Railroad.