WebCord Versions Save

A Discord and SpaceBar :electron:-based client implemented without Discord API.

v4.4.3

7 months ago

Note This is a hotfix patch for WebCord v4.4.2, with only a few changes and fixes for bugs I found after I've published WebCord v4.4.2. See v4.4.2 release logs for more details about the recent changes.

๐Ÿ—บ๏ธ Localization changes (#468)

  • Update ๐Ÿ‡ท๐Ÿ‡บ Russian localization files by @thejenja.
  • Update ๐Ÿ‡ช๐Ÿ‡ธ Spanish localization files by @gallegonovato.
  • Update ๐Ÿ‡ฆ๐Ÿ‡ช Arabic localization files by @Ali-x98.
  • Initial translation to ๐Ÿ‡ณ๐Ÿ‡ฑ Dutch by @Jasper1467.

๐Ÿงน Maintenance changes

  • Multiple fixes to WinStateKeeper logic, so it now logs values that are stored in-memory and uses them when modifying the object.
  • Revert module resolution mechanism back to CommonJS-only (from Node16), dropping entirely support for EcmaScript Modules in code (:electron: Electron's partial implementation of ESM module resolution and loading is way more incomplete than I originally thought). This resolves #473.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.4.2...v4.4.3

v4.4.2

7 months ago

Important This release was also forced by Electron/Chromium vulnerability, as in case of v4.4.1. There's still no fix (or viable workaround) for regression since v4.4.0. Given v4.4.1 has implemented the safe mode that should help with renderer crashes caused by issues specific to given GPU, I assume it's not a problem due to GPU. The newly announced refresh loop is not a bug and should not be reported as such, the app is actually expected to refresh the page after the renderer crash as a way to recover from it (which is useful when renderer doesn't crash constantly or at least much better that letting WebCord to display grey window instead).

Note Electron Forge going crazy once CI were publishing v4.4.2 distributables. Given there was large refactor of Forge configuration, especially with Squirrel makers and I've also updated Forge toolkit to the latest version, there's a chance I've been encountering some bug with it that didn't happen with the old design. Weirdly enough, WebCord did eventually build and published itself successfully, so the bug might not always happen and future releases may succeed after a few (more) CI retries. There's also a chance some distributables weren't made correctly, but that could also be a bug with Forge's implementation that makes use of the new config syntax.

๐Ÿงน๏ธ Bug fixes / Improvements

  • Fix / improve displaying long url in OS/native cross-origin dialog window โ€“ WebCord now adds newlines to it when link segments are too long and calculates the maximum lines / characters per line, based on primary screen dimensions.
  • Fix Squirrel installers launching WebCord for no reason, confusing a lot of users โ€“ on Windows, --squirrel-* flags are now illegal and will cause the application to close (to handle so called Squirrel hooks).
  • Update implementation of --add-css-theme, to make it display an OS/native file chooser dialog instead of reading the predefined path in cmdline, possibly making it to work better with sandboxing (Flatpaks, Snaps etc.)
  • Improve how safe mode is launched, removing redundant process.argv[0] from arguments.
  • Switch to Node16 module code, which makes WebCord to use an actual import() calls instead of wrapped require() into promises, allowing for partial ESM implementation.
    • I've also ported socket.ts to ESM to both showcase it works and actually make a use of ESM / async design.
  • Try to fix an ad-hoc signature for macOS with fuses, possibly making it able to run arm64 (Apple M1/M2) builds without any command-line tricks.

๐Ÿงฑ๏ธ Build / CI changes

  • Disable universal builds for macOS, they were failing in CI, most likely due to resetAdHocDarwinSignature: true in Electron Forge that were supposed to fix ARM64 builds.
    • Please choose now either ARM64 or X64 builds, based on whenever your CPU vendor is Apple (i.e. M1/M2 SoCs) or Intel/AMD.
  • Greatly modernize Electron Forge, by using the new fuses plugin and class-based syntax for makers/publishers/plugins, removing some hooks and type logic from code that is no longer necessary.
    • This could be the one of the reasons of causing some troubles with Squirrel makers, since Squirrel now emits both MSI and EXE binaries under different name. There's also no arch-specific RELEASES file nor nupkg files, I'll take a look if I'll be able to somehow improve how these files are emitted without the need for searching for specific distributable and patching its name.
  • Overall improve Squirrel configuration, to set icon for installer and emit MSI variant.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.4.1...v4.4.2

v4.4.1

7 months ago

Important This release was mostly forced by security vulnerability in Electron. It still doesn't resolve #452, although it seems Electron devs are somewhat aware of it. Some people also suggest that it is reproducible in Electron 27 as well. Officially, I haven't been able to reproduce this on my desktop running X11 with AMD CPU (with amd-ucode.img loaded with initrd=) and NVIDIA GPU (both Nouveau and NVIDIA drivers). Electron devs also seemed to be unable to reproduce this in clean VM enviroment.

๐Ÿ—บ๏ธ Localization updates (#454)

  • Update ๐Ÿ‡ช๐Ÿ‡ธ๏ธ Spanish localization files by @gallegonovato.
  • Update ๐Ÿ‡ฆ๐Ÿ‡ช๏ธ Arabic localization files by @Ali-x98.

๐Ÿ› ๏ธ New features

  • Implement safe mode in WebCord, as an approach to workaround the renderer crashes (including #452).
    • In safe mode, WebCord tries to run itself fully in software mode, to eliminate that GPU or driver could cause renderer crashes.
    • WebCord enters safe mode automatically after it detects that renderer is constantly crashing.
    • Before entering safe mode, WebCord will try to refresh the page a few times (I believe official Discord client is doing that when handling renderer crashes).
    • Safe mode also disables a few configuration options, such as GPU optimizations and features that are messing with Chromium command-line. However, you're still able to append switches to Chromium command-line by adding them as arguments to WebCord.
  • Implement a way in locale files to add title= element for labels, as a way for additional description when labels are not enough.
    • This was added for CSP: Thirdparty โ†’ Google Storage API, as a few people didn't understand the consequences of disabling it and reported quite a lot of issues for it.
    • I've also added a non-translatable description for GIF provides, listing the service providers this option currently includes.

๐Ÿงน๏ธ Maintenance updates

  • Refactor WebSocket server to launch it in separate process, using UtilityProcess API.
  • Update stylesheets for built-in pages, so <kbd> element (e.g. ALT) is animated when pressed (with mouse click) and scrollbar is larger by 1px.
  • Update client optimizations logic for new Chromium engine versions and that unix-specific optimization won't be used on other platforms. This could potentially cause issues with Electron on Windows and macOS in the past.
  • Update Electron to 26.2.1.
  • Bump marked to 9.0.0.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.4.0...v4.4.1

v4.4.0

9 months ago

๐Ÿ—บ๏ธ Localization updates

  • Synchronize localization files with Weblate (#362).
    • Update ๐Ÿ‡ต๐Ÿ‡น๏ธ Portuguese translation by @SantosSi.
    • Add ๐Ÿ‡ฎ๐Ÿ‡น๏ธ Italian translation by Marco.
    • Add ๐Ÿ‡ฏ๐Ÿ‡ต๏ธ Japanese translation by Shogo Takata.
  • Add ๐Ÿ‡น๐Ÿ‡ท๏ธ Turkish translation by @demirdegerli (#413).

๐Ÿงน Maintenance changes

  • Remove (previously left) unnecessary dependencies.
  • Update to :electron: Electron v26.0.0.
    • This resolves a lot of regressions announced by Electron v25: #432 #437 #436 #442
    • New (not yet officially reproducible) regressions: #452
  • Resolve linter errors/warnings around types.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.3.0...v4.4.0

v4.3.0

10 months ago

โœจ๏ธ New Features

Note Most of these are effect of my recent work on my own AppImage maker, @reforged/maker-appimage. This means these changes are not limited to WebCord but any other Electron app using my maker can opt-in for these as well via Forge configuration.

  • AppImages now use type2-runtime that while being experimental, doesn't require installing fuse2 package installed on modern distros/DEs (as most of them use fuse3 now) and since we use fuse2 builds, we still don't deprecate users with older software installed.
    • AppImages bundled by my maker aren't fully static yet and most likely can't be used by users with non-glibc installed, as only few libraries being part of Electron binaries are bundled inside. I might try to improve my maker if there will be huge interest for these users to use my AppImage โ€“ but this might require the custom AppRun to invoke the interpreter bundled in the AppImage. Bundling the whole libraries will most likely also drastically affect the resulting size of the AppImages.
  • AppImages now support parsing Arch Linux styled {{ name }}-flags.conf files (#382).
    • Important: Althrough this feature is now distro-independent, I consider limiting this feature to Arch-based distros only, as these .conf files are quite specific thing to Arch and are quite non-standard on other distros.
  • (Finally) add select all item/keybind to menu bar for all platforms (#319)

๐Ÿงน๏ธ Maintenance updates

  • Bump Electron to v25.
  • Remove polyfills from WebCord. This comes with removal of packages such as electron-fetch and @pkgjs/parseargs with their imports and use in code and simplifies code a bit, at cost of support for older Electron releases.
  • Update code for breaking changes in some WebCord dependencies. This comes with the support for the new (modular?) marked release and a bit simplifies the code around Markdown highlighting.
  • Update overall dependencies to their latest versions.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.2.0...v4.3.0

v4.2.0

1 year ago
  • Update dependencies.
  • Rebuild under newer version of @reforged/maker-appimage (fix #369).
  • Make Config writting synchronous again (fix #360).

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.1.1...v4.2.0

v4.1.1

1 year ago
  • Sync localization files with Weblate (#342).
    • Update ๐Ÿ‡ซ๐Ÿ‡ท French localization files by Niniko.
    • Update ๐Ÿ‡ช๐Ÿ‡ธ Spanish localization files by @gallegonovato.
    • Update ๐Ÿ‡ฆ๐Ÿ‡ช Arabic localization files by @Ali-x98.
    • Update ๐Ÿ‡ท๐Ÿ‡บ Russian localization files by @thejenja.
  • Repackage app under newer @reforged/maker-appimage version to fix .desktop / shell script syntax errors (#357).
  • Cache favicon hashes to conserve CPU usage.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.1.0...v4.1.1

v4.1.0

1 year ago
  • Workaround a bug with desktopCapturer that caused crashes/SIGSEV on Wayland when trying to screen share (#328).
    • The workaround uses hard-coded source with most properties being empty and id set to screen:1:0.
    • It is very experimental, as it wasn't really tested with a lot of workflows/environments. It doesn't affect X11 users at all and is only applied when app is bundled with Electron 22+, so it shouldn't bring more troubles while giving a chance Wayland users will be able to screen share normally again.
    • Thank you, @JustPlainGarak and @mgonzalezg9, for giving me an idea to check for desktopCapturer.getSources(), without that issue ticket #328 could be left opened for a bit longer.
  • Refactor right-click context menu.
    • Hide copy / cut / paste entries if they're all greyed-out (#235).
    • Implement menu items for copying images / image links (#41).
  • Implement a button to copy a link from origin dialog popups (#140).
  • Implement new way of merging: typeMerge.
    • The goal of this merge strategy is to keep the type of the original object while deep merging contents. This should be more effective than deep merging first (and probably looping through object at least once) and comparing values later (another loop).
  • Try to optimize app with Chromium profiler (Node / main process only).

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v4.0.0...v4.1.0

v4.0.0

1 year ago

Breaking changes

These were also announced in v3.10.1, but reverted in v3.10.2.

  • Bump latest supported Electron to 20.x.y.
    • This is believed to break screen sharing on Wayland (#328), please downgrade to 3.10.2 for now if you need screen sharing and use Wayland.
    • This is confirmed to make tray invisible in some scenarios and some distributions (#330), either try to restart app (kill it with Task manager) when it happens or downgrade to 3.10.2.
  • Deprecate Electron 13.x.y, 14.x.y, 15.x.y and 16.x.y.
    • This also removes a lot of workarounds to make these versions functional with WebCord without any need to dealing with the types and experiencing some bugs fixed in newer Electron versions.
    • I might also slowly adapt the code for the newer DOM feature set, as e.g. Electron 13 seemed to support less CSS selectors. It probably won't change anything that much through other than breaking WebCord with those older Electron versions.

Other changes

  • Sync locales from Weblate project.
    • Update ๐Ÿ‡ฉ๐Ÿ‡ช๏ธ German localization files by @Sir-Photch (#331).
    • Update ๐Ÿ‡ช๐Ÿ‡ธ๏ธ Spanish localization files by @gallegonovato (#331,#336).
    • Update ๐Ÿ‡ฆ๐Ÿ‡ช๏ธ Arabic localization files by @Ali-x98 (#331).

Full changelog:

v3.10.2

1 year ago

Note | This release was mostly introduced as a reply to recent breakages introduced by Electron. I plan to release WebCord v4.0.0 with Electron bump to 22.x.y as a breaking change to people's workflows. It is very likely it will deprecate v3 releases.

  • Revert Electron bump and older versions deprecation.
  • Improve --verbose flag implementation to also make Chromium engine log at verbose as maximum LOG() and VLOG() level and actually enable logs.
  • Multiple bug fixes with WinStateKeeper logic about detecting if window is still maximized or not.

Full Changelog: https://github.com/SpacingBat3/WebCord/compare/v3.10.1...v3.10.2