Skip to content

Releases: SpacingBat3/WebCord

v3.7.0

07 Aug 18:01
845ffca
Compare
Choose a tag to compare
  • Fix icon rendering on Windows and macOS
    • On macOS, tray icons are now rendered based on DPI:
      • 22px for 100%,
      • 33px for 150%,
      • 44px for 200%.
    • On Windows, tray icons are now rendered based on DPI:
      • 16px for 100%,
      • 24px for 150%,
      • 32px for 200%.
    • On both Windows and macOS, icon field in BrowserWindow class instances is left unset (it then uses icon from the executable).
    • Additionally, re-generated app.ico to include more sizes and updated Forge configuration to replace app.png with app.ico on Windows.
  • More accurate permissions handling representation.
    • WebCord will now use system-provided data to know whenever permission to specific media device is granted or revoked (Windows,macOS).
    • WebCord will now ask user on newer macOS devices to grant permissions to specific media element when Discord ask for it (#176).
  • Encrypt configuration files using safeStorage API.
    • On Windows and Linux, it may just only encrypt windowState.json and leave config.json unencrypted due to API limitations.
    • Additionally on Linux, encryption may not be available if secret key is not available (so you probably need any secret service provider installed in order for encryption to work).
    • On macOS, according to docs, there's no limitation that requires Electron to wait for Chromium to initialize in order to encrypt data, so full encryption (config.json+windowState.json) might be possible to achieve (currently that's untested).
  • Harden webPreferences policies for main window's child windows.
  • Bump Electron major version (it is now on 20.x.y).
  • Add 🇫🇷️ French localization files made by @HeavnWolf (#210).

Full Changelog: v3.6.0...v3.7.0

v3.6.0

01 Aug 10:25
Compare
Choose a tag to compare
  • Implement autoscrolling for *nix (Issue: #84, Discussion: #199).
    • This adds an experimental configuration option for MiddleClickAutoscroll Blink feature. It's experimental, as a few bugs are known. This feature affects all platforms different than Windows (codenamed unix), so e.g. macOS users can also benefit from that.
  • Add an option to toogle taskbar flashing (Issue: #189, Discussion: #172).
  • Add an option to spoof current platform via user agent command-line flags. (resolves #170).
    • Note: Flags are not docummented yet, but they appear in --help.
  • Validate IPC communication, as advised in Electron documentation.
    • For local pages, it either uses protocol or full URL to validate if incoming IPC packet comes from the right process.
    • For remote content, except of comparing only webContents or full URLs, it also uses the negotiated API key used in contextBridge and that is being randomly generated on each session (it is not kept outside of application buffer memory).
  • Improve generating a --help message and parsing command-line flags.
  • ESLint hardenings (01e4a74, 31f1c54).
    • Stricter rule set for TypeScript.
    • Add JSON Schemas and lint them with ESLint.
    • Switch to TypeScript cosmetic rules from built-in ones.
    • Automatic fixes, manual bug fixes found on ESLint scanning.
  • Documentation improvements (#194).
  • Translations updates.
    • Update Polish and English localization files.
    • Update German and Catalan localization files (#195).
  • Improve buildInfo generation:
    • Add defaultBuildInfo object with the default build configuration.
    • Make some properties in buildInfo required.
    • Assume buildInfo.json contains a Partial type of buildInfo.
    • (Probably) fix issues with AppUserModelID generation (as reported in #203).

Full Changelog: v3.5.2...v3.6.0

v3.5.2

24 Jul 23:21
Compare
Choose a tag to compare
  • Add Google Storage API CSP (resolves #182).
  • Spoof Errors in modified Web API elements.
    • Use DOMException with similar message like on Chromium for errors in getDisplayMedia and getUserMedia.
  • Sync localization files with Weblate.
    • Add Catalan localization files.
    • Update German localization.
  • Trigger page reload on CSP change.
  • Update documentation files.

Full Changelog: v3.5.1...v3.5.2

v3.5.1

18 Jul 09:35
Compare
Choose a tag to compare
  • Improve app privacy / security:
    • Mitigate/fix the Electron's getUserMedia so using hard-coded constrains on non-Wayland platforms (Linux/Windows/macOS) won't bypass the picker and record the entire screen. It will fail from now with Error: Permission denied. I may try to look how stock Chromium behaves through and reproduce this.
    • Better native function spoofing, now replacing the function name in order to make it undistinguishable from the original ones.
    • Deny permissions Discord does not ask for at all.
    • Deny requests to media with no audio/video mediaType(s).
    • Fix URL checking logic in permissionHandler.
  • Fix macOS bugs.
    • Fix improper tray icon size (#153).
    • Fix an bug with parent windows not having native title bar where they should (#175).
  • Use OS-specific flag structure (/ on Windows, -/-- on *nix).
  • Sort third-party checklist by identifier in Content Security Policy configuration section.

Full Changelog: v3.5.0...v3.5.1

v3.5.0

12 Jul 12:39
Compare
Choose a tag to compare
  • Refactor WebCord's configuration structure.
    • Dynamically generate settings window content based on current user configuration and localization files.
    • Add configuration option to disable WebGL (e.g. if you don't want to use activities).
  • Update Discord instances.
    • Disable Fosscord demo instance (it does not work).
    • Add official canary instance and Freecord instance.
    • Add styling for disabled input / labels.
  • Bug fixes:
    • Fix tray icon scaling on macOS (#153).
    • Make non-frameless windows non-modal (might fix #175).
    • Prevent "paste" event loops (#169).

Full Changelog: v3.4.0...v3.5.0

v3.4.0

05 Jul 23:25
Compare
Choose a tag to compare
  • Add German localization files (#149).
  • WebSocket Server: Handle DEEP_LINK and GUILD_TEMPLATE_BROWSER requests.
    • This provides a functionality for creating a guild from template and redirecting to site based on the requests made by the browser.
  • Fix window close / app quit with tray.
    • WebCord now properly knows whenever window wants to be closed or app wants to quit (i.e. close all windows).
    • This fixes shutdown on macOS (#151).
    • This fixes app to close itself on SIGINT signal on Linux (CTRL+C).
  • Re-enable autoplay to fix issues on all platforms that could be caused by it disabled.
    • Fixes #161. As a side note, it probably could be also reproduced on Linux and macOS.
  • Re-enable WebGL to fix issue with activities (#157).
  • Remove activate event on the macOS.
    • WebCord is not ready yet to work in the background without any windows open. So it should be either killed or let the main window to run in the background.
    • If I would either want to fix it, I still need a more knowledge how macOS expects the software to behave in case of the servers and services running as a child processes (in case of WebCord, these are update notifier and WSS server).
  • Code refactors, improvements.
    • Avoid using for loops in some places by replacing them with .map and .filter methods of Array variables.
    • Avoid using unguarded for-in loops that could also iterate over the prototype methods/parameters.
    • Improve title attribute generation of h3 elements at Licenses section in about window.
  • Windows only: define AppUserModelID for WebCord.
    • This seems to fix #164.
  • More restrictive ESLint configuration.
  • Bump Electron version.

Full Changelog: v3.3.0...v3.4.0

v3.3.0

20 Jun 10:36
Compare
Choose a tag to compare
  • Block canvas fingerprinting script (api.js) by default.
  • webPreferences hardening.
    • Disable WebGL and WebSQL to harden the application security.
    • Disable autoplay.
    • Enable "safe dialogs" to protect users from dialog spam done by potentially malicious remote scripts.
  • Update localization files.
  • Windows only: enable audio in screen capture.
    • 🚫️ Blocking on Linux: audio in screen capture uses default device (which is likely to be a microphone, not audio output monitor). If I'll find a way to capture a specific audio device and to get the monitor of default output device, I will reconsider implementing audio capture on Linux as well.
  • Improve workaround for Discord/Chromium bug preventing to paste images directly from (another) browser / browser engine.
    • Keybind CTRL+V is now working as it is intended (resolves #148).
    • Clipboard will now preserve its original properties.
    • There might be a bigger delay when pasting unpatched images than it would be normally. It ocurs due to paste event re-emitting.
  • Implement gpu-info flag to get information about the current GPU vendor.
  • Grammar, typos and wordings fixes (thanks to @graves501 and @Gecero).
  • New AppImage maker: @reforged/maker-appimage.
    • It should simplify the development dependency structure of WebCord, as it directly implements AppImage packaging with mksquashfs binary (unlike to most @electron-forge/maker-* packages, which in reality only wraps electron-installer-* packages).
    • It should build faster due to its async nature.

Full Changelog: v3.2.0...v3.3.0

v3.2.0

29 May 16:34
Compare
Choose a tag to compare
  • Bump Electron to 19.x.y.
    • Electron version in currently hosted distributables: 19.0.1.
  • Setup a Weblate project for WebCord at Hosted Weblate. It's still not fully configured yet (e.g. it misses screenshots for the translation use).
  • Update the source code structure to actually support Weblate.
    • Drop support for JSONC files (undocummented yet).
  • Improve WebSocket Server implementation.
    • Handle Discord RPC and unknown requests (i.e. log information about the requests, but do nothing right now as requests other than INVITE_BROWSER are still unsupported).
    • Improve lock logic of WSS.
  • Enforce consistent line endings for files within the repository and emitted by TypeScript.
  • Enforce consistent casing for imported modules (tsconfig.json).
  • Replace cosmetic.ts with just CSS injection, which should improve the performance and reliability of the code.
  • Implement experimental function to improve the application performance for some platforms and hardware.
    • This has been currently tested only on NVIDIA and Linux, using proprietary drivers.
    • This function implements tweaks as well for Broadcom, AMD and Intel GPU driver vendors, althrough none of these vendors has been tested yet.
  • Greatly improve Wayland support (see #100 and 35e7e49 for details).
  • Drop support for Linux ia32 binaries. This is due to the fact Electron has now stopped providing binaries for it. However, you can still package Webcord under older Electron versions if you really need WebCord to work on Linux ia32 (it still works on Electron 13!).
    • This does not affect Windows ia32 binaries – they're still going to be released until Electron will stop providing binaries for it.

Full Changelog: v3.1.4...v3.2.0

v3.1.4

07 May 23:32
Compare
Choose a tag to compare
  • Bump Electron version to 18.x.y.
  • Major improvements for custom CSS themes feature.
    • Switch to .theme.css file extension format.
    • Resolve @import statements and fix themes before injection.
  • More accurate INVITE_BROWSER request detection in WebSocket Server implementation.
  • Documentation typo fix (#120)

Full Changelog: v3.1.3...v3.1.4

v3.1.3

11 Mar 21:45
Compare
Choose a tag to compare

Code quality / security:

  • stricter tsc configuration (and adapting the code for it),
  • --inspect flag family mitigations (an approach to block them without patched Electron).

New features:

  • Suppress notifications for a week on their close event – on Linux (at least XFCE), it seems to be emitted once notification body is clicked.
    • A better approach is planned for this on Linux (and maybe unofficially on FreeBSD as well) in feature – I work on Node native module that is going to be capable of emitting notifications with custom actions. MacOS seems to support that out-of-the-box on Electron, which should mean that only Windows may use the current cross-platform behavior.

Full Changelog: v3.1.2...v3.1.3