diff options
author | 2019-11-25 10:49:34 +0100 | |
---|---|---|
committer | 2019-11-25 10:49:34 +0100 | |
commit | c3a8d26cf4d7ffe3642cdc962e51e367885a9c12 (patch) | |
tree | 34d8cf9c8311165a81542d035079a91aa09ff3a6 | |
parent | Bump version number (diff) | |
parent | Bump version number (diff) | |
download | ferdium-app-c3a8d26cf4d7ffe3642cdc962e51e367885a9c12.tar.gz ferdium-app-c3a8d26cf4d7ffe3642cdc962e51e367885a9c12.tar.zst ferdium-app-c3a8d26cf4d7ffe3642cdc962e51e367885a9c12.zip |
Merge branch 'develop'v5.4.0
79 files changed, 1004 insertions, 453 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc index cd9704edf..487175335 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "projectName": "ferdi", | 2 | "projectName": "ferdi", |
3 | "projectOwner": "kytwb", | 3 | "projectOwner": "getferdi", |
4 | "repoType": "github", | 4 | "repoType": "github", |
5 | "repoHost": "https://github.com", | 5 | "repoHost": "https://github.com", |
6 | "files": [ | 6 | "files": [ |
@@ -63,7 +63,8 @@ | |||
63 | "projectManagement", | 63 | "projectManagement", |
64 | "review", | 64 | "review", |
65 | "infra", | 65 | "infra", |
66 | "fundingFinding" | 66 | "fundingFinding", |
67 | "blog" | ||
67 | ] | 68 | ] |
68 | }, | 69 | }, |
69 | { | 70 | { |
@@ -158,7 +159,10 @@ | |||
158 | "contributions": [ | 159 | "contributions": [ |
159 | "bug", | 160 | "bug", |
160 | "code", | 161 | "code", |
161 | "translation" | 162 | "translation", |
163 | "content", | ||
164 | "doc", | ||
165 | "platform" | ||
162 | ] | 166 | ] |
163 | }, | 167 | }, |
164 | { | 168 | { |
@@ -172,6 +176,81 @@ | |||
172 | "infra", | 176 | "infra", |
173 | "platform" | 177 | "platform" |
174 | ] | 178 | ] |
179 | }, | ||
180 | { | ||
181 | "login": "Gaboris", | ||
182 | "name": "Gaboris", | ||
183 | "avatar_url": "https://avatars2.githubusercontent.com/u/9462372?v=4", | ||
184 | "profile": "https://github.com/Gaboris", | ||
185 | "contributions": [ | ||
186 | "question", | ||
187 | "bug" | ||
188 | ] | ||
189 | }, | ||
190 | { | ||
191 | "login": "incace", | ||
192 | "name": "Ce", | ||
193 | "avatar_url": "https://avatars1.githubusercontent.com/u/61343?v=4", | ||
194 | "profile": "http://www.cu3ed.com/", | ||
195 | "contributions": [ | ||
196 | "bug" | ||
197 | ] | ||
198 | }, | ||
199 | { | ||
200 | "login": "pztrn", | ||
201 | "name": "Stanislav N.", | ||
202 | "avatar_url": "https://avatars1.githubusercontent.com/u/869402?v=4", | ||
203 | "profile": "http://pztrn.name/", | ||
204 | "contributions": [ | ||
205 | "bug" | ||
206 | ] | ||
207 | }, | ||
208 | { | ||
209 | "login": "patrickcurl", | ||
210 | "name": "Patrick Curl", | ||
211 | "avatar_url": "https://avatars1.githubusercontent.com/u/1470061?v=4", | ||
212 | "profile": "http://www.patrickcurl.com", | ||
213 | "contributions": [ | ||
214 | "ideas" | ||
215 | ] | ||
216 | }, | ||
217 | { | ||
218 | "login": "Stanzilla", | ||
219 | "name": "Benjamin Staneck", | ||
220 | "avatar_url": "https://avatars3.githubusercontent.com/u/75278?v=4", | ||
221 | "profile": "https://github.com/Stanzilla", | ||
222 | "contributions": [ | ||
223 | "design" | ||
224 | ] | ||
225 | }, | ||
226 | { | ||
227 | "login": "ammarmalhas", | ||
228 | "name": "ammarmalhas", | ||
229 | "avatar_url": "https://avatars1.githubusercontent.com/u/57057209?v=4", | ||
230 | "profile": "https://github.com/ammarmalhas", | ||
231 | "contributions": [ | ||
232 | "bug", | ||
233 | "security" | ||
234 | ] | ||
235 | }, | ||
236 | { | ||
237 | "login": "steliyan", | ||
238 | "name": "Steliyan Stoyanov", | ||
239 | "avatar_url": "https://avatars1.githubusercontent.com/u/1850292?v=4", | ||
240 | "profile": "https://github.com/steliyan", | ||
241 | "contributions": [ | ||
242 | "code", | ||
243 | "ideas" | ||
244 | ] | ||
245 | }, | ||
246 | { | ||
247 | "login": "brorbw", | ||
248 | "name": "Bror Winther", | ||
249 | "avatar_url": "https://avatars2.githubusercontent.com/u/5909562?v=4", | ||
250 | "profile": "https://github.com/brorbw", | ||
251 | "contributions": [ | ||
252 | "doc" | ||
253 | ] | ||
175 | } | 254 | } |
176 | ], | 255 | ], |
177 | "contributorsPerLine": 6 | 256 | "contributorsPerLine": 6 |
diff --git a/.gitmodules b/.gitmodules index 00bc1d26d..78e0c5221 100644 --- a/.gitmodules +++ b/.gitmodules | |||
@@ -2,7 +2,9 @@ | |||
2 | path = recipes | 2 | path = recipes |
3 | url = https://github.com/getferdi/recipes.git | 3 | url = https://github.com/getferdi/recipes.git |
4 | ignore = all | 4 | ignore = all |
5 | branch = master | ||
5 | [submodule "src/server"] | 6 | [submodule "src/server"] |
6 | path = src/server | 7 | path = src/server |
7 | url = https://github.com/getferdi/internal-server.git | 8 | url = https://github.com/getferdi/internal-server.git |
8 | ignore = all | 9 | ignore = all |
10 | branch = master | ||
@@ -1 +1 @@ | |||
10.14.0 | 10.17.0 | ||
diff --git a/.travis.yml b/.travis.yml index ebc96d2cd..d44187e75 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -1,25 +1,31 @@ | |||
1 | matrix: | 1 | matrix: |
2 | include: | 2 | include: |
3 | - os: linux | 3 | - os: linux |
4 | dist: xenial | 4 | dist: xenial |
5 | addons: | 5 | addons: |
6 | apt: | 6 | apt: |
7 | packages: | 7 | packages: |
8 | - libx11-dev | 8 | - libx11-dev |
9 | - libxext-dev | 9 | - libxext-dev |
10 | - libxss-dev | 10 | - libxss-dev |
11 | - libxkbfile-dev | 11 | - libxkbfile-dev |
12 | - os: osx | 12 | - rpm |
13 | osx_image: xcode11 | 13 | - os: osx |
14 | osx_image: xcode11 | ||
14 | 15 | ||
15 | language: node_js | 16 | language: node_js |
17 | # Handle git submodules yourself | ||
18 | git: | ||
19 | submodules: false | ||
20 | # Use sed to replace the SSH URL with the public URL, then initialize submodules | ||
21 | before_install: | ||
22 | - git submodule update --init --recursive | ||
16 | install: | 23 | install: |
17 | - echo do nothing | 24 | - echo do nothing |
18 | before_script: | 25 | before_script: |
19 | - travis_wait 60 npx lerna bootstrap | 26 | - travis_wait 60 npx lerna bootstrap |
20 | - npm install node-sass -g | 27 | - npm install node-sass -g |
21 | script: | 28 | script: |
22 | - npm run test | ||
23 | - travis_wait 30 npm run build | 29 | - travis_wait 30 npm run build |
24 | cache: npm | 30 | cache: npm |
25 | 31 | ||
@@ -4,14 +4,67 @@ | |||
4 | 4 | ||
5 | # Ferdi | 5 | # Ferdi |
6 | 6 | ||
7 | [![Backers on Open Collective](https://opencollective.com/getferdi/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/getferdi/sponsors/badge.svg)](#sponsors) [![Build Status Windows](https://ci.appveyor.com/api/projects/status/2ckfbmoxp36fye5b?svg=true)](https://ci.appveyor.com/project/kytwb/ferdi) | 7 | <p align="center"> |
8 | [![Build Status Mac & Linux](https://travis-ci.org/getferdi/ferdi.svg?branch=master)](https://travis-ci.org/getferdi/ferdi) | 8 | <a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a> |
9 | <a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a> | ||
10 | <a href="https://ci.appveyor.com/project/kytwb/ferdi"><img alt="Build Status Windows" src="https://img.shields.io/appveyor/ci/kytwb/ferdi/master?logo=appveyor"></a> | ||
11 | <a href="https://travis-ci.org/getferdi/ferdi"><img alt="Build Status Mac & Linux" src="https://img.shields.io/travis/getferdi/ferdi/master?logo=travis"></a> | ||
12 | </p> | ||
9 | 13 | ||
10 | 🤴🽠Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones. | 14 | 🤴🽠Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones. |
11 | 15 | ||
16 | ### Table of contents | ||
17 | |||
18 | <details> | ||
19 | <summary>Ferdi</summary> | ||
20 | <ul> | ||
21 | <li><a href="#what-is-ferdi-">What is Ferdi ?</a></li> | ||
22 | <li><a href="#what-ferdi-looks-like-">What Ferdi looks like ?</a></li> | ||
23 | <li><a href="#download-ferdi">Download Ferdi</a> | ||
24 | <ul> | ||
25 | <li><a href="#or-use-homebrew-macos-only">Or use homebrew</a></li> | ||
26 | </ul> | ||
27 | </li> | ||
28 | <li><a href="#ferdi-specific-features">Ferdi-specific Features</a></li> | ||
29 | <li><a href="#development">Development</a></li> | ||
30 | <ul> | ||
31 | <li><a href="#install-os-dependencies">Install OS dependencies</a></li> | ||
32 | <li><a href="#clone-repository-with-submodule">Clone repository with submodule</a></li> | ||
33 | <li><a href="#install-dependencies">Install dependencies</a></li> | ||
34 | <li><a href="#fix-native-modules-to-match-current-electron-node-version">Fix native modules to match current electron node version</a></li> | ||
35 | <li><a href="#start-development-app">Start development app</a></li> | ||
36 | <li><a href="#packaging">Packaging</a></li> | ||
37 | <li><a href="#release">Release</a></li> | ||
38 | </ul> | ||
39 | <li><a href="#contributors-">Contributors ✨</a></li> | ||
40 | <li><a href="#backers-via-opencollective">Backers via OpenCollective</a></li> | ||
41 | <li><a href="#sponsors-via-opencollective">Sponsors via OpenCollective</a></li> | ||
42 | </ul> | ||
43 | </details> | ||
44 | |||
45 | ### What is Ferdi ? | ||
46 | |||
47 | Ferdi is a messaging browser that allows you to combine your favorite messaging services into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additonal 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). | ||
48 | |||
49 | ### What Ferdi looks like ? | ||
50 | |||
51 | <details> | ||
52 | <summary>Screenshots</summary> | ||
53 | <p align="center"> | ||
54 | <img alt="Keep all your messaging services in one place." src="./branding/screenshots/hero.png"> | ||
55 | <em>"Keep all your messaging services in one place."</em> | ||
56 | <img alt="Order your services with Ferdi Workspaces." src="./branding/screenshots/workspaces.png"> | ||
57 | <em>"Order your services with Ferdi Workspaces."</em> | ||
58 | <img alt="Always keep your Todo list open with Ferdi Todos." src="./branding/screenshots/todos.png"> | ||
59 | <em>"Always keep your Todo list open with Ferdi Todos."</em> | ||
60 | <img alt="Supporting all your services." src="./branding/screenshots/service-store.png"> | ||
61 | <em>"Supporting all your services."</em> | ||
62 | </p> | ||
63 | </details> | ||
64 | |||
12 | ## Download Ferdi | 65 | ## Download Ferdi |
13 | 66 | ||
14 | You can find the installers in the [latest release](https://github.com/getferdi/ferdi/releases) assets. | 67 | You can find the installers 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). |
15 | 68 | ||
16 | ### Or use homebrew (macOS only) | 69 | ### Or use homebrew (macOS only) |
17 | 70 | ||
@@ -19,6 +72,16 @@ You can find the installers in the [latest release](https://github.com/getferdi/ | |||
19 | 72 | ||
20 | (Don't know homebrew? [brew.sh](https://brew.sh/)) | 73 | (Don't know homebrew? [brew.sh](https://brew.sh/)) |
21 | 74 | ||
75 | ### Or use AUR (Arch Linux) | ||
76 | |||
77 | Ferdi has two seperate AUR packages you can use: | ||
78 | - **ferdi-build**: Uses your debian build and extracts it to Arch | ||
79 | - **ferdi-git**: Uses system electron version | ||
80 | |||
81 | If you use a AUR Helper e.g. yay, simply install it via ´yay -S ferdi-bin´ | ||
82 | |||
83 | `ferdi-git` may not work on all systems so we advice you to use `ferdi-bin` instead. | ||
84 | |||
22 | ## Ferdi-specific Features | 85 | ## Ferdi-specific Features |
23 | 86 | ||
24 | - [x] Removes the counter-productive fullscreen app delay inviting users to upgrade | 87 | - [x] Removes the counter-productive fullscreen app delay inviting users to upgrade |
@@ -33,6 +96,7 @@ You can find the installers in the [latest release](https://github.com/getferdi/ | |||
33 | - [x] Add Password Lock feature to keep your messages protected ([#41](https://github.com/getferdi/ferdi/issues/41), [franz#810](https://github.com/meetfranz/franz/issues/810), [franz#950](https://github.com/meetfranz/franz/issues/950), [franz#1430](https://github.com/meetfranz/franz/issues/1430)) | 96 | - [x] Add Password Lock feature to keep your messages protected ([#41](https://github.com/getferdi/ferdi/issues/41), [franz#810](https://github.com/meetfranz/franz/issues/810), [franz#950](https://github.com/meetfranz/franz/issues/950), [franz#1430](https://github.com/meetfranz/franz/issues/1430)) |
34 | - [x] Add an option to keep individual workspaces always loaded ([#37](https://github.com/getferdi/ferdi/issues/37)) | 97 | - [x] Add an option to keep individual workspaces always loaded ([#37](https://github.com/getferdi/ferdi/issues/37)) |
35 | - [x] Add universal Dark-Mode via the [DarkReader extension](https://github.com/darkreader/darkreader) ([#71](https://github.com/getferdi/ferdi/issues/71)) | 98 | - [x] Add universal Dark-Mode via the [DarkReader extension](https://github.com/darkreader/darkreader) ([#71](https://github.com/getferdi/ferdi/issues/71)) |
99 | - [x] Add adaptable Dark Mode that will respect the system's darkmode setting ([#173](https://github.com/getferdi/ferdi/issues/173)) | ||
36 | - [x] Add an option to auto-hide the menubar ([#7](https://github.com/getferdi/ferdi/issues/7), [franz#833](https://github.com/meetfranz/franz/issues/833)) | 100 | - [x] Add an option to auto-hide the menubar ([#7](https://github.com/getferdi/ferdi/issues/7), [franz#833](https://github.com/meetfranz/franz/issues/833)) |
37 | - [x] Add "Quick Switch" feature to help you navigate a long list of services (similar to Rambox's [Quick Switcher](https://rambox.pro/#feature-details/quick_switcher)) | 101 | - [x] Add "Quick Switch" feature to help you navigate a long list of services (similar to Rambox's [Quick Switcher](https://rambox.pro/#feature-details/quick_switcher)) |
38 | - [x] Add "Service Hibernation" that will automatically unload services when they are unused | 102 | - [x] Add "Service Hibernation" that will automatically unload services when they are unused |
@@ -44,7 +108,7 @@ You can find the installers in the [latest release](https://github.com/getferdi/ | |||
44 | - [x] Add Process Manager to find services using a lot of resources | 108 | - [x] Add Process Manager to find services using a lot of resources |
45 | - [x] Add "npm run prepare-code" command for development to lint and beautify code | 109 | - [x] Add "npm run prepare-code" command for development to lint and beautify code |
46 | - [x] Add button to open darkmode.css for a service | 110 | - [x] Add button to open darkmode.css for a service |
47 | - [x] Switch to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) ti improve application size | 111 | - [x] Switch to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size |
48 | - [x] Improve "About Ferdi" screen to better display versions | 112 | - [x] Improve "About Ferdi" screen to better display versions |
49 | - [x] Minifying build files to improve app size | 113 | - [x] Minifying build files to improve app size |
50 | - [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/getferdi/ferdi/wiki/Custom-Todo) | 114 | - [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/getferdi/ferdi/wiki/Custom-Todo) |
@@ -53,38 +117,35 @@ You can find the installers in the [latest release](https://github.com/getferdi/ | |||
53 | 117 | ||
54 | ## Development | 118 | ## Development |
55 | 119 | ||
56 | ### Preparations | 120 | ### Install OS dependencies |
57 | |||
58 | #### Install OS dependencies | ||
59 | 121 | ||
60 | ##### Node.js | 122 | #### Node.js |
61 | 123 | ||
62 | Please make sure you are running NodeJS v10 ([v10.16.3](https://nodejs.org/dist/v10.16.3/) suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278). | 124 | Please make sure you are running NodeJS v10 ([v10.16.3](https://nodejs.org/dist/v10.16.3/) suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278). |
63 | 125 | ||
64 | ##### Git | 126 | #### Git |
65 | 127 | ||
66 | The 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. | 128 | The 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. |
67 | 129 | ||
68 | ##### Debian/Ubuntu | 130 | #### Debian/Ubuntu |
69 | 131 | ||
70 | ```bash | 132 | ```bash |
71 | $ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev | 133 | $ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev |
72 | ``` | 134 | ``` |
73 | 135 | ||
74 | ##### Fedora | 136 | #### Fedora |
75 | 137 | ||
76 | ```bash | 138 | ```bash |
77 | $ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel | 139 | $ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel |
78 | ``` | 140 | ``` |
79 | 141 | ||
80 | ##### Windows | 142 | #### Windows |
81 | 143 | ||
82 | ```bash | 144 | ```bash |
83 | $ npm install --global windows-build-tools // Windows 10 | 145 | $ npm install --global windows-build-tools --vs2015 |
84 | $ npm install --global windows-build-tools --vs2015 // Windows 7 | ||
85 | ``` | 146 | ``` |
86 | 147 | ||
87 | #### Clone repository with submodule | 148 | ### Clone repository with submodule |
88 | 149 | ||
89 | ```bash | 150 | ```bash |
90 | $ git clone https://github.com/getferdi/ferdi.git | 151 | $ git clone https://github.com/getferdi/ferdi.git |
@@ -145,34 +206,40 @@ When pushing a new tag, the CI builds will create a draft GitHub release and upl | |||
145 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): | 206 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): |
146 | 207 | ||
147 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | 208 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
148 | <!-- prettier-ignore-start --> | 209 | <!-- prettier-ignore --> |
149 | <!-- markdownlint-disable --> | ||
150 | <table> | 210 | <table> |
151 | <tr> | 211 | <tr> |
152 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt="Bennett"/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=vantezzen" title="Code">💻</a> <a href="#design-vantezzen" title="Design">🎨</a> <a href="https://github.com/kytwb/ferdi/commits?author=vantezzen" title="Documentation">📖</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">🤔</a> <a href="#translation-vantezzen" title="Translation">ðŸŒ</a> <a href="#example-vantezzen" title="Examples">💡</a> <a href="https://github.com/kytwb/ferdi/issues?q=author%3Avantezzen" title="Bug reports">ðŸ›</a> <a href="#content-vantezzen" title="Content">🖋</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-vantezzen" title="User Testing">📓</a> <a href="#question-vantezzen" title="Answering Questions">💬</a> <a href="#projectManagement-vantezzen" title="Project Management">📆</a> <a href="#review-vantezzen" title="Reviewed Pull Requests">👀</a></td> | 212 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt="Bennett"/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Code">💻</a> <a href="#design-vantezzen" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Documentation">📖</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">🤔</a> <a href="#translation-vantezzen" title="Translation">ðŸŒ</a> <a href="#example-vantezzen" title="Examples">💡</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Avantezzen" title="Bug reports">ðŸ›</a> <a href="#content-vantezzen" title="Content">🖋</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-vantezzen" title="User Testing">📓</a> <a href="#question-vantezzen" title="Answering Questions">💬</a> <a href="#projectManagement-vantezzen" title="Project Management">📆</a> <a href="#review-vantezzen" title="Reviewed Pull Requests">👀</a></td> |
153 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt="Stefan Malzner"/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Code">💻</a> <a href="#content-adlk" title="Content">🖋</a> <a href="#design-adlk" title="Design">🎨</a> <a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Documentation">📖</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#projectManagement-adlk" title="Project Management">📆</a> <a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Tests">âš ï¸</a> <a href="#translation-adlk" title="Translation">ðŸŒ</a></td> | 213 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt="Stefan Malzner"/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Code">💻</a> <a href="#content-adlk" title="Content">🖋</a> <a href="#design-adlk" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Documentation">📖</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#projectManagement-adlk" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Tests">âš ï¸</a> <a href="#translation-adlk" title="Translation">ðŸŒ</a></td> |
154 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt="Amine Mouafik"/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="#question-kytwb" title="Answering Questions">💬</a> <a href="https://github.com/kytwb/ferdi/commits?author=kytwb" title="Code">💻</a> <a href="https://github.com/kytwb/ferdi/commits?author=kytwb" title="Documentation">📖</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-kytwb" title="Maintenance">🚧</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">📦</a> <a href="#projectManagement-kytwb" title="Project Management">📆</a> <a href="#review-kytwb" title="Reviewed Pull Requests">👀</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#fundingFinding-kytwb" title="Funding Finding">ðŸ”</a></td> | 214 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt="Amine Mouafik"/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="#question-kytwb" title="Answering Questions">💬</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Documentation">📖</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-kytwb" title="Maintenance">🚧</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">📦</a> <a href="#projectManagement-kytwb" title="Project Management">📆</a> <a href="#review-kytwb" title="Reviewed Pull Requests">👀</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#fundingFinding-kytwb" title="Funding Finding">ðŸ”</a> <a href="#blog-kytwb" title="Blogposts">ðŸ“</a></td> |
155 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt="ZeroCool"/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=ZeroCool940711" title="Code">💻</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">🤔</a></td> | 215 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt="ZeroCool"/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=ZeroCool940711" title="Code">💻</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">🤔</a></td> |
156 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt="rseitbekov"/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=rseitbekov" title="Code">💻</a></td> | 216 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt="rseitbekov"/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=rseitbekov" title="Code">💻</a></td> |
157 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt="Peter Bittner"/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/kytwb/ferdi/issues?q=author%3Abittner" title="Bug reports">ðŸ›</a></td> | 217 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt="Peter Bittner"/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Abittner" title="Bug reports">ðŸ›</a></td> |
158 | </tr> | 218 | </tr> |
159 | <tr> | 219 | <tr> |
160 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt="Justus Saul"/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">ðŸ›</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">🤔</a></td> | 220 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt="Justus Saul"/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">ðŸ›</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">🤔</a></td> |
161 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt="igreil"/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">🤔</a></td> | 221 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt="igreil"/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">🤔</a></td> |
162 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt="Marco Lopes"/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">🤔</a></td> | 222 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt="Marco Lopes"/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">🤔</a></td> |
163 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt="dayzlun"/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/issues?q=author%3Adayzlun" title="Bug reports">ðŸ›</a></td> | 223 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt="dayzlun"/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adayzlun" title="Bug reports">ðŸ›</a></td> |
164 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt="Tobias Günther"/><br /><sub><b>Tobias Günther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">🤔</a></td> | 224 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt="Tobias Günther"/><br /><sub><b>Tobias Günther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">🤔</a></td> |
165 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt="AGCaesar"/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">📦</a></td> | 225 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt="AGCaesar"/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">📦</a></td> |
166 | </tr> | 226 | </tr> |
167 | <tr> | 227 | <tr> |
168 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt="Makazzz"/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/issues?q=author%3AMakazzz" title="Bug reports">ðŸ›</a> <a href="https://github.com/kytwb/ferdi/commits?author=Makazzz" title="Code">💻</a> <a href="#translation-Makazzz" title="Translation">ðŸŒ</a></td> | 228 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt="Makazzz"/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3AMakazzz" title="Bug reports">ðŸ›</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Code">💻</a> <a href="#translation-Makazzz" title="Translation">ðŸŒ</a> <a href="#content-Makazzz" title="Content">🖋</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Documentation">📖</a> <a href="#platform-Makazzz" title="Packaging/porting to new platform">📦</a></td> |
169 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt="xthursdayx"/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=xthursdayx" title="Code">💻</a> <a href="https://github.com/kytwb/ferdi/commits?author=xthursdayx" title="Documentation">📖</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">📦</a></td> | 229 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt="xthursdayx"/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Documentation">📖</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">📦</a></td> |
230 | <td align="center"><a href="https://github.com/Gaboris"><img src="https://avatars2.githubusercontent.com/u/9462372?v=4" width="40px;" alt="Gaboris"/><br /><sub><b>Gaboris</b></sub></a><br /><a href="#question-Gaboris" title="Answering Questions">💬</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AGaboris" title="Bug reports">ðŸ›</a></td> | ||
231 | <td align="center"><a href="http://www.cu3ed.com/"><img src="https://avatars1.githubusercontent.com/u/61343?v=4" width="40px;" alt="Ce"/><br /><sub><b>Ce</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aincace" title="Bug reports">ðŸ›</a></td> | ||
232 | <td align="center"><a href="http://pztrn.name/"><img src="https://avatars1.githubusercontent.com/u/869402?v=4" width="40px;" alt="Stanislav N."/><br /><sub><b>Stanislav N.</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Apztrn" title="Bug reports">ðŸ›</a></td> | ||
233 | <td align="center"><a href="http://www.patrickcurl.com"><img src="https://avatars1.githubusercontent.com/u/1470061?v=4" width="40px;" alt="Patrick Curl"/><br /><sub><b>Patrick Curl</b></sub></a><br /><a href="#ideas-patrickcurl" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
234 | </tr> | ||
235 | <tr> | ||
236 | <td align="center"><a href="https://github.com/Stanzilla"><img src="https://avatars3.githubusercontent.com/u/75278?v=4" width="40px;" alt="Benjamin Staneck"/><br /><sub><b>Benjamin Staneck</b></sub></a><br /><a href="#design-Stanzilla" title="Design">🎨</a></td> | ||
237 | <td align="center"><a href="https://github.com/ammarmalhas"><img src="https://avatars1.githubusercontent.com/u/57057209?v=4" width="40px;" alt="ammarmalhas"/><br /><sub><b>ammarmalhas</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aammarmalhas" title="Bug reports">ðŸ›</a> <a href="#security-ammarmalhas" title="Security">🛡ï¸</a></td> | ||
238 | <td align="center"><a href="https://github.com/steliyan"><img src="https://avatars1.githubusercontent.com/u/1850292?v=4" width="40px;" alt="Steliyan Stoyanov"/><br /><sub><b>Steliyan Stoyanov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=steliyan" title="Code">💻</a> <a href="#ideas-steliyan" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
239 | <td align="center"><a href="https://github.com/brorbw"><img src="https://avatars2.githubusercontent.com/u/5909562?v=4" width="40px;" alt="Bror Winther"/><br /><sub><b>Bror Winther</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=brorbw" title="Documentation">📖</a></td> | ||
170 | </tr> | 240 | </tr> |
171 | </table> | 241 | </table> |
172 | 242 | ||
173 | <!-- markdownlint-enable --> | ||
174 | <!-- prettier-ignore-end --> | ||
175 | |||
176 | <!-- ALL-CONTRIBUTORS-LIST:END --> | 243 | <!-- ALL-CONTRIBUTORS-LIST:END --> |
177 | 244 | ||
178 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | 245 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
@@ -187,4 +254,8 @@ This project follows the [all-contributors](https://github.com/all-contributors/ | |||
187 | 254 | ||
188 | ## Backers via OpenCollective | 255 | ## Backers via OpenCollective |
189 | 256 | ||
190 | <a href="https://opencollective.com/getferdi#backers" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?width=890"></a> | 257 | <a href="https://opencollective.com/getferdi#section-contribute" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?width=890"></a> |
258 | |||
259 | ## Sponsors via OpenCollective | ||
260 | |||
261 | <a href="https://opencollective.com/getferdi#section-contribute" target="_blank"><img src="https://opencollective.com/getferdi/sponsors.svg?width=890"></a> | ||
diff --git a/appveyor.yml b/appveyor.yml index 1034565ed..c367baeb3 100644 --- a/appveyor.yml +++ b/appveyor.yml | |||
@@ -1,7 +1,7 @@ | |||
1 | environment: | 1 | environment: |
2 | APPVEYOR_CACHE_SKIP_RESTORE: true | 2 | APPVEYOR_CACHE_SKIP_RESTORE: true |
3 | 3 | ||
4 | version: 5.0.1.{build} | 4 | version: 5.4.0.{build} |
5 | 5 | ||
6 | install: | 6 | install: |
7 | - git submodule update --init --recursive | 7 | - git submodule update --init --recursive |
@@ -13,7 +13,7 @@ cache: | |||
13 | 13 | ||
14 | before_build: | 14 | before_build: |
15 | - npm run lint | 15 | - npm run lint |
16 | - npm run test | 16 | - cmd: set NODE_ENV=production |
17 | 17 | ||
18 | build_script: | 18 | build_script: |
19 | - npm run build | 19 | - npm run build |
diff --git a/branding/screenshots/hero.png b/branding/screenshots/hero.png index f21e2abb6..09f509ca7 100644 --- a/branding/screenshots/hero.png +++ b/branding/screenshots/hero.png | |||
Binary files differ | |||
diff --git a/build-helpers/images/win-app-ico.ico b/build-helpers/images/win-app-ico.ico index 658826324..3731f6425 100644 --- a/build-helpers/images/win-app-ico.ico +++ b/build-helpers/images/win-app-ico.ico | |||
Binary files differ | |||
diff --git a/electron-builder.yml b/electron-builder.yml index f6dceabce..4fa6c0b15 100644 --- a/electron-builder.yml +++ b/electron-builder.yml | |||
@@ -43,6 +43,7 @@ linux: | |||
43 | - target: AppImage | 43 | - target: AppImage |
44 | - target: deb | 44 | - target: deb |
45 | - target: tar.gz | 45 | - target: tar.gz |
46 | - target: rpm | ||
46 | 47 | ||
47 | nsis: | 48 | nsis: |
48 | perMachine: false | 49 | perMachine: false |
diff --git a/next_release.md b/next_release.md new file mode 100644 index 000000000..ae472bce9 --- /dev/null +++ b/next_release.md | |||
@@ -0,0 +1,47 @@ | |||
1 | # Next release | ||
2 | Infos about the next release: | ||
3 | |||
4 | ## Beta | ||
5 | v5.4.0-beta.5: | ||
6 | - Updated translations | ||
7 | - Remove "&" sign from window menu bar (#65) | ||
8 | - Extend debug information | ||
9 | - Use SSH for submodules | ||
10 | - Move hibernation indicator to bottom left (#129 (comment)) | ||
11 | - Add fix for 1.1.1.1 hack (#146) | ||
12 | - Fix darkmode not loading correctly (#158) | ||
13 | - Add adaptable Dark Mode that will respect the system's darkmode setting ([#173](https://github.com/getferdi/ferdi/issues/173)) | ||
14 | |||
15 | ## Minor | ||
16 | v5.4.0 | ||
17 | |||
18 | ### Features | ||
19 | - **Merge Franz 5.4.0** | ||
20 | - **Use Ferdi without an Account**: Simply choose "Use Ferdi without an Account" on the login screen | ||
21 | - **Accent color**: Change Ferdi's accent color | ||
22 | - **Darkmode**: | ||
23 | - Easily open and edit any service's `darkmode.css` through the new "Open darkmode.css" button | ||
24 | - Add adaptable Dark Mode that will respect the system's darkmode setting ([#173](https://github.com/getferdi/ferdi/issues/173) - @steliyan) | ||
25 | - **Hibernation**: Activate service hibernation to save battery | ||
26 | - **Smaller file size**: Ferdi is now 17% smaller | ||
27 | - **Annoucements**: Always get notified about the latest features of Ferdi | ||
28 | - **Navigation bar**: Add option to always show a service navigation bar | ||
29 | |||
30 | ### Minor changes | ||
31 | - Sorting applications in QuickSwitch by last used | ||
32 | - Add info about teams only being available on Franz servers | ||
33 | - Add toggle to disable dark mode on per-service basis | ||
34 | - Add toggle to disable universal Dark Mode | ||
35 | - Improve switching between accounts | ||
36 | - Extend debug information | ||
37 | - Add fix for 1.1.1.1 hack (#146) | ||
38 | |||
39 | ### Bug fixes | ||
40 | - Fix universal darkmode for WhatsApp and Threema QR Codes | ||
41 | - Fix darkmode not activating on reload | ||
42 | - Fix disabling/enabling service not correctly reloading webview (#116) | ||
43 | - Remove "&" sign from window menu bar (#65) | ||
44 | |||
45 | ### Changes in building Ferdi | ||
46 | - Update Building Node Version | ||
47 | - Use SSH for submodules \ No newline at end of file | ||
diff --git a/package-lock.json b/package-lock.json index 2cbbe8939..c84c1afbc 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "version": "5.4.0-beta.2", | 3 | "version": "5.4.0-beta.5", |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
@@ -3071,14 +3071,6 @@ | |||
3071 | "version": "3.9.97", | 3071 | "version": "3.9.97", |
3072 | "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz", | 3072 | "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz", |
3073 | "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw==" | 3073 | "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw==" |
3074 | }, | ||
3075 | "@meetfranz/theme": { | ||
3076 | "version": "1.0.14", | ||
3077 | "resolved": "https://registry.npmjs.org/@meetfranz/theme/-/theme-1.0.14.tgz", | ||
3078 | "integrity": "sha512-iWP+3ifiNum98sHKiNdUJK+R0p4Z7TT8OenA1N2BnSC6CFob+dLhzAK+o5lxcyEcKZKYDwd7JKRZj93wqpBPpg==", | ||
3079 | "requires": { | ||
3080 | "color": "^3.1.0" | ||
3081 | } | ||
3082 | } | 3074 | } |
3083 | } | 3075 | } |
3084 | }, | 3076 | }, |
@@ -3101,14 +3093,6 @@ | |||
3101 | "version": "3.9.97", | 3093 | "version": "3.9.97", |
3102 | "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz", | 3094 | "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz", |
3103 | "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw==" | 3095 | "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw==" |
3104 | }, | ||
3105 | "@meetfranz/theme": { | ||
3106 | "version": "1.0.14", | ||
3107 | "resolved": "https://registry.npmjs.org/@meetfranz/theme/-/theme-1.0.14.tgz", | ||
3108 | "integrity": "sha512-iWP+3ifiNum98sHKiNdUJK+R0p4Z7TT8OenA1N2BnSC6CFob+dLhzAK+o5lxcyEcKZKYDwd7JKRZj93wqpBPpg==", | ||
3109 | "requires": { | ||
3110 | "color": "^3.1.0" | ||
3111 | } | ||
3112 | } | 3096 | } |
3113 | } | 3097 | } |
3114 | }, | 3098 | }, |
@@ -3229,6 +3213,136 @@ | |||
3229 | "universal-user-agent": "^4.0.0" | 3213 | "universal-user-agent": "^4.0.0" |
3230 | } | 3214 | } |
3231 | }, | 3215 | }, |
3216 | "@sentry/browser": { | ||
3217 | "version": "4.6.6", | ||
3218 | "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-4.6.6.tgz", | ||
3219 | "integrity": "sha512-+9VsQ+oQYU+PYlLJG2ex7JCMSVQbnUvWPI2uZOofWdI9sWIPUub3boWItMzRQNQ1T4S3FZd4FqAWNFd3azdnBw==", | ||
3220 | "requires": { | ||
3221 | "@sentry/core": "4.6.6", | ||
3222 | "@sentry/types": "4.5.3", | ||
3223 | "@sentry/utils": "4.6.5", | ||
3224 | "tslib": "^1.9.3" | ||
3225 | } | ||
3226 | }, | ||
3227 | "@sentry/core": { | ||
3228 | "version": "4.6.6", | ||
3229 | "resolved": "https://registry.npmjs.org/@sentry/core/-/core-4.6.6.tgz", | ||
3230 | "integrity": "sha512-7z9HKLTNr3zVBR3tBRheTxkkkuK2IqISUc5Iyo3crN2OecOLtpptT96f5XjLndBEL2ab39eCBPpA5OFjbpzrIA==", | ||
3231 | "requires": { | ||
3232 | "@sentry/hub": "4.6.5", | ||
3233 | "@sentry/minimal": "4.6.5", | ||
3234 | "@sentry/types": "4.5.3", | ||
3235 | "@sentry/utils": "4.6.5", | ||
3236 | "tslib": "^1.9.3" | ||
3237 | } | ||
3238 | }, | ||
3239 | "@sentry/electron": { | ||
3240 | "version": "0.17.4", | ||
3241 | "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-0.17.4.tgz", | ||
3242 | "integrity": "sha512-1IU0o+E8eY5Lrthj6Pqf+Dh8MptddHsFFmcOwKlft/bbZ+6RTKEefLtFOclKUMLR64C7GTqa80Yddq0ssjOv5w==", | ||
3243 | "requires": { | ||
3244 | "@sentry/browser": "4.6.2 || ~4.6.4", | ||
3245 | "@sentry/core": "4.6.2 || ~4.6.4", | ||
3246 | "@sentry/minimal": "^4.5.0", | ||
3247 | "@sentry/node": "4.6.2 || ~4.6.4", | ||
3248 | "@sentry/types": "^4.5.0", | ||
3249 | "@sentry/utils": "4.6.2 || ~4.6.4", | ||
3250 | "electron-fetch": "1.3.0", | ||
3251 | "form-data": "2.3.2", | ||
3252 | "util.promisify": "1.0.0" | ||
3253 | }, | ||
3254 | "dependencies": { | ||
3255 | "combined-stream": { | ||
3256 | "version": "1.0.6", | ||
3257 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", | ||
3258 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", | ||
3259 | "requires": { | ||
3260 | "delayed-stream": "~1.0.0" | ||
3261 | } | ||
3262 | }, | ||
3263 | "form-data": { | ||
3264 | "version": "2.3.2", | ||
3265 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", | ||
3266 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", | ||
3267 | "requires": { | ||
3268 | "asynckit": "^0.4.0", | ||
3269 | "combined-stream": "1.0.6", | ||
3270 | "mime-types": "^2.1.12" | ||
3271 | } | ||
3272 | } | ||
3273 | } | ||
3274 | }, | ||
3275 | "@sentry/hub": { | ||
3276 | "version": "4.6.5", | ||
3277 | "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-4.6.5.tgz", | ||
3278 | "integrity": "sha512-v9vee8s8C1fK/DPtNOzv6r+AMbPDOWfnasouNcBUkbQUSN5wUNyCDvt51QbWaw5kMMY5TSqjdVqY6gXQZI0APQ==", | ||
3279 | "requires": { | ||
3280 | "@sentry/types": "4.5.3", | ||
3281 | "@sentry/utils": "4.6.5", | ||
3282 | "tslib": "^1.9.3" | ||
3283 | } | ||
3284 | }, | ||
3285 | "@sentry/minimal": { | ||
3286 | "version": "4.6.5", | ||
3287 | "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-4.6.5.tgz", | ||
3288 | "integrity": "sha512-tf+J+uUNmSgzC7d9JSN8Ekw1HeBAX87Efa/jyFbzLvaw80oibvTiLSLqDjQ9PgvyIzBUuuPImkS2NpvPQGWFtg==", | ||
3289 | "requires": { | ||
3290 | "@sentry/hub": "4.6.5", | ||
3291 | "@sentry/types": "4.5.3", | ||
3292 | "tslib": "^1.9.3" | ||
3293 | } | ||
3294 | }, | ||
3295 | "@sentry/node": { | ||
3296 | "version": "4.6.6", | ||
3297 | "resolved": "https://registry.npmjs.org/@sentry/node/-/node-4.6.6.tgz", | ||
3298 | "integrity": "sha512-+zZHE2uOwQTgypP6N9oBd0Io6BKXaJh6mdmZBauF0G46/8V28sBQ/dXBtJJNZ8tW7eVlLGpLSGuJb9Ai7c/rNw==", | ||
3299 | "requires": { | ||
3300 | "@sentry/core": "4.6.6", | ||
3301 | "@sentry/hub": "4.6.5", | ||
3302 | "@sentry/types": "4.5.3", | ||
3303 | "@sentry/utils": "4.6.5", | ||
3304 | "@types/stack-trace": "0.0.29", | ||
3305 | "cookie": "0.3.1", | ||
3306 | "https-proxy-agent": "2.2.1", | ||
3307 | "lru_map": "0.3.3", | ||
3308 | "lsmod": "1.0.0", | ||
3309 | "stack-trace": "0.0.10", | ||
3310 | "tslib": "^1.9.3" | ||
3311 | }, | ||
3312 | "dependencies": { | ||
3313 | "debug": { | ||
3314 | "version": "3.2.6", | ||
3315 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", | ||
3316 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", | ||
3317 | "requires": { | ||
3318 | "ms": "^2.1.1" | ||
3319 | } | ||
3320 | }, | ||
3321 | "https-proxy-agent": { | ||
3322 | "version": "2.2.1", | ||
3323 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", | ||
3324 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", | ||
3325 | "requires": { | ||
3326 | "agent-base": "^4.1.0", | ||
3327 | "debug": "^3.1.0" | ||
3328 | } | ||
3329 | } | ||
3330 | } | ||
3331 | }, | ||
3332 | "@sentry/types": { | ||
3333 | "version": "4.5.3", | ||
3334 | "resolved": "https://registry.npmjs.org/@sentry/types/-/types-4.5.3.tgz", | ||
3335 | "integrity": "sha512-7ll1PAFNjrBNX9rzy3P2qAQrpQwHaDO3uKj735qsnGw34OtAS8Xr8WYrjI14f9fMPa/XIeWvMPb4GMic28V/ag==" | ||
3336 | }, | ||
3337 | "@sentry/utils": { | ||
3338 | "version": "4.6.5", | ||
3339 | "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-4.6.5.tgz", | ||
3340 | "integrity": "sha512-rTISJtRRbWsd3UE+TkA3QG1C0VzPKPW8w74tieBwYhtTCGmOHNwz2nDC/MZGbGj4OgDmNKKl4CCyQr88EX08hA==", | ||
3341 | "requires": { | ||
3342 | "@sentry/types": "4.5.3", | ||
3343 | "tslib": "^1.9.3" | ||
3344 | } | ||
3345 | }, | ||
3232 | "@sindresorhus/is": { | 3346 | "@sindresorhus/is": { |
3233 | "version": "0.14.0", | 3347 | "version": "0.14.0", |
3234 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", | 3348 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", |
@@ -3456,6 +3570,11 @@ | |||
3456 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.2.tgz", | 3570 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.2.tgz", |
3457 | "integrity": "sha512-G1Ggy7/9Nsa1Jt2yiBR2riEuyK2DFNnqow6R7cromXPMNynackRY1vqFTLz/gwnef1LHokbXThcPhqMRjUbkpQ==" | 3571 | "integrity": "sha512-G1Ggy7/9Nsa1Jt2yiBR2riEuyK2DFNnqow6R7cromXPMNynackRY1vqFTLz/gwnef1LHokbXThcPhqMRjUbkpQ==" |
3458 | }, | 3572 | }, |
3573 | "@types/stack-trace": { | ||
3574 | "version": "0.0.29", | ||
3575 | "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", | ||
3576 | "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==" | ||
3577 | }, | ||
3459 | "@types/stack-utils": { | 3578 | "@types/stack-utils": { |
3460 | "version": "1.0.1", | 3579 | "version": "1.0.1", |
3461 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", | 3580 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", |
@@ -3820,7 +3939,6 @@ | |||
3820 | "version": "4.3.0", | 3939 | "version": "4.3.0", |
3821 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", | 3940 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", |
3822 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", | 3941 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", |
3823 | "dev": true, | ||
3824 | "requires": { | 3942 | "requires": { |
3825 | "es6-promisify": "^5.0.0" | 3943 | "es6-promisify": "^5.0.0" |
3826 | } | 3944 | } |
@@ -7529,7 +7647,6 @@ | |||
7529 | "version": "1.1.3", | 7647 | "version": "1.1.3", |
7530 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", | 7648 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", |
7531 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", | 7649 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", |
7532 | "dev": true, | ||
7533 | "requires": { | 7650 | "requires": { |
7534 | "object-keys": "^1.0.12" | 7651 | "object-keys": "^1.0.12" |
7535 | } | 7652 | } |
@@ -8946,7 +9063,6 @@ | |||
8946 | "version": "1.14.2", | 9063 | "version": "1.14.2", |
8947 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", | 9064 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", |
8948 | "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", | 9065 | "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", |
8949 | "dev": true, | ||
8950 | "requires": { | 9066 | "requires": { |
8951 | "es-to-primitive": "^1.2.0", | 9067 | "es-to-primitive": "^1.2.0", |
8952 | "function-bind": "^1.1.1", | 9068 | "function-bind": "^1.1.1", |
@@ -8964,7 +9080,6 @@ | |||
8964 | "version": "1.2.0", | 9080 | "version": "1.2.0", |
8965 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", | 9081 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", |
8966 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", | 9082 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", |
8967 | "dev": true, | ||
8968 | "requires": { | 9083 | "requires": { |
8969 | "is-callable": "^1.1.4", | 9084 | "is-callable": "^1.1.4", |
8970 | "is-date-object": "^1.0.1", | 9085 | "is-date-object": "^1.0.1", |
@@ -8994,14 +9109,12 @@ | |||
8994 | "es6-promise": { | 9109 | "es6-promise": { |
8995 | "version": "4.2.8", | 9110 | "version": "4.2.8", |
8996 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", | 9111 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", |
8997 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", | 9112 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" |
8998 | "dev": true | ||
8999 | }, | 9113 | }, |
9000 | "es6-promisify": { | 9114 | "es6-promisify": { |
9001 | "version": "5.0.0", | 9115 | "version": "5.0.0", |
9002 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", | 9116 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", |
9003 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", | 9117 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", |
9004 | "dev": true, | ||
9005 | "requires": { | 9118 | "requires": { |
9006 | "es6-promise": "^4.0.3" | 9119 | "es6-promise": "^4.0.3" |
9007 | } | 9120 | } |
@@ -11224,8 +11337,7 @@ | |||
11224 | "function-bind": { | 11337 | "function-bind": { |
11225 | "version": "1.1.1", | 11338 | "version": "1.1.1", |
11226 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | 11339 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |
11227 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", | 11340 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" |
11228 | "dev": true | ||
11229 | }, | 11341 | }, |
11230 | "functional-red-black-tree": { | 11342 | "functional-red-black-tree": { |
11231 | "version": "1.0.1", | 11343 | "version": "1.0.1", |
@@ -13397,7 +13509,6 @@ | |||
13397 | "version": "1.0.3", | 13509 | "version": "1.0.3", |
13398 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | 13510 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |
13399 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", | 13511 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", |
13400 | "dev": true, | ||
13401 | "requires": { | 13512 | "requires": { |
13402 | "function-bind": "^1.1.1" | 13513 | "function-bind": "^1.1.1" |
13403 | } | 13514 | } |
@@ -13458,8 +13569,7 @@ | |||
13458 | "has-symbols": { | 13569 | "has-symbols": { |
13459 | "version": "1.0.0", | 13570 | "version": "1.0.0", |
13460 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", | 13571 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", |
13461 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", | 13572 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" |
13462 | "dev": true | ||
13463 | }, | 13573 | }, |
13464 | "has-unicode": { | 13574 | "has-unicode": { |
13465 | "version": "2.0.1", | 13575 | "version": "2.0.1", |
@@ -14331,8 +14441,7 @@ | |||
14331 | "is-date-object": { | 14441 | "is-date-object": { |
14332 | "version": "1.0.1", | 14442 | "version": "1.0.1", |
14333 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", | 14443 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", |
14334 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", | 14444 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" |
14335 | "dev": true | ||
14336 | }, | 14445 | }, |
14337 | "is-descriptor": { | 14446 | "is-descriptor": { |
14338 | "version": "0.1.6", | 14447 | "version": "0.1.6", |
@@ -14525,7 +14634,6 @@ | |||
14525 | "version": "1.0.4", | 14634 | "version": "1.0.4", |
14526 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", | 14635 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", |
14527 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", | 14636 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", |
14528 | "dev": true, | ||
14529 | "requires": { | 14637 | "requires": { |
14530 | "has": "^1.0.1" | 14638 | "has": "^1.0.1" |
14531 | } | 14639 | } |
@@ -14556,7 +14664,6 @@ | |||
14556 | "version": "1.0.2", | 14664 | "version": "1.0.2", |
14557 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", | 14665 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", |
14558 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", | 14666 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", |
14559 | "dev": true, | ||
14560 | "requires": { | 14667 | "requires": { |
14561 | "has-symbols": "^1.0.0" | 14668 | "has-symbols": "^1.0.0" |
14562 | } | 14669 | } |
@@ -16513,6 +16620,16 @@ | |||
16513 | "es5-ext": "~0.10.2" | 16620 | "es5-ext": "~0.10.2" |
16514 | } | 16621 | } |
16515 | }, | 16622 | }, |
16623 | "lru_map": { | ||
16624 | "version": "0.3.3", | ||
16625 | "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", | ||
16626 | "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" | ||
16627 | }, | ||
16628 | "lsmod": { | ||
16629 | "version": "1.0.0", | ||
16630 | "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-1.0.0.tgz", | ||
16631 | "integrity": "sha1-mgD3bco26yP6BTUK/htYXUKZ5ks=" | ||
16632 | }, | ||
16516 | "macos-notification-state": { | 16633 | "macos-notification-state": { |
16517 | "version": "1.3.1", | 16634 | "version": "1.3.1", |
16518 | "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.1.tgz", | 16635 | "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.1.tgz", |
@@ -18555,8 +18672,7 @@ | |||
18555 | "object-inspect": { | 18672 | "object-inspect": { |
18556 | "version": "1.6.0", | 18673 | "version": "1.6.0", |
18557 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", | 18674 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", |
18558 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", | 18675 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" |
18559 | "dev": true | ||
18560 | }, | 18676 | }, |
18561 | "object-is": { | 18677 | "object-is": { |
18562 | "version": "1.0.1", | 18678 | "version": "1.0.1", |
@@ -18567,8 +18683,7 @@ | |||
18567 | "object-keys": { | 18683 | "object-keys": { |
18568 | "version": "1.1.1", | 18684 | "version": "1.1.1", |
18569 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", | 18685 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", |
18570 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", | 18686 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" |
18571 | "dev": true | ||
18572 | }, | 18687 | }, |
18573 | "object-visit": { | 18688 | "object-visit": { |
18574 | "version": "1.0.1", | 18689 | "version": "1.0.1", |
@@ -18617,7 +18732,6 @@ | |||
18617 | "version": "2.0.3", | 18732 | "version": "2.0.3", |
18618 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", | 18733 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", |
18619 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", | 18734 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", |
18620 | "dev": true, | ||
18621 | "requires": { | 18735 | "requires": { |
18622 | "define-properties": "^1.1.2", | 18736 | "define-properties": "^1.1.2", |
18623 | "es-abstract": "^1.5.1" | 18737 | "es-abstract": "^1.5.1" |
@@ -23134,7 +23248,6 @@ | |||
23134 | "version": "2.1.0", | 23248 | "version": "2.1.0", |
23135 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", | 23249 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", |
23136 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", | 23250 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", |
23137 | "dev": true, | ||
23138 | "requires": { | 23251 | "requires": { |
23139 | "define-properties": "^1.1.3", | 23252 | "define-properties": "^1.1.3", |
23140 | "function-bind": "^1.1.1" | 23253 | "function-bind": "^1.1.1" |
@@ -23144,7 +23257,6 @@ | |||
23144 | "version": "2.1.0", | 23257 | "version": "2.1.0", |
23145 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", | 23258 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", |
23146 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", | 23259 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", |
23147 | "dev": true, | ||
23148 | "requires": { | 23260 | "requires": { |
23149 | "define-properties": "^1.1.3", | 23261 | "define-properties": "^1.1.3", |
23150 | "function-bind": "^1.1.1" | 23262 | "function-bind": "^1.1.1" |
@@ -24738,7 +24850,6 @@ | |||
24738 | "version": "1.0.0", | 24850 | "version": "1.0.0", |
24739 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", | 24851 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", |
24740 | "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", | 24852 | "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", |
24741 | "dev": true, | ||
24742 | "requires": { | 24853 | "requires": { |
24743 | "define-properties": "^1.1.2", | 24854 | "define-properties": "^1.1.2", |
24744 | "object.getownpropertydescriptors": "^2.0.3" | 24855 | "object.getownpropertydescriptors": "^2.0.3" |
diff --git a/package.json b/package.json index 1198da4f6..fe4950776 100644 --- a/package.json +++ b/package.json | |||
@@ -2,7 +2,7 @@ | |||
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "productName": "Ferdi", | 3 | "productName": "Ferdi", |
4 | "appId": "com.kytwb.ferdi", | 4 | "appId": "com.kytwb.ferdi", |
5 | "version": "5.4.0-beta.4", | 5 | "version": "5.4.0", |
6 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", | 6 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", |
7 | "copyright": "kytwb", | 7 | "copyright": "kytwb", |
8 | "main": "index.js", | 8 | "main": "index.js", |
@@ -56,6 +56,7 @@ | |||
56 | "@meetfranz/forms": "file:packages/forms", | 56 | "@meetfranz/forms": "file:packages/forms", |
57 | "@meetfranz/theme": "file:packages/theme", | 57 | "@meetfranz/theme": "file:packages/theme", |
58 | "@meetfranz/ui": "file:packages/ui", | 58 | "@meetfranz/ui": "file:packages/ui", |
59 | "@sentry/electron": "0.17.4", | ||
59 | "address-rfc2822": "^2.0.1", | 60 | "address-rfc2822": "^2.0.1", |
60 | "atob": "2.1.2", | 61 | "atob": "2.1.2", |
61 | "auto-launch": "5.0.5", | 62 | "auto-launch": "5.0.5", |
diff --git a/recipes b/recipes | |||
Subproject 7aa76feba8bd94368d27bee556480313c636f94 | Subproject 922b980f941dfbae0181595d35fa4618d1714e7 | ||
diff --git a/src/api/apiBase.js b/src/api/apiBase.js index 561b025f0..85dd0f3df 100644 --- a/src/api/apiBase.js +++ b/src/api/apiBase.js | |||
@@ -6,25 +6,19 @@ import { | |||
6 | } from '../environment'; | 6 | } from '../environment'; |
7 | import { | 7 | import { |
8 | LOCAL_SERVER, | 8 | LOCAL_SERVER, |
9 | SERVER_NOT_LOADED, | ||
9 | } from '../config'; | 10 | } from '../config'; |
10 | 11 | ||
11 | const apiBase = () => { | 12 | const apiBase = (withVersion = true) => { |
12 | let url; | 13 | let url; |
13 | 14 | ||
14 | if (!window.ferdi | 15 | if (!window.ferdi |
15 | || !window.ferdi.stores.settings | 16 | || !window.ferdi.stores.settings |
16 | || !window.ferdi.stores.settings.all | 17 | || !window.ferdi.stores.settings.all |
17 | || !window.ferdi.stores.settings.all.app.server) { | 18 | || !window.ferdi.stores.settings.all.app.server) { |
18 | // Stores have not yet been loaded - send invalid URL to force a retry when stores are loaded | 19 | // Stores have not yet been loaded - return SERVER_NOT_LOADED to force a retry when stores are loaded |
19 | // "Why 1.1.1.1 as the default, invalid URL?" | 20 | return SERVER_NOT_LOADED; |
20 | // 1.1.1.1 is the server for Cloudflare's DNS service and will be the same across most networks. | 21 | } if (window.ferdi.stores.settings.all.app.server === LOCAL_SERVER) { |
21 | // Using a random IP could result in unwanted connections, using localhost could unwantedly | ||
22 | // connect to local develoment servers. | ||
23 | // 1.1.1.1 also sends a status 400 response for invalid routes. Other servers may return status 401 | ||
24 | // on some routes. This would result in Ferdi deleting its current authToken as it thinks it | ||
25 | // has gone invalid. | ||
26 | url = 'https://1.1.1.1'; | ||
27 | } else if (window.ferdi.stores.settings.all.app.server === LOCAL_SERVER) { | ||
28 | // Use URL for local server | 22 | // Use URL for local server |
29 | url = `http://127.0.0.1:${window.ferdi.stores.requests.localServerPort}`; | 23 | url = `http://127.0.0.1:${window.ferdi.stores.requests.localServerPort}`; |
30 | } else { | 24 | } else { |
@@ -32,7 +26,10 @@ const apiBase = () => { | |||
32 | url = window.ferdi.stores.settings.all.app.server; | 26 | url = window.ferdi.stores.settings.all.app.server; |
33 | } | 27 | } |
34 | 28 | ||
35 | return `${url}/${API_VERSION}`; | 29 | if (withVersion) { |
30 | return `${url}/${API_VERSION}`; | ||
31 | } | ||
32 | return url; | ||
36 | }; | 33 | }; |
37 | 34 | ||
38 | export default apiBase; | 35 | export default apiBase; |
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index a5d636b4e..627425948 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js | |||
@@ -14,8 +14,7 @@ import OrderModel from '../../models/Order'; | |||
14 | 14 | ||
15 | import { sleep } from '../../helpers/async-helpers'; | 15 | import { sleep } from '../../helpers/async-helpers'; |
16 | 16 | ||
17 | import { API } from '../../environment'; | 17 | import { RECIPES_PATH, SERVER_NOT_LOADED } from '../../config'; |
18 | import { RECIPES_PATH } from '../../config'; | ||
19 | import apiBase from '../apiBase'; | 18 | import apiBase from '../apiBase'; |
20 | import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; | 19 | import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; |
21 | 20 | ||
@@ -39,8 +38,6 @@ module.paths.unshift( | |||
39 | const { app } = remote; | 38 | const { app } = remote; |
40 | const { default: fetch } = remote.require('electron-fetch'); | 39 | const { default: fetch } = remote.require('electron-fetch'); |
41 | 40 | ||
42 | const SERVER_URL = API; | ||
43 | |||
44 | export default class ServerApi { | 41 | export default class ServerApi { |
45 | recipePreviews = []; | 42 | recipePreviews = []; |
46 | 43 | ||
@@ -121,6 +118,10 @@ export default class ServerApi { | |||
121 | } | 118 | } |
122 | 119 | ||
123 | async userInfo() { | 120 | async userInfo() { |
121 | if (apiBase() === SERVER_NOT_LOADED) { | ||
122 | throw new Error('Server not loaded'); | ||
123 | } | ||
124 | |||
124 | const request = await sendAuthRequest(`${apiBase()}/me`); | 125 | const request = await sendAuthRequest(`${apiBase()}/me`); |
125 | if (!request.ok) { | 126 | if (!request.ok) { |
126 | throw request; | 127 | throw request; |
@@ -163,6 +164,10 @@ export default class ServerApi { | |||
163 | 164 | ||
164 | // Services | 165 | // Services |
165 | async getServices() { | 166 | async getServices() { |
167 | if (apiBase() === SERVER_NOT_LOADED) { | ||
168 | throw new Error('Server not loaded'); | ||
169 | } | ||
170 | |||
166 | const request = await sendAuthRequest(`${apiBase()}/me/services`); | 171 | const request = await sendAuthRequest(`${apiBase()}/me/services`); |
167 | if (!request.ok) { | 172 | if (!request.ok) { |
168 | throw request; | 173 | throw request; |
@@ -287,6 +292,10 @@ export default class ServerApi { | |||
287 | } | 292 | } |
288 | 293 | ||
289 | async getFeatures() { | 294 | async getFeatures() { |
295 | if (apiBase() === SERVER_NOT_LOADED) { | ||
296 | throw new Error('Server not loaded'); | ||
297 | } | ||
298 | |||
290 | const request = await sendAuthRequest(`${apiBase()}/features`); | 299 | const request = await sendAuthRequest(`${apiBase()}/features`); |
291 | if (!request.ok) { | 300 | if (!request.ok) { |
292 | throw request; | 301 | throw request; |
@@ -449,7 +458,7 @@ export default class ServerApi { | |||
449 | 458 | ||
450 | // News | 459 | // News |
451 | async getLatestNews() { | 460 | async getLatestNews() { |
452 | const url = `${apiBase()}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`; | 461 | const url = `https://api.getferdi.com/v1/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`; |
453 | const request = await sendAuthRequest(url); | 462 | const request = await sendAuthRequest(url); |
454 | if (!request.ok) throw request; | 463 | if (!request.ok) throw request; |
455 | const data = await request.json(); | 464 | const data = await request.json(); |
@@ -459,14 +468,18 @@ export default class ServerApi { | |||
459 | } | 468 | } |
460 | 469 | ||
461 | async hideNews(id) { | 470 | async hideNews(id) { |
462 | const request = await sendAuthRequest(`${apiBase()}/news/${id}/read`); | 471 | const request = await sendAuthRequest(`https://api.getferdi.com/v1/news/${id}/read`); |
463 | if (!request.ok) throw request; | 472 | if (!request.ok) throw request; |
464 | debug('ServerApi::hideNews resolves', id); | 473 | debug('ServerApi::hideNews resolves', id); |
465 | } | 474 | } |
466 | 475 | ||
467 | // Health Check | 476 | // Health Check |
468 | async healthCheck() { | 477 | async healthCheck() { |
469 | const request = await sendAuthRequest(`${SERVER_URL}/health`, { | 478 | if (apiBase() === SERVER_NOT_LOADED) { |
479 | throw new Error('Server not loaded'); | ||
480 | } | ||
481 | |||
482 | const request = await sendAuthRequest(`${apiBase(false)}/health`, { | ||
470 | method: 'GET', | 483 | method: 'GET', |
471 | }, false); | 484 | }, false); |
472 | if (!request.ok) { | 485 | if (!request.ok) { |
diff --git a/src/assets/themeInfo.json b/src/assets/themeInfo.json index d6017de23..eaea65ca7 100644 --- a/src/assets/themeInfo.json +++ b/src/assets/themeInfo.json | |||
@@ -1 +1 @@ | |||
{"color":".theme__dark .app .sidebar .sidebar__button.is-muted, .theme__dark .app .sidebar .sidebar__button.is-active, .sidebar .sidebar__button.is-muted, .sidebar .sidebar__button.is-active, .settings .account .invoices .invoices__action button, .settings-navigation .settings-navigation__link.is-active .badge, a.button, a.link, .auth .welcome .button:hover, .auth .welcome .button__inverted, .franz-form .franz-form__radio.is-selected, .theme__dark .franz-form__button.franz-form__button--inverted, .franz-form__button.franz-form__button--inverted","border-left-color":".tab-item.is-active","border-color":".theme__dark .settings .premium-info, a.button, .franz-form .franz-form__radio.is-selected","background":".settings .settings__header, .settings .settings__close, .settings .settings__close:hover, .settings-navigation .settings-navigation__link.is-active, a.button:hover, .info-bar, .info-bar.info-bar--primary, .infobox.infobox--primary, .theme__dark .badge.badge--primary, .theme__dark .badge.badge--premium, .badge.badge--primary, .badge.badge--premium, .content-tabs .content-tabs__tabs .content-tabs__item.is-active, #electron-app-title-bar .toolbar-dropdown:not(.open) > .toolbar-button > button:hover, #electron-app-title-bar .list-item.selected .menu-item, #electron-app-title-bar .list-item.selected:focus .menu-item, .theme__dark .quick-switch .active, .franz-form .franz-form__toggle-wrapper .franz-form__toggle.is-active .franz-form__toggle-button, .theme__dark .franz-form__button, .theme__dark .franz-form__button:hover, .theme__dark .franz-form__button.franz-form__button--inverted:hover, .franz-form__button, .franz-form__button:hover, .franz-form__button.franz-form__button--inverted:hover","border-right-color":".settings .settings__header .separator"} \ No newline at end of file | {"color":".theme__dark .app .sidebar .sidebar__button.is-muted, .theme__dark .app .sidebar .sidebar__button.is-active, .sidebar .sidebar__button.is-muted, .sidebar .sidebar__button.is-active, .settings .account .invoices .invoices__action button, .settings-navigation .settings-navigation__link.is-active .badge, a.button, button.button, a.link, button.link, .auth .welcome .button:hover, .auth .welcome .button__inverted, .franz-form .franz-form__radio.is-selected, .theme__dark .franz-form__button.franz-form__button--inverted, .franz-form__button.franz-form__button--inverted","border-left-color":".tab-item.is-active","border-color":".theme__dark .settings .premium-info, a.button, button.button, .franz-form .franz-form__radio.is-selected","background":".settings .settings__header, .settings .settings__close, .settings .settings__close:hover, .settings-navigation .settings-navigation__link.is-active, a.button:hover, button.button:hover, .info-bar, .info-bar.info-bar--primary, .infobox.infobox--primary, .theme__dark .badge.badge--primary, .theme__dark .badge.badge--premium, .badge.badge--primary, .badge.badge--premium, .content-tabs .content-tabs__tabs .content-tabs__item.is-active, #electron-app-title-bar .toolbar-dropdown:not(.open) > .toolbar-button > button:hover, #electron-app-title-bar .list-item.selected .menu-item, #electron-app-title-bar .list-item.selected:focus .menu-item, .theme__dark .quick-switch .active, .franz-form .franz-form__toggle-wrapper .franz-form__toggle.is-active .franz-form__toggle-button, .theme__dark .franz-form__button, .theme__dark .franz-form__button:hover, .theme__dark .franz-form__button.franz-form__button--inverted:hover, .franz-form__button, .franz-form__button:hover, .franz-form__button.franz-form__button--inverted:hover","border-right-color":".settings .settings__header .separator"} \ No newline at end of file | ||
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js index 49ee24361..1fff5ef7a 100644 --- a/src/components/services/content/ServiceView.js +++ b/src/components/services/content/ServiceView.js | |||
@@ -42,10 +42,10 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
42 | forceRepaint: false, | 42 | forceRepaint: false, |
43 | targetUrl: '', | 43 | targetUrl: '', |
44 | statusBarVisible: false, | 44 | statusBarVisible: false, |
45 | hibernate: false, | ||
46 | hibernationTimer: null, | ||
47 | }; | 45 | }; |
48 | 46 | ||
47 | hibernationTimer = null; | ||
48 | |||
49 | autorunDisposer = null; | 49 | autorunDisposer = null; |
50 | 50 | ||
51 | forceRepaintTimeout = null; | 51 | forceRepaintTimeout = null; |
@@ -73,15 +73,12 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
73 | // Service is inactive - start hibernation countdown | 73 | // Service is inactive - start hibernation countdown |
74 | this.startHibernationTimer(); | 74 | this.startHibernationTimer(); |
75 | } else { | 75 | } else { |
76 | if (this.state.hibernationTimer) { | 76 | if (this.hibernationTimer) { |
77 | // Service is active but we have an active hibernation timer: Clear timeout | 77 | // Service is active but we have an active hibernation timer: Clear timeout |
78 | clearTimeout(this.state.hibernationTimer); | 78 | clearTimeout(this.hibernationTimer); |
79 | } | 79 | } |
80 | 80 | ||
81 | // Service is active, wake up service from hibernation | 81 | // Service is active, wake up service from hibernation |
82 | this.setState({ | ||
83 | hibernate: false, | ||
84 | }); | ||
85 | this.props.actions.service.setHibernation({ | 82 | this.props.actions.service.setHibernation({ |
86 | serviceId: this.props.service.id, | 83 | serviceId: this.props.service.id, |
87 | hibernating: false, | 84 | hibernating: false, |
@@ -90,16 +87,6 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
90 | }, | 87 | }, |
91 | ); | 88 | ); |
92 | 89 | ||
93 | // Store hibernation status to state, otherwise the webview won't get unloaded correctly | ||
94 | reaction( | ||
95 | () => this.props.service.isHibernating, | ||
96 | () => { | ||
97 | this.setState({ | ||
98 | hibernate: this.props.service.isHibernating, | ||
99 | }); | ||
100 | }, | ||
101 | ); | ||
102 | |||
103 | // Start hibernation counter if we are in background | 90 | // Start hibernation counter if we are in background |
104 | if (!this.props.service.isActive && this.props.stores.settings.all.app.hibernate) { | 91 | if (!this.props.service.isActive && this.props.stores.settings.all.app.hibernate) { |
105 | this.startHibernationTimer(); | 92 | this.startHibernationTimer(); |
@@ -126,18 +113,13 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
126 | const timerDuration = (Number(this.props.stores.settings.all.app.hibernationStrategy) || 300) * 1000; | 113 | const timerDuration = (Number(this.props.stores.settings.all.app.hibernationStrategy) || 300) * 1000; |
127 | 114 | ||
128 | const hibernationTimer = setTimeout(() => { | 115 | const hibernationTimer = setTimeout(() => { |
129 | this.setState({ | ||
130 | hibernate: true, | ||
131 | }); | ||
132 | this.props.actions.service.setHibernation({ | 116 | this.props.actions.service.setHibernation({ |
133 | serviceId: this.props.service.id, | 117 | serviceId: this.props.service.id, |
134 | hibernating: true, | 118 | hibernating: true, |
135 | }); | 119 | }); |
136 | }, timerDuration); | 120 | }, timerDuration); |
137 | 121 | ||
138 | this.setState({ | 122 | this.hibernationTimer = hibernationTimer; |
139 | hibernationTimer, | ||
140 | }); | ||
141 | } | 123 | } |
142 | 124 | ||
143 | render() { | 125 | render() { |
@@ -208,7 +190,7 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
208 | </Fragment> | 190 | </Fragment> |
209 | ) : ( | 191 | ) : ( |
210 | <> | 192 | <> |
211 | {!this.state.hibernate ? ( | 193 | {!service.isHibernating ? ( |
212 | <> | 194 | <> |
213 | {(service.recipe.id === CUSTOM_WEBSITE_ID || showServiceNavigationBar) && ( | 195 | {(service.recipe.id === CUSTOM_WEBSITE_ID || showServiceNavigationBar) && ( |
214 | <WebControlsScreen service={service} /> | 196 | <WebControlsScreen service={service} /> |
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js index e6ebb6afb..652647470 100644 --- a/src/components/services/content/ServiceWebview.js +++ b/src/components/services/content/ServiceWebview.js | |||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { observable, reaction } from 'mobx'; | 4 | import { observable, reaction } from 'mobx'; |
5 | import ElectronWebView from 'react-electron-web-view'; | 5 | import ElectronWebView from 'react-electron-web-view'; |
6 | import path from 'path'; | ||
6 | 7 | ||
7 | import ServiceModel from '../../../models/Service'; | 8 | import ServiceModel from '../../../models/Service'; |
8 | 9 | ||
@@ -51,6 +52,8 @@ class ServiceWebview extends Component { | |||
51 | setWebviewReference, | 52 | setWebviewReference, |
52 | } = this.props; | 53 | } = this.props; |
53 | 54 | ||
55 | const preloadScript = path.join(__dirname, '../../../', 'webview', 'recipe.js'); | ||
56 | |||
54 | return ( | 57 | return ( |
55 | <ElectronWebView | 58 | <ElectronWebView |
56 | ref={(webview) => { | 59 | ref={(webview) => { |
@@ -61,7 +64,7 @@ class ServiceWebview extends Component { | |||
61 | }} | 64 | }} |
62 | autosize | 65 | autosize |
63 | src={service.url} | 66 | src={service.url} |
64 | preload="./webview/recipe.js" | 67 | preload={preloadScript} |
65 | partition={`persist:service-${service.id}`} | 68 | partition={`persist:service-${service.id}`} |
66 | onDidAttach={() => { | 69 | onDidAttach={() => { |
67 | setWebviewReference({ | 70 | setWebviewReference({ |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 2be5c4ed7..d567a47d1 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -12,6 +12,7 @@ import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; | |||
12 | import Input from '../../ui/Input'; | 12 | import Input from '../../ui/Input'; |
13 | 13 | ||
14 | import { FRANZ_TRANSLATION } from '../../../config'; | 14 | import { FRANZ_TRANSLATION } from '../../../config'; |
15 | import { isMac } from '../../../environment'; | ||
15 | 16 | ||
16 | function escapeHtml(unsafe) { | 17 | function escapeHtml(unsafe) { |
17 | return unsafe | 18 | return unsafe |
@@ -383,8 +384,10 @@ export default @observer class EditSettingsForm extends Component { | |||
383 | <Toggle field={form.$('showDisabledServices')} /> | 384 | <Toggle field={form.$('showDisabledServices')} /> |
384 | <Toggle field={form.$('showMessageBadgeWhenMuted')} /> | 385 | <Toggle field={form.$('showMessageBadgeWhenMuted')} /> |
385 | <Toggle field={form.$('darkMode')} /> | 386 | <Toggle field={form.$('darkMode')} /> |
387 | {isMac && <Toggle field={form.$('adaptableDarkMode')} disabled={isDarkmodeEnabled} />} | ||
386 | {isDarkmodeEnabled && ( | 388 | {isDarkmodeEnabled && ( |
387 | <> | 389 | <> |
390 | <Toggle field={form.$('adaptableDarkMode')} /> | ||
388 | <Toggle field={form.$('universalDarkMode')} /> | 391 | <Toggle field={form.$('universalDarkMode')} /> |
389 | <p | 392 | <p |
390 | className="settings__message" | 393 | className="settings__message" |
diff --git a/src/components/ui/FeatureList.js b/src/components/ui/FeatureList.js index 7ba8b54d7..f1039709c 100644 --- a/src/components/ui/FeatureList.js +++ b/src/components/ui/FeatureList.js | |||
@@ -72,7 +72,7 @@ export class FeatureList extends Component { | |||
72 | static propTypes = { | 72 | static propTypes = { |
73 | className: PropTypes.string, | 73 | className: PropTypes.string, |
74 | featureClassName: PropTypes.string, | 74 | featureClassName: PropTypes.string, |
75 | plan: PropTypes.oneOf(PLANS), | 75 | plan: PropTypes.oneOf(Object.values(PLANS)), |
76 | }; | 76 | }; |
77 | 77 | ||
78 | static defaultProps = { | 78 | static defaultProps = { |
diff --git a/src/config.js b/src/config.js index 761d26eea..bd67aee6b 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -112,6 +112,19 @@ export const FILE_SYSTEM_SETTINGS_TYPES = [ | |||
112 | ]; | 112 | ]; |
113 | 113 | ||
114 | export const LOCAL_SERVER = 'You are using Ferdi without a server'; | 114 | export const LOCAL_SERVER = 'You are using Ferdi without a server'; |
115 | export const SERVER_NOT_LOADED = 'Ferdi::SERVER_NOT_LOADED'; | ||
116 | |||
117 | // Set app directory before loading user modules | ||
118 | if (process.env.FERDI_APPDATA_DIR != null) { | ||
119 | app.setPath('appData', process.env.FERDI_APPDATA_DIR); | ||
120 | app.setPath('userData', path.join(app.getPath('appData'))); | ||
121 | } else if (process.env.PORTABLE_EXECUTABLE_DIR != null) { | ||
122 | app.setPath('appData', process.env.PORTABLE_EXECUTABLE_DIR, `${app.getName()}AppData`); | ||
123 | app.setPath('userData', path.join(app.getPath('appData'), `${app.getName()}AppData`)); | ||
124 | } else if (process.platform === 'win32') { | ||
125 | app.setPath('appData', process.env.APPDATA); | ||
126 | app.setPath('userData', path.join(app.getPath('appData'), app.getName())); | ||
127 | } | ||
115 | 128 | ||
116 | export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); | 129 | export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); |
117 | 130 | ||
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index ddee82e45..07efbb881 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -98,6 +98,10 @@ const messages = defineMessages({ | |||
98 | id: 'settings.app.form.darkMode', | 98 | id: 'settings.app.form.darkMode', |
99 | defaultMessage: '!!!Dark Mode', | 99 | defaultMessage: '!!!Dark Mode', |
100 | }, | 100 | }, |
101 | adaptableDarkMode: { | ||
102 | id: 'settings.app.form.adaptableDarkMode', | ||
103 | defaultMessage: '!!!Enable adaptable Dark Mode', | ||
104 | }, | ||
101 | universalDarkMode: { | 105 | universalDarkMode: { |
102 | id: 'settings.app.form.universalDarkMode', | 106 | id: 'settings.app.form.universalDarkMode', |
103 | defaultMessage: '!!!Enable universal Dark Mode', | 107 | defaultMessage: '!!!Enable universal Dark Mode', |
@@ -180,6 +184,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
180 | enableGPUAcceleration: settingsData.enableGPUAcceleration, | 184 | enableGPUAcceleration: settingsData.enableGPUAcceleration, |
181 | showDisabledServices: settingsData.showDisabledServices, | 185 | showDisabledServices: settingsData.showDisabledServices, |
182 | darkMode: settingsData.darkMode, | 186 | darkMode: settingsData.darkMode, |
187 | adaptableDarkMode: settingsData.adaptableDarkMode, | ||
183 | universalDarkMode: settingsData.universalDarkMode, | 188 | universalDarkMode: settingsData.universalDarkMode, |
184 | accentColor: settingsData.accentColor, | 189 | accentColor: settingsData.accentColor, |
185 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, | 190 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, |
@@ -350,6 +355,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
350 | value: settings.all.app.darkMode, | 355 | value: settings.all.app.darkMode, |
351 | default: DEFAULT_APP_SETTINGS.darkMode, | 356 | default: DEFAULT_APP_SETTINGS.darkMode, |
352 | }, | 357 | }, |
358 | adaptableDarkMode: { | ||
359 | label: intl.formatMessage(messages.adaptableDarkMode), | ||
360 | value: settings.all.app.adaptableDarkMode, | ||
361 | default: DEFAULT_APP_SETTINGS.adaptableDarkMode, | ||
362 | }, | ||
353 | universalDarkMode: { | 363 | universalDarkMode: { |
354 | label: intl.formatMessage(messages.universalDarkMode), | 364 | label: intl.formatMessage(messages.universalDarkMode), |
355 | value: settings.all.app.universalDarkMode, | 365 | value: settings.all.app.universalDarkMode, |
diff --git a/src/features/accentColor/index.js b/src/features/accentColor/index.js index a0f57a2fa..90fbcab43 100644 --- a/src/features/accentColor/index.js +++ b/src/features/accentColor/index.js | |||
@@ -4,6 +4,15 @@ import { DEFAULT_APP_SETTINGS } from '../../config'; | |||
4 | 4 | ||
5 | const STYLE_ELEMENT_ID = 'accent-color'; | 5 | const STYLE_ELEMENT_ID = 'accent-color'; |
6 | 6 | ||
7 | // Additional styles needed to make accent colors work properly | ||
8 | // "[ACCENT]" will be replaced with the accent color | ||
9 | const ADDITIONAL_STYLES = ` | ||
10 | .franz-form__button { | ||
11 | background: inherit !important; | ||
12 | border: 2px solid [ACCENT] !important; | ||
13 | } | ||
14 | `; | ||
15 | |||
7 | function createAccentStyleElement() { | 16 | function createAccentStyleElement() { |
8 | const styles = document.createElement('style'); | 17 | const styles = document.createElement('style'); |
9 | styles.id = STYLE_ELEMENT_ID; | 18 | styles.id = STYLE_ELEMENT_ID; |
@@ -13,6 +22,7 @@ function createAccentStyleElement() { | |||
13 | 22 | ||
14 | function setAccentStyle(style) { | 23 | function setAccentStyle(style) { |
15 | const styleElement = document.getElementById(STYLE_ELEMENT_ID); | 24 | const styleElement = document.getElementById(STYLE_ELEMENT_ID); |
25 | |||
16 | styleElement.innerHTML = style; | 26 | styleElement.innerHTML = style; |
17 | } | 27 | } |
18 | 28 | ||
@@ -27,6 +37,8 @@ function generateAccentStyle(color) { | |||
27 | `; | 37 | `; |
28 | }); | 38 | }); |
29 | 39 | ||
40 | style += ADDITIONAL_STYLES.replace(/\[ACCENT\]/g, color); | ||
41 | |||
30 | return style; | 42 | return style; |
31 | } | 43 | } |
32 | 44 | ||
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js index e9a01b156..e78607667 100644 --- a/src/features/serviceProxy/index.js +++ b/src/features/serviceProxy/index.js | |||
@@ -22,7 +22,6 @@ export default function init(stores) { | |||
22 | config.isIncludedInCurrentPlan = true; | 22 | config.isIncludedInCurrentPlan = true; |
23 | 23 | ||
24 | const services = stores.services.enabled; | 24 | const services = stores.services.enabled; |
25 | const isPremiumUser = stores.user.data.isPremium; | ||
26 | const proxySettings = stores.settings.proxy; | 25 | const proxySettings = stores.settings.proxy; |
27 | 26 | ||
28 | debug('Service Proxy autorun'); | 27 | debug('Service Proxy autorun'); |
@@ -30,7 +29,7 @@ export default function init(stores) { | |||
30 | services.forEach((service) => { | 29 | services.forEach((service) => { |
31 | const s = session.fromPartition(`persist:service-${service.id}`); | 30 | const s = session.fromPartition(`persist:service-${service.id}`); |
32 | 31 | ||
33 | if (config.isEnabled && (isPremiumUser || !config.isIncludedInCurrentPlan)) { | 32 | if (config.isEnabled) { |
34 | const serviceProxyConfig = proxySettings[service.id]; | 33 | const serviceProxyConfig = proxySettings[service.id]; |
35 | 34 | ||
36 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { | 35 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { |
diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/af.json +++ b/src/i18n/locales/af.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/bs.json +++ b/src/i18n/locales/bs.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 5f55f804a..f7de90243 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "La memòria cau de Ferdi està utilitzant {size} d'espai al disc", | 255 | "settings.app.cacheInfo": "La memòria cau de Ferdi està utilitzant {size} d'espai al disc", |
256 | "settings.app.currentVersion": "Versió actual:", | 256 | "settings.app.currentVersion": "Versió actual:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Obrir en segon plà ", | 259 | "settings.app.form.autoLaunchInBackground": "Obrir en segon plà ", |
259 | "settings.app.form.autoLaunchOnStart": "Iniciar Ferdi a l'inici", | 260 | "settings.app.form.autoLaunchOnStart": "Iniciar Ferdi a l'inici", |
260 | "settings.app.form.beta": "Inclou versions beta", | 261 | "settings.app.form.beta": "Inclou versions beta", |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index e8d3827dd..7ec1ce369 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi momentálnÄ› použÃvá {size} mÃsta na disku.", | 255 | "settings.app.cacheInfo": "Ferdi momentálnÄ› použÃvá {size} mÃsta na disku.", |
256 | "settings.app.currentVersion": "Aktuálnà verze:", | 256 | "settings.app.currentVersion": "Aktuálnà verze:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Spustit na pozadÃ", | 259 | "settings.app.form.autoLaunchInBackground": "Spustit na pozadÃ", |
259 | "settings.app.form.autoLaunchOnStart": "Spustit Ferdi při startu", | 260 | "settings.app.form.autoLaunchOnStart": "Spustit Ferdi při startu", |
260 | "settings.app.form.beta": "Zahrnout beta verze", | 261 | "settings.app.form.beta": "Zahrnout beta verze", |
diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 02e9b2a8e..2709f7788 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -9,17 +9,17 @@ | |||
9 | "feature.delayApp.trial.headline": "Hol dir die kostenlose Ferdi Professional Testlizenz und es geht ohne Warten weiter", | 9 | "feature.delayApp.trial.headline": "Hol dir die kostenlose Ferdi Professional Testlizenz und es geht ohne Warten weiter", |
10 | "feature.delayApp.upgrade.action": "Hol dir Ferdi Premium", | 10 | "feature.delayApp.upgrade.action": "Hol dir Ferdi Premium", |
11 | "feature.delayApp.upgrade.actionShort": "Account erweitern", | 11 | "feature.delayApp.upgrade.actionShort": "Account erweitern", |
12 | "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", | 12 | "feature.planSelection.cta.ctaDowngradeFree": "Auf kostenlosen Plan herunterstufen", |
13 | "feature.planSelection.cta.stayOnFree": "Stay on Free", | 13 | "feature.planSelection.cta.stayOnFree": "Auf kostenlosem Plan bleiben", |
14 | "feature.planSelection.cta.trial": "Start my free 14-days Trial", | 14 | "feature.planSelection.cta.trial": "Starte meine 14-Tage Testversion", |
15 | "feature.planSelection.cta.upgradePersonal": "Choose Personal", | 15 | "feature.planSelection.cta.upgradePersonal": "Personal Plan wählen", |
16 | "feature.planSelection.cta.upgradePro": "Choose Professional", | 16 | "feature.planSelection.cta.upgradePro": "Professional Plan wählen", |
17 | "feature.planSelection.free.text": "Basic functionality", | 17 | "feature.planSelection.free.text": "Einfache Funktionalität", |
18 | "feature.planSelection.fullFeatureList": "Complete comparison of all plans", | 18 | "feature.planSelection.fullFeatureList": "Kompletter Vergleich aller Pläne", |
19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Auf kostenlosen Plan herunterstufen", |
20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", | 20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Personal Plan wählen", |
21 | "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 21 | "feature.planSelection.fullscreen.dialog.message": "Du bist dabei, auf ein kostenloses Konto herunterzustufen. Bist du sicher? Klicke stattdessen hier, um mehr Dienste und Funktionen für nur {currency}{price} pro Monat zu erhalten.", |
22 | "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 22 | "feature.planSelection.fullscreen.dialog.title": "Deinen Ferdi Plan herunterstufen", |
23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", |
24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", | 24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", |
25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", |
@@ -41,10 +41,10 @@ | |||
41 | "feature.todos.premium.upgrade": "Account Upgrade", | 41 | "feature.todos.premium.upgrade": "Account Upgrade", |
42 | "feature.trialStatusBar.cta": "Upgrade now", | 42 | "feature.trialStatusBar.cta": "Upgrade now", |
43 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", | 43 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", |
44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Auf kostenlosen Plan herunterstufen", |
45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", | 45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Personal Plan wählen", |
46 | "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 46 | "feature.trialStatusBar.fullscreen.dialog.message": "Du bist dabei, auf ein kostenloses Konto herunterzustufen. Bist du sicher? Klicke stattdessen hier, um mehr Dienste und Funktionen für nur {currency}{price} pro Monat zu erhalten.", |
47 | "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 47 | "feature.trialStatusBar.fullscreen.dialog.title": "Deinen Ferdi Plan herunterstufen", |
48 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", | 48 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", |
49 | "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen", | 49 | "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen", |
50 | "global.franzProRequired": "Ferdi Professional benötigt", | 50 | "global.franzProRequired": "Ferdi Professional benötigt", |
@@ -188,11 +188,11 @@ | |||
188 | "pricing.plan.pro-yearly": "Ferdi Professional jährlich", | 188 | "pricing.plan.pro-yearly": "Ferdi Professional jährlich", |
189 | "pricing.trial.cta.accept": "Ja, Upgrade zu Ferdi Professional durchführen", | 189 | "pricing.trial.cta.accept": "Ja, Upgrade zu Ferdi Professional durchführen", |
190 | "pricing.trial.cta.skip": "Weiter zu Ferdi", | 190 | "pricing.trial.cta.skip": "Weiter zu Ferdi", |
191 | "pricing.trial.cta.start": "Start using Ferdi", | 191 | "pricing.trial.cta.start": "Ferdi verwenden", |
192 | "pricing.trial.error": "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren!", | 192 | "pricing.trial.error": "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren!", |
193 | "pricing.trial.features.headline": "Ferdi Professional beinhaltet:", | 193 | "pricing.trial.features.headline": "Ferdi Professional beinhaltet:", |
194 | "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", | 194 | "pricing.trial.headline.pro": "Hi {name}, willkommen bei Ferdi", |
195 | "pricing.trial.intro.happyMessaging": "Happy messaging,", | 195 | "pricing.trial.intro.happyMessaging": "Viel Spaß beim Nachrichten schreiben", |
196 | "pricing.trial.intro.specialTreat": "We have a special treat for you.", | 196 | "pricing.trial.intro.specialTreat": "We have a special treat for you.", |
197 | "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", | 197 | "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", |
198 | "pricing.trial.terms.automaticTrialEnd": "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", | 198 | "pricing.trial.terms.automaticTrialEnd": "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", |
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Der Ferdi Cache belegt derzeit {size}.", | 255 | "settings.app.cacheInfo": "Der Ferdi Cache belegt derzeit {size}.", |
256 | "settings.app.currentVersion": "Aktuelle Version:", | 256 | "settings.app.currentVersion": "Aktuelle Version:", |
257 | "settings.app.form.accentColor": "Akzentfarbe", | 257 | "settings.app.form.accentColor": "Akzentfarbe", |
258 | "settings.app.form.adaptableDarkMode": "Angepassten DarkMode aktivieren", | ||
258 | "settings.app.form.autoLaunchInBackground": "Im Hintergrund öffnen", | 259 | "settings.app.form.autoLaunchInBackground": "Im Hintergrund öffnen", |
259 | "settings.app.form.autoLaunchOnStart": "Ferdi beim Systemstart ausführen", | 260 | "settings.app.form.autoLaunchOnStart": "Ferdi beim Systemstart ausführen", |
260 | "settings.app.form.beta": "Beta-Versionen einbeziehen", | 261 | "settings.app.form.beta": "Beta-Versionen einbeziehen", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index bb65ccdf2..10092cd9e 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -2608,377 +2608,377 @@ | |||
2608 | "defaultMessage": "!!!Settings", | 2608 | "defaultMessage": "!!!Settings", |
2609 | "end": { | 2609 | "end": { |
2610 | "column": 3, | 2610 | "column": 3, |
2611 | "line": 29 | 2611 | "line": 30 |
2612 | }, | 2612 | }, |
2613 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2613 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2614 | "id": "settings.app.headline", | 2614 | "id": "settings.app.headline", |
2615 | "start": { | 2615 | "start": { |
2616 | "column": 12, | 2616 | "column": 12, |
2617 | "line": 26 | 2617 | "line": 27 |
2618 | } | 2618 | } |
2619 | }, | 2619 | }, |
2620 | { | 2620 | { |
2621 | "defaultMessage": "!!!General", | 2621 | "defaultMessage": "!!!General", |
2622 | "end": { | 2622 | "end": { |
2623 | "column": 3, | 2623 | "column": 3, |
2624 | "line": 33 | 2624 | "line": 34 |
2625 | }, | 2625 | }, |
2626 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2626 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2627 | "id": "settings.app.headlineGeneral", | 2627 | "id": "settings.app.headlineGeneral", |
2628 | "start": { | 2628 | "start": { |
2629 | "column": 19, | 2629 | "column": 19, |
2630 | "line": 30 | 2630 | "line": 31 |
2631 | } | 2631 | } |
2632 | }, | 2632 | }, |
2633 | { | 2633 | { |
2634 | "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", | 2634 | "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", |
2635 | "end": { | 2635 | "end": { |
2636 | "column": 3, | 2636 | "column": 3, |
2637 | "line": 37 | 2637 | "line": 38 |
2638 | }, | 2638 | }, |
2639 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2639 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2640 | "id": "settings.app.hibernateInfo", | 2640 | "id": "settings.app.hibernateInfo", |
2641 | "start": { | 2641 | "start": { |
2642 | "column": 17, | 2642 | "column": 17, |
2643 | "line": 34 | 2643 | "line": 35 |
2644 | } | 2644 | } |
2645 | }, | 2645 | }, |
2646 | { | 2646 | { |
2647 | "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", | 2647 | "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", |
2648 | "end": { | 2648 | "end": { |
2649 | "column": 3, | 2649 | "column": 3, |
2650 | "line": 41 | 2650 | "line": 42 |
2651 | }, | 2651 | }, |
2652 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2652 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2653 | "id": "settings.app.serverInfo", | 2653 | "id": "settings.app.serverInfo", |
2654 | "start": { | 2654 | "start": { |
2655 | "column": 14, | 2655 | "column": 14, |
2656 | "line": 38 | 2656 | "line": 39 |
2657 | } | 2657 | } |
2658 | }, | 2658 | }, |
2659 | { | 2659 | { |
2660 | "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", | 2660 | "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", |
2661 | "end": { | 2661 | "end": { |
2662 | "column": 3, | 2662 | "column": 3, |
2663 | "line": 45 | 2663 | "line": 46 |
2664 | }, | 2664 | }, |
2665 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2665 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2666 | "id": "settings.app.serverMoneyInfo", | 2666 | "id": "settings.app.serverMoneyInfo", |
2667 | "start": { | 2667 | "start": { |
2668 | "column": 19, | 2668 | "column": 19, |
2669 | "line": 42 | 2669 | "line": 43 |
2670 | } | 2670 | } |
2671 | }, | 2671 | }, |
2672 | { | 2672 | { |
2673 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", | 2673 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", |
2674 | "end": { | 2674 | "end": { |
2675 | "column": 3, | 2675 | "column": 3, |
2676 | "line": 49 | 2676 | "line": 50 |
2677 | }, | 2677 | }, |
2678 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2678 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2679 | "id": "settings.app.todoServerInfo", | 2679 | "id": "settings.app.todoServerInfo", |
2680 | "start": { | 2680 | "start": { |
2681 | "column": 18, | 2681 | "column": 18, |
2682 | "line": 46 | 2682 | "line": 47 |
2683 | } | 2683 | } |
2684 | }, | 2684 | }, |
2685 | { | 2685 | { |
2686 | "defaultMessage": "!!!Ferdi Lock Password", | 2686 | "defaultMessage": "!!!Ferdi Lock Password", |
2687 | "end": { | 2687 | "end": { |
2688 | "column": 3, | 2688 | "column": 3, |
2689 | "line": 53 | 2689 | "line": 54 |
2690 | }, | 2690 | }, |
2691 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2691 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2692 | "id": "settings.app.lockedPassword", | 2692 | "id": "settings.app.lockedPassword", |
2693 | "start": { | 2693 | "start": { |
2694 | "column": 18, | 2694 | "column": 18, |
2695 | "line": 50 | 2695 | "line": 51 |
2696 | } | 2696 | } |
2697 | }, | 2697 | }, |
2698 | { | 2698 | { |
2699 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | 2699 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", |
2700 | "end": { | 2700 | "end": { |
2701 | "column": 3, | 2701 | "column": 3, |
2702 | "line": 57 | 2702 | "line": 58 |
2703 | }, | 2703 | }, |
2704 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2704 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2705 | "id": "settings.app.lockedPasswordInfo", | 2705 | "id": "settings.app.lockedPasswordInfo", |
2706 | "start": { | 2706 | "start": { |
2707 | "column": 22, | 2707 | "column": 22, |
2708 | "line": 54 | 2708 | "line": 55 |
2709 | } | 2709 | } |
2710 | }, | 2710 | }, |
2711 | { | 2711 | { |
2712 | "defaultMessage": "!!!Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi password lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", | 2712 | "defaultMessage": "!!!Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi password lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", |
2713 | "end": { | 2713 | "end": { |
2714 | "column": 3, | 2714 | "column": 3, |
2715 | "line": 61 | 2715 | "line": 62 |
2716 | }, | 2716 | }, |
2717 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2717 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2718 | "id": "settings.app.lockInfo", | 2718 | "id": "settings.app.lockInfo", |
2719 | "start": { | 2719 | "start": { |
2720 | "column": 12, | 2720 | "column": 12, |
2721 | "line": 58 | 2721 | "line": 59 |
2722 | } | 2722 | } |
2723 | }, | 2723 | }, |
2724 | { | 2724 | { |
2725 | "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", | 2725 | "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", |
2726 | "end": { | 2726 | "end": { |
2727 | "column": 3, | 2727 | "column": 3, |
2728 | "line": 65 | 2728 | "line": 66 |
2729 | }, | 2729 | }, |
2730 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2730 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2731 | "id": "settings.app.scheduledDNDTimeInfo", | 2731 | "id": "settings.app.scheduledDNDTimeInfo", |
2732 | "start": { | 2732 | "start": { |
2733 | "column": 24, | 2733 | "column": 24, |
2734 | "line": 62 | 2734 | "line": 63 |
2735 | } | 2735 | } |
2736 | }, | 2736 | }, |
2737 | { | 2737 | { |
2738 | "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", | 2738 | "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", |
2739 | "end": { | 2739 | "end": { |
2740 | "column": 3, | 2740 | "column": 3, |
2741 | "line": 69 | 2741 | "line": 70 |
2742 | }, | 2742 | }, |
2743 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2743 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2744 | "id": "settings.app.scheduledDNDInfo", | 2744 | "id": "settings.app.scheduledDNDInfo", |
2745 | "start": { | 2745 | "start": { |
2746 | "column": 20, | 2746 | "column": 20, |
2747 | "line": 66 | 2747 | "line": 67 |
2748 | } | 2748 | } |
2749 | }, | 2749 | }, |
2750 | { | 2750 | { |
2751 | "defaultMessage": "!!!Language", | 2751 | "defaultMessage": "!!!Language", |
2752 | "end": { | 2752 | "end": { |
2753 | "column": 3, | 2753 | "column": 3, |
2754 | "line": 73 | 2754 | "line": 74 |
2755 | }, | 2755 | }, |
2756 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2756 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2757 | "id": "settings.app.headlineLanguage", | 2757 | "id": "settings.app.headlineLanguage", |
2758 | "start": { | 2758 | "start": { |
2759 | "column": 20, | 2759 | "column": 20, |
2760 | "line": 70 | 2760 | "line": 71 |
2761 | } | 2761 | } |
2762 | }, | 2762 | }, |
2763 | { | 2763 | { |
2764 | "defaultMessage": "!!!Updates", | 2764 | "defaultMessage": "!!!Updates", |
2765 | "end": { | 2765 | "end": { |
2766 | "column": 3, | 2766 | "column": 3, |
2767 | "line": 77 | 2767 | "line": 78 |
2768 | }, | 2768 | }, |
2769 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2769 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2770 | "id": "settings.app.headlineUpdates", | 2770 | "id": "settings.app.headlineUpdates", |
2771 | "start": { | 2771 | "start": { |
2772 | "column": 19, | 2772 | "column": 19, |
2773 | "line": 74 | 2773 | "line": 75 |
2774 | } | 2774 | } |
2775 | }, | 2775 | }, |
2776 | { | 2776 | { |
2777 | "defaultMessage": "!!!Appearance", | 2777 | "defaultMessage": "!!!Appearance", |
2778 | "end": { | 2778 | "end": { |
2779 | "column": 3, | 2779 | "column": 3, |
2780 | "line": 81 | 2780 | "line": 82 |
2781 | }, | 2781 | }, |
2782 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2782 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2783 | "id": "settings.app.headlineAppearance", | 2783 | "id": "settings.app.headlineAppearance", |
2784 | "start": { | 2784 | "start": { |
2785 | "column": 22, | 2785 | "column": 22, |
2786 | "line": 78 | 2786 | "line": 79 |
2787 | } | 2787 | } |
2788 | }, | 2788 | }, |
2789 | { | 2789 | { |
2790 | "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", | 2790 | "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", |
2791 | "end": { | 2791 | "end": { |
2792 | "column": 3, | 2792 | "column": 3, |
2793 | "line": 85 | 2793 | "line": 86 |
2794 | }, | 2794 | }, |
2795 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2795 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2796 | "id": "settings.app.universalDarkModeInfo", | 2796 | "id": "settings.app.universalDarkModeInfo", |
2797 | "start": { | 2797 | "start": { |
2798 | "column": 25, | 2798 | "column": 25, |
2799 | "line": 82 | 2799 | "line": 83 |
2800 | } | 2800 | } |
2801 | }, | 2801 | }, |
2802 | { | 2802 | { |
2803 | "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", | 2803 | "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", |
2804 | "end": { | 2804 | "end": { |
2805 | "column": 3, | 2805 | "column": 3, |
2806 | "line": 89 | 2806 | "line": 90 |
2807 | }, | 2807 | }, |
2808 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2808 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2809 | "id": "settings.app.accentColorInfo", | 2809 | "id": "settings.app.accentColorInfo", |
2810 | "start": { | 2810 | "start": { |
2811 | "column": 19, | 2811 | "column": 19, |
2812 | "line": 86 | 2812 | "line": 87 |
2813 | } | 2813 | } |
2814 | }, | 2814 | }, |
2815 | { | 2815 | { |
2816 | "defaultMessage": "!!!Advanced", | 2816 | "defaultMessage": "!!!Advanced", |
2817 | "end": { | 2817 | "end": { |
2818 | "column": 3, | 2818 | "column": 3, |
2819 | "line": 93 | 2819 | "line": 94 |
2820 | }, | 2820 | }, |
2821 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2821 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2822 | "id": "settings.app.headlineAdvanced", | 2822 | "id": "settings.app.headlineAdvanced", |
2823 | "start": { | 2823 | "start": { |
2824 | "column": 20, | 2824 | "column": 20, |
2825 | "line": 90 | 2825 | "line": 91 |
2826 | } | 2826 | } |
2827 | }, | 2827 | }, |
2828 | { | 2828 | { |
2829 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 2829 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
2830 | "end": { | 2830 | "end": { |
2831 | "column": 3, | 2831 | "column": 3, |
2832 | "line": 97 | 2832 | "line": 98 |
2833 | }, | 2833 | }, |
2834 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2834 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2835 | "id": "settings.app.translationHelp", | 2835 | "id": "settings.app.translationHelp", |
2836 | "start": { | 2836 | "start": { |
2837 | "column": 19, | 2837 | "column": 19, |
2838 | "line": 94 | 2838 | "line": 95 |
2839 | } | 2839 | } |
2840 | }, | 2840 | }, |
2841 | { | 2841 | { |
2842 | "defaultMessage": "!!!Cache", | 2842 | "defaultMessage": "!!!Cache", |
2843 | "end": { | 2843 | "end": { |
2844 | "column": 3, | 2844 | "column": 3, |
2845 | "line": 101 | 2845 | "line": 102 |
2846 | }, | 2846 | }, |
2847 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2847 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2848 | "id": "settings.app.subheadlineCache", | 2848 | "id": "settings.app.subheadlineCache", |
2849 | "start": { | 2849 | "start": { |
2850 | "column": 20, | 2850 | "column": 20, |
2851 | "line": 98 | 2851 | "line": 99 |
2852 | } | 2852 | } |
2853 | }, | 2853 | }, |
2854 | { | 2854 | { |
2855 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 2855 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
2856 | "end": { | 2856 | "end": { |
2857 | "column": 3, | 2857 | "column": 3, |
2858 | "line": 105 | 2858 | "line": 106 |
2859 | }, | 2859 | }, |
2860 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2860 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2861 | "id": "settings.app.cacheInfo", | 2861 | "id": "settings.app.cacheInfo", |
2862 | "start": { | 2862 | "start": { |
2863 | "column": 13, | 2863 | "column": 13, |
2864 | "line": 102 | 2864 | "line": 103 |
2865 | } | 2865 | } |
2866 | }, | 2866 | }, |
2867 | { | 2867 | { |
2868 | "defaultMessage": "!!!Clear cache", | 2868 | "defaultMessage": "!!!Clear cache", |
2869 | "end": { | 2869 | "end": { |
2870 | "column": 3, | 2870 | "column": 3, |
2871 | "line": 109 | 2871 | "line": 110 |
2872 | }, | 2872 | }, |
2873 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2873 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2874 | "id": "settings.app.buttonClearAllCache", | 2874 | "id": "settings.app.buttonClearAllCache", |
2875 | "start": { | 2875 | "start": { |
2876 | "column": 23, | 2876 | "column": 23, |
2877 | "line": 106 | 2877 | "line": 107 |
2878 | } | 2878 | } |
2879 | }, | 2879 | }, |
2880 | { | 2880 | { |
2881 | "defaultMessage": "!!!Check for updates", | 2881 | "defaultMessage": "!!!Check for updates", |
2882 | "end": { | 2882 | "end": { |
2883 | "column": 3, | 2883 | "column": 3, |
2884 | "line": 113 | 2884 | "line": 114 |
2885 | }, | 2885 | }, |
2886 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2886 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2887 | "id": "settings.app.buttonSearchForUpdate", | 2887 | "id": "settings.app.buttonSearchForUpdate", |
2888 | "start": { | 2888 | "start": { |
2889 | "column": 25, | 2889 | "column": 25, |
2890 | "line": 110 | 2890 | "line": 111 |
2891 | } | 2891 | } |
2892 | }, | 2892 | }, |
2893 | { | 2893 | { |
2894 | "defaultMessage": "!!!Restart & install update", | 2894 | "defaultMessage": "!!!Restart & install update", |
2895 | "end": { | 2895 | "end": { |
2896 | "column": 3, | 2896 | "column": 3, |
2897 | "line": 117 | 2897 | "line": 118 |
2898 | }, | 2898 | }, |
2899 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2899 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2900 | "id": "settings.app.buttonInstallUpdate", | 2900 | "id": "settings.app.buttonInstallUpdate", |
2901 | "start": { | 2901 | "start": { |
2902 | "column": 23, | 2902 | "column": 23, |
2903 | "line": 114 | 2903 | "line": 115 |
2904 | } | 2904 | } |
2905 | }, | 2905 | }, |
2906 | { | 2906 | { |
2907 | "defaultMessage": "!!!Is searching for update", | 2907 | "defaultMessage": "!!!Is searching for update", |
2908 | "end": { | 2908 | "end": { |
2909 | "column": 3, | 2909 | "column": 3, |
2910 | "line": 121 | 2910 | "line": 122 |
2911 | }, | 2911 | }, |
2912 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2912 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2913 | "id": "settings.app.updateStatusSearching", | 2913 | "id": "settings.app.updateStatusSearching", |
2914 | "start": { | 2914 | "start": { |
2915 | "column": 25, | 2915 | "column": 25, |
2916 | "line": 118 | 2916 | "line": 119 |
2917 | } | 2917 | } |
2918 | }, | 2918 | }, |
2919 | { | 2919 | { |
2920 | "defaultMessage": "!!!Update available, downloading...", | 2920 | "defaultMessage": "!!!Update available, downloading...", |
2921 | "end": { | 2921 | "end": { |
2922 | "column": 3, | 2922 | "column": 3, |
2923 | "line": 125 | 2923 | "line": 126 |
2924 | }, | 2924 | }, |
2925 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2925 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2926 | "id": "settings.app.updateStatusAvailable", | 2926 | "id": "settings.app.updateStatusAvailable", |
2927 | "start": { | 2927 | "start": { |
2928 | "column": 25, | 2928 | "column": 25, |
2929 | "line": 122 | 2929 | "line": 123 |
2930 | } | 2930 | } |
2931 | }, | 2931 | }, |
2932 | { | 2932 | { |
2933 | "defaultMessage": "!!!You are using the latest version of Ferdi", | 2933 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
2934 | "end": { | 2934 | "end": { |
2935 | "column": 3, | 2935 | "column": 3, |
2936 | "line": 129 | 2936 | "line": 130 |
2937 | }, | 2937 | }, |
2938 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2938 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2939 | "id": "settings.app.updateStatusUpToDate", | 2939 | "id": "settings.app.updateStatusUpToDate", |
2940 | "start": { | 2940 | "start": { |
2941 | "column": 24, | 2941 | "column": 24, |
2942 | "line": 126 | 2942 | "line": 127 |
2943 | } | 2943 | } |
2944 | }, | 2944 | }, |
2945 | { | 2945 | { |
2946 | "defaultMessage": "!!!Current version:", | 2946 | "defaultMessage": "!!!Current version:", |
2947 | "end": { | 2947 | "end": { |
2948 | "column": 3, | 2948 | "column": 3, |
2949 | "line": 133 | 2949 | "line": 134 |
2950 | }, | 2950 | }, |
2951 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2951 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2952 | "id": "settings.app.currentVersion", | 2952 | "id": "settings.app.currentVersion", |
2953 | "start": { | 2953 | "start": { |
2954 | "column": 18, | 2954 | "column": 18, |
2955 | "line": 130 | 2955 | "line": 131 |
2956 | } | 2956 | } |
2957 | }, | 2957 | }, |
2958 | { | 2958 | { |
2959 | "defaultMessage": "!!!Changes require restart", | 2959 | "defaultMessage": "!!!Changes require restart", |
2960 | "end": { | 2960 | "end": { |
2961 | "column": 3, | 2961 | "column": 3, |
2962 | "line": 137 | 2962 | "line": 138 |
2963 | }, | 2963 | }, |
2964 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2964 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2965 | "id": "settings.app.restartRequired", | 2965 | "id": "settings.app.restartRequired", |
2966 | "start": { | 2966 | "start": { |
2967 | "column": 29, | 2967 | "column": 29, |
2968 | "line": 134 | 2968 | "line": 135 |
2969 | } | 2969 | } |
2970 | }, | 2970 | }, |
2971 | { | 2971 | { |
2972 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 2972 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
2973 | "end": { | 2973 | "end": { |
2974 | "column": 3, | 2974 | "column": 3, |
2975 | "line": 141 | 2975 | "line": 142 |
2976 | }, | 2976 | }, |
2977 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2977 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2978 | "id": "settings.app.languageDisclaimer", | 2978 | "id": "settings.app.languageDisclaimer", |
2979 | "start": { | 2979 | "start": { |
2980 | "column": 22, | 2980 | "column": 22, |
2981 | "line": 138 | 2981 | "line": 139 |
2982 | } | 2982 | } |
2983 | } | 2983 | } |
2984 | ], | 2984 | ], |
@@ -4266,133 +4266,146 @@ | |||
4266 | } | 4266 | } |
4267 | }, | 4267 | }, |
4268 | { | 4268 | { |
4269 | "defaultMessage": "!!!Enable universal Dark Mode", | 4269 | "defaultMessage": "!!!Enable adaptable Dark Mode", |
4270 | "end": { | 4270 | "end": { |
4271 | "column": 3, | 4271 | "column": 3, |
4272 | "line": 104 | 4272 | "line": 104 |
4273 | }, | 4273 | }, |
4274 | "file": "src/containers/settings/EditSettingsScreen.js", | 4274 | "file": "src/containers/settings/EditSettingsScreen.js", |
4275 | "id": "settings.app.form.universalDarkMode", | 4275 | "id": "settings.app.form.adaptableDarkMode", |
4276 | "start": { | 4276 | "start": { |
4277 | "column": 21, | 4277 | "column": 21, |
4278 | "line": 101 | 4278 | "line": 101 |
4279 | } | 4279 | } |
4280 | }, | 4280 | }, |
4281 | { | 4281 | { |
4282 | "defaultMessage": "!!!Accent color", | 4282 | "defaultMessage": "!!!Enable universal Dark Mode", |
4283 | "end": { | 4283 | "end": { |
4284 | "column": 3, | 4284 | "column": 3, |
4285 | "line": 108 | 4285 | "line": 108 |
4286 | }, | 4286 | }, |
4287 | "file": "src/containers/settings/EditSettingsScreen.js", | 4287 | "file": "src/containers/settings/EditSettingsScreen.js", |
4288 | "id": "settings.app.form.universalDarkMode", | ||
4289 | "start": { | ||
4290 | "column": 21, | ||
4291 | "line": 105 | ||
4292 | } | ||
4293 | }, | ||
4294 | { | ||
4295 | "defaultMessage": "!!!Accent color", | ||
4296 | "end": { | ||
4297 | "column": 3, | ||
4298 | "line": 112 | ||
4299 | }, | ||
4300 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
4288 | "id": "settings.app.form.accentColor", | 4301 | "id": "settings.app.form.accentColor", |
4289 | "start": { | 4302 | "start": { |
4290 | "column": 15, | 4303 | "column": 15, |
4291 | "line": 105 | 4304 | "line": 109 |
4292 | } | 4305 | } |
4293 | }, | 4306 | }, |
4294 | { | 4307 | { |
4295 | "defaultMessage": "!!!Display disabled services tabs", | 4308 | "defaultMessage": "!!!Display disabled services tabs", |
4296 | "end": { | 4309 | "end": { |
4297 | "column": 3, | 4310 | "column": 3, |
4298 | "line": 112 | 4311 | "line": 116 |
4299 | }, | 4312 | }, |
4300 | "file": "src/containers/settings/EditSettingsScreen.js", | 4313 | "file": "src/containers/settings/EditSettingsScreen.js", |
4301 | "id": "settings.app.form.showDisabledServices", | 4314 | "id": "settings.app.form.showDisabledServices", |
4302 | "start": { | 4315 | "start": { |
4303 | "column": 24, | 4316 | "column": 24, |
4304 | "line": 109 | 4317 | "line": 113 |
4305 | } | 4318 | } |
4306 | }, | 4319 | }, |
4307 | { | 4320 | { |
4308 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 4321 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
4309 | "end": { | 4322 | "end": { |
4310 | "column": 3, | 4323 | "column": 3, |
4311 | "line": 116 | 4324 | "line": 120 |
4312 | }, | 4325 | }, |
4313 | "file": "src/containers/settings/EditSettingsScreen.js", | 4326 | "file": "src/containers/settings/EditSettingsScreen.js", |
4314 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | 4327 | "id": "settings.app.form.showMessagesBadgesWhenMuted", |
4315 | "start": { | 4328 | "start": { |
4316 | "column": 29, | 4329 | "column": 29, |
4317 | "line": 113 | 4330 | "line": 117 |
4318 | } | 4331 | } |
4319 | }, | 4332 | }, |
4320 | { | 4333 | { |
4321 | "defaultMessage": "!!!Enable spell checking", | 4334 | "defaultMessage": "!!!Enable spell checking", |
4322 | "end": { | 4335 | "end": { |
4323 | "column": 3, | 4336 | "column": 3, |
4324 | "line": 120 | 4337 | "line": 124 |
4325 | }, | 4338 | }, |
4326 | "file": "src/containers/settings/EditSettingsScreen.js", | 4339 | "file": "src/containers/settings/EditSettingsScreen.js", |
4327 | "id": "settings.app.form.enableSpellchecking", | 4340 | "id": "settings.app.form.enableSpellchecking", |
4328 | "start": { | 4341 | "start": { |
4329 | "column": 23, | 4342 | "column": 23, |
4330 | "line": 117 | 4343 | "line": 121 |
4331 | } | 4344 | } |
4332 | }, | 4345 | }, |
4333 | { | 4346 | { |
4334 | "defaultMessage": "!!!Enable GPU Acceleration", | 4347 | "defaultMessage": "!!!Enable GPU Acceleration", |
4335 | "end": { | 4348 | "end": { |
4336 | "column": 3, | 4349 | "column": 3, |
4337 | "line": 124 | 4350 | "line": 128 |
4338 | }, | 4351 | }, |
4339 | "file": "src/containers/settings/EditSettingsScreen.js", | 4352 | "file": "src/containers/settings/EditSettingsScreen.js", |
4340 | "id": "settings.app.form.enableGPUAcceleration", | 4353 | "id": "settings.app.form.enableGPUAcceleration", |
4341 | "start": { | 4354 | "start": { |
4342 | "column": 25, | 4355 | "column": 25, |
4343 | "line": 121 | 4356 | "line": 125 |
4344 | } | 4357 | } |
4345 | }, | 4358 | }, |
4346 | { | 4359 | { |
4347 | "defaultMessage": "!!!Include beta versions", | 4360 | "defaultMessage": "!!!Include beta versions", |
4348 | "end": { | 4361 | "end": { |
4349 | "column": 3, | 4362 | "column": 3, |
4350 | "line": 128 | 4363 | "line": 132 |
4351 | }, | 4364 | }, |
4352 | "file": "src/containers/settings/EditSettingsScreen.js", | 4365 | "file": "src/containers/settings/EditSettingsScreen.js", |
4353 | "id": "settings.app.form.beta", | 4366 | "id": "settings.app.form.beta", |
4354 | "start": { | 4367 | "start": { |
4355 | "column": 8, | 4368 | "column": 8, |
4356 | "line": 125 | 4369 | "line": 129 |
4357 | } | 4370 | } |
4358 | }, | 4371 | }, |
4359 | { | 4372 | { |
4360 | "defaultMessage": "!!!Disable updates", | 4373 | "defaultMessage": "!!!Disable updates", |
4361 | "end": { | 4374 | "end": { |
4362 | "column": 3, | 4375 | "column": 3, |
4363 | "line": 132 | 4376 | "line": 136 |
4364 | }, | 4377 | }, |
4365 | "file": "src/containers/settings/EditSettingsScreen.js", | 4378 | "file": "src/containers/settings/EditSettingsScreen.js", |
4366 | "id": "settings.app.form.noUpdates", | 4379 | "id": "settings.app.form.noUpdates", |
4367 | "start": { | 4380 | "start": { |
4368 | "column": 13, | 4381 | "column": 13, |
4369 | "line": 129 | 4382 | "line": 133 |
4370 | } | 4383 | } |
4371 | }, | 4384 | }, |
4372 | { | 4385 | { |
4373 | "defaultMessage": "!!!Enable Franz Todos", | 4386 | "defaultMessage": "!!!Enable Franz Todos", |
4374 | "end": { | 4387 | "end": { |
4375 | "column": 3, | 4388 | "column": 3, |
4376 | "line": 136 | 4389 | "line": 140 |
4377 | }, | 4390 | }, |
4378 | "file": "src/containers/settings/EditSettingsScreen.js", | 4391 | "file": "src/containers/settings/EditSettingsScreen.js", |
4379 | "id": "settings.app.form.enableTodos", | 4392 | "id": "settings.app.form.enableTodos", |
4380 | "start": { | 4393 | "start": { |
4381 | "column": 15, | 4394 | "column": 15, |
4382 | "line": 133 | 4395 | "line": 137 |
4383 | } | 4396 | } |
4384 | }, | 4397 | }, |
4385 | { | 4398 | { |
4386 | "defaultMessage": "!!!Keep all workspaces loaded", | 4399 | "defaultMessage": "!!!Keep all workspaces loaded", |
4387 | "end": { | 4400 | "end": { |
4388 | "column": 3, | 4401 | "column": 3, |
4389 | "line": 140 | 4402 | "line": 144 |
4390 | }, | 4403 | }, |
4391 | "file": "src/containers/settings/EditSettingsScreen.js", | 4404 | "file": "src/containers/settings/EditSettingsScreen.js", |
4392 | "id": "settings.app.form.keepAllWorkspacesLoaded", | 4405 | "id": "settings.app.form.keepAllWorkspacesLoaded", |
4393 | "start": { | 4406 | "start": { |
4394 | "column": 27, | 4407 | "column": 27, |
4395 | "line": 137 | 4408 | "line": 141 |
4396 | } | 4409 | } |
4397 | } | 4410 | } |
4398 | ], | 4411 | ], |
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index 89c0d62b6..c383a18fb 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Το Ferdi χÏησιμοποιεί αυτήν τη στιγμή {size} χώÏου στο δίσκο.", | 255 | "settings.app.cacheInfo": "Το Ferdi χÏησιμοποιεί αυτήν τη στιγμή {size} χώÏου στο δίσκο.", |
256 | "settings.app.currentVersion": "ΤÏÎχουσα Îκδοση:", | 256 | "settings.app.currentVersion": "ΤÏÎχουσα Îκδοση:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Άνοιγμα στο παÏασκήνιο", | 259 | "settings.app.form.autoLaunchInBackground": "Άνοιγμα στο παÏασκήνιο", |
259 | "settings.app.form.autoLaunchOnStart": "Εκκίνηση του Ferdi κατά την εκκίνηση του συστήματος", | 260 | "settings.app.form.autoLaunchOnStart": "Εκκίνηση του Ferdi κατά την εκκίνηση του συστήματος", |
260 | "settings.app.form.beta": "ΣυμπεÏιλάβετε εκδόσεις beta", | 261 | "settings.app.form.beta": "ΣυμπεÏιλάβετε εκδόσεις beta", |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index a34da1848..b7d81356e 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index e3aad888f..462d74d39 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "El cache de Ferdi actualmente usa {size} de espacio en disco.", | 255 | "settings.app.cacheInfo": "El cache de Ferdi actualmente usa {size} de espacio en disco.", |
256 | "settings.app.currentVersion": "Versión actual:", | 256 | "settings.app.currentVersion": "Versión actual:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Abrir en segundo plano", | 259 | "settings.app.form.autoLaunchInBackground": "Abrir en segundo plano", |
259 | "settings.app.form.autoLaunchOnStart": "Iniciar Ferdi al iniciar", | 260 | "settings.app.form.autoLaunchOnStart": "Iniciar Ferdi al iniciar", |
260 | "settings.app.form.beta": "Incluir versiones beta", | 261 | "settings.app.form.beta": "Incluir versiones beta", |
diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 1ae8d6164..2edf358f5 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -9,22 +9,22 @@ | |||
9 | "feature.delayApp.trial.headline": "Prendre l'essai gratuit de 14 jours de Ferdi Professionnel et esquiver la ligne", | 9 | "feature.delayApp.trial.headline": "Prendre l'essai gratuit de 14 jours de Ferdi Professionnel et esquiver la ligne", |
10 | "feature.delayApp.upgrade.action": "Acheter une license Ferdi", | 10 | "feature.delayApp.upgrade.action": "Acheter une license Ferdi", |
11 | "feature.delayApp.upgrade.actionShort": "Augmenter le niveau de mon compte", | 11 | "feature.delayApp.upgrade.actionShort": "Augmenter le niveau de mon compte", |
12 | "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", | 12 | "feature.planSelection.cta.ctaDowngradeFree": "Rétrograder à la version gratuite", |
13 | "feature.planSelection.cta.stayOnFree": "Stay on Free", | 13 | "feature.planSelection.cta.stayOnFree": "Rester en version gratuite", |
14 | "feature.planSelection.cta.trial": "Start my free 14-days Trial", | 14 | "feature.planSelection.cta.trial": "Commencez mon essai gratuit de 14 jours", |
15 | "feature.planSelection.cta.upgradePersonal": "Choose Personal", | 15 | "feature.planSelection.cta.upgradePersonal": "Choisir Personnel", |
16 | "feature.planSelection.cta.upgradePro": "Choose Professional", | 16 | "feature.planSelection.cta.upgradePro": "Choisir Professionnel", |
17 | "feature.planSelection.free.text": "Basic functionality", | 17 | "feature.planSelection.free.text": "Fonctionnalité basique", |
18 | "feature.planSelection.fullFeatureList": "Complete comparison of all plans", | 18 | "feature.planSelection.fullFeatureList": "Comparaison complète de tous les plans", |
19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Rétrograder à la version gratuite", |
20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", | 20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choisir Personnel", |
21 | "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 21 | "feature.planSelection.fullscreen.dialog.message": "Vous êtes sur le point de rétrograder vers notre compte gratuit. Êtes-vous sûr ? Cliquez ici pour obtenir plus de services et de fonctionnalités pour seulement {currency}{price} par mois.", |
22 | "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 22 | "feature.planSelection.fullscreen.dialog.title": "Rétrograder votre plan Ferdi", |
23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 23 | "feature.planSelection.fullscreen.subheadline": "Il est temps de faire un choix. Ferdi fonctionne mieux sur nos plans Personnels et Professionnels. Veuillez consulter et choisir le meilleur pour vous.", |
24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", | 24 | "feature.planSelection.fullscreen.welcome": "Êtes-vous prêt à choisir, {name}", |
25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 25 | "feature.planSelection.personal.text": "Plus de services, pas d'attente - idéal pour un usage personnel.", |
26 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | 26 | "feature.planSelection.pricesBasedOnAnnualPayment": "Tous les prix basés sur un paiement annuel", |
27 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 27 | "feature.planSelection.pro.text": "Des services illimités et des fonctionnalités professionnelles pour vous - et votre équipe.", |
28 | "feature.quickSwitch.info": "Sélectionner un service avec TAB, ↑ et ↓. Ouvrir un service avec ENTER.", | 28 | "feature.quickSwitch.info": "Sélectionner un service avec TAB, ↑ et ↓. Ouvrir un service avec ENTER.", |
29 | "feature.quickSwitch.search": "Rechercher...", | 29 | "feature.quickSwitch.search": "Rechercher...", |
30 | "feature.quickSwitch.title": "Changement rapide", | 30 | "feature.quickSwitch.title": "Changement rapide", |
@@ -39,13 +39,13 @@ | |||
39 | "feature.todos.premium.info": "Ferdi Todos est disponible aux utilisateurs premium maintenant!", | 39 | "feature.todos.premium.info": "Ferdi Todos est disponible aux utilisateurs premium maintenant!", |
40 | "feature.todos.premium.rollout": "Tous le monde devra attendre un peux plus longtemps.", | 40 | "feature.todos.premium.rollout": "Tous le monde devra attendre un peux plus longtemps.", |
41 | "feature.todos.premium.upgrade": "Améliorez votre compte", | 41 | "feature.todos.premium.upgrade": "Améliorez votre compte", |
42 | "feature.trialStatusBar.cta": "Upgrade now", | 42 | "feature.trialStatusBar.cta": "Améliorer maintenant", |
43 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", | 43 | "feature.trialStatusBar.expired": "Votre essai gratuit Ferdi {plan} a expiré, veuillez mettre à jour votre compte.", |
44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Rétrograder à la version gratuite", |
45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", | 45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choisir Personnel", |
46 | "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 46 | "feature.trialStatusBar.fullscreen.dialog.message": "Vous êtes sur le point de rétrograder vers notre compte gratuit. Êtes-vous sûr ? Cliquez ici pour obtenir plus de services et de fonctionnalités pour seulement {currency}{price} par mois.", |
47 | "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 47 | "feature.trialStatusBar.fullscreen.dialog.title": "Rétrograder votre plan Ferdi", |
48 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", | 48 | "feature.trialStatusBar.restTime": "Votre essai gratuit de Ferdi {plan} se termine dans {time}.", |
49 | "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi", | 49 | "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi", |
50 | "global.franzProRequired": "Ferdi Professionnel Requis", | 50 | "global.franzProRequired": "Ferdi Professionnel Requis", |
51 | "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", | 51 | "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", |
@@ -163,20 +163,20 @@ | |||
163 | "password.submit.label": "Soumettre", | 163 | "password.submit.label": "Soumettre", |
164 | "password.successInfo": "Merci de consulter vos emails", | 164 | "password.successInfo": "Merci de consulter vos emails", |
165 | "premiumFeature.button.upgradeAccount": "Augmenter le niveau de mon compte", | 165 | "premiumFeature.button.upgradeAccount": "Augmenter le niveau de mon compte", |
166 | "pricing.features.accountSync": "Account Synchronisation", | 166 | "pricing.features.accountSync": "Synchronisation de compte", |
167 | "pricing.features.adFree": "Toujours sans pub", | 167 | "pricing.features.adFree": "Toujours sans pub", |
168 | "pricing.features.appDelays": "Plus d'écrans d'attente", | 168 | "pricing.features.appDelays": "Plus d'écrans d'attente", |
169 | "pricing.features.customWebsites": "Ajouter des sites web modifiés", | 169 | "pricing.features.customWebsites": "Ajouter des sites web modifiés", |
170 | "pricing.features.desktopNotifications": "Desktop Notifications", | 170 | "pricing.features.desktopNotifications": "Notifications de bureau", |
171 | "pricing.features.onPremise": "Services hébergés sur place et autre", | 171 | "pricing.features.onPremise": "Services hébergés sur place et autre", |
172 | "pricing.features.recipes": "Choose from more than 70 Services", | 172 | "pricing.features.recipes": "Choisissez parmi de plus de 70 services", |
173 | "pricing.features.serviceProxies": "Service Proxy", | 173 | "pricing.features.serviceProxies": "Service Proxy", |
174 | "pricing.features.spellchecker": "Support du correcteur orthographique", | 174 | "pricing.features.spellchecker": "Support du correcteur orthographique", |
175 | "pricing.features.teamManagement": "Gestion d'équipe", | 175 | "pricing.features.teamManagement": "Gestion d'équipe", |
176 | "pricing.features.thirdPartyServices": "Installer des services tiers", | 176 | "pricing.features.thirdPartyServices": "Installer des services tiers", |
177 | "pricing.features.unlimitedServices": "Ajouter des services illimités", | 177 | "pricing.features.unlimitedServices": "Ajouter des services illimités", |
178 | "pricing.features.upToSixServices": "Add up to 6 services", | 178 | "pricing.features.upToSixServices": "Ajouter jusqu'Ã 6 services", |
179 | "pricing.features.upToThreeServices": "Add up to 3 services", | 179 | "pricing.features.upToThreeServices": "Ajouter jusqu'Ã 3 services", |
180 | "pricing.features.workspaces": "Espace de travail", | 180 | "pricing.features.workspaces": "Espace de travail", |
181 | "pricing.plan.free": "Ferdi Gratuit", | 181 | "pricing.plan.free": "Ferdi Gratuit", |
182 | "pricing.plan.legacy": "Ferdi Premium", | 182 | "pricing.plan.legacy": "Ferdi Premium", |
@@ -188,17 +188,17 @@ | |||
188 | "pricing.plan.pro-yearly": "Ferdi Professionnel à l'année", | 188 | "pricing.plan.pro-yearly": "Ferdi Professionnel à l'année", |
189 | "pricing.trial.cta.accept": "Oui, améliorer mon compte à Ferdi Professionnel", | 189 | "pricing.trial.cta.accept": "Oui, améliorer mon compte à Ferdi Professionnel", |
190 | "pricing.trial.cta.skip": "Continuer à Ferdi", | 190 | "pricing.trial.cta.skip": "Continuer à Ferdi", |
191 | "pricing.trial.cta.start": "Start using Ferdi", | 191 | "pricing.trial.cta.start": "Commencez à utiliser Ferdi", |
192 | "pricing.trial.error": "Désoler, nous ne pouvons pas activé votre essai!", | 192 | "pricing.trial.error": "Désoler, nous ne pouvons pas activé votre essai!", |
193 | "pricing.trial.features.headline": "Ferdi Professionnel inclus:", | 193 | "pricing.trial.features.headline": "Ferdi Professionnel inclus:", |
194 | "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", | 194 | "pricing.trial.headline.pro": "Bonjour {name}, bienvenue dans Ferdi", |
195 | "pricing.trial.intro.happyMessaging": "Happy messaging,", | 195 | "pricing.trial.intro.happyMessaging": "Bonne messagerie,", |
196 | "pricing.trial.intro.specialTreat": "We have a special treat for you.", | 196 | "pricing.trial.intro.specialTreat": "Nous avons une offre spéciale pour vous.", |
197 | "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", | 197 | "pricing.trial.intro.tryPro": "Profitez de l'expérience complète de Ferdi Professional pendant 14 jours.", |
198 | "pricing.trial.terms.automaticTrialEnd": "Votre essai gratuit se finis automatiquement après 14 jours", | 198 | "pricing.trial.terms.automaticTrialEnd": "Votre essai gratuit se finis automatiquement après 14 jours", |
199 | "pricing.trial.terms.headline": "Sans condition", | 199 | "pricing.trial.terms.headline": "Sans condition", |
200 | "pricing.trial.terms.noCreditCard": "Pas de carte de crédit requis", | 200 | "pricing.trial.terms.noCreditCard": "Pas de carte de crédit requis", |
201 | "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", | 201 | "pricing.trial.terms.trialWorth": "Essai gratuit (normalement {currency}{price} par mois)", |
202 | "service.crashHandler.action": "Recharger {name}", | 202 | "service.crashHandler.action": "Recharger {name}", |
203 | "service.crashHandler.autoReload": "Tentative de restauration automatique de {name} dans {seconds} secondes", | 203 | "service.crashHandler.autoReload": "Tentative de restauration automatique de {name} dans {seconds} secondes", |
204 | "service.crashHandler.headline": "Oh non!", | 204 | "service.crashHandler.headline": "Oh non!", |
@@ -255,10 +255,11 @@ | |||
255 | "settings.app.cacheInfo": "Le cache de Ferdi occupe actuellement {size} en espace disque.", | 255 | "settings.app.cacheInfo": "Le cache de Ferdi occupe actuellement {size} en espace disque.", |
256 | "settings.app.currentVersion": "Version actuelle :", | 256 | "settings.app.currentVersion": "Version actuelle :", |
257 | "settings.app.form.accentColor": "Accent de couleur", | 257 | "settings.app.form.accentColor": "Accent de couleur", |
258 | "settings.app.form.adaptableDarkMode": "Activer le mode sombre adaptable", | ||
258 | "settings.app.form.autoLaunchInBackground": "Ouvrir en arrière-plan", | 259 | "settings.app.form.autoLaunchInBackground": "Ouvrir en arrière-plan", |
259 | "settings.app.form.autoLaunchOnStart": "Lancer Ferdi au démarrage", | 260 | "settings.app.form.autoLaunchOnStart": "Lancer Ferdi au démarrage", |
260 | "settings.app.form.beta": "Accepter les versions bêta", | 261 | "settings.app.form.beta": "Accepter les versions bêta", |
261 | "settings.app.form.darkMode": "Activer le thème sombre", | 262 | "settings.app.form.darkMode": "Joindre le côté obscure", |
262 | "settings.app.form.enableGPUAcceleration": "Activer l'accélération GPU", | 263 | "settings.app.form.enableGPUAcceleration": "Activer l'accélération GPU", |
263 | "settings.app.form.enableLock": "Activer le verrouillage de Ferdi", | 264 | "settings.app.form.enableLock": "Activer le verrouillage de Ferdi", |
264 | "settings.app.form.enableSpellchecking": "Activer la vérification orthographique", | 265 | "settings.app.form.enableSpellchecking": "Activer la vérification orthographique", |
@@ -437,14 +438,14 @@ | |||
437 | "signup.link.login": "Vous avez déjà un compte? Connectez-vous", | 438 | "signup.link.login": "Vous avez déjà un compte? Connectez-vous", |
438 | "signup.password.label": "Mot de passe", | 439 | "signup.password.label": "Mot de passe", |
439 | "signup.submit.label": "Créer un compte", | 440 | "signup.submit.label": "Créer un compte", |
440 | "subscription.bestValue": "Best value", | 441 | "subscription.bestValue": "Le meilleur prix", |
441 | "subscription.cta.activateTrial": "Oui, commencer l'essai gratuit de Ferdi Professionnel", | 442 | "subscription.cta.activateTrial": "Oui, commencer l'essai gratuit de Ferdi Professionnel", |
442 | "subscription.cta.allOptions": "Voir toutes les options", | 443 | "subscription.cta.allOptions": "Voir toutes les options", |
443 | "subscription.cta.choosePlan": "Choisissez votre plan", | 444 | "subscription.cta.choosePlan": "Choisissez votre plan", |
444 | "subscription.includedProFeatures": "Le plan Ferdi Professionnel inclus:", | 445 | "subscription.includedProFeatures": "Le plan Ferdi Professionnel inclus:", |
445 | "subscription.interval.per": "per {interval}", | 446 | "subscription.interval.per": "par {interval}", |
446 | "subscription.interval.perMonth": "per month", | 447 | "subscription.interval.perMonth": "par mois", |
447 | "subscription.interval.perMonthPerUser": "per month & user", | 448 | "subscription.interval.perMonthPerUser": "par mois et utilisateur", |
448 | "subscription.planItem.upgradeAccount": "Améliorez votre compte", | 449 | "subscription.planItem.upgradeAccount": "Améliorez votre compte", |
449 | "subscription.teaser.includedFeatures": "Les plans de Ferdi payés inclus:", | 450 | "subscription.teaser.includedFeatures": "Les plans de Ferdi payés inclus:", |
450 | "subscription.teaser.intro": "Ferdi 5 viens avec une large plage de nouvelles fonctionnalités pour renforcer votre communication quotidienne - batteries inclus. Aller voir nos nouveaux plans et trouver celui qui vous satisfait le mieux!", | 451 | "subscription.teaser.intro": "Ferdi 5 viens avec une large plage de nouvelles fonctionnalités pour renforcer votre communication quotidienne - batteries inclus. Aller voir nos nouveaux plans et trouver celui qui vous satisfait le mieux!", |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index e96d9e14f..ebc7b1dbe 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Tá taisce Ferdi ag baint úsáid as {size} den spás diosca.", | 255 | "settings.app.cacheInfo": "Tá taisce Ferdi ag baint úsáid as {size} den spás diosca.", |
256 | "settings.app.currentVersion": "Leagan reatha:", | 256 | "settings.app.currentVersion": "Leagan reatha:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Oscail sa chúlra", | 259 | "settings.app.form.autoLaunchInBackground": "Oscail sa chúlra", |
259 | "settings.app.form.autoLaunchOnStart": "Láinseáil Ferdi ón tús", | 260 | "settings.app.form.autoLaunchOnStart": "Láinseáil Ferdi ón tús", |
260 | "settings.app.form.beta": "Cuir leagain béite san áireamh", | 261 | "settings.app.form.beta": "Cuir leagain béite san áireamh", |
diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/he.json +++ b/src/i18n/locales/he.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 5ad85cc1a..5d6f353f0 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi predmemorija trenutno koristi {size} prostora na disku", | 255 | "settings.app.cacheInfo": "Ferdi predmemorija trenutno koristi {size} prostora na disku", |
256 | "settings.app.currentVersion": "Trenutna verzija:", | 256 | "settings.app.currentVersion": "Trenutna verzija:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Otvori u pozadini", | 259 | "settings.app.form.autoLaunchInBackground": "Otvori u pozadini", |
259 | "settings.app.form.autoLaunchOnStart": "Pokreni Ferdi sa sistemom", | 260 | "settings.app.form.autoLaunchOnStart": "Pokreni Ferdi sa sistemom", |
260 | "settings.app.form.beta": "Obuhvati i beta verzije", | 261 | "settings.app.form.beta": "Obuhvati i beta verzije", |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 940db5dff..7695f5fc4 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "A Ferdi gyorsÃtótár jelenleg {size} lemezterületet használ.", | 255 | "settings.app.cacheInfo": "A Ferdi gyorsÃtótár jelenleg {size} lemezterületet használ.", |
256 | "settings.app.currentVersion": "Aktuális verzió:", | 256 | "settings.app.currentVersion": "Aktuális verzió:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Megnyitás háttérben", | 259 | "settings.app.form.autoLaunchInBackground": "Megnyitás háttérben", |
259 | "settings.app.form.autoLaunchOnStart": "Ferdi betöltése indÃtáskor", | 260 | "settings.app.form.autoLaunchOnStart": "Ferdi betöltése indÃtáskor", |
260 | "settings.app.form.beta": "Béta verziók keresése", | 261 | "settings.app.form.beta": "Béta verziók keresése", |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 2378bfbad..e48458d07 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Singgahan Ferdi sedang menggunakan ruang disk {size}.", | 255 | "settings.app.cacheInfo": "Singgahan Ferdi sedang menggunakan ruang disk {size}.", |
256 | "settings.app.currentVersion": "Versi saat ini:", | 256 | "settings.app.currentVersion": "Versi saat ini:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Buka di latar belakang", | 259 | "settings.app.form.autoLaunchInBackground": "Buka di latar belakang", |
259 | "settings.app.form.autoLaunchOnStart": "Jalankan Ferdi saat komputer dimulai", | 260 | "settings.app.form.autoLaunchOnStart": "Jalankan Ferdi saat komputer dimulai", |
260 | "settings.app.form.beta": "Sertakan versi beta", | 261 | "settings.app.form.beta": "Sertakan versi beta", |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index f3ed42e3a..07a4dc98d 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi sta utilizzando {size} di spazio su disco.", | 255 | "settings.app.cacheInfo": "Ferdi sta utilizzando {size} di spazio su disco.", |
256 | "settings.app.currentVersion": "Versione attuale:", | 256 | "settings.app.currentVersion": "Versione attuale:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Apri in background", | 259 | "settings.app.form.autoLaunchInBackground": "Apri in background", |
259 | "settings.app.form.autoLaunchOnStart": "Esegui Ferdi all'avvio", | 260 | "settings.app.form.autoLaunchOnStart": "Esegui Ferdi all'avvio", |
260 | "settings.app.form.beta": "Includi versioni beta", | 261 | "settings.app.form.beta": "Includi versioni beta", |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index b9b6da6c3..0f5a14be1 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "ç¾åœ¨ã€Ferdiã®ã‚ャッシュã¯ãƒ‡ã‚£ã‚¹ã‚¯ã®{size}分を使用ã—ã¦ã„ã¾ã™ã€‚", | 255 | "settings.app.cacheInfo": "ç¾åœ¨ã€Ferdiã®ã‚ャッシュã¯ãƒ‡ã‚£ã‚¹ã‚¯ã®{size}分を使用ã—ã¦ã„ã¾ã™ã€‚", |
256 | "settings.app.currentVersion": "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:", | 256 | "settings.app.currentVersion": "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã", | 259 | "settings.app.form.autoLaunchInBackground": "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã", |
259 | "settings.app.form.autoLaunchOnStart": "システム起動時ã«Ferdiã‚’é–‹ã", | 260 | "settings.app.form.autoLaunchOnStart": "システム起動時ã«Ferdiã‚’é–‹ã", |
260 | "settings.app.form.beta": "Betaãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å«ã‚ã‚‹", | 261 | "settings.app.form.beta": "Betaãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å«ã‚ã‚‹", |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 2f0aaa5ae..302b513d2 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "áƒáƒ›áƒŸáƒáƒ›áƒ˜áƒœáƒ“ელი ვერსიáƒ:", | 256 | "settings.app.currentVersion": "áƒáƒ›áƒŸáƒáƒ›áƒ˜áƒœáƒ“ელი ვერსიáƒ:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "გáƒáƒ®áƒ¡áƒ”ნით ფáƒáƒœáƒ–ე", | 259 | "settings.app.form.autoLaunchInBackground": "გáƒáƒ®áƒ¡áƒ”ნით ფáƒáƒœáƒ–ე", |
259 | "settings.app.form.autoLaunchOnStart": "გáƒáƒ”შვáƒáƒ¡ Ferdi სისტემის ჩáƒáƒ¢áƒ•áƒ˜áƒ თვისáƒáƒ¡", | 260 | "settings.app.form.autoLaunchOnStart": "გáƒáƒ”შვáƒáƒ¡ Ferdi სისტემის ჩáƒáƒ¢áƒ•áƒ˜áƒ თვისáƒáƒ¡", |
260 | "settings.app.form.beta": "ჩáƒáƒ თეთ ბეტრვერსიები", | 261 | "settings.app.form.beta": "ჩáƒáƒ თეთ ბეტრვერსიები", |
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index ce8a35ce8..80f33d583 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache gebruikt momenteel {size} schijfruimte.", | 255 | "settings.app.cacheInfo": "Ferdi cache gebruikt momenteel {size} schijfruimte.", |
256 | "settings.app.currentVersion": "Huidige versie:", | 256 | "settings.app.currentVersion": "Huidige versie:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", | 259 | "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", |
259 | "settings.app.form.autoLaunchOnStart": "Lanceer Ferdi bij opstarten", | 260 | "settings.app.form.autoLaunchOnStart": "Lanceer Ferdi bij opstarten", |
260 | "settings.app.form.beta": "Inclusief beta versies", | 261 | "settings.app.form.beta": "Inclusief beta versies", |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index e5467c877..c71954427 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.", | 255 | "settings.app.cacheInfo": "Ferdi gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.", |
256 | "settings.app.currentVersion": "Huidige versie:", | 256 | "settings.app.currentVersion": "Huidige versie:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", | 259 | "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", |
259 | "settings.app.form.autoLaunchOnStart": "Open Ferdi bij opstarten", | 260 | "settings.app.form.autoLaunchOnStart": "Open Ferdi bij opstarten", |
260 | "settings.app.form.beta": "Inclusief bètaversies", | 261 | "settings.app.form.beta": "Inclusief bètaversies", |
diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 6cc75eaf3..e29e80e9f 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", | 255 | "settings.app.cacheInfo": "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", |
256 | "settings.app.currentVersion": "Aktualna wersja:", | 256 | "settings.app.currentVersion": "Aktualna wersja:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Otwórz w tle", | 259 | "settings.app.form.autoLaunchInBackground": "Otwórz w tle", |
259 | "settings.app.form.autoLaunchOnStart": "Uruchom Ferdi na poczÄ…tku", | 260 | "settings.app.form.autoLaunchOnStart": "Uruchom Ferdi na poczÄ…tku", |
260 | "settings.app.form.beta": "Uwzględnij wersje beta", | 261 | "settings.app.form.beta": "Uwzględnij wersje beta", |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 9dec7e7a3..591b35610 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,33 +1,33 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Recarregar", | 2 | "app.errorHandler.action": "Actualizar", |
3 | "app.errorHandler.headline": "Opa! Algo deu errado.", | 3 | "app.errorHandler.headline": "Uoops! Algo correu mal", |
4 | "feature.announcements.changelog.headline": "Mudanças no Ferdi {version}", | 4 | "feature.announcements.changelog.headline": "Alterações no Ferdi {version}", |
5 | "feature.delayApp.headline": "Por favor, adquira uma licença para pular o tempo de espera", | 5 | "feature.delayApp.headline": "Por favor, adquira uma licença Ferdi para não ter tempo de espera", |
6 | "feature.delayApp.text": "Ferdi continuará em {seconds} segundos.", | 6 | "feature.delayApp.text": "Ferdi continuará em {seconds} segundos.", |
7 | "feature.delayApp.trial.action": "Sim, eu quero o perÃodo de testes gratuito de 14 dias do Ferdi Professional", | 7 | "feature.delayApp.trial.action": "Sim, eu quero o perÃodo de testes gratuito de 14 dias do Ferdi Professional", |
8 | "feature.delayApp.trial.actionShort": "Ativar perÃodo de testes gratuito do Ferdi Professional", | 8 | "feature.delayApp.trial.actionShort": "Ativar perÃodo de testes gratuito do Ferdi Professional", |
9 | "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 dÃas y cruza la linea.", | 9 | "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 dÃas y cruza la linea.", |
10 | "feature.delayApp.upgrade.action": "Adquira uma licença de suporte Ferdi", | 10 | "feature.delayApp.upgrade.action": "Adquira uma licença de suporte Ferdi", |
11 | "feature.delayApp.upgrade.actionShort": "Atualizar conta", | 11 | "feature.delayApp.upgrade.actionShort": "Atualizar conta", |
12 | "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", | 12 | "feature.planSelection.cta.ctaDowngradeFree": "Despromover para Gratuito", |
13 | "feature.planSelection.cta.stayOnFree": "Stay on Free", | 13 | "feature.planSelection.cta.stayOnFree": "Continuar em Gratuito", |
14 | "feature.planSelection.cta.trial": "Start my free 14-days Trial", | 14 | "feature.planSelection.cta.trial": "Iniciar meu teste grátis de 14 dias", |
15 | "feature.planSelection.cta.upgradePersonal": "Choose Personal", | 15 | "feature.planSelection.cta.upgradePersonal": "Escolha Pessoal", |
16 | "feature.planSelection.cta.upgradePro": "Choose Professional", | 16 | "feature.planSelection.cta.upgradePro": "Escolha Profissional", |
17 | "feature.planSelection.free.text": "Basic functionality", | 17 | "feature.planSelection.free.text": "Funcionalidade básica", |
18 | "feature.planSelection.fullFeatureList": "Complete comparison of all plans", | 18 | "feature.planSelection.fullFeatureList": "Comparação completa de todos os planos", |
19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 19 | "feature.planSelection.fullscreen.dialog.cta.downgrade": "Despromover para Gratuito", |
20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", | 20 | "feature.planSelection.fullscreen.dialog.cta.upgrade": "Escolha Pessoal", |
21 | "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 21 | "feature.planSelection.fullscreen.dialog.message": "Você está prestes a fazer a despromoção para nossa conta gratuita. Você tem certeza? Clique aqui para obter mais serviços e funcionalidade por apenas {currency}{price} por mês.", |
22 | "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 22 | "feature.planSelection.fullscreen.dialog.title": "Despromover o seu Plano Ferdi", |
23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 23 | "feature.planSelection.fullscreen.subheadline": "Agora tem de fazer uma escolha. O Ferdi trabalha melhor em nossos planos pessoais e profissionais. Por favor, compare estes planos e escolha o que melhor se adapta a si.", |
24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", | 24 | "feature.planSelection.fullscreen.welcome": "Está prestes a escolher, {name}", |
25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 25 | "feature.planSelection.personal.text": "Mais serviços, sem espera - ideal para uso pessoal.", |
26 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | 26 | "feature.planSelection.pricesBasedOnAnnualPayment": "Todos os preços são baseados no pagamento anual", |
27 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 27 | "feature.planSelection.pro.text": "Serviços ilimitados e recursos profissionais para si - e para a sua equipa.", |
28 | "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", | 28 | "feature.quickSwitch.info": "Seleccione um serviço com TAB, ↑ e ↓. Abra um serviço com ENTER.", |
29 | "feature.quickSwitch.search": "Search...", | 29 | "feature.quickSwitch.search": "A procurar...", |
30 | "feature.quickSwitch.title": "QuickSwitch", | 30 | "feature.quickSwitch.title": "Troca Rápida", |
31 | "feature.serviceLimit.limitReached": "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", | 31 | "feature.serviceLimit.limitReached": "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", |
32 | "feature.shareFranz.action.email": "Enviar por e-mail", | 32 | "feature.shareFranz.action.email": "Enviar por e-mail", |
33 | "feature.shareFranz.action.facebook": "Compartilhar no Facebook", | 33 | "feature.shareFranz.action.facebook": "Compartilhar no Facebook", |
@@ -39,13 +39,13 @@ | |||
39 | "feature.todos.premium.info": "As Listas de Tarefa do Ferdi estão disponÃveis para usuários premium!", | 39 | "feature.todos.premium.info": "As Listas de Tarefa do Ferdi estão disponÃveis para usuários premium!", |
40 | "feature.todos.premium.rollout": "As outras pessoas terão que esperar um pouquinho mais.", | 40 | "feature.todos.premium.rollout": "As outras pessoas terão que esperar um pouquinho mais.", |
41 | "feature.todos.premium.upgrade": "Actualizar cuenta", | 41 | "feature.todos.premium.upgrade": "Actualizar cuenta", |
42 | "feature.trialStatusBar.cta": "Upgrade now", | 42 | "feature.trialStatusBar.cta": "Promover agora", |
43 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", | 43 | "feature.trialStatusBar.expired": "Seu teste grátis Ferdi {plan} expirou, por favor actualize sua conta.", |
44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 44 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Despromover para Gratuito", |
45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", | 45 | "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Escolha Pessoal", |
46 | "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", | 46 | "feature.trialStatusBar.fullscreen.dialog.message": "Você está prestes a fazer a despromoção para nossa conta gratuita. Você tem certeza? Clique aqui para obter mais serviços e funcionalidade por apenas {currency}{price} por mês.", |
47 | "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 47 | "feature.trialStatusBar.fullscreen.dialog.title": "Despromover o seu Plano Ferdi", |
48 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", | 48 | "feature.trialStatusBar.restTime": "Seu teste grátis Ferdi {plan} termina em {time}.", |
49 | "global.api.unhealthy": "Não foi possÃvel conectar-se aos serviços on-line do Ferdi.", | 49 | "global.api.unhealthy": "Não foi possÃvel conectar-se aos serviços on-line do Ferdi.", |
50 | "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", | 50 | "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", |
51 | "global.notConnectedToTheInternet": "Você não está conectado à internet", | 51 | "global.notConnectedToTheInternet": "Você não está conectado à internet", |
@@ -58,7 +58,7 @@ | |||
58 | "import.notSupportedHeadline": "Serviços ainda não suportados pelo Ferdi 5 ", | 58 | "import.notSupportedHeadline": "Serviços ainda não suportados pelo Ferdi 5 ", |
59 | "import.skip.label": "Quero adicionar serviços manualmente", | 59 | "import.skip.label": "Quero adicionar serviços manualmente", |
60 | "import.submit.label": "Importar serviços", | 60 | "import.submit.label": "Importar serviços", |
61 | "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", | 61 | "infobar.authRequestFailed": "Houve erros ao tentar autenticar. Por favor, tente desconectar e autenticar novamente se o erro persistir.", |
62 | "infobar.buttonChangelog": "O que há de novo?", | 62 | "infobar.buttonChangelog": "O que há de novo?", |
63 | "infobar.buttonInstallUpdate": "Reiniciar e instalar atualizações ", | 63 | "infobar.buttonInstallUpdate": "Reiniciar e instalar atualizações ", |
64 | "infobar.buttonReloadServices": "Recarregar serviços", | 64 | "infobar.buttonReloadServices": "Recarregar serviços", |
@@ -72,12 +72,12 @@ | |||
72 | "invite.skip.label": "Quero fazer isso depois", | 72 | "invite.skip.label": "Quero fazer isso depois", |
73 | "invite.submit.label": "Enviar convites", | 73 | "invite.submit.label": "Enviar convites", |
74 | "invite.successInfo": "Convites enviados com sucesso", | 74 | "invite.successInfo": "Convites enviados com sucesso", |
75 | "locked.headline": "Locked", | 75 | "locked.headline": "Bloqueado", |
76 | "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | 76 | "locked.info": "Ferdi está bloqueado no momento. Por favor, desbloqueie Ferdi com sua senha para ver suas mensagens.", |
77 | "locked.invalidCredentials": "Password invalid", | 77 | "locked.invalidCredentials": "Senha inválida", |
78 | "locked.password.label": "Password", | 78 | "locked.password.label": "Senha", |
79 | "locked.submit.label": "Unlock", | 79 | "locked.submit.label": "Desbloquear", |
80 | "login.changeServer": "Change server", | 80 | "login.changeServer": "Alterar servidor", |
81 | "login.customServerQuestion": "Using a custom Ferdi server?", | 81 | "login.customServerQuestion": "Using a custom Ferdi server?", |
82 | "login.customServerSuggestion": "Try importing your Franz account", | 82 | "login.customServerSuggestion": "Try importing your Franz account", |
83 | "login.email.label": "Endereço de E-mail", | 83 | "login.email.label": "Endereço de E-mail", |
@@ -85,7 +85,7 @@ | |||
85 | "login.invalidCredentials": "E-mail ou senha inválida", | 85 | "login.invalidCredentials": "E-mail ou senha inválida", |
86 | "login.link.password": "Trocar a senha", | 86 | "login.link.password": "Trocar a senha", |
87 | "login.link.signup": "Criar uma conta gratuita", | 87 | "login.link.signup": "Criar uma conta gratuita", |
88 | "login.password.label": "Password", | 88 | "login.password.label": "Senha", |
89 | "login.serverLogout": "Sua sessão expirou, faça o login novamente.", | 89 | "login.serverLogout": "Sua sessão expirou, faça o login novamente.", |
90 | "login.submit.label": "Entrar", | 90 | "login.submit.label": "Entrar", |
91 | "login.tokenExpired": "Sua sessão expirou, faça o login novamente.", | 91 | "login.tokenExpired": "Sua sessão expirou, faça o login novamente.", |
@@ -93,7 +93,7 @@ | |||
93 | "menu.Todoss.openTodosDrawer": "Abrir a gaveta de Listas de Tarefa", | 93 | "menu.Todoss.openTodosDrawer": "Abrir a gaveta de Listas de Tarefa", |
94 | "menu.app.about": "Sobre Ferdi", | 94 | "menu.app.about": "Sobre Ferdi", |
95 | "menu.app.announcement": "Quais as novidades?", | 95 | "menu.app.announcement": "Quais as novidades?", |
96 | "menu.app.autohideMenuBar": "Auto-hide menu bar", | 96 | "menu.app.autohideMenuBar": "Auto-ocultar barra de menu", |
97 | "menu.app.checkForUpdates": "Verificar se há atualizações", | 97 | "menu.app.checkForUpdates": "Verificar se há atualizações", |
98 | "menu.app.hide": "Ocultar", | 98 | "menu.app.hide": "Ocultar", |
99 | "menu.app.hideOthers": "Ocultar Outros", | 99 | "menu.app.hideOthers": "Ocultar Outros", |
@@ -127,17 +127,17 @@ | |||
127 | "menu.services": "Serviços", | 127 | "menu.services": "Serviços", |
128 | "menu.services.activatePreviousService": "Pular para serviço anterior", | 128 | "menu.services.activatePreviousService": "Pular para serviço anterior", |
129 | "menu.services.addNewService": "Adicionar Novo Serviço", | 129 | "menu.services.addNewService": "Adicionar Novo Serviço", |
130 | "menu.services.goHome": "Home", | 130 | "menu.services.goHome": "InÃcio", |
131 | "menu.services.setNextServiceActive": "Pular para próximo serviço", | 131 | "menu.services.setNextServiceActive": "Pular para próximo serviço", |
132 | "menu.todos": "Tareas pendientes", | 132 | "menu.todos": "Tareas pendientes", |
133 | "menu.todos.enableTodos": "Habilitar Tareas pendientes", | 133 | "menu.todos.enableTodos": "Habilitar Tareas pendientes", |
134 | "menu.view": "Visualizar ", | 134 | "menu.view": "Visualizar ", |
135 | "menu.view.back": "Back", | 135 | "menu.view.back": "Anterior", |
136 | "menu.view.enterFullScreen": "Modo Tela Cheia", | 136 | "menu.view.enterFullScreen": "Modo Tela Cheia", |
137 | "menu.view.exitFullScreen": "Sair da Tela Cheia", | 137 | "menu.view.exitFullScreen": "Sair da Tela Cheia", |
138 | "menu.view.forward": "Forward", | 138 | "menu.view.forward": "Seguinte", |
139 | "menu.view.lockFerdi": "Lock Ferdi", | 139 | "menu.view.lockFerdi": "Bloquear Ferdi", |
140 | "menu.view.openQuickSwitch": "Open Quick Switch", | 140 | "menu.view.openQuickSwitch": "Abrir Troca Rápida", |
141 | "menu.view.reloadFranz": "Recarregar Ferdi", | 141 | "menu.view.reloadFranz": "Recarregar Ferdi", |
142 | "menu.view.reloadService": "Reiniciar o Serviço", | 142 | "menu.view.reloadService": "Reiniciar o Serviço", |
143 | "menu.view.resetZoom": "Tamanho real", | 143 | "menu.view.resetZoom": "Tamanho real", |
@@ -163,20 +163,20 @@ | |||
163 | "password.submit.label": "Enviar", | 163 | "password.submit.label": "Enviar", |
164 | "password.successInfo": "Por favor, verifique o seu e-mail", | 164 | "password.successInfo": "Por favor, verifique o seu e-mail", |
165 | "premiumFeature.button.upgradeAccount": "Atualizar conta", | 165 | "premiumFeature.button.upgradeAccount": "Atualizar conta", |
166 | "pricing.features.accountSync": "Account Synchronisation", | 166 | "pricing.features.accountSync": "Sincronização Automática", |
167 | "pricing.features.adFree": "Sin anuncios para siempre!", | 167 | "pricing.features.adFree": "Sin anuncios para siempre!", |
168 | "pricing.features.appDelays": "Sem Telas de Espera", | 168 | "pricing.features.appDelays": "Sem Telas de Espera", |
169 | "pricing.features.customWebsites": "Adicionar Websites Personalizados", | 169 | "pricing.features.customWebsites": "Adicionar Websites Personalizados", |
170 | "pricing.features.desktopNotifications": "Desktop Notifications", | 170 | "pricing.features.desktopNotifications": "Notificações no ambiente de trabalho", |
171 | "pricing.features.onPremise": "En sitio y otros servicios alojados", | 171 | "pricing.features.onPremise": "En sitio y otros servicios alojados", |
172 | "pricing.features.recipes": "Choose from more than 70 Services", | 172 | "pricing.features.recipes": "Escolha entre mais de 70 serviços", |
173 | "pricing.features.serviceProxies": "Apoderados de Servicio", | 173 | "pricing.features.serviceProxies": "Apoderados de Servicio", |
174 | "pricing.features.spellchecker": "Soporte de corrector ortográfico", | 174 | "pricing.features.spellchecker": "Soporte de corrector ortográfico", |
175 | "pricing.features.teamManagement": "Gestão de Time", | 175 | "pricing.features.teamManagement": "Gestão de Time", |
176 | "pricing.features.thirdPartyServices": "Instalar servicios de terceros", | 176 | "pricing.features.thirdPartyServices": "Instalar servicios de terceros", |
177 | "pricing.features.unlimitedServices": "Agregar servicios ilimitados", | 177 | "pricing.features.unlimitedServices": "Agregar servicios ilimitados", |
178 | "pricing.features.upToSixServices": "Add up to 6 services", | 178 | "pricing.features.upToSixServices": "Adicionar até 6 serviços", |
179 | "pricing.features.upToThreeServices": "Add up to 3 services", | 179 | "pricing.features.upToThreeServices": "Adicionar até 3 serviços", |
180 | "pricing.features.workspaces": "Ãreas de trabalho", | 180 | "pricing.features.workspaces": "Ãreas de trabalho", |
181 | "pricing.plan.free": "Ferdi Gratuito", | 181 | "pricing.plan.free": "Ferdi Gratuito", |
182 | "pricing.plan.legacy": "Ferdi Premium", | 182 | "pricing.plan.legacy": "Ferdi Premium", |
@@ -188,17 +188,17 @@ | |||
188 | "pricing.plan.pro-yearly": "Ferdi Profissional Anual", | 188 | "pricing.plan.pro-yearly": "Ferdi Profissional Anual", |
189 | "pricing.trial.cta.accept": "Sim, atualizar minha conta para o Ferdi Profissional", | 189 | "pricing.trial.cta.accept": "Sim, atualizar minha conta para o Ferdi Profissional", |
190 | "pricing.trial.cta.skip": "Continuar para o Ferdi", | 190 | "pricing.trial.cta.skip": "Continuar para o Ferdi", |
191 | "pricing.trial.cta.start": "Start using Ferdi", | 191 | "pricing.trial.cta.start": "Começar a usar Ferdi", |
192 | "pricing.trial.error": "Desculpe, não conseguimos ativar o seu perÃodo de testes", | 192 | "pricing.trial.error": "Desculpe, não conseguimos ativar o seu perÃodo de testes", |
193 | "pricing.trial.features.headline": "Incluso no Ferdi Profissional:", | 193 | "pricing.trial.features.headline": "Incluso no Ferdi Profissional:", |
194 | "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", | 194 | "pricing.trial.headline.pro": "Olá {name}, bem-vindo/a ao Ferdi", |
195 | "pricing.trial.intro.happyMessaging": "Happy messaging,", | 195 | "pricing.trial.intro.happyMessaging": "Mensagens felizes,", |
196 | "pricing.trial.intro.specialTreat": "We have a special treat for you.", | 196 | "pricing.trial.intro.specialTreat": "Temos uma oferta especial para si.", |
197 | "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", | 197 | "pricing.trial.intro.tryPro": "Aproveite a experiência completa de Ferdi Profissional completamente gratuita durante 14 dias.", |
198 | "pricing.trial.terms.automaticTrialEnd": "Seu perÃodo de testes encerra automaticamente em 14 dias", | 198 | "pricing.trial.terms.automaticTrialEnd": "Seu perÃodo de testes encerra automaticamente em 14 dias", |
199 | "pricing.trial.terms.headline": "Sem vÃnculos", | 199 | "pricing.trial.terms.headline": "Sem vÃnculos", |
200 | "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", | 200 | "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", |
201 | "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", | 201 | "pricing.trial.terms.trialWorth": "Teste gratuito (normalmente {currency}{price} por mês)", |
202 | "service.crashHandler.action": "Recarregar {name}", | 202 | "service.crashHandler.action": "Recarregar {name}", |
203 | "service.crashHandler.autoReload": "Tentando reestabelecer {name} automaticamente em {seconds} segundos", | 203 | "service.crashHandler.autoReload": "Tentando reestabelecer {name} automaticamente em {seconds} segundos", |
204 | "service.crashHandler.headline": "Ah, não!", | 204 | "service.crashHandler.headline": "Ah, não!", |
@@ -217,9 +217,9 @@ | |||
217 | "service.restrictedHandler.serviceLimit.text": "Por favor mejore su cuenta para poder utilizar más de {count} servicios.", | 217 | "service.restrictedHandler.serviceLimit.text": "Por favor mejore su cuenta para poder utilizar más de {count} servicios.", |
218 | "service.webviewLoader.loading": "Carregando", | 218 | "service.webviewLoader.loading": "Carregando", |
219 | "services.getStarted": "Iniciar", | 219 | "services.getStarted": "Iniciar", |
220 | "services.login": "Please login to use Ferdi.", | 220 | "services.login": "Por favor, inicie sua sessão para usar Ferdi.", |
221 | "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", | 221 | "services.serverInfo": "Opcionalmente, você pode mudar seu servidor Ferdi clicando no icon de roda dentada no canto inferior esquerdo.", |
222 | "services.serverless": "Use Ferdi without an Account", | 222 | "services.serverless": "Use Ferdi sem uma conta", |
223 | "services.welcome": "Bem-vindo ao Ferdi!", | 223 | "services.welcome": "Bem-vindo ao Ferdi!", |
224 | "settings.account.account.editButton": "Editar conta", | 224 | "settings.account.account.editButton": "Editar conta", |
225 | "settings.account.accountType.basic": "Conta Básica", | 225 | "settings.account.accountType.basic": "Conta Básica", |
@@ -248,39 +248,40 @@ | |||
248 | "settings.account.upgradeToPro.label": "Atualizar para o Ferdi Profissional", | 248 | "settings.account.upgradeToPro.label": "Atualizar para o Ferdi Profissional", |
249 | "settings.account.userInfoRequestFailed": "Não foi possÃvel carregar as informações do usuário", | 249 | "settings.account.userInfoRequestFailed": "Não foi possÃvel carregar as informações do usuário", |
250 | "settings.account.yourLicense": "Su Licencia Ferdi", | 250 | "settings.account.yourLicense": "Su Licencia Ferdi", |
251 | "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: #7367f0)", | 251 | "settings.app.accentColorInfo": "Escreva sua cor de destaque em um formato compatÃvel com CSS. (Padrão: #7367f0)", |
252 | "settings.app.buttonClearAllCache": "Limpar cache", | 252 | "settings.app.buttonClearAllCache": "Limpar cache", |
253 | "settings.app.buttonInstallUpdate": "Reiniciar e instalar atualizações ", | 253 | "settings.app.buttonInstallUpdate": "Reiniciar e instalar atualizações ", |
254 | "settings.app.buttonSearchForUpdate": "Verificar se há atualizações", | 254 | "settings.app.buttonSearchForUpdate": "Verificar se há atualizações", |
255 | "settings.app.cacheInfo": "O cache do Ferdi está usando {size} de espaço em disco atualmente.", | 255 | "settings.app.cacheInfo": "O cache do Ferdi está usando {size} de espaço em disco atualmente.", |
256 | "settings.app.currentVersion": "Versão atual:", | 256 | "settings.app.currentVersion": "Versão atual:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Cor de destaque", |
258 | "settings.app.form.adaptableDarkMode": "Activar modo de escuridão adaptável", | ||
258 | "settings.app.form.autoLaunchInBackground": "Abrir em segundo plano", | 259 | "settings.app.form.autoLaunchInBackground": "Abrir em segundo plano", |
259 | "settings.app.form.autoLaunchOnStart": "Abrir o Ferdi ao iniciar o sistema", | 260 | "settings.app.form.autoLaunchOnStart": "Abrir o Ferdi ao iniciar o sistema", |
260 | "settings.app.form.beta": "Incluir versões beta", | 261 | "settings.app.form.beta": "Incluir versões beta", |
261 | "settings.app.form.darkMode": "Venha para o Lado Negro da força", | 262 | "settings.app.form.darkMode": "Venha para o Lado Negro da força", |
262 | "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU", | 263 | "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU", |
263 | "settings.app.form.enableLock": "Enable Ferdi password lock", | 264 | "settings.app.form.enableLock": "Activar o bloqueio com palavra-passe do Ferdi", |
264 | "settings.app.form.enableSpellchecking": "Ativar correção ortográfica", | 265 | "settings.app.form.enableSpellchecking": "Ativar correção ortográfica", |
265 | "settings.app.form.enableSystemTray": "Exibir o Ferdi na barra de sistema", | 266 | "settings.app.form.enableSystemTray": "Exibir o Ferdi na barra de sistema", |
266 | "settings.app.form.enableTodos": "Activar Ferdi Todos", | 267 | "settings.app.form.enableTodos": "Activar Ferdi Todos", |
267 | "settings.app.form.hibernate": "Enable service hibernation", | 268 | "settings.app.form.hibernate": "Activar hibernação do serviço", |
268 | "settings.app.form.hibernationStrategy": "Hibernation strategy", | 269 | "settings.app.form.hibernationStrategy": "Estratégia de Hibernação", |
269 | "settings.app.form.keepAllWorkspacesLoaded": "Mantener todas las Ãreas de trabajo cargadas", | 270 | "settings.app.form.keepAllWorkspacesLoaded": "Mantener todas las Ãreas de trabajo cargadas", |
270 | "settings.app.form.language": "Idioma", | 271 | "settings.app.form.language": "Idioma", |
271 | "settings.app.form.lockPassword": "Ferdi Lock password", | 272 | "settings.app.form.lockPassword": "Palavra-passe para bloqueio do Ferdi", |
272 | "settings.app.form.minimizeToSystemTray": "Minimizar o Ferdi para a área de sistema", | 273 | "settings.app.form.minimizeToSystemTray": "Minimizar o Ferdi para a área de sistema", |
273 | "settings.app.form.noUpdates": "Disable updates", | 274 | "settings.app.form.noUpdates": "Desactivar actualizações", |
274 | "settings.app.form.privateNotifications": "Don't show message content in notifications", | 275 | "settings.app.form.privateNotifications": "Não mostrar o conteúdo das mensagens nas notificações", |
275 | "settings.app.form.runInBackground": "Manter o Ferdi no fundo quando fechar a janela", | 276 | "settings.app.form.runInBackground": "Manter o Ferdi no fundo quando fechar a janela", |
276 | "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", | 277 | "settings.app.form.scheduledDNDEnabled": "Activar Não-Perturbar agendado", |
277 | "settings.app.form.scheduledDNDEnd": "To", | 278 | "settings.app.form.scheduledDNDEnd": "Até", |
278 | "settings.app.form.scheduledDNDStart": "From", | 279 | "settings.app.form.scheduledDNDStart": "Desde", |
279 | "settings.app.form.server": "Server", | 280 | "settings.app.form.server": "Servidor", |
280 | "settings.app.form.showDisabledServices": "Mostrar abas de serviços desativados", | 281 | "settings.app.form.showDisabledServices": "Mostrar abas de serviços desativados", |
281 | "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar Ãcone de mensagem não lida quando as notificações estiverem desativadas", | 282 | "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar Ãcone de mensagem não lida quando as notificações estiverem desativadas", |
282 | "settings.app.form.showServiceNavigationBar": "Always show service navigation bar", | 283 | "settings.app.form.showServiceNavigationBar": "Sempre mostrar a barra de navegação do serviço", |
283 | "settings.app.form.todoServer": "Todo Server", | 284 | "settings.app.form.todoServer": "Tarefa do Servidor", |
284 | "settings.app.form.universalDarkMode": "Enable universal Dark Mode", | 285 | "settings.app.form.universalDarkMode": "Enable universal Dark Mode", |
285 | "settings.app.headline": "Configurações", | 286 | "settings.app.headline": "Configurações", |
286 | "settings.app.headlineAdvanced": "Avançado", | 287 | "settings.app.headlineAdvanced": "Avançado", |
@@ -420,7 +421,7 @@ | |||
420 | "sidebar.addNewService": "Adicionar novo serviço", | 421 | "sidebar.addNewService": "Adicionar novo serviço", |
421 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | 422 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", |
422 | "sidebar.closeWorkspaceDrawer": "Fechar menu da área de trabalho", | 423 | "sidebar.closeWorkspaceDrawer": "Fechar menu da área de trabalho", |
423 | "sidebar.lockFerdi": "Lock Ferdi", | 424 | "sidebar.lockFerdi": "Bloquear Ferdi", |
424 | "sidebar.muteApp": "Desativar notificações e áudio", | 425 | "sidebar.muteApp": "Desativar notificações e áudio", |
425 | "sidebar.openTodosDrawer": "Open Ferdi Todos", | 426 | "sidebar.openTodosDrawer": "Open Ferdi Todos", |
426 | "sidebar.openWorkspaceDrawer": "Abrir o menu da área de trabalho", | 427 | "sidebar.openWorkspaceDrawer": "Abrir o menu da área de trabalho", |
@@ -435,7 +436,7 @@ | |||
435 | "signup.legal.privacy": "Declaração de Privacidade ", | 436 | "signup.legal.privacy": "Declaração de Privacidade ", |
436 | "signup.legal.terms": "Termos de serviço", | 437 | "signup.legal.terms": "Termos de serviço", |
437 | "signup.link.login": "Já tem uma conta?", | 438 | "signup.link.login": "Já tem uma conta?", |
438 | "signup.password.label": "Password", | 439 | "signup.password.label": "Senha", |
439 | "signup.submit.label": "Criar uma conta", | 440 | "signup.submit.label": "Criar uma conta", |
440 | "subscription.bestValue": "Best value", | 441 | "subscription.bestValue": "Best value", |
441 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", | 442 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", |
@@ -444,9 +445,9 @@ | |||
444 | "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", | 445 | "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", |
445 | "subscription.interval.per": "per {interval}", | 446 | "subscription.interval.per": "per {interval}", |
446 | "subscription.interval.perMonth": "per month", | 447 | "subscription.interval.perMonth": "per month", |
447 | "subscription.interval.perMonthPerUser": "per month & user", | 448 | "subscription.interval.perMonthPerUser": "por mês e por utilizador", |
448 | "subscription.planItem.upgradeAccount": "Actualizar cuenta", | 449 | "subscription.planItem.upgradeAccount": "Actualizar cuenta", |
449 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", | 450 | "subscription.teaser.includedFeatures": "Planos pagos Ferdi incluem:", |
450 | "subscription.teaser.intro": "O Ferdi 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", | 451 | "subscription.teaser.intro": "O Ferdi 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", |
451 | "subscriptionPopup.buttonCancel": "Cancelar", | 452 | "subscriptionPopup.buttonCancel": "Cancelar", |
452 | "subscriptionPopup.buttonDone": "Feito", | 453 | "subscriptionPopup.buttonDone": "Feito", |
@@ -458,17 +459,17 @@ | |||
458 | "tabs.item.enableAudio": "Ativar áudio", | 459 | "tabs.item.enableAudio": "Ativar áudio", |
459 | "tabs.item.enableNotification": "Ativar notificações", | 460 | "tabs.item.enableNotification": "Ativar notificações", |
460 | "tabs.item.enableService": "Ativar serviço", | 461 | "tabs.item.enableService": "Ativar serviço", |
461 | "tabs.item.reload": "Recarregar", | 462 | "tabs.item.reload": "Actualizar", |
462 | "validation.email": "inválido", | 463 | "validation.email": "inválido", |
463 | "validation.minLength": "{campo} deve ter pelo menos {comprimento} mais caracteres ", | 464 | "validation.minLength": "{campo} deve ter pelo menos {comprimento} mais caracteres ", |
464 | "validation.oneRequired": "Necessário pelo menos um", | 465 | "validation.oneRequired": "Necessário pelo menos um", |
465 | "validation.required": "{campo} obrigatório", | 466 | "validation.required": "{campo} obrigatório", |
466 | "validation.url": "{campo} essa URL não é válida", | 467 | "validation.url": "{campo} essa URL não é válida", |
467 | "webControls.back": "Back", | 468 | "webControls.back": "Anterior", |
468 | "webControls.forward": "Forward", | 469 | "webControls.forward": "Seguinte", |
469 | "webControls.goHome": "Home", | 470 | "webControls.goHome": "InÃcio", |
470 | "webControls.openInBrowser": "Open in Browser", | 471 | "webControls.openInBrowser": "Abrir no navegador", |
471 | "webControls.reload": "Recarregar", | 472 | "webControls.reload": "Actualizar", |
472 | "welcome.loginButton": "Entrar na sua conta", | 473 | "welcome.loginButton": "Entrar na sua conta", |
473 | "welcome.signupButton": "Criar uma conta gratuita", | 474 | "welcome.signupButton": "Criar uma conta gratuita", |
474 | "workspaceDrawer.addNewWorkspaceLabel": "Adicionar uma nova área de trabalho", | 475 | "workspaceDrawer.addNewWorkspaceLabel": "Adicionar uma nova área de trabalho", |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index f5beac6b3..3d14d5414 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "A cache do Ferdi está a usar {size} de espaço em disco.", | 255 | "settings.app.cacheInfo": "A cache do Ferdi está a usar {size} de espaço em disco.", |
256 | "settings.app.currentVersion": "Versão atual", | 256 | "settings.app.currentVersion": "Versão atual", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Abrir em segundo plano", | 259 | "settings.app.form.autoLaunchInBackground": "Abrir em segundo plano", |
259 | "settings.app.form.autoLaunchOnStart": "Iniciar o Ferdi após iniciar o computador", | 260 | "settings.app.form.autoLaunchOnStart": "Iniciar o Ferdi após iniciar o computador", |
260 | "settings.app.form.beta": "Incluir versões instáveis (beta)", | 261 | "settings.app.form.beta": "Incluir versões instáveis (beta)", |
diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/ro.json +++ b/src/i18n/locales/ro.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index b329522f4..5d3636d9e 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "КÑш занимает {size} на диÑке.", | 255 | "settings.app.cacheInfo": "КÑш занимает {size} на диÑке.", |
256 | "settings.app.currentVersion": "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:", | 256 | "settings.app.currentVersion": "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Открывать в фоне", | 259 | "settings.app.form.autoLaunchInBackground": "Открывать в фоне", |
259 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкать Ferdi при Ñтарте", | 260 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкать Ferdi при Ñтарте", |
260 | "settings.app.form.beta": "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", | 261 | "settings.app.form.beta": "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 0b4c0d3fa..b9805e2a6 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Vyrovnávacia pamäť Ferdi momentálne použÃva {size} miesta na disku.", | 255 | "settings.app.cacheInfo": "Vyrovnávacia pamäť Ferdi momentálne použÃva {size} miesta na disku.", |
256 | "settings.app.currentVersion": "SúÄasná verzia:", | 256 | "settings.app.currentVersion": "SúÄasná verzia:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "OtvoriÅ¥ na pozadÃ", | 259 | "settings.app.form.autoLaunchInBackground": "OtvoriÅ¥ na pozadÃ", |
259 | "settings.app.form.autoLaunchOnStart": "Spustiť Ferdi pri štarte", | 260 | "settings.app.form.autoLaunchOnStart": "Spustiť Ferdi pri štarte", |
260 | "settings.app.form.beta": "Vrátane beta verziÃ", | 261 | "settings.app.form.beta": "Vrátane beta verziÃ", |
diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/sl.json +++ b/src/i18n/locales/sl.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 1190fee0a..f1257ac1e 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Франз кеш тренутно кориÑти {величина} проÑтора на диÑку.", | 255 | "settings.app.cacheInfo": "Франз кеш тренутно кориÑти {величина} проÑтора на диÑку.", |
256 | "settings.app.currentVersion": "Trenutna verzija:", | 256 | "settings.app.currentVersion": "Trenutna verzija:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Otvori u pozadini", | 259 | "settings.app.form.autoLaunchInBackground": "Otvori u pozadini", |
259 | "settings.app.form.autoLaunchOnStart": "Pokreni Ferdi sa sistemom", | 260 | "settings.app.form.autoLaunchOnStart": "Pokreni Ferdi sa sistemom", |
260 | "settings.app.form.beta": "Obuhvati i beta verzije", | 261 | "settings.app.form.beta": "Obuhvati i beta verzije", |
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 8e55a66f9..34c406981 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi önbelleği şu anda {size} disk alanı kullanıyor.", | 255 | "settings.app.cacheInfo": "Ferdi önbelleği şu anda {size} disk alanı kullanıyor.", |
256 | "settings.app.currentVersion": "Geçerli sürüm:", | 256 | "settings.app.currentVersion": "Geçerli sürüm:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Arka planda aç", | 259 | "settings.app.form.autoLaunchInBackground": "Arka planda aç", |
259 | "settings.app.form.autoLaunchOnStart": "Ferdi'ı başlangıçta aç", | 260 | "settings.app.form.autoLaunchOnStart": "Ferdi'ı başlangıçta aç", |
260 | "settings.app.form.beta": "Beta versiyonları dahil et", | 261 | "settings.app.form.beta": "Beta versiyonları dahil et", |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 1deed25fe..c1657b2c0 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Кеш, Ñкий викориÑтовує Ferdi, займає {size} диÑкового проÑтору.", | 255 | "settings.app.cacheInfo": "Кеш, Ñкий викориÑтовує Ferdi, займає {size} диÑкового проÑтору.", |
256 | "settings.app.currentVersion": "Поточна верÑÑ–Ñ:", | 256 | "settings.app.currentVersion": "Поточна верÑÑ–Ñ:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", | 259 | "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", |
259 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку", | 260 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку", |
260 | "settings.app.form.beta": "Включити бета-верÑÑ–Ñ—", | 261 | "settings.app.form.beta": "Включити бета-верÑÑ–Ñ—", |
diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json index 872bfd9d7..fd1ea9977 100644 --- a/src/i18n/locales/zh-HANT.json +++ b/src/i18n/locales/zh-HANT.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "當å‰ç‰ˆæœ¬ï¼š", | 256 | "settings.app.currentVersion": "當å‰ç‰ˆæœ¬ï¼š", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "背景啟動", | 259 | "settings.app.form.autoLaunchInBackground": "背景啟動", |
259 | "settings.app.form.autoLaunchOnStart": "開機時啟動", | 260 | "settings.app.form.autoLaunchOnStart": "開機時啟動", |
260 | "settings.app.form.beta": "包å«é–‹ç™¼ä¸ç‰ˆæœ¬", | 261 | "settings.app.form.beta": "包å«é–‹ç™¼ä¸ç‰ˆæœ¬", |
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index edcc67771..8eb2053bc 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json | |||
@@ -255,6 +255,7 @@ | |||
255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", | 255 | "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", |
256 | "settings.app.currentVersion": "Current version:", | 256 | "settings.app.currentVersion": "Current version:", |
257 | "settings.app.form.accentColor": "Accent color", | 257 | "settings.app.form.accentColor": "Accent color", |
258 | "settings.app.form.adaptableDarkMode": "Enable adaptable Dark Mode", | ||
258 | "settings.app.form.autoLaunchInBackground": "Open in background", | 259 | "settings.app.form.autoLaunchInBackground": "Open in background", |
259 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", | 260 | "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", |
260 | "settings.app.form.beta": "Include beta versions", | 261 | "settings.app.form.beta": "Include beta versions", |
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json index 70c4fb87f..5bf9f0b31 100644 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Settings", | 4 | "defaultMessage": "!!!Settings", |
5 | "file": "src/components/settings/settings/EditSettingsForm.js", | 5 | "file": "src/components/settings/settings/EditSettingsForm.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 26, | 7 | "line": 27, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 29, | 11 | "line": 30, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!General", | 17 | "defaultMessage": "!!!General", |
18 | "file": "src/components/settings/settings/EditSettingsForm.js", | 18 | "file": "src/components/settings/settings/EditSettingsForm.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 30, | 20 | "line": 31, |
21 | "column": 19 | 21 | "column": 19 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 33, | 24 | "line": 34, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", | 30 | "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", |
31 | "file": "src/components/settings/settings/EditSettingsForm.js", | 31 | "file": "src/components/settings/settings/EditSettingsForm.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 34, | 33 | "line": 35, |
34 | "column": 17 | 34 | "column": 17 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 37, | 37 | "line": 38, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", | 43 | "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", |
44 | "file": "src/components/settings/settings/EditSettingsForm.js", | 44 | "file": "src/components/settings/settings/EditSettingsForm.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 38, | 46 | "line": 39, |
47 | "column": 14 | 47 | "column": 14 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 41, | 50 | "line": 42, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", | 56 | "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", |
57 | "file": "src/components/settings/settings/EditSettingsForm.js", | 57 | "file": "src/components/settings/settings/EditSettingsForm.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 42, | 59 | "line": 43, |
60 | "column": 19 | 60 | "column": 19 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 45, | 63 | "line": 46, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", | 69 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", |
70 | "file": "src/components/settings/settings/EditSettingsForm.js", | 70 | "file": "src/components/settings/settings/EditSettingsForm.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 46, | 72 | "line": 47, |
73 | "column": 18 | 73 | "column": 18 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 49, | 76 | "line": 50, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Ferdi Lock Password", | 82 | "defaultMessage": "!!!Ferdi Lock Password", |
83 | "file": "src/components/settings/settings/EditSettingsForm.js", | 83 | "file": "src/components/settings/settings/EditSettingsForm.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 50, | 85 | "line": 51, |
86 | "column": 18 | 86 | "column": 18 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 53, | 89 | "line": 54, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | 95 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", |
96 | "file": "src/components/settings/settings/EditSettingsForm.js", | 96 | "file": "src/components/settings/settings/EditSettingsForm.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 54, | 98 | "line": 55, |
99 | "column": 22 | 99 | "column": 22 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 57, | 102 | "line": 58, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi password lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", | 108 | "defaultMessage": "!!!Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi password lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", |
109 | "file": "src/components/settings/settings/EditSettingsForm.js", | 109 | "file": "src/components/settings/settings/EditSettingsForm.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 58, | 111 | "line": 59, |
112 | "column": 12 | 112 | "column": 12 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 61, | 115 | "line": 62, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", | 121 | "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", |
122 | "file": "src/components/settings/settings/EditSettingsForm.js", | 122 | "file": "src/components/settings/settings/EditSettingsForm.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 62, | 124 | "line": 63, |
125 | "column": 24 | 125 | "column": 24 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 65, | 128 | "line": 66, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", | 134 | "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", |
135 | "file": "src/components/settings/settings/EditSettingsForm.js", | 135 | "file": "src/components/settings/settings/EditSettingsForm.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 66, | 137 | "line": 67, |
138 | "column": 20 | 138 | "column": 20 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 69, | 141 | "line": 70, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Language", | 147 | "defaultMessage": "!!!Language", |
148 | "file": "src/components/settings/settings/EditSettingsForm.js", | 148 | "file": "src/components/settings/settings/EditSettingsForm.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 70, | 150 | "line": 71, |
151 | "column": 20 | 151 | "column": 20 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 73, | 154 | "line": 74, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!Updates", | 160 | "defaultMessage": "!!!Updates", |
161 | "file": "src/components/settings/settings/EditSettingsForm.js", | 161 | "file": "src/components/settings/settings/EditSettingsForm.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 74, | 163 | "line": 75, |
164 | "column": 19 | 164 | "column": 19 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 77, | 167 | "line": 78, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,11 +173,11 @@ | |||
173 | "defaultMessage": "!!!Appearance", | 173 | "defaultMessage": "!!!Appearance", |
174 | "file": "src/components/settings/settings/EditSettingsForm.js", | 174 | "file": "src/components/settings/settings/EditSettingsForm.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 78, | 176 | "line": 79, |
177 | "column": 22 | 177 | "column": 22 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
180 | "line": 81, | 180 | "line": 82, |
181 | "column": 3 | 181 | "column": 3 |
182 | } | 182 | } |
183 | }, | 183 | }, |
@@ -186,11 +186,11 @@ | |||
186 | "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", | 186 | "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", |
187 | "file": "src/components/settings/settings/EditSettingsForm.js", | 187 | "file": "src/components/settings/settings/EditSettingsForm.js", |
188 | "start": { | 188 | "start": { |
189 | "line": 82, | 189 | "line": 83, |
190 | "column": 25 | 190 | "column": 25 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 85, | 193 | "line": 86, |
194 | "column": 3 | 194 | "column": 3 |
195 | } | 195 | } |
196 | }, | 196 | }, |
@@ -199,11 +199,11 @@ | |||
199 | "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", | 199 | "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", |
200 | "file": "src/components/settings/settings/EditSettingsForm.js", | 200 | "file": "src/components/settings/settings/EditSettingsForm.js", |
201 | "start": { | 201 | "start": { |
202 | "line": 86, | 202 | "line": 87, |
203 | "column": 19 | 203 | "column": 19 |
204 | }, | 204 | }, |
205 | "end": { | 205 | "end": { |
206 | "line": 89, | 206 | "line": 90, |
207 | "column": 3 | 207 | "column": 3 |
208 | } | 208 | } |
209 | }, | 209 | }, |
@@ -212,11 +212,11 @@ | |||
212 | "defaultMessage": "!!!Advanced", | 212 | "defaultMessage": "!!!Advanced", |
213 | "file": "src/components/settings/settings/EditSettingsForm.js", | 213 | "file": "src/components/settings/settings/EditSettingsForm.js", |
214 | "start": { | 214 | "start": { |
215 | "line": 90, | 215 | "line": 91, |
216 | "column": 20 | 216 | "column": 20 |
217 | }, | 217 | }, |
218 | "end": { | 218 | "end": { |
219 | "line": 93, | 219 | "line": 94, |
220 | "column": 3 | 220 | "column": 3 |
221 | } | 221 | } |
222 | }, | 222 | }, |
@@ -225,11 +225,11 @@ | |||
225 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 225 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
226 | "file": "src/components/settings/settings/EditSettingsForm.js", | 226 | "file": "src/components/settings/settings/EditSettingsForm.js", |
227 | "start": { | 227 | "start": { |
228 | "line": 94, | 228 | "line": 95, |
229 | "column": 19 | 229 | "column": 19 |
230 | }, | 230 | }, |
231 | "end": { | 231 | "end": { |
232 | "line": 97, | 232 | "line": 98, |
233 | "column": 3 | 233 | "column": 3 |
234 | } | 234 | } |
235 | }, | 235 | }, |
@@ -238,11 +238,11 @@ | |||
238 | "defaultMessage": "!!!Cache", | 238 | "defaultMessage": "!!!Cache", |
239 | "file": "src/components/settings/settings/EditSettingsForm.js", | 239 | "file": "src/components/settings/settings/EditSettingsForm.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 98, | 241 | "line": 99, |
242 | "column": 20 | 242 | "column": 20 |
243 | }, | 243 | }, |
244 | "end": { | 244 | "end": { |
245 | "line": 101, | 245 | "line": 102, |
246 | "column": 3 | 246 | "column": 3 |
247 | } | 247 | } |
248 | }, | 248 | }, |
@@ -251,11 +251,11 @@ | |||
251 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 251 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
252 | "file": "src/components/settings/settings/EditSettingsForm.js", | 252 | "file": "src/components/settings/settings/EditSettingsForm.js", |
253 | "start": { | 253 | "start": { |
254 | "line": 102, | 254 | "line": 103, |
255 | "column": 13 | 255 | "column": 13 |
256 | }, | 256 | }, |
257 | "end": { | 257 | "end": { |
258 | "line": 105, | 258 | "line": 106, |
259 | "column": 3 | 259 | "column": 3 |
260 | } | 260 | } |
261 | }, | 261 | }, |
@@ -264,11 +264,11 @@ | |||
264 | "defaultMessage": "!!!Clear cache", | 264 | "defaultMessage": "!!!Clear cache", |
265 | "file": "src/components/settings/settings/EditSettingsForm.js", | 265 | "file": "src/components/settings/settings/EditSettingsForm.js", |
266 | "start": { | 266 | "start": { |
267 | "line": 106, | 267 | "line": 107, |
268 | "column": 23 | 268 | "column": 23 |
269 | }, | 269 | }, |
270 | "end": { | 270 | "end": { |
271 | "line": 109, | 271 | "line": 110, |
272 | "column": 3 | 272 | "column": 3 |
273 | } | 273 | } |
274 | }, | 274 | }, |
@@ -277,11 +277,11 @@ | |||
277 | "defaultMessage": "!!!Check for updates", | 277 | "defaultMessage": "!!!Check for updates", |
278 | "file": "src/components/settings/settings/EditSettingsForm.js", | 278 | "file": "src/components/settings/settings/EditSettingsForm.js", |
279 | "start": { | 279 | "start": { |
280 | "line": 110, | 280 | "line": 111, |
281 | "column": 25 | 281 | "column": 25 |
282 | }, | 282 | }, |
283 | "end": { | 283 | "end": { |
284 | "line": 113, | 284 | "line": 114, |
285 | "column": 3 | 285 | "column": 3 |
286 | } | 286 | } |
287 | }, | 287 | }, |
@@ -290,11 +290,11 @@ | |||
290 | "defaultMessage": "!!!Restart & install update", | 290 | "defaultMessage": "!!!Restart & install update", |
291 | "file": "src/components/settings/settings/EditSettingsForm.js", | 291 | "file": "src/components/settings/settings/EditSettingsForm.js", |
292 | "start": { | 292 | "start": { |
293 | "line": 114, | 293 | "line": 115, |
294 | "column": 23 | 294 | "column": 23 |
295 | }, | 295 | }, |
296 | "end": { | 296 | "end": { |
297 | "line": 117, | 297 | "line": 118, |
298 | "column": 3 | 298 | "column": 3 |
299 | } | 299 | } |
300 | }, | 300 | }, |
@@ -303,11 +303,11 @@ | |||
303 | "defaultMessage": "!!!Is searching for update", | 303 | "defaultMessage": "!!!Is searching for update", |
304 | "file": "src/components/settings/settings/EditSettingsForm.js", | 304 | "file": "src/components/settings/settings/EditSettingsForm.js", |
305 | "start": { | 305 | "start": { |
306 | "line": 118, | 306 | "line": 119, |
307 | "column": 25 | 307 | "column": 25 |
308 | }, | 308 | }, |
309 | "end": { | 309 | "end": { |
310 | "line": 121, | 310 | "line": 122, |
311 | "column": 3 | 311 | "column": 3 |
312 | } | 312 | } |
313 | }, | 313 | }, |
@@ -316,11 +316,11 @@ | |||
316 | "defaultMessage": "!!!Update available, downloading...", | 316 | "defaultMessage": "!!!Update available, downloading...", |
317 | "file": "src/components/settings/settings/EditSettingsForm.js", | 317 | "file": "src/components/settings/settings/EditSettingsForm.js", |
318 | "start": { | 318 | "start": { |
319 | "line": 122, | 319 | "line": 123, |
320 | "column": 25 | 320 | "column": 25 |
321 | }, | 321 | }, |
322 | "end": { | 322 | "end": { |
323 | "line": 125, | 323 | "line": 126, |
324 | "column": 3 | 324 | "column": 3 |
325 | } | 325 | } |
326 | }, | 326 | }, |
@@ -329,11 +329,11 @@ | |||
329 | "defaultMessage": "!!!You are using the latest version of Ferdi", | 329 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
330 | "file": "src/components/settings/settings/EditSettingsForm.js", | 330 | "file": "src/components/settings/settings/EditSettingsForm.js", |
331 | "start": { | 331 | "start": { |
332 | "line": 126, | 332 | "line": 127, |
333 | "column": 24 | 333 | "column": 24 |
334 | }, | 334 | }, |
335 | "end": { | 335 | "end": { |
336 | "line": 129, | 336 | "line": 130, |
337 | "column": 3 | 337 | "column": 3 |
338 | } | 338 | } |
339 | }, | 339 | }, |
@@ -342,11 +342,11 @@ | |||
342 | "defaultMessage": "!!!Current version:", | 342 | "defaultMessage": "!!!Current version:", |
343 | "file": "src/components/settings/settings/EditSettingsForm.js", | 343 | "file": "src/components/settings/settings/EditSettingsForm.js", |
344 | "start": { | 344 | "start": { |
345 | "line": 130, | 345 | "line": 131, |
346 | "column": 18 | 346 | "column": 18 |
347 | }, | 347 | }, |
348 | "end": { | 348 | "end": { |
349 | "line": 133, | 349 | "line": 134, |
350 | "column": 3 | 350 | "column": 3 |
351 | } | 351 | } |
352 | }, | 352 | }, |
@@ -355,11 +355,11 @@ | |||
355 | "defaultMessage": "!!!Changes require restart", | 355 | "defaultMessage": "!!!Changes require restart", |
356 | "file": "src/components/settings/settings/EditSettingsForm.js", | 356 | "file": "src/components/settings/settings/EditSettingsForm.js", |
357 | "start": { | 357 | "start": { |
358 | "line": 134, | 358 | "line": 135, |
359 | "column": 29 | 359 | "column": 29 |
360 | }, | 360 | }, |
361 | "end": { | 361 | "end": { |
362 | "line": 137, | 362 | "line": 138, |
363 | "column": 3 | 363 | "column": 3 |
364 | } | 364 | } |
365 | }, | 365 | }, |
@@ -368,11 +368,11 @@ | |||
368 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 368 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
369 | "file": "src/components/settings/settings/EditSettingsForm.js", | 369 | "file": "src/components/settings/settings/EditSettingsForm.js", |
370 | "start": { | 370 | "start": { |
371 | "line": 138, | 371 | "line": 139, |
372 | "column": 22 | 372 | "column": 22 |
373 | }, | 373 | }, |
374 | "end": { | 374 | "end": { |
375 | "line": 141, | 375 | "line": 142, |
376 | "column": 3 | 376 | "column": 3 |
377 | } | 377 | } |
378 | } | 378 | } |
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json index 5ec8fdba7..411e35dab 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json | |||
@@ -234,8 +234,8 @@ | |||
234 | } | 234 | } |
235 | }, | 235 | }, |
236 | { | 236 | { |
237 | "id": "settings.app.form.universalDarkMode", | 237 | "id": "settings.app.form.adaptableDarkMode", |
238 | "defaultMessage": "!!!Enable universal Dark Mode", | 238 | "defaultMessage": "!!!Enable adaptable Dark Mode", |
239 | "file": "src/containers/settings/EditSettingsScreen.js", | 239 | "file": "src/containers/settings/EditSettingsScreen.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 101, | 241 | "line": 101, |
@@ -247,15 +247,28 @@ | |||
247 | } | 247 | } |
248 | }, | 248 | }, |
249 | { | 249 | { |
250 | "id": "settings.app.form.universalDarkMode", | ||
251 | "defaultMessage": "!!!Enable universal Dark Mode", | ||
252 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
253 | "start": { | ||
254 | "line": 105, | ||
255 | "column": 21 | ||
256 | }, | ||
257 | "end": { | ||
258 | "line": 108, | ||
259 | "column": 3 | ||
260 | } | ||
261 | }, | ||
262 | { | ||
250 | "id": "settings.app.form.accentColor", | 263 | "id": "settings.app.form.accentColor", |
251 | "defaultMessage": "!!!Accent color", | 264 | "defaultMessage": "!!!Accent color", |
252 | "file": "src/containers/settings/EditSettingsScreen.js", | 265 | "file": "src/containers/settings/EditSettingsScreen.js", |
253 | "start": { | 266 | "start": { |
254 | "line": 105, | 267 | "line": 109, |
255 | "column": 15 | 268 | "column": 15 |
256 | }, | 269 | }, |
257 | "end": { | 270 | "end": { |
258 | "line": 108, | 271 | "line": 112, |
259 | "column": 3 | 272 | "column": 3 |
260 | } | 273 | } |
261 | }, | 274 | }, |
@@ -264,11 +277,11 @@ | |||
264 | "defaultMessage": "!!!Display disabled services tabs", | 277 | "defaultMessage": "!!!Display disabled services tabs", |
265 | "file": "src/containers/settings/EditSettingsScreen.js", | 278 | "file": "src/containers/settings/EditSettingsScreen.js", |
266 | "start": { | 279 | "start": { |
267 | "line": 109, | 280 | "line": 113, |
268 | "column": 24 | 281 | "column": 24 |
269 | }, | 282 | }, |
270 | "end": { | 283 | "end": { |
271 | "line": 112, | 284 | "line": 116, |
272 | "column": 3 | 285 | "column": 3 |
273 | } | 286 | } |
274 | }, | 287 | }, |
@@ -277,11 +290,11 @@ | |||
277 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 290 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
278 | "file": "src/containers/settings/EditSettingsScreen.js", | 291 | "file": "src/containers/settings/EditSettingsScreen.js", |
279 | "start": { | 292 | "start": { |
280 | "line": 113, | 293 | "line": 117, |
281 | "column": 29 | 294 | "column": 29 |
282 | }, | 295 | }, |
283 | "end": { | 296 | "end": { |
284 | "line": 116, | 297 | "line": 120, |
285 | "column": 3 | 298 | "column": 3 |
286 | } | 299 | } |
287 | }, | 300 | }, |
@@ -290,11 +303,11 @@ | |||
290 | "defaultMessage": "!!!Enable spell checking", | 303 | "defaultMessage": "!!!Enable spell checking", |
291 | "file": "src/containers/settings/EditSettingsScreen.js", | 304 | "file": "src/containers/settings/EditSettingsScreen.js", |
292 | "start": { | 305 | "start": { |
293 | "line": 117, | 306 | "line": 121, |
294 | "column": 23 | 307 | "column": 23 |
295 | }, | 308 | }, |
296 | "end": { | 309 | "end": { |
297 | "line": 120, | 310 | "line": 124, |
298 | "column": 3 | 311 | "column": 3 |
299 | } | 312 | } |
300 | }, | 313 | }, |
@@ -303,11 +316,11 @@ | |||
303 | "defaultMessage": "!!!Enable GPU Acceleration", | 316 | "defaultMessage": "!!!Enable GPU Acceleration", |
304 | "file": "src/containers/settings/EditSettingsScreen.js", | 317 | "file": "src/containers/settings/EditSettingsScreen.js", |
305 | "start": { | 318 | "start": { |
306 | "line": 121, | 319 | "line": 125, |
307 | "column": 25 | 320 | "column": 25 |
308 | }, | 321 | }, |
309 | "end": { | 322 | "end": { |
310 | "line": 124, | 323 | "line": 128, |
311 | "column": 3 | 324 | "column": 3 |
312 | } | 325 | } |
313 | }, | 326 | }, |
@@ -316,11 +329,11 @@ | |||
316 | "defaultMessage": "!!!Include beta versions", | 329 | "defaultMessage": "!!!Include beta versions", |
317 | "file": "src/containers/settings/EditSettingsScreen.js", | 330 | "file": "src/containers/settings/EditSettingsScreen.js", |
318 | "start": { | 331 | "start": { |
319 | "line": 125, | 332 | "line": 129, |
320 | "column": 8 | 333 | "column": 8 |
321 | }, | 334 | }, |
322 | "end": { | 335 | "end": { |
323 | "line": 128, | 336 | "line": 132, |
324 | "column": 3 | 337 | "column": 3 |
325 | } | 338 | } |
326 | }, | 339 | }, |
@@ -329,11 +342,11 @@ | |||
329 | "defaultMessage": "!!!Disable updates", | 342 | "defaultMessage": "!!!Disable updates", |
330 | "file": "src/containers/settings/EditSettingsScreen.js", | 343 | "file": "src/containers/settings/EditSettingsScreen.js", |
331 | "start": { | 344 | "start": { |
332 | "line": 129, | 345 | "line": 133, |
333 | "column": 13 | 346 | "column": 13 |
334 | }, | 347 | }, |
335 | "end": { | 348 | "end": { |
336 | "line": 132, | 349 | "line": 136, |
337 | "column": 3 | 350 | "column": 3 |
338 | } | 351 | } |
339 | }, | 352 | }, |
@@ -342,11 +355,11 @@ | |||
342 | "defaultMessage": "!!!Enable Franz Todos", | 355 | "defaultMessage": "!!!Enable Franz Todos", |
343 | "file": "src/containers/settings/EditSettingsScreen.js", | 356 | "file": "src/containers/settings/EditSettingsScreen.js", |
344 | "start": { | 357 | "start": { |
345 | "line": 133, | 358 | "line": 137, |
346 | "column": 15 | 359 | "column": 15 |
347 | }, | 360 | }, |
348 | "end": { | 361 | "end": { |
349 | "line": 136, | 362 | "line": 140, |
350 | "column": 3 | 363 | "column": 3 |
351 | } | 364 | } |
352 | }, | 365 | }, |
@@ -355,11 +368,11 @@ | |||
355 | "defaultMessage": "!!!Keep all workspaces loaded", | 368 | "defaultMessage": "!!!Keep all workspaces loaded", |
356 | "file": "src/containers/settings/EditSettingsScreen.js", | 369 | "file": "src/containers/settings/EditSettingsScreen.js", |
357 | "start": { | 370 | "start": { |
358 | "line": 137, | 371 | "line": 141, |
359 | "column": 27 | 372 | "column": 27 |
360 | }, | 373 | }, |
361 | "end": { | 374 | "end": { |
362 | "line": 140, | 375 | "line": 144, |
363 | "column": 3 | 376 | "column": 3 |
364 | } | 377 | } |
365 | } | 378 | } |
diff --git a/src/index.html b/src/index.html index 7f223b662..31e8aa553 100644 --- a/src/index.html +++ b/src/index.html | |||
@@ -14,6 +14,7 @@ | |||
14 | <script> | 14 | <script> |
15 | document.querySelector('body').classList.add(process.env.OS_PLATFORM ? process.env.OS_PLATFORM : process.platform); | 15 | document.querySelector('body').classList.add(process.env.OS_PLATFORM ? process.env.OS_PLATFORM : process.platform); |
16 | 16 | ||
17 | require('./sentry') | ||
17 | const { isDevMode } = require('./environment'); | 18 | const { isDevMode } = require('./environment'); |
18 | if (isDevMode) { | 19 | if (isDevMode) { |
19 | const debugging = require('debug'); | 20 | const debugging = require('debug'); |
diff --git a/src/index.js b/src/index.js index 87aa6357b..12ea7f646 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -9,9 +9,16 @@ import fs from 'fs-extra'; | |||
9 | import path from 'path'; | 9 | import path from 'path'; |
10 | import windowStateKeeper from 'electron-window-state'; | 10 | import windowStateKeeper from 'electron-window-state'; |
11 | 11 | ||
12 | if (process.platform === 'win32') { | 12 | // Set app directory before loading user modules |
13 | app.setPath('appData', process.env.LOCALAPPDATA); | 13 | if (process.env.FERDI_APPDATA_DIR != null) { |
14 | app.setPath('userData', path.join(process.env.LOCALAPPDATA, app.getName())); | 14 | app.setPath('appData', process.env.FERDI_APPDATA_DIR); |
15 | app.setPath('userData', path.join(app.getPath('appData'))); | ||
16 | } else if (process.env.PORTABLE_EXECUTABLE_DIR != null) { | ||
17 | app.setPath('appData', process.env.PORTABLE_EXECUTABLE_DIR, `${app.getName()}AppData`); | ||
18 | app.setPath('userData', path.join(app.getPath('appData'), `${app.getName()}AppData`)); | ||
19 | } else if (process.platform === 'win32') { | ||
20 | app.setPath('appData', process.env.APPDATA); | ||
21 | app.setPath('userData', path.join(app.getPath('appData'), app.getName())); | ||
15 | } | 22 | } |
16 | 23 | ||
17 | if (isDevMode) { | 24 | if (isDevMode) { |
@@ -32,6 +39,7 @@ import handleDeepLink from './electron/deepLinking'; | |||
32 | import { isPositionValid } from './electron/windowUtils'; | 39 | import { isPositionValid } from './electron/windowUtils'; |
33 | import { appId } from './package.json'; // eslint-disable-line import/no-unresolved | 40 | import { appId } from './package.json'; // eslint-disable-line import/no-unresolved |
34 | import './electron/exception'; | 41 | import './electron/exception'; |
42 | import './sentry'; | ||
35 | 43 | ||
36 | import { | 44 | import { |
37 | DEFAULT_APP_SETTINGS, | 45 | DEFAULT_APP_SETTINGS, |
@@ -166,6 +174,7 @@ const createWindow = () => { | |||
166 | webPreferences: { | 174 | webPreferences: { |
167 | nodeIntegration: true, | 175 | nodeIntegration: true, |
168 | webviewTag: true, | 176 | webviewTag: true, |
177 | preload: path.join(__dirname, 'sentry.js'), | ||
169 | }, | 178 | }, |
170 | }); | 179 | }); |
171 | 180 | ||
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index d7398a126..826fe843f 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -487,7 +487,8 @@ const _templateFactory = intl => [ | |||
487 | 487 | ||
488 | const _titleBarTemplateFactory = intl => [ | 488 | const _titleBarTemplateFactory = intl => [ |
489 | { | 489 | { |
490 | label: `&${intl.formatMessage(menuItems.edit)}`, | 490 | label: intl.formatMessage(menuItems.edit), |
491 | accelerator: 'Alt+E', | ||
491 | submenu: [ | 492 | submenu: [ |
492 | { | 493 | { |
493 | label: intl.formatMessage(menuItems.undo), | 494 | label: intl.formatMessage(menuItems.undo), |
@@ -550,7 +551,8 @@ const _titleBarTemplateFactory = intl => [ | |||
550 | ], | 551 | ], |
551 | }, | 552 | }, |
552 | { | 553 | { |
553 | label: `&${intl.formatMessage(menuItems.view)}`, | 554 | label: intl.formatMessage(menuItems.view), |
555 | accelerator: 'Alt+V', | ||
554 | submenu: [ | 556 | submenu: [ |
555 | { | 557 | { |
556 | type: 'separator', | 558 | type: 'separator', |
@@ -641,11 +643,13 @@ const _titleBarTemplateFactory = intl => [ | |||
641 | ], | 643 | ], |
642 | }, | 644 | }, |
643 | { | 645 | { |
644 | label: `&${intl.formatMessage(menuItems.services)}`, | 646 | label: intl.formatMessage(menuItems.services), |
647 | accelerator: 'Alt+S', | ||
645 | submenu: [], | 648 | submenu: [], |
646 | }, | 649 | }, |
647 | { | 650 | { |
648 | label: `&${intl.formatMessage(menuItems.workspaces)}`, | 651 | label: intl.formatMessage(menuItems.workspaces), |
652 | accelerator: 'Alt+W', | ||
649 | submenu: [], | 653 | submenu: [], |
650 | visible: workspaceStore.isFeatureEnabled, | 654 | visible: workspaceStore.isFeatureEnabled, |
651 | }, | 655 | }, |
@@ -674,7 +678,8 @@ const _titleBarTemplateFactory = intl => [ | |||
674 | ], | 678 | ], |
675 | }, | 679 | }, |
676 | { | 680 | { |
677 | label: '&?', | 681 | label: '?', |
682 | accelerator: 'Alt+?', | ||
678 | submenu: [ | 683 | submenu: [ |
679 | { | 684 | { |
680 | label: intl.formatMessage(menuItems.learnMore), | 685 | label: intl.formatMessage(menuItems.learnMore), |
@@ -816,7 +821,8 @@ export default class FranzMenu { | |||
816 | }); | 821 | }); |
817 | 822 | ||
818 | tpl.unshift({ | 823 | tpl.unshift({ |
819 | label: isMac ? app.getName() : `&${intl.formatMessage(menuItems.file)}`, | 824 | label: isMac ? app.getName() : intl.formatMessage(menuItems.file), |
825 | accelerator: 'Alt+F', | ||
820 | submenu: [ | 826 | submenu: [ |
821 | { | 827 | { |
822 | label: intl.formatMessage(menuItems.about), | 828 | label: intl.formatMessage(menuItems.about), |
diff --git a/src/sentry.js b/src/sentry.js new file mode 100644 index 000000000..4f6d7205d --- /dev/null +++ b/src/sentry.js | |||
@@ -0,0 +1,5 @@ | |||
1 | import * as Sentry from '@sentry/electron'; | ||
2 | |||
3 | Sentry.init({ | ||
4 | dsn: 'https://f3d022fbcf6243a68a58d681c2122ee4@sentry.io/1803053', | ||
5 | }); | ||
diff --git a/src/server b/src/server | |||
Subproject b5973cdc4cdd60e61d2fba25a317bb4d216a0d1 | Subproject cca6cd984caf729722153e58f44c01319c4bd63 | ||
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index c6724c20f..0756a05eb 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -181,7 +181,9 @@ export default class AppStore extends Store { | |||
181 | 181 | ||
182 | this.locale = this._getDefaultLocale(); | 182 | this.locale = this._getDefaultLocale(); |
183 | 183 | ||
184 | this._healthCheck(); | 184 | setTimeout(() => { |
185 | this._healthCheck(); | ||
186 | }, 1000); | ||
185 | 187 | ||
186 | this.isSystemDarkModeEnabled = systemPreferences.isDarkMode(); | 188 | this.isSystemDarkModeEnabled = systemPreferences.isDarkMode(); |
187 | 189 | ||
@@ -227,20 +229,35 @@ export default class AppStore extends Store { | |||
227 | } | 229 | } |
228 | 230 | ||
229 | @computed get debugInfo() { | 231 | @computed get debugInfo() { |
232 | const settings = JSON.parse(JSON.stringify(this.stores.settings.app)); | ||
233 | settings.lockedPassword = '******'; | ||
234 | |||
230 | return { | 235 | return { |
231 | host: { | 236 | host: { |
232 | platform: process.platform, | 237 | platform: process.platform, |
233 | release: os.release(), | 238 | release: os.release(), |
234 | screens: screen.getAllDisplays(), | 239 | screens: screen.getAllDisplays(), |
235 | }, | 240 | }, |
236 | franz: { | 241 | ferdi: { |
237 | version: app.getVersion(), | 242 | version: app.getVersion(), |
238 | electron: process.versions.electron, | 243 | electron: process.versions.electron, |
239 | installedRecipes: this.stores.recipes.all.map(recipe => ({ id: recipe.id, version: recipe.version })), | 244 | installedRecipes: this.stores.recipes.all.map(recipe => ({ id: recipe.id, version: recipe.version })), |
240 | devRecipes: this.stores.recipePreviews.dev.map(recipe => ({ id: recipe.id, version: recipe.version })), | 245 | devRecipes: this.stores.recipePreviews.dev.map(recipe => ({ id: recipe.id, version: recipe.version })), |
241 | services: this.stores.services.all.map(service => ({ id: service.id, recipe: service.recipe.id })), | 246 | services: this.stores.services.all.map(service => ({ |
247 | id: service.id, | ||
248 | recipe: service.recipe.id, | ||
249 | isAttached: service.isAttached, | ||
250 | isActive: service.isActive, | ||
251 | isEnabled: service.isEnabled, | ||
252 | isHibernating: service.isHibernating, | ||
253 | hasCrashed: service.hasCrashed, | ||
254 | isDarkModeEnabled: service.isDarkModeEnabled, | ||
255 | })), | ||
256 | messages: this.stores.globalError.messages, | ||
242 | workspaces: this.stores.workspaces.workspaces.map(workspace => ({ id: workspace.id, services: workspace.services })), | 257 | workspaces: this.stores.workspaces.workspaces.map(workspace => ({ id: workspace.id, services: workspace.services })), |
243 | windowSettings: readJsonSync(path.join(app.getPath('userData'), 'window-state.json')), | 258 | windowSettings: readJsonSync(path.join(app.getPath('userData'), 'window-state.json')), |
259 | settings, | ||
260 | features: this.stores.features.features, | ||
244 | user: this.stores.user.data.id, | 261 | user: this.stores.user.data.id, |
245 | }, | 262 | }, |
246 | }; | 263 | }; |
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index ab5d762c7..780cde3a7 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js | |||
@@ -57,7 +57,10 @@ export default class FeaturesStore extends Store { | |||
57 | _updateFeatures = () => { | 57 | _updateFeatures = () => { |
58 | const features = Object.assign({}, DEFAULT_FEATURES_CONFIG); | 58 | const features = Object.assign({}, DEFAULT_FEATURES_CONFIG); |
59 | if (this.stores.user.isLoggedIn) { | 59 | if (this.stores.user.isLoggedIn) { |
60 | const requestResult = this.featuresRequest.execute().result; | 60 | let requestResult = {}; |
61 | try { | ||
62 | requestResult = this.featuresRequest.execute().result; | ||
63 | } catch (e) {} // eslint-disable-line no-empty | ||
61 | Object.assign(features, requestResult); | 64 | Object.assign(features, requestResult); |
62 | } | 65 | } |
63 | runInAction('FeaturesStore::_updateFeatures', () => { | 66 | runInAction('FeaturesStore::_updateFeatures', () => { |
diff --git a/src/stores/GlobalErrorStore.js b/src/stores/GlobalErrorStore.js index 8bdafb68c..aacaa247f 100644 --- a/src/stores/GlobalErrorStore.js +++ b/src/stores/GlobalErrorStore.js | |||
@@ -5,14 +5,54 @@ import Request from './lib/Request'; | |||
5 | export default class GlobalErrorStore extends Store { | 5 | export default class GlobalErrorStore extends Store { |
6 | @observable error = null; | 6 | @observable error = null; |
7 | 7 | ||
8 | @observable messages = []; | ||
9 | |||
8 | @observable response = {}; | 10 | @observable response = {}; |
9 | 11 | ||
10 | constructor(...args) { | 12 | constructor(...args) { |
11 | super(...args); | 13 | super(...args); |
12 | 14 | ||
15 | window.onerror = (...errorArgs) => { | ||
16 | this._handleConsoleError.call(this, ['error', ...errorArgs]); | ||
17 | }; | ||
18 | |||
19 | const origConsoleError = console.error; | ||
20 | window.console.error = (...errorArgs) => { | ||
21 | this._handleConsoleError.call(this, ['error', ...errorArgs]); | ||
22 | origConsoleError.apply(this, errorArgs); | ||
23 | }; | ||
24 | |||
25 | const origConsoleLog = console.log; | ||
26 | window.console.log = (...logArgs) => { | ||
27 | this._handleConsoleError.call(this, ['log', ...logArgs]); | ||
28 | origConsoleLog.apply(this, logArgs); | ||
29 | }; | ||
30 | |||
31 | const origConsoleInfo = console.info; | ||
32 | window.console.info = (...infoArgs) => { | ||
33 | this._handleConsoleError.call(this, ['info', ...infoArgs]); | ||
34 | origConsoleInfo.apply(this, infoArgs); | ||
35 | }; | ||
36 | |||
13 | Request.registerHook(this._handleRequests); | 37 | Request.registerHook(this._handleRequests); |
14 | } | 38 | } |
15 | 39 | ||
40 | _handleConsoleError(type, error, url, line) { | ||
41 | if (typeof type === 'object' && type.length && type.length >= 1) { | ||
42 | this.messages.push({ | ||
43 | type: type[0], | ||
44 | info: type, | ||
45 | }); | ||
46 | } else { | ||
47 | this.messages.push({ | ||
48 | type, | ||
49 | error, | ||
50 | url, | ||
51 | line, | ||
52 | }); | ||
53 | } | ||
54 | } | ||
55 | |||
16 | _handleRequests = action(async (request) => { | 56 | _handleRequests = action(async (request) => { |
17 | if (request.isError) { | 57 | if (request.isError) { |
18 | this.error = request.error; | 58 | this.error = request.error; |
@@ -28,6 +68,18 @@ export default class GlobalErrorStore extends Store { | |||
28 | // this.actions.user.logout({ serverLogout: true }); | 68 | // this.actions.user.logout({ serverLogout: true }); |
29 | } | 69 | } |
30 | } | 70 | } |
71 | |||
72 | this.messages.push({ | ||
73 | type: 'error', | ||
74 | request: { | ||
75 | result: request.result, | ||
76 | wasExecuted: request.wasExecuted, | ||
77 | method: request._method, | ||
78 | }, | ||
79 | error: this.error, | ||
80 | response: this.response, | ||
81 | server: window.ferdi.stores.settings.app.server, | ||
82 | }); | ||
31 | } else { | 83 | } else { |
32 | window.ferdi.stores.app.authRequestFailed = false; | 84 | window.ferdi.stores.app.authRequestFailed = false; |
33 | } | 85 | } |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 934a8a6e0..3dd601bc3 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -116,6 +116,11 @@ export default class ServicesStore extends Store { | |||
116 | ); | 116 | ); |
117 | 117 | ||
118 | reaction( | 118 | reaction( |
119 | () => this.stores.settings.app.adaptableDarkMode, | ||
120 | () => this._shareSettingsWithServiceProcess(), | ||
121 | ); | ||
122 | |||
123 | reaction( | ||
119 | () => this.stores.settings.app.universalDarkMode, | 124 | () => this.stores.settings.app.universalDarkMode, |
120 | () => this._shareSettingsWithServiceProcess(), | 125 | () => this._shareSettingsWithServiceProcess(), |
121 | ); | 126 | ); |
@@ -585,7 +590,8 @@ export default class ServicesStore extends Store { | |||
585 | 590 | ||
586 | service.resetMessageCount(); | 591 | service.resetMessageCount(); |
587 | 592 | ||
588 | service.webview.loadURL(service.url); | 593 | // service.webview.loadURL(service.url); |
594 | service.webview.reload(); | ||
589 | } | 595 | } |
590 | 596 | ||
591 | @action _reloadActive() { | 597 | @action _reloadActive() { |
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js index 9680c5bcc..44bc7c974 100644 --- a/src/stores/UIStore.js +++ b/src/stores/UIStore.js | |||
@@ -5,12 +5,18 @@ import { | |||
5 | reaction, | 5 | reaction, |
6 | } from 'mobx'; | 6 | } from 'mobx'; |
7 | import { theme } from '@meetfranz/theme'; | 7 | import { theme } from '@meetfranz/theme'; |
8 | import { remote } from 'electron'; | ||
8 | 9 | ||
9 | import Store from './lib/Store'; | 10 | import Store from './lib/Store'; |
11 | import { isMac } from '../environment'; | ||
12 | |||
13 | const { systemPreferences } = remote; | ||
10 | 14 | ||
11 | export default class UIStore extends Store { | 15 | export default class UIStore extends Store { |
12 | @observable showServicesUpdatedInfoBar = false; | 16 | @observable showServicesUpdatedInfoBar = false; |
13 | 17 | ||
18 | @observable isOsDarkThemeActive = isMac ? systemPreferences.isDarkMode() : false; | ||
19 | |||
14 | constructor(...args) { | 20 | constructor(...args) { |
15 | super(...args); | 21 | super(...args); |
16 | 22 | ||
@@ -18,6 +24,13 @@ export default class UIStore extends Store { | |||
18 | this.actions.ui.openSettings.listen(this._openSettings.bind(this)); | 24 | this.actions.ui.openSettings.listen(this._openSettings.bind(this)); |
19 | this.actions.ui.closeSettings.listen(this._closeSettings.bind(this)); | 25 | this.actions.ui.closeSettings.listen(this._closeSettings.bind(this)); |
20 | this.actions.ui.toggleServiceUpdatedInfoBar.listen(this._toggleServiceUpdatedInfoBar.bind(this)); | 26 | this.actions.ui.toggleServiceUpdatedInfoBar.listen(this._toggleServiceUpdatedInfoBar.bind(this)); |
27 | |||
28 | // Listen for theme change on MacOS | ||
29 | if (isMac) { | ||
30 | systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', () => { | ||
31 | this.isOsDarkThemeActive = systemPreferences.isDarkMode(); | ||
32 | }); | ||
33 | } | ||
21 | } | 34 | } |
22 | 35 | ||
23 | setup() { | 36 | setup() { |
@@ -35,7 +48,7 @@ export default class UIStore extends Store { | |||
35 | } | 48 | } |
36 | 49 | ||
37 | @computed get isDarkThemeActive() { | 50 | @computed get isDarkThemeActive() { |
38 | return this.stores.settings.all.app.darkMode; | 51 | return this.stores.settings.all.app.darkMode || (this.stores.settings.all.app.adaptableDarkMode && this.isOsDarkThemeActive); |
39 | } | 52 | } |
40 | 53 | ||
41 | @computed get theme() { | 54 | @computed get theme() { |
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index d6a2e5fde..ec0b0cf8d 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -348,7 +348,12 @@ export default class UserStore extends Store { | |||
348 | // Reactions | 348 | // Reactions |
349 | async _getUserData() { | 349 | async _getUserData() { |
350 | if (this.isLoggedIn) { | 350 | if (this.isLoggedIn) { |
351 | const data = await this.getUserInfoRequest.execute()._promise; | 351 | let data; |
352 | try { | ||
353 | data = await this.getUserInfoRequest.execute()._promise; | ||
354 | } catch (e) { | ||
355 | return false; | ||
356 | } | ||
352 | 357 | ||
353 | // We need to set the beta flag for the SettingsStore | 358 | // We need to set the beta flag for the SettingsStore |
354 | this.actions.settings.update({ | 359 | this.actions.settings.update({ |
@@ -408,7 +413,11 @@ export default class UserStore extends Store { | |||
408 | } | 413 | } |
409 | 414 | ||
410 | async _migrateUserLocale() { | 415 | async _migrateUserLocale() { |
411 | await this.getUserInfoRequest._promise; | 416 | try { |
417 | await this.getUserInfoRequest._promise; | ||
418 | } catch (e) { | ||
419 | return false; | ||
420 | } | ||
412 | 421 | ||
413 | if (!this.data.locale) { | 422 | if (!this.data.locale) { |
414 | debug('Migrate "locale" to user data'); | 423 | debug('Migrate "locale" to user data'); |
diff --git a/src/stores/lib/CachedRequest.js b/src/stores/lib/CachedRequest.js index ac8b2bd81..31c7ce241 100644 --- a/src/stores/lib/CachedRequest.js +++ b/src/stores/lib/CachedRequest.js | |||
@@ -39,7 +39,7 @@ export default class CachedRequest extends Request { | |||
39 | }), 0); | 39 | }), 0); |
40 | 40 | ||
41 | // Issue api call & save it as promise that is handled to update the results of the operation | 41 | // Issue api call & save it as promise that is handled to update the results of the operation |
42 | this._promise = new Promise((resolve, reject) => { | 42 | this._promise = new Promise((resolve) => { |
43 | this._api[this._method](...callArgs) | 43 | this._api[this._method](...callArgs) |
44 | .then((result) => { | 44 | .then((result) => { |
45 | setTimeout(action(() => { | 45 | setTimeout(action(() => { |
@@ -63,7 +63,7 @@ export default class CachedRequest extends Request { | |||
63 | this.wasExecuted = true; | 63 | this.wasExecuted = true; |
64 | this._isWaitingForResponse = false; | 64 | this._isWaitingForResponse = false; |
65 | this._triggerHooks(); | 65 | this._triggerHooks(); |
66 | reject(error); | 66 | // reject(error); |
67 | }), 1); | 67 | }), 1); |
68 | })); | 68 | })); |
69 | }); | 69 | }); |
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss index e500830ed..5bd0555d2 100644 --- a/src/styles/tabs.scss +++ b/src/styles/tabs.scss | |||
@@ -72,6 +72,8 @@ | |||
72 | font-size: 0px; | 72 | font-size: 0px; |
73 | min-height: 10px; | 73 | min-height: 10px; |
74 | min-width: 10px; | 74 | min-width: 10px; |
75 | right: auto; | ||
76 | left: 8px; | ||
75 | } | 77 | } |
76 | } | 78 | } |
77 | 79 | ||
diff --git a/src/webview/recipe.js b/src/webview/recipe.js index 2bf8f757a..1e290f8be 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js | |||
@@ -120,6 +120,7 @@ class RecipeController { | |||
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | console.log('Set theme to: ', this.settings.service.isDarkModeEnabled ? 'Dark' : 'Light'); | ||
123 | if (this.settings.service.isDarkModeEnabled) { | 124 | if (this.settings.service.isDarkModeEnabled) { |
124 | debug('Enable dark mode'); | 125 | debug('Enable dark mode'); |
125 | 126 | ||
@@ -127,9 +128,18 @@ class RecipeController { | |||
127 | const darkModeStyle = path.join(this.settings.service.recipe.path, 'darkmode.css'); | 128 | const darkModeStyle = path.join(this.settings.service.recipe.path, 'darkmode.css'); |
128 | const darkModeExists = fs.pathExistsSync(darkModeStyle); | 129 | const darkModeExists = fs.pathExistsSync(darkModeStyle); |
129 | 130 | ||
131 | console.log('darkmode.css exists? ', darkModeExists ? 'Yes' : 'No'); | ||
132 | |||
130 | if (darkModeExists) { | 133 | if (darkModeExists) { |
134 | console.log('Injecting darkmode.css'); | ||
131 | injectDarkModeStyle(this.settings.service.recipe.path); | 135 | injectDarkModeStyle(this.settings.service.recipe.path); |
136 | |||
137 | // Make sure universal dark mode is disabled | ||
138 | disableDarkMode(); | ||
139 | this.universalDarkModeInjected = false; | ||
132 | } else if (this.settings.app.universalDarkMode && !ignoreList.includes(window.location.host)) { | 140 | } else if (this.settings.app.universalDarkMode && !ignoreList.includes(window.location.host)) { |
141 | console.log('Injecting DarkReader'); | ||
142 | |||
133 | // Use darkreader instead | 143 | // Use darkreader instead |
134 | enableDarkMode({}, { | 144 | enableDarkMode({}, { |
135 | css: customDarkModeCss[window.location.host] || '', | 145 | css: customDarkModeCss[window.location.host] || '', |
@@ -138,10 +148,14 @@ class RecipeController { | |||
138 | } | 148 | } |
139 | } else { | 149 | } else { |
140 | debug('Remove dark mode'); | 150 | debug('Remove dark mode'); |
151 | console.log('DarkMode disabled - removing remaining styles'); | ||
141 | 152 | ||
142 | if (isDarkModeStyleInjected()) { | 153 | if (isDarkModeStyleInjected()) { |
154 | console.log('Removing injected darkmode.css'); | ||
143 | removeDarkModeStyle(); | 155 | removeDarkModeStyle(); |
144 | } else { | 156 | } else { |
157 | console.log('Removing DarkReader'); | ||
158 | |||
145 | disableDarkMode(); | 159 | disableDarkMode(); |
146 | this.universalDarkModeInjected = false; | 160 | this.universalDarkModeInjected = false; |
147 | } | 161 | } |