Skip to content

Conversation

@plebe1us
Copy link
Member

@plebe1us plebe1us commented Jan 29, 2026

Note

Medium Risk
Moderate risk because it changes desktop build/packaging (switching to Electron Forge) and IPFS binary resolution logic, which can break release artifacts or runtime startup across platforms; remaining changes are mostly CI/docs/typing and low impact.

Overview
This PR migrates desktop packaging from electron-builder to Electron Forge by adding forge.config.js, new electron:package/electron:build scripts, and CI updates to package with electron-forge package and validate outputs (including a new scripts/find-forge-executable.js).

It also reworks IPFS/Kubo runtime and build integration: adds kubo as a dependency, updates electron/start-ipfs.js to resolve the correct binary path in dev vs packaged apps (and across OS/platform dirs), and updates build ignores/.gitignore for Forge/AppImage artifacts.

Additionally, it cleans up repo/branding and minor app behavior: removes the Telegram notification workflow, updates README messaging/links to Bitsocial, adds Vercel analytics only on seedit.app, switches share links to https://seedit.app, prevents navigating to the currently viewed community (new already_in_community i18n key), and tightens a few TS typings/timeout cleanups in UI components.

Written by Cursor Bugbot for commit e509d86. This will update automatically on new commits. Configure here.

Merge pull request #794 from bitsocialhq/development
not needed, using AGENTS.md instead
Updated @types/react and @types/react-dom from 18.x to ^19.1.2 to match React 19. Upgraded react-markdown from 8.0.6 to ^10.1.0 for React 19 compatibility. Fixed TypeScript errors across components including useRef initial values, ref type mismatches, JSX namespace issues, and react-markdown component prop types.
Refactored timeout and interval management across components to use refs for proper cleanup. Fixed memory leak in use-time-filter hook by tracking interval lifecycle. Improved error handling type safety in error-display component.
…o npm package

Migrated build system from electron-builder to Electron Forge with new configuration in forge.config.js. Replaced manual IPFS binary downloads with kubo npm package, updating start-ipfs.js to resolve binaries from node_modules. Simplified CI workflows to use new build scripts and verification helpers. Added scripts to find and verify executables in Forge output directory.
- Disabled asar packaging due to silent failure in electron-packager
- Added generateAssets hook to download IPFS/Kubo binaries before packaging
- Added ignore patterns for kubo symlinks and .bin directories that cause build failures
- Simplified CI workflow with proper pipefail handling
- Removed legacy electron-builder config from package.json
- Added glob and progress dependencies needed for hooks

The asar creation was silently failing due to issues with symlinks in node_modules.
With asar disabled, the app bundle is larger but packaging completes successfully.
@vercel
Copy link

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
seedit Building Building Preview, Comment Jan 29, 2026 11:19am

Request Review

@plebe1us plebe1us merged commit d25ea6a into master Jan 29, 2026
9 of 10 checks passed
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

"analyze-bundle": "cross-env NODE_ENV=production PUBLIC_URL=./ GENERATE_SOURCEMAP=true vite build && npx source-map-explorer 'build/assets/*.js'",
"electron": "yarn build:preload && cross-env ELECTRON_IS_DEV=1 yarn electron:before && cross-env ELECTRON_IS_DEV=1 electron .",
"electron:no-delete-data": "yarn electron:before:download-ipfs && electron .",
"electron:no-delete-data": "yarn electron:before:delete-data && electron .",
Copy link

Choose a reason for hiding this comment

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

Script deletes data despite name promising preservation

High Severity

The electron:no-delete-data script is supposed to start Electron without deleting user data (as its name clearly indicates), but it now calls electron:before:delete-data which runs rimraf .plebbit, thereby deleting all user data. The old script called electron:before:download-ipfs which only downloaded IPFS binaries without touching user data. Users running yarn electron:no-delete-data or yarn electron:start:no-delete-data will unexpectedly lose their .plebbit data directory.

Fix in Cursor Fix in Web

process.on('SIGTERM', cleanup);

// Start polling
pollPort();
Copy link

Choose a reason for hiding this comment

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

Unused script file added to repository

Low Severity

The file scripts/verify-executable.js is added but never used anywhere in the codebase. It's not referenced in any workflow file, package.json script, or other configuration. While scripts/find-forge-executable.js is used in the test workflows, this verification script appears to be dead code that was committed but never integrated.

Fix in Cursor Fix in Web

return () => {
clearFeedbackTimeout();
};
}, []);
Copy link

Choose a reason for hiding this comment

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

Duplicated timeout reset pattern across components

Low Severity

The timeout management pattern is duplicated between error-display.tsx (clearFeedbackTimeout/scheduleFeedbackReset) and comment-tools.tsx (clearResetTimeout/scheduleReset). Both components implement identical logic: a ref to hold the timeout ID, a clear function, a schedule function that clears first then sets a new timeout, and cleanup on unmount. This could be extracted into a reusable custom hook.

Additional Locations (1)

Fix in Cursor Fix in Web

plebe1us added a commit that referenced this pull request Jan 30, 2026
Merge pull request #803 from bitsocialhq/development
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.

2 participants