Felanbird / WebCord

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Znasz 🇵🇱? Przejdź tutaj.

WebCord Logo

WebCord

Build Weblate badge GitHub downloads Pi-Apps badge Pi-Ware badge Unofficial APT repository

A Discord and Fosscord client implemented directly without Discord API. Made in 🇵🇱 with the Electron framework.

Philosophy / key features

Nowadays, WebCord is quite complex project; it can be summarized as a pack of security and privacy hardenings, Discord features reimplementations, Electron / Chromium / Discord bugs workarounds, stylesheets, internal pages and wrapped https://discord.com page, designed to conform with ToS as much as it is possible (or hide the changes that might violate it from Discord's eyes). For all features, take a look at Features.md.

  • 🕵️ Hardened for privacy

WebCord does a lot to improve the privacy of the users. It blocks known tracing and fingerprinting methods, but it does not end on it. It also manages the permissions to sensitive APIs like camera or microphone, sets its own user agent to the one present in Chromium browsers and spoof web API modifications in order to prevent distinguishing it from the real Chrome/Chromium browsers.

  • 🛡️ Follows the best security practises

Built on Electron and Chromium, WebCord is consistently secure on all platforms and does not depend on native browser engines' security. Moreover Chrome (and because of this – Chromium) has a good vulnerability rewards program, which is probably one of the most popular programs from all of the browsers. It should also be said Electron does care about the remote content security – it has a complex process model which sandboxes (at least) the browser scripts from Node.js. And with the restrictive TypeScript and ESlint policy, most simple bugs in the code, including those affecting the app security, are eliminated even before they will go into the production. WebCord also tries to follow practises from the Electron#Security page, validating the pages using the local list rather than the one remotely fetched from the Discord. It has also a few securities known from the browsers, like an alert/prompt dialog spam prevention in case Discord would begin to behave maliciously.

  • 🛠️ Customizable

WebCord can be configured to your needs and the preferences – you can harden it even more by blocking unnecesarry third-party websites in Content Security Policy settings, improve your privacy by blocking typing indicator and much more! Moreover, a support for custom stylesheets is on its way, allowing you to theme WebCord the way you like!

  • 📱 ARM-friendly and Linux mobile support

Altrough Electron is not designed to work on mobile devices, WebCord tries its best to be responsive even on devices with the smaller screens and touch screens. It's still not ideal, but should work for basic Discord usage. However I plan to focus on it someday and to make it look and work closer to the official Discord Android client.

Documentation:

For newcomers I recommend to read at least the FAQ (to fix common issues and not report them as bugs). You may also read Features to know which features have been implemented and are supported. It is strongly advised to read the application license as well.

History

At first, this project was a fork of the Discord-Electron, but then eventually I had rewritten it as Electron Discord Web App project, which is currently called WebCord.

At its early days, it had a very simple concept: a better web app implementation than Nativefier was, at least in terms of the features. Since I were too young to understand how to keep things private and secure, this project's code was full of flaws. It was like that until 1.x.y, when the privacy and the security of the code has slowly been shaping, with 1.2.0 being a major step forward, since TypeScript was started to being adopted. Later, I've added the default linter to the project's documentation and configured the rules for it and focused on child window design, which added the documentation, settings and about windows to the Discord page. I've then also realized there's a serious issue with the current screen share dialog – it was injected to the page, meaing Discord could technically access the windows' thumbnails and simulate the mouse click events to trigger sharing the screen even without any interaction. This flaw was thankfully fixed thanks to the BrowserViews in more modern WebCord releases.

With the code quality, a new philosophies and goals has shaped for this project – it now approaches to wrap Discord website and develop its own UI (todo) for non-Discord instances primarly based on the Discord API (might decide some day that WebCord will also support other APIs as well). With that, I want to reimplement Discord in a way it is a trully FOSS client, without any risk that users will get banned by either breaking the ToS or being detected as self-bot because of the suspicious use of Discord REST API. This is what WebCord mainly focuses to achieve nowadays.

And it should be said that before I knew much about how Electron does work, @GyozaGuy's project help me to begin on my own with developing a Discord webapp. Without his work, it is unknown whenever I would begin developing WebCord or not.

Wiki pages

Because GitHub Wiki Pages of this project are meant to be maintained by the community, they should be considered as a potentially malicious or misleading source of the information. It is recommended to read the official documentation first before you will proceed reading the community-maintained Wiki pages.

License

This project is redistributed under the terms of MIT License:

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Want to contribute to my project?

Please take a look at Contributing.md – it describes more about ways of giving your help to improve quality of WebCord. And for some tasks you don't even need to be familiar with programming at all!

About

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

License:MIT License


Languages

Language:TypeScript 85.1%Language:CSS 10.5%Language:HTML 4.4%