<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Pulsar Blog</title>
  <subtitle>The blog for Pulsar: a community-led, hyper-hackable text editor.</subtitle>
  <link href="https://blog.pulsar-edit.dev/feed.xml" rel="self" />
  <link href="https://blog.pulsar-edit.dev/" />
  <updated>2026-05-17T00:00:00Z</updated>
  <id>https://blog.pulsar-edit.dev/</id>
  <author>
    <name>Pulsar Team</name>
    <email>admin@pulsar-edit.dev</email>
  </author>
  <entry>
    <title>Pulsar v1.132.0: The terminal is now boarding</title>
    <link href="https://blog.pulsar-edit.dev/posts/20260517-v1.132.0/" />
    <updated>2026-05-17T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20260517-v1.132.0/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.132.0&quot;&gt;1.132.0&lt;/a&gt; is available now and ready to improve your out-of-box experience!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.132.0%3A-the-terminal-is-now-boarding&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.132.0: The terminal is now boarding&lt;/h2&gt;
&lt;p&gt;This release delivers something that we hope will make most users’ lives easier, whether they’re veteran Pulsar users or brand-new users giving us a try: a &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20260510-savetheclocktower-terminal-package/&quot;&gt;new core &lt;code&gt;terminal&lt;/code&gt; package&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Also on offer: a new experimental setting that we think will improve the experience of switching Git branches. When enabled, &lt;code&gt;core.promptOnConflict&lt;/code&gt; will recognize when you’ve made edits against a file whose contents changed on disk &lt;em&gt;after&lt;/em&gt; you started making the edits, and will warn you when you try to save your edits! This is one step toward improving the experience of users who often switch branches in version control.&lt;/p&gt;
&lt;p&gt;We’ve also added a setting that might make life easier for those who routinely edit large files, quality-of-life improvements for Pulsar contributors and package authors, better window management when opening projects from the command line, new configurable behavior for &lt;code&gt;autocomplete-plus&lt;/code&gt;, and a handful of improvements to syntax highlighting.&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!&lt;br&gt;
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;New &lt;code&gt;terminal&lt;/code&gt; package!&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;editor.largeFileThreshold&lt;/code&gt; setting that allows the user to configure the file-size threshold of the “large file mode” present in TextMate-style grammars.&lt;/li&gt;
&lt;li&gt;New experimental setting: &lt;code&gt;core.promptOnConflict&lt;/code&gt;. When enabled, Pulsar will ask for confirmation if you try to save an item while it’s in a “conflicted” state. You may decide whether to cancel or proceed with overwriting the file on disk. (For an editor, the “conflicted” state occurs if you open a file and make changes, but another program writes different contents to the file on disk before you can save your changes in Pulsar.) Since this setting is experimental, it is disabled by default… but we encourage users to enable it and help us test it!&lt;/li&gt;
&lt;li&gt;Minor Electron version increase to v30.5.1.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bump &lt;code&gt;@pulsar-edit/fuzzy-native&lt;/code&gt; to 1.3.1 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1551&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tree-sitter fixes, bonus 1.132 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1545&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[find-and-replace] Ensure a pattern without any path separators will be applied against only the filename rather than the entire path. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1544&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump our versions of &lt;code&gt;atom-keymap&lt;/code&gt; and &lt;code&gt;underscore-plus&lt;/code&gt;… including pointing all usages of &lt;code&gt;underscore-plus&lt;/code&gt; to our new fork at &lt;code&gt;@pulsar-edit/underscore-plus&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1543&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump &lt;code&gt;terminal&lt;/code&gt; to &lt;code&gt;0.3.2&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1539&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;feat: Add &lt;code&gt;editor.largeFileThreshold&lt;/code&gt; config for TextMate large file mode &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1413&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Update Rolling release token &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1542&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Resolve keyBindingCommand tooltip label lazily instead of at registration time &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1536&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix: clamp cursor column during rendering to prevent display at invalid positions &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1414&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hide empty file-info element in status bar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1415&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Honor &lt;code&gt;activatePane: false&lt;/code&gt; when &lt;code&gt;workspace.open&lt;/code&gt; split creates a new pane &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1532&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix language-gfm setext header symbol queries &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1537&quot;&gt;@bwanders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: bump node from v16 to v20 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1538&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix keyBindingCommand breaking function-based tooltip titles &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20260517-v1.132.0/github.com/pulsar-edit/pulsar/pull/1516&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[find-and-replace] Fix project search regression when searching modified buffers. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1499&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Guard against a user saving while the text buffer is conflicted by alerting them to the problem and giving them a choice between cancelling and overwriting the contents on disk. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1478&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chore: Restore org templates to repo &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1527&quot;&gt;@Daeraxa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Bump &#39;nick-fields/retry&#39; to v4.0.0 (exact SHA) due to Node 20 Actions deprecation &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1528&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add the new &lt;code&gt;terminal&lt;/code&gt; package to core &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1373&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[ci] Run Package tests more appropriately &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1508&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use SHA256 Digest for RPM Build &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1522&quot;&gt;@ChrisLeinbach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(deps): update dependency temp to ^0.9.0 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1519&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update dependency temp to ^0.9.0 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1518&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update dependency temp to ^0.9.0 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1515&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update actions/upload-artifact action to v7 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1514&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update actions/checkout action to v6 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1513&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update actions/cache action to v5 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1510&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(deps): update dependency minimatch to v3.1.4 [security] &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1500&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(deps): update dependency dompurify to v3.3.2 [security] &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1503&quot;&gt;renovate (bot)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[exception-reporting] Remove core package &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1486&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve &amp;quot;Project does not exist&amp;quot; popup &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/954&quot;&gt;@kiskoza&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump Electron version to v30.5.1 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1452&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Change timing of window focus when a new project is opened &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1492&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensure NodeJS version matches what we actually use &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1436&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[build] Check Windows version during install &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1489&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix crashes in measureHorizontalPositions and updateBlockDecorations for non-rendered rows &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1490&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[archive-view] Bump &lt;code&gt;ls-archive&lt;/code&gt; =&amp;gt; &lt;code&gt;@pulsar-edit/ls-archive&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1447&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[autocomplete-plus] Allow matching suggestions to stay in the list after filtering… even if the first character of the suggestion does not match the first character of what the user typed. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1428&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove unmaintained Dockerfile &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1479&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tree-sitter rolling fixes, 1.132 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1429&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%40pulsar-edit%2Fatom-keymap&quot; tabindex=&quot;-1&quot;&gt;@pulsar-edit/atom-keymap&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;feat: add CmdOrCtrl modifier alias for cross-platform keybindings &lt;a href=&quot;https://github.com/pulsar-edit/atom-keymap/pull/8&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove reference to old package in readme &lt;a href=&quot;https://github.com/pulsar-edit/atom-keymap/pull/11&quot;&gt;@Daeraxa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%40pulsar-edit%2Ffuzzy-native&quot; tabindex=&quot;-1&quot;&gt;@pulsar-edit/fuzzy-native&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Explicitly include &lt;code&gt;cstdint&lt;/code&gt; to make GCC happy &lt;a href=&quot;https://github.com/pulsar-edit/fuzzy-native/pull/9&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%40pulsar-edit%2Fls-archive&quot; tabindex=&quot;-1&quot;&gt;@pulsar-edit/ls-archive&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PR from before Pulsar&#39;s fork:
&lt;ul&gt;
&lt;li&gt;Support bzip2 &lt;a href=&quot;https://github.com/atom/node-ls-archive/pull/14&quot;&gt;@YtvwlD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PRs since Pulsar&#39;s fork began:
&lt;ul&gt;
&lt;li&gt;Adds Testing GH Actions &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/2&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rebrand Repository &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/3&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Manual decaf source &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/4&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Manual decaf specs &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/6&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Get tests to run w/ our latest version of NodeJS &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/5&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump almost all dependencies &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/7&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump &lt;code&gt;tar&lt;/code&gt; dependency &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/8&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Make this repository publishable to NPM &lt;a href=&quot;https://github.com/pulsar-edit/node-ls-archive/pull/9&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%40pulsar-edit%2Ftext-buffer&quot; tabindex=&quot;-1&quot;&gt;@pulsar-edit/text-buffer&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix incorrect &lt;code&gt;isInConflict&lt;/code&gt; logic &lt;a href=&quot;https://github.com/pulsar-edit/text-buffer/pull/11&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;terminal&quot; tabindex=&quot;-1&quot;&gt;terminal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New package by @savetheclocktower; “Uses XTerm.js and &lt;code&gt;node-pty&lt;/code&gt;.” “Based heavily on &lt;code&gt;atomic-terminal&lt;/code&gt;, &lt;code&gt;x-terminal-reloaded&lt;/code&gt;, and all their predecessors.”
&lt;ul&gt;
&lt;li&gt;See &lt;a href=&quot;https://github.com/pulsar-edit/terminal#terminal&quot;&gt;package README&lt;/a&gt; for details&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fixes terminal:set-selection-as-find-pattern keybind &lt;a href=&quot;https://github.com/pulsar-edit/terminal/pull/14&quot;&gt;@Daeraxa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix context menu commands &lt;a href=&quot;https://github.com/pulsar-edit/terminal/pull/16&quot;&gt;@Daeraxa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix: update keymap selector to work correctly on linux &lt;a href=&quot;https://github.com/pulsar-edit/terminal/pull/5&quot;&gt;@Daeraxa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%40pulsar-edit%2Funderscore-plus&quot; tabindex=&quot;-1&quot;&gt;@pulsar-edit/underscore-plus&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PRs from before Pulsar&#39;s fork:
&lt;ul&gt;
&lt;li&gt;Only decaffeinate &lt;a href=&quot;https://github.com/atom/underscore-plus/pull/22&quot;&gt;@aminya&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Migrate to Github actions &lt;a href=&quot;https://github.com/atom/underscore-plus/pull/23&quot;&gt;@darangi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PRs since Pulsar&#39;s fork began:
&lt;ul&gt;
&lt;li&gt;Add cmdorctrl to modifier key maps &lt;a href=&quot;https://github.com/pulsar-edit/underscore-plus/pull/1&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update all GHA &lt;a href=&quot;https://github.com/pulsar-edit/underscore-plus/pull/2&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Manually define a default export in order to play better with transpiled code in the Pulsar codebase. &lt;a href=&quot;https://github.com/pulsar-edit/underscore-plus/pull/5&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Opt into &amp;quot;loose&amp;quot; mode for transpiling to CommonJS so that the exports can be mocked in specs. &lt;a href=&quot;https://github.com/pulsar-edit/underscore-plus/commit/79eb75a068ee98d65ec233acfb90fa2dd72fc159&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ppm&quot; tabindex=&quot;-1&quot;&gt;ppm&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bump bundled Node to 20.16.0, to sync with Electron 30.5.1 in Pulsar core repo &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/168&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Better late than never: the new terminal package</title>
    <link href="https://blog.pulsar-edit.dev/posts/20260510-savetheclocktower-terminal-package/" />
    <updated>2026-05-10T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20260510-savetheclocktower-terminal-package/</id>
    <content type="html">&lt;p&gt;In advance of the release of Pulsar 1.132.0, I’m thrilled to announce that Pulsar now has a built-in &lt;code&gt;terminal&lt;/code&gt; package — removing one of the biggest headaches for new users.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.pulsar-edit.dev/assets/terminal-bottom-dock.png&quot; alt=&quot;terminal package screenshot&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;motivations&quot; tabindex=&quot;-1&quot;&gt;Motivations&lt;/h2&gt;
