Releases: SpacingBat3/WebCord
Releases · SpacingBat3/WebCord
v3.7.0
- 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 inBrowserWindow
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 replaceapp.png
withapp.ico
on Windows.
- On macOS, tray icons are now rendered based on DPI:
- 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 leaveconfig.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).
- On Windows and Linux, it may just only encrypt
- 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
- 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 (codenamedunix
), so e.g. macOS users can also benefit from that.
- This adds an experimental configuration option for
- 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
.
- Note: Flags are not docummented yet, but they appear in
- 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 incontextBridge
and that is being randomly generated on each session (it is not kept outside of application buffer memory).
- For local pages, it either uses
- 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 aPartial
type ofbuildInfo
. - (Probably) fix issues with
AppUserModelID
generation (as reported in #203).
- Add
Full Changelog: v3.5.2...v3.6.0
v3.5.2
- Add Google Storage API CSP (resolves #182).
- Spoof Errors in modified Web API elements.
- Use
DOMException
with similar message like on Chromium for errors ingetDisplayMedia
andgetUserMedia
.
- Use
- 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
- 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 withError: 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 noaudio
/video
mediaType
(s). - Fix URL checking logic in
permissionHandler
.
- Mitigate/fix the Electron's
- Fix macOS bugs.
- 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
- 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:
Full Changelog: v3.4.0...v3.5.0
v3.4.0
- Add German localization files (#149).
- WebSocket Server: Handle
DEEP_LINK
andGUILD_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 ofArray
variables. - Avoid using unguarded
for
-in
loops that could also iterate over theprototype
methods/parameters. - Improve
title
attribute generation ofh3
elements at Licenses section in about window.
- Avoid using
- 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
- 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.
- Added translation for 🇳🇴️ Norwegian Bokmål by @comradekingu (only client.json).
- Update 🇬🇧️ English 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 ofdefault
output device, I will reconsider implementing audio capture on Linux as well.
- 🚫️ Blocking on Linux: audio in screen capture uses
- 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 wrapselectron-installer-*
packages). - It should build faster due to its
async
nature.
- It should simplify the development dependency structure of WebCord, as it directly implements AppImage packaging with
Full Changelog: v3.2.0...v3.3.0
v3.2.0
- Bump Electron to
19.x.y
.- Electron version in currently hosted distributables:
19.0.1
.
- Electron version in currently hosted distributables:
- 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).
- Drop support for JSONC files
- 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.
- Handle Discord RPC and unknown requests (i.e. log information about the requests, but do nothing right now as requests other than
- 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 Linuxia32
(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.
- This does not affect Windows
Full Changelog: v3.1.4...v3.2.0
v3.1.4
- 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.
- Switch to
- 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
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