GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — New Preferences Screen by Stefterv · Pull Request #1318 · processing/processing4

Conversation

@Stefterv

@Stefterv Stefterv commented Nov 7, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

After #1353

This PR adds Preferences Screen to the a new branch.

New features of this preferences screen:

Accesible
New design
Light/Dark mode

Todos (non-blocking)

  • New icons
  • Add the ability to undo the changes
  • Different implementation of the text font control
  • Swap surface and onSurface colors in dark mode
  • Windows Sketchbook path

Video

Screen.Recording.2025-11-06.at.15.19.03.mov

Tested on:

  • macOS arm
  • macOS Intel
  • Windows 11
  • Windows 10
  • Linux
    • Raspi
    • Ubuntu
    • Others

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Stefterv added 30 commits October 14, 2025 10:34
@Stefterv
Remove ContributionManager and ContributionPane UI files
7fecf27
Deleted ContributionManager.kt and ContributionPane.kt from the contrib/ui directory. This removes the Compose-based contributions manager and its detail pane prototypes which got merged unnecessarily
@Stefterv
Enhance Preferences reactivity and test coverage
838ea14
Refactored ReactiveProperties to use snapshotStateMap for Compose reactivity. Improved PreferencesProvider and watchFile composables with better file watching, override support via system properties, and added documentation. Updated PreferencesKtTest to use temporary files and verify file-to-UI reactivity.
@Stefterv
Merge branch 'clean-contributions-prototype' into preferenceskt-update
d459fd8
@Stefterv
Small bugfix for removed function
e1e1e3a
@Stefterv
Add compose ui test to the deps
20fa9be
@Stefterv
Refactor Locale class and add LocaleProvider test
4546a38
@Stefterv
Make setLocale parameter nullable in Locale class
643ec03
Changed the setLocale parameter in the Locale class to be nullable and updated its usage to safely invoke it. This allows for more flexible instantiation when a setLocale function is not required.
@Stefterv
Add compose ui test to the deps
06e3094
@Stefterv
Update locale change method in test
d42fb2f
Replaces the call to locale.setLocale with locale.set in LocaleKtTest to match the updated API for changing the locale.
@Stefterv
Add PDE window utilities for Compose and Swing
58c746b
Introduces PDESwingWindow and PDEComposeWindow classes to simplify creating themed and localized windows in Compose and Swing applications. Includes macOS-specific handling for full window content and localization support for window titles.
@Stefterv
Refactor beta welcome window handling
db69773
Replaces custom JFrame setup in WelcomeToBeta with PDESwingWindow and PDEComposeWindow, centralizing window logic and close handling. Adds onClose callback to PDESwingWindow for improved lifecycle management. Also ensures beta welcome preference is reset on forced update check.
@Stefterv
Remove ContributionManager and ContributionPane UI files (processing#…
d3681f3
…1276)

