Skip to content

Conversation

@savetheclocktower
Copy link
Contributor

@savetheclocktower savetheclocktower commented Oct 27, 2025

Do not accidentally click any green buttons. We want at least three people on the core team to sign off on this before we land it.

This updates master to the contents of updated-latest-electron, more or less — except for the parts that should not land on master (PulsarNext-specific upload tokens, CI job differences related to release channel, etc.). The commit history in this PR is, uh… artificial, but it saves us from a bunch of low-content commits that do nothing but bump individual dependencies over a period of 2+ years. This is the better way.

This PR will kick off CI tests and should build new binaries in CI; these binaries should be tested as widely as possible. I've got macOS/Apple Silicon covered (and could do macOS/Intel in a pinch, along with Windows 10), but I would love it if other folks stepped up for Linux and Windows just to make sure this works as we expect and nothing explodes. These binaries do not call themselves PulsarNext and do not use a separate home directory, so testing these binaries should also simulate the average user's experience after upgrading to this version; any packages they've got installed with native module dependencies will need to be rebuild before they work, and that could cause headaches, so I'm hoping we can get out ahead of that stuff and have a useful blog post ready when the release drops so that users can be told what to expect.

Things I'd like to settle before landing this:

  • A late commit adds atom.trashItem and atom.showItemInFolder, but I think these might be unnecessary; we should try require('@electron/remote').shell.trashItem and require('@electron/remote').shell.showItemInFolder and prefer those if they work.
  • The CirrusCI build script wasn't updated on the updated-latest-electron branch to install any of the Wayland-related build dependencies, so I'm not sure if any such binaries built by Cirrus actually support Wayland. I didn't catch this oversight until now. I updated .cirrus.yml to include these dependencies, but if we want to confirm that this results in ARM Linux builds that support Wayland, we'll have to manually trigger a Cirrus job from this PR branch.
  • Fix a bug in ppm rebuild as described below. EDIT: Before this PR lands, this other PR from ppm must land and we must update the ppm submodule reference in this PR.
  • As much as it pains me to introduce another blocking task: we really should bump ppm to Node 20.11.1 to match the version of Node that ships with Electron 30. Luckily, this PR is totally green in CI, and I'd be inclined to take it out of draft soon after I do some field tests to verify that it works as well as it seems. EDIT: It's out of draft! I'm actually inclined to land it first, bump the ppm version in this PR, then test the resulting build holistically.

But none of this should preclude review of this PR. Pick it apart! Go nuts! Consume the CI artifacts! We're really close to the finish line here!

Platform sanity checks

  • macOS, Apple Silicon
  • macOS, Intel
  • Linux, ARM64 (tested on Wayland in a VM; keyboard layout detection seems to be accurate)
  • Windows 10 (x86)
  • Windows 11 (x86)
  • Linux (x86)

mauricioszabo and others added 30 commits October 12, 2025 14:59
Abandoning support for the legacy Tree-sitter system  is a necessary step toward upgrading past Electron 12.2.3.
…and switch all internal usages to `@electron/remote`.

This commit also includes the entire bundle of changes to the `tree-view` package — the decaffeination of the `tree-view` specs made it very hard to isolate this change atomically, so I'm reluctantly deciding to bring the whole thing along.

`tree-view` has been updated to fix a few bugs with Electron 30 (moving items to the trash, revealing items in the file explorer, etc.) and the specs have been fully decaffeinated (not just machine-decaffeinated).
…and point our dependencies to the NPM-published versions under the `@pulsar-edit` namespace that are compatible with Electron 30.0.9.

This vastly reduces the number of random GitHub commits we're pointing to in our `dependencies` and helps the `resolutions` section be as streamlined as it can be.

Also includes `@electron/remote` and `@electron/rebuild`.

All internal references to paths are also changed in this commit — e.g., `require('foo')` becomes `require('@pulsar-edit/foo')`.
…related to changes in Chromium sometime between Electron 12 and Electron 30.

For instance, text bounding-box logic changed at some point to require that our four “sentinel” characters be isolated from one another — otherwise character height/width measurements are inaccurate.

Also fixed some issues related to device pixel ratios that resulted in spec failures.
…in favor of a custom solution that uses the `typescript` package directly.

`typescript-simple` is no longer updated and is arguably unnecessary anyway; it wasn't hard to replicate its behavior through direct consumption of `typescript`.

