It took more than I expected but here we are announcing another pgModeler release! This one has a special meaning for me because it marks a new step in my personal endeavor of creating something useful for the open-source community during these 16 years. pgModeler exists since I started to work as an IT professional, and being ahead of this project for so many years brought me so much experience, so much networking, and knowledge exchange that I can't measure the importance that this project has to my professional life. I'm really, really happy to be here writing about the first alpha release of a long-awaited version!
So, let's see what's new...
Redesigned user interface
pgModeler 1.0.0-alpha introduces a refreshed and responsive user interface with new icons, bigger elements, a dark theme, and a new software logo. All that is focusing on bringing more visual comfort while using pgModeler mainly for extended periods. This is the first of many iterations of UI improvements, my expectation is that when releasing 1.0.0 stable we have an even more enjoyable tool to work on! But the first results are pretty stunning and pleasant, I really liked how pgModeler looks now!
Dark theme support
One of the most frequent complaints about pgModeler was the lack of a way to use it on systems with dark themes. In fact, pgModeler was not designed initially for that purpose having all styles configured with light colors. So if a user tried to bypass this limitation the result would be disastrous. So, for pgModeler 1.0.0, I had promised that dark themes would be supported and that was done!
Before working on the dark theme support itself, it was needed to move all the options related to color settings from the General tab to the Appearance tab. Once moved all the settings to the new place, it was time to glue everything together and add the ability to switch the UI colors between different color schemas, thus, the basic theme support was created.
So, to apply the desired theme, you can choose a value in
User interface which can be
Light. The last two values are self-explanatory, but the
System default is there for a reason: it allows the user to use the global (system) color theme instead of the color schemas defined by pgModeler. Using the system default theme also allows you to set a color schema (dark or light) for syntax highlight fields so the character colors can combine with your system's theme. This is a small workaround until the users have the ability to create their own themes for the tool.
Basically, color themes in pgModeler contemplate UI elements (buttons, input fields, frames, and so on), syntax highlighting settings, and canvas colors (grid colors, canvas color, objects colors, etc). Putting everything together was a bit tricky but the result was pretty good! There are only two downsides related to this new feature:
Configuration files created on pgModeler 0.9.4 and below are not compatible anymore. So, in the first run, pgModeler 1.0.0 will try to migrate relationships and database connections settings when finding a previously installed pgModeler 0.9.x in the system. The other settings are all replaced by the new structure introduced by 1.0.0, so, unfortunately, you'll have to tweak everything again.
As said previously, there is no support for user-defined themes, yet... But the idea is to introduce an interface so the user can create themes as easily as they design their database models! :)
Below, we have a small comparison between light (classic) and dark themes. What about the dark one!? I really enjoy it! Oh, and before I forget, the dark theme is the default that you'll see when starting 1.0 for the first time or restoring the settings to their default. :)
Since this project will be moving to Qt 6 soon, the provided app images will not use older Qt versions anymore. They will be packaged using Qt 5.15.2 for now and when the porting to Qt 6 is ready, the latest framework version will be bundled with pgModeler's AppImage. I really like the idea behind AppImage, which is mainly focused on supporting older Linux distros via self-contained applications. But being a multiplatform software developer I have to follow all the advances in the other systems. This is always a big challenge because we have to balance backward compatibility and introduce new features via a more modern codebase. Of course, this can always change once older Linux distros used to create the AppImage start to support the Qt versions adopted by this project.
This is good news for supporter users using macOS! From now on, the same installer will be offered for paying users on all officially supported platforms: Linux, Windows, and macOS.
This version brings a long list of improvements and bug fixes in several parts of the tool, in a total of 90. You can check the complete changelog of this release here, anyway some key changes/fixes are described below:
- Added an extra tab in Messagebox stack trace info called "Extra info" that displays only error's extra info to quickly help to identify any problem.
- Added support for customizing objects' shadow color.
- Textboxes are now rounded at corners.
- Created the files ui-medium.conf and ui-small.conf that controls the ui style in medium (2k) and small (1080p and below) screen sizes.
- CLI now restores the changelog during the fix operation.
- Removed the code generation of rules/indexes/triggers in the "Code preview" tab at ViewWidget since these objects' codes aren't appended to the parent view's code.
- ObjectSelectorWidget was simplified to keep UI more uniform. Now it uses a QLineEdit instead of a QPlainTextEdit.
- Improved the Messagebox resizing during the first show.
- Disabling Qt 5.15.x and below due to the starting of the transition to Qt 6.x.
- Gridlines and delimiters lines now follow the objects' border width.
- Adjusted the colors of database objects in the dark theme.
- Minor adjustment in cursor icon when adding new graphical objects to the model.
- ObjectsScene's relationship addition line now follows the page delimiter colors.
- The configuration files directory in macOS is now named pgmodeler-1.0 to follow the same pattern as in other OSes.
- Changed the default source code font to 12pt.
- Adjusted the sizes of descriptors in RelationshipView, BaseTableView, and AttributesTogglerItem to reflect the new default font size.
- Changed default font size in canvas to 11pt.
- pgModeler 1.0 configuration directory was renamed from "pgmodeler" to "pgmodeler-1.0" since some config files are now incompatible with 0.9.x.
- UI stylesheets are now selected depending on the screen size.
- Improved the mechanism that guesses if an FK relationship can be rendered as 1:1 or 1:N.
- Minor adjust in CLI so the "hide-ext-attribs" property in models created before 0.9.2 can be correctly replaced by "collapse-mode" during the model fix operation.
- PostgreSQL 14 is now the default version for code generation.
- The workaround in CLI that forces the loading of the offscreen plugin will now be triggered only in the absence of $DISPLAY env var.
- Fixed the detection of ENTER/RETURN press to find objects in ObjectFinderWidget.
- Minor fix in CodeCompletionWidget to resize correctly according to the contents.
- Fixed a critical bug that was preventing the importing of data types in CamelCase form.
- Fixed a bug in RelationshipWidget that was not allowing the duplication of attributes and constraints.
- Fixed a bug in AttributesTogglerItem that was not resizing buttons when the user changed the font factor.
- Fixed an exception in ObjectFinderWidget when searching using attributes different from the name, comment, and schema.
- Fixed the long name of foreign-data wrappers.
- Fixed a bug when comparing serial and integer columns on diff that was not reusing sequences or changing types properly.
- Fixed the SVG exporting process avoiding truncating the resulting graphics.
Well, now it's time to work on some pending bug fixes and concentrate my efforts on the migration process to Qt6 as well as drop the support for PostgreSQL 9.x. You can always check how's the development by taking a look at the project's backlog. Please, don't forget to report any bug or request features at pgModeler's issue page.
That's it. As always, I hope you enjoy this new version! Please, don't forget to leave your thoughts in the comments section, your collaboration is very important to keep my work on this project active.
Until next time! ;)