From 0e9cdba215e611745dcf4f10ee63572c7af25430 Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 16:50:42 +0100
Subject: [PATCH 1/7] feat: (wip) add error reporting
---
app/assets/javascripts/app.ts | 2 +
.../javascripts/services/errorReporting.ts | 23 +++++
.../javascripts/services/localStorage.ts | 16 ++++
app/views/application/app.html.erb | 1 +
index.html | 2 +
package-lock.json | 89 +++++++++++++++++--
package.json | 1 +
7 files changed, 129 insertions(+), 5 deletions(-)
create mode 100644 app/assets/javascripts/services/errorReporting.ts
create mode 100644 app/assets/javascripts/services/localStorage.ts
diff --git a/app/assets/javascripts/app.ts b/app/assets/javascripts/app.ts
index dd0f8cb0a..9fdb061f2 100644
--- a/app/assets/javascripts/app.ts
+++ b/app/assets/javascripts/app.ts
@@ -53,6 +53,7 @@ import {
import { trusted } from './filters';
import { isDev } from './utils';
import { Bridge, BrowserBridge } from './services/bridge';
+import { startErrorReporting } from './services/errorReporting';
if (__WEB__) {
startApplication(
@@ -67,6 +68,7 @@ function startApplication(
defaultSyncServerHost: string,
bridge: Bridge
) {
+ startErrorReporting();
angular.module('app', ['ngSanitize']);
// Config
diff --git a/app/assets/javascripts/services/errorReporting.ts b/app/assets/javascripts/services/errorReporting.ts
new file mode 100644
index 000000000..3229051ab
--- /dev/null
+++ b/app/assets/javascripts/services/errorReporting.ts
@@ -0,0 +1,23 @@
+import { isDesktopApplication, isDev } from '@/utils';
+import { storage, StorageKey } from './localStorage';
+import Bugsnag from '@bugsnag/js';
+
+declare const __VERSION__: string;
+
+export async function startErrorReporting() {
+ if (storage.get(StorageKey.DisableErrorReporting)) {
+ return;
+ }
+ try {
+ Bugsnag.start({
+ apiKey: (window as any)._bugsnag_api_key,
+ appType: isDesktopApplication() ? 'desktop' : 'web',
+ appVersion: __VERSION__,
+ collectUserIp: false,
+ autoTrackSessions: false,
+ releaseStage: isDev ? 'development' : undefined
+ });
+ } catch (error) {
+ console.error('Failed to start Bugsnag.', error);
+ }
+}
diff --git a/app/assets/javascripts/services/localStorage.ts b/app/assets/javascripts/services/localStorage.ts
new file mode 100644
index 000000000..5f832ea00
--- /dev/null
+++ b/app/assets/javascripts/services/localStorage.ts
@@ -0,0 +1,16 @@
+export enum StorageKey {
+ DisableErrorReporting = 'DisableErrorReporting',
+}
+
+export const storage = {
+ get(key: StorageKey) {
+ const value = localStorage.getItem(key);
+ return value ? JSON.parse(value) : null;
+ },
+ set(key: StorageKey, value: unknown) {
+ localStorage.setItem(key, JSON.stringify(value));
+ },
+ remove(key: StorageKey) {
+ localStorage.removeItem(key);
+ },
+};
diff --git a/app/views/application/app.html.erb b/app/views/application/app.html.erb
index 724234545..71d29c6bb 100644
--- a/app/views/application/app.html.erb
+++ b/app/views/application/app.html.erb
@@ -32,6 +32,7 @@
window._default_sync_server = "<%= ENV['SF_DEFAULT_SERVER'] %>";
window._extensions_manager_location = "<%= ENV['EXTENSIONS_MANAGER_LOCATION'] %>";
window._batch_manager_location = "<%= ENV['BATCH_MANAGER_LOCATION'] %>";
+ window._bugsnag_api_key = "<%= ENV['BUGSNAG_API_KEY'] %>";
<% if Rails.env.development? %>
diff --git a/index.html b/index.html
index 4f5967139..01ac2ef10 100644
--- a/index.html
+++ b/index.html
@@ -32,11 +32,13 @@
data-default-sync-server="<%= env.DEV_DEFAULT_SYNC_SERVER %>"
data-extensions-manager-location="<%= env.DEV_EXTENSIONS_MANAGER_LOCATION %>"
data-batch-manager-location="<%= env.DEV_BATCH_MANAGER_LOCATION %>"
+ data-bugsnag-api-key="<%= env.DEV_BUGSNAG_API_KEY %>"
>
diff --git a/package-lock.json b/package-lock.json index 358dfe1e1..723a81283 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2507,6 +2507,58 @@ } } }, + "@bugsnag/browser": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.5.1.tgz", + "integrity": "sha512-NLWgSj3elYGSkdth666UxQ6r5Y/zAMidnQZRnOW2ZsW+4W/q+hr7zoN4v5IUnZuoSTQ9QxVYY99wA4hqlDyoJg==", + "requires": { + "@bugsnag/core": "^7.3.5" + } + }, + "@bugsnag/core": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.3.5.tgz", + "integrity": "sha512-7zKFLcA6m9aaQ1p1AQx2iRaT3gE/MJqy0vGa/RhlKNdgMdMKYRGECWxJE66firvJT5ZwL7Bu11IkK6sLWHCBaw==", + "requires": { + "@bugsnag/cuid": "^3.0.0", + "@bugsnag/safe-json-stringify": "^6.0.0", + "error-stack-parser": "^2.0.3", + "iserror": "0.0.2", + "stack-generator": "^2.0.3" + } + }, + "@bugsnag/cuid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.0.tgz", + "integrity": "sha512-LOt8aaBI+KvOQGneBtpuCz3YqzyEAehd1f3nC5yr9TIYW1+IzYKa2xWS4EiMz5pPOnRPHkyyS5t/wmSmN51Gjg==" + }, + "@bugsnag/js": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.5.1.tgz", + "integrity": "sha512-acbq392QYjZNtUHa5tTp+MLTBhNZhI4s6EBrEFqN1TdxrVVGEFfnQqrPISfKtOJ+FW1dZEZiQ0oEGJ127htqIQ==", + "requires": { + "@bugsnag/browser": "^7.5.1", + "@bugsnag/node": "^7.3.5" + } + }, + "@bugsnag/node": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.3.5.tgz", + "integrity": "sha512-eN06NgphKYikBq/AXpiLO9tNx1H7cz8C78oQnR5fj2POulj+Zm9njr9dM6DEzGIvBDt952SwwcOA73jAiOmztQ==", + "requires": { + "@bugsnag/core": "^7.3.5", + "byline": "^5.0.0", + "error-stack-parser": "^2.0.2", + "iserror": "^0.0.2", + "pump": "^3.0.0", + "stack-generator": "^2.0.3" + } + }, + "@bugsnag/safe-json-stringify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz", + "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==" + }, "@types/angular": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.7.0.tgz", @@ -3936,6 +3988,11 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -5079,7 +5136,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -5131,6 +5187,14 @@ "is-arrayish": "^0.2.1" } }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "requires": { + "stackframe": "^1.1.1" + } + }, "es-abstract": { "version": "1.17.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", @@ -7735,6 +7799,11 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "iserror": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz", + "integrity": "sha1-vVNFH+L2aLnyQCwZZnh6qix8C/U=" + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -9174,7 +9243,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -9954,7 +10022,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -11218,6 +11285,19 @@ "figgy-pudding": "^3.5.1" } }, + "stack-generator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.5.tgz", + "integrity": "sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -12908,8 +12988,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "1.0.3", diff --git a/package.json b/package.json index bb7141c7c..337d1cb8a 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "webpack-merge": "^4.2.2" }, "dependencies": { + "@bugsnag/js": "^7.5.1", "mobx": "^6.0.1", "sncrypto": "github:standardnotes/sncrypto#8794c88daa967eaae493cd5fdec7506d52b257ad", "snjs": "github:standardnotes/snjs#b7866c68243b418ae5e7be830d1593f0e07333e4" From 6cd4b8707ad2b6df89ae14eab199766cad66a91e Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Tue, 3 Nov 2020 18:55:25 +0100 Subject: [PATCH 2/7] feat: add error reporting --- app/assets/javascripts/app.ts | 10 +++++-- .../directives/views/accountMenu.ts | 28 +++++++++++++++++++ .../javascripts/services/errorReporting.ts | 11 +++++++- .../templates/directives/account-menu.pug | 12 ++++++++ app/views/application/app.html.erb | 2 +- index.html | 2 +- package-lock.json | 4 +-- package.json | 2 +- 8 files changed, 63 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/app.ts b/app/assets/javascripts/app.ts index 9fdb061f2..2b434fb09 100644 --- a/app/assets/javascripts/app.ts +++ b/app/assets/javascripts/app.ts @@ -3,6 +3,7 @@ declare const __VERSION__: string; declare const __WEB__: boolean; +import { SNLog } from 'snjs'; import angular from 'angular'; import { configRoutes } from './routes'; @@ -64,11 +65,14 @@ if (__WEB__) { (window as any).startApplication = startApplication; } -function startApplication( +async function startApplication( defaultSyncServerHost: string, bridge: Bridge ) { - startErrorReporting(); + + SNLog.onLog = console.log; + await startErrorReporting(); + angular.module('app', ['ngSanitize']); // Config @@ -142,4 +146,6 @@ function startApplication( }, }); } + + angular.bootstrap(document, ['app']); } diff --git a/app/assets/javascripts/directives/views/accountMenu.ts b/app/assets/javascripts/directives/views/accountMenu.ts index f09ba210a..253e57b1e 100644 --- a/app/assets/javascripts/directives/views/accountMenu.ts +++ b/app/assets/javascripts/directives/views/accountMenu.ts @@ -27,6 +27,7 @@ import { PasswordWizardType } from '@/types'; import { BackupFile } from 'snjs/dist/@types/services/protocol_service'; import { confirmDialog, alertDialog } from '@/services/alertService'; import { autorun, IReactionDisposer } from 'mobx'; +import { storage, StorageKey } from '@/services/localStorage'; const ELEMENT_ID_IMPORT_PASSWORD_INPUT = 'import-password-request'; @@ -65,6 +66,7 @@ type AccountMenuState = { encryptionEnabled: boolean; selectedAutoLockInterval: any; showBetaWarning: boolean; + errorReportingEnabled: boolean; } class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> { @@ -96,6 +98,7 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> { }, mutable: {}, showBetaWarning: false, + errorReportingEnabled: !storage.get(StorageKey.DisableErrorReporting), } as AccountMenuState; } @@ -587,6 +590,31 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> { } } + openErrorReportingDialog() { + alertDialog({ + title: 'Data sent during automatic error reporting', + text: ` + We use Bugsnag to automatically + reports errors that occur while the app is running. + + See this article, paragraph 'Browser' under 'Sending diagnostic data', + + to know what data is automatically captured. + ` + }); + } + + toggleErrorReportingEnabled() { + if (this.state.errorReportingEnabled) { + storage.set(StorageKey.DisableErrorReporting, true); + } else { + storage.set(StorageKey.DisableErrorReporting, false); + } + if (!this.application.getSyncStatus().syncInProgress) { + window.location.reload(); + } + } + isDesktopApplication() { return isDesktopApplication(); } diff --git a/app/assets/javascripts/services/errorReporting.ts b/app/assets/javascripts/services/errorReporting.ts index 3229051ab..06816cb0e 100644 --- a/app/assets/javascripts/services/errorReporting.ts +++ b/app/assets/javascripts/services/errorReporting.ts @@ -1,14 +1,16 @@ +import { SNLog } from 'snjs'; import { isDesktopApplication, isDev } from '@/utils'; import { storage, StorageKey } from './localStorage'; -import Bugsnag from '@bugsnag/js'; declare const __VERSION__: string; export async function startErrorReporting() { if (storage.get(StorageKey.DisableErrorReporting)) { + SNLog.onError = console.error; return; } try { + const { default: Bugsnag } = await import('@bugsnag/js'); Bugsnag.start({ apiKey: (window as any)._bugsnag_api_key, appType: isDesktopApplication() ? 'desktop' : 'web', @@ -17,6 +19,13 @@ export async function startErrorReporting() { autoTrackSessions: false, releaseStage: isDev ? 'development' : undefined }); + if (isDev) { + SNLog.onError = console.error; + } else { + SNLog.onError = (error) => { + Bugsnag.notify(error); + } + } } catch (error) { console.error('Failed to start Bugsnag.', error); } diff --git a/app/assets/templates/directives/account-menu.pug b/app/assets/templates/directives/account-menu.pug index e55e232a0..799fa2c39 100644 --- a/app/assets/templates/directives/account-menu.pug +++ b/app/assets/templates/directives/account-menu.pug @@ -302,6 +302,18 @@ | the whole file, please use the Batch Manager extension. .sk-panel-row .sk-spinner.small.info(ng-if='self.state.importData.loading') + .sk-panel-section + .sk-panel-section-title Error Reporting + .sk-panel-section-subtitle.info + | Automatic error reporting is {{ self.state.errorReportingEnabled ? 'enabled.' : 'disabled.' }} + p.sk-p + | Help us improve Standard Notes by automatically submitting + | anonymized error reports. + .sk-panel-row + button(ng-click="self.toggleErrorReportingEnabled()").sk-button.info + span.sk-label {{ self.state.errorReportingEnabled ? 'Disable' : 'Enable'}} Error Reporting + .sk-panel-row + a(ng-click="self.openErrorReportingDialog()").sk-a What data is being sent? .sk-panel-footer .sk-panel-row .sk-p.left.neutral diff --git a/app/views/application/app.html.erb b/app/views/application/app.html.erb index 71d29c6bb..39e70cf4c 100644 --- a/app/views/application/app.html.erb +++ b/app/views/application/app.html.erb @@ -1,5 +1,5 @@ - +
diff --git a/index.html b/index.html index 01ac2ef10..d08c83053 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ This file is strictly used for local development using the webpack-dev-server. --> - +
diff --git a/package-lock.json b/package-lock.json
index 723a81283..afdae7b35 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11028,8 +11028,8 @@
"from": "github:standardnotes/sncrypto#8794c88daa967eaae493cd5fdec7506d52b257ad"
},
"snjs": {
- "version": "github:standardnotes/snjs#b7866c68243b418ae5e7be830d1593f0e07333e4",
- "from": "github:standardnotes/snjs#b7866c68243b418ae5e7be830d1593f0e07333e4"
+ "version": "github:standardnotes/snjs#5757198630342821fdb0e8133b1597a39e0502ad",
+ "from": "github:standardnotes/snjs#5757198630342821fdb0e8133b1597a39e0502ad"
},
"sockjs": {
"version": "0.3.20",
diff --git a/package.json b/package.json
index 337d1cb8a..880d3c30a 100644
--- a/package.json
+++ b/package.json
@@ -72,6 +72,6 @@
"@bugsnag/js": "^7.5.1",
"mobx": "^6.0.1",
"sncrypto": "github:standardnotes/sncrypto#8794c88daa967eaae493cd5fdec7506d52b257ad",
- "snjs": "github:standardnotes/snjs#b7866c68243b418ae5e7be830d1593f0e07333e4"
+ "snjs": "github:standardnotes/snjs#5757198630342821fdb0e8133b1597a39e0502ad"
}
}
From 63233fcd52ac6b62ddc90a481895c3ec33d42a64 Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 19:12:15 +0100
Subject: [PATCH 3/7] fix: convert bugsnag to static import
---
app/assets/javascripts/app.ts | 2 +-
app/assets/javascripts/services/errorReporting.ts | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/app/assets/javascripts/app.ts b/app/assets/javascripts/app.ts
index 2b434fb09..71ab0e975 100644
--- a/app/assets/javascripts/app.ts
+++ b/app/assets/javascripts/app.ts
@@ -71,7 +71,7 @@ async function startApplication(
) {
SNLog.onLog = console.log;
- await startErrorReporting();
+ startErrorReporting();
angular.module('app', ['ngSanitize']);
diff --git a/app/assets/javascripts/services/errorReporting.ts b/app/assets/javascripts/services/errorReporting.ts
index 06816cb0e..83ffd015b 100644
--- a/app/assets/javascripts/services/errorReporting.ts
+++ b/app/assets/javascripts/services/errorReporting.ts
@@ -1,16 +1,16 @@
import { SNLog } from 'snjs';
import { isDesktopApplication, isDev } from '@/utils';
import { storage, StorageKey } from './localStorage';
+import Bugsnag from '@bugsnag/js';
declare const __VERSION__: string;
-export async function startErrorReporting() {
+export function startErrorReporting() {
if (storage.get(StorageKey.DisableErrorReporting)) {
SNLog.onError = console.error;
return;
}
try {
- const { default: Bugsnag } = await import('@bugsnag/js');
Bugsnag.start({
apiKey: (window as any)._bugsnag_api_key,
appType: isDesktopApplication() ? 'desktop' : 'web',
@@ -28,5 +28,6 @@ export async function startErrorReporting() {
}
} catch (error) {
console.error('Failed to start Bugsnag.', error);
+ SNLog.onError = console.error;
}
}
From a6991b140f13d50bf351af9ef1d599754425b6f2 Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 19:32:29 +0100
Subject: [PATCH 4/7] fix: wait for angular document ready
---
app/assets/javascripts/app.ts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/assets/javascripts/app.ts b/app/assets/javascripts/app.ts
index 71ab0e975..32529da33 100644
--- a/app/assets/javascripts/app.ts
+++ b/app/assets/javascripts/app.ts
@@ -147,5 +147,7 @@ async function startApplication(
});
}
- angular.bootstrap(document, ['app']);
+ angular.element(document).ready(() => {
+ angular.bootstrap(document, ['app']);
+ });
}
From 1727c03826625290e604127d9ccd446039bc6ab2 Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 20:11:21 +0100
Subject: [PATCH 5/7] fix: typo
---
app/assets/javascripts/directives/views/accountMenu.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/assets/javascripts/directives/views/accountMenu.ts b/app/assets/javascripts/directives/views/accountMenu.ts
index 253e57b1e..eeb7d3685 100644
--- a/app/assets/javascripts/directives/views/accountMenu.ts
+++ b/app/assets/javascripts/directives/views/accountMenu.ts
@@ -595,7 +595,7 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> {
title: 'Data sent during automatic error reporting',
text: `
We use Bugsnag to automatically
- reports errors that occur while the app is running.
+ report errors that occur while the app is running.
See this article, paragraph 'Browser' under 'Sending diagnostic data',
From 02d57b6564b8eb932df58e9e490985c21e310f4c Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 20:13:13 +0100
Subject: [PATCH 6/7] fix: bugsnag info wording
---
.../javascripts/directives/views/accountMenu.ts | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/app/assets/javascripts/directives/views/accountMenu.ts b/app/assets/javascripts/directives/views/accountMenu.ts
index eeb7d3685..2f38002cf 100644
--- a/app/assets/javascripts/directives/views/accountMenu.ts
+++ b/app/assets/javascripts/directives/views/accountMenu.ts
@@ -594,12 +594,17 @@ class AccountMenuCtrl extends PureViewCtrl<{}, AccountMenuState> {
alertDialog({
title: 'Data sent during automatic error reporting',
text: `
- We use Bugsnag to automatically
- report errors that occur while the app is running.
+ We use Bugsnag
+ to automatically report errors that occur while the app is running. See
- See this article, paragraph 'Browser' under 'Sending diagnostic data',
+ this article, paragraph 'Browser' under 'Sending diagnostic data',
- to know what data is automatically captured.
+ to see what data is included in error reports.
+
+ Error reports never include IP addresses and are fully
+ anonymized. We use error reports to be alerted when something in our
+ code is causing unexpected errors and crashes in your application
+ experience.
`
});
}
From 1f4a0a0066aa49722d3be1f11209914ec3a75dd4 Mon Sep 17 00:00:00 2001
From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com>
Date: Tue, 3 Nov 2020 20:38:47 +0100
Subject: [PATCH 7/7] chore(version): 3.5.2
---
package-lock.json | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index afdae7b35..0a180717c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "standard-notes-web",
- "version": "3.5.1",
+ "version": "3.5.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 880d3c30a..e19f2fa9e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "standard-notes-web",
- "version": "3.5.1",
+ "version": "3.5.2",
"license": "AGPL-3.0-or-later",
"repository": {
"type": "git",