This preserves our ability to transpile TypeScript just like we can transpile CoffeeScript or `@babel`-ified JS.

This is not the happy path of TypeScript transpilation (do it yourself as a build step!) but it's behavior that exists, so we should ensure it continues to work.
…to replace the deprecated `scrollbar-style` module.

macOS offers two different “styles” of scrollbar — traditional scrollbars and “overlay” scrollbars that do not use a dedicated scrollbar track. Strangely, we can detect when the user switches from one to the other without any external dependencies… but to find out imperatively which one is currently active, we need a very light module with native bindings.

This commit adopts the new approach for detecting which macOS scrollbar style is enabled. Compared to the _status quo ante_, this should carry no behavior change on either macOS or other platforms.
…that probably should have gone in the earlier commit.
…via Electron's standard `crashReporter` interface.

Crash reports are enabled on Windows and Linux by default (macOS’s own crash reports via `Console.app` are typically more helpful, but go away if crash reporting is enabled). But you can opt into crash reporting explicitly on all platforms via the `--crashdump` command-line switch.
This option has been removed, and thus no-longer does anything,
as of Electron 14.

Committer note: This change was split out from the prior commit.
…and disable a Blink experimental feature that was causing trouble with package compatibility (because it added an `on` method to all DOM nodes!).
…in case we want to maintain a `next` (or `nightly` or `preview`) release channel on an ongoing basis.
…so that the specs don't run out of memory.

Also be more diligent about cleaning up parsers that we created for a given buffer when that buffer is destroyed.
…and other changes related to release-channel agnosticism.

