From b425bc5cec472030aa612f8a852f04eb7d6616d3 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 15 Jun 2021 13:10:01 -0300 Subject: [PATCH 01/12] chore(version): 3.6.3 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d76cefddc..76e6d7e7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "standard-notes-web", - "version": "3.8.2", + "version": "3.8.3", "license": "AGPL-3.0-or-later", "repository": { "type": "git", @@ -55,7 +55,7 @@ "pug-loader": "^2.4.0", "sass-loader": "^8.0.2", "serve-static": "^1.14.1", - "sn-stylekit": "5.2.1", + "sn-stylekit": "5.1.0", "ts-loader": "^8.0.17", "typescript": "4.2.3", "typescript-eslint": "0.0.1-alpha.0", From ce383a516e62d15dc8f51dce0ce6d1a4b28d83c3 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 15 Jun 2021 13:16:30 -0300 Subject: [PATCH 02/12] chore: remove batchMgrUrl getter --- app/assets/javascripts/services/nativeExtManager.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/assets/javascripts/services/nativeExtManager.ts b/app/assets/javascripts/services/nativeExtManager.ts index 64d728987..890bc454b 100644 --- a/app/assets/javascripts/services/nativeExtManager.ts +++ b/app/assets/javascripts/services/nativeExtManager.ts @@ -33,10 +33,6 @@ export class NativeExtManager extends ApplicationService { return (window as any)._extensions_manager_location; } - get batchMgrUrl() { - return (window as any)._batch_manager_location; - } - reload() { this.application!.singletonManager!.registerPredicate(this.extManagerPred); this.resolveExtensionsManager(); From 83a813ed94bd2af598a0e2eed98cf3460c989613 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 15 Jun 2021 13:37:50 -0300 Subject: [PATCH 03/12] fix: fix package.json StyleKit version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 76e6d7e7d..b36d87f19 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "pug-loader": "^2.4.0", "sass-loader": "^8.0.2", "serve-static": "^1.14.1", - "sn-stylekit": "5.1.0", + "sn-stylekit": "5.2.1", "ts-loader": "^8.0.17", "typescript": "4.2.3", "typescript-eslint": "0.0.1-alpha.0", From 6cd1d8a688f3c277ddd1b732e99cba5b08444dc8 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 15 Jun 2021 15:39:47 -0300 Subject: [PATCH 04/12] chore: change pure-lockfile to frozen-lockfile on build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b36d87f19..c480173e4 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "bundle": "webpack --config webpack.prod.js && yarn tsc", "bundle:desktop": "webpack --config webpack.prod.js --env.platform='desktop'", "bundle:desktop:beta": "webpack --config webpack.prod.js --env.platform='desktop' --env.public_beta='true'", - "build": "bundle install && yarn install --pure-lockfile && bundle exec rails assets:precompile && yarn bundle", + "build": "bundle install && yarn install --frozen-lockfile && bundle exec rails assets:precompile && yarn bundle", "submodules": "git submodule update --init --force", "lint": "eslint --fix app/assets/javascripts", "tsc": "tsc --project app/assets/javascripts/tsconfig.json" From 1af72abe236874b2e6af6e941e87f89989cc5c18 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 15 Jun 2021 17:15:48 -0300 Subject: [PATCH 05/12] fix: set next version host on host input change --- app/assets/javascripts/directives/views/accountMenu.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/directives/views/accountMenu.ts b/app/assets/javascripts/directives/views/accountMenu.ts index abea399ab..261637063 100644 --- a/app/assets/javascripts/directives/views/accountMenu.ts +++ b/app/assets/javascripts/directives/views/accountMenu.ts @@ -229,6 +229,7 @@ class AccountMenuCtrl extends PureViewCtrl { onHostInputChange() { const url = this.getState().formData.url!; this.application!.setHost(url); + this.application!.setNextVersionHost(url); } refreshEncryptionStatus() { From 1c07253efbc845fc87d725940daebddd49a2c16e Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 12:03:54 -0300 Subject: [PATCH 06/12] fix: reduce panel resizer width --- app/assets/stylesheets/_main.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/_main.scss b/app/assets/stylesheets/_main.scss index 734dd916b..6ab0cf0bb 100644 --- a/app/assets/stylesheets/_main.scss +++ b/app/assets/stylesheets/_main.scss @@ -136,7 +136,7 @@ $footer-height: 32px; top: 0; right: 0; z-index: $z-index-panel-resizer; - width: 8px; + width: 2px; height: 100%; position: absolute; cursor: col-resize; From a85d2b967627d5f2a3d99cebc6204bd8442c5f58 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 12:24:44 -0300 Subject: [PATCH 07/12] styles: remove faded style to disabled margin resizers --- app/assets/javascripts/views/editor/editor-view.pug | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/views/editor/editor-view.pug b/app/assets/javascripts/views/editor/editor-view.pug index bf37859cb..c9df7eb77 100644 --- a/app/assets/javascripts/views/editor/editor-view.pug +++ b/app/assets/javascripts/views/editor/editor-view.pug @@ -92,7 +92,6 @@ action="self.selectedMenuItem(true); self.toggleWebPrefKey(self.prefKeyMarginResizers)" circle="self.state.marginResizersEnabled ? 'success' : 'neutral'", desc="'Allows for editor left and right margins to be resized'", - faded='!self.state.marginResizersEnabled', label="'Margin Resizers'" ) .sk-app-bar-item( From 124f7779c38862e140ac3207bbbf33ea0c913367 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 12:28:32 -0300 Subject: [PATCH 08/12] fix: remove recursive tag deletion --- .../ui_models/app_state/note_tags_state.ts | 12 +++--------- .../ui_models/app_state/notes_state.ts | 16 +++++----------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/ui_models/app_state/note_tags_state.ts b/app/assets/javascripts/ui_models/app_state/note_tags_state.ts index f263fcb7d..80b5273f8 100644 --- a/app/assets/javascripts/ui_models/app_state/note_tags_state.ts +++ b/app/assets/javascripts/ui_models/app_state/note_tags_state.ts @@ -198,15 +198,9 @@ export class NoteTagsState { async removeTagFromActiveNote(tag: SNTag): Promise { const { activeNote } = this; if (activeNote) { - const descendantTags = this.application.getTagDescendants(tag); - const tagsToRemove = [...descendantTags, tag]; - await Promise.all( - tagsToRemove.map(async (tag) => { - await this.application.changeItem(tag.uuid, (mutator) => { - mutator.removeItemAsRelationship(activeNote); - }); - }) - ); + await this.application.changeItem(tag.uuid, (mutator) => { + mutator.removeItemAsRelationship(activeNote); + }); this.application.sync(); this.reloadTags(); } diff --git a/app/assets/javascripts/ui_models/app_state/notes_state.ts b/app/assets/javascripts/ui_models/app_state/notes_state.ts index daa9881aa..66d1ad024 100644 --- a/app/assets/javascripts/ui_models/app_state/notes_state.ts +++ b/app/assets/javascripts/ui_models/app_state/notes_state.ts @@ -346,17 +346,11 @@ export class NotesState { async removeTagFromSelectedNotes(tag: SNTag): Promise { const selectedNotes = Object.values(this.selectedNotes); - const descendantTags = this.application.getTagDescendants(tag); - const tagsToRemove = [...descendantTags, tag]; - await Promise.all( - tagsToRemove.map(async (tag) => { - await this.application.changeItem(tag.uuid, (mutator) => { - for (const note of selectedNotes) { - mutator.removeItemAsRelationship(note); - } - }); - }) - ); + await this.application.changeItem(tag.uuid, (mutator) => { + for (const note of selectedNotes) { + mutator.removeItemAsRelationship(note); + } + }); this.application.sync(); } From 91fc475aac25b1a3019f9da889f623e7b1e56111 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 12:54:39 -0300 Subject: [PATCH 09/12] fix: show autocomplete tag results only if query isn't empty --- .../components/AutocompleteTagInput.tsx | 16 +++++++++------- .../ui_models/app_state/note_tags_state.ts | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/components/AutocompleteTagInput.tsx b/app/assets/javascripts/components/AutocompleteTagInput.tsx index 41b77280d..2dddf3077 100644 --- a/app/assets/javascripts/components/AutocompleteTagInput.tsx +++ b/app/assets/javascripts/components/AutocompleteTagInput.tsx @@ -5,6 +5,7 @@ import { AppState } from '@/ui_models/app_state'; import { AutocompleteTagResult } from './AutocompleteTagResult'; import { AutocompleteTagHint } from './AutocompleteTagHint'; import { observer } from 'mobx-react-lite'; +import { SNTag } from '@standardnotes/snjs'; type Props = { appState: AppState; @@ -41,8 +42,13 @@ export const AutocompleteTagInput = observer(({ appState }: Props) => { const onSearchQueryChange = (event: Event) => { const query = (event.target as HTMLInputElement).value; - appState.noteTags.setAutocompleteSearchQuery(query); - appState.noteTags.searchActiveNoteAutocompleteTags(); + + if (query === '') { + appState.noteTags.clearAutocompleteSearch(); + } else { + appState.noteTags.setAutocompleteSearchQuery(query); + appState.noteTags.searchActiveNoteAutocompleteTags(); + } }; const onFormSubmit = async (event: Event) => { @@ -83,10 +89,6 @@ export const AutocompleteTagInput = observer(({ appState }: Props) => { appState.noteTags.setAutocompleteInputFocused(false); }; - useEffect(() => { - appState.noteTags.searchActiveNoteAutocompleteTags(); - }, [appState.noteTags]); - useEffect(() => { if (autocompleteInputFocused) { inputRef.current.focus(); @@ -120,7 +122,7 @@ export const AutocompleteTagInput = observer(({ appState }: Props) => { onBlur={closeOnBlur} >
- {autocompleteTagResults.map((tagResult) => ( + {autocompleteTagResults.map((tagResult: SNTag) => ( { From 2473a780d1fdcc3120544312030f33eba3c8ff8b Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 14:13:03 -0300 Subject: [PATCH 10/12] fix: scroll notes list when navigating with arrow keys --- app/assets/javascripts/views/editor/editor_view.ts | 3 --- app/assets/javascripts/views/notes/notes_view.ts | 12 ++++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/views/editor/editor_view.ts b/app/assets/javascripts/views/editor/editor_view.ts index 16cc59035..8cb4c3559 100644 --- a/app/assets/javascripts/views/editor/editor_view.ts +++ b/app/assets/javascripts/views/editor/editor_view.ts @@ -285,9 +285,6 @@ class EditorViewCtrl extends PureViewCtrl { if (note.dirty) { this.showSavingStatus(); } - if (note.safeText().length === 0 && !showProtectedWarning) { - this.focusTitle(); - } } async dismissProtectedWarning() { diff --git a/app/assets/javascripts/views/notes/notes_view.ts b/app/assets/javascripts/views/notes/notes_view.ts index c5bcb03ee..e59300f28 100644 --- a/app/assets/javascripts/views/notes/notes_view.ts +++ b/app/assets/javascripts/views/notes/notes_view.ts @@ -411,6 +411,8 @@ class NotesViewCtrl extends PureViewCtrl { await this.flushUI(); await this.reloadNotes(); await this.appState.noteTags.reloadTags(); + const noteTitleEditorElement = document.getElementById('note-title-editor'); + noteTitleEditorElement?.focus(); } async handleTagChange(tag: SNTag) { @@ -789,7 +791,10 @@ class NotesViewCtrl extends PureViewCtrl { return candidate.uuid === this.activeEditorNote?.uuid; }); if (currentIndex + 1 < displayableNotes.length) { - this.selectNote(displayableNotes[currentIndex + 1]); + const nextNote = displayableNotes[currentIndex + 1]; + this.selectNote(nextNote); + const nextNoteElement = document.getElementById(`note-${nextNote.uuid}`); + nextNoteElement?.focus(); } } @@ -806,7 +811,10 @@ class NotesViewCtrl extends PureViewCtrl { const displayableNotes = this.state.notes; const currentIndex = displayableNotes.indexOf(this.activeEditorNote!); if (currentIndex - 1 >= 0) { - this.selectNote(displayableNotes[currentIndex - 1]); + const previousNote = displayableNotes[currentIndex - 1]; + this.selectNote(previousNote); + const previousNoteElement = document.getElementById(`note-${previousNote.uuid}`); + previousNoteElement?.focus(); return true; } else { return false; From dcbc8f59f9eb7948ca97de814bc6a2252e2f1bc2 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 18:10:22 -0300 Subject: [PATCH 11/12] fix: focus autocomplete input after adding tag from hint --- app/assets/javascripts/components/AutocompleteTagHint.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/components/AutocompleteTagHint.tsx b/app/assets/javascripts/components/AutocompleteTagHint.tsx index d4bfd6c6c..00cc04af7 100644 --- a/app/assets/javascripts/components/AutocompleteTagHint.tsx +++ b/app/assets/javascripts/components/AutocompleteTagHint.tsx @@ -19,6 +19,7 @@ export const AutocompleteTagHint = observer( const onTagHintClick = async () => { await appState.noteTags.createAndAddNewTag(); + appState.noteTags.setAutocompleteInputFocused(true); }; const onFocus = () => { From 184ce19ad70cae6a902f0846b1e6a9c50d645b5e Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 16 Jun 2021 19:40:33 -0300 Subject: [PATCH 12/12] fix: autolock polling for desktop --- app/assets/javascripts/services/autolock_service.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/assets/javascripts/services/autolock_service.ts b/app/assets/javascripts/services/autolock_service.ts index 4cfe8f9f1..8c967f48c 100644 --- a/app/assets/javascripts/services/autolock_service.ts +++ b/app/assets/javascripts/services/autolock_service.ts @@ -1,5 +1,4 @@ import { ApplicationService } from '@standardnotes/snjs'; -import { isDesktopApplication } from '@/utils'; const MILLISECONDS_PER_SECOND = 1000; const POLL_INTERVAL = 50; @@ -18,9 +17,7 @@ export class AutolockService extends ApplicationService { private lockAfterDate?: Date onAppLaunch() { - if (!isDesktopApplication()) { - this.beginPolling(); - } + this.beginPolling(); return super.onAppLaunch(); }