aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-09-13 13:36:29 +0530
committerLibravatar Vijay A <avijayr@protonmail.com>2021-09-13 13:36:29 +0530
commit9bbf76b134d0fef9ebeb04169842ab7eb2575ef7 (patch)
tree8c11bbf0abb67b828b92f6ee37a593a297d17627
parentdocs: Bumped up version for '5.6.1' (diff)
parentdocs: updated Changelog [skip ci] (diff)
downloadferdium-app-9bbf76b134d0fef9ebeb04169842ab7eb2575ef7.tar.gz
ferdium-app-9bbf76b134d0fef9ebeb04169842ab7eb2575ef7.tar.zst
ferdium-app-9bbf76b134d0fef9ebeb04169842ab7eb2575ef7.zip
Merge branch 'nightly' into release
-rw-r--r--CHANGELOG.md88
-rw-r--r--package-lock.json2
-rw-r--r--package.json2
m---------recipes0
-rw-r--r--src/environment.js17
-rw-r--r--src/i18n/locales/defaultMessages.json280
-rw-r--r--src/i18n/locales/pl.json90
-rw-r--r--src/i18n/messages/src/lib/Menu.json280
-rw-r--r--src/index.js72
-rw-r--r--src/lib/Menu.js37
-rw-r--r--src/lib/Tray.js25
11 files changed, 481 insertions, 412 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e25f0b2ab..eff4681b0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,91 @@
1# [v5.6.2-beta.1](https://github.com/getferdi/ferdi/compare/v5.6.1...v5.6.2-beta.1) (2021-09-13)
2
3### Services
4
5- We now have native support for 212 recipes! 💖 @vraravam
6 - 'clockwise' (#692)
7 - 'coinbase' (#697)
8 - 'devRant' (#706)
9 - 'dialpad' (#695)
10 - 'dingtalk' (fixes #416) (#686)
11 - 'drive' (#698)
12 - 'flock' (#688)
13 - 'freshdesk' (#700)
14 - 'hey' (#701)
15 - 'mewe' (fixes #484) (#684)
16 - 'misskey' (#693)
17 - 'plek' (#699)
18 - 'producthunt' (#687)
19 - 'ritetag' (#702)
20 - 'scrumpy' (#689)
21 - 'slowly' (fixes #297) (#690)
22 - 'sococo' (#704)
23 - 'stackoverflow' (#707)
24 - 'teamweek' (#694)
25 - 'tixio' (#691)
26 - 'udemy' (fixes #464) (#696)
27 - 'weekplan' (#705)
28 - 'whereby' (#683)
29 - 'yandex-mail' (fixes #421) (#685)
30- Add indirect count for 'teamleader' recipe. (#703) 💖 @vraravam
31- Merged 'github_enterprise' recipe into 'github' with the extra bits. 💖 @vraravam
32
33### Bug Fixes
34
35- Better implementation of prompting before quitting Ferdi (#1919) 💖 @vraravam
36- Fix broken menu due to referencing old intl value 💖 @mhatvan
37- Fix broken system tray menu (app wasn't quitting) by reverting previous fix 💖 @vraravam
38- Fix unread count in Office365 not working for non-English locales (getferdi/recipes#679) 💖 @vraravam
39- Fix unread count in WhatsApp for non-English locales (getferdi/recipes#680) 💖 @bpwned
40
41### Under the hood
42
43- Reuse method from the core electron framework for the 'About' Dialog 💖 @vraravam
44
45# [v5.6.2-nightly.2](https://github.com/getferdi/ferdi/compare/v5.6.2-nightly.1...v5.6.2-nightly.2) (2021-09-13)
46
47### Services
48
49- We now have native support for 212 recipes! 💖 @vraravam
50 - 'clockwise' (#692)
51 - 'coinbase' (#697)
52 - 'devRant' (#706)
53 - 'dialpad' (#695)
54 - 'dingtalk' (fixes #416) (#686)
55 - 'drive' (#698)
56 - 'flock' (#688)
57 - 'freshdesk' (#700)
58 - 'hey' (#701)
59 - 'mewe' (fixes #484) (#684)
60 - 'misskey' (#693)
61 - 'plek' (#699)
62 - 'producthunt' (#687)
63 - 'ritetag' (#702)
64 - 'scrumpy' (#689)
65 - 'slowly' (fixes #297) (#690)
66 - 'sococo' (#704)
67 - 'stackoverflow' (#707)
68 - 'teamweek' (#694)
69 - 'tixio' (#691)
70 - 'udemy' (fixes #464) (#696)
71 - 'weekplan' (#705)
72 - 'whereby' (#683)
73 - 'yandex-mail' (fixes #421) (#685)
74- Add indirect count for 'teamleader' recipe. (#703) 💖 @vraravam
75- Merged 'github_enterprise' recipe into 'github' with the extra bits. 💖 @vraravam
76
77### Bug fixes
78
79- fix broken menu due to referencing old intl value 💖 @mhatvan
80- fix broken system tray menu (app wasn't quitting) by reverting previous fix 💖 @vraravam
81
82# [v5.6.2-nightly.1](https://github.com/getferdi/ferdi/compare/v5.6.1...v5.6.2-nightly.1) (2021-09-12)
83
84### Bug fixes
85
86- Fix unread count in Office365 not working for non-English locales (getferdi/recipes#679) 💖 @vraravam
87- Fix unread count in WhatsApp for non-English locales (getferdi/recipes#680) 💖 @bpwned
88
1# [v5.6.1](https://github.com/getferdi/ferdi/compare/v5.6.0...v5.6.1) (2021-09-11) 89# [v5.6.1](https://github.com/getferdi/ferdi/compare/v5.6.0...v5.6.1) (2021-09-11)
2 90
3### Features 91### Features
diff --git a/package-lock.json b/package-lock.json
index 3d2edf0d3..c70ae5634 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
1{ 1{
2 "name": "ferdi", 2 "name": "ferdi",
3 "version": "5.6.1", 3 "version": "5.6.2-nightly.2",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
diff --git a/package.json b/package.json
index accf7f412..1d38d0039 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
3 "productName": "Ferdi", 3 "productName": "Ferdi",
4 "desktopName": "ferdi.desktop", 4 "desktopName": "ferdi.desktop",
5 "appId": "com.kytwb.ferdi", 5 "appId": "com.kytwb.ferdi",
6 "version": "5.6.1", 6 "version": "5.6.2-nightly.2",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
8 "copyright": "kytwb", 8 "copyright": "kytwb",
9 "main": "index.js", 9 "main": "index.js",
diff --git a/recipes b/recipes
Subproject 62599c06f4b2039219e282b34a51a4ff4fbe5e6 Subproject 9db43e100a672b6d6932ac68c0fbe503c129138
diff --git a/src/environment.js b/src/environment.js
index caeada94b..9d7ffaf78 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -5,7 +5,6 @@ import { is, api as electronApi } from 'electron-util';
5 5
6import { DEFAULT_ACCENT_COLOR } from '@meetfranz/theme'; 6import { DEFAULT_ACCENT_COLOR } from '@meetfranz/theme';
7 7
8import osName from 'os-name';
9import { 8import {
10 LIVE_FERDI_API, 9 LIVE_FERDI_API,
11 DEV_FRANZ_API, 10 DEV_FRANZ_API,
@@ -24,7 +23,6 @@ import {
24} from './config'; 23} from './config';
25 24
26import { asarPath } from './helpers/asar-helpers'; 25import { asarPath } from './helpers/asar-helpers';
27import * as buildInfo from './buildInfo.json'; // eslint-disable-line import/no-unresolved
28 26
29export const { app } = electronApi; 27export const { app } = electronApi;
30export const ferdiVersion = app.getVersion(); 28export const ferdiVersion = app.getVersion();
@@ -171,18 +169,5 @@ export const DEFAULT_APP_SETTINGS = {
171 searchEngine: SEARCH_ENGINE_DDG, 169 searchEngine: SEARCH_ENGINE_DDG,
172 useVerticalStyle: false, 170 useVerticalStyle: false,
173 alwaysShowWorkspaces: false, 171 alwaysShowWorkspaces: false,
172 liftSingleInstanceLock: false,
174}; 173};
175
176export function aboutAppDetails() {
177 return [
178 `Version: ${ferdiVersion}`,
179 `Electron: ${electronVersion}`,
180 `Chrome: ${chromeVersion}`,
181 `Node.js: ${nodeVersion}`,
182 `Platform: ${osName()}`,
183 `Arch: ${process.arch}`,
184 `Build date: ${new Date(Number(buildInfo.timestamp))}`,
185 `Git SHA: ${buildInfo.gitHashShort}`,
186 `Git branch: ${buildInfo.gitBranch}`,
187 ].join('\n');
188}
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 7624168ba..3a41c66f6 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -5950,910 +5950,910 @@
5950 "defaultMessage": "!!!Edit", 5950 "defaultMessage": "!!!Edit",
5951 "end": { 5951 "end": {
5952 "column": 3, 5952 "column": 3,
5953 "line": 36 5953 "line": 35
5954 }, 5954 },
5955 "file": "src/lib/Menu.js", 5955 "file": "src/lib/Menu.js",
5956 "id": "menu.edit", 5956 "id": "menu.edit",
5957 "start": { 5957 "start": {
5958 "column": 8, 5958 "column": 8,
5959 "line": 33 5959 "line": 32
5960 } 5960 }
5961 }, 5961 },
5962 { 5962 {
5963 "defaultMessage": "!!!Undo", 5963 "defaultMessage": "!!!Undo",
5964 "end": { 5964 "end": {
5965 "column": 3, 5965 "column": 3,
5966 "line": 40 5966 "line": 39
5967 }, 5967 },
5968 "file": "src/lib/Menu.js", 5968 "file": "src/lib/Menu.js",
5969 "id": "menu.edit.undo", 5969 "id": "menu.edit.undo",
5970 "start": { 5970 "start": {
5971 "column": 8, 5971 "column": 8,
5972 "line": 37 5972 "line": 36
5973 } 5973 }
5974 }, 5974 },
5975 { 5975 {
5976 "defaultMessage": "!!!Redo", 5976 "defaultMessage": "!!!Redo",
5977 "end": { 5977 "end": {
5978 "column": 3, 5978 "column": 3,
5979 "line": 44 5979 "line": 43
5980 }, 5980 },
5981 "file": "src/lib/Menu.js", 5981 "file": "src/lib/Menu.js",
5982 "id": "menu.edit.redo", 5982 "id": "menu.edit.redo",
5983 "start": { 5983 "start": {
5984 "column": 8, 5984 "column": 8,
5985 "line": 41 5985 "line": 40
5986 } 5986 }
5987 }, 5987 },
5988 { 5988 {
5989 "defaultMessage": "!!!Cut", 5989 "defaultMessage": "!!!Cut",
5990 "end": { 5990 "end": {
5991 "column": 3, 5991 "column": 3,
5992 "line": 48 5992 "line": 47
5993 }, 5993 },
5994 "file": "src/lib/Menu.js", 5994 "file": "src/lib/Menu.js",
5995 "id": "menu.edit.cut", 5995 "id": "menu.edit.cut",
5996 "start": { 5996 "start": {
5997 "column": 7, 5997 "column": 7,
5998 "line": 45 5998 "line": 44
5999 } 5999 }
6000 }, 6000 },
6001 { 6001 {
6002 "defaultMessage": "!!!Copy", 6002 "defaultMessage": "!!!Copy",
6003 "end": { 6003 "end": {
6004 "column": 3, 6004 "column": 3,
6005 "line": 52 6005 "line": 51
6006 }, 6006 },
6007 "file": "src/lib/Menu.js", 6007 "file": "src/lib/Menu.js",
6008 "id": "menu.edit.copy", 6008 "id": "menu.edit.copy",
6009 "start": { 6009 "start": {
6010 "column": 8, 6010 "column": 8,
6011 "line": 49 6011 "line": 48
6012 } 6012 }
6013 }, 6013 },
6014 { 6014 {
6015 "defaultMessage": "!!!Paste", 6015 "defaultMessage": "!!!Paste",
6016 "end": { 6016 "end": {
6017 "column": 3, 6017 "column": 3,
6018 "line": 56 6018 "line": 55
6019 }, 6019 },
6020 "file": "src/lib/Menu.js", 6020 "file": "src/lib/Menu.js",
6021 "id": "menu.edit.paste", 6021 "id": "menu.edit.paste",
6022 "start": { 6022 "start": {
6023 "column": 9, 6023 "column": 9,
6024 "line": 53 6024 "line": 52
6025 } 6025 }
6026 }, 6026 },
6027 { 6027 {
6028 "defaultMessage": "!!!Paste And Match Style", 6028 "defaultMessage": "!!!Paste And Match Style",
6029 "end": { 6029 "end": {
6030 "column": 3, 6030 "column": 3,
6031 "line": 60 6031 "line": 59
6032 }, 6032 },
6033 "file": "src/lib/Menu.js", 6033 "file": "src/lib/Menu.js",
6034 "id": "menu.edit.pasteAndMatchStyle", 6034 "id": "menu.edit.pasteAndMatchStyle",
6035 "start": { 6035 "start": {
6036 "column": 22, 6036 "column": 22,
6037 "line": 57 6037 "line": 56
6038 } 6038 }
6039 }, 6039 },
6040 { 6040 {
6041 "defaultMessage": "!!!Delete", 6041 "defaultMessage": "!!!Delete",
6042 "end": { 6042 "end": {
6043 "column": 3, 6043 "column": 3,
6044 "line": 64 6044 "line": 63
6045 }, 6045 },
6046 "file": "src/lib/Menu.js", 6046 "file": "src/lib/Menu.js",
6047 "id": "menu.edit.delete", 6047 "id": "menu.edit.delete",
6048 "start": { 6048 "start": {
6049 "column": 10, 6049 "column": 10,
6050 "line": 61 6050 "line": 60
6051 } 6051 }
6052 }, 6052 },
6053 { 6053 {
6054 "defaultMessage": "!!!Select All", 6054 "defaultMessage": "!!!Select All",
6055 "end": { 6055 "end": {
6056 "column": 3, 6056 "column": 3,
6057 "line": 68 6057 "line": 67
6058 }, 6058 },
6059 "file": "src/lib/Menu.js", 6059 "file": "src/lib/Menu.js",
6060 "id": "menu.edit.selectAll", 6060 "id": "menu.edit.selectAll",
6061 "start": { 6061 "start": {
6062 "column": 13, 6062 "column": 13,
6063 "line": 65 6063 "line": 64
6064 } 6064 }
6065 }, 6065 },
6066 { 6066 {
6067 "defaultMessage": "!!!Find in Page", 6067 "defaultMessage": "!!!Find in Page",
6068 "end": { 6068 "end": {
6069 "column": 3, 6069 "column": 3,
6070 "line": 72 6070 "line": 71
6071 }, 6071 },
6072 "file": "src/lib/Menu.js", 6072 "file": "src/lib/Menu.js",
6073 "id": "menu.edit.findInPage", 6073 "id": "menu.edit.findInPage",
6074 "start": { 6074 "start": {
6075 "column": 14, 6075 "column": 14,
6076 "line": 69 6076 "line": 68
6077 } 6077 }
6078 }, 6078 },
6079 { 6079 {
6080 "defaultMessage": "!!!Speech", 6080 "defaultMessage": "!!!Speech",
6081 "end": { 6081 "end": {
6082 "column": 3, 6082 "column": 3,
6083 "line": 76 6083 "line": 75
6084 }, 6084 },
6085 "file": "src/lib/Menu.js", 6085 "file": "src/lib/Menu.js",
6086 "id": "menu.edit.speech", 6086 "id": "menu.edit.speech",
6087 "start": { 6087 "start": {
6088 "column": 10, 6088 "column": 10,
6089 "line": 73 6089 "line": 72
6090 } 6090 }
6091 }, 6091 },
6092 { 6092 {
6093 "defaultMessage": "!!!Start Speaking", 6093 "defaultMessage": "!!!Start Speaking",
6094 "end": { 6094 "end": {
6095 "column": 3, 6095 "column": 3,
6096 "line": 80 6096 "line": 79
6097 }, 6097 },
6098 "file": "src/lib/Menu.js", 6098 "file": "src/lib/Menu.js",
6099 "id": "menu.edit.startSpeaking", 6099 "id": "menu.edit.startSpeaking",
6100 "start": { 6100 "start": {
6101 "column": 17, 6101 "column": 17,
6102 "line": 77 6102 "line": 76
6103 } 6103 }
6104 }, 6104 },
6105 { 6105 {
6106 "defaultMessage": "!!!Stop Speaking", 6106 "defaultMessage": "!!!Stop Speaking",
6107 "end": { 6107 "end": {
6108 "column": 3, 6108 "column": 3,
6109 "line": 84 6109 "line": 83
6110 }, 6110 },
6111 "file": "src/lib/Menu.js", 6111 "file": "src/lib/Menu.js",
6112 "id": "menu.edit.stopSpeaking", 6112 "id": "menu.edit.stopSpeaking",
6113 "start": { 6113 "start": {
6114 "column": 16, 6114 "column": 16,
6115 "line": 81 6115 "line": 80
6116 } 6116 }
6117 }, 6117 },
6118 { 6118 {
6119 "defaultMessage": "!!!Start Dictation", 6119 "defaultMessage": "!!!Start Dictation",
6120 "end": { 6120 "end": {
6121 "column": 3, 6121 "column": 3,
6122 "line": 88 6122 "line": 87
6123 }, 6123 },
6124 "file": "src/lib/Menu.js", 6124 "file": "src/lib/Menu.js",
6125 "id": "menu.edit.startDictation", 6125 "id": "menu.edit.startDictation",
6126 "start": { 6126 "start": {
6127 "column": 18, 6127 "column": 18,
6128 "line": 85 6128 "line": 84
6129 } 6129 }
6130 }, 6130 },
6131 { 6131 {
6132 "defaultMessage": "!!!Emoji & Symbols", 6132 "defaultMessage": "!!!Emoji & Symbols",
6133 "end": { 6133 "end": {
6134 "column": 3, 6134 "column": 3,
6135 "line": 92 6135 "line": 91
6136 }, 6136 },
6137 "file": "src/lib/Menu.js", 6137 "file": "src/lib/Menu.js",
6138 "id": "menu.edit.emojiSymbols", 6138 "id": "menu.edit.emojiSymbols",
6139 "start": { 6139 "start": {
6140 "column": 16, 6140 "column": 16,
6141 "line": 89 6141 "line": 88
6142 } 6142 }
6143 }, 6143 },
6144 { 6144 {
6145 "defaultMessage": "!!!Open Quick Switch", 6145 "defaultMessage": "!!!Open Quick Switch",
6146 "end": { 6146 "end": {
6147 "column": 3, 6147 "column": 3,
6148 "line": 96 6148 "line": 95
6149 }, 6149 },
6150 "file": "src/lib/Menu.js", 6150 "file": "src/lib/Menu.js",
6151 "id": "menu.view.openQuickSwitch", 6151 "id": "menu.view.openQuickSwitch",
6152 "start": { 6152 "start": {
6153 "column": 19, 6153 "column": 19,
6154 "line": 93 6154 "line": 92
6155 } 6155 }
6156 }, 6156 },
6157 { 6157 {
6158 "defaultMessage": "!!!Back", 6158 "defaultMessage": "!!!Back",
6159 "end": { 6159 "end": {
6160 "column": 3, 6160 "column": 3,
6161 "line": 100 6161 "line": 99
6162 }, 6162 },
6163 "file": "src/lib/Menu.js", 6163 "file": "src/lib/Menu.js",
6164 "id": "menu.view.back", 6164 "id": "menu.view.back",
6165 "start": { 6165 "start": {
6166 "column": 8, 6166 "column": 8,
6167 "line": 97 6167 "line": 96
6168 } 6168 }
6169 }, 6169 },
6170 { 6170 {
6171 "defaultMessage": "!!!Forward", 6171 "defaultMessage": "!!!Forward",
6172 "end": { 6172 "end": {
6173 "column": 3, 6173 "column": 3,
6174 "line": 104 6174 "line": 103
6175 }, 6175 },
6176 "file": "src/lib/Menu.js", 6176 "file": "src/lib/Menu.js",
6177 "id": "menu.view.forward", 6177 "id": "menu.view.forward",
6178 "start": { 6178 "start": {
6179 "column": 11, 6179 "column": 11,
6180 "line": 101 6180 "line": 100
6181 } 6181 }
6182 }, 6182 },
6183 { 6183 {
6184 "defaultMessage": "!!!Actual Size", 6184 "defaultMessage": "!!!Actual Size",
6185 "end": { 6185 "end": {
6186 "column": 3, 6186 "column": 3,
6187 "line": 108 6187 "line": 107
6188 }, 6188 },
6189 "file": "src/lib/Menu.js", 6189 "file": "src/lib/Menu.js",
6190 "id": "menu.view.resetZoom", 6190 "id": "menu.view.resetZoom",
6191 "start": { 6191 "start": {
6192 "column": 13, 6192 "column": 13,
6193 "line": 105 6193 "line": 104
6194 } 6194 }
6195 }, 6195 },
6196 { 6196 {
6197 "defaultMessage": "!!!Zoom In", 6197 "defaultMessage": "!!!Zoom In",
6198 "end": { 6198 "end": {
6199 "column": 3, 6199 "column": 3,
6200 "line": 112 6200 "line": 111
6201 }, 6201 },
6202 "file": "src/lib/Menu.js", 6202 "file": "src/lib/Menu.js",
6203 "id": "menu.view.zoomIn", 6203 "id": "menu.view.zoomIn",
6204 "start": { 6204 "start": {
6205 "column": 10, 6205 "column": 10,
6206 "line": 109 6206 "line": 108
6207 } 6207 }
6208 }, 6208 },
6209 { 6209 {
6210 "defaultMessage": "!!!Zoom Out", 6210 "defaultMessage": "!!!Zoom Out",
6211 "end": { 6211 "end": {
6212 "column": 3, 6212 "column": 3,
6213 "line": 116 6213 "line": 115
6214 }, 6214 },
6215 "file": "src/lib/Menu.js", 6215 "file": "src/lib/Menu.js",
6216 "id": "menu.view.zoomOut", 6216 "id": "menu.view.zoomOut",
6217 "start": { 6217 "start": {
6218 "column": 11, 6218 "column": 11,
6219 "line": 113 6219 "line": 112
6220 } 6220 }
6221 }, 6221 },
6222 { 6222 {
6223 "defaultMessage": "!!!Toggle Full Screen", 6223 "defaultMessage": "!!!Toggle Full Screen",
6224 "end": { 6224 "end": {
6225 "column": 3, 6225 "column": 3,
6226 "line": 120 6226 "line": 119
6227 }, 6227 },
6228 "file": "src/lib/Menu.js", 6228 "file": "src/lib/Menu.js",
6229 "id": "menu.view.toggleFullScreen", 6229 "id": "menu.view.toggleFullScreen",
6230 "start": { 6230 "start": {
6231 "column": 20, 6231 "column": 20,
6232 "line": 117 6232 "line": 116
6233 } 6233 }
6234 }, 6234 },
6235 { 6235 {
6236 "defaultMessage": "!!!Toggle Dark Mode", 6236 "defaultMessage": "!!!Toggle Dark Mode",
6237 "end": { 6237 "end": {
6238 "column": 3, 6238 "column": 3,
6239 "line": 124 6239 "line": 123
6240 }, 6240 },
6241 "file": "src/lib/Menu.js", 6241 "file": "src/lib/Menu.js",
6242 "id": "menu.view.toggleDarkMode", 6242 "id": "menu.view.toggleDarkMode",
6243 "start": { 6243 "start": {
6244 "column": 18, 6244 "column": 18,
6245 "line": 121 6245 "line": 120
6246 } 6246 }
6247 }, 6247 },
6248 { 6248 {
6249 "defaultMessage": "!!!Toggle Developer Tools", 6249 "defaultMessage": "!!!Toggle Developer Tools",
6250 "end": { 6250 "end": {
6251 "column": 3, 6251 "column": 3,
6252 "line": 128 6252 "line": 127
6253 }, 6253 },
6254 "file": "src/lib/Menu.js", 6254 "file": "src/lib/Menu.js",
6255 "id": "menu.view.toggleDevTools", 6255 "id": "menu.view.toggleDevTools",
6256 "start": { 6256 "start": {
6257 "column": 18, 6257 "column": 18,
6258 "line": 125 6258 "line": 124
6259 } 6259 }
6260 }, 6260 },
6261 { 6261 {
6262 "defaultMessage": "!!!Toggle Todos Developer Tools", 6262 "defaultMessage": "!!!Toggle Todos Developer Tools",
6263 "end": { 6263 "end": {
6264 "column": 3, 6264 "column": 3,
6265 "line": 132 6265 "line": 131
6266 }, 6266 },
6267 "file": "src/lib/Menu.js", 6267 "file": "src/lib/Menu.js",
6268 "id": "menu.view.toggleTodosDevTools", 6268 "id": "menu.view.toggleTodosDevTools",
6269 "start": { 6269 "start": {
6270 "column": 23, 6270 "column": 23,
6271 "line": 129 6271 "line": 128
6272 } 6272 }
6273 }, 6273 },
6274 { 6274 {
6275 "defaultMessage": "!!!Toggle Service Developer Tools", 6275 "defaultMessage": "!!!Toggle Service Developer Tools",
6276 "end": { 6276 "end": {
6277 "column": 3, 6277 "column": 3,
6278 "line": 136 6278 "line": 135
6279 }, 6279 },
6280 "file": "src/lib/Menu.js", 6280 "file": "src/lib/Menu.js",
6281 "id": "menu.view.toggleServiceDevTools", 6281 "id": "menu.view.toggleServiceDevTools",
6282 "start": { 6282 "start": {
6283 "column": 25, 6283 "column": 25,
6284 "line": 133 6284 "line": 132
6285 } 6285 }
6286 }, 6286 },
6287 { 6287 {
6288 "defaultMessage": "!!!Reload Service", 6288 "defaultMessage": "!!!Reload Service",
6289 "end": { 6289 "end": {
6290 "column": 3, 6290 "column": 3,
6291 "line": 140 6291 "line": 139
6292 }, 6292 },
6293 "file": "src/lib/Menu.js", 6293 "file": "src/lib/Menu.js",
6294 "id": "menu.view.reloadService", 6294 "id": "menu.view.reloadService",
6295 "start": { 6295 "start": {
6296 "column": 17, 6296 "column": 17,
6297 "line": 137 6297 "line": 136
6298 } 6298 }
6299 }, 6299 },
6300 { 6300 {
6301 "defaultMessage": "!!!Reload Ferdi", 6301 "defaultMessage": "!!!Reload Ferdi",
6302 "end": { 6302 "end": {
6303 "column": 3, 6303 "column": 3,
6304 "line": 144 6304 "line": 143
6305 }, 6305 },
6306 "file": "src/lib/Menu.js", 6306 "file": "src/lib/Menu.js",
6307 "id": "menu.view.reloadFerdi", 6307 "id": "menu.view.reloadFerdi",
6308 "start": { 6308 "start": {
6309 "column": 15, 6309 "column": 15,
6310 "line": 141 6310 "line": 140
6311 } 6311 }
6312 }, 6312 },
6313 { 6313 {
6314 "defaultMessage": "!!!Lock Ferdi", 6314 "defaultMessage": "!!!Lock Ferdi",
6315 "end": { 6315 "end": {
6316 "column": 3, 6316 "column": 3,
6317 "line": 148 6317 "line": 147
6318 }, 6318 },
6319 "file": "src/lib/Menu.js", 6319 "file": "src/lib/Menu.js",
6320 "id": "menu.view.lockFerdi", 6320 "id": "menu.view.lockFerdi",
6321 "start": { 6321 "start": {
6322 "column": 13, 6322 "column": 13,
6323 "line": 145 6323 "line": 144
6324 } 6324 }
6325 }, 6325 },
6326 { 6326 {
6327 "defaultMessage": "!!!Reload ToDos", 6327 "defaultMessage": "!!!Reload ToDos",
6328 "end": { 6328 "end": {
6329 "column": 3, 6329 "column": 3,
6330 "line": 152 6330 "line": 151
6331 }, 6331 },
6332 "file": "src/lib/Menu.js", 6332 "file": "src/lib/Menu.js",
6333 "id": "menu.view.reloadTodos", 6333 "id": "menu.view.reloadTodos",
6334 "start": { 6334 "start": {
6335 "column": 15, 6335 "column": 15,
6336 "line": 149 6336 "line": 148
6337 } 6337 }
6338 }, 6338 },
6339 { 6339 {
6340 "defaultMessage": "!!!Minimize", 6340 "defaultMessage": "!!!Minimize",
6341 "end": { 6341 "end": {
6342 "column": 3, 6342 "column": 3,
6343 "line": 156 6343 "line": 155
6344 }, 6344 },
6345 "file": "src/lib/Menu.js", 6345 "file": "src/lib/Menu.js",
6346 "id": "menu.window.minimize", 6346 "id": "menu.window.minimize",
6347 "start": { 6347 "start": {
6348 "column": 12, 6348 "column": 12,
6349 "line": 153 6349 "line": 152
6350 } 6350 }
6351 }, 6351 },
6352 { 6352 {
6353 "defaultMessage": "!!!Close", 6353 "defaultMessage": "!!!Close",
6354 "end": { 6354 "end": {
6355 "column": 3, 6355 "column": 3,
6356 "line": 160 6356 "line": 159
6357 }, 6357 },
6358 "file": "src/lib/Menu.js", 6358 "file": "src/lib/Menu.js",
6359 "id": "menu.window.close", 6359 "id": "menu.window.close",
6360 "start": { 6360 "start": {
6361 "column": 9, 6361 "column": 9,
6362 "line": 157 6362 "line": 156
6363 } 6363 }
6364 }, 6364 },
6365 { 6365 {
6366 "defaultMessage": "!!!Learn More", 6366 "defaultMessage": "!!!Learn More",
6367 "end": { 6367 "end": {
6368 "column": 3, 6368 "column": 3,
6369 "line": 164 6369 "line": 163
6370 }, 6370 },
6371 "file": "src/lib/Menu.js", 6371 "file": "src/lib/Menu.js",
6372 "id": "menu.help.learnMore", 6372 "id": "menu.help.learnMore",
6373 "start": { 6373 "start": {
6374 "column": 13, 6374 "column": 13,
6375 "line": 161 6375 "line": 160
6376 } 6376 }
6377 }, 6377 },
6378 { 6378 {
6379 "defaultMessage": "!!!Changelog", 6379 "defaultMessage": "!!!Changelog",
6380 "end": { 6380 "end": {
6381 "column": 3, 6381 "column": 3,
6382 "line": 168 6382 "line": 167
6383 }, 6383 },
6384 "file": "src/lib/Menu.js", 6384 "file": "src/lib/Menu.js",
6385 "id": "menu.help.changelog", 6385 "id": "menu.help.changelog",
6386 "start": { 6386 "start": {
6387 "column": 13, 6387 "column": 13,
6388 "line": 165 6388 "line": 164
6389 } 6389 }
6390 }, 6390 },
6391 { 6391 {
6392 "defaultMessage": "!!!Import/Export Configuration Data", 6392 "defaultMessage": "!!!Import/Export Configuration Data",
6393 "end": { 6393 "end": {
6394 "column": 3, 6394 "column": 3,
6395 "line": 172 6395 "line": 171
6396 }, 6396 },
6397 "file": "src/lib/Menu.js", 6397 "file": "src/lib/Menu.js",
6398 "id": "menu.help.importExportData", 6398 "id": "menu.help.importExportData",
6399 "start": { 6399 "start": {
6400 "column": 20, 6400 "column": 20,
6401 "line": 169 6401 "line": 168
6402 } 6402 }
6403 }, 6403 },
6404 { 6404 {
6405 "defaultMessage": "!!!Support", 6405 "defaultMessage": "!!!Support",
6406 "end": { 6406 "end": {
6407 "column": 3, 6407 "column": 3,
6408 "line": 176 6408 "line": 175
6409 }, 6409 },
6410 "file": "src/lib/Menu.js", 6410 "file": "src/lib/Menu.js",
6411 "id": "menu.help.support", 6411 "id": "menu.help.support",
6412 "start": { 6412 "start": {
6413 "column": 11, 6413 "column": 11,
6414 "line": 173 6414 "line": 172
6415 } 6415 }
6416 }, 6416 },
6417 { 6417 {
6418 "defaultMessage": "!!!Copy Debug Information", 6418 "defaultMessage": "!!!Copy Debug Information",
6419 "end": { 6419 "end": {
6420 "column": 3, 6420 "column": 3,
6421 "line": 180 6421 "line": 179
6422 }, 6422 },
6423 "file": "src/lib/Menu.js", 6423 "file": "src/lib/Menu.js",
6424 "id": "menu.help.debugInfo", 6424 "id": "menu.help.debugInfo",
6425 "start": { 6425 "start": {
6426 "column": 13, 6426 "column": 13,
6427 "line": 177 6427 "line": 176
6428 } 6428 }
6429 }, 6429 },
6430 { 6430 {
6431 "defaultMessage": "!!!Publish Debug Information", 6431 "defaultMessage": "!!!Publish Debug Information",
6432 "end": { 6432 "end": {
6433 "column": 3, 6433 "column": 3,
6434 "line": 184 6434 "line": 183
6435 }, 6435 },
6436 "file": "src/lib/Menu.js", 6436 "file": "src/lib/Menu.js",
6437 "id": "menu.help.publishDebugInfo", 6437 "id": "menu.help.publishDebugInfo",
6438 "start": { 6438 "start": {
6439 "column": 20, 6439 "column": 20,
6440 "line": 181 6440 "line": 180
6441 } 6441 }
6442 }, 6442 },
6443 { 6443 {
6444 "defaultMessage": "!!!Ferdi Debug Information", 6444 "defaultMessage": "!!!Ferdi Debug Information",
6445 "end": { 6445 "end": {
6446 "column": 3, 6446 "column": 3,
6447 "line": 188 6447 "line": 187
6448 }, 6448 },
6449 "file": "src/lib/Menu.js", 6449 "file": "src/lib/Menu.js",
6450 "id": "menu.help.debugInfoCopiedHeadline", 6450 "id": "menu.help.debugInfoCopiedHeadline",
6451 "start": { 6451 "start": {
6452 "column": 27, 6452 "column": 27,
6453 "line": 185 6453 "line": 184
6454 } 6454 }
6455 }, 6455 },
6456 { 6456 {
6457 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 6457 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
6458 "end": { 6458 "end": {
6459 "column": 3, 6459 "column": 3,
6460 "line": 193 6460 "line": 192
6461 }, 6461 },
6462 "file": "src/lib/Menu.js", 6462 "file": "src/lib/Menu.js",
6463 "id": "menu.help.debugInfoCopiedBody", 6463 "id": "menu.help.debugInfoCopiedBody",
6464 "start": { 6464 "start": {
6465 "column": 23, 6465 "column": 23,
6466 "line": 189 6466 "line": 188
6467 } 6467 }
6468 }, 6468 },
6469 { 6469 {
6470 "defaultMessage": "!!!Unlock with Touch ID", 6470 "defaultMessage": "!!!Unlock with Touch ID",
6471 "end": { 6471 "end": {
6472 "column": 3, 6472 "column": 3,
6473 "line": 197 6473 "line": 196
6474 }, 6474 },
6475 "file": "src/lib/Menu.js", 6475 "file": "src/lib/Menu.js",
6476 "id": "locked.touchId", 6476 "id": "locked.touchId",
6477 "start": { 6477 "start": {
6478 "column": 11, 6478 "column": 11,
6479 "line": 194 6479 "line": 193
6480 } 6480 }
6481 }, 6481 },
6482 { 6482 {
6483 "defaultMessage": "!!!unlock via Touch ID", 6483 "defaultMessage": "!!!unlock via Touch ID",
6484 "end": { 6484 "end": {
6485 "column": 3, 6485 "column": 3,
6486 "line": 201 6486 "line": 200
6487 }, 6487 },
6488 "file": "src/lib/Menu.js", 6488 "file": "src/lib/Menu.js",
6489 "id": "locked.touchIdPrompt", 6489 "id": "locked.touchIdPrompt",
6490 "start": { 6490 "start": {
6491 "column": 17, 6491 "column": 17,
6492 "line": 198 6492 "line": 197
6493 } 6493 }
6494 }, 6494 },
6495 { 6495 {
6496 "defaultMessage": "!!!Terms of Service", 6496 "defaultMessage": "!!!Terms of Service",
6497 "end": { 6497 "end": {
6498 "column": 3, 6498 "column": 3,
6499 "line": 205 6499 "line": 204
6500 }, 6500 },
6501 "file": "src/lib/Menu.js", 6501 "file": "src/lib/Menu.js",
6502 "id": "menu.help.tos", 6502 "id": "menu.help.tos",
6503 "start": { 6503 "start": {
6504 "column": 7, 6504 "column": 7,
6505 "line": 202 6505 "line": 201
6506 } 6506 }
6507 }, 6507 },
6508 { 6508 {
6509 "defaultMessage": "!!!Privacy Statement", 6509 "defaultMessage": "!!!Privacy Statement",
6510 "end": { 6510 "end": {
6511 "column": 3, 6511 "column": 3,
6512 "line": 209 6512 "line": 208
6513 }, 6513 },
6514 "file": "src/lib/Menu.js", 6514 "file": "src/lib/Menu.js",
6515 "id": "menu.help.privacy", 6515 "id": "menu.help.privacy",
6516 "start": { 6516 "start": {
6517 "column": 11, 6517 "column": 11,
6518 "line": 206 6518 "line": 205
6519 } 6519 }
6520 }, 6520 },
6521 { 6521 {
6522 "defaultMessage": "!!!File", 6522 "defaultMessage": "!!!File",
6523 "end": { 6523 "end": {
6524 "column": 3, 6524 "column": 3,
6525 "line": 213 6525 "line": 212
6526 }, 6526 },
6527 "file": "src/lib/Menu.js", 6527 "file": "src/lib/Menu.js",
6528 "id": "menu.file", 6528 "id": "menu.file",
6529 "start": { 6529 "start": {
6530 "column": 8, 6530 "column": 8,
6531 "line": 210 6531 "line": 209
6532 } 6532 }
6533 }, 6533 },
6534 { 6534 {
6535 "defaultMessage": "!!!View", 6535 "defaultMessage": "!!!View",
6536 "end": { 6536 "end": {
6537 "column": 3, 6537 "column": 3,
6538 "line": 217 6538 "line": 216
6539 }, 6539 },
6540 "file": "src/lib/Menu.js", 6540 "file": "src/lib/Menu.js",
6541 "id": "menu.view", 6541 "id": "menu.view",
6542 "start": { 6542 "start": {
6543 "column": 8, 6543 "column": 8,
6544 "line": 214 6544 "line": 213
6545 } 6545 }
6546 }, 6546 },
6547 { 6547 {
6548 "defaultMessage": "!!!Services", 6548 "defaultMessage": "!!!Services",
6549 "end": { 6549 "end": {
6550 "column": 3, 6550 "column": 3,
6551 "line": 221 6551 "line": 220
6552 }, 6552 },
6553 "file": "src/lib/Menu.js", 6553 "file": "src/lib/Menu.js",
6554 "id": "menu.services", 6554 "id": "menu.services",
6555 "start": { 6555 "start": {
6556 "column": 12, 6556 "column": 12,
6557 "line": 218 6557 "line": 217
6558 } 6558 }
6559 }, 6559 },
6560 { 6560 {
6561 "defaultMessage": "!!!Window", 6561 "defaultMessage": "!!!Window",
6562 "end": { 6562 "end": {
6563 "column": 3, 6563 "column": 3,
6564 "line": 225 6564 "line": 224
6565 }, 6565 },
6566 "file": "src/lib/Menu.js", 6566 "file": "src/lib/Menu.js",
6567 "id": "menu.window", 6567 "id": "menu.window",
6568 "start": { 6568 "start": {
6569 "column": 10, 6569 "column": 10,
6570 "line": 222 6570 "line": 221
6571 } 6571 }
6572 }, 6572 },
6573 { 6573 {
6574 "defaultMessage": "!!!Help", 6574 "defaultMessage": "!!!Help",
6575 "end": { 6575 "end": {
6576 "column": 3, 6576 "column": 3,
6577 "line": 229 6577 "line": 228
6578 }, 6578 },
6579 "file": "src/lib/Menu.js", 6579 "file": "src/lib/Menu.js",
6580 "id": "menu.help", 6580 "id": "menu.help",
6581 "start": { 6581 "start": {
6582 "column": 8, 6582 "column": 8,
6583 "line": 226 6583 "line": 225
6584 } 6584 }
6585 }, 6585 },
6586 { 6586 {
6587 "defaultMessage": "!!!About Ferdi", 6587 "defaultMessage": "!!!About Ferdi",
6588 "end": { 6588 "end": {
6589 "column": 3, 6589 "column": 3,
6590 "line": 233 6590 "line": 232
6591 }, 6591 },
6592 "file": "src/lib/Menu.js", 6592 "file": "src/lib/Menu.js",
6593 "id": "menu.app.about", 6593 "id": "menu.app.about",
6594 "start": { 6594 "start": {
6595 "column": 9, 6595 "column": 9,
6596 "line": 230 6596 "line": 229
6597 } 6597 }
6598 }, 6598 },
6599 { 6599 {
6600 "defaultMessage": "!!!Check for updates", 6600 "defaultMessage": "!!!Check for updates",
6601 "end": { 6601 "end": {
6602 "column": 3, 6602 "column": 3,
6603 "line": 237 6603 "line": 236
6604 }, 6604 },
6605 "file": "src/lib/Menu.js", 6605 "file": "src/lib/Menu.js",
6606 "id": "menu.app.checkForUpdates", 6606 "id": "menu.app.checkForUpdates",
6607 "start": { 6607 "start": {
6608 "column": 19, 6608 "column": 19,
6609 "line": 234 6609 "line": 233
6610 } 6610 }
6611 }, 6611 },
6612 { 6612 {
6613 "defaultMessage": "!!!Hide", 6613 "defaultMessage": "!!!Hide",
6614 "end": { 6614 "end": {
6615 "column": 3, 6615 "column": 3,
6616 "line": 241 6616 "line": 240
6617 }, 6617 },
6618 "file": "src/lib/Menu.js", 6618 "file": "src/lib/Menu.js",
6619 "id": "menu.app.hide", 6619 "id": "menu.app.hide",
6620 "start": { 6620 "start": {
6621 "column": 8, 6621 "column": 8,
6622 "line": 238 6622 "line": 237
6623 } 6623 }
6624 }, 6624 },
6625 { 6625 {
6626 "defaultMessage": "!!!Hide Others", 6626 "defaultMessage": "!!!Hide Others",
6627 "end": { 6627 "end": {
6628 "column": 3, 6628 "column": 3,
6629 "line": 245 6629 "line": 244
6630 }, 6630 },
6631 "file": "src/lib/Menu.js", 6631 "file": "src/lib/Menu.js",
6632 "id": "menu.app.hideOthers", 6632 "id": "menu.app.hideOthers",
6633 "start": { 6633 "start": {
6634 "column": 14, 6634 "column": 14,
6635 "line": 242 6635 "line": 241
6636 } 6636 }
6637 }, 6637 },
6638 { 6638 {
6639 "defaultMessage": "!!!Unhide", 6639 "defaultMessage": "!!!Unhide",
6640 "end": { 6640 "end": {
6641 "column": 3, 6641 "column": 3,
6642 "line": 249 6642 "line": 248
6643 }, 6643 },
6644 "file": "src/lib/Menu.js", 6644 "file": "src/lib/Menu.js",
6645 "id": "menu.app.unhide", 6645 "id": "menu.app.unhide",
6646 "start": { 6646 "start": {
6647 "column": 10, 6647 "column": 10,
6648 "line": 246 6648 "line": 245
6649 } 6649 }
6650 }, 6650 },
6651 { 6651 {
6652 "defaultMessage": "!!!Auto-hide menu bar", 6652 "defaultMessage": "!!!Auto-hide menu bar",
6653 "end": { 6653 "end": {
6654 "column": 3, 6654 "column": 3,
6655 "line": 253 6655 "line": 252
6656 }, 6656 },
6657 "file": "src/lib/Menu.js", 6657 "file": "src/lib/Menu.js",
6658 "id": "menu.app.autohideMenuBar", 6658 "id": "menu.app.autohideMenuBar",
6659 "start": { 6659 "start": {
6660 "column": 19, 6660 "column": 19,
6661 "line": 250 6661 "line": 249
6662 } 6662 }
6663 }, 6663 },
6664 { 6664 {
6665 "defaultMessage": "!!!Add New Service...", 6665 "defaultMessage": "!!!Add New Service...",
6666 "end": { 6666 "end": {
6667 "column": 3, 6667 "column": 3,
6668 "line": 257 6668 "line": 256
6669 }, 6669 },
6670 "file": "src/lib/Menu.js", 6670 "file": "src/lib/Menu.js",
6671 "id": "menu.services.addNewService", 6671 "id": "menu.services.addNewService",
6672 "start": { 6672 "start": {
6673 "column": 17, 6673 "column": 17,
6674 "line": 254 6674 "line": 253
6675 } 6675 }
6676 }, 6676 },
6677 { 6677 {
6678 "defaultMessage": "!!!Add New Workspace...", 6678 "defaultMessage": "!!!Add New Workspace...",
6679 "end": { 6679 "end": {
6680 "column": 3, 6680 "column": 3,
6681 "line": 261 6681 "line": 260
6682 }, 6682 },
6683 "file": "src/lib/Menu.js", 6683 "file": "src/lib/Menu.js",
6684 "id": "menu.workspaces.addNewWorkspace", 6684 "id": "menu.workspaces.addNewWorkspace",
6685 "start": { 6685 "start": {
6686 "column": 19, 6686 "column": 19,
6687 "line": 258 6687 "line": 257
6688 } 6688 }
6689 }, 6689 },
6690 { 6690 {
6691 "defaultMessage": "!!!Open workspace drawer", 6691 "defaultMessage": "!!!Open workspace drawer",
6692 "end": { 6692 "end": {
6693 "column": 3, 6693 "column": 3,
6694 "line": 265 6694 "line": 264
6695 }, 6695 },
6696 "file": "src/lib/Menu.js", 6696 "file": "src/lib/Menu.js",
6697 "id": "menu.workspaces.openWorkspaceDrawer", 6697 "id": "menu.workspaces.openWorkspaceDrawer",
6698 "start": { 6698 "start": {
6699 "column": 23, 6699 "column": 23,
6700 "line": 262 6700 "line": 261
6701 } 6701 }
6702 }, 6702 },
6703 { 6703 {
6704 "defaultMessage": "!!!Close workspace drawer", 6704 "defaultMessage": "!!!Close workspace drawer",
6705 "end": { 6705 "end": {
6706 "column": 3, 6706 "column": 3,
6707 "line": 269 6707 "line": 268
6708 }, 6708 },
6709 "file": "src/lib/Menu.js", 6709 "file": "src/lib/Menu.js",
6710 "id": "menu.workspaces.closeWorkspaceDrawer", 6710 "id": "menu.workspaces.closeWorkspaceDrawer",
6711 "start": { 6711 "start": {
6712 "column": 24, 6712 "column": 24,
6713 "line": 266 6713 "line": 265
6714 } 6714 }
6715 }, 6715 },
6716 { 6716 {
6717 "defaultMessage": "!!!Activate next service...", 6717 "defaultMessage": "!!!Activate next service...",
6718 "end": { 6718 "end": {
6719 "column": 3, 6719 "column": 3,
6720 "line": 273 6720 "line": 272
6721 }, 6721 },
6722 "file": "src/lib/Menu.js", 6722 "file": "src/lib/Menu.js",
6723 "id": "menu.services.setNextServiceActive", 6723 "id": "menu.services.setNextServiceActive",
6724 "start": { 6724 "start": {
6725 "column": 23, 6725 "column": 23,
6726 "line": 270 6726 "line": 269
6727 } 6727 }
6728 }, 6728 },
6729 { 6729 {
6730 "defaultMessage": "!!!Activate previous service...", 6730 "defaultMessage": "!!!Activate previous service...",
6731 "end": { 6731 "end": {
6732 "column": 3, 6732 "column": 3,
6733 "line": 277 6733 "line": 276
6734 }, 6734 },
6735 "file": "src/lib/Menu.js", 6735 "file": "src/lib/Menu.js",
6736 "id": "menu.services.activatePreviousService", 6736 "id": "menu.services.activatePreviousService",
6737 "start": { 6737 "start": {
6738 "column": 27, 6738 "column": 27,
6739 "line": 274 6739 "line": 273
6740 } 6740 }
6741 }, 6741 },
6742 { 6742 {
6743 "defaultMessage": "!!!Disable notifications & audio", 6743 "defaultMessage": "!!!Disable notifications & audio",
6744 "end": { 6744 "end": {
6745 "column": 3, 6745 "column": 3,
6746 "line": 281 6746 "line": 280
6747 }, 6747 },
6748 "file": "src/lib/Menu.js", 6748 "file": "src/lib/Menu.js",
6749 "id": "sidebar.muteApp", 6749 "id": "sidebar.muteApp",
6750 "start": { 6750 "start": {
6751 "column": 11, 6751 "column": 11,
6752 "line": 278 6752 "line": 277
6753 } 6753 }
6754 }, 6754 },
6755 { 6755 {
6756 "defaultMessage": "!!!Enable notifications & audio", 6756 "defaultMessage": "!!!Enable notifications & audio",
6757 "end": { 6757 "end": {
6758 "column": 3, 6758 "column": 3,
6759 "line": 285 6759 "line": 284
6760 }, 6760 },
6761 "file": "src/lib/Menu.js", 6761 "file": "src/lib/Menu.js",
6762 "id": "sidebar.unmuteApp", 6762 "id": "sidebar.unmuteApp",
6763 "start": { 6763 "start": {
6764 "column": 13, 6764 "column": 13,
6765 "line": 282 6765 "line": 281
6766 } 6766 }
6767 }, 6767 },
6768 { 6768 {
6769 "defaultMessage": "!!!Workspaces", 6769 "defaultMessage": "!!!Workspaces",
6770 "end": { 6770 "end": {
6771 "column": 3, 6771 "column": 3,
6772 "line": 289 6772 "line": 288
6773 }, 6773 },
6774 "file": "src/lib/Menu.js", 6774 "file": "src/lib/Menu.js",
6775 "id": "menu.workspaces", 6775 "id": "menu.workspaces",
6776 "start": { 6776 "start": {
6777 "column": 14, 6777 "column": 14,
6778 "line": 286 6778 "line": 285
6779 } 6779 }
6780 }, 6780 },
6781 { 6781 {
6782 "defaultMessage": "!!!Default", 6782 "defaultMessage": "!!!Default",
6783 "end": { 6783 "end": {
6784 "column": 3, 6784 "column": 3,
6785 "line": 293 6785 "line": 292
6786 }, 6786 },
6787 "file": "src/lib/Menu.js", 6787 "file": "src/lib/Menu.js",
6788 "id": "menu.workspaces.defaultWorkspace", 6788 "id": "menu.workspaces.defaultWorkspace",
6789 "start": { 6789 "start": {
6790 "column": 20, 6790 "column": 20,
6791 "line": 290 6791 "line": 289
6792 } 6792 }
6793 }, 6793 },
6794 { 6794 {
6795 "defaultMessage": "!!!Todos", 6795 "defaultMessage": "!!!Todos",
6796 "end": { 6796 "end": {
6797 "column": 3, 6797 "column": 3,
6798 "line": 297 6798 "line": 296
6799 }, 6799 },
6800 "file": "src/lib/Menu.js", 6800 "file": "src/lib/Menu.js",
6801 "id": "menu.todos", 6801 "id": "menu.todos",
6802 "start": { 6802 "start": {
6803 "column": 9, 6803 "column": 9,
6804 "line": 294 6804 "line": 293
6805 } 6805 }
6806 }, 6806 },
6807 { 6807 {
6808 "defaultMessage": "!!!Open Todos drawer", 6808 "defaultMessage": "!!!Open Todos drawer",
6809 "end": { 6809 "end": {
6810 "column": 3, 6810 "column": 3,
6811 "line": 301 6811 "line": 300
6812 }, 6812 },
6813 "file": "src/lib/Menu.js", 6813 "file": "src/lib/Menu.js",
6814 "id": "menu.Todoss.openTodosDrawer", 6814 "id": "menu.Todoss.openTodosDrawer",
6815 "start": { 6815 "start": {
6816 "column": 19, 6816 "column": 19,
6817 "line": 298 6817 "line": 297
6818 } 6818 }
6819 }, 6819 },
6820 { 6820 {
6821 "defaultMessage": "!!!Close Todos drawer", 6821 "defaultMessage": "!!!Close Todos drawer",
6822 "end": { 6822 "end": {
6823 "column": 3, 6823 "column": 3,
6824 "line": 305 6824 "line": 304
6825 }, 6825 },
6826 "file": "src/lib/Menu.js", 6826 "file": "src/lib/Menu.js",
6827 "id": "menu.Todoss.closeTodosDrawer", 6827 "id": "menu.Todoss.closeTodosDrawer",
6828 "start": { 6828 "start": {
6829 "column": 20, 6829 "column": 20,
6830 "line": 302 6830 "line": 301
6831 } 6831 }
6832 }, 6832 },
6833 { 6833 {
6834 "defaultMessage": "!!!Enable Todos", 6834 "defaultMessage": "!!!Enable Todos",
6835 "end": { 6835 "end": {
6836 "column": 3, 6836 "column": 3,
6837 "line": 309 6837 "line": 308
6838 }, 6838 },
6839 "file": "src/lib/Menu.js", 6839 "file": "src/lib/Menu.js",
6840 "id": "menu.todos.enableTodos", 6840 "id": "menu.todos.enableTodos",
6841 "start": { 6841 "start": {
6842 "column": 15, 6842 "column": 15,
6843 "line": 306 6843 "line": 305
6844 } 6844 }
6845 }, 6845 },
6846 { 6846 {
6847 "defaultMessage": "!!!Home", 6847 "defaultMessage": "!!!Home",
6848 "end": { 6848 "end": {
6849 "column": 3, 6849 "column": 3,
6850 "line": 313 6850 "line": 312
6851 }, 6851 },
6852 "file": "src/lib/Menu.js", 6852 "file": "src/lib/Menu.js",
6853 "id": "menu.services.goHome", 6853 "id": "menu.services.goHome",
6854 "start": { 6854 "start": {
6855 "column": 17, 6855 "column": 17,
6856 "line": 310 6856 "line": 309
6857 } 6857 }
6858 } 6858 }
6859 ], 6859 ],
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index 39b72e367..ea37ec76c 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -9,7 +9,7 @@
9 "connectionLostBanner.cta": "Przeładuj usługę", 9 "connectionLostBanner.cta": "Przeładuj usługę",
10 "connectionLostBanner.informationLink": "Co się stało?", 10 "connectionLostBanner.informationLink": "Co się stało?",
11 "connectionLostBanner.message": "O nie! Ferdi stracił połączenie z {name}.", 11 "connectionLostBanner.message": "O nie! Ferdi stracił połączenie z {name}.",
12 "feature.basicAuth.signIn": "Sign In", 12 "feature.basicAuth.signIn": "Zaloguj siÄ™",
13 "feature.debugger.title": "Opublikuj dane diagnostyczne", 13 "feature.debugger.title": "Opublikuj dane diagnostyczne",
14 "feature.nightlyBuilds.activate": "Aktywuj", 14 "feature.nightlyBuilds.activate": "Aktywuj",
15 "feature.nightlyBuilds.info": "Kompilacje testowe to wysoce eksperymentalne wersje Ferdi, które mogą zawierać niedopracowane lub nieukończone funkcje. Te kompilacje są przewidziane głównie dla programistów testujących nowe funkcje będące w opracowaniu oraz ostateczne działanie ukończonej kompilacji. Jeśli nie masz pewności co do tej funkcji, zalecamy nie włączać wersji testowych.", 15 "feature.nightlyBuilds.info": "Kompilacje testowe to wysoce eksperymentalne wersje Ferdi, które mogą zawierać niedopracowane lub nieukończone funkcje. Te kompilacje są przewidziane głównie dla programistów testujących nowe funkcje będące w opracowaniu oraz ostateczne działanie ukończonej kompilacji. Jeśli nie masz pewności co do tej funkcji, zalecamy nie włączać wersji testowych.",
@@ -27,26 +27,26 @@
27 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online", 27 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online",
28 "global.cancel": "Anuluj", 28 "global.cancel": "Anuluj",
29 "global.edit": "Edytuj", 29 "global.edit": "Edytuj",
30 "global.no": "No", 30 "global.no": "Nie",
31 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.", 31 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.",
32 "global.ok": "Ok", 32 "global.ok": "Ok",
33 "global.quit": "Quit", 33 "global.quit": "Wyjdź",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?", 34 "global.quitConfirmation": "Czy napewno chcesz wyjść z Ferdi?",
35 "global.save": "Save", 35 "global.save": "Zapisz",
36 "global.settings": "Ustawienia", 36 "global.settings": "Ustawienia",
37 "global.spellchecker.useDefault": "Użyj domyślnego dla systemu ({default})", 37 "global.spellchecker.useDefault": "Użyj domyślnego dla systemu ({default})",
38 "global.spellchecking.autodetect": "Automatycznie wykryj język", 38 "global.spellchecking.autodetect": "Automatycznie wykryj język",
39 "global.spellchecking.autodetect.short": "Automatycznie", 39 "global.spellchecking.autodetect.short": "Automatycznie",
40 "global.spellchecking.language": "Język sprawdzania pisowni", 40 "global.spellchecking.language": "Język sprawdzania pisowni",
41 "global.submit": "Wyślij", 41 "global.submit": "Prześlij",
42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Użyj 'https://whatmyuseragent.com/' (aby odkryć) lub 'https://developers.whatismybrowser.com/useragents/explore/' (aby wybrać) swój user-agent i skopiuj go tutaj.",
43 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User-Agent",
44 "global.yes": "Yes", 44 "global.yes": "Tak",
45 "import.headline": "Importuj usługi Ferdi 4", 45 "import.headline": "Importuj usługi Ferdi 4",
46 "import.notSupportedHeadline": "Usługi, które nie są jeszcze obsługiwane w Ferdi 5", 46 "import.notSupportedHeadline": "Usługi, które nie są jeszcze obsługiwane w Ferdi 5",
47 "import.skip.label": "Chcę dodać usługi samodzielnie", 47 "import.skip.label": "Chcę dodać usługi samodzielnie",
48 "import.submit.label": "Zaimportuj usługi", 48 "import.submit.label": "Zaimportuj usługi",
49 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 49 "infobar.authRequestFailed": "Pojawiły się błędy podczas próby uwierzytelniania. Proszę spróbuj się wylogować i zalogować ponownie, jeśli ten błąd będzie się powtarzał.",
50 "infobar.buttonChangelog": "Co nowego?", 50 "infobar.buttonChangelog": "Co nowego?",
51 "infobar.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacjÄ™", 51 "infobar.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacjÄ™",
52 "infobar.buttonReloadServices": "Odśwież usługi", 52 "infobar.buttonReloadServices": "Odśwież usługi",
@@ -87,30 +87,30 @@
87 "menu.app.autohideMenuBar": "Automatycznie ukrywaj pasek menu", 87 "menu.app.autohideMenuBar": "Automatycznie ukrywaj pasek menu",
88 "menu.app.checkForUpdates": "Sprawdź aktualizacje", 88 "menu.app.checkForUpdates": "Sprawdź aktualizacje",
89 "menu.app.hide": "Ukryj", 89 "menu.app.hide": "Ukryj",
90 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Ukryj pozostałe",
91 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Pokaż",
92 "menu.edit": "Edytuj", 92 "menu.edit": "Edytuj",
93 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Kopiuj",
94 "menu.edit.cut": "Cut", 94 "menu.edit.cut": "Wytnij",
95 "menu.edit.delete": "Usuń", 95 "menu.edit.delete": "Usuń",
96 "menu.edit.emojiSymbols": "Emoji i symbole", 96 "menu.edit.emojiSymbols": "Emoji i symbole",
97 "menu.edit.findInPage": "Znajdź na stronie", 97 "menu.edit.findInPage": "Znajdź na stronie",
98 "menu.edit.paste": "Paste", 98 "menu.edit.paste": "Wklej",
99 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 99 "menu.edit.pasteAndMatchStyle": "Wklej i Dopasuj Styl",
100 "menu.edit.redo": "Redo", 100 "menu.edit.redo": "Ponów",
101 "menu.edit.selectAll": "Select All", 101 "menu.edit.selectAll": "Zaznacz wszystko",
102 "menu.edit.speech": "Mowa", 102 "menu.edit.speech": "Mowa",
103 "menu.edit.startDictation": "Zacznij dyktować", 103 "menu.edit.startDictation": "Zacznij dyktować",
104 "menu.edit.startSpeaking": "Zacznij mówić", 104 "menu.edit.startSpeaking": "Zacznij mówić",
105 "menu.edit.stopSpeaking": "Przestań mówić", 105 "menu.edit.stopSpeaking": "Przestań mówić",
106 "menu.edit.undo": "Undo", 106 "menu.edit.undo": "Cofnij",
107 "menu.file": "Plik", 107 "menu.file": "Plik",
108 "menu.help": "Help", 108 "menu.help": "Pomoc",
109 "menu.help.changelog": "Lista zmian", 109 "menu.help.changelog": "Lista zmian",
110 "menu.help.debugInfo": "Kopiuj dane diagnostyczne", 110 "menu.help.debugInfo": "Kopiuj dane diagnostyczne",
111 "menu.help.debugInfoCopiedBody": "Dane diagnostyczne zostały skopiowane do schowka.", 111 "menu.help.debugInfoCopiedBody": "Dane diagnostyczne zostały skopiowane do schowka.",
112 "menu.help.debugInfoCopiedHeadline": "Dane diagnostyczne", 112 "menu.help.debugInfoCopiedHeadline": "Dane diagnostyczne",
113 "menu.help.importExportData": "Import/Export Configuration Data", 113 "menu.help.importExportData": "Importuj/Eksportuj Dane Konfiguracyjne",
114 "menu.help.learnMore": "Dowiedz się więcej", 114 "menu.help.learnMore": "Dowiedz się więcej",
115 "menu.help.privacy": "Polityka prywatności", 115 "menu.help.privacy": "Polityka prywatności",
116 "menu.help.publishDebugInfo": "Opublikuj dane diagnostyczne", 116 "menu.help.publishDebugInfo": "Opublikuj dane diagnostyczne",
@@ -128,20 +128,20 @@
128 "menu.view.forward": "Prześlij dalej", 128 "menu.view.forward": "Prześlij dalej",
129 "menu.view.lockFerdi": "Zablokuj Ferdi", 129 "menu.view.lockFerdi": "Zablokuj Ferdi",
130 "menu.view.openQuickSwitch": "Otwórz Quick Switch", 130 "menu.view.openQuickSwitch": "Otwórz Quick Switch",
131 "menu.view.reloadFerdi": "Reload Ferdi", 131 "menu.view.reloadFerdi": "Przeładuj Ferdi",
132 "menu.view.reloadService": "Przeładuj usługę", 132 "menu.view.reloadService": "Przeładuj usługę",
133 "menu.view.reloadTodos": "Odśwież Zadania", 133 "menu.view.reloadTodos": "Odśwież Zadania",
134 "menu.view.resetZoom": "Actual Size", 134 "menu.view.resetZoom": "Rozmiar rzeczywisty",
135 "menu.view.toggleDarkMode": "Tryb ciemny", 135 "menu.view.toggleDarkMode": "Tryb ciemny",
136 "menu.view.toggleDevTools": "Pokaż narzędzia developerskie", 136 "menu.view.toggleDevTools": "Pokaż narzędzia developerskie",
137 "menu.view.toggleFullScreen": "Toggle Full Screen", 137 "menu.view.toggleFullScreen": "Przełącz Tryb Pełnoekranowy",
138 "menu.view.toggleServiceDevTools": "Włącz narzędzia developerskie usługi", 138 "menu.view.toggleServiceDevTools": "Włącz narzędzia developerskie usługi",
139 "menu.view.toggleTodosDevTools": "Przełącz narzędzia deweloperskie Listy zadań", 139 "menu.view.toggleTodosDevTools": "Przełącz narzędzia deweloperskie Listy zadań",
140 "menu.view.zoomIn": "Zoom In", 140 "menu.view.zoomIn": "Powiększ",
141 "menu.view.zoomOut": "Zoom Out", 141 "menu.view.zoomOut": "Pomniejsz",
142 "menu.window": "Window", 142 "menu.window": "Okno",
143 "menu.window.close": "Close", 143 "menu.window.close": "Zamknij",
144 "menu.window.minimize": "Minimize", 144 "menu.window.minimize": "Minimalizuj",
145 "menu.workspaces": "Obszary robocze", 145 "menu.workspaces": "Obszary robocze",
146 "menu.workspaces.addNewWorkspace": "Dodaj nowy obszar roboczy...", 146 "menu.workspaces.addNewWorkspace": "Dodaj nowy obszar roboczy...",
147 "menu.workspaces.closeWorkspaceDrawer": "Zamknij edytor obszaru roboczego", 147 "menu.workspaces.closeWorkspaceDrawer": "Zamknij edytor obszaru roboczego",
@@ -156,9 +156,9 @@
156 "pricing.features.accountSync": "Synchronizacja konta", 156 "pricing.features.accountSync": "Synchronizacja konta",
157 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych", 157 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych",
158 "pricing.features.desktopNotifications": "Powiadomienia na pulpicie", 158 "pricing.features.desktopNotifications": "Powiadomienia na pulpicie",
159 "pricing.features.onPremise": "On-premise & other Hosted Services", 159 "pricing.features.onPremise": "Lokalne i inne hostowane usługi",
160 "pricing.features.recipes": "Wybierz spośród ponad 70 usług", 160 "pricing.features.recipes": "Wybierz spośród ponad 70 usług",
161 "pricing.features.serviceProxies": "Service Proxies", 161 "pricing.features.serviceProxies": "Proxy usługi",
162 "pricing.features.spellchecker": "Obsługa sprawdzania pisowni", 162 "pricing.features.spellchecker": "Obsługa sprawdzania pisowni",
163 "pricing.features.teamManagement": "Zarządzanie zespołem", 163 "pricing.features.teamManagement": "Zarządzanie zespołem",
164 "pricing.features.thirdPartyServices": "Instalacja zewnętrznych usług", 164 "pricing.features.thirdPartyServices": "Instalacja zewnętrznych usług",
@@ -202,7 +202,7 @@
202 "settings.app.accentColorInfo": "Zdefiniuj kolor akcentu w formacie zgodnym z CSS. (Domyślnie: {defaultAccentColor})", 202 "settings.app.accentColorInfo": "Zdefiniuj kolor akcentu w formacie zgodnym z CSS. (Domyślnie: {defaultAccentColor})",
203 "settings.app.buttonClearAllCache": "Wyczyść pamięć podręczną (cache)", 203 "settings.app.buttonClearAllCache": "Wyczyść pamięć podręczną (cache)",
204 "settings.app.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacjÄ™", 204 "settings.app.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacjÄ™",
205 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder", 205 "settings.app.buttonOpenFerdiProfileFolder": "Pokaż folder z profilami",
206 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 206 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
207 "settings.app.buttonSearchForUpdate": "Sprawdź aktualizacje", 207 "settings.app.buttonSearchForUpdate": "Sprawdź aktualizacje",
208 "settings.app.cacheInfo": "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", 208 "settings.app.cacheInfo": "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej",
@@ -218,7 +218,7 @@
218 "settings.app.form.beta": "Uwzględnij wersje beta", 218 "settings.app.form.beta": "Uwzględnij wersje beta",
219 "settings.app.form.clipboardNotifications": "Nie wyświetlaj powiadomień dla schowka", 219 "settings.app.form.clipboardNotifications": "Nie wyświetlaj powiadomień dla schowka",
220 "settings.app.form.closeToSystemTray": "Zminimalizuj Ferdi do paska zadań", 220 "settings.app.form.closeToSystemTray": "Zminimalizuj Ferdi do paska zadań",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi", 221 "settings.app.form.confirmOnQuit": "Potwierdź podczas opuszczania Ferdi",
222 "settings.app.form.customTodoServer": "Własny serwer listy zadań", 222 "settings.app.form.customTodoServer": "Własny serwer listy zadań",
223 "settings.app.form.darkMode": "WÅ‚Ä…cz tryb ciemny", 223 "settings.app.form.darkMode": "WÅ‚Ä…cz tryb ciemny",
224 "settings.app.form.enableGPUAcceleration": "WÅ‚Ä…cz akceleracjÄ™ GPU", 224 "settings.app.form.enableGPUAcceleration": "WÅ‚Ä…cz akceleracjÄ™ GPU",
@@ -228,7 +228,7 @@
228 "settings.app.form.enableSystemTray": "Pokaż Ferdia w obszarze powiadomień", 228 "settings.app.form.enableSystemTray": "Pokaż Ferdia w obszarze powiadomień",
229 "settings.app.form.enableTodos": "WÅ‚Ä…cz Zadania Ferdi", 229 "settings.app.form.enableTodos": "WÅ‚Ä…cz Zadania Ferdi",
230 "settings.app.form.hibernateOnStartup": "Hibernacja usług po starcie systemu", 230 "settings.app.form.hibernateOnStartup": "Hibernacja usług po starcie systemu",
231 "settings.app.form.hibernationStrategy": "Hibernation strategy", 231 "settings.app.form.hibernationStrategy": "Strategia hibernacji",
232 "settings.app.form.iconSize": "Rozmiar ikony usługi", 232 "settings.app.form.iconSize": "Rozmiar ikony usługi",
233 "settings.app.form.inactivityLock": "Zablokuj przy braku aktywności", 233 "settings.app.form.inactivityLock": "Zablokuj przy braku aktywności",
234 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 234 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
@@ -237,8 +237,8 @@
237 "settings.app.form.minimizeToSystemTray": "Zminimalizuj aplikacjÄ™ Ferdi", 237 "settings.app.form.minimizeToSystemTray": "Zminimalizuj aplikacjÄ™ Ferdi",
238 "settings.app.form.navigationBarBehaviour": "Zachowanie paska nawigacji", 238 "settings.app.form.navigationBarBehaviour": "Zachowanie paska nawigacji",
239 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message", 239 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
240 "settings.app.form.passwordToggle": "Password toggle", 240 "settings.app.form.passwordToggle": "Przełącznik hasła",
241 "settings.app.form.predefinedTodoServer": "Todo Server", 241 "settings.app.form.predefinedTodoServer": "Serwer Todo",
242 "settings.app.form.privateNotifications": "Nie pokazuj treści wiadomości w powiadomieniach", 242 "settings.app.form.privateNotifications": "Nie pokazuj treści wiadomości w powiadomieniach",
243 "settings.app.form.reloadAfterResume": "Odśwież Ferdi po wznowieniu systemu", 243 "settings.app.form.reloadAfterResume": "Odśwież Ferdi po wznowieniu systemu",
244 "settings.app.form.runInBackground": "Zachowaj aplikację Ferdi w tle po zamknięciu okna", 244 "settings.app.form.runInBackground": "Zachowaj aplikację Ferdi w tle po zamknięciu okna",
@@ -254,8 +254,8 @@
254 "settings.app.form.startMinimized": "Uruchom zminimalizowany", 254 "settings.app.form.startMinimized": "Uruchom zminimalizowany",
255 "settings.app.form.universalDarkMode": "WÅ‚Ä…cz uniwersalny tryb ciemny", 255 "settings.app.form.universalDarkMode": "WÅ‚Ä…cz uniwersalny tryb ciemny",
256 "settings.app.form.useTouchIdToUnlock": "Zezwól na odblokowanie Ferdi przez Touch ID", 256 "settings.app.form.useTouchIdToUnlock": "Zezwól na odblokowanie Ferdi przez Touch ID",
257 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Użyj stylu poziomego",
258 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Strategia wybudzania",
259 "settings.app.headlineAdvanced": "Zaawansowane", 259 "settings.app.headlineAdvanced": "Zaawansowane",
260 "settings.app.headlineAppearance": "WyglÄ…d", 260 "settings.app.headlineAppearance": "WyglÄ…d",
261 "settings.app.headlineGeneral": "Ogólne", 261 "settings.app.headlineGeneral": "Ogólne",
@@ -274,7 +274,7 @@
274 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 274 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
275 "settings.app.spellCheckerLanguageInfo": "Ferdi używa sprawdzania pisowni wbudowanego w Twojego Maca do sprawdzania pomyłek. Aby zmienić języki ze sprawdzaniem pisowni, przejdź do Preferencji systemowych swojego Maca.", 275 "settings.app.spellCheckerLanguageInfo": "Ferdi używa sprawdzania pisowni wbudowanego w Twojego Maca do sprawdzania pomyłek. Aby zmienić języki ze sprawdzaniem pisowni, przejdź do Preferencji systemowych swojego Maca.",
276 "settings.app.subheadlineCache": "Pamięć podręczna", 276 "settings.app.subheadlineCache": "Pamięć podręczna",
277 "settings.app.subheadlineFerdiProfile": "Ferdi Profile", 277 "settings.app.subheadlineFerdiProfile": "Profil Ferdi",
278 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 278 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.",
279 "settings.app.translationHelp": "Pomóż nam tłumaczyć Ferdi na Twój język.", 279 "settings.app.translationHelp": "Pomóż nam tłumaczyć Ferdi na Twój język.",
280 "settings.app.universalDarkModeInfo": "Uniwersalny tryb ciemny próbuje dynamicznie generować tryb ciemny dla usług, które jeszcze go nie wspierają.", 280 "settings.app.universalDarkModeInfo": "Uniwersalny tryb ciemny próbuje dynamicznie generować tryb ciemny dla usług, które jeszcze go nie wspierają.",
@@ -362,18 +362,18 @@
362 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 362 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
363 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?", 363 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
364 "settings.supportFerdi.headline": "O Ferdi", 364 "settings.supportFerdi.headline": "O Ferdi",
365 "settings.supportFerdi.openSurvey": "Open survey", 365 "settings.supportFerdi.openSurvey": "Otwarta ankieta",
366 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 366 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
367 "settings.supportFerdi.textDonationAnd": "and", 367 "settings.supportFerdi.textDonationAnd": "i",
368 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 368 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
369 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors", 369 "settings.supportFerdi.textGitHubSponsors": "Sponsor na Guthub",
370 "settings.supportFerdi.textListContributors": "Pełna lista współtwórców", 370 "settings.supportFerdi.textListContributors": "Pełna lista współtwórców",
371 "settings.supportFerdi.textListContributorsHere": "tutaj", 371 "settings.supportFerdi.textListContributorsHere": "tutaj",
372 "settings.supportFerdi.textOpenCollective": "Open Collective", 372 "settings.supportFerdi.textOpenCollective": "Open Collective",
373 "settings.supportFerdi.textSupportWelcome": "Doceniamy każde wsparcie. Listę rzeczy, z którymi potrzebujemy pomocy znajdziesz", 373 "settings.supportFerdi.textSupportWelcome": "Doceniamy każde wsparcie. Listę rzeczy, z którymi potrzebujemy pomocy znajdziesz",
374 "settings.supportFerdi.textSupportWelcomeHere": "tutaj", 374 "settings.supportFerdi.textSupportWelcomeHere": "tutaj",
375 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 375 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
376 "settings.supportFerdi.title": "Do you like Ferdi?", 376 "settings.supportFerdi.title": "Lubisz Ferdi?",
377 "settings.team.contentHeadline": "Franz Team Management", 377 "settings.team.contentHeadline": "Franz Team Management",
378 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 378 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
379 "settings.team.headline": "Zespół", 379 "settings.team.headline": "Zespół",
@@ -439,9 +439,9 @@
439 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
440 "tabs.item.enableNotification": "Aktywuj powiadomienia", 440 "tabs.item.enableNotification": "Aktywuj powiadomienia",
441 "tabs.item.enableService": "Aktywuj usługę", 441 "tabs.item.enableService": "Aktywuj usługę",
442 "tabs.item.hibernateService": "Hibernate service", 442 "tabs.item.hibernateService": "Hibernuj usługę",
443 "tabs.item.reload": "Odśwież", 443 "tabs.item.reload": "Odśwież",
444 "tabs.item.wakeUpService": "Wake up service", 444 "tabs.item.wakeUpService": "Wybudź usługę",
445 "validation.email": "Pole {field} nie jest poprawne", 445 "validation.email": "Pole {field} nie jest poprawne",
446 "validation.minLength": "Pole {field} powinno składać się z co najmniej {length} znaków", 446 "validation.minLength": "Pole {field} powinno składać się z co najmniej {length} znaków",
447 "validation.oneRequired": "Przynajmniej jeden jest wymagany", 447 "validation.oneRequired": "Przynajmniej jeden jest wymagany",
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index 947ce8b6a..35f2e3b7b 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Edit", 4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js", 5 "file": "src/lib/Menu.js",
6 "start": { 6 "start": {
7 "line": 33, 7 "line": 32,
8 "column": 8 8 "column": 8
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 36, 11 "line": 35,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Undo", 17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js", 18 "file": "src/lib/Menu.js",
19 "start": { 19 "start": {
20 "line": 37, 20 "line": 36,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 40, 24 "line": 39,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Redo", 30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js", 31 "file": "src/lib/Menu.js",
32 "start": { 32 "start": {
33 "line": 41, 33 "line": 40,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 44, 37 "line": 43,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Cut", 43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js", 44 "file": "src/lib/Menu.js",
45 "start": { 45 "start": {
46 "line": 45, 46 "line": 44,
47 "column": 7 47 "column": 7
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 48, 50 "line": 47,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Copy", 56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js", 57 "file": "src/lib/Menu.js",
58 "start": { 58 "start": {
59 "line": 49, 59 "line": 48,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 52, 63 "line": 51,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Paste", 69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js", 70 "file": "src/lib/Menu.js",
71 "start": { 71 "start": {
72 "line": 53, 72 "line": 52,
73 "column": 9 73 "column": 9
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 56, 76 "line": 55,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Paste And Match Style", 82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js", 83 "file": "src/lib/Menu.js",
84 "start": { 84 "start": {
85 "line": 57, 85 "line": 56,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 60, 89 "line": 59,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Delete", 95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js", 96 "file": "src/lib/Menu.js",
97 "start": { 97 "start": {
98 "line": 61, 98 "line": 60,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 64, 102 "line": 63,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Select All", 108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js", 109 "file": "src/lib/Menu.js",
110 "start": { 110 "start": {
111 "line": 65, 111 "line": 64,
112 "column": 13 112 "column": 13
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 68, 115 "line": 67,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Find in Page", 121 "defaultMessage": "!!!Find in Page",
122 "file": "src/lib/Menu.js", 122 "file": "src/lib/Menu.js",
123 "start": { 123 "start": {
124 "line": 69, 124 "line": 68,
125 "column": 14 125 "column": 14
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 72, 128 "line": 71,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Speech", 134 "defaultMessage": "!!!Speech",
135 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
136 "start": { 136 "start": {
137 "line": 73, 137 "line": 72,
138 "column": 10 138 "column": 10
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 76, 141 "line": 75,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Start Speaking", 147 "defaultMessage": "!!!Start Speaking",
148 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
149 "start": { 149 "start": {
150 "line": 77, 150 "line": 76,
151 "column": 17 151 "column": 17
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 80, 154 "line": 79,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Stop Speaking", 160 "defaultMessage": "!!!Stop Speaking",
161 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
162 "start": { 162 "start": {
163 "line": 81, 163 "line": 80,
164 "column": 16 164 "column": 16
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 84, 167 "line": 83,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Start Dictation", 173 "defaultMessage": "!!!Start Dictation",
174 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
175 "start": { 175 "start": {
176 "line": 85, 176 "line": 84,
177 "column": 18 177 "column": 18
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 88, 180 "line": 87,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Emoji & Symbols", 186 "defaultMessage": "!!!Emoji & Symbols",
187 "file": "src/lib/Menu.js", 187 "file": "src/lib/Menu.js",
188 "start": { 188 "start": {
189 "line": 89, 189 "line": 88,
190 "column": 16 190 "column": 16
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 92, 193 "line": 91,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Open Quick Switch", 199 "defaultMessage": "!!!Open Quick Switch",
200 "file": "src/lib/Menu.js", 200 "file": "src/lib/Menu.js",
201 "start": { 201 "start": {
202 "line": 93, 202 "line": 92,
203 "column": 19 203 "column": 19
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 96, 206 "line": 95,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Back", 212 "defaultMessage": "!!!Back",
213 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
214 "start": { 214 "start": {
215 "line": 97, 215 "line": 96,
216 "column": 8 216 "column": 8
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 100, 219 "line": 99,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Forward", 225 "defaultMessage": "!!!Forward",
226 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
227 "start": { 227 "start": {
228 "line": 101, 228 "line": 100,
229 "column": 11 229 "column": 11
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 104, 232 "line": 103,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Actual Size", 238 "defaultMessage": "!!!Actual Size",
239 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
240 "start": { 240 "start": {
241 "line": 105, 241 "line": 104,
242 "column": 13 242 "column": 13
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 108, 245 "line": 107,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Zoom In", 251 "defaultMessage": "!!!Zoom In",
252 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
253 "start": { 253 "start": {
254 "line": 109, 254 "line": 108,
255 "column": 10 255 "column": 10
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 112, 258 "line": 111,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Zoom Out", 264 "defaultMessage": "!!!Zoom Out",
265 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
266 "start": { 266 "start": {
267 "line": 113, 267 "line": 112,
268 "column": 11 268 "column": 11
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 116, 271 "line": 115,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Toggle Full Screen", 277 "defaultMessage": "!!!Toggle Full Screen",
278 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
279 "start": { 279 "start": {
280 "line": 117, 280 "line": 116,
281 "column": 20 281 "column": 20
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 120, 284 "line": 119,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Toggle Dark Mode", 290 "defaultMessage": "!!!Toggle Dark Mode",
291 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
292 "start": { 292 "start": {
293 "line": 121, 293 "line": 120,
294 "column": 18 294 "column": 18
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 124, 297 "line": 123,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Toggle Developer Tools", 303 "defaultMessage": "!!!Toggle Developer Tools",
304 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
305 "start": { 305 "start": {
306 "line": 125, 306 "line": 124,
307 "column": 18 307 "column": 18
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 128, 310 "line": 127,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Toggle Todos Developer Tools", 316 "defaultMessage": "!!!Toggle Todos Developer Tools",
317 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
318 "start": { 318 "start": {
319 "line": 129, 319 "line": 128,
320 "column": 23 320 "column": 23
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 132, 323 "line": 131,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!Toggle Service Developer Tools", 329 "defaultMessage": "!!!Toggle Service Developer Tools",
330 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
331 "start": { 331 "start": {
332 "line": 133, 332 "line": 132,
333 "column": 25 333 "column": 25
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 136, 336 "line": 135,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!Reload Service", 342 "defaultMessage": "!!!Reload Service",
343 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
344 "start": { 344 "start": {
345 "line": 137, 345 "line": 136,
346 "column": 17 346 "column": 17
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 140, 349 "line": 139,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Reload Ferdi", 355 "defaultMessage": "!!!Reload Ferdi",
356 "file": "src/lib/Menu.js", 356 "file": "src/lib/Menu.js",
357 "start": { 357 "start": {
358 "line": 141, 358 "line": 140,
359 "column": 15 359 "column": 15
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 144, 362 "line": 143,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!Lock Ferdi", 368 "defaultMessage": "!!!Lock Ferdi",
369 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
370 "start": { 370 "start": {
371 "line": 145, 371 "line": 144,
372 "column": 13 372 "column": 13
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 148, 375 "line": 147,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Reload ToDos", 381 "defaultMessage": "!!!Reload ToDos",
382 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
383 "start": { 383 "start": {
384 "line": 149, 384 "line": 148,
385 "column": 15 385 "column": 15
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 152, 388 "line": 151,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Minimize", 394 "defaultMessage": "!!!Minimize",
395 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
396 "start": { 396 "start": {
397 "line": 153, 397 "line": 152,
398 "column": 12 398 "column": 12
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 156, 401 "line": 155,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Close", 407 "defaultMessage": "!!!Close",
408 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
409 "start": { 409 "start": {
410 "line": 157, 410 "line": 156,
411 "column": 9 411 "column": 9
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 160, 414 "line": 159,
415 "column": 3 415 "column": 3
416 } 416 }
417 }, 417 },
@@ -420,11 +420,11 @@
420 "defaultMessage": "!!!Learn More", 420 "defaultMessage": "!!!Learn More",
421 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
422 "start": { 422 "start": {
423 "line": 161, 423 "line": 160,
424 "column": 13 424 "column": 13
425 }, 425 },
426 "end": { 426 "end": {
427 "line": 164, 427 "line": 163,
428 "column": 3 428 "column": 3
429 } 429 }
430 }, 430 },
@@ -433,11 +433,11 @@
433 "defaultMessage": "!!!Changelog", 433 "defaultMessage": "!!!Changelog",
434 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
435 "start": { 435 "start": {
436 "line": 165, 436 "line": 164,
437 "column": 13 437 "column": 13
438 }, 438 },
439 "end": { 439 "end": {
440 "line": 168, 440 "line": 167,
441 "column": 3 441 "column": 3
442 } 442 }
443 }, 443 },
@@ -446,11 +446,11 @@
446 "defaultMessage": "!!!Import/Export Configuration Data", 446 "defaultMessage": "!!!Import/Export Configuration Data",
447 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
448 "start": { 448 "start": {
449 "line": 169, 449 "line": 168,
450 "column": 20 450 "column": 20
451 }, 451 },
452 "end": { 452 "end": {
453 "line": 172, 453 "line": 171,
454 "column": 3 454 "column": 3
455 } 455 }
456 }, 456 },
@@ -459,11 +459,11 @@
459 "defaultMessage": "!!!Support", 459 "defaultMessage": "!!!Support",
460 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
461 "start": { 461 "start": {
462 "line": 173, 462 "line": 172,
463 "column": 11 463 "column": 11
464 }, 464 },
465 "end": { 465 "end": {
466 "line": 176, 466 "line": 175,
467 "column": 3 467 "column": 3
468 } 468 }
469 }, 469 },
@@ -472,11 +472,11 @@
472 "defaultMessage": "!!!Copy Debug Information", 472 "defaultMessage": "!!!Copy Debug Information",
473 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
474 "start": { 474 "start": {
475 "line": 177, 475 "line": 176,
476 "column": 13 476 "column": 13
477 }, 477 },
478 "end": { 478 "end": {
479 "line": 180, 479 "line": 179,
480 "column": 3 480 "column": 3
481 } 481 }
482 }, 482 },
@@ -485,11 +485,11 @@
485 "defaultMessage": "!!!Publish Debug Information", 485 "defaultMessage": "!!!Publish Debug Information",
486 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
487 "start": { 487 "start": {
488 "line": 181, 488 "line": 180,
489 "column": 20 489 "column": 20
490 }, 490 },
491 "end": { 491 "end": {
492 "line": 184, 492 "line": 183,
493 "column": 3 493 "column": 3
494 } 494 }
495 }, 495 },
@@ -498,11 +498,11 @@
498 "defaultMessage": "!!!Ferdi Debug Information", 498 "defaultMessage": "!!!Ferdi Debug Information",
499 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
500 "start": { 500 "start": {
501 "line": 185, 501 "line": 184,
502 "column": 27 502 "column": 27
503 }, 503 },
504 "end": { 504 "end": {
505 "line": 188, 505 "line": 187,
506 "column": 3 506 "column": 3
507 } 507 }
508 }, 508 },
@@ -511,11 +511,11 @@
511 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 511 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
512 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
513 "start": { 513 "start": {
514 "line": 189, 514 "line": 188,
515 "column": 23 515 "column": 23
516 }, 516 },
517 "end": { 517 "end": {
518 "line": 193, 518 "line": 192,
519 "column": 3 519 "column": 3
520 } 520 }
521 }, 521 },
@@ -524,11 +524,11 @@
524 "defaultMessage": "!!!Unlock with Touch ID", 524 "defaultMessage": "!!!Unlock with Touch ID",
525 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
526 "start": { 526 "start": {
527 "line": 194, 527 "line": 193,
528 "column": 11 528 "column": 11
529 }, 529 },
530 "end": { 530 "end": {
531 "line": 197, 531 "line": 196,
532 "column": 3 532 "column": 3
533 } 533 }
534 }, 534 },
@@ -537,11 +537,11 @@
537 "defaultMessage": "!!!unlock via Touch ID", 537 "defaultMessage": "!!!unlock via Touch ID",
538 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
539 "start": { 539 "start": {
540 "line": 198, 540 "line": 197,
541 "column": 17 541 "column": 17
542 }, 542 },
543 "end": { 543 "end": {
544 "line": 201, 544 "line": 200,
545 "column": 3 545 "column": 3
546 } 546 }
547 }, 547 },
@@ -550,11 +550,11 @@
550 "defaultMessage": "!!!Terms of Service", 550 "defaultMessage": "!!!Terms of Service",
551 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
552 "start": { 552 "start": {
553 "line": 202, 553 "line": 201,
554 "column": 7 554 "column": 7
555 }, 555 },
556 "end": { 556 "end": {
557 "line": 205, 557 "line": 204,
558 "column": 3 558 "column": 3
559 } 559 }
560 }, 560 },
@@ -563,11 +563,11 @@
563 "defaultMessage": "!!!Privacy Statement", 563 "defaultMessage": "!!!Privacy Statement",
564 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
565 "start": { 565 "start": {
566 "line": 206, 566 "line": 205,
567 "column": 11 567 "column": 11
568 }, 568 },
569 "end": { 569 "end": {
570 "line": 209, 570 "line": 208,
571 "column": 3 571 "column": 3
572 } 572 }
573 }, 573 },
@@ -576,11 +576,11 @@
576 "defaultMessage": "!!!File", 576 "defaultMessage": "!!!File",
577 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
578 "start": { 578 "start": {
579 "line": 210, 579 "line": 209,
580 "column": 8 580 "column": 8
581 }, 581 },
582 "end": { 582 "end": {
583 "line": 213, 583 "line": 212,
584 "column": 3 584 "column": 3
585 } 585 }
586 }, 586 },
@@ -589,11 +589,11 @@
589 "defaultMessage": "!!!View", 589 "defaultMessage": "!!!View",
590 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
591 "start": { 591 "start": {
592 "line": 214, 592 "line": 213,
593 "column": 8 593 "column": 8
594 }, 594 },
595 "end": { 595 "end": {
596 "line": 217, 596 "line": 216,
597 "column": 3 597 "column": 3
598 } 598 }
599 }, 599 },
@@ -602,11 +602,11 @@
602 "defaultMessage": "!!!Services", 602 "defaultMessage": "!!!Services",
603 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
604 "start": { 604 "start": {
605 "line": 218, 605 "line": 217,
606 "column": 12 606 "column": 12
607 }, 607 },
608 "end": { 608 "end": {
609 "line": 221, 609 "line": 220,
610 "column": 3 610 "column": 3
611 } 611 }
612 }, 612 },
@@ -615,11 +615,11 @@
615 "defaultMessage": "!!!Window", 615 "defaultMessage": "!!!Window",
616 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
617 "start": { 617 "start": {
618 "line": 222, 618 "line": 221,
619 "column": 10 619 "column": 10
620 }, 620 },
621 "end": { 621 "end": {
622 "line": 225, 622 "line": 224,
623 "column": 3 623 "column": 3
624 } 624 }
625 }, 625 },
@@ -628,11 +628,11 @@
628 "defaultMessage": "!!!Help", 628 "defaultMessage": "!!!Help",
629 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
630 "start": { 630 "start": {
631 "line": 226, 631 "line": 225,
632 "column": 8 632 "column": 8
633 }, 633 },
634 "end": { 634 "end": {
635 "line": 229, 635 "line": 228,
636 "column": 3 636 "column": 3
637 } 637 }
638 }, 638 },
@@ -641,11 +641,11 @@
641 "defaultMessage": "!!!About Ferdi", 641 "defaultMessage": "!!!About Ferdi",
642 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
643 "start": { 643 "start": {
644 "line": 230, 644 "line": 229,
645 "column": 9 645 "column": 9
646 }, 646 },
647 "end": { 647 "end": {
648 "line": 233, 648 "line": 232,
649 "column": 3 649 "column": 3
650 } 650 }
651 }, 651 },
@@ -654,11 +654,11 @@
654 "defaultMessage": "!!!Check for updates", 654 "defaultMessage": "!!!Check for updates",
655 "file": "src/lib/Menu.js", 655 "file": "src/lib/Menu.js",
656 "start": { 656 "start": {
657 "line": 234, 657 "line": 233,
658 "column": 19 658 "column": 19
659 }, 659 },
660 "end": { 660 "end": {
661 "line": 237, 661 "line": 236,
662 "column": 3 662 "column": 3
663 } 663 }
664 }, 664 },
@@ -667,11 +667,11 @@
667 "defaultMessage": "!!!Hide", 667 "defaultMessage": "!!!Hide",
668 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
669 "start": { 669 "start": {
670 "line": 238, 670 "line": 237,
671 "column": 8 671 "column": 8
672 }, 672 },
673 "end": { 673 "end": {
674 "line": 241, 674 "line": 240,
675 "column": 3 675 "column": 3
676 } 676 }
677 }, 677 },
@@ -680,11 +680,11 @@
680 "defaultMessage": "!!!Hide Others", 680 "defaultMessage": "!!!Hide Others",
681 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
682 "start": { 682 "start": {
683 "line": 242, 683 "line": 241,
684 "column": 14 684 "column": 14
685 }, 685 },
686 "end": { 686 "end": {
687 "line": 245, 687 "line": 244,
688 "column": 3 688 "column": 3
689 } 689 }
690 }, 690 },
@@ -693,11 +693,11 @@
693 "defaultMessage": "!!!Unhide", 693 "defaultMessage": "!!!Unhide",
694 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
695 "start": { 695 "start": {
696 "line": 246, 696 "line": 245,
697 "column": 10 697 "column": 10
698 }, 698 },
699 "end": { 699 "end": {
700 "line": 249, 700 "line": 248,
701 "column": 3 701 "column": 3
702 } 702 }
703 }, 703 },
@@ -706,11 +706,11 @@
706 "defaultMessage": "!!!Auto-hide menu bar", 706 "defaultMessage": "!!!Auto-hide menu bar",
707 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
708 "start": { 708 "start": {
709 "line": 250, 709 "line": 249,
710 "column": 19 710 "column": 19
711 }, 711 },
712 "end": { 712 "end": {
713 "line": 253, 713 "line": 252,
714 "column": 3 714 "column": 3
715 } 715 }
716 }, 716 },
@@ -719,11 +719,11 @@
719 "defaultMessage": "!!!Add New Service...", 719 "defaultMessage": "!!!Add New Service...",
720 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
721 "start": { 721 "start": {
722 "line": 254, 722 "line": 253,
723 "column": 17 723 "column": 17
724 }, 724 },
725 "end": { 725 "end": {
726 "line": 257, 726 "line": 256,
727 "column": 3 727 "column": 3
728 } 728 }
729 }, 729 },
@@ -732,11 +732,11 @@
732 "defaultMessage": "!!!Add New Workspace...", 732 "defaultMessage": "!!!Add New Workspace...",
733 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
734 "start": { 734 "start": {
735 "line": 258, 735 "line": 257,
736 "column": 19 736 "column": 19
737 }, 737 },
738 "end": { 738 "end": {
739 "line": 261, 739 "line": 260,
740 "column": 3 740 "column": 3
741 } 741 }
742 }, 742 },
@@ -745,11 +745,11 @@
745 "defaultMessage": "!!!Open workspace drawer", 745 "defaultMessage": "!!!Open workspace drawer",
746 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
747 "start": { 747 "start": {
748 "line": 262, 748 "line": 261,
749 "column": 23 749 "column": 23
750 }, 750 },
751 "end": { 751 "end": {
752 "line": 265, 752 "line": 264,
753 "column": 3 753 "column": 3
754 } 754 }
755 }, 755 },
@@ -758,11 +758,11 @@
758 "defaultMessage": "!!!Close workspace drawer", 758 "defaultMessage": "!!!Close workspace drawer",
759 "file": "src/lib/Menu.js", 759 "file": "src/lib/Menu.js",
760 "start": { 760 "start": {
761 "line": 266, 761 "line": 265,
762 "column": 24 762 "column": 24
763 }, 763 },
764 "end": { 764 "end": {
765 "line": 269, 765 "line": 268,
766 "column": 3 766 "column": 3
767 } 767 }
768 }, 768 },
@@ -771,11 +771,11 @@
771 "defaultMessage": "!!!Activate next service...", 771 "defaultMessage": "!!!Activate next service...",
772 "file": "src/lib/Menu.js", 772 "file": "src/lib/Menu.js",
773 "start": { 773 "start": {
774 "line": 270, 774 "line": 269,
775 "column": 23 775 "column": 23
776 }, 776 },
777 "end": { 777 "end": {
778 "line": 273, 778 "line": 272,
779 "column": 3 779 "column": 3
780 } 780 }
781 }, 781 },
@@ -784,11 +784,11 @@
784 "defaultMessage": "!!!Activate previous service...", 784 "defaultMessage": "!!!Activate previous service...",
785 "file": "src/lib/Menu.js", 785 "file": "src/lib/Menu.js",
786 "start": { 786 "start": {
787 "line": 274, 787 "line": 273,
788 "column": 27 788 "column": 27
789 }, 789 },
790 "end": { 790 "end": {
791 "line": 277, 791 "line": 276,
792 "column": 3 792 "column": 3
793 } 793 }
794 }, 794 },
@@ -797,11 +797,11 @@
797 "defaultMessage": "!!!Disable notifications & audio", 797 "defaultMessage": "!!!Disable notifications & audio",
798 "file": "src/lib/Menu.js", 798 "file": "src/lib/Menu.js",
799 "start": { 799 "start": {
800 "line": 278, 800 "line": 277,
801 "column": 11 801 "column": 11
802 }, 802 },
803 "end": { 803 "end": {
804 "line": 281, 804 "line": 280,
805 "column": 3 805 "column": 3
806 } 806 }
807 }, 807 },
@@ -810,11 +810,11 @@
810 "defaultMessage": "!!!Enable notifications & audio", 810 "defaultMessage": "!!!Enable notifications & audio",
811 "file": "src/lib/Menu.js", 811 "file": "src/lib/Menu.js",
812 "start": { 812 "start": {
813 "line": 282, 813 "line": 281,
814 "column": 13 814 "column": 13
815 }, 815 },
816 "end": { 816 "end": {
817 "line": 285, 817 "line": 284,
818 "column": 3 818 "column": 3
819 } 819 }
820 }, 820 },
@@ -823,11 +823,11 @@
823 "defaultMessage": "!!!Workspaces", 823 "defaultMessage": "!!!Workspaces",
824 "file": "src/lib/Menu.js", 824 "file": "src/lib/Menu.js",
825 "start": { 825 "start": {
826 "line": 286, 826 "line": 285,
827 "column": 14 827 "column": 14
828 }, 828 },
829 "end": { 829 "end": {
830 "line": 289, 830 "line": 288,
831 "column": 3 831 "column": 3
832 } 832 }
833 }, 833 },
@@ -836,11 +836,11 @@
836 "defaultMessage": "!!!Default", 836 "defaultMessage": "!!!Default",
837 "file": "src/lib/Menu.js", 837 "file": "src/lib/Menu.js",
838 "start": { 838 "start": {
839 "line": 290, 839 "line": 289,
840 "column": 20 840 "column": 20
841 }, 841 },
842 "end": { 842 "end": {
843 "line": 293, 843 "line": 292,
844 "column": 3 844 "column": 3
845 } 845 }
846 }, 846 },
@@ -849,11 +849,11 @@
849 "defaultMessage": "!!!Todos", 849 "defaultMessage": "!!!Todos",
850 "file": "src/lib/Menu.js", 850 "file": "src/lib/Menu.js",
851 "start": { 851 "start": {
852 "line": 294, 852 "line": 293,
853 "column": 9 853 "column": 9
854 }, 854 },
855 "end": { 855 "end": {
856 "line": 297, 856 "line": 296,
857 "column": 3 857 "column": 3
858 } 858 }
859 }, 859 },
@@ -862,11 +862,11 @@
862 "defaultMessage": "!!!Open Todos drawer", 862 "defaultMessage": "!!!Open Todos drawer",
863 "file": "src/lib/Menu.js", 863 "file": "src/lib/Menu.js",
864 "start": { 864 "start": {
865 "line": 298, 865 "line": 297,
866 "column": 19 866 "column": 19
867 }, 867 },
868 "end": { 868 "end": {
869 "line": 301, 869 "line": 300,
870 "column": 3 870 "column": 3
871 } 871 }
872 }, 872 },
@@ -875,11 +875,11 @@
875 "defaultMessage": "!!!Close Todos drawer", 875 "defaultMessage": "!!!Close Todos drawer",
876 "file": "src/lib/Menu.js", 876 "file": "src/lib/Menu.js",
877 "start": { 877 "start": {
878 "line": 302, 878 "line": 301,
879 "column": 20 879 "column": 20
880 }, 880 },
881 "end": { 881 "end": {
882 "line": 305, 882 "line": 304,
883 "column": 3 883 "column": 3
884 } 884 }
885 }, 885 },
@@ -888,11 +888,11 @@
888 "defaultMessage": "!!!Enable Todos", 888 "defaultMessage": "!!!Enable Todos",
889 "file": "src/lib/Menu.js", 889 "file": "src/lib/Menu.js",
890 "start": { 890 "start": {
891 "line": 306, 891 "line": 305,
892 "column": 15 892 "column": 15
893 }, 893 },
894 "end": { 894 "end": {
895 "line": 309, 895 "line": 308,
896 "column": 3 896 "column": 3
897 } 897 }
898 }, 898 },
@@ -901,11 +901,11 @@
901 "defaultMessage": "!!!Home", 901 "defaultMessage": "!!!Home",
902 "file": "src/lib/Menu.js", 902 "file": "src/lib/Menu.js",
903 "start": { 903 "start": {
904 "line": 310, 904 "line": 309,
905 "column": 17 905 "column": 17
906 }, 906 },
907 "end": { 907 "end": {
908 "line": 313, 908 "line": 312,
909 "column": 3 909 "column": 3
910 } 910 }
911 } 911 }
diff --git a/src/index.js b/src/index.js
index ae75865c6..1f3510361 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,6 +1,6 @@
1/* eslint-disable import/first */ 1/* eslint-disable import/first */
2 2
3import { app, BrowserWindow, ipcMain, session } from 'electron'; 3import { app, BrowserWindow, ipcMain, session, dialog } from 'electron';
4 4
5import { emptyDirSync, ensureFileSync } from 'fs-extra'; 5import { emptyDirSync, ensureFileSync } from 'fs-extra';
6import { join } from 'path'; 6import { join } from 'path';
@@ -10,6 +10,7 @@ import ms from 'ms';
10 10
11require('@electron/remote/main').initialize(); 11require('@electron/remote/main').initialize();
12 12
13import osName from 'os-name';
13import { DEFAULT_WINDOW_OPTIONS } from './config'; 14import { DEFAULT_WINDOW_OPTIONS } from './config';
14 15
15import { 16import {
@@ -18,10 +19,14 @@ import {
18 isMac, 19 isMac,
19 isWindows, 20 isWindows,
20 isLinux, 21 isLinux,
21 aboutAppDetails,
22 userDataRecipesPath, 22 userDataRecipesPath,
23 userDataPath, 23 userDataPath,
24 ferdiVersion,
25 electronVersion,
26 chromeVersion,
27 nodeVersion,
24} from './environment'; 28} from './environment';
29import { ifUndefinedBoolean } from './jsUtils';
25 30
26import { mainIpcHandler as basicAuthHandler } from './features/basicAuth'; 31import { mainIpcHandler as basicAuthHandler } from './features/basicAuth';
27import ipcApi from './electron/ipc-api'; 32import ipcApi from './electron/ipc-api';
@@ -36,6 +41,7 @@ import './electron/exception';
36import { asarPath } from './helpers/asar-helpers'; 41import { asarPath } from './helpers/asar-helpers';
37import { openExternalUrl } from './helpers/url-helpers'; 42import { openExternalUrl } from './helpers/url-helpers';
38import userAgent from './helpers/userAgent-helpers'; 43import userAgent from './helpers/userAgent-helpers';
44import * as buildInfo from './buildInfo.json'; // eslint-disable-line import/no-unresolved
39 45
40const debug = require('debug')('Ferdi:App'); 46const debug = require('debug')('Ferdi:App');
41 47
@@ -77,13 +83,14 @@ if (isWindows) {
77const settings = new Settings('app', DEFAULT_APP_SETTINGS); 83const settings = new Settings('app', DEFAULT_APP_SETTINGS);
78const proxySettings = new Settings('proxy'); 84const proxySettings = new Settings('proxy');
79 85
80if (settings.get('sentry')) { 86const retrieveSettingValue = (key, defaultValue = true) => ifUndefinedBoolean(settings.get(key), defaultValue);
87
88if (retrieveSettingValue('sentry')) {
81 // eslint-disable-next-line global-require 89 // eslint-disable-next-line global-require
82 require('./sentry'); 90 require('./sentry');
83} 91}
84 92
85// add `liftSingleInstanceLock` to settings.json to override the single instance lock 93const liftSingleInstanceLock = retrieveSettingValue('liftSingleInstanceLock', false);
86const liftSingleInstanceLock = settings.get('liftSingleInstanceLock') || false;
87 94
88// Force single window 95// Force single window
89const gotTheLock = liftSingleInstanceLock 96const gotTheLock = liftSingleInstanceLock
@@ -147,13 +154,23 @@ if (
147} 154}
148 155
149// Disable GPU acceleration 156// Disable GPU acceleration
150if (!settings.get('enableGPUAcceleration')) { 157if (!retrieveSettingValue('enableGPUAcceleration', false)) {
151 debug('Disable GPU Acceleration'); 158 debug('Disable GPU Acceleration');
152 app.disableHardwareAcceleration(); 159 app.disableHardwareAcceleration();
153} 160}
154 161
155app.setAboutPanelOptions({ 162app.setAboutPanelOptions({
156 applicationVersion: aboutAppDetails(), 163 applicationVersion: [
164 `Version: ${ferdiVersion}`,
165 `Electron: ${electronVersion}`,
166 `Chrome: ${chromeVersion}`,
167 `Node.js: ${nodeVersion}`,
168 `Platform: ${osName()}`,
169 `Arch: ${process.arch}`,
170 `Build date: ${new Date(Number(buildInfo.timestamp))}`,
171 `Git SHA: ${buildInfo.gitHashShort}`,
172 `Git branch: ${buildInfo.gitBranch}`,
173 ].join('\n'),
157 version: '', 174 version: '',
158}); 175});
159 176
@@ -176,7 +193,7 @@ const createWindow = () => {
176 } 193 }
177 194
178 // Create the browser window. 195 // Create the browser window.
179 const backgroundColor = settings.get('darkMode') 196 const backgroundColor = retrieveSettingValue('darkMode', false)
180 ? '#1E1E1E' 197 ? '#1E1E1E'
181 : settings.get('accentColor'); 198 : settings.get('accentColor');
182 199
@@ -190,7 +207,7 @@ const createWindow = () => {
190 show: false, 207 show: false,
191 titleBarStyle: isMac ? 'hidden' : '', 208 titleBarStyle: isMac ? 'hidden' : '',
192 frame: isLinux, 209 frame: isLinux,
193 spellcheck: settings.get('enableSpellchecking'), 210 spellcheck: retrieveSettingValue('enableSpellchecking'),
194 backgroundColor, 211 backgroundColor,
195 webPreferences: { 212 webPreferences: {
196 nodeIntegration: true, 213 nodeIntegration: true,
@@ -268,15 +285,14 @@ const createWindow = () => {
268 // when you should delete the corresponding element. 285 // when you should delete the corresponding element.
269 if ( 286 if (
270 !willQuitApp && 287 !willQuitApp &&
271 (settings.get('runInBackground') === undefined || 288 retrieveSettingValue('runInBackground')
272 settings.get('runInBackground'))
273 ) { 289 ) {
274 e.preventDefault(); 290 e.preventDefault();
275 if (isWindows) { 291 if (isWindows) {
276 debug('Window: minimize'); 292 debug('Window: minimize');
277 mainWindow.minimize(); 293 mainWindow.minimize();
278 294
279 if (settings.get('closeToSystemTray')) { 295 if (retrieveSettingValue('closeToSystemTray')) {
280 debug('Skip taskbar: true'); 296 debug('Skip taskbar: true');
281 mainWindow.setSkipTaskbar(true); 297 mainWindow.setSkipTaskbar(true);
282 } 298 }
@@ -300,7 +316,7 @@ const createWindow = () => {
300 mainWindow.on('minimize', () => { 316 mainWindow.on('minimize', () => {
301 app.wasMaximized = app.isMaximized; 317 app.wasMaximized = app.isMaximized;
302 318
303 if (settings.get('minimizeToSystemTray')) { 319 if (retrieveSettingValue('minimizeToSystemTray')) {
304 debug('Skip taskbar: true'); 320 debug('Skip taskbar: true');
305 mainWindow.setSkipTaskbar(true); 321 mainWindow.setSkipTaskbar(true);
306 trayIcon.show(); 322 trayIcon.show();
@@ -326,7 +342,7 @@ const createWindow = () => {
326 mainWindow.maximize(); 342 mainWindow.maximize();
327 } 343 }
328 344
329 if (!settings.get('enableSystemTray')) { 345 if (!retrieveSettingValue('enableSystemTray')) {
330 debug('Tray: hiding tray icon'); 346 debug('Tray: hiding tray icon');
331 trayIcon.hide(); 347 trayIcon.hide();
332 } 348 }
@@ -351,7 +367,7 @@ const createWindow = () => {
351 openExternalUrl(url); 367 openExternalUrl(url);
352 }); 368 });
353 369
354 if (settings.get('startMinimized')) { 370 if (retrieveSettingValue('startMinimized', false)) {
355 mainWindow.hide(); 371 mainWindow.hide();
356 } else { 372 } else {
357 mainWindow.show(); 373 mainWindow.show();
@@ -551,10 +567,7 @@ ipcMain.on('stop-find-in-page', (e, action) => {
551app.on('window-all-closed', () => { 567app.on('window-all-closed', () => {
552 // On OS X it is common for applications and their menu bar 568 // On OS X it is common for applications and their menu bar
553 // to stay active until the user quits explicitly with Cmd + Q 569 // to stay active until the user quits explicitly with Cmd + Q
554 if ( 570 if (retrieveSettingValue('runInBackground')) {
555 settings.get('runInBackground') === undefined ||
556 settings.get('runInBackground')
557 ) {
558 debug('Window: all windows closed, quit app'); 571 debug('Window: all windows closed, quit app');
559 app.quit(); 572 app.quit();
560 } else { 573 } else {
@@ -562,8 +575,25 @@ app.on('window-all-closed', () => {
562 } 575 }
563}); 576});
564 577
565app.on('before-quit', () => { 578app.on('before-quit', (event) => {
566 willQuitApp = true; 579 const yesButtonIndex = 0;
580 let selection = yesButtonIndex;
581 if (retrieveSettingValue('confirmOnQuit')) {
582 selection = dialog.showMessageBoxSync(app.mainWindow, {
583 type: 'question',
584 message: 'Quit',
585 detail: 'Do you really want to quit Ferdi?',
586 buttons: [
587 'Yes',
588 'No',
589 ],
590 });
591 }
592 if (selection === yesButtonIndex) {
593 willQuitApp = true;
594 } else {
595 event.preventDefault();
596 }
567}); 597});
568 598
569app.on('activate', () => { 599app.on('activate', () => {
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 2c24b696b..5dae56544 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -1,5 +1,5 @@
1import { clipboard } from 'electron'; 1import { clipboard } from 'electron';
2import { app, Menu, dialog, systemPreferences } from '@electron/remote'; 2import { app, Menu, systemPreferences } from '@electron/remote';
3import { autorun, observable } from 'mobx'; 3import { autorun, observable } from 'mobx';
4import { defineMessages } from 'react-intl'; 4import { defineMessages } from 'react-intl';
5import { 5import {
@@ -14,7 +14,6 @@ import {
14 settingsShortcutKey, 14 settingsShortcutKey,
15 isLinux, 15 isLinux,
16 isMac, 16 isMac,
17 aboutAppDetails,
18 lockFerdiShortcutKey, 17 lockFerdiShortcutKey,
19 todosToggleShortcutKey, 18 todosToggleShortcutKey,
20 workspaceToggleShortcutKey, 19 workspaceToggleShortcutKey,
@@ -592,23 +591,6 @@ export default class FranzMenu {
592 const tpl = _titleBarTemplateFactory(intl, this.stores.settings.app.locked); 591 const tpl = _titleBarTemplateFactory(intl, this.stores.settings.app.locked);
593 const { actions } = this; 592 const { actions } = this;
594 593
595 // TODO: Extract this into a reusable component and remove the duplications
596 const quitApp = () => {
597 const yesButtonIndex = 0;
598 let selection = yesButtonIndex;
599 if (window.ferdi.stores.settings.app.confirmOnQuit) {
600 selection = dialog.showMessageBoxSync(app.mainWindow, {
601 type: 'question',
602 message: intl.formatMessage(globalMessages.quit),
603 detail: intl.formatMessage(globalMessages.quitConfirmation),
604 buttons: [intl.formatMessage(globalMessages.yes), intl.formatMessage(globalMessages.no)],
605 });
606 }
607 if (selection === yesButtonIndex) {
608 app.quit();
609 }
610 };
611
612 if (!isMac) { 594 if (!isMac) {
613 tpl[1].submenu.push({ 595 tpl[1].submenu.push({
614 label: intl.formatMessage(menuItems.autohideMenuBar), 596 label: intl.formatMessage(menuItems.autohideMenuBar),
@@ -813,7 +795,9 @@ export default class FranzMenu {
813 { 795 {
814 label: intl.formatMessage(globalMessages.quit), 796 label: intl.formatMessage(globalMessages.quit),
815 accelerator: `${cmdOrCtrlShortcutKey()}+Q`, 797 accelerator: `${cmdOrCtrlShortcutKey()}+Q`,
816 click: quitApp, 798 click() {
799 app.quit();
800 },
817 }, 801 },
818 ], 802 ],
819 }); 803 });
@@ -821,12 +805,7 @@ export default class FranzMenu {
821 const about = { 805 const about = {
822 label: intl.formatMessage(menuItems.about), 806 label: intl.formatMessage(menuItems.about),
823 click: () => { 807 click: () => {
824 dialog.showMessageBox({ 808 app.showAboutPanel();
825 type: 'info',
826 title: 'Franz Ferdinand',
827 message: 'Ferdi',
828 detail: aboutAppDetails(),
829 });
830 }, 809 },
831 }; 810 };
832 811
@@ -857,7 +836,7 @@ export default class FranzMenu {
857 } else { 836 } else {
858 tpl[0].submenu = [ 837 tpl[0].submenu = [
859 { 838 {
860 label: intl.formatMessage(menuItems.settings), 839 label: intl.formatMessage(globalMessages.settings),
861 accelerator: `${settingsShortcutKey()}`, 840 accelerator: `${settingsShortcutKey()}`,
862 click: () => { 841 click: () => {
863 this.actions.ui.openSettings({ path: 'app' }); 842 this.actions.ui.openSettings({ path: 'app' });
@@ -871,7 +850,9 @@ export default class FranzMenu {
871 { 850 {
872 label: intl.formatMessage(globalMessages.quit), 851 label: intl.formatMessage(globalMessages.quit),
873 accelerator: `${cmdOrCtrlShortcutKey()}+Q`, 852 accelerator: `${cmdOrCtrlShortcutKey()}+Q`,
874 click: quitApp, 853 click() {
854 app.quit();
855 },
875 }, 856 },
876 ]; 857 ];
877 858
diff --git a/src/lib/Tray.js b/src/lib/Tray.js
index c897d597a..7360611cd 100644
--- a/src/lib/Tray.js
+++ b/src/lib/Tray.js
@@ -1,5 +1,5 @@
1import { 1import {
2 app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, dialog, 2 app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain,
3} from 'electron'; 3} from 'electron';
4import { join } from 'path'; 4import { join } from 'path';
5import macosVersion from 'macos-version'; 5import macosVersion from 'macos-version';
@@ -10,6 +10,7 @@ const INDICATOR_TRAY_PLAIN = 'tray';
10const INDICATOR_TRAY_UNREAD = 'tray-unread'; 10const INDICATOR_TRAY_UNREAD = 'tray-unread';
11const INDICATOR_TRAY_INDIRECT = 'tray-indirect'; 11const INDICATOR_TRAY_INDIRECT = 'tray-indirect';
12 12
13// TODO: Need to support i18n for a lot of the hard-coded strings in this file
13export default class TrayIcon { 14export default class TrayIcon {
14 trayIcon = null; 15 trayIcon = null;
15 16
@@ -43,7 +44,9 @@ export default class TrayIcon {
43 }, 44 },
44 { 45 {
45 label: 'Quit Ferdi', 46 label: 'Quit Ferdi',
46 click: this.quitApp, 47 click() {
48 app.quit();
49 },
47 }, 50 },
48 ]; 51 ];
49 52
@@ -176,22 +179,4 @@ export default class TrayIcon {
176 __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`, 179 __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`,
177 )); 180 ));
178 } 181 }
179
180 // TODO: Extract this into a reusable component and remove the duplications
181 quitApp = () => {
182 const yesButtonIndex = 0;
183 let selection = yesButtonIndex;
184 if (window.ferdi.stores.settings.app.confirmOnQuit) {
185 selection = dialog.showMessageBoxSync(app.mainWindow, {
186 // TODO: Externalize strings
187 type: 'question',
188 message: 'Quit',
189 detail: 'Do you really want to quit Ferdi?',
190 buttons: ['Yes', 'No'],
191 });
192 }
193 if (selection === yesButtonIndex) {
194 app.quit();
195 }
196 };
197} 182}