aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md8
-rw-r--r--CONTRIBUTING.md189
-rw-r--r--README.md189
3 files changed, 225 insertions, 161 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index efad9f6a2..cad16ecae 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -3,10 +3,12 @@ name: Bug report
3about: Create a report to help us improve 3about: Create a report to help us improve
4--- 4---
5<!-- 5<!--
6Please remember that if you are logging a bug for some service that has *stopped working*, please log the bug at https://github.com/getferdi/recipes/issue
7Please remember to read the self-help documentation at https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help - in case it helps you unblock yourself.
8
6Please fill our form below, this way we can analyse and fix the problem as fast as possible. 9Please fill our form below, this way we can analyse and fix the problem as fast as possible.
7 10
8Please keep in mind that any text inside "<!--" and "--\>" are comments from us and won't be 11Please keep in mind that any text inside "<!--" and "--\>" are comments from us and won't be visible in your bug report, so please don't put any text in them.
9visible in your bug report, so please don't put any text in them.
10--> 12-->
11**Bug description:** 13**Bug description:**
12<!-- Add a clear and concise description of what the bug is --> 14<!-- Add a clear and concise description of what the bug is -->
@@ -33,7 +35,7 @@ visible in your bug report, so please don't put any text in them.
33- Server: <!-- e.g. Ferdi, Franz, Using without an account --> 35- Server: <!-- e.g. Ferdi, Franz, Using without an account -->
34 36
35- Debug information: 37- Debug information:
36<!-- 38<!--
37Get your debug information via Ferdi "Help" menu ("Copy/Publish Debug Information") then 39Get your debug information via Ferdi "Help" menu ("Copy/Publish Debug Information") then
38share a debug information file or your published link with us. 40share a debug information file or your published link with us.
39--> 41-->
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e1b557edd..82894cf5a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,13 +2,34 @@
2 2
3:tada: First off, thanks for taking the time and your effort to make Ferdi better! :tada: 3:tada: First off, thanks for taking the time and your effort to make Ferdi better! :tada:
4 4
5#### Table of contents 5## Table of contents
6
6<!-- TOC depthFrom:2 depthTo:2 withLinks:1 updateOnSave:1 orderedList:0 --> 7<!-- TOC depthFrom:2 depthTo:2 withLinks:1 updateOnSave:1 orderedList:0 -->
7 8
8- [Code of Conduct](#code-of-conduct) 9- [Contributing to Ferdi 5](#contributing-to-ferdi-5)
9- [What should I know before I get started?](#what-should-i-know-before-i-get-started) 10 - [Table of contents](#table-of-contents)
10- [How Can I Contribute?](#how-can-i-contribute) 11 - [Code of Conduct](#code-of-conduct)
11- [Styleguide](#styleguide) 12 - [What should I know before I get started?](#what-should-i-know-before-i-get-started)
13 - [How Can I Contribute?](#how-can-i-contribute)
14 - [Setting up your Development machine](#setting-up-your-development-machine)
15 - [Install System-level dependencies](#install-system-level-dependencies)
16 - [Node.js, npm, node-gyp](#nodejs-npm-node-gyp)
17 - [Git](#git)
18 - [Debian/Ubuntu](#debianubuntu)
19 - [Fedora](#fedora)
20 - [Windows](#windows)
21 - [Clone repository with submodule](#clone-repository-with-submodule)
22 - [Local caching of dependencies](#local-caching-of-dependencies)
23 - [Install dependencies](#install-dependencies)
24 - [Fix native modules to match current electron node version](#fix-native-modules-to-match-current-electron-node-version)
25 - [Package recipe repository](#package-recipe-repository)
26 - [Using Docker to build an rpm package](#using-docker-to-build-an-rpm-package)
27 - [Start development app](#start-development-app)
28 - [Styleguide](#styleguide)
29 - [Git Commit Messages format](#git-commit-messages-format)
30 - [Javascript Coding style-checker](#javascript-coding-style-checker)
31 - [Packaging](#packaging)
32 - [Release](#release)
12 33
13<!-- /TOC --> 34<!-- /TOC -->
14 35
@@ -17,18 +38,158 @@
17This project and everyone participating in it is governed by the [Ferdi Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [stefan@adlk.io](mailto:stefan@adlk.io). 38This project and everyone participating in it is governed by the [Ferdi Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [stefan@adlk.io](mailto:stefan@adlk.io).
18 39
19## What should I know before I get started? 40## What should I know before I get started?
41
20For the moment, Ferdi's development is a bit slow but all contributions are highly appreciated. [Check this issue for discussion](https://github.com/getferdi/ferdi/issues/956). 42For the moment, Ferdi's development is a bit slow but all contributions are highly appreciated. [Check this issue for discussion](https://github.com/getferdi/ferdi/issues/956).
21 43
22## How Can I Contribute? 44## How Can I Contribute?
45
23As a basic rule, before filing issues, feature requests or anything else. Take a look at the issues and check if this has not already been reported by another user. If so, engage in the already existing discussion. 46As a basic rule, before filing issues, feature requests or anything else. Take a look at the issues and check if this has not already been reported by another user. If so, engage in the already existing discussion.
24 47
25## Styleguide 48## Setting up your Development machine
26### Git Commit Messages 49
27* Use the present tense ("Add feature" not "Added feature") 50### Install System-level dependencies
28* Use the imperative mood ("Move cursor to..." not "Moves cursor to...") 51
29* Limit the first line to 72 characters or less 52#### Node.js, npm, node-gyp
30* Reference issues and pull requests liberally after the first line 53
31* When only changing documentation, include `[ci skip]` in the commit description 54Please make sure you are running the exact node version used by the developers/contributors as specified in the [nvmrc file](./.nvmrc).
55
56Currently, these are the combinations of system dependencies that work on an intel-based machines for MacOS/Linux/Windows (building on an ARM-based machine is still a work-in-progress due to node-sass native dependencies)
57
58```bash
59node -v
60v14.16.1
61npm -v
626.14.12
63node-gyp -v
64v8.0.0
65```
66
67#### Git
68
69The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure.
70
71#### Debian/Ubuntu
72
73```bash
74apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev rpm
75```
76
77#### Fedora
78
79```bash
80dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel rpm
81```
82
83#### Windows
84
85Please make sure you run this command as an administrator:
86
87```bash
88npm install --global windows-build-tools --vs2015
89```
90
91### Clone repository with submodule
92
93```bash
94git clone https://github.com/getferdi/ferdi.git
95cd ferdi
96git submodule update --init --recursive
97```
98
99It is important you execute the last command to get the required submodules (recipes, server).
100
101### Local caching of dependencies
102
103Set these env vars into your profile (or if you use [direnv](https://direnv.net/), you can manage them via the respective `.envrc` file)
104```bash
105export ELECTRON_CACHE=$HOME/.cache/electron
106export ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
107```
108
109### Install dependencies
110
111Run the following command to install all dependencies, and link sibling modules with Ferdi.
112
113```bash
114npx lerna bootstrap
115```
116
117If you previously ran `npm install`, it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. If you encounter the `gyp: No Xcode or CLT version` error on macOS at this step, please have a look [here](https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d).
118
119### Fix native modules to match current electron node version
120
121```bash
122npm run rebuild
123```
124
125### Package recipe repository
126
127Ferdi requires its recipes to be packaged before it can use it. When running Ferdi as a development instance, you'll need to package the local recipes before you can create any services inside Ferdi.
128
129```bash
130cd recipes
131npm install && npm run package
132```
133
134### Using Docker to build an rpm package
135
136```bash
137docker build -t ferdi-package .
138docker run -v tmp-out:/ferdi-out -it ferdi-package sh
139```
140
141The above will place all the built artifacts into the `/ferdi` folder within the image. If you want to copy them outside of the image, simply mount a volume into a different location, and copy all files from `/ferdi` into the mounted folder (`/ferdi-out` in the 2nd example command above).
142
143### Start development app
144
145Run these two commands **simultaneously** in different terminals:
146
147```bash
148npm run dev
149DEBUG=Ferdi:* npm run start
150```
151
152Optionally, you can run both commands in one terminal with [misty](https://github.com/adlk/misty) (see [misty.yml](https://github.com/getferdi/ferdi/blob/develop/misty.yml)):
153
154```bash
155DEBUG=Ferdi:* npx misty
156```
157
158Note: please prefer [`debug()`](https://github.com/visionmedia/debug) over `console.log()`.
159
160### Styleguide
161
162#### Git Commit Messages format
163
164- Use the present tense ("Add feature" not "Added feature")
165- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
166- Limit the first line to 72 characters or less
167- Reference issues and pull requests liberally after the first line
168- When only changing documentation, include `[ci skip]` in the commit description
169
170#### Javascript Coding style-checker
171
172- Please use `es-lint` and the defined rules to maintain a consistent style
173
174## Packaging
175
176```bash
177npm run build
178```
179
180Assets will be available in the `out` folder.
181
182## Release
183
184Create a new [draft release](https://github.com/getferdi/ferdi/releases/new) that targets the `release` branch, then:
185
186```bash
187git checkout develop && git pull -r
188git checkout release
189git submodule update --remote --force
190git commit -am "Update submodules"
191git merge --no-ff develop
192git push
193```
32 194
33### Javascript 195Once the draft release assets are uploaded (13 assets), publish the release (you will need elevated permissions in GitHub for doing this). The last commit of the `release` branch will be tagged. You can then merge `release` into `master` and back into `develop` if needed
34* Please use `es-lint` and the defined rules to maintain a consistent style
diff --git a/README.md b/README.md
index d6c8e7e38..e2448bde9 100644
--- a/README.md
+++ b/README.md
@@ -25,17 +25,18 @@
25 25
26🤴🏽 Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones. 26🤴🏽 Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones.
27 27
28### Table of contents 28## Table of contents
29 29
30<details> 30<details>
31<summary>Toggle navigation</summary> 31<summary>Toggle navigation</summary>
32 32
33- [Ferdi](#ferdi) 33- [Ferdi](#ferdi)
34 - [Table of contents](#table-of-contents) 34 - [Table of contents](#table-of-contents)
35 - [What is Ferdi?](#what-is-ferdi) 35 - [What is Ferdi?](#what-is-ferdi)
36 - [Features](#features) 36 - [Features](#features)
37 - [What does Ferdi look like?](#what-does-ferdi-look-like) 37 - [What does Ferdi look like?](#what-does-ferdi-look-like)
38 - [Download Ferdi](#download-ferdi) 38 - [How to get and start using Ferdi](#how-to-get-and-start-using-ferdi)
39 - [Download Ferdi](#download-ferdi)
39 - [Or use Chocolatey (Windows only)](#or-use-chocolatey-windows-only) 40 - [Or use Chocolatey (Windows only)](#or-use-chocolatey-windows-only)
40 - [Or use homebrew (macOS or Linux)](#or-use-homebrew-macos-or-linux) 41 - [Or use homebrew (macOS or Linux)](#or-use-homebrew-macos-or-linux)
41 - [Or use AUR (Arch Linux)](#or-use-aur-arch-linux) 42 - [Or use AUR (Arch Linux)](#or-use-aur-arch-linux)
@@ -44,36 +45,24 @@
44 - [Adds features to increase your productivity](#adds-features-to-increase-your-productivity) 45 - [Adds features to increase your productivity](#adds-features-to-increase-your-productivity)
45 - [Adds features to improve your privacy](#adds-features-to-improve-your-privacy) 46 - [Adds features to improve your privacy](#adds-features-to-improve-your-privacy)
46 - [Adds features to improve your experience using Ferdi](#adds-features-to-improve-your-experience-using-ferdi) 47 - [Adds features to improve your experience using Ferdi](#adds-features-to-improve-your-experience-using-ferdi)
47 - [Removed bugs](#removed-bugs) 48 - [Fixes bugs](#fixes-bugs)
48 - [Adds new platforms](#adds-new-platforms) 49 - [Adds new platforms](#adds-new-platforms)
49 - [Adds internal changes](#adds-internal-changes) 50 - [Adds internal changes](#adds-internal-changes)
50 - [Development](#development) 51 - [Contributing to Ferdi's development](#contributing-to-ferdis-development)
51 - [Install OS dependencies](#install-os-dependencies) 52 - [Nightly releases](#nightly-releases)
52 - [Node.js](#nodejs) 53 - [Troubleshooting recipes (self-help)](#troubleshooting-recipes-self-help)
53 - [Git](#git)
54 - [Debian/Ubuntu](#debianubuntu)
55 - [Fedora](#fedora)
56 - [Windows](#windows)
57 - [Clone repository with submodule](#clone-repository-with-submodule)
58 - [Local caching of dependencies](#local-caching-of-dependencies)
59 - [Install dependencies](#install-dependencies)
60 - [Fix native modules to match current electron node version](#fix-native-modules-to-match-current-electron-node-version)
61 - [Package recipe repository](#package-recipe-repository)
62 - [Start development app](#start-development-app)
63 - [Packaging](#packaging)
64 - [Release](#release)
65 - [Nightly releases](#nightly-releases)
66 - [Contributors ✨](#contributors-) 54 - [Contributors ✨](#contributors-)
67 - [Backers via OpenCollective](#backers-via-opencollective) 55 - [Backers via OpenCollective](#backers-via-opencollective)
68 - [Sponsors via OpenCollective](#sponsors-via-opencollective) 56 - [Sponsors via OpenCollective](#sponsors-via-opencollective)
69 - [Other Sponsors](#other-sponsors) 57 - [Other Sponsors](#other-sponsors)
70</details> 58</details>
71 59
72### What is Ferdi? 60## What is Ferdi?
73 61
74Ferdi is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. Find out more about Ferdi and its features on [getferdi.com](https://getferdi.com). 62Ferdi is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. Find out more about Ferdi and its features on [getferdi.com](https://getferdi.com).
75 63
76## Features 64## Features
65
77- [x] Ferdi puts all your web apps into one place 66- [x] Ferdi puts all your web apps into one place
78- [x] Native support for 100+ services 67- [x] Native support for 100+ services
79- [x] Workspaces to keep your personal and work life separated 68- [x] Workspaces to keep your personal and work life separated
@@ -86,9 +75,10 @@ Ferdi is a desktop app that helps you organize how you use your favourite apps b
86- [x] Ferdi speaks your language: Support for 20+ languages 75- [x] Ferdi speaks your language: Support for 20+ languages
87 76
88...and best of all: 77...and best of all:
78
89- [x] Its completely free! There are no restrictions on features, no paywalls 79- [x] Its completely free! There are no restrictions on features, no paywalls
90 80
91### What does Ferdi look like? 81## What does Ferdi look like?
92 82
93<details> 83<details>
94<summary>Toggle screenshots</summary> 84<summary>Toggle screenshots</summary>
@@ -104,7 +94,9 @@ Ferdi is a desktop app that helps you organize how you use your favourite apps b
104</p> 94</p>
105</details> 95</details>
106 96
107## Download Ferdi 97## How to get and start using Ferdi
98
99### Download Ferdi
108 100
109You can download Ferdi for Windows, Mac and Linux on [Ferdi's download page](https://getferdi.com/download) or you can find all variants in the [latest stable release](https://github.com/getferdi/ferdi/releases/latest) assets and [all the other release here](https://github.com/getferdi/ferdi/releases). 101You can download Ferdi for Windows, Mac and Linux on [Ferdi's download page](https://getferdi.com/download) or you can find all variants in the [latest stable release](https://github.com/getferdi/ferdi/releases/latest) assets and [all the other release here](https://github.com/getferdi/ferdi/releases).
110 102
@@ -123,6 +115,7 @@ You can download Ferdi for Windows, Mac and Linux on [Ferdi's download page](htt
123### Or use AUR (Arch Linux) 115### Or use AUR (Arch Linux)
124 116
125Ferdi has three separate AUR packages you can use: 117Ferdi has three separate AUR packages you can use:
118
126- **[ferdi](https://aur.archlinux.org/packages/ferdi/)**: Uses your system electron version to run the latest release - this version will work best on most systems. 119- **[ferdi](https://aur.archlinux.org/packages/ferdi/)**: Uses your system electron version to run the latest release - this version will work best on most systems.
127- **[ferdi-bin](https://aur.archlinux.org/packages/ferdi-bin/)**: Uses the latest Fedora release and extracts it to Arch. Use this version if you are having trouble with the `ferdi` package. 120- **[ferdi-bin](https://aur.archlinux.org/packages/ferdi-bin/)**: Uses the latest Fedora release and extracts it to Arch. Use this version if you are having trouble with the `ferdi` package.
128- **[ferdi-git](https://aur.archlinux.org/packages/ferdi-git/)**: Uses your system electron version to run the latest commit from the develop branch and may be unstable but may also give you features that are not yet available in other versions. Please only use `ferdi-git` if you accept these risks. 121- **[ferdi-git](https://aur.archlinux.org/packages/ferdi-git/)**: Uses your system electron version to run the latest commit from the develop branch and may be unstable but may also give you features that are not yet available in other versions. Please only use `ferdi-git` if you accept these risks.
@@ -132,12 +125,14 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
132## What makes Ferdi different from Franz? 125## What makes Ferdi different from Franz?
133 126
134### Removes unproductive paywalls and other other interruptions 127### Removes unproductive paywalls and other other interruptions
128
135- [x] Removes the counter-productive fullscreen app delay inviting users to upgrade 129- [x] Removes the counter-productive fullscreen app delay inviting users to upgrade
136- [x] Removes pages begging you to donate after registration 130- [x] Removes pages begging you to donate after registration
137- [x] Removes "Franz is better together" popup 131- [x] Removes "Franz is better together" popup
138- [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15)) 132- [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15))
139 133
140### Adds features to increase your productivity 134### Adds features to increase your productivity
135
141- [x] Adds 30+ new services 136- [x] Adds 30+ new services
142- [x] Adds "Find in Page" feature ([#67](https://github.com/getferdi/ferdi/issues/67)) 137- [x] Adds "Find in Page" feature ([#67](https://github.com/getferdi/ferdi/issues/67))
143- [x] Adds an option to keep individual workspaces always loaded ([#37](https://github.com/getferdi/ferdi/issues/37)) 138- [x] Adds an option to keep individual workspaces always loaded ([#37](https://github.com/getferdi/ferdi/issues/37))
@@ -153,6 +148,7 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
153- [x] Differentiates between indirect and direct notifications ([#590](https://github.com/getferdi/ferdi/issues/590)), 💖 [@Room4O4](https://github.com/Room4O4) [@mahadevans87](https://github.com/mahadevans87) [@FeikoJoosten](https://github.com/FeikoJoosten) [@sampathBlam](https://github.com/sampathBlam) 148- [x] Differentiates between indirect and direct notifications ([#590](https://github.com/getferdi/ferdi/issues/590)), 💖 [@Room4O4](https://github.com/Room4O4) [@mahadevans87](https://github.com/mahadevans87) [@FeikoJoosten](https://github.com/FeikoJoosten) [@sampathBlam](https://github.com/sampathBlam)
154 149
155### Adds features to improve your privacy 150### Adds features to improve your privacy
151
156- [x] [Adds option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server) 152- [x] [Adds option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server)
157- [x] Adds option to use Ferdi without an account ([#5](https://github.com/getferdi/ferdi/issues/5)) 153- [x] Adds option to use Ferdi without an account ([#5](https://github.com/getferdi/ferdi/issues/5))
158- [x] Uses the Ferdi API instead of Franz's servers 154- [x] Uses the Ferdi API instead of Franz's servers
@@ -163,6 +159,7 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
163- [x] Adds local [recipe repository](https://github.com/getferdi/recipes) that removes the need of downloading recipes from a remote server 159- [x] Adds local [recipe repository](https://github.com/getferdi/recipes) that removes the need of downloading recipes from a remote server
164 160
165### Adds features to improve your experience using Ferdi 161### Adds features to improve your experience using Ferdi
162
166- [x] Adds Universal Dark Mode via the [DarkReader extension](https://github.com/darkreader/darkreader) ([#71](https://github.com/getferdi/ferdi/issues/71)) 163- [x] Adds Universal Dark Mode via the [DarkReader extension](https://github.com/darkreader/darkreader) ([#71](https://github.com/getferdi/ferdi/issues/71))
167- [x] Adds Dark Reader settings ([#531](https://github.com/getferdi/ferdi/issues/531), [#568](https://github.com/getferdi/ferdi/issues/568)), 💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) 164- [x] Adds Dark Reader settings ([#531](https://github.com/getferdi/ferdi/issues/531), [#568](https://github.com/getferdi/ferdi/issues/568)), 💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87)
168- [x] Adds adaptable Dark Mode that will respect the system's Dark Mode setting ([#173](https://github.com/getferdi/ferdi/issues/173), [#548](https://github.com/getferdi/ferdi/issues/548) (💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87))) 165- [x] Adds adaptable Dark Mode that will respect the system's Dark Mode setting ([#173](https://github.com/getferdi/ferdi/issues/173), [#548](https://github.com/getferdi/ferdi/issues/548) (💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87)))
@@ -193,7 +190,8 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
193- [x] Updates Microsoft Teams to allow Desktop Sharing ([getferdi/recipes#116](https://github.com/getferdi/recipes/issues/116)), 💖 [@Gautasmi](https://github.com/Gautasmi) 190- [x] Updates Microsoft Teams to allow Desktop Sharing ([getferdi/recipes#116](https://github.com/getferdi/recipes/issues/116)), 💖 [@Gautasmi](https://github.com/Gautasmi)
194- [x] Removes automatic reloading from WhatsApp 191- [x] Removes automatic reloading from WhatsApp
195 192
196### Removed bugs 193### Fixes bugs
194
197- [x] Fixes bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd)) 195- [x] Fixes bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd))
198- [x] Fixes zooming 196- [x] Fixes zooming
199- [x] Fixes login problems in Google services 197- [x] Fixes login problems in Google services
@@ -206,12 +204,14 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
206- [x] Refocuses Webview only for active service ([#610](https://github.com/getferdi/ferdi/issues/610)), 💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) 204- [x] Refocuses Webview only for active service ([#610](https://github.com/getferdi/ferdi/issues/610)), 💖 [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87)
207 205
208### Adds new platforms 206### Adds new platforms
207
209- [x] Adds portable version for Windows so you can use Ferdi without even installing it, 💖 [@Makazzz](https://github.com/Makazzz) 208- [x] Adds portable version for Windows so you can use Ferdi without even installing it, 💖 [@Makazzz](https://github.com/Makazzz)
210- [x] Adds Arch Linux AUR packages, 💖 [@AGCaesar](https://github.com/AGCaesar) 209- [x] Adds Arch Linux AUR packages, 💖 [@AGCaesar](https://github.com/AGCaesar)
211- [x] Adds Ferdi as a Flatpak on Flathub ([#323](https://github.com/getferdi/ferdi/issues/323)), 💖 [@lhw](https://github.com/lhw) 210- [x] Adds Ferdi as a Flatpak on Flathub ([#323](https://github.com/getferdi/ferdi/issues/323)), 💖 [@lhw](https://github.com/lhw)
212 211
213### Adds internal changes 212### Adds internal changes
214- [x] Upgrades to Electron 12.0.6 213
214- [x] Upgrades to Electron 12.0.7
215- [x] Switches to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size 215- [x] Switches to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size
216- [x] Minifies build files to improve app size 216- [x] Minifies build files to improve app size
217- [x] Adds "npm run prepare-code" command for development to lint and beautify code 217- [x] Adds "npm run prepare-code" command for development to lint and beautify code
@@ -223,134 +223,35 @@ If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`.
223 223
224> Thanks to all our [contributors](#contributors-) who helped realize all these amazing features! 💖 224> Thanks to all our [contributors](#contributors-) who helped realize all these amazing features! 💖
225 225
226## Development 226## Contributing to Ferdi's development
227
228### Install OS dependencies
229
230#### Node.js
231
232Please make sure you are running the exact node version used by the developers/contributors as specified in the [nvmrc file](./.nvmrc)
233
234#### Git
235
236The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure.
237
238#### Debian/Ubuntu
239
240```bash
241$ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev rpm
242```
243
244#### Fedora
245
246```bash
247$ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel rpm
248```
249
250#### Windows
251
252Please make sure you run this command as an administrator:
253
254```bash
255$ npm install --global windows-build-tools --vs2015
256```
257 227
258### Clone repository with submodule 228We welcome all contributors. Please read the [contributing guidelines](CONTRIBUTING.md) to setup your development machine and proceed.
259 229
260```bash 230## Nightly releases
261$ git clone https://github.com/getferdi/ferdi.git
262$ cd ferdi
263$ git submodule update --init --recursive
264```
265 231
266It is important you execute the last command to get the required submodules (recipes, server). 232Nightly releases are automatically triggered every day ([details](https://github.com/getferdi/ferdi/pull/990)) and available in [getferdi/nightlies](https://github.com/getferdi/nightlies/releases). Maintainers still need to manually publish the draft releases as pre-releases for now.
267 233
234## Troubleshooting recipes (self-help)
268 235
269### Local caching of dependencies 236One of the issues being raised by the awesome users of Ferdi is that certain service-functionalities do not work. As good example of this is either the unread count (badge) stops working for specific services or the gmail logins don't work anymore. (These are just 2 of the most common problems reported).
270 237
271Set these env vars into your profile (or if you use [direnv](https://direnv.net/), you can manage them via the respective `.envrc` file) 238Since we (the contributors to Ferdi) also eat our own dog food, we use Ferdi as our day-to-day communication app - and most likely have faced the same/similar issue. As a first step before filing an issue, we request you to follow these simple steps to see if the issue gets fixed.
272```bash
273export ELECTRON_CACHE=$HOME/.cache/electron
274export ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
275```
276
277### Install dependencies
278 239
279Run the following command to install all dependencies, and link sibling modules with Ferdi. 240- Make sure you are on the latest version of Ferdi. As of this writing, since the nightly CI packaging process is broken, we request you to download the latest nightly from the link in [Nightly releases](#nightly-releases) section.
241- Stop Ferdi
242- Navigate to the Ferdi profile folder in your respective installation in your file explorer application.
280 243
281```bash 244```bash
282$ npx lerna bootstrap 245 Mac: ~/Library/Application Support/Ferdi/recipes
246 Windows: %appdata%/Ferdi/recipes
247 Linux: ~/.config/Ferdi/recipes
283``` 248```
284 249
285If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. If you encounter the `gyp: No Xcode or CLT version` error on macOS at this step, please have a look [here](https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d). 250- Delete the folder of the service that is causing your issue - _in the file explorer application_. (Please note that if you have manually modified any files here, it will be your responsibility to merge the changes with the latest version of the recipe (or you can submit a [pull request](https://github.com/getferdi/recipes/pulls) for the same).
286 251- Open a browser and navigate to the [recipes](https://github.com/getferdi/recipes/tree/master/recipes) repository page, and copy ALL the files for your erroneous service into your local machine at the location that you deleted in the previous step
287### Fix native modules to match current electron node version 252- Restart Ferdi (this should upgrade your recipes to the latest working version that the contributors have fixed)
288 253- If this process did not fix the issue, please log a detailed bug report [here](https://github.com/getferdi/recipes/issues)
289```bash 254- _Note:_ An automated process to perform these steps is being ideated and tracked [here](https://github.com/getferdi/ferdi/issues/1302)
290$ npm run rebuild
291```
292
293### Package recipe repository
294
295Ferdi requires its recipes to be packaged before it can use it. When running Ferdi as a development instance, you'll need to package the local recipes before you can create any services inside Ferdi.
296
297```bash
298$ cd recipes
299$ npm install && npm run package
300```
301
302### Using Docker to build a package
303
304```bash
305$ docker build -t ferdi-package .
306$ docker run -v tmp-out:/ferdi-out -it ferdi-package sh
307```
308
309The above will place all the built artifacts into the `/ferdi` folder within the image. If you want to copy them outside of the image, simply mount a volume into a different location, and copy all files from `/ferdi` into the mounted folder (`/ferdi-out` in the 2nd example command above).
310
311### Start development app
312
313Run these two commands **simultaneously** in different terminals:
314
315```bash
316$ npm run dev
317$ DEBUG=Ferdi:* npm run start
318```
319
320Optionally, you can run both commands in one terminal with [misty](https://github.com/adlk/misty) (see [misty.yml](https://github.com/getferdi/ferdi/blob/develop/misty.yml)):
321
322```bash
323$ DEBUG=Ferdi:* npx misty
324```
325
326Note: please prefer [`debug()`](https://github.com/visionmedia/debug) over `console.log()`.
327
328### Packaging
329
330```bash
331$ npm run build
332```
333
334Assets will be available in the `out` folder.
335
336### Release
337
338Create a new [draft release](https://github.com/getferdi/ferdi/releases/new) that targets the `release` branch, then:
339
340```bash
341$ git checkout develop && git pull
342$ git checkout release
343$ git submodule update --remote --force
344$ git commit -am "Update submodules"
345$ git merge --no-ff develop
346$ git push
347```
348
349Once the draft release assets are uploaded (13 assets), publish the release. The last commit of the `release` branch will be tagged. You can then merge `release` into `master` and back into `develop` if needed.
350
351#### Nightly releases
352
353Nightly releases are automaticly triggered every day ([details](https://github.com/getferdi/ferdi/pull/990)) and available in [getferdi/nightlies](https://github.com/getferdi/nightlies/releases). Maintainers still need to manually publish the draft releases as pre-releases for now.
354 255
355## Contributors ✨ 256## Contributors ✨
356 257