&lt;p&gt;Why a built-in terminal package, and why now? After all, we try to keep the core Pulsar experience lean. For years, Atom and Pulsar users who’ve wanted an integrated terminal have had to install a community package. What’s changed?&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lots of users want an integrated terminal.&lt;/li&gt;
&lt;li&gt;They’re hard to install for most users in a way that most community packages aren’t.&lt;/li&gt;
&lt;li&gt;Bundling a terminal package therefore removes a major headache for new users and should vastly improve their day-one experience.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;lots-of-people-use-a-terminal-package&quot; tabindex=&quot;-1&quot;&gt;Lots of people use a terminal package&lt;/h3&gt;
&lt;p&gt;Every new core package adds weight to the Pulsar bundle. The best way for the new package to justify that extra weight is to deliver functionality that many users expect to be present.&lt;/p&gt;
&lt;p&gt;And, indeed, &lt;strong&gt;questions about installing terminal packages are among the most common requests in our support channels&lt;/strong&gt;. I’ve got no doubt that a core terminal package was frequently requested back in the Atom days; &lt;a href=&quot;https://packages.pulsar-edit.dev/packages/platformio-ide-terminal&quot;&gt;&lt;code&gt;platformio-ide-terminal&lt;/code&gt;&lt;/a&gt; is, after all, the most popular community package of all time.&lt;/p&gt;
&lt;p&gt;Many of our new users come over to us after having used Visual Studio Code, &lt;a href=&quot;https://code.visualstudio.com/docs/terminal/basics&quot;&gt;whose own built-in terminal&lt;/a&gt; likely influences their habits and expectations.&lt;/p&gt;
&lt;p&gt;Ordinarily, even popularity wouldn’t be a magic bullet. One of our justifications for keeping the core so lean is the idea that anything that &lt;em&gt;isn’t&lt;/em&gt; in the core takes only a few extra clicks to install. Yet…&lt;/p&gt;
&lt;h3 id=&quot;it%E2%80%99s-hard-to-install&quot; tabindex=&quot;-1&quot;&gt;It’s hard to install&lt;/h3&gt;
&lt;p&gt;Terminal packages in Pulsar are &lt;em&gt;notoriously&lt;/em&gt; hard to install. That’s because they can’t be written in JavaScript alone! They require a library that supplies a &lt;a href=&quot;https://en.wikipedia.org/wiki/Pseudoterminal&quot;&gt;pty&lt;/a&gt;, or &lt;em&gt;pseudoterminal&lt;/em&gt;, in order to do terminal emulation — in this case, &lt;a href=&quot;https://www.npmjs.com/package/node-pty&quot;&gt;node-pty&lt;/a&gt;. And such libraries need to bridge to system-specific APIs.&lt;/p&gt;
&lt;p&gt;A Node package that includes code written in a lower-level language — typically C++ — is usually called a &lt;em&gt;native addon&lt;/em&gt;. If you want to install a Pulsar package with a dependency on a native addon (like &lt;code&gt;node-pty&lt;/code&gt;), you’ve typically got to compile that addon for your own machine. That requires a C++ toolchain to be installed on your computer.&lt;/p&gt;
&lt;p&gt;Whether that toolchain is already present depends on your operating system and the sort of software development you do. But no matter the platform, I’d bet that &lt;strong&gt;most users probably fail at installing a package like &lt;a href=&quot;https://packages.pulsar-edit.dev/packages/x-terminal-reloaded&quot;&gt;x-terminal-reloaded&lt;/a&gt; on the first attempt&lt;/strong&gt;. And no matter &lt;a href=&quot;https://docs.pulsar-edit.dev/getting-started/dependencies-for-some-community-packages/&quot;&gt;how detailed our documentation is&lt;/a&gt; on the topic, there’s a limit to how user-friendly we can make this process. I’ve seen users &lt;em&gt;give up&lt;/em&gt; on Pulsar at this early stage.&lt;/p&gt;
&lt;p&gt;Most community packages don’t rely on native addons! How bad is our luck that one of the &lt;em&gt;small handful&lt;/em&gt; of such packages is the one that new users &lt;em&gt;most&lt;/em&gt; want to install on their first day of using Pulsar?&lt;/p&gt;
&lt;p&gt;This affects the bundle-or-don’t-bundle calculus, to say the least. Bundling a terminal package bypasses all of these headaches! The needed compilation would happen at the same time that it happens for any other native modules used in Pulsar: when we build binaries for each operating system and processor architecture.&lt;/p&gt;
&lt;p&gt;It also saves the user from having to roam around a graveyard of community terminal packages in our package registry, trying to figure out which one still works. Which reminds me…&lt;/p&gt;
&lt;h3 id=&quot;it%E2%80%99s-hard-to-keep-community-terminal-packages-working&quot; tabindex=&quot;-1&quot;&gt;It’s hard to keep community terminal packages working&lt;/h3&gt;
&lt;p&gt;We go through terminal packages &lt;a href=&quot;https://en.wikipedia.org/wiki/Spinal_Tap_(band)#Drums,_percussion&quot;&gt;faster than Spinal Tap goes through drummers&lt;/a&gt;! When users have asked which terminal package they should install, we’ve always recommended &lt;a href=&quot;https://packages.pulsar-edit.dev/packages/x-terminal-reloaded&quot;&gt;&lt;code&gt;x-terminal-reloaded&lt;/code&gt;&lt;/a&gt;: it’s been maintained by Pulsar team member &lt;a href=&quot;https://github.com/Spiker985/&quot;&gt;@Spiker985&lt;/a&gt; for a few years, was known to work in Pulsar on all platforms, and was a strong candidate for addition to core in its own right. Yet &lt;code&gt;x-terminal-reloaded&lt;/code&gt; is a fork of &lt;code&gt;x-terminal&lt;/code&gt;, which was a fork of &lt;code&gt;atom-xterm&lt;/code&gt;, which was a fork of &lt;code&gt;term3&lt;/code&gt;, which was a fork of &lt;code&gt;term2&lt;/code&gt;, which was a fork of &lt;code&gt;term&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Maybe the maintainers of these packages all just happened to have very short attention spans. But I think it’s far more likely that terminal packages needed time and attention to keep up to date, especially in the early days of Atom and Node.&lt;/p&gt;
&lt;p&gt;To illustrate, we need only look at &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/&quot;&gt;the recent Electron modernization&lt;/a&gt; and the pains it caused. Like lots of other packages with native module dependencies, &lt;strong&gt;&lt;code&gt;x-terminal-reloaded&lt;/code&gt; was affected by the upgrade from Electron 12 to Electron 30&lt;/strong&gt; — and to keep it working on newer Pulsar versions was a technical problem without an easy solution.&lt;/p&gt;
&lt;p&gt;In short: &lt;code&gt;node-pty&lt;/code&gt; now uses a multithreaded model on Windows to get around a deadlock issue. But this requires using Node’s &lt;code&gt;worker_threads&lt;/code&gt; library — and Electron doesn’t support that library in the renderer process, which is the context where community packages execute code. So right now &lt;code&gt;x-terminal-reloaded&lt;/code&gt; works just fine on macOS and Linux, but fails to spawn a terminal on Windows. &lt;strong&gt;This leaves Windows users with no working community terminal packages.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This, in fact, was the last straw. It could’ve been worked around with a major architectural change in &lt;code&gt;x-terminal-reloaded&lt;/code&gt; — but it made much more sense to spend that effort on bringing a new terminal package into the core. We didn’t want to let this opportunity go to waste.&lt;/p&gt;
&lt;h2 id=&quot;architecture&quot; tabindex=&quot;-1&quot;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;These were my goals for &lt;code&gt;terminal&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide a simple, intuitive terminal integration that would suffice for at least 80% of users — while staying out of the way for those who don’t need it.&lt;/li&gt;
&lt;li&gt;Make it work reliably and durably on all three of the operating systems we support.&lt;/li&gt;
&lt;li&gt;Make it feel like a first-class part of Pulsar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h3&gt;
&lt;p&gt;The “easy” parts are the same across nearly all terminal packages: &lt;a href=&quot;https://github.com/microsoft/node-pty&quot;&gt;&lt;code&gt;node-pty&lt;/code&gt;&lt;/a&gt; handles providing a pseudoterminal, and &lt;a href=&quot;https://xtermjs.org/&quot;&gt;XTerm.js&lt;/a&gt; handles the rendering of terminal output.&lt;/p&gt;
&lt;p&gt;I wanted to draw inspiration from community terminal packages, but I didn’t want a maximalist, power-user feature set! &lt;code&gt;x-terminal-reloaded&lt;/code&gt; was the obvious place to start, so I studied that codebase for a while.&lt;/p&gt;
&lt;p&gt;The long family tree from which it had descended meant that it had accumulated quite a few features over the years. I decided which ones were truly needed (theming, service integration) and which ones were overkill for most users (profiles). Then I started a new project and went to work.&lt;/p&gt;
&lt;p&gt;It took me a while to realize that I was accidentally creating something very, very similar to the &lt;a href=&quot;https://github.com/atom-community/terminal&quot;&gt;&lt;code&gt;atom-community/terminal&lt;/code&gt;&lt;/a&gt; package, also known as &lt;a href=&quot;https://packages.pulsar-edit.dev/packages/atomic-terminal&quot;&gt;&lt;code&gt;atomic-terminal&lt;/code&gt;&lt;/a&gt;. When I started, I didn’t even realize this package existed. But it did see heavy development over a few years, and seemed to have similar goals around streamlining. It helped to confirm that I was moving in the right direction.&lt;/p&gt;
&lt;p&gt;“Streamlined” doesn’t mean “minimalist,” though. I wanted &lt;code&gt;terminal&lt;/code&gt; to have most of the features that users would expect. For instance, &lt;code&gt;terminal&lt;/code&gt; supports text-searching in terminal panes via the same keybindings you’re used to for editor text search — a feature that, to my knowledge, isn’t present in &lt;code&gt;x-terminal-reloaded&lt;/code&gt; or any of its predecessors.&lt;/p&gt;
&lt;p&gt;And if streamlining is your goal, &lt;em&gt;unobtrusiveness&lt;/em&gt; is a feature in itself! One of the ways we earn the right to add a new core package is to ensure it doesn’t annoy anyone who doesn’t need it. All packages, even core packages, can be disabled; but if a user feels the need to disable a core package, it’s a sign that the package got in their way! I made sure that &lt;code&gt;terminal&lt;/code&gt; didn’t have any impact on performance — like startup time — unless a user actually had a terminal open.&lt;/p&gt;
&lt;h3 id=&quot;durability&quot; tabindex=&quot;-1&quot;&gt;Durability&lt;/h3&gt;
&lt;p&gt;This package needed to work a bit differently than community terminal packages have ever worked before. I described above how a crucial dependency, &lt;code&gt;node-pty&lt;/code&gt;, can no longer run in the context of an Electron renderer process. But that’s a solved problem: we can spawn a child process in a pure Node-only environment, then communicate with it via message-passing. All usage of &lt;code&gt;node-pty&lt;/code&gt; happens in this isolated Node process. This is a common technique in community packages, and we’ll probably be using it more in Pulsar core in the future.&lt;/p&gt;
&lt;p&gt;The strange constraints of Electron’s renderer process are not considered important enough for most Node library authors to accommodate. We rely quite a bit on libraries like &lt;code&gt;superstring&lt;/code&gt; and &lt;code&gt;pathwatcher&lt;/code&gt; that have native addons — but, crucially, the Atom folks &lt;em&gt;wrote&lt;/em&gt; those libraries, and we &lt;em&gt;maintain&lt;/em&gt; them. If they suddenly needed changes in order to continue working properly in the renderer process, we’d make those changes!&lt;/p&gt;
&lt;p&gt;By contrast, &lt;code&gt;node-pty&lt;/code&gt; is maintained by Microsoft, and they have &lt;a href=&quot;https://github.com/microsoft/node-pty/issues/821#issuecomment-3565443460&quot;&gt;no particular motivation&lt;/a&gt; to ensure it continues to work under the conditions we need.&lt;/p&gt;
&lt;p&gt;So even though this worker-process architecture is only strictly needed for Windows, we’re using it on every platform. The downsides are minimal, whereas the future pain we might be avoiding is &lt;em&gt;substantial&lt;/em&gt;. By adding &lt;code&gt;terminal&lt;/code&gt; to core, we’re committing to its ongoing maintenance, so we want to build a durable, future-proof foundation.&lt;/p&gt;
&lt;h3 id=&quot;integration-with-pulsar&quot; tabindex=&quot;-1&quot;&gt;Integration with Pulsar&lt;/h3&gt;
&lt;p&gt;All packages should ideally feel like they’re &lt;em&gt;part of&lt;/em&gt; Pulsar — but core packages especially! This will be an ongoing effort, but a few aspects required particular attention.&lt;/p&gt;
&lt;h4 id=&quot;styles&quot; tabindex=&quot;-1&quot;&gt;Styles&lt;/h4&gt;
&lt;p&gt;One way to make &lt;code&gt;terminal&lt;/code&gt; feel like it belongs is to ensure that the terminal’s own colors match the colors of the user’s syntax theme.&lt;/p&gt;
&lt;p&gt;Terminals follow &lt;a href=&quot;https://en.wikipedia.org/wiki/ANSI_escape_code#Colors&quot;&gt;the ANSI standard for four-bit colors&lt;/a&gt;: eight “regular” colors (which include black and white), plus eight “bold” variants of those colors.&lt;/p&gt;
&lt;p&gt;Any syntax theme created from this point forward will be able to define terminal colors explicitly, with the expectation that the shades of red, blue, green, and the rest will match similar shades already being used by the theme.&lt;/p&gt;
&lt;p&gt;But, of course, lots of you folks stick with a built-in theme! So we’ve made sure those eight built-in syntax themes specify their own terminal colors.&lt;/p&gt;
&lt;p&gt;If you happen to use a theme that doesn’t define these colors, we’ll still be able to infer some values from your syntax theme, and use sensible fallbacks for the rest. You’ll be able to customize or replace the colors you see in the terminal via either package configuration or stylesheet overrides.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.pulsar-edit.dev/assets/terminal-syntax-theme-matching.png&quot; alt=&quot;terminal package color theme comparison&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;keybindings&quot; tabindex=&quot;-1&quot;&gt;Keybindings&lt;/h4&gt;
&lt;p&gt;Community terminal packages have tended to register lots of commands &lt;em&gt;and&lt;/em&gt; lots of associated keystrokes. But it’s already hard to find unused keybindings! I felt that a new core package should go out of its way not to be pushy here. This helps check the “unobtrusiveness” box: any new keybinding we introduce is something that might already be used by a community package, and I don’t want to disrupt anyone’s muscle memory.&lt;/p&gt;
&lt;p&gt;That’s why most of the &lt;code&gt;terminal&lt;/code&gt; package’s commands operate on &lt;em&gt;key sequences&lt;/em&gt;. The main function (show me a terminal, or spawn one if none exists) gets a simple and memorable key binding at &lt;kbd&gt;Ctrl+`&lt;/kbd&gt;, but nearly all other commands are a sequence of two different keystrokes.&lt;/p&gt;
&lt;p&gt;For instance: there are separate commands for opening a terminal in various “directions.” You might want to open a terminal to the right of the current editor, splitting the pane container. A key sequence makes this easy to remember, and harmonizes with existing key sequences for similar tasks; we can bind this command to &lt;kbd&gt;Ctrl+~&lt;/kbd&gt; &lt;kbd&gt;→&lt;/kbd&gt;. If you want to open the new terminal in a different direction, you can simply use a different arrow key; &lt;kbd&gt;Ctrl+~&lt;/kbd&gt; &lt;kbd&gt;←&lt;/kbd&gt; will split the pane container and open a terminal to the left rather than the right. This matches similar key sequences already present in Pulsar for splitting panes and moving cursor focus between pane items.&lt;/p&gt;
&lt;p&gt;All the &lt;code&gt;terminal&lt;/code&gt; key sequences, in fact, can be started with the same key binding: &lt;kbd&gt;Ctrl+~&lt;/kbd&gt; (i.e., &lt;kbd&gt;Ctrl+Shift+`&lt;/kbd&gt; if you’re using a US QWERTY keyboard).&lt;/p&gt;
&lt;p&gt;The downside to this approach is that, on non-US keyboard layouts, some of these bindings will wind up on unexpected keys! The &lt;code&gt;`&lt;/code&gt; and &lt;code&gt;~&lt;/code&gt; glyphs live together in the US, but often split up and do their own thing when they travel abroad. Ideally, we’d always target the key just above &lt;kbd&gt;Tab&lt;/kbd&gt; and to the left of &lt;kbd&gt;1&lt;/kbd&gt;, regardless of which characters are assigned to that key in a given layout. We have a plan to make this possible, but it’ll take a bit of gruntwork.&lt;/p&gt;
&lt;p&gt;In the meantime, if you don’t like the keybindings we chose, you can can remap them the same way you’d &lt;a href=&quot;https://docs.pulsar-edit.dev/customizing-pulsar/customizing-keybindings/&quot;&gt;customize any other keybindings&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;help-us-test-it!&quot; tabindex=&quot;-1&quot;&gt;Help us test it!&lt;/h2&gt;
&lt;p&gt;As I mentioned, the status quo on Windows (no known working terminal packages since 1.131.0!) made this an urgent package to get into core. This package is ready to use, but it is nowhere near feature-complete, and we’d love to get some feedback from users. So &lt;strong&gt;please put it through its paces and report any bugs you find&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A few users helped us with beta testing — and special thanks to &lt;a href=&quot;https://github.com/Daeraxa/&quot;&gt;@Daeraxa&lt;/a&gt; for doing some intensive QA work in the last couple weeks! — but experience has told us that the best way to get testers is to ship code in the regular release. You may consider this package “experimental” in that it’s not seen much real-world usage yet, but make no mistake — it’s here to stay.&lt;/p&gt;
&lt;p&gt;If you don’t like the new &lt;code&gt;terminal&lt;/code&gt; package, you can keep using &lt;code&gt;x-terminal-reloaded&lt;/code&gt; if you’re on macOS or Linux. Windows users don’t have a working alternative yet, but we’d be happy to give some guidance if you wanted to build a power-user, feature-stuffed community terminal package that works across all three of the platforms we support.&lt;/p&gt;
&lt;p&gt;In the meantime, we’re excited to be shipping this feature, since it’s probably the most meaningful change we can make toward improving the “out-of-box” experience for a new Pulsar user. We’ve got &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues/1529&quot;&gt;ideas for deeper integration&lt;/a&gt; between the terminal and the rest of Pulsar and plan to tackle them over time. Happy coding to all you spacefarers, and enjoy the new toys on board!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.131.0: A Valentine&#39;s Day &amp; Electron 30 Edition</title>
    <link href="https://blog.pulsar-edit.dev/posts/20260215-v1.131.0/" />
    <updated>2026-02-15T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20260215-v1.131.0/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.131.0&quot;&gt;1.131.0&lt;/a&gt; is available now!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.131.0%3A-a-valentine&#39;s-day-%26-electron-30-edition&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.131.0: A Valentine&#39;s Day &amp;amp; Electron 30 Edition&lt;/h2&gt;
&lt;p&gt;Hello, and welcome, one and all! This release brings the long-awaited (and long-previewed in our Rolling releases) upgrade to Electron 30 to our stable &amp;quot;Regular&amp;quot; releases!&lt;/p&gt;
&lt;p&gt;Catching up, at least somewhat, with the rapid pace of new Electron versions is a goal we&#39;ve been actively working on since we started Pulsar almost 4 years ago. We&#39;re happy to make one of the larger steps in that direction since we began with this release (from Electron 12 to Electron 30.) We recognize that Electron 30 is still not the latest Electron version, but it took a tremendous amount of work to get here, and we are still working diligently on further upgrades.&lt;/p&gt;
&lt;p&gt;On a more business-as-usual note, we also have several language/grammar improvements, various bugfixes and miscellaneous improvements. Please see the full changelog below for details.&lt;/p&gt;
&lt;p&gt;We&#39;re very excited for this milestone, and please do let us know if anything needs fixing -- this was a huge undertaking under the hood! (Did we mention the accompanying blog post?: https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/)&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1.131.0&quot; tabindex=&quot;-1&quot;&gt;1.131.0&lt;/h2&gt;
&lt;p&gt;Because this is such a huge upgrade to Pulsar, some of your community packages may be affected!
If you handle distributions for Pulsar as a community maintainer make sure to read this changelog carefully to make things compatible!
For more information, read &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/&quot;&gt;Pulsar on Electron 30: what it means for you&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update Electron to version 30!
&lt;ul&gt;
&lt;li&gt;Node is now version 20.11.1&lt;/li&gt;
&lt;li&gt;Chromium is now version 124&lt;/li&gt;
&lt;li&gt;This means better performance, better Node library compatibility, and ability for community packages to use newer features of Chromium.&lt;/li&gt;
&lt;li&gt;It should also vastly improve the Pulsar experience for Linux users in Wayland environments.&lt;/li&gt;
&lt;li&gt;Because this is such a big upgrade, some of your community packages might be affected!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bump &lt;code&gt;ppm&lt;/code&gt; to use Node 20.11.1
&lt;ul&gt;
&lt;li&gt;For the first time in a long time, both &lt;code&gt;ppm&lt;/code&gt; and Pulsar are using the same version of Node; this should avoid some rare bugs encountered when installing certain packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fix handling when opening files to certain line numbers via CLI - e.g. &lt;code&gt;pulsar foo.txt:30&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Prevent packages from spawning new background tasks if the environment is unloading (as would happen during a window reload or while quitting Pulsar).&lt;/li&gt;
&lt;li&gt;[find-and-replace] Fix an issue where certain files would show results in a project-wide search even when they would be excluded by the file/directory pattern.&lt;/li&gt;
&lt;li&gt;[markdown-preview] Fix situations where &amp;quot;Save as HTML&amp;quot; and &amp;quot;Copy as HTML&amp;quot; silently failed with certain kinds of content.&lt;/li&gt;
&lt;li&gt;[autocomplete-plus] Prevent certain kinds of suggestions from being incorrectly filtered out of the result set.&lt;/li&gt;
&lt;li&gt;[language-java] Update to the latest &lt;code&gt;tree-sitter-java&lt;/code&gt; parser, adding support for multiline strings, among other things.&lt;/li&gt;
&lt;li&gt;[language-python] Better highlighting of &lt;code&gt;except&lt;/code&gt; clauses; fixed folding of certain &lt;code&gt;if&lt;/code&gt; blocks.&lt;/li&gt;
&lt;li&gt;[language-typescript] Better highlighting of template literals; adding folding of &lt;code&gt;interface&lt;/code&gt; and &lt;code&gt;enum&lt;/code&gt; blocks.&lt;/li&gt;
&lt;li&gt;[language-javascript] Proper highlighting of JSX with namespaced attributes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Enhance documentation for &lt;code&gt;atom.commands.dispatch()&lt;/code&gt; method &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1411&quot;&gt;@trusktr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix autocomplete-plus crash with non-workspace editors &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1381&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix tree-view crash when dock pane is split &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1409&quot;&gt;@asiloisad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tree-sitter rolling fixes, 1.131.0 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1377&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Always show suggestions with &lt;code&gt;textEdit&lt;/code&gt;s instead of filtering them out &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1422&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix incorrect interpretation of a line-number spec on the command line &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1400&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Prevent task spawning during unload &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1387&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[markdown-preview] Fix failure to serialize to HTML when the document contains certain kinds of code blocks &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1374&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump to latest &lt;code&gt;ppm&lt;/code&gt; after fixing the &lt;code&gt;force-process-config&lt;/code&gt; issue in ppm#162 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1396&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove reliance on &lt;code&gt;title&lt;/code&gt; key of a setting to avoid using locale labels &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1391&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump CI runners to &lt;code&gt;macos-14&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1389&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix text-editor-component annoying bug &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1336&quot;&gt;@Psychosynthesis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Migrate to python3 style super for new class snippets in language-python &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1385&quot;&gt;@bridgetjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update to Electron 30 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1367&quot;&gt;@mauricioszabo and @savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Update Rolling upload token &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1382&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[find-and-replace] Prevent addition of project results from editors whose paths are not matched by the current path inclusions &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1380&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tree-sitter rolling fixes, 1.130.0 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1320&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update actions/setup-python action to v6 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1365&quot;&gt;@renovate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update actions/setup-node action to v6 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1364&quot;&gt;@renovate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[meta] Add new and missing packages to our renovate config &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1359&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update pulsar-updater package &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1356&quot;&gt;@renovate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update actions/checkout action to v5 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1357&quot;&gt;@renovate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add &amp;quot;Regular Release Checklist&amp;quot; issue template &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1346&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;changes-for-electron-30&quot; tabindex=&quot;-1&quot;&gt;Changes for Electron 30&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Internals of &#39;Update to Electron 30&#39; PR&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Remove all support for legacy Tree-sitter&lt;/li&gt;
&lt;li&gt;Prefer &lt;code&gt;@electron/remote&lt;/code&gt;, deprecate direct usage of &lt;code&gt;electron.remote&lt;/code&gt; and switch all internal usages to &lt;code&gt;@electron/remote&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Decaffeinate &lt;code&gt;tree-view&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fix a failing &lt;code&gt;autocomplete-plus&lt;/code&gt; spec&lt;/li&gt;
&lt;li&gt;Get &lt;code&gt;dev-live-reload&lt;/code&gt; specs passing&lt;/li&gt;
&lt;li&gt;Get &lt;code&gt;image-view&lt;/code&gt; specs passing&lt;/li&gt;
&lt;li&gt;[language-ruby] Add a basic grammar test spec&lt;/li&gt;
&lt;li&gt;[markdown-preview] Get specs passing&lt;/li&gt;
&lt;li&gt;[settings-view] Get specs passing&lt;/li&gt;
&lt;li&gt;Point to Electron &lt;code&gt;30.0.9&lt;/code&gt; and point our dependencies to the NPM-published versions under the &lt;code&gt;@pulsar-edit&lt;/code&gt; namespace that are compatible with Electron 30.0.9.&lt;/li&gt;
&lt;li&gt;Fix some &lt;code&gt;TextEditorComponent&lt;/code&gt; issues related to changes in Chromium sometime between Electron 12 and Electron 30.&lt;/li&gt;
&lt;li&gt;Eliminate reliance on &lt;code&gt;typescript-simple&lt;/code&gt; in favor of a custom solution that uses the &lt;code&gt;typescript&lt;/code&gt; package directly.&lt;/li&gt;
&lt;li&gt;Consume &lt;code&gt;get-scrollbar-style&lt;/code&gt; to replace the deprecated &lt;code&gt;scrollbar-style&lt;/code&gt; module&lt;/li&gt;
&lt;li&gt;Additional changes related to device pixel ratio that probably should have gone in the earlier commit.&lt;/li&gt;
&lt;li&gt;Add the ability to report crashes via Electron&#39;s standard &lt;code&gt;crashReporter&lt;/code&gt; interface.&lt;/li&gt;
&lt;li&gt;Delete deprecated &amp;quot;app.allowRendererProcessReuse = false&amp;quot;&lt;/li&gt;
&lt;li&gt;Enable &lt;code&gt;@electron-remote&lt;/code&gt; for the given window during startup and disable a Blink experimental feature that was causing trouble with package compatibility (because it added an &lt;code&gt;on&lt;/code&gt; method to all DOM nodes!).&lt;/li&gt;
&lt;li&gt;Be more paranoid about release channels in a handful of places in case we want to maintain a &lt;code&gt;next&lt;/code&gt; (or &lt;code&gt;nightly&lt;/code&gt; or &lt;code&gt;preview&lt;/code&gt;) release channel on an ongoing basis.&lt;/li&gt;
&lt;li&gt;Cache &lt;code&gt;Language&lt;/code&gt; instances in &lt;code&gt;web-tree-sitter&lt;/code&gt; so that the specs don&#39;t run out of memory.&lt;/li&gt;
&lt;li&gt;Preserve an &lt;code&gt;ATOM_CHANNEL&lt;/code&gt; environment variable if it exists and other changes related to release-channel agnosticism.&lt;/li&gt;
&lt;li&gt;[snippets] Get specs passing&lt;/li&gt;
&lt;li&gt;[spell-check] Get specs passing and abandon &lt;code&gt;atom-pathspec&lt;/code&gt; in favor of an internal implementation.&lt;/li&gt;
&lt;li&gt;[tabs] Fix an exception that can happen in unusual scenarios when the browser can&#39;t give us an element under a given X/Y coordinate.&lt;/li&gt;
&lt;li&gt;[update-package-dependencies] Get specs passing&lt;/li&gt;
&lt;li&gt;[symbol-provider-tree-sitter] Unmock clock in the standard way&lt;/li&gt;
&lt;li&gt;Remove outdated Tree-sitter documentation&lt;/li&gt;
&lt;li&gt;Update GitHub Actions CI jobs to include Wayland-related keyboard dependencies.&lt;/li&gt;
&lt;li&gt;Update CirrusCI build job to include Wayland-related keyboard dependencies.&lt;/li&gt;
&lt;li&gt;Revert to a single &lt;code&gt;entitlements.plist&lt;/code&gt; now that we&#39;re no longer affected by the awful &lt;code&gt;libuv&lt;/code&gt; bug that was present in Electron 12.&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;script/electron-builder.js&lt;/code&gt; to support a couple of command-line switches and to build correctly for Electron 30.&lt;/li&gt;
&lt;li&gt;Fix &lt;code&gt;ThemeManager&lt;/code&gt; specs&lt;/li&gt;
&lt;li&gt;Define two methods on the &lt;code&gt;atom&lt;/code&gt; global to work around &lt;code&gt;tree-view&lt;/code&gt; issues related to trashing and revealing items in &lt;code&gt;electron.shell&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Comment reformatting&lt;/li&gt;
&lt;li&gt;Some integration test fixes&lt;/li&gt;
&lt;li&gt;Fix &lt;code&gt;PackageManager&lt;/code&gt; specs&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;yarn.lock&lt;/code&gt; from &lt;code&gt;updated-latest-electron&lt;/code&gt; branch&lt;/li&gt;
&lt;li&gt;Swallow exceptions raised by pending tests&lt;/li&gt;
&lt;li&gt;Disallow &lt;code&gt;if(&lt;/code&gt; and the like in &lt;code&gt;.eslitrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;submodules: true&lt;/code&gt; back into certain workflows&lt;/li&gt;
&lt;li&gt;Remove &lt;code&gt;atom.trashItem&lt;/code&gt; and &lt;code&gt;atom.showItemInFolder&lt;/code&gt; since they weren&#39;t even being used. The equivalent functions from the &lt;code&gt;shell&lt;/code&gt; module of &lt;code&gt;@electron/remote&lt;/code&gt; have been performing the same task in PulsarNext for a while now.&lt;/li&gt;
&lt;li&gt;Update ppm to commit d288b0978b35f7c0ffb3dc5c1e50c&lt;/li&gt;
&lt;li&gt;Update ppm to commit 07faba10096ee4239ce671218d9953fb2e40ecbf&lt;/li&gt;
&lt;li&gt;Remove unnecessary &lt;code&gt;Promise.all&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ppm&quot; tabindex=&quot;-1&quot;&gt;ppm&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix CI &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/154&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix misnamed variable in &lt;code&gt;rebuild&lt;/code&gt; command &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/155&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Upgrade Node to version 20.11.1 &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/156&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add TypeScript template &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/152&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Revert setting of &lt;code&gt;--force-process-config&lt;/code&gt; now that we’re on Electron 30 &lt;a href=&quot;https://github.com/pulsar-edit/ppm/pull/162&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar on Electron 30: what it means for you</title>
    <link href="https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/" />
    <updated>2025-12-02T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20251202-savetheclocktower-pulsar-on-electron-30/</id>
    <content type="html">&lt;p&gt;If you’re reading this, Pulsar’s long-planned upgrade to Electron 30 is finally upon us. This applies to rolling releases on or after December 2 &lt;em&gt;and&lt;/em&gt; to regular release versions 1.131.0 and later.&lt;/p&gt;
&lt;p&gt;We expect that lots of users will experience no downside to this upgrade whatsoever. But some community packages might need updates to work with Electron 30, so please read on to find out how this release could affect you!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20250630-savetheclocktower-pulsar-next-testing/&quot;&gt;A few months ago&lt;/a&gt;, I laid out what it means whenever we upgrade Electron to a newer version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;code runs in a newer Chromium environment and can take advantage of newer web features;&lt;/li&gt;
&lt;li&gt;code runs in a newer Node environment (in this case, version 20 instead of version 14!) and can take advantage of newer Node features; and&lt;/li&gt;
&lt;li&gt;perhaps most importantly, you may notice substantial improvements in performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But this upgrade brings us from Electron 12 to Electron 30, so it’s a bigger change than usual. If you want, you can go back through old blog posts to learn why this was a challenging upgrade from our perspective. But here’s how it may affect you as a user:&lt;/p&gt;
&lt;h2 id=&quot;(optionally)-back-up-your-home-folder&quot; tabindex=&quot;-1&quot;&gt;(Optionally) back up your home folder&lt;/h2&gt;
&lt;p&gt;We’ve tested this upgrade both with a clean home folder (the folder named &lt;code&gt;.pulsar&lt;/code&gt; that holds your settings and packages, among other things) and with a pre-existing home folder, and both have worked just fine in our tests.&lt;/p&gt;
&lt;p&gt;That said, if you’re still nervous about this upgrade, do one thing before you proceed with anything else: &lt;strong&gt;back up your home folder&lt;/strong&gt;. It’s dead-simple to do and acts as the ultimate “abort” button: in the unlikely event of something going haywire, restoring the previous state is as simple as replacing your Pulsar home folder with the backup.&lt;/p&gt;
&lt;p&gt;By default, your home folder lives at &lt;code&gt;~/.pulsar&lt;/code&gt; on macOS/Linux and &lt;code&gt;%USERPROFILE%&#92;.pulsar&lt;/code&gt; on Windows. You can also open a file explorer window at the root of your home folder by opening the settings and clicking the &lt;kbd&gt;Open Config Folder&lt;/kbd&gt; button at the bottom of the sidebar; that should identify your home folder correctly even if it’s different from the default.&lt;/p&gt;
&lt;p&gt;If you don’t already have a more comprehensive backup strategy for all your system data, consider at least creating a compressed backup of your home folder once in a while just so you can preserve the exact state of things — temporary/unsaved files, the module compilation cache, and so on.&lt;/p&gt;
&lt;h2 id=&quot;handle-possible-package-incompatibilities&quot; tabindex=&quot;-1&quot;&gt;Handle possible package incompatibilities&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://docs.pulsar-edit.dev/img/atom/incompatible-packages-indicator.png&quot; alt=&quot;incompatible-packages status bar&quot;&gt;&lt;/p&gt;
&lt;p&gt;After you upgrade, you might see the icon above in your status bar. It’s put there by &lt;a href=&quot;https://docs.pulsar-edit.dev/troubleshooting-pulsar/checking-for-incompatible-packages/&quot;&gt;the core &lt;code&gt;incompatible-packages&lt;/code&gt; package&lt;/a&gt;, whose job is exactly what it sounds like: detecting packages that are incompatible with the current version of Pulsar.&lt;/p&gt;
&lt;p&gt;The only packages that &lt;em&gt;may&lt;/em&gt; be flagged after this upgrade are packages that use Node libraries with &lt;em&gt;native module&lt;/em&gt; bindings. It’s not worth doing a deep dive into what that means… but if you had to consult &lt;a href=&quot;https://docs.pulsar-edit.dev/getting-started/dependencies-for-some-community-packages/&quot;&gt;this documentation page&lt;/a&gt; when installing a community package, it’s likely to be affected by this upgrade.&lt;/p&gt;
&lt;p&gt;If you see the icon above, click on it to read details about the incompatibility. You can expect one of several messages to be shown, but most commonly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The message may suggest that a library needs to be recompiled for the newer version of Electron. If the &lt;kbd&gt;Rebuild Packages&lt;/kbd&gt; button is enabled, click it; when it’s done rebuilding, you can reload your window (or relaunch Pulsar) to see if that fixed the incompatibility. If you no longer see the “bug” icon in your status bar, you’re probably good to go.&lt;/li&gt;
&lt;li&gt;If it says something about “use of non-context-aware module in renderer,” that’s a bigger problem that requires a bigger fix. If this happens to you, please report it in &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues/1383&quot;&gt;this megathread&lt;/a&gt; and we’ll figure out what we can do about it. Odds are good we’ll be able to fork the package and deliver a working version, or else point you to a similar package that does the same thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;known-packages-with-issues&quot; tabindex=&quot;-1&quot;&gt;Known packages with issues&lt;/h3&gt;
&lt;p&gt;Of the packages that are known to be affected, the most common are &lt;code&gt;hydrogen&lt;/code&gt; and &lt;code&gt;x-terminal-reloaded&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://packages.pulsar-edit.dev/packages/hydrogen&quot;&gt;&lt;code&gt;hydrogen&lt;/code&gt;&lt;/a&gt; depends on an old version of &lt;code&gt;zeromq&lt;/code&gt; that does not work in newer Electron.&lt;/p&gt;
&lt;p&gt;The bad news is that the &lt;code&gt;hydrogen&lt;/code&gt; package is no longer maintained by its original authors; the good news is that @asiloisad, our prolific community package contributor, has built a fork called &lt;a href=&quot;https://packages.pulsar-edit.dev/packages/hydrogen-next&quot;&gt;&lt;code&gt;hydrogen-next&lt;/code&gt;&lt;/a&gt; that ought to be a drop-in replacement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://packages.pulsar-edit.dev/packages/x-terminal-reloaded&quot;&gt;&lt;code&gt;x-terminal-reloaded&lt;/code&gt;&lt;/a&gt; is the only actively maintained terminal package (for now!) and is relied on by many to provide a built-in terminal. It once relied on a very old version of the &lt;code&gt;node-pty&lt;/code&gt; package that was incompatible with newer Electron.&lt;/p&gt;
&lt;p&gt;The good news is that we anticipated this a while back and worked with @Spiker985 (maintainer of &lt;code&gt;x-terminal-reloaded&lt;/code&gt;) to update to a newer &lt;code&gt;node-pty&lt;/code&gt; version; macOS and Linux users should experience no issues with this package as long as it’s up to date.&lt;/p&gt;
&lt;p&gt;The bad news is that Windows users will likely run into &lt;a href=&quot;https://github.com/Spiker985/x-terminal-reloaded/issues/173&quot;&gt;another issue&lt;/a&gt;. We’ve got &lt;a href=&quot;https://github.com/Spiker985/x-terminal-reloaded/pull/175&quot;&gt;a potential fix for this issue&lt;/a&gt; in the works, and if you know your way around the Node ecosystem and are a Windows user, we could use your help testing it!&lt;/p&gt;
&lt;p&gt;The better news is that Pulsar users will soon have a much simpler option for a cross-platform terminal package, but you’ll have to wait just a bit longer for that announcement.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;other-issues&quot; tabindex=&quot;-1&quot;&gt;Other issues&lt;/h2&gt;
&lt;p&gt;I’ve been running some version of Pulsar on Electron 30 for more than a year, and at least a dozen other users have been beta-testing it for months. That said, if you run into problems that aren’t covered above, please &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues/1383&quot;&gt;report them in the megathread&lt;/a&gt; and we’ll get to the bottom of it.&lt;/p&gt;
&lt;p&gt;Remember that you can always revert to earlier versions of Pulsar via the &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases&quot;&gt;GitHub releases&lt;/a&gt; page.&lt;/p&gt;
&lt;h2 id=&quot;what%E2%80%99s-next%3F&quot; tabindex=&quot;-1&quot;&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Finally delivering this upgrade is a big load off our backs, but the job’s not done. We picked Electron 30 last year just to have a target to fixate on, but Electron’s already up to version 39! So you can expect us to gradually play catch-up over the next few releases.&lt;/p&gt;
&lt;p&gt;Luckily, future Electron upgrades should be nowhere near as disruptive as this one. The worst thing about it is that catching up to Electron 39 will drop official support for some older operating systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Electron 33 drops support for macOS 10.15 (Catalina).&lt;/li&gt;
&lt;li&gt;Electron 38 drops support for macOS 11 (Big Sur).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition to this, Electron 23 has already dropped support for Windows 7, 8, and 8.1.&lt;/p&gt;
&lt;p&gt;We regret this, but Electron apps are beholden to Chromium’s support matrix. If Chromium drops support for an operating system, it’s &lt;em&gt;dropped&lt;/em&gt;. If this will affect you, you’ll at least be able to use older versions of Pulsar indefinitely. If it affects enough people, we might explore a custom release channel of Pulsar that tries to deliver new features while maintaining a broadly compatible Electron version. (No promises!)&lt;/p&gt;
&lt;p&gt;But that’ll all come into focus in the future. For now, happy coding, and see you amongst the stars!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.130.1: Hotfix for Windows</title>
    <link href="https://blog.pulsar-edit.dev/posts/20251009-DeeDeeG-v1.130.1/" />
    <updated>2025-10-09T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20251009-DeeDeeG-v1.130.1/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.130.1&quot;&gt;1.130.1&lt;/a&gt; is available now, fixing the broken Windows release of v1.130.0.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.130.1%3A-hotfix-for-windows&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.130.1: Hotfix for Windows&lt;/h2&gt;
&lt;p&gt;Hotfix: Restore Windows app to working condition, after it was mis-built in v1.130.0.&lt;/p&gt;
&lt;p&gt;Description of the issue affecting v1.130.0 on Windows: The Windows version of the app was broken, due to its native C/C++ dependencies remaining built for NodeJS when electron-rebuild failed, and due to our CI being mistakenly configured in a way that hid the failure. Electron-rebuild failed in CI due to a missing Windows 10 SDK.&lt;/p&gt;
&lt;p&gt;Resolution: We have worked around the missing Windows 10 SDK issue in CI by installing it manually, and also updated our CI workflow so that a failure of electron-rebuild would be more likely to be caught.&lt;/p&gt;
&lt;p&gt;Note: Binaries for macOS and Linux are also provided to make it simple to find the latest binaries for all platforms attached to one GitHub Release. Other than coming from a new CI run with a new patch version bump, there should be no other changes from v1.130.0 on macOS or Linux.&lt;/p&gt;
&lt;p&gt;Thank you very much to our community members for quickly reporting this issue and helping to confirm the fix.&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1.130.1&quot; tabindex=&quot;-1&quot;&gt;1.130.1&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fixed broken Windows build that affected Pulsar v1.130.0&lt;/li&gt;
&lt;li&gt;Updated our CI to not miss this particular type of build failure, should it occur again&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ci] Fix Windows Builds by manually installing the Win10 SDK &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1351&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Split &#39;yarn build&#39; and &#39;yarn build:apm&#39; into separate steps &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1353&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.130.0: Spooktacular Edition</title>
    <link href="https://blog.pulsar-edit.dev/posts/20251009-DeeDeeG-v1.130.0/" />
    <updated>2025-10-09T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20251009-DeeDeeG-v1.130.0/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.130.0&quot;&gt;1.130.0&lt;/a&gt; is available now!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.130.0%3A-spooktacular-edition&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.130.0: Spooktacular Edition&lt;/h2&gt;
&lt;p&gt;Welcome to another Spooktacular Pulsar release!&lt;/p&gt;
&lt;p&gt;To welcome in the Autumn, we&#39;d like to shout out some updates to our website!&lt;/p&gt;
&lt;p&gt;The long awaited revamp of our web presence not only massively improves and updates our documentation, it also unifies our web design. There are new subdomains for each service, and we&#39;ve put our hugely improved documentation live (which you may have seen during its beta period). It&#39;s now more in-depth and updated, and it&#39;s finally got auto-updating API docs for Pulsar, which we have been missing since the beginning.&lt;/p&gt;
&lt;p&gt;As for the Pulsar editor itself, we&#39;ve got some updated Tree-sitter and language support, as well as autocomplete-css and autocomplete-plus updates and improvements, a focus fix for tree-view on Windows, a fix so that find-in-project searches properly exclude open-and-modified files that don&#39;t match the given path filter, and a change to &lt;code&gt;snippets&lt;/code&gt; to restore legacy compatibility with the &lt;code&gt;emmet&lt;/code&gt; package.&lt;/p&gt;
&lt;p&gt;A new &amp;quot;I18n&amp;quot; API (short for &amp;quot;internationalization&amp;quot;) allows Pulsar and even community packages to localize all their text to a user&#39;s preferred language. It&#39;s in its very early stages, but after some more time and work you should be able to set your preferred language and have Pulsar respect it.&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1.130.0&quot; tabindex=&quot;-1&quot;&gt;1.130.0&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;autocomplete-plus&lt;/code&gt; can now make other text edits to the buffer when a suggestion is accepted - for instance, adding an &lt;code&gt;import&lt;/code&gt; for that suggestion.&lt;/li&gt;
&lt;li&gt;Experimental localization support is now being added into the editor, allowing the editor, core packages and even community packages to localize their interface for any language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;autocomplete-css&lt;/code&gt; has gotten significantly updated completions.&lt;/li&gt;
&lt;li&gt;Various documentation and UI links updated after website update.&lt;/li&gt;
&lt;li&gt;Changed some returns in a backwards compatible way to ensure the community package &lt;code&gt;emmet&lt;/code&gt; will work again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[find-and-replace] When a path pattern is provided on a project-wide search, Pulsar won&#39;t include any open and modified buffers in the search unless their paths also match the given pattern. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1298&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[autocomplete-plus] Add support for &amp;quot;additional&amp;quot; text edits when a suggestion is accepted &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1301&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Update Rolling Release binary upload token &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1331&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;update-manager-spec.js - release notes url spec change &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1329&quot;&gt;@wesinator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[snippets] Add getter to fix &lt;code&gt;emmet&lt;/code&gt; package &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1334&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update dependency minimatch to v3 [SECURITY] &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1322&quot;&gt;@renovate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[tree-view] Ensure Explorer opens in focus on Windows &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1167&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[core] i18n: Fresh Start &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1074&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[autocomplete-css] Update Completions, deps, improve completions data sources &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1191&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Resolve Issues in packaged Pulsar Localization &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1337&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[meta] remove legacy atom project md files &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1330&quot;&gt;@wesinator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update keymap documentation links &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1339&quot;&gt;@williamtheaker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[core &amp;amp; timecop] Locale loading Statistics &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1338&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Pin fpm gem to ~&amp;gt; 1.16.0 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1347&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensure &lt;code&gt;watchPath&lt;/code&gt; &amp;quot;de-normalizes&amp;quot; filesystem event paths if opted into so that users of &lt;code&gt;watchPath&lt;/code&gt; don&#39;t have to do their own realpath resolution &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1286&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.129.0: An August Occasion</title>
    <link href="https://blog.pulsar-edit.dev/posts/20250807-DeeDeeG-v1.129.0/" />
    <updated>2025-08-07T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20250807-DeeDeeG-v1.129.0/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.129.0&quot;&gt;1.129.0&lt;/a&gt; is available now!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.129.0%3A-an-august-occasion&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.129.0: An &lt;em&gt;August&lt;/em&gt; Occasion&lt;/h2&gt;
&lt;p&gt;Howdy folks,&lt;/p&gt;
&lt;p&gt;Another fine Pulsar release, Pulsar 1.129.0, is available for your use and enjoyment. See changelog below for details.&lt;/p&gt;
&lt;p&gt;A big shout-out to @Drsheppard01 for their first contribution in the form of PR &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1241&quot;&gt;#1241&lt;/a&gt;, and to @jmanuel1 for the issue report &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues/1302&quot;&gt;#1302&lt;/a&gt; that led to a quick fix from @savetheclocktower in PR &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1303&quot;&gt;#1303&lt;/a&gt;. And to several members of the community who have given feedback on GitHub, Discord, etc.&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1.129.0&quot; tabindex=&quot;-1&quot;&gt;1.129.0&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Some minor Tree-sitter fixes, including fixing a bug in SCSS highlighting and ensuring proper highlighting support for abstract methods in TypeScript.&lt;/li&gt;
&lt;li&gt;When viewing a file that exists on disk outside of your project root, you may now use &lt;strong&gt;Tree View: Rename&lt;/strong&gt; to “import” it into your project folder by giving it a relative path.&lt;/li&gt;
&lt;li&gt;Updated various dependencies for security reasons.&lt;/li&gt;
&lt;li&gt;Updated AppImages to type 2 runtime -- &lt;code&gt;libfuse&lt;/code&gt; is no-longer required to be installed on the end-user&#39;s system to use Pulsar&#39;s AppImages!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cirrus: Fetch Buster packages from archive.debian.org &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1315&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update deps June 2025 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1294&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update appimagetool link in ./scripts/fix-linux-appimage.sh &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1241&quot;&gt;@ Drsheppard01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tree-sitter rolling fixes, 1.129 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1300&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix CI build job in Ubuntu &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1309&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[tree-view] Allow &lt;code&gt;tree-view:rename&lt;/code&gt; to &amp;quot;import&amp;quot; the current file… &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1303&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Update Rolling upload token &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1292&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Refactor &lt;code&gt;StateStore&lt;/code&gt; to remove dependency on the &lt;code&gt;atom&lt;/code&gt; global &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1256&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar on modern Electron: clearing the runway for arrival</title>
    <link href="https://blog.pulsar-edit.dev/posts/20250630-savetheclocktower-pulsar-next-testing/" />
    <updated>2025-06-30T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20250630-savetheclocktower-pulsar-next-testing/</id>
    <content type="html">&lt;p&gt;You might’ve noticed that the releases around here have been getting sparser and sparser. We haven’t even had a release since May. Is this the dreaded death spiral?&lt;/p&gt;
&lt;p&gt;No, it isn’t; we’ve just entered the cocoon and are preparing to emerge as a more modern and performant butterfly. And you can help us &lt;em&gt;test&lt;/em&gt; that butterfly!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;We’re getting very close to releasing the biggest update to Pulsar that there’s ever been: making it run on a recent version of &lt;a href=&quot;https://www.electronjs.org/&quot;&gt;Electron&lt;/a&gt;, the framework that allows us to write HTML and CSS and JavaScript and turn it into a desktop application. Our current version of Electron is almost four years old, so this is a major upgrade.&lt;/p&gt;
&lt;p&gt;When it happens, we think you’ll all notice the difference; for one thing, startup speed should be &lt;em&gt;much&lt;/em&gt; faster for everyone. But for some users it might be disruptive, so we’re pre-announcing its arrival so we can set expectations and help folks understand how they might be affected. One way you can guard against this is to &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20250630-savetheclocktower-pulsar-next-testing/#help-us-test-pulsarnext&quot;&gt;download the new version and help us test it&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;But I’m getting ahead of myself. Let’s do this FAQ-style.&lt;/p&gt;
&lt;h2 id=&quot;why-haven%E2%80%99t-there-been-regular-monthy-releases-lately%3F&quot; tabindex=&quot;-1&quot;&gt;Why haven’t there been regular monthy releases lately?&lt;/h2&gt;
&lt;p&gt;We’re all volunteers who often have to juggle other things in our lives. Pulsar always shot for a once-a-month release schedule — ideally around the 15th, but often a few days late!&lt;/p&gt;
&lt;p&gt;In recent months, however, there simply haven’t been as many things to ship. The most recent version, 1.128.0, was &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20250502-DeeDeeG-v1.128.0&quot;&gt;larger than usual&lt;/a&gt; — RTL text editing, new highlighting options for comments in JSON, and a couple of big performance improvements. Since then, though, there haven’t even been enough changes to the main Pulsar branch to make a new release a priority.&lt;/p&gt;
&lt;p&gt;But why? We certainly haven’t run out of things to address.&lt;/p&gt;
&lt;p&gt;I can’t speak for others, but I know the answer for myself: about 80% of my Pulsar-related efforts in this calendar year have been spent on the boring but important goal of Electron modernization.&lt;/p&gt;
&lt;h2 id=&quot;why-does-electron-need-to-be-updated%3F&quot; tabindex=&quot;-1&quot;&gt;Why does Electron need to be updated?&lt;/h2&gt;
&lt;p&gt;Electron is based on &lt;a href=&quot;https://www.chromium.org/Home/&quot;&gt;Chromium&lt;/a&gt;, the open-source flavor of Google Chrome. Chromium updates on a regular basis for all the reasons that a browser needs to update: new features, architectural improvements, performance improvements to V8 (Chromium’s JavaScript engine, and also the engine that powers Node), and security fixes.&lt;/p&gt;
&lt;p&gt;For those reasons, it’s important for Electron to update at a similar cadence to Chromium so that it can also enjoy those features and security fixes.&lt;/p&gt;
&lt;p&gt;Electron also bundles &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node&lt;/a&gt;, so each release includes whatever version of Node is stable at time of release. This is important because Electron isn’t very useful if it’s using a version of Node that’s too old to support the requirements of commonly used NPM packages.&lt;/p&gt;
&lt;h2 id=&quot;why-is-pulsar%E2%80%99s-electron-version-so-far-behind%3F&quot; tabindex=&quot;-1&quot;&gt;Why is Pulsar’s Electron version so far behind?&lt;/h2&gt;
&lt;p&gt;Atom literally &lt;em&gt;invented&lt;/em&gt; Electron; and, as we learned with Tree-sitter, it’s sometimes expensive to be the first implementer of a major new thing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20240124-mauricioszabo-the-quest-for-electron-lts&quot;&gt;We’ve written before&lt;/a&gt; about our goal to get Pulsar onto a modern version of Electron. We’re on version &lt;strong&gt;12.2.3&lt;/strong&gt; right now — positively &lt;em&gt;ancient&lt;/em&gt; considering that the stable version at publish time is &lt;strong&gt;36.4.0&lt;/strong&gt;. Version 12.2.3 dates back to November of 2021.&lt;/p&gt;
&lt;p&gt;Atom was on an &lt;em&gt;even older&lt;/em&gt; version of Electron, and one of the early goals of the Pulsar team was to modernize the editor in all respects, including its Electron version. When it was upgraded to 12.2.3, though, that wasn’t even the newest version of Electron at the time — it was just as far as it could be upgraded without major changes to the codebase.&lt;/p&gt;
&lt;h2 id=&quot;what-changes-had-to-be-made%2C-and-why%3F&quot; tabindex=&quot;-1&quot;&gt;What changes had to be made, and why?&lt;/h2&gt;
&lt;p&gt;One of the biggest tasks on that list — maybe as big as all the others &lt;em&gt;combined&lt;/em&gt; — was retiring the original implementation of &lt;a href=&quot;https://tree-sitter.github.io/tree-sitter/&quot;&gt;Tree-sitter&lt;/a&gt; and replacing it with a modern implementation using WebAssembly. (And if that’s news to you, I have a &lt;a href=&quot;https://blog.pulsar-edit.dev/posts/20230925-savetheclocktower-modern-tree-sitter-part-1&quot;&gt;seven-part blog post series&lt;/a&gt; for your perusal!)&lt;/p&gt;
&lt;p&gt;As for the other changes and the &lt;em&gt;why&lt;/em&gt;: I’d be happy to go into detail in future blog posts, but that’s too big of a topic for this one.&lt;/p&gt;
&lt;h2 id=&quot;why-has-it-taken-so-long%3F&quot; tabindex=&quot;-1&quot;&gt;Why has it taken so long?&lt;/h2&gt;
&lt;p&gt;The changes we needed to make to Pulsar to upgrade Electron any further have loomed over us since the very beginning of Pulsar, like a list of chores that’s so long that you try to avoid even &lt;em&gt;looking&lt;/em&gt; at it.&lt;/p&gt;
&lt;p&gt;But you don’t have to look at the whole list at once; you just have to focus on the next task. And if you keep focusing on the next task in the list and &lt;em&gt;only&lt;/em&gt; the next task, one day you’ll find yourself with a pretty short list. There used to be dozens of tasks on that list, and now there’s more like &lt;em&gt;five&lt;/em&gt;. And it feels good.&lt;/p&gt;
&lt;p&gt;Now, “slow and steady” is the moral of &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Tortoise_and_the_Hare&quot;&gt;&lt;em&gt;The Tortoise and the Hare&lt;/em&gt;&lt;/a&gt;, but I’ll bet the bystanders watching that race still got pretty bored! From starting the Tree-sitter modernization project to shipping it as the default, it took almost a year of my free time.&lt;/p&gt;
&lt;p&gt;Some of the other tasks have been individually frustrating, but nowhere near as much of a time sink. But the sheer number of them means that we’re 2.5 years into Pulsar’s public existence and only now are we on the verge of delivering this upgrade we’ve known needed to happen since the get-go.&lt;/p&gt;
&lt;p&gt;We wish it had happened faster! But it’s happening, and once it’s done we can move onto the next thing.&lt;/p&gt;
&lt;h2 id=&quot;what-will-be-different-about-this-new-version%3F&quot; tabindex=&quot;-1&quot;&gt;What will be different about this new version?&lt;/h2&gt;
&lt;p&gt;I’ll try to set expectations properly: it’s still going to feel like Pulsar. If you like Pulsar now, you’ll still like it after the Electron update. If there are major aspects of Pulsar you don’t like right now, I can’t imagine any of them will be &lt;em&gt;substantially&lt;/em&gt; different after the update.&lt;/p&gt;
&lt;p&gt;Except one: the new version of Pulsar &lt;strong&gt;really is quite fast to launch&lt;/strong&gt;, and fast to open a new project window. Testers on all platforms have offered this feedback, often without our even telling them that they could expect an improvement in load times. For an editor that has a reputation (whether earned or unearned) of being sluggish, this is a big deal for us; and if that were the only improvement, it’d be plenty on its own.&lt;/p&gt;
&lt;p&gt;Apple Silicon users in particular will be &lt;em&gt;very&lt;/em&gt; happy to use Pulsar once the upgrade happens, as they are affected by an obscure performance bug that has been plaguing Pulsar since almost the beginning.&lt;/p&gt;
&lt;p&gt;But also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Newer Electron means newer Node. Electron 12.2.3 runs Node 14; Electron 30.0.9 runs Node 20. &lt;a href=&quot;https://nodejs.org/en/about/previous-releases#looking-for-the-latest-release-of-a-version-branch&quot;&gt;Node 14 has been in “end-of-life” mode for more than two years&lt;/a&gt;, and it’s an ongoing drag on Pulsar development &lt;em&gt;and&lt;/em&gt; community package development. If you’re a package author, you might’ve already had situations where you had to use an older version of a dependency just to get it to run correctly in Pulsar.&lt;/p&gt;
&lt;p&gt;I’ve felt this pain, too: &lt;a href=&quot;https://web.pulsar-edit.dev/packages/pulsar-ide-css&quot;&gt;&lt;code&gt;pulsar-ide-css&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://web.pulsar-edit.dev/packages/pulsar-ide-json&quot;&gt;&lt;code&gt;pulsar-ide-json&lt;/code&gt;&lt;/a&gt; each run a language server in the background, but neither such server can be run in Node 14. Right now, a user has to configure each package with the path to a &lt;code&gt;node&lt;/code&gt; binary on their computer so it can run the language servers in a recent version of Node.&lt;/p&gt;
&lt;p&gt;It’s much simpler to have Electron spawn the language server itself using its own built-in version of Node. Once we upgrade Electron, this will once again be possible, and both these packages will become much simpler to use.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Newer Electron means newer Chromium. The web platform moves fast, and four years’ worth of improvements means things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/:has&quot;&gt;&lt;code&gt;:has()&lt;/code&gt; CSS pseudo-class&lt;/a&gt; that lets you identify elements by whether they contain other elements.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries&quot;&gt;Container queries&lt;/a&gt; will be especially nice to have in Pulsar. (For instance: certain pane items can exist either in a narrow side dock or the wide-but-short bottom dock. If they can be styled differently just based on the width of their containing element rather than the viewport, that’s a big deal.)&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Popover_API&quot;&gt;popover API&lt;/a&gt; is something we really should be investigating, too, since we use plenty of modal palettes in Pulsar. It might remove the need to do things like focus management in JavaScript and let them be handled by the browser itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These benefits are more immediately compelling to package authors, but users themselves will derive downstream benefits from anything that makes package development easier.&lt;/p&gt;
&lt;p&gt;So, in short: you’ll be able to take advantage of performance improvements in Chromium and Electron, and will be able to write and use packages that rely on brand new web platform features.&lt;/p&gt;
&lt;p&gt;And, of course, this upgrade wouldn’t be as meaningful if we planned to stay on 30.0.9 indefinitely. We’ve set that release as a fixed target for now, but future Electron upgrades will be much smoother.&lt;/p&gt;
&lt;h2 id=&quot;what-are-the-downsides%3F&quot; tabindex=&quot;-1&quot;&gt;What are the downsides?&lt;/h2&gt;
&lt;p&gt;There’s only one downside that comes to mind.&lt;/p&gt;
&lt;p&gt;Just as Pulsar itself has had to update some of its packages to have them continue to work within Pulsar, &lt;strong&gt;some community packages might need to be updated&lt;/strong&gt; in order to be compatible with Pulsar running on newer Electron.&lt;/p&gt;
&lt;p&gt;Hardly any packages are affected by this, because it only matters for packages that have native bindings. But those packages tend to do big, important things.&lt;/p&gt;
&lt;p&gt;One such example is &lt;a href=&quot;https://web.pulsar-edit.dev/packages/x-terminal-reloaded&quot;&gt;&lt;code&gt;x-terminal-reloaded&lt;/code&gt;&lt;/a&gt;, the most widely-used terminal package in Pulsar. Luckily, &lt;code&gt;x-terminal-reloaded&lt;/code&gt; is maintained and has a straightforward upgrade path. We’ve been working hard to make a version of &lt;code&gt;x-terminal-reloaded&lt;/code&gt; that works identically in both current Pulsar and future Pulsar so that you can upgrade without hassle.&lt;/p&gt;
&lt;p&gt;Another example is &lt;a href=&quot;https://web.pulsar-edit.dev/packages/hydrogen&quot;&gt;&lt;code&gt;hydrogen&lt;/code&gt;&lt;/a&gt;. In that case, the solution is more complicated, since &lt;code&gt;hydrogen&lt;/code&gt; isn’t maintained anymore. But &lt;a href=&quot;https://github.com/asiloisad&quot;&gt;@asiloisad&lt;/a&gt;’s got a fork of &lt;code&gt;hydrogen&lt;/code&gt; called &lt;a href=&quot;https://web.pulsar-edit.dev/packages/hydrogen-next&quot;&gt;&lt;code&gt;hydrogen-next&lt;/code&gt;&lt;/a&gt; that uses newer libraries and ought to be a drop-in replacement.&lt;/p&gt;
&lt;p&gt;Those are the major packages that are on our radar as needing updates. I’m sure there are others out there, and even if they’re obscure, I’d love to hear about them if they stop working. I’m quite confident we can guide you toward either a fix for the issue or a new package that does the same thing.&lt;/p&gt;
&lt;p&gt;But, like I said, &lt;strong&gt;the vast majority of packages will keep working just as they are.&lt;/strong&gt; I use about 60 community packages (not including the dozen or more that are under active development at any given time on my computer) and they all run equally well in new Pulsar as current Pulsar.&lt;/p&gt;
&lt;h2 id=&quot;when-will-it-be-ready%3F&quot; tabindex=&quot;-1&quot;&gt;When will it be ready?&lt;/h2&gt;
&lt;p&gt;I speak both truthfully and unhelpfully when I say: it’ll be ready when it’s ready. I do think it’s a matter of months, but it depends on how quickly we can get through the last few chores on the list.&lt;/p&gt;
&lt;h2 id=&quot;how-can-i-speed-it-along%3F&quot; tabindex=&quot;-1&quot;&gt;How can I speed it along?&lt;/h2&gt;
&lt;p&gt;Several ways. Let me arrange them in order of increasing likelihood:&lt;/p&gt;
&lt;h3 id=&quot;be-the-exact-thing-we-need-right-now&quot; tabindex=&quot;-1&quot;&gt;Be the exact thing we need right now&lt;/h3&gt;
&lt;p&gt;If you’re a unicorn that loves Pulsar, has free time to contribute, and knows a lot about C++ and Node bindings… please &lt;a href=&quot;https://discord.gg/7aEbB9dGRT&quot;&gt;reach out to us on Discord&lt;/a&gt;!&lt;/p&gt;
&lt;h3 id=&quot;contribute-according-to-your-expertise&quot; tabindex=&quot;-1&quot;&gt;Contribute according to your expertise&lt;/h3&gt;
&lt;p&gt;More seriously, even if you don’t have that specific skillset, we can always use more contributors. If you know stuff about the web platform, you’d be useful, even if you don’t have specific experience with Electron. An eagerness to learn and participate is worth far more to us.&lt;/p&gt;
&lt;p&gt;We could also use more redundancy on the &lt;strong&gt;devops&lt;/strong&gt; side of the project. Pulsar requires a complicated CI workflow for automated testing and automated releases — three platforms, two processor architectures, and at least two “flavors” of release on each OS. If we had at least two people who were familiar enough with the CI flows to troubleshoot any issues that may arise during release, it’d be a lot easier for us to rotate into and out of the project as time permits.&lt;/p&gt;
&lt;p&gt;If this sounds like your cup of tea, feel free to jump into the &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues&quot;&gt;issue tracker&lt;/a&gt; or the &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pulls&quot;&gt;list of open pull requests&lt;/a&gt;… or else &lt;a href=&quot;https://discord.gg/7aEbB9dGRT&quot;&gt;ask on Discord&lt;/a&gt; if you’re eager to help but not sure exactly where to start.&lt;/p&gt;
&lt;h3 id=&quot;help-us-test-pulsarnext&quot; tabindex=&quot;-1&quot;&gt;Help us test PulsarNext&lt;/h3&gt;
&lt;p&gt;But we know even that’s a lot to ask. Lots of you already stare at screens all day for your jobs. But there is another option: if you’re willing to use beta software, you can help us test this new version of Pulsar.&lt;/p&gt;
&lt;p&gt;Atom used to have a “nightly” release channel that could be installed alongside the regular version of Atom. In that spirit, we’ve got a “Pulsar on Electron 30” channel that you can install today; it’s called &lt;strong&gt;PulsarNext&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PulsarNext has been my “daily driver” for months and has been getting easier and easier to use over that time. But we need more beta testers on various platforms so that we can find and fix any remaining issues. The best way you can help us ship this new version of Pulsar is to be a diligent beta tester and file bug reports whenever you encounter bugs.&lt;/p&gt;
&lt;p&gt;If this sounds interesting to you, keep reading!&lt;/p&gt;
&lt;h2 id=&quot;how-do-i-set-up-pulsarnext%3F&quot; tabindex=&quot;-1&quot;&gt;How do I set up PulsarNext?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Download.&lt;/strong&gt; We’ve got rolling releases set up for PulsarNext. &lt;a href=&quot;https://github.com/pulsar-edit/pulsar-electron-next-binaries/releases&quot;&gt;Pick the appropriate release&lt;/a&gt; for your OS, architecture, and distribution method. But keep in mind that not every “release” has every possible version, since they’re built by different CI jobs. If you don’t see the one you need in a given release, keep looking through older releases until you find one.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Run.&lt;/strong&gt; You can launch it from your GUI, as always. But if you launch it from the command line, keep in mind that &lt;strong&gt;its executable name is not &lt;code&gt;pulsar&lt;/code&gt;; it’s &lt;code&gt;pulsar-next&lt;/code&gt;&lt;/strong&gt;. Likewise, for package tasks, instead of &lt;code&gt;ppm&lt;/code&gt; you’ll want to use &lt;code&gt;ppm-next&lt;/code&gt; (or &lt;code&gt;pulsar-next -p&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure.&lt;/strong&gt; For various reasons, PulsarNext does not share a configuration directory with Pulsar. But that means the two can coexist on the same system and can even be running at the same time, should you have a need to do so.&lt;/p&gt;
&lt;p&gt;PulsarNext’s configuration lives in a directory called &lt;code&gt;~/.pulsar-next&lt;/code&gt; (on macOS and Linux) or &lt;code&gt;%USERPROFILE%&#92;.pulsar-next&lt;/code&gt; (on Windows).&lt;/p&gt;
&lt;p&gt;To keep packages in sync between the two installations, you’ve got a few options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can start from scratch and install packages manually.&lt;/li&gt;
&lt;li&gt;You can do a one-time copy of your packages from the &lt;code&gt;packages&lt;/code&gt; sub-folder of your Pulsar home folder to the same path in your PulsarNext home folder.&lt;/li&gt;
&lt;li&gt;You can use a package like &lt;a href=&quot;https://web.pulsar-edit.dev/packages/sync-settings&quot;&gt;sync-settings&lt;/a&gt;; it works just as well for this use case as it would for two copies of Pulsar running on two separate machines. Just make sure to configure them with the same Gist ID and access token.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use and/or test.&lt;/strong&gt; Based on feedback, your initial experience with PulsarNext will probably be wholly positive.&lt;/p&gt;
&lt;p&gt;If you do run into any difficulties, please tell us about them. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We had to rewrite one of our modules that monitors files and directories for changes. If you observe any symptoms that imply that file-watching isn’t working, please let us know. Examples might include the tree view failing to show files after they were created by something outside of PulsarNext, or the editor itself failing to update the contents of a file (when the buffer is unmodified) after an external tool changes the file’s contents.&lt;/li&gt;
&lt;li&gt;It should be rare, but if PulsarNext crashes outright, please let us know. (You’ll see a dialog titled “The editor has crashed” and options to close or reload.) On Windows and Linux, crash dumps will be generated within a special &lt;code&gt;crashdump&lt;/code&gt; folder within your PulsarNext home folder. On macOS, you can find crash reports in Console.app under the “Crash Reports” sidebar heading. Please file an issue against Pulsar, attach your crash report or crash dump, and tell us what you were doing when it happened.&lt;/li&gt;
&lt;li&gt;If you’re a Linux user who uses a &lt;a href=&quot;https://en.wikipedia.org/wiki/Wayland_(protocol)&quot;&gt;Wayland&lt;/a&gt; display server, please let us know if your keystroke detection isn’t working as expected — especially if you use a keyboard layout other than QWERTY. We had to implement this logic from scratch for Wayland users so that it worked just as well as it does for &lt;a href=&quot;https://en.wikipedia.org/wiki/X_Window_System&quot;&gt;X&lt;/a&gt; users. Feedback so far has been positive, but we’d love to get more data points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you encounter bugs, you can &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/issues&quot;&gt;file them as issues&lt;/a&gt;, or &lt;a href=&quot;https://discord.gg/7aEbB9dGRT&quot;&gt;drop into Discord&lt;/a&gt; if you want to make sure what you’re seeing isn’t intended.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;more-to-come&quot; tabindex=&quot;-1&quot;&gt;More to come&lt;/h2&gt;
&lt;p&gt;There’s a piece of advice I’ve sometimes heard: if you want to make sure you follow through with something, tell your friends you’re going to do it. It’s based on psychology; people don’t like to break commitments that they’ve made publicly.&lt;/p&gt;
&lt;p&gt;Hence the purpose of this post isn’t just to ask for help; it’s to demonstrate a commitment to following through. We want to deliver this great upgrade as soon as we can, so we’re telling our friends about it — all of you, our loyal community of users.&lt;/p&gt;
&lt;p&gt;As always, we’re grateful to you for your support — but especially for your patience through this long journey. Happy coding!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.128.0: May There Be a Spring in Your Step!</title>
    <link href="https://blog.pulsar-edit.dev/posts/20250502-DeeDeeG-v1.128.0/" />
    <updated>2025-05-02T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20250502-DeeDeeG-v1.128.0/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.128.0&quot;&gt;1.128.0&lt;/a&gt; is available now!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.128.0%3A-may-there-be-a-spring-in-your-step!&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.128.0: May There Be a Spring in Your Step!&lt;/h2&gt;
&lt;p&gt;Hello, folks. Another month or so, another Pulsar release!&lt;/p&gt;
&lt;p&gt;We&#39;ve got performance improvements, an improved editing experience for RTL languages, and comment handling for JSON and JSONC files. Please also be aware this month&#39;s release contains a security fix, so do update when you can. Thank you to the reporter of this issue.&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Vastly improved support for right-to-left text editing — meaning languages like Arabic, Hebrew, and Farsi.&lt;/li&gt;
&lt;li&gt;Added support for comments in JSON — both via a new grammar for &lt;code&gt;.jsonc&lt;/code&gt; files and via a setting to enable comments in regular &lt;code&gt;.json&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;Fixed performance issues that can arise when reopening a project with existing editor windows.&lt;/li&gt;
&lt;li&gt;Updated DOMPurify. This is a security fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tree-sitter rolling fixes, 1.128 edition &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1251&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cirrus: Pin macOS builds to using Sonoma images &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1280&quot;&gt;@DeeDeeG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump Ubuntu in CI to &lt;code&gt;ubuntu-latest&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1279&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Restore ability for packages to focus specs on both Jasmine 1 and Jasmine 2 test runners &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1265&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[markdown-preview] Update &lt;code&gt;dompurify&lt;/code&gt; to 2.5.7 &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1271&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create &lt;code&gt;SECURITY.md&lt;/code&gt; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1253&quot;&gt;@confused-Techie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve support for RTL text input &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1249&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[find-and-replace] Fix some bugs in the spec suite &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1221&quot;&gt;@savetheclocktower&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Pulsar v1.127.1 (Hotfix)</title>
    <link href="https://blog.pulsar-edit.dev/posts/20250329-DeeDeeG-v1.127.1/" />
    <updated>2025-03-29T00:00:00Z</updated>
    <id>https://blog.pulsar-edit.dev/posts/20250329-DeeDeeG-v1.127.1/</id>
    <content type="html">&lt;p&gt;Pulsar &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/releases/tag/v1.127.1&quot;&gt;1.127.1&lt;/a&gt; is available now!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&quot;pulsar-v1.127.1-(hotfix)&quot; tabindex=&quot;-1&quot;&gt;Pulsar v1.127.1 (Hotfix)&lt;/h2&gt;
&lt;p&gt;Here&#39;s a quick hotfix release, reverting a change that caused an issue for Linux users.&lt;/p&gt;
&lt;p&gt;(For all other changes since v1.126.0, please see the release notes for v1.127.0.)&lt;/p&gt;
&lt;p&gt;As always, a huge thank you to our community, contributors, and donations.
Happy coding, and see you amongst the stars!
- The Pulsar Team&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Hotfix: Reverted a Wayland-related change that Linux users reported issues with on Electron 12.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pulsar&quot; tabindex=&quot;-1&quot;&gt;Pulsar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Revert &amp;quot;Wayland pulsar script&amp;quot; &lt;a href=&quot;https://github.com/pulsar-edit/pulsar/pull/1261&quot;&gt;@mauricioszabo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>