(These should've been included in an earlier commit.)
…and abandon `atom-pathspec` in favor of an internal implementation.

(We are pinning to a specific commit of `node-spellchecker`. This one escaped my notice during the context-aware-native-modules sweep — probably because it's in a package! We should revisit this and publish it to NPM instead, but this is likely good enough for now.)
…when the browser can't give us an element under a given X/Y coordinate.
…to include Wayland-related keyboard dependencies.

(This probably should be done for the Cirrus builds as well!)
…to include Wayland-related keyboard dependencies.

(Untested, but copied directly from the GHA workflow files.)
…now that we're no longer affected by the awful `libuv` bug that was present in Electron 12.
…to support a couple of command-line switches and to build correctly for Electron 30.
@namoen0301
Copy link

namoen0301 commented Nov 10, 2025

I have a snapdragon based laptop so if windows arm64 artifact is available I can test it.

@savetheclocktower
Copy link
Contributor Author

OK, if I've done the ppm bump right, CI should soon produce x64 builds that are suitable for evaluation on our various machines. I'll do some jiggery-pokery in CirrusCI tomorrow to accomplish the same for ARM64 builds.

@savetheclocktower
Copy link
Contributor Author

OK, today I generated one-off builds in Cirrus from this PR branch, so go get ’em if you're on ARM64 Mac or Linux! Otherwise, yesterday's CI artifacts from GHA should work just fine as guinea pigs.

@savetheclocktower
Copy link
Contributor Author

A follow-up test on Windows worked great, other than my 2016 gaming rig being slow as hell. After grabbing the CI artifact, I was able to install Pulsar and then successfully run ppm install pulsar-edit/terminal from the shell. Once I reloaded my window, I had a working terminal. This reflects well on the Electron 30 upgrade and the new terminal package.

For as long as it's a separate package, it'll require build tools to install, so that's not any easier for Windows users. But this confirms that there aren't any major gotchas with regard to version compatibility and package authoring. Now that we bumped ppm’s Node version to match that of Electron 30.0.9, ppm won't get tripped up on (e.g.) post-install scripts that assume they're running in a Node 20 environment and therefore use Node 20 APIs.

@savetheclocktower
Copy link
Contributor Author

I also removed Windows ARM64 from the checklist above, since we don't actually distribute such a build.

I'm not well set-up to test this build on Linux x64; maybe @Spiker985 can help with that? Otherwise it's not necessarily a blocker for moving forward.

I think the next step is probably to use this for a few days and make sure there aren't any time bombs, but after that I think it should be ready to land this PR and trigger a rolling release! We can announce something on the blog at that point and wait a couple more weeks to catch bug reports; and if there's nothing show-stopping, we can finally put out a regular release of Pulsar on Electron 30 and crack open the champagne bottles.

With that in mind, I'm taking this out of draft!

@savetheclocktower savetheclocktower marked this pull request as ready for review November 20, 2025 01:25
@savetheclocktower savetheclocktower changed the title [DRAFT] Update to Electron 30 Update to Electron 30 Nov 20, 2025
@confused-Techie
Copy link
Member

Just wanting to report I've been running this version of Pulsar on Win10 & Win11 for 3 weeks, just as standard everyday usage and have not encountered any issues what-so-ever. I'm honestly flabbergasted at how solid this branch is.

@DeeDeeG
Copy link
Member

DeeDeeG commented Nov 25, 2025

Tested on Fedora 43 (x86-64) again. atom-clock and dracula-syntax worked, as did x-terminal-reloaded, somehow. Can't get pulsar-edit/termnial to work, though it seems to build successfully without erroring out, at least? Fails to activate due to a missing (JS?) dependency it can't load (called which). language-carp still fails to build.

On macOS 10.15.7 (x86-64), atom-clock and dracula-syntax are working, but I can't get x-terminal-reloaded, pulsar-edit/terminal, nor language-carp to build successfully.

@savetheclocktower
Copy link
Contributor Author

Can't get pulsar-edit/termnial to work, though it seems to build successfully without erroring out, at least? Fails to activate due to a missing (JS?) dependency it can't load (called which).

That sounds like developer error! (Me. I'm the developer.) I'll investigate!

@savetheclocktower
Copy link
Contributor Author

@DeeDeeG it was a quick fix — had which in devDependencies instead of dependencies. Feel free to try again if you like!

@savetheclocktower
Copy link
Contributor Author

On macOS 10.15.7 (x86-64), atom-clock and dracula-syntax are working, but I can't get x-terminal-reloaded, pulsar-edit/terminal, nor language-carp to build successfully.

As for these: any error logs you can get me would be quite useful.

@asiloisad
Copy link
Contributor

asiloisad commented Nov 26, 2025

I'm switched daily work to this branch too. I have notived that "ppm install steelbrain/linter-ui-default" doesn't work (node-gyp issue), but in next branch "ppm-next install steelbrain/linter-ui-default" have worked.

@savetheclocktower
Copy link
Contributor Author

I'm switched daily work to this branch too. I have notived that "ppm install steelbrain/linter-ui-default" doesn't work (node-gyp issue), but in next branch "ppm-next install steelbrain/linter-ui-default" have worked.

Interesting. Thanks for that. I will investigate.

@savetheclocktower
Copy link
Contributor Author

OK, good news is that ppm install linter-ui-default works just fine; it's merely the straight-from-GitHub installation that fails.

Here's the full output:

Output

~ ➜  ppm install steelbrain/linter-ui-default                                                 (Ruby 3.3.0 / Node 20.11.1)
Cloning https://github.com/steelbrain/linter-ui-default.git ✓
Installing modules ✗
> @parcel/[email protected] install /private/var/folders/lq/bjw58qh536q2wt24cfcqfy_80000gn/T/atom-git-package-clone-20251026-91174-htttm1.auuxq/node_modules/@parcel/watcher
> node-gyp-build

CC(target) Release/obj.target/nothing/../../node-addon-api/nothing.o
LIBTOOL-STATIC Release/nothing.a
CXX(target) Release/obj.target/watcher/src/binding.o
CXX(target) Release/obj.target/watcher/src/Watcher.o
CXX(target) Release/obj.target/watcher/src/Backend.o
CXX(target) Release/obj.target/watcher/src/DirTree.o
CXX(target) Release/obj.target/watcher/src/watchman/BSER.o
CXX(target) Release/obj.target/watcher/src/watchman/WatchmanBackend.o
CXX(target) Release/obj.target/watcher/src/shared/BruteForceBackend.o
CXX(target) Release/obj.target/watcher/src/unix/fts.o
CXX(target) Release/obj.target/watcher/src/macos/FSEventsBackend.o
SOLINK_MODULE(target) Release/watcher.node

[email protected] install /private/var/folders/lq/bjw58qh536q2wt24cfcqfy_80000gn/T/atom-git-package-clone-20251026-91174-htttm1.auuxq/node_modules/msgpackr-extract
node-gyp-build-optional-packages

[email protected] install /private/var/folders/lq/bjw58qh536q2wt24cfcqfy_80000gn/T/atom-git-package-clone-20251026-91174-htttm1.auuxq/node_modules/lmdb-store
node-gyp-build

CXX(target) Release/obj.target/lmdb/src/node-lmdb.o

npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.
npm WARN deprecated @babel/[email protected]: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.
npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
npm WARN deprecated [email protected]: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility
npm WARN deprecated [email protected]: request has been deprecated, see request/request#3142
npm WARN deprecated [email protected]: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: this library is no longer supported
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated [email protected]: Use your platform's native DOMException instead
npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see request/request#3142
npm WARN deprecated [email protected]: Use your platform's native performance.now() and performance.timeOrigin.
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: archive library: Release/nothing.a the table of contents is empty (no object file members in the library define global symbols)
In file included from ../src/node-lmdb.cpp:1:
In file included from ../src/node-lmdb.h:30:
/Users/andrew/.pulsar/.node-gyp/Library/Caches/node-gyp/30.0.9/include/node/node.h:27:2: error: "It looks like you are building this native module without using the right config.gypi. This normally means that you need to update electron-rebuild (>=3.2.8) or node-gyp (>=9.0.0) if you're building modules directly."
27 | #error "It looks like you are building this native module without using the right config.gypi. This normally means that you need to update electron-rebuild (>=3.2.8) or node-gyp (>=9.0.0) if you're building modules directly."
| ^
1 error generated.
make: *** [Release/obj.target/lmdb/src/node-lmdb.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess. (/Applications/Pulsar.app/Contents/Resources/app/ppm/node_modules/node-gyp/lib/build.js:216:23)
gyp ERR! System Darwin 23.6.0
gyp ERR! command "/Applications/Pulsar.app/Contents/Resources/app/ppm/bin/node" "/Applications/Pulsar.app/Contents/Resources/app/ppm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /private/var/folders/lq/bjw58qh536q2wt24cfcqfy_80000gn/T/atom-git-package-clone-20251026-91174-htttm1.auuxq/node_modules/lmdb-store
gyp ERR! node -v v20.11.1
gyp ERR! node-gyp -v v10.2.0
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @msgpackr-extract/[email protected] (node_modules/msgpackr-extract/node_modules/@msgpackr-extract/msgpackr-extract-linux-arm):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @msgpackr-extract/[email protected]: wanted {"os":"linux","arch":"arm"} (current: {"os":"darwin","arch":"arm64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @msgpackr-extract/[email protected] (node_modules/msgpackr-extract/node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @msgpackr-extract/[email protected]: wanted {"os":"darwin","arch":"x64"} (current: {"os":"darwin","arch":"arm64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @msgpackr-extract/[email protected] (node_modules/msgpackr-extract/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @msgpackr-extract/[email protected]: wanted {"os":"linux","arch":"x64"} (current: {"os":"darwin","arch":"arm64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @msgpackr-extract/[email protected] (node_modules/msgpackr-extract/node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @msgpackr-extract/[email protected]: wanted {"os":"linux","arch":"arm64"} (current: {"os":"darwin","arch":"arm64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @msgpackr-extract/[email protected] (node_modules/msgpackr-extract/node_modules/@msgpackr-extract/msgpackr-extract-win32-x64):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @msgpackr-extract/[email protected]: wanted {"os":"win32","arch":"x64"} (current: {"os":"darwin","arch":"arm64"})
npm WARN [email protected] requires a peer of eslint-plugin-react-hooks@^4 || ^3 || ^2.3.0 || ^1.7.0 but none is installed. You must install peer dependencies yourself.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-gyp-build
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/andrew/.pulsar/.apm/_logs/2025-11-26T23_19_51_267Z-debug.log

The difference between installing from the package repo and installing from GitHub is presumably that, in the latter case, we check the repo out locally and run npm install, meaning devDependencies are installed as well. (That said, it would be nice if we could avoid that! npm probably does it because it assumes it has to run the build script to produce the same effects that installing from NPM would have… but we likely don't need to, since the code payloads of packages come straight from the repo.)

Specifically, the issue is in trying to build lmdb-store, which is a dependency of @parcel/watcher, which itself is a dependency of parcel. parcel is the bundling tool used by linter-ui-default.

(It's true that, when I run ppm-next install steelbrain/linter-ui-default, I don't get this exact error… but instead I get a different error later in the process related to npm not being found. This is because this package’s prepare task is npm run get.linter-types && npm run build, and there's no npm on my path by default because I use asdf to manage Node versions. As an aside: we should probably fix this by adding the directory of our own copy of npm to the PATH when we run stuff.)

So the questions are:

  1. Why doesn’t lmdb-store compile/rebuild successfully on Node 20.11.1?
  2. Why does it rebuild successfully on Node 16.0.0 (which is what PulsarNext’s version of ppm was using)?
  3. Can we update node-gyp (as the error message implies) in order to resolve this issue?
  4. Separately from that, can we make it so that ppm skips trying to install devDependencies when installing straight from a GitHub repo?

@savetheclocktower
Copy link
Contributor Author

Also: since there's no compelling reason why a user would need to install linter-ui-default straight from GitHub, I don't think this is a blocker for landing this PR.

We do recommend that people install linter from source via ppm install steelbrain/linter, but I just tested that and it works fine.

@savetheclocktower
Copy link
Contributor Author

I noted above how I wished ppm install foo/bar would install just the dependencies, not the devDependencies.

Upon research, that seems pretty easy to add to ppm, so I'll put that on my to-do list. But there's a way to do it explicitly:

ppm install --production steelbrain/linter-ui-default

That worked just fine when I tried it, even when ppm install steelbrain/linter-ui-default failed.

So if users actually do run into an issue like this in practice (not being able to install a package because something in devDependencies fails to build) we've got a workaround for them.

@DeeDeeG
Copy link
Member

DeeDeeG commented Nov 27, 2025

@DeeDeeG it was a quick fix — had which in devDependencies instead of dependencies. Feel free to try again if you like!

Thank you! And I have followed up on Discord.

As for these: any error logs you can get me would be quite useful.

Followed up on Discord.

I noted above how I wished ppm install foo/bar would install just the dependencies, not the devDependencies.

(That said, it would be nice if we could avoid that! npm probably does it because it assumes it has to run the build script to produce the same effects that installing from NPM would have… but we likely don't need to, since the code payloads of packages come straight from the repo.)

With regard to this PR, this becomes a bit of a tangent about ppm, so IMO it's not really a blocker for this PR itself, but...

Yeah, agreed, prepublishOnly sort of scripts shouldn't really have a separate role to play for a Pulsar package, beyond the usual prepare or postinstall scripts, given we have no separate "pre-prepared tarball registry" (npm package registry) for Pulsar packages in and of themselves. So, the special handling of git cloned packages only adds complexity and strange new requirements/edge cases to handle, it seems. Would probably be good to just install production deps and run only the equivalent lifecycle scripts that would have run for a package from the npm registry.

@DeeDeeG
Copy link
Member

DeeDeeG commented Dec 1, 2025

As discussed on Discord: I'm pushing with updated attribution (commit author metadata) on the 1st two commits . . . and separating the deletion of the deprecated app.allowRendererProcessReuse = false option on the main process into its own commit, as discussed in a comment thread above (since the option has been removed and doesn't do anything anymore in Electron 14+, but wanted in its own commit to make it harder to miss in case shuffling around different branches, etc...)

Original commits pre-force-push are available in a separate branch here: pr-167-old (tip of branch is at a910d34).

@DeeDeeG DeeDeeG force-pushed the pristine-pulsar-next branch from a910d34 to 964de3a Compare December 1, 2025 01:45
Copy link
Member

@DeeDeeG DeeDeeG left a comment

Choose a reason for hiding this comment

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

I personally believe this is ready for mainline Pulsar, broader promotion in Rolling, and so on.

I'm mainly leaning on practical hands-on testing to say that. Would be great to get it into more users' hands for further testing, and for troubleshooting any additional issues found.

(Big milestone, I've been wanting to be dispassionate about giving a fair review, but yeah, it's kind of a big deal being on so much newer Electron if all goes well. 🤞 )

@savetheclocktower
Copy link
Contributor Author

Great! I'll land this tomorrow and get a blog post ready just so users of rolling releases know what to expect. Thanks!

@lilole
Copy link

lilole commented Dec 1, 2025

You guys are doing great work. Many cheers.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants