Skip to content

Upgrade Electron and remove unused desktop dependencies - #157

Merged
RobRoyce merged 2 commits into
mainfrom
feature/electron-modernization
Oct 8, 2026
Merged

RobRoyce merged 2 commits into
mainfrom
feature/electron-modernization

Conversation

@RobRoyce

@RobRoyce RobRoyce commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Upgrade Electron from 26 to 44.6.0. Replace deprecated embedded-browser and file-path APIs, update PDF handling, remove unused dependencies, and disable unnecessary native module rebuilds. Keep the standalone storage runtime in the package.

Depends on #156. Merge the stack in order with merge commits, retargeting each next PR to main after its predecessor lands. Do not squash or delete intermediate branches during integration.

Validation on the combined stack at 6ee979b2615db242ca6525bb7d0ccc36d563479f, using Node.js 24.21.0 in an isolated checkout:

  • Clean immutable dependency install: passed.
  • Development build and storage type check: passed.
  • Unit tests: 8 passed.
  • Storage tests: 35 passed.
  • Hidden-window desktop tests: 4 passed.
  • Headless Chrome tests: 6 passed.
  • Unsigned production package and packaged workflow: passed (1 test).

Each historical intermediate branch was not rebuilt independently. Signing, live AI credentials, other operating systems, and broad dependency security auditing are outside this review.

Focused review found no confirmed blocker in the combined stack. The review covers basic workflows, data preservation, authentication, and the dependency changes. Broader modernization remains separate work.

RobRoyce and others added 2 commits October 6, 2026 22:35
…ndencies

Electron 44 is the newest stable major and has the longest support
window (until 2027-03-02). See docs/electron-upgrade.md.

- File.path (removed in 32): the preload exposes api.pathForFile with
  webUtils.getPathForFile. NativeFiles uses it.
- BrowserView (deprecated in 30): the embedded browser uses
  WebContentsView, contentView.addChildView, and webContents.close(). A
  resize listener replaces setAutoResize. One view at a time; navigation
  listeners are always removed with the view.
- Navigation uses webContents.navigationHistory.
- printToPDF: removed the old marginType option.
- Electron 42+ downloads its binary on first use; e2e helpers resolve it
  with require("electron").
- PDF text extraction copied the pooled Buffer.buffer; it now copies the
  file bytes (visible on Node.js 24).
- electron-builder: npmRebuild false (no runtime native module needs it).
  Removed the root postinstall key that never ran.
- Removed unused dependencies: @adobe/css-tools, ejs, follow-redirects,
  got, minimist, multer, node-fetch, node-forge, plist, postcss, terser,
  url, their unused @types packages, @types/eslint, @types/prettier,
  loader-utils, worker-loader, node-loader and its webpack rule.
- The bundled Node.js runtime for the storage service stays.

Tests: new e2e/embedded-browser.e2e.mjs. All service, unit, desktop,
browser, packaged, and clean-install checks pass.

Docs: Electron upgrade record, setup note on the binary download, and
follow-up recommendations (Angular, dependencies, chat and extraction,
renderer data, local versus hosted deployment).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@RobRoyce RobRoyce left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Focused integration review of PR #157 at 83db5447aa5b81183d89642b3476e6a7c7d0d179.

No confirmed blocking finding in the combined revival stack. The independent code review checked storage writes, schema migration, managed files, backup/restore, local authentication, session recovery, Electron startup, and dependency removal. Main's conflicts were resolved without downgrading the stack's dependencies. All original commits are preserved.

Validation on the combined stack at 6ee979b2615db242ca6525bb7d0ccc36d563479f, using Node.js 24.21.0 in an isolated checkout:

  • Clean immutable dependency install: passed.
  • Development build and storage type check: passed.
  • Unit tests: 8 passed.
  • Storage tests: 35 passed.
  • Hidden-window desktop tests: 4 passed.
  • Headless Chrome tests: 6 passed.
  • Unsigned production package and packaged workflow: passed (1 test).

Each historical intermediate branch was not rebuilt independently. Signing, live AI credentials, other operating systems, and broad dependency security auditing are outside this review.

This is a review record submitted through the PR author's account, not the independent approving review required by main's branch protection. CodeQL status is reported separately by GitHub.

@RobRoyce
RobRoyce marked this pull request as ready for review October 8, 2026 17:41
@RobRoyce
RobRoyce changed the base branch from feature/browser-library to main October 8, 2026 18:15
@RobRoyce
RobRoyce merged commit cdfec0c into main Oct 8, 2026
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.

1 participant