Deleted ContributionManager.kt and ContributionPane.kt from the contrib/ui directory. This removes the Compose-based contributions manager and its detail pane prototypes which got merged unnecessarily
@Stefterv
Refactor Locale class and add LocaleProvider test (processing#1283)
bf4d163
* Refactor Locale class and add LocaleProvider test

* Make setLocale parameter nullable in Locale class

Changed the setLocale parameter in the Locale class to be nullable and updated its usage to safely invoke it. This allows for more flexible instantiation when a setLocale function is not required.

* Add compose ui test to the deps

* Update locale change method in test

Replaces the call to locale.setLocale with locale.set in LocaleKtTest to match the updated API for changing the locale.
@Stefterv
Theming (processing#1298)
77eba30
* Add Material3-based Processing theme and typography

Introduces Colors.kt with custom color schemes for light and dark themes using Material3. Refactors Theme.kt to use Material3 theming, adds a PDETheme composable, and provides a desktop preview app for theme components. Updates Typography.kt to use Space Grotesk font family and defines new typography styles for Material3.

* Refactor to use Material3 and update theme usage

Replaces Material2 components with Material3 in WelcomeToBeta, removes custom PDEButton in favor of Material3 Button, and updates theme usage to PDETheme. Also simplifies background modifier in PDETheme and removes unused Kotlin Multiplatform plugin from build.gradle.kts.

* Add Space Grotesk font files and license

Includes SpaceGrotesk font variants (Bold, Light, Medium, Regular, SemiBold) and the associated SIL Open Font License. This enables usage of the Space Grotesk typeface in the project.

* Update markdown renderer to m3 and adjust UI

Switched markdown renderer imports from m2 to m3 and updated the dependency version to 0.37.0. Adjusted WelcomeToBeta window size, layout, and logo dimensions for improved appearance. Ensured Box in Theme.kt fills available space for better layout consistency.
@Stefterv
Merge branch 'welcome-screen' into compose-windows
4686345
@Stefterv
Merge pull request processing#1284 from Stefterv/compose-windows
3e04faa
Add PDE window utilities for Compose and Swing
@Stefterv
Switch from ProcessingTheme to PDETheme in window UI
830ecea
Replaces the use of ProcessingTheme with PDETheme in the PDEWindowContent composable
@Stefterv
Refactor preferences to Jetpack Compose UI
1c26bab
Replaces the legacy PreferencesFrame with a new Jetpack Compose-based preferences UI. Adds reactive preferences management using a custom ReactiveProperties class, and introduces modular preference groups (General, Interface, Other) with composable controls. Updates Base.java to launch the new preferences window, and refactors theme and window code for Compose integration.
@Stefterv
Remove obsolete TODO for onClose callback
8fe0585
@Stefterv
Refactor theme system to Material 3 color schemes
5ae8b84
Replaces legacy color definitions with Material 3 color schemes and introduces extended color support for warnings. Dialogs in Messages.kt are now implemented using Compose Material 3 components for a modern UI. Removes deprecated color sets and updates PDETheme to use new color schemes, improving consistency and maintainability.
@Stefterv
Add PDEWelcome Composable UI screen
ca29800
Introduces a new PDEWelcome.kt file with a Composable UI for the Processing welcome screen. Includes layout with buttons for language selection, new sketch, examples, and sketchbook, as well as a placeholder for right-side content and a main entry point for launching the window.
@Stefterv
Clean up handlePrefs method by removing comments
5a6f7fa
Removed commented-out code for preferences frame initialization.
@Stefterv
Merge pull request processing#1304 from Stefterv/preferences-screen
7965931
Refactor preferences to Jetpack Compose UI
@Stefterv
Merge branch 'welcome-screen' into preferenceskt-update
3fd4ea9
@Stefterv
Merge branch 'preferenceskt-update' into colors
40a1188
@Stefterv
Initial layout
2fc5682
@Stefterv
Revamp welcome screen UI and add social icons
6037275
Refactors the PDEWelcome screen to improve layout, update button icons, and add support for Discord, GitHub, and Instagram SVG icons. The welcome screen now receives a Base instance for proper action handling, and new methods replace deprecated ones in Base.java. Updates related menu actions to pass the Base instance as needed.
@Stefterv
Add example previews to welcome screen
33ad602
Replaces placeholder text on the right side of the PDEWelcome screen with a LazyColumn displaying example sketches. Each example attempts to show a preview image if available, or a placeholder icon otherwise. Introduces an Example data class and related image loading logic.
@Stefterv
Add hover-activated play button to example previews
20aac81
Introduced a hover effect on example preview images in the welcome screen, displaying a play button that opens the example when clicked. Refactored title key usage for consistency.
@Stefterv
Localize welcome screen UI strings
e036cdf
Replaced hardcoded strings in the PDEWelcome screen with localized values using the LocalLocale context. Added new keys for the welcome screen to the English and Dutch language property files to support internationalization.
Stefterv added 3 commits November 6, 2025 07:45
@Stefterv
Fixed a color issue
891aa80
@Stefterv
Improve preferences UI layout and window size
6ee6817
Increased the preferences window width from 800 to 850 pixels for better layout. Updated the General preferences to display FilterChip options in rows with spacing, improving visual organization and usability.
@Stefterv
Add theme selection and UI improvements to preferences
af4228a
Introduces a theme selector for the editor in the Interface preferences, allowing users to choose between system, dark, and light themes. Updates Coding and General preferences with improved layout and feedback, including a copied state for diagnostics. Updates localization strings to support new features and labels.
@Stefterv
Stefterv requested a review from catilac November 7, 2025 17:12
Stefterv added 2 commits November 10, 2025 17:18
@Stefterv
Added the ability to undo the changes + icon/language changes
15afdf0
@Stefterv
Update animation spec for slideInVertically
5e91e4e
Changed the animationSpec for slideInVertically from a 500ms EaseOutBounce to a 300ms default tween for consistency and smoother transitions.
@Stefterv
Stefterv changed the base branch from settings-screen to welcome-screen November 11, 2025 12:53
@Stefterv
Stefterv changed the base branch from welcome-screen to settings-screen November 11, 2025 12:53
@Stefterv

Stefterv commented Nov 11, 2025

Copy link
Copy Markdown
Member Author

Cleaned up the PR a bit by syncing settings-screen branch with welcome-screen-impl, so now it will be easier to review! @catilac

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Stefterv @SableRaf
Welcome screen implementation (processing#1307)
e1fcdb1
* Remove ContributionManager and ContributionPane UI files

Deleted ContributionManager.kt and ContributionPane.kt from the contrib/ui directory. This removes the Compose-based contributions manager and its detail pane prototypes which got merged unnecessarily

* Enhance Preferences reactivity and test coverage

Refactored ReactiveProperties to use snapshotStateMap for Compose reactivity. Improved PreferencesProvider and watchFile composables with better file watching, override support via system properties, and added documentation. Updated PreferencesKtTest to use temporary files and verify file-to-UI reactivity.

* Small bugfix for removed function

* Add compose ui test to the deps

* Refactor theme system to Material 3 color schemes

Replaces legacy color definitions with Material 3 color schemes and introduces extended color support for warnings. Dialogs in Messages.kt are now implemented using Compose Material 3 components for a modern UI. Removes deprecated color sets and updates PDETheme to use new color schemes, improving consistency and maintainability.

* Add PDEWelcome Composable UI screen

Introduces a new PDEWelcome.kt file with a Composable UI for the Processing welcome screen. Includes layout with buttons for language selection, new sketch, examples, and sketchbook, as well as a placeholder for right-side content and a main entry point for launching the window.

* Initial layout

* Revamp welcome screen UI and add social icons

Refactors the PDEWelcome screen to improve layout, update button icons, and add support for Discord, GitHub, and Instagram SVG icons. The welcome screen now receives a Base instance for proper action handling, and new methods replace deprecated ones in Base.java. Updates related menu actions to pass the Base instance as needed.

* Add example previews to welcome screen

Replaces placeholder text on the right side of the PDEWelcome screen with a LazyColumn displaying example sketches. Each example attempts to show a preview image if available, or a placeholder icon otherwise. Introduces an Example data class and related image loading logic.

* Add hover-activated play button to example previews

Introduced a hover effect on example preview images in the welcome screen, displaying a play button that opens the example when clicked. Refactored title key usage for consistency.

* Localize welcome screen UI strings

Replaced hardcoded strings in the PDEWelcome screen with localized values using the LocalLocale context. Added new keys for the welcome screen to the English and Dutch language property files to support internationalization.

* Add language selector and UI improvements to welcome screen

Introduces a language selection dropdown to the PDE welcome screen using a shared composable from preferences. Refactors the layout for better spacing, updates example cards with animated overlays, and replaces the show-on-startup button with a checkbox. Also adds a new translation key for the open example button.

* Refactor example listing and randomize welcome sketches

Moved example folder listing logic in Contributions.ExamplesList to a companion object function for reuse. Updated PDEWelcome to display a randomized selection of sketches from all available examples, replacing the previous static list.

* Refactor example handling to use Sketch objects

Replaces Example objects with Sketch objects for managing example sketches in the welcome screen. Updates all relevant usages to reference Sketch properties, simplifying the code and improving clarity.

* Add vertical scrollbar to welcome screen examples

Introduces a VerticalScrollbar to the examples list in the PDEWelcome screen for improved navigation. Also adjusts spacing and arrangement in several UI components for better layout consistency, and updates the welcome screen title in the language properties.

* Add rounded corners to buttons in PDEWelcome

Introduced a RoundedCornerShape with 12.dp radius and applied it to various buttons in the PDEWelcome screen for improved UI consistency and aesthetics.

* Refactor PDEWelcome UI and add Sketch card composable

Refactored the PDEWelcome screen for improved structure and readability, including extracting the example preview into a reusable Sketch.card composable. Updated icon usage for RTL support, adjusted layout and padding, and improved the examples list initialization. Also, customized scrollbar style in PDETheme for a more consistent UI appearance.

* Add unique window handling to prevent duplicates

Introduces a 'unique' parameter to PDESwingWindow and PDEComposeWindow, allowing windows to be identified by a KClass and preventing multiple instances of the same window. If a window with the same unique identifier exists, it is brought to the front and the new one is disposed. This helps avoid duplicate welcome or other singleton windows.

* Refactor dialog handling and improve AlertDialog UI

Refactored the showDialog function to accept a modifier and updated all AlertDialog usages to use RectangleShape and the modifier parameter. Improved dialog sizing and positioning by dynamically adjusting the window size based on content, and set additional window properties for better integration on macOS.

* Set application window icon using Toolkit.setIcon

Added calls to Toolkit.setIcon(window) in Start.kt and Window.kt to ensure the application window icon is set consistent

* Simplify imports and update scrollbar colors in Theme.kt

Consolidated import statements for Compose libraries using wildcard imports to reduce verbosity. Updated scrollbar hover and unhover colors to use the default outlineVariant color without alpha modification.

* Removing the Preferences work to keep the PR clean

* Update background color in PDEWelcome UI

Changed the background color from surfaceContainerLow to surfaceContainerLowest in the PDEWelcome composable for improved visual consistency with the MaterialTheme.

* Tweak welcome actions naming and order

- Rename `Empty Sketch` to `New Sketch`
- Rename `Sketchbook` to `My Sketches`
- Move `Open Examples` below `My Sketches`

* Rather than setting the decorations app wide, just modify the editor screen

---------

Co-authored-by: Raphaël de Courville <[email protected]>
catilac
catilac requested changes Dec 3, 2025
View reviewed changes

@catilac catilac left a comment

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I tried to open the preferences panel and the old preferences panel showed up

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Stefterv added 6 commits December 8, 2025 05:57
@Stefterv
Merge branch 'main' into welcome-screen
33f45b5
@Stefterv
Merge branch 'main' into welcome-screen
9f588bd
@Stefterv
Replace ProcessingTheme with PDETheme in WelcomeSurvey
4b39a23
@Stefterv
Add Material Theme Builder file headers
243789b
Added autogenerated file headers to Color.kt and Theme.kt indicating they were generated by the Material Theme Builder tool and should not be edited directly. Also reordered imports in Theme.kt for consistency.
@Stefterv
Fix preferences file override and update test property
8883c02
Corrects the logic for selecting the preferences file in PreferencesProvider to use the override if present. Updates the test to set the correct system property for the settings folder.
@Stefterv
Merge branch 'welcome-screen' into preferences-impl
5981e3e
@Stefterv
Stefterv changed the base branch from settings-screen to main December 8, 2025 06:05
@Stefterv
Stefterv requested a review from catilac December 8, 2025 06:05
@Stefterv
Update Theme.kt
91cf11b
@catilac

catilac commented Dec 8, 2025

Copy link
Copy Markdown
Collaborator

The "system" "dark" and "light" setting doesn't do anything. do we want to remove that? or are you planning to implement?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Stefterv

Stefterv commented Dec 9, 2025

Copy link
Copy Markdown
Member Author

The dark and light modes are implemented, I broke the switching when merging main into my branch, the last commit has fixed that.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@catilac

catilac commented Dec 9, 2025

Copy link
Copy Markdown
Collaborator

This commit 91cf11b ? It's not working on wayland i don't think!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@catilac

catilac commented Dec 9, 2025

Copy link
Copy Markdown
Collaborator

Okay this is working but not on my system! Approving!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

catilac
catilac approved these changes Dec 9, 2025
View reviewed changes
Stefterv added 3 commits December 9, 2025 16:33
@Stefterv
Merge branch 'main' into preferences-impl
ba82cfd
@Stefterv
Normalize backward slashes in preferences file
3524622
Added logic to replace backward slashes with forward slashes in the preferences file to ensure consistent path formatting. Updated tests to verify the normalization behavior.
@Stefterv
Add support for preferences file override and path normalization
c53c7da
Allows overriding the preferences file location via the 'processing.app.preferences.file' system property. Also normalizes slashes in preference values to forward slashes. Updates tests to verify path normalization and override behavior.
catilac
catilac approved these changes Dec 10, 2025
View reviewed changes
@catilac
catilac merged commit 201cab6 into processing:main Dec 11, 2025
6 checks passed

Uh oh!

There was an error while loading. Please reload this page.

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

Reviewers

@catilac catilac catilac approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@Stefterv @catilac
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.