# GNOME Builder 43.6 Changes since 43.5 * Backport a fix for preferences crashing due to GtkExpression bindings. * Fix default font size in editor. * Fix top padding for editor. * Fix decoding of hex-encoded UTF-8 from gdb in path names. # GNOME Builder 43.5 Changes since 43.4 * Fix selection for number of build CPUs in preferences with additional concurrency options. * Allow closing tabs with ctrl+w when focus is within the tab bar. * Use "meson setup" when initializing build directories. * Fix various runtime warnings. * Fix tooltips for combo rows in preferences. * Improve zoom-with-wheel-scroll in some situations. * Fix save/record actions with Sysprof plugin. * Fix editing of configure options in preferences. * Fix terminal search. * Add README.md to meson templates. * Fixes to Rust GTK project template. * Translation updates # GNOME Builder 43.4 Changes since 43.3 * Build system support for both webkit2gtk-5.0 and webkitgtk-6.0 to allow for various platforms to support the version that will get long term support maintaining ABI. * Fix some C-indenter peculiarities from the GTK 4 port including indentation after comments and overwrite ) triggering parameter alignments. * Fix a keyboard shortcut in overview # GNOME Builder 43.3 Changes since 43.2 * Update GTK Rust template to recent gtk4-rs release. * Spellcheck fixes. * UI improvements to various panels including GAction fixes. * Preference dialog widgetry fixes. * Clear diagnostics when starting a new build. * New "shellcheck" plugin providing diagnostics for shell scripts * Add print support for web pages. * Addition of various default snippet variables. * Vim integration improvements when interacting with some internal features such as bracket/brace overwrite. * Ensure sourceview scrolls when moving between search results instead of jumping, while maintaining jump support when file is opened. * Fix various action activation for web page menus. * CSS style fixes for :backdrop pseudo selector. * Fix measurements for gutter when font is scaled. * Fix console interaction for debugger UI. * Translation updates. # GNOME Builder 43.2 I'm trying harder to get minor releases out to users this cycle so that papercuts are resolved quickly with the GTK 4 port. This release continues on that effort. * Use preferred $SHELL for $PATH discovery on host to ensure we pick up various $PATH modificiations. * Disable support for Fish when crossing container boundaries, it caused too many runtime compat issues. A default shell fallback will be used. * The meson plugin gained support for extracting run commands for executables installed to $prefix/bin. * Remove <> from insert-matching-braces. * gdbwire amalgamation updated for bugfixes. * Silence stderr when using gdb to avoid merging of stderr/stdout. This fixes various issues with using GDB across containers. * Various workspace UI fixes. * Path resolution fixes when resolving paths across container boundaries. * Build flag extraction fixes, particularly around -isystem use and C++ build flags with libclang. * Fixes for display of C/C++ parameters in code completion. * Fixes to spellcheck invalidation. * Performance fixes for repeated lookups of programs in runtime paths. * GTK 4 project template improvements. * Translation updates Thanks to everyone who filed bugs! # GNOME Builder 43.1 Thanks to all of the prompt testing by users, we have a new release with may bug fixes for you this week. * Raise debug panel when debug session begins. * Fix how file-descriptors are passed through flatpak-spawn to the host> * Improve Meson run command provider to support CLI applications. * Fix support for using deviced to run Flatpak application on remote device. * Fix icon for LSP search results in global search. * Use -Wno-unused-function for headers for Clang diagnostics to avoid reporting errors for static inlines. This removes a workaround from previous releases of Builder which causes errors with some C++ code. * Fix style-preview height in preferences window. * Fix TTY integration with podman containers so color terminals work with the build panel. * Include a backend-specific error message when version control cloning files in the greeter workspace. * Fix invalid property value in URL bar for webkit pages. * Port meson and cargo plugins to use run commands. This fixes an issue where run contexts don't know they need TTY support until too late. This affected podman usage. * Port git plugin to use run commands for submodule initialization. This also helps ensure we have TTY access. * Fix "hold" counts on document buffers so they cannot be reclaimed immediately after loading of the buffer completes. * When renaming files in the project-tree, the old file will be closed and the new file re-opened in it's place. Previously we only closed the file and did not re-open. * gnome-builder-git daemon gained some optimizations and improvements around monitoring .git indexes. * Git file changes are now properly reloaded after commits are detected to the underlying index. * Life-cycle tracking of highlighter/completion providers for Ctags has been improved. * The empty-state for page frames has been updated to fit better with adwaita styling. * Layered settings for syntax languages has been fixed. * Translation updates # GNOME Builder 43.0 After about 6 months of development, GNOME Builder 43.0 is here! This is the truly the largest release of Builder yet, with nearly every aspect of the application improved in some way or another this cycle. ## Modern and Expressive Theming The most noticeable change, of course, is the port to GTK 4. Builder now uses WebKit, VTE, libadwaita, libpanel, GtkSourceView, and many other libraries recently updated to support GTK 4. Like we did for GNOME Text Editor, Builder will restyle the application window based on the syntax highlighting scheme. In practice this feels much less jarring as you use the application for hours. ## The Foundry Behind the scenes, the "Foundry" behind Builder has been completely revamped to make better use of SDKs and runtimes. This gives precise control over how processes are created and run. Such control is important when doing development inside container technologies. Users can now define custom "Commands" which are used to run your project and can be mapped to keyboard shortcuts. This allows for the use of Builder in situations where it traditionally fell short. For example, you can open a project without a build system and use commands to emulate a build system. Furthermore, those commands can be used to run your application and integrate with tooling such as the GNU debugger, Valgrind, Sysprof, and more. Controlling how the debugger was spawned has been a long requested feature by users. ## Unit Testing In previous version of Builder, plugins were responsible for how Unit Tests were run. Now, they also use Run Commands which allows users to run their Unit Tests with the debugger or other tooling. ## Keyboard Shortcuts Keyboard shortcuts were always a sore spot in GTK 3. With the move to GTK 4 we redesigned the whole system to give incredible control to users and plugin authors. Similar to VS Code, Builder has gained support for a format similar to "keybindings.json" which allows for embedding GObject Introspection API scripting. The syntax matches the template engine in Builder which can also call into GObject Introspection. ## Command Bar and Project Search We've unified the Command Bar and Project Search into one feature. Use Ctrl+Enter to display the new Global Search popover. We do expect this feature to be improved and expanded upon in upcoming releases as some features necessary are still to land within a future GTK release. ## Movable Panels and Sessions Panels can be dragged around the workspace window and placed according to user desire. The panel position will persist across future openings of the project. Additionally, Builder will try to save the state of various pages including editors, terminals, web browsers, directory listings, and more. When you re-open your project with Builder, you can expect to get back reasonably close to where you left off. Closing the primary workspace will now close the project. That means that the state of secondary workspaces (such as those created for an additional monitor) will be automatically saved and restored the next time the project is launched. ## GtkSourceView Core editing features have been polished considerably as part of my upstream work on maintaining GtkSourceView. Completion feels as smooth as ever. Interactive tooltips are polished and working nicely. Snippets too have been refined and performance improved greatly. Not all of our semantic auto-indenters have been ported to GtkSourceIndenter, but we expect them (and more) to come back in time. There is more work to be done here, paricularly around hover providers and what can be placed in hover popovers with expectation that it will not break input/grabs. ## Redesigned Preferences Preferences have been completely redesigned and integrated throughout Builder. Many settings can be tweaked at either the application-level as a default, or on a per-project basis. See "Configure Project" in the new "Build Menu" to see some of those settings. Many new settings were added to allow for more expressive control and others improved open. Use Ctrl+, to open application preferences, and Alt+, to open your project's preferences and configurations. ## Document Navigation Since the early versions of Builder, users have requested tabs to navigate documents. Now that we're on GTK 4 supporting that in a maintainable fashion is trivial and so you can choose between tabs or the legacy "drop down" selector. Navigation tabs are enabled by default. Some of the UI elements that were previously embedded in the document frame can be found in the new workspace statusbar on the bottom right. Additionally, controls for toggling indentation, syntax, and encoding have been added. Switching between similar files is easy with Ctrl+Shift+O. You'll be displayed a popover with similarly named files to the open document. The symbol tree is also still available, but moved to the statusbar. Ctrl+Shift+K will bring it up and allow for quick searching. ## WebKit A new web browser plugin was added allowing you to create new browser tabs using Ctrl+Shift+B. It is minimal in features but can be useful for quick viewing of information or documentation. Additionally, the html-preview, markdown-preview, and sphinx-preview plugins have been rewritten to build upon this WebKit integration. ## Plugin Removals Some features have been removed from Builder due to the complexity and time necessary for a proper redesign or port. The Glade plugin (which targets GTK 3 only) has been removed for obvious reasons. A new designer will replace it and is expected as part of GNOME 44. Devhelp has also been removed but may return after it moves to supporting GTK 4. Additionally, other tooling may supersede this plugin in time. The code beautifier and color-picker were also removed and will likely return in a different form in future releases. However, language servers providing format capabilities can be enabled in preferences to format-on-save. ## Project Templates Project templates have been simplified and improved for GTK 4 along with a new look and feel for creating them. You'll see the new project template workflow from the application greeter by clicking on "Create New Project". ## Top Matches Heavy users of code completion will notice a new completion result which contains a large star (★) next to it. This indicates that the proposal is a very close match for the typed text and is getting resorted to the top of the completion results. This serves as an alternative to sorting among completion providers which is problematic due to lack of common scoring algorithms across different data sources. ## Sysprof Integration Tooling such as Sysprof went through a lot of revamp too. As part of this process I had to port Sysprof to GTK 4. Additionally, I created new tooling in the form of `sysprof-agent` which allows us to have more control when profiling across container boundaries. Tools which need to inject LD_PRELOAD (such as memory profilers) now work when combined with an appropriate SDK. ## Language Servers Language servers have become a part of nearly everyone's development toolbox at this point. Builder is no different. We've added support for a number of new language servers including jdtls (Java), bash-language-server (Bash), gopls (Golang) and improved many others such as clangd (C/C++), jedi-language-server (Python), ts-language-server (JavaScript/Typescript), vls (Vala), rust-analyzer (Rust), blueprint, and intelephense (PHP). Many language servers are easier to install and run given the new design for how cross-container processes are spawned. ## Quick Settings From the Run Menu, many new quick settings are available to tweak how the application runs as well as well as configure tooling. For example, you can now toggle various Valgrind options from the Leak Detector sub-menu. Sysprof integration also follows suit here by allowing you to toggle what instruments will be used when recording system state. To make it easier for developers to ensure their software is inclusive, we've added options to toggle High Contrast themes, LTR vs RTL, and light vs dark styling. ## Vim Emulation In GTK 3, we were very much stuck with deep hacks to make something that looked like Vim work. Primarily because we wanted to share as much of the movements API with other keybinding systems. That changed with GtkSourceView 5. Part of my upstream maintainer work on GtkSourceView included writing a new Vim emulator. It's not perfect, by any means, but it does cover a majority of what I've used in more than two decades as a heavy Vim user. It handles registers, marks, and tries to follow some of the same pasteboard semantics as Vim ("+y for system clipboard, for example). I made this available in GNOME Text Editor for GNOME 42 as well. Those that wonder why we didn't an external engines to synchronize with, can read the code to find out. ## Plugins We have been struggling with our use of PyGObject for sometime. It's a complex and difficult integration project and I felt like I spent more time debugging issues than I was comfortable with. So this port also included a rewrite of every Python-based plugin to C. We still enable the Python 3 plugin loader from libpeas (for third-party plugins), but in the future we may switch to another plugin language. ## Maintainers Corner So... A special thanks to all those that sent me merge requests, modernized bits of software I maintain, fixed bugs, or sent words of encouragement. I'm very proud of where we've gotten. However, it's been an immense amount of work. Builder could be so much more than it is today with your help with triage of bugs, designing and writing features, project and product management, writing documentation, maintaining plugins, improving GNOME OS, and everything in-between. The biggest lesson of this cycle is how a strong design language is transformative. I hope Builder's transformation serves as an example for other GNOME applications and the ecosystem at large. We can make big leaps in short time if we have the right tooling and vision. -- Christian Hergert
Generated by dwww version 1.15 on Tue Jun 25 08:20:22 CEST 2024.