Good morning, We're working on a feature update to BBEdit 15, and a pre-release version is now available.
Note that this is a _pre-release_ version. The intent is to fix bugs and address areas of improvement based on what our customers have reported. However, since the software is at this point not fully tested, there _may_ be bugs and regressions. If this prospect makes you nervous, then sticking with the public release versions is your best course of action. Nobody will be offended if you choose to do so; you're under no obligation to install and use anything but a public release. :-) Complete change notes to date for all the pre-release builds in this cycle are available here: <https://s3.amazonaws.com/BBSW-download/15.5_Notes.txt> The change notes are organized into additions, changes, and fixes, and are annotated where appropriate with case numbers. So if you recognize a number corresponding to a support case that was opened for you, you can now verify that it's been fixed correctly. Please take the time to review the changes before using the new build -- it'll be worth your time. One final note: If you run into a bug in a pre-release version, PLEASE DO NOT REPORT THE BUG TO THE LIST. This includes asking about whether others have seen the same problem. Instead, please send a bug report to <[email protected]> and we will deal with it there. This will help us keep the list discussion on topic and productive for all list members. Here is the list of changes made since the 15.1.4 public release: ================================================================================ <!-- -*- mode: markdown; coding: utf-8; -*- --> version 15.5 (15C51) (2025-04-11) * BBEdit 15.5 requires macOS 12.0 or later. Additions --------- + Introducing "workspaces", a way to switch between arrangements of open documents and windows. A workspace includes the same application state that is saved and restored across quit and relaunch, but can be activated at any time while the application is running. This is useful for (for example) switching between working setups for different clients, or for different types of projects (writing vs programming vs web development). The applicable menu commands reside on the BBEdit application menu. To create a new workspace, choose "Save Workspace" and give the workspace a name. To activate a previously saved workspace, choose it from the "Workspaces" submenu. You can overwrite an existing workspace by specifying the same name. When switching to a different workspace, BBEdit will ask you to save any unsaved documents which correspond to existing files on disk (or remote FTP/SFTP items). You must save these before switching workspaces. Untitled (never-saved) documents are not affected by workspace changes, and will remain open (and unsaved) when you switch workspaces. Saved workspaces reside in the "Workspaces" application support folder, accessible via the Folders submenu on the application menu. If you wish to remove an inactive workspace, deleting the corresponding file will accomplish this. Existing workspaces can be renamed by renaming the corresponding file (whose extension must be preserved when doing so). If there are any saved workspaces, BBEdit's Dock menu will have a Workspaces submenu, so that you can easily switch via the Dock if desired. BBEdit does *not* update a workspace as you open or close documents or move windows around. If you make significant changes and would like to update the workspace, use "Save Workspace" and overwrite the current workspace. (For convenience BBEdit will fill in the name of the current workspace when you use "Save Workspace".) Additionally, BBEdit will prompt you to update a workspace when switching, if necessary. You can control this behavior in the Application settings, using the "When changing workspaces" group of settings. * The Git branch item in the navigation bar grows a menu; when clicked this will present the eight most recently committed local branches in alphabetical order, for easy checkout. The "Check Out Branch" command at the end of the menu performs the same function as the corresponding command in the menu bar. * The popover for LSP diagnostics gets a "Copy" button ("Copy All" if there's more than one listed), and you can also use "Select All" or select multiple diagnostics and use the Copy command. * Grep pattern entry fields in various transformation and setup dialogs are syntax colored. * When running on macOS 15, the Window menu includes "Fill" and "Center" commands, as well as the "Move & Resize" submenu and associated commands. * The "Zoom" command makes a triumphant return to the Window menu. * Added "Cascade on Left" and "Cascade on Right" commands to the Arrange submenu on the Window menu. These commands will (respectively) cascade windows on the left and right side of the display, without allowing them to cross the middle. (This is generally more useful on large wide-aspect displays.) * Various sheets which provide access to saved Grep patterns have added the ability to save and manage patterns from within the window. * Made changes to improve the experience when running #! or Unix language scripts that take a nontrivial amount of time to complete. Using "Run" on a script window, or choosing a Unix script or executable from BBEdit's Scripts menu will open a window with an icon you can click to get back to the document being run, a progress bar, an elapsed-time indicator, and a cancel button. These all work as you might expect. Any output produced by the script will appear in the text area, and when the script execution has finished it will also be added to the appropriate log file. You can get to the log file using the button provided for the purpose. Additionally, the output can be selected and copied, and "Save a Copy" on the File menu is available to save the output to a separate file, if desired. If the script takes less than two seconds to run and does not generate any output, the progress window will not appear (there's no need for it). * The keyboard equivalents configurable for opening the search history, saved Grep patterns, and cheat sheet in the Find and Multi-File Search windows can also be used (as applicable) in other locations that use the same menus. * When right-clicking on two selected files in the sidebar, in addition to "Compare", "Find Differences" is provided. Choosing the latter will open the Find Differences window prepopulated with the selected files. This provides an opportunity to adjust settings or (if desired) swap the files before doing the comparison. * Added the ability to preview CSV and TSV files (explicit indicated language of "Comma-separated Values" and "Tab-separated Values", respectively) using "Preview in BBEdit" or a designated web browser. "Export as HTML" works as well. Note that BBEdit is still not a spreadsheet. * When copying code responses in an AI worksheet, if the worksheet's language is Markdown and the selected text of range is in between two fenced code block delimiters with a language specified, BBEdit will attempt to determine the language based on the specified mode, and use that as the language when pasting into a new document. * Added a contextual menu to the list in the Expert preferences, to simplify copying and resetting individual settings. (Copy was previously available via the Edit menu, and still is.) * Remote Git push/pull/fetch will display a "Completed" annunciator after successful completion of the operation, so that you at least know that something happened. * An expert preference is available so that BBEdit uses the active user locale rather than the core system locale when comparing text for Sort Lines. By default this is off; but if for some reason you require localized sort order based on the active language in the system, this is available by employing the following Terminal command: `defaults write com.barebones.bbedit SortLines_UseCurrentUserLocale -bool YES` * Individual notifications can be disabled via expert preferences; these are listed in the "Expert Preferences" listing; type "Notification" in the search box to see them. + New text transformation: "Strip Diacriticals". This transform replaces composed diacritical forms in the text with the base character. Thus, "á" becomes "a", "ç" becomes "c", and so forth. The transform is available via the Text menu, "Apply Text Transform", text factories, and the scripting interface. + Color schemes get a setting for controlling the color used to highlight occurrences of the selected text (or of the word surrounding the insertion point). To adjust this, use the corresponding color setting in the "Text Colors" preferences. Absent an explicit setting, BBEdit will derive this color from the foreground text color. + Color schemes get a setting for controlling the color used for live search matches (via the Find window or Live Search bar); one setting for the selected match, and one setting for all others. To adjust this, use the corresponding color setting in the "Text Colors" preferences. Absent an explicit setting, BBEdit will use the previous defaults. + If completions provided by an LSP server include a "details" field, this is displayed next to the completion's display text in the completion panel. Changes ------- * If desired, you can force BBEdit to read files as UTF-8, even if they are not valid UTF-8. To do this, add "Unicode (UTF-8)" as the **only** encoding in the list of encodings to try if a file's encoding can't be guessed (in the "Text Encodings" preferences). This should be used with caution and under advisement; BBEdit can already automatically detect and read valid UTF-8 files, and malformed UTF-8 files may behave unpredictably when edited, searched, and/or saved. * If the `OpenPDFsAsText` expert preference is off, as it is by default, BBEdit will display PDFs in-application alongside other documents. This is provided as a convenience; BBEdit is not a replacement for Preview or any other PDF tool. * Updated imagery in the LSP diagnostics popover so that errors, warnings and notes can be distinguished by shape as well as by color. * Updated the iconography in the navigation and text status bars to use images provided by the OS, for a more up-to-date appearance and improved behavior when using the "Large" and "Extra Large" status bar item sizes. * BBEdit uses the standard macOS Window menu, which improves compatibility with ongoing system-wide UI changes in that menu. System-provided commands on that menu can be customized using the System Settings application (and apply to all applications). * Per-language preferences no longer include the ability to hide the Language status bar item, since doing so makes it impossible to change the document's language. * Added support for FTPS (FTP protocol run over TLS). The connection panel for "Open from FTP/SFTP Server" and friends provides a popup menu for choosing the security model, as follows: * `FTP`: FTP protocol, no transport security * `SFTP`: SSH file transfer protocol, SSH transport security * `FTPS (Explicit)`: FTP protocol, TLS transport security (negotiation requires server `AUTH TLS` support and negotiation) * `FTPS (Implicit)`: FTP protocol, TLS transport security (connection opened immediately; requires server support) * The "Selection only" check box is enabled in the Find window when the target document has a rectangular or other non-contiguous selection. The "Find All", "Extract", and "Replace All" buttons will behave accordingly and operate only in the selected ranges of text. NB: if a replacement involves adding line breaks, the outcome may not be what you expect. * Changes in the Git revision pickers: - Rearranged the columns in the Git revision picker; the commit hash is always listed first. - Display the commit hash in a monospaced font. - Disable sorting based on the commit hash (which is arbitrary and not useful for sorting). * When using "Compare Revisions" or the navigation bar revision menu for a Git file, BBEdit will disable the `HEAD` revision from the list of available revisions if the file does not have any pending changes. This improves the overall experience by making sure that the most recent comparable revision is always the first one available, rather than the second. * When starting the application with the Shift key down, an alert will now appear confirming whether you want to skip the reopening of previously opened documents. (Heretofore the application would do so without prompting and post an OS notification, which quite often could be missed or suppressed.) * Reworked the internals of multi-file search/replace and Text Factory execution to improve performance and eliminate legacy API use. (The brevity of this description in no way reflects the amount of effort this required.) * When quitting the application, and *either* "Restore unsaved changes" *or* "Reopen documents that were open at last quit" have been turned **off**, BBEdit will check for documents with unsaved changes before beginning the quit process. If there are any, you can opt to review the documents (which cancels the quit process), or discard all of the unsaved changes (after which the application will quit.) * Corrected the appearance of the popup menu buttons in the CSS dialog boxes (also used in a few other places) when running in Dark Mode. * If an instaproject is open on the user's home directory, BBEdit will avoid opening arbitrary files into its window, since otherwise *everything* would open there. Rather, only files located immediately in the home directory will open into the instaproject window, as well as files located in invisible directories whose immediate parent is the home directory. (This probably doesn't make sense to anyone except the one person who needs this behavior, hi Steve.) * When performing a Grep replacement or Extract operation, the application will warn you if the replace pattern contains references to nonexistent capture groups (subpatterns) in the search pattern. * If there is a saved default window position (created via "Save Default Text Window" on the Window menu), BBEdit will use this when arranging windows using the "Stack" command. * Made changes to improve the execution performance of complicated Grep pattern searches, as well as to enable performance improvements for the patterns used in codeless language modules. * BBEdit will ignore lines beginning with `#` when processing delimited text files (CSV or TSV) for column analysis as well as previewing. This can be configured via a custom language setting for the respective language, if needed. * Made a change to improve legibility in the sidebar when it does not have keyboard focus and the system-wide accessibility "Increase contrast" setting is turned on. * Added support to `bbedit(1)` for `-F`, `-N`, and `-S` as synonyms for `--front-window`, `--new-window`, and `--separate-windows`, respectively. * Made an optimization to improve "Find All" and multi-file search performance when using a literal string (no special Grep characters or character escapes) but "Grep" is turned on. * Made changes to improve performance of large-scale operations which involve line analysis and computation (Add/Remove Line Numbers, Prefix/Suffix Lines, Process Duplicate Lines, Sort Lines, Strip Trailing Whitespace). * Made changes to improve performance in Normalize Spaces, Remove Blank Lines, and Strip Trailing Whitespace on very large files. * Made a change to improve text scanning performance in the HTML/XML syntax coloring mechanics. (This is most likely noticeable only on extremely large files.) * When prompting for factory defaults reset in the Text Colors preferences, the list of settings affected is too long and not useful, so it is omitted. * Add "(no text filters)" placeholders to the "Paste Using Filter" and "Apply Text Filter" submenus, when they would otherwise be empty. Fixes ----- * Made a bunch of optimizations to improve performance in the HTML function scanner in pathological cases. * Made a change to significantly improve layout performance in the Minimap. * Made some minor cosmetic adjustments to the rendering in the Minimap window. * Fix for folds on YAML scalars at the end of the document Like this: ```yaml a: b: | value of b can be multiple lines ``` The fold starts after the pipe and will now include the s at the end of the last word. * Updated the entitlements in the App Store build to include `/opt/homebrew/Cellar/` and `/opt/homebrew/opt/`, so that Homebrew binaries are usable without requiring explicit sandbox access. * Fixed typo in an expert preference defaults entry. * Made a change so that the lifetime of temporary files generated for certain #! menu operations (such as "Run" or "Run in Terminal") is now tied to the lifetime of the document; BBEdit will delete temporary files when the document is closed, rather than when the application is quit. * Made a nominal performance improvement to reduce time spent in some cases when opening and closing documents when there are a large number of documents on disk open. * Fixed bug in which closing a live preview window would fail to save any customizations to preview filter/template/CSS selections. * Made a change so that the "Get Info" panel will decline to count words in very large documents (same threshold as the Text Statistics status bar item). This improves performance and usability. * Made a change to significantly improve the performance of soft text wrapping calculations in the text engine. * Made a change so that the `OpenPDFsAsText` expert preference takes effect without requiring an application relaunch; turning this setting off will override the PDF language module's built-in mapping. (Changing the setting does not affect the display of any open PDFs; any such will need to be closed and reopened.) * Corrected display of some header entries in the Open Recent submenu. * Fixed bug in which the `-Z` (`--null`) output option in `bbfind(1)` did not work as intended. * Fixed hang which would occur in the Rust language module when a `where` clause in a function header was at EOF. * Made a change to improve performance and correctness when updating modification dates for FTP/SFTP files, when the file's directory is displayed in the browser, and there are many (thousands) of items in that directory. * Fixed crash which would occur when attempting some SFTP operations in the wake of a broken connection. * Corrected the appearance of menu section headers when running on macOS 14.0 and later. * Made changes to improve performance of high-frequency operations involving EditorConfig. * Removed duplicate entries from the output of `bbedit -h`. * Fixed bug in which notebooks were not added to the list in the Multi-File Search window if they were opened while the MFS window was open. * Added some declarations to the application's property list, to let the OS know that BBEdit can open image files, and a "catchall" declaration for other file types. * When reopening minimized windows during state restoration, the animation into the Dock no longer occurs. (Each minimized window will still briefly appear on screen.) * Fixed bug in which bash numeric base specifiers would confuse syntax coloring and function scanning. * Made a change to significantly improve the performance of "Convert to ASCII" when processing fullwidth character forms. * Fixed bug in which creating a new file in an instaproject folder didn't select the newly created file in the Project list in cases where the selected or right-clicked item was another file. * Fixed a potential cause of a reported crash in Open File by Name. * Fixed bug in which "Close All in Project" did not close any non-text documents (such as images or text factories). * Made a change to "Cascade Left" so that the windows start at the right-hand side of the display, rather than somewhere in the middle. * Made a change so that an asterisk at the beginning of a line (with or without intervening whitespace) is not paired while entering text in Markdown documents. * Corrected display of qualifiers in the custom language preferences when a status bar setting was changed. * Fixed bug in which CSS syntax coloring didn't recognize negative floating-point numbers without a leading zero (e.g. `-.10`). * Correct coloring of identifiers in CSS at-rule specifiers. * Various CSS keyword additions and updates. * Fixed crash which would occur when closing the Multi-File Search window *after* a previous attempt at closing it via the scripting interface failed because the window was displaying a sheet. * Fixed bug in which the list of items to process in a Text Factory window did not correctly mark items at the top level (such as windows) in cases where a subordinate item (a document in that window) was automatically marked when the document in question was open. * Fixed bug in which project windows would open at an infinite width in cases where the editor view had been hidden when the project was closed. * Fixed crash which would occur while saving FTP/SFTP bookmarks after creating or editing a bookmark, when (any) one of the saved bookmarks was malformed. * When the string entered into "Open File by Name" contains slashes (for separating path elements), BBEdit will wildcard the intermediate path elements, so that it's no longer necessary to precisely specify each directory along the path to the file. (This does not guarantee a match, but improves flexibility.) * Fixed missing text for the "Remove Blank Lines" item summary in text factories. * Fixed bug in which words in comments and heredocs in Ruby files weren't subject to spell checking, as they should have been. * Made an assortment of changes to improve multi-file process performance. * Made a change to significantly improve performance when looking for a `coding:` variable in an Emacs mode line or variable block. This reduces overhead in multi-file operations. * Made changes to improve literal (non-Grep) text searching performance for multi-file search and other "find all" situations. * Made some small efficiency improvements to file reading. * Made some changes to slightly reduce file system overhead during multi-file operations. * Fixed uncaught exception which would occur when cancelling privilege escalation while trying to save a file located in the Trash. * Improved results when using multi-word search terms in the Settings window. You can use wildcards now too, if you want. * Made a change to the behavior of "Open Selection", so that automatic filename extension selection doesn't occur if the thing that looks like a filename extension isn't actually known to the OS. * Made some efficiency improvements in the Markdown parser to improve performance on very large files (multiple megabytes). * The merch link in the about box goes directly to the merch site, rather than to a landing page. * Fixed non-blinking insertion point cursor in source control commit windows. * Improve handling of application-specific URLs and such items dragged in from URL clipping (`.inetloc`) files in projects. * Fixed bug in which multiple "additional edits" returned with language server completions were not applied correctly. * Xcode folder references (new in recent versions) are now properly loaded when enumerating the contents of an Xcode project. * Worked around FB16415546, which caused truncation of very large files (over 2GB on disk) when doing Add/Remove Line Numbers (and also Tidy operations). * Handle block comments and character escapes in Lisp files. * Made a change so that AppleScript execution, whether implicit (as in Startup Items or text factories) or explicit (via the Script menu or other UI invocation) will fail if the script file has been quarantined by macOS. * If a project contains references to any Finder saved searches, these will be evaluated when using the project as a multi-file search source. * When committing a submodule, the branch name in the navigation bar will reflect the name of the submodule branch being committed (rather than the branch of the enclosing repository). * Made a change to improve performance of the test used to enable the stash-related commands on the Git menu. * Saved application state includes cheat sheets, so these will reopen in their last-used locations across an application quit/relaunch. * Made a change to improve robustness of LSP interactions when the server exits unexpectedly; this should resolve reports of hanging during attempted completions. * Allow display paths in the Multi-File Search window to occupy as much width is available when the window is widened. * Corrected appearance of the icon in the "Recently Used Items" heading in the Open Recent submenu, when running in Dark Mode. * Made a change so that presence of certain Objective-C macros in a header file will improve the accuracy of guessing Objective-C/C++. * Fixed bug in which double-clicking on an item in the "Find Symbol in Workspace" panel did not dismiss the panel and select the corresponding item. * Worked around a bug in the macOS color panel in which the panel would send a spurious notification when closing the Settings window after changing a color setting's opacity. This in turn resulted in an unexpected color value being inserted in the active document. * Fixed bug in the PHP color scanner which would cause unexpected selection effects when double-clicking on a word that occurred after a `__halt_compiler()` directive in the file. * Fixed bug in which starting to drag an item from an inactive list in the sidebar would move keyboard focus there, which often resulted in unexpected file selection behaviors. * Fixed spurious behavior of the "Collapse Folds Below Level" submenu. *fin* The package can be downloaded from our web server: https://s3.amazonaws.com/BBSW-download/BBEdit-15.5_15C51.dmg Enjoy, R. -- Rich Siegel Bare Bones Software, Inc. <[email protected]> <https://www.barebones.com/> Someday I'll look back on all this and laugh... until they sedate me. -- This is the BBEdit Talk public discussion group. If you have a feature request or believe that the application isn't working correctly, please email "[email protected]" rather than posting here. Follow @bbedit on Mastodon: <https://mastodon.social/@bbedit> --- You received this message because you are subscribed to the Google Groups "BBEdit Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/bbedit/4515889D-29C2-4FAE-BFE2-43A1A1FC38AF%40barebones.com.
