Browse Source

Merge branch 'master' into feat/web-bi-client

charlie 1 year ago
parent
commit
dcb335cc0f

+ 1 - 1
CODE_OF_CONDUCT.md

@@ -63,7 +63,7 @@ a project may be further defined and clarified by project maintainers.
 ## Enforcement
 
 Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by by contacting the moderators on the [Forum](https://discuss.logseq.com), [Discord](https://discord.gg/KpN4eHY) channel, Tienson Qin (@tiensonqin) on GitHub, or the official [Twitter](https://twitter.com/logseq). We will work with you to resolve the issue promptly. All
+reported by contacting the moderators on the [Forum](https://discuss.logseq.com), [Discord](https://discord.gg/KpN4eHY) channel, Tienson Qin (@tiensonqin) on GitHub, or the official [Twitter](https://twitter.com/logseq). We will work with you to resolve the issue promptly. All
 complaints will be reviewed and investigated and will result in a response that
 is deemed necessary and appropriate to the circumstances. The Logseq team
 will maintain confidentiality with regard to the reporter of an incident.

+ 9 - 9
CONTRIBUTING.md

@@ -22,7 +22,7 @@ Please read and follow our [Code of Conduct][coc].
 
 There are many ways you can help. Here are some ways to help without coding:
 
-- You can be help others on [Discord][discord] or [Reddit](https://www.reddit.com/r/logseq).
+- You can help others on [Discord][discord] or [Reddit](https://www.reddit.com/r/logseq).
 - You can [contribute to the official docs](https://github.com/logseq/docs/blob/master/CONTRIBUTING.md).
 - You can confirm bugs on the [issue tracker][issue-tracker] and mention reproducible steps. It helps the core team to get more reports so we can fix the highest priority bugs.
 - You can contribute [translations][translations] with a [pull request](#submit-pr).
@@ -40,7 +40,7 @@ tasks. We also have a project board to keep track of community contributions
 [Logseq - Develop Together
 💪](https://github.com/orgs/logseq/projects/5?query=is%3Aopen+sort%3Aupdated-desc).
 Another way to help with coding is by extending Logseq with
-[plugins](https://docs.logseq.com/#/page/Plugins) and submit them to the [marketplace](https://github.com/logseq/marketplace) so that the
+[plugins](https://docs.logseq.com/#/page/Plugins) and submitting them to the [marketplace](https://github.com/logseq/marketplace) so that the
 whole community can benefit.
 
 ## <a name="question"></a> Got a Question or a Problem?
@@ -91,7 +91,7 @@ The template will ask you to include the following with each issue:
 
 Before working on your pull request, please check the following:
 
-1. Search [GitHub][search-pr] for related PRs that may effect your submission.
+1. Search [GitHub][search-pr] for related PRs that may affect your submission.
 
 2. Be sure that an issue describes the problem you're fixing or the feature
 behavior and design you'd like to add.
@@ -101,7 +101,7 @@ code without a signed CLA.
 
 After doing the above, you are ready to work on your PR! To create a PR, fork
 this repository and then create a branch for the fix. Once you push your code to
-your fork, you'll be able to open a PR to the Logseq repository. For more info
+your fork, you'll be able to open a PR to the Logseq repository. For more info,
 you can follow this [GitHub
 guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork).
 For more github PR guides, see [these
@@ -111,7 +111,7 @@ guides](https://docs.github.com/en/pull-requests).
 
 When submitting a Pull Request (PR) or expecting a subsequent review, please follow these guidelines:
 
-1. The PR is ready for review. If you you have work you know how to do, then please keep your changes local until they are ready. If you need help with your PR, feel free to submit with questions.
+1. The PR is ready for review. If you have work you know how to do, then please keep your changes local until they are ready. If you need help with your PR, feel free to submit with questions.
 
 2. The PR checks which include tests and [lint checks](https://github.com/logseq/logseq/blob/master/docs/dev-practices.md#linting) are passing.
 
@@ -119,7 +119,7 @@ When submitting a Pull Request (PR) or expecting a subsequent review, please fol
 
 4. The PR has [test(s)](https://github.com/logseq/logseq/blob/master/docs/dev-practices.md#testing) for features or enhancements. Tests for bug fixes are also appreciated as they help prevent regressions.
 
-5. The PR has a descriptive title that a user can understand. We use these titles to generate changelogs for the user. Most titles use one these prefixes to categorize the PR e.g. `PREFIX: DESCRIPTION ...`:
+5. The PR has a descriptive title that a user can understand. We use these titles to generate changelogs for the user. Most titles use one of these prefixes to categorize the PR e.g. `PREFIX: DESCRIPTION ...`:
    * `chore` - Misc changes that aren't dev, feat or fix
    * `dev` - Developer related changes
    * `enhance` - Enhancements i.e. changes to existing features
@@ -132,12 +132,12 @@ When submitting a Pull Request (PR) or expecting a subsequent review, please fol
 7. The PR avoids the following changes that are not helpful to the core team:
    * Unrelated refactoring or heavy refactoring
    * Code or doc formatting changes including whitespace changes
-   * Dependency updates e.g. in package.json
+   * Dependency updates e.g. in `package.json`
    * Changes that contain multiple unverified resources. This is risky for our users and is a lot of work to verify. A change with one resource that can be verified is acceptable.
 
 ### PR Additional Links
 
-* To run Logseq locally, see [this doc](https://github.com/logseq/logseq/blob/master/docs/develop-logseq.md) or [this doc for windows](https://github.com/logseq/logseq/blob/master/docs/develop-logseq-on-windows.md).
+* To run Logseq locally, see [this doc](https://github.com/logseq/logseq/blob/master/docs/develop-logseq.md) or [this doc for Windows](https://github.com/logseq/logseq/blob/master/docs/develop-logseq-on-windows.md).
 * To contribute to translations, please read our [translation contribution guidelines][translations].
 * See [our development practices doc](https://github.com/logseq/logseq/blob/master/docs/dev-practices.md) to learn how we develop.
 * See [the overview doc](CODEBASE_OVERVIEW.md) to get an overview of the codebase.
@@ -150,7 +150,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
 - For individuals, we have a [simple click-through form][individual-cla].
 - For corporations, please contact us.
 
-If you have more than one GitHub accounts or multiple email addresses associated with a single GitHub account, you must sign the CLA using the primary email address of the GitHub account used to author Git commits and send pull requests.
+If you have more than one GitHub account or multiple email addresses associated with a single GitHub account, you must sign the CLA using the primary email address of the GitHub account used to author Git commits and send pull requests.
 
 The following documents can help you sort out issues with GitHub accounts and multiple email addresses:
 

+ 24 - 7
bb.edn

@@ -31,15 +31,32 @@
   dev:app-watch
   logseq.tasks.dev.mobile/app-watch
 
-  dev:build-publishing
-  logseq.tasks.dev/build-publishing
+  -dev:build-publishing-frontend
+  logseq.tasks.dev/build-publishing-frontend
+
+  dev:publishing-backend
+  logseq.tasks.dev/publishing-backend
+
+  -dev:publishing-release
+  {:depends [-dev:build-publishing-frontend]
+   :doc "Build release publishing spa app given graph and output dirs"
+   :task (run 'dev:publishing-backend)}
+
+  -dev:watch-publishing-frontend
+  logseq.tasks.dev/watch-publishing-frontend
+
+  -dev:watch-publishing-backend
+  logseq.tasks.dev/watch-publishing-backend
+
+  -dev:publishing-dev
+  {:depends [-dev:watch-publishing-frontend -dev:watch-publishing-backend]
+   :doc "Watch dev publishing spa app given graph and output dirs"}
 
   dev:publishing
-  {:depends [dev:build-publishing]
-   :doc "Build publishing spa app given graph and output dirs"
-   :task (apply shell {:dir "scripts"}
-           "yarn -s nbb-logseq -cp src -m logseq.tasks.dev.publishing"
-           (into ["static"] *command-line-args*))}
+  {:doc "Builds full publishing app given graph and output dirs. Append --dev to watch frontend"
+   :task (if ((set *command-line-args*) "--dev")
+           (run '-dev:publishing-dev {:parallel true})
+           (run '-dev:publishing-release))}
 
   dev:npx-cap-run-ios
   logseq.tasks.dev.mobile/npx-cap-run-ios

+ 3 - 2
deps/publishing/src/logseq/publishing.cljs

@@ -18,7 +18,7 @@ can be passed:
   can be icon, name, alias, title, description and url
 * :default-notification-fn - Configure how errors are reported when creating the export.
   Default is to throw an exception when it occurs."
-  [db static-dir graph-dir output-dir {:keys [notification-fn]
+  [db static-dir graph-dir output-dir {:keys [notification-fn dev?]
                                        :or {notification-fn default-notification-fn}
                                        :as options}]
   (let [options' (cond-> options
@@ -28,4 +28,5 @@ can be passed:
                    (assoc-in [:app-state :ui/radix-color] (:ui/radix-color options)))
         {:keys [html asset-filenames]} (publish-html/build-html db options')]
     (publish-export/create-export html static-dir graph-dir output-dir {:asset-filenames asset-filenames
-                                                                        :notification-fn notification-fn})))
+                                                                        :notification-fn notification-fn
+                                                                        :dev? dev?})))

+ 15 - 9
deps/publishing/src/logseq/publishing/export.cljs

@@ -22,21 +22,27 @@
 
 (defn- cleanup-js-dir
   "Moves used js files to the correct dir and removes unused js files"
-  [output-static-dir]
+  [output-static-dir source-static-dir {:keys [dev?]}]
   (let [publishing-dir (node-path/join output-static-dir "js" "publishing")]
     (p/let [_ (p/all (map (fn [file]
                             (fs/rmSync (node-path/join output-static-dir "js" file) #js {:force true}))
                           js-files))
+            _ (when dev?
+                (fse/remove (node-path/join output-static-dir "js" "cljs-runtime")))
             _ (p/all (map (fn [file]
-                            (fs/renameSync
-                             (node-path/join publishing-dir file)
-                             (node-path/join output-static-dir "js" file)))
+                            (if dev?
+                              (fs/symlinkSync
+                               (node-path/join source-static-dir "js" "publishing" file)
+                               (node-path/join output-static-dir "js" file))
+                              (fs/renameSync
+                               (node-path/join publishing-dir file)
+                               (node-path/join output-static-dir "js" file))))
                           js-files))
+            _ (when dev?
+                (fs/symlinkSync (node-path/join source-static-dir "js" "publishing" "cljs-runtime")
+                                (node-path/join output-static-dir "js" "cljs-runtime")))
             ;; remove publishing-dir
-            _ (p/all (map (fn [file]
-                            (fs/rmSync (node-path/join publishing-dir file)))
-                          (fs/readdirSync publishing-dir)))
-            _ (fs/rmdirSync publishing-dir)
+            _ (when-not dev? (fse/remove publishing-dir))
             ;; remove source map files
             _ (p/all (map (fn [file]
                             (fs/rmSync (node-path/join output-static-dir "js" (str file ".map")) #js {:force true}))
@@ -90,7 +96,7 @@
                 _ (fs/writeFileSync (node-path/join output-static-dir "css" "custom.css") custom-css)
                 custom-js (if (fs/existsSync custom-js-path) (str (fs/readFileSync custom-js-path)) "")
                 _ (fs/writeFileSync (node-path/join output-static-dir "js" "custom.js") custom-js)
-                _ (cleanup-js-dir output-static-dir)]
+                _ (cleanup-js-dir output-static-dir static-dir options)]
                (notification-fn {:type "success"
                                  :payload (str "Export public pages and publish assets to " output-dir " successfully 🎉")}))
         (p/catch (fn [error]

+ 3 - 0
deps/publishing/src/logseq/publishing/html.cljs

@@ -121,6 +121,9 @@ necessary db filtering"
         }
       }(window.location))"]
             ;; TODO: should make this configurable
+            [:script {:src "static/js/react.production.min.js"}]
+            [:script {:src "static/js/react-dom.production.min.js"}]
+            [:script {:src "static/js/ui.js"}]
             [:script {:src "static/js/main.js"}]
             [:script {:src "static/js/interact.min.js"}]
             [:script {:src "static/js/highlight.min.js"}]

+ 14 - 3
docs/dev-practices.md

@@ -307,10 +307,21 @@ point out:
   ```sh
   # One time setup
   $ cd scripts && yarn install && cd -
-  # Build the export
+
+  # Build a release publishing app
   $ bb dev:publishing /path/to/graph-dir tmp/publish
-  # View the app in a browser
-  $ open tmp/publish/index.html
+
+  # OR build a dev publishing app that watches frontend changes
+  $ bb dev:publishing /path/to/graph-dir tmp/publish --dev
+
+  # View the publishing app in a browser
+  $ python3 -m http.server 8080 -d tmp/publish &; open http://localhost:8080
+
+  # Rebuild the publishing backend for dev/release.
+  # Handy when making backend changes in deps/publishing or
+  # to test a different graph
+  $ bb dev:publishing-backend /path/graph-dir tmp/publish
+
   ```
 
 There are also some tasks under `nbb:` which are useful for inspecting database

+ 1 - 9
package.json

@@ -96,7 +96,7 @@
         "@excalidraw/excalidraw": "0.16.1",
         "@highlightjs/cdn-assets": "10.4.1",
         "@isomorphic-git/lightning-fs": "^4.6.0",
-        "@logseq/capacitor-file-sync": "5.0.1",
+        "@logseq/capacitor-file-sync": "5.0.2",
         "@logseq/diff-merge": "0.2.2",
         "@logseq/react-tweet-embed": "1.3.1-1",
         "@radix-ui/colors": "^0.1.8",
@@ -154,14 +154,6 @@
         "yargs-parser": "20.2.4"
     },
     "resolutions": {
-        "**/postcss": "8.4.17",
-        "**/postcss-colormin": "5.3.0",
-        "**/postcss-convert-values": "5.1.2",
-        "**/postcss-js": "4.0.0",
-        "**/postcss-merge-longhand": "5.1.6",
-        "**/postcss-merge-rules": "5.1.2",
-        "**/postcss-minify-params": "5.1.3",
-        "**/postcss-reduce-initial": "5.1.0",
         "pixi-graph-fork/@pixi/app": "6.2.0",
         "pixi-graph-fork/@pixi/constants": "6.2.0",
         "pixi-graph-fork/@pixi/core": "6.2.0",

+ 27 - 2
scripts/src/logseq/tasks/dev.clj

@@ -3,6 +3,7 @@
   namespaces"
   (:require [babashka.process :refer [shell]]
             [babashka.fs :as fs]
+            [logseq.tasks.util :as task-util]
             [clojure.java.io :as io]
             [clojure.pprint :as pp]
             [clojure.edn :as edn]))
@@ -37,8 +38,8 @@
                    (pp/pprint (edn/read-string (:out (shell {:out :string} "node ./static/gen-malli-kondo-config.js")))))]
       (spit config-edn config))))
 
-(defn build-publishing
-  "Builds release publishing asset when files have changed"
+(defn build-publishing-frontend
+  "Builds frontend release publishing asset when files have changed"
   [& _args]
   (if-let [_files (and (not (System/getenv "SKIP_ASSET"))
                        (seq (set (fs/modified-since (fs/file "static/js/publishing/main.js")
@@ -47,3 +48,27 @@
       (println "Building publishing js asset...")
       (shell "clojure -M:cljs release publishing"))
     (println "Publishing js asset is up to date")))
+
+(defn publishing-backend
+  "Builds publishing backend and copies over supporting frontend assets"
+  [& args]
+  (apply shell {:dir "scripts"}
+         "yarn -s nbb-logseq -cp src -m logseq.tasks.dev.publishing"
+         (into ["static"] args)))
+
+(defn watch-publishing-frontend
+  [& _args]
+  (shell "clojure -M:cljs watch publishing"))
+
+(defn watch-publishing-backend
+  "Builds publishing backend once watch-publishing-frontend has built initial frontend"
+  [& args]
+  (let [start-time (java.time.Instant/now)]
+    (Thread/sleep 3000)
+    (loop [n 1000]
+      (if (and (fs/exists? "static/js/publishing/main.js")
+               (task-util/file-modified-later-than? "static/js/publishing/main.js" start-time))
+        (apply publishing-backend args)
+        (do (println "Waiting for publishing frontend to build...")
+            (Thread/sleep 1000)
+            (recur (inc n)))))))

+ 2 - 2
scripts/src/logseq/tasks/dev/publishing.cljs

@@ -12,7 +12,7 @@
 
 (defn -main
   [& args]
-  (when-not (= 3 (count args))
+  (when (< (count args) 3)
     (println "Usage: $0 STATIC-DIR GRAPH-DIR OUT-DIR")
     (js/process.exit 1))
   (let [[static-dir graph-dir output-path]
@@ -23,4 +23,4 @@
                        static-dir
                        graph-dir
                        output-path
-                       {:repo-config repo-config :ui/theme "dark" :ui/radix-color :purple})))
+                       {:repo-config repo-config :ui/theme "dark" :ui/radix-color :purple :dev? (contains? (set args) "--dev")})))

+ 4 - 1
scripts/src/logseq/tasks/lang.clj

@@ -170,7 +170,10 @@
    :nl #{:plugins :type :left-side-bar/nav-recent-pages :plugin/update}
    :pl #{:port}
    :pt-BR #{:plugins :right-side-bar/flashcards :settings-page/enable-flashcards :page/backlinks
-            :host :settings-page/tab-editor :shortcut.category/plugins :whiteboard/link}
+            :host :settings-page/tab-editor :shortcut.category/plugins :whiteboard/link :settings-of-plugins :whiteboard
+            :whiteboards :on-boarding/quick-tour-journal-page-desc-2 :plugin/downloads :right-side-bar/history-global
+            :right-side-bar/whiteboards :search-item/whiteboard :settings-page/enable-whiteboards :settings-page/plugin-system
+            :shortcut.category/whiteboard :command.whiteboard/zoom-in :command.whiteboard/zoom-out}
    :pt-PT #{:plugins :settings-of-plugins :plugin/downloads :right-side-bar/flashcards
             :settings-page/enable-flashcards :settings-page/plugin-system}
    :nb-NO #{:port :type :whiteboard :right-side-bar/flashcards :right-side-bar/whiteboards

+ 7 - 1
shadow-cljs.edn

@@ -90,7 +90,13 @@
 
   :publishing {:target :browser
                :module-loader true
-               :js-options {:ignore-asset-requires true}
+               :js-options {;; handle `require(xxx.css)`
+                            :ignore-asset-requires true
+                            :resolve {"react" {:target :global
+                                               :global "React"}
+                                      "react-dom" {:target :global
+                                                   :global "ReactDOM"}}}
+
                :modules {:main
                          {:init-fn frontend.publishing/init}
                          :code-editor

+ 3 - 3
src/main/frontend/components/block.css

@@ -376,9 +376,9 @@
     border-radius: 2px;
   }
 
-  .bullet-container .selected {
-    border: 3px solid;
-  }
+  /* .bullet-container .selected { */
+  /*   border: 3px solid; */
+  /* } */
 }
 
 .ls-block,

+ 17 - 1
src/main/frontend/mobile/mobile_bar.cljs

@@ -13,11 +13,21 @@
             [goog.dom :as gdom]
             [rum.core :as rum]))
 
+
+(defn- blur-if-compositing
+  "Call blur on the textarea if it is in composition mode, let the IME commit the composing text"
+  []
+  (when-let [edit-input-id (and (state/editor-in-composition?)
+                                (state/get-edit-input-id))]
+    (let [textarea-el (gdom/getElement edit-input-id)]
+      (.blur textarea-el))))
+
 (rum/defc indent-outdent [indent? icon]
   [:div
    [:button.bottom-action
     {:on-mouse-down (fn [e]
                       (util/stop e)
+                      (blur-if-compositing)
                       (editor-handler/indent-outdent indent?))}
     (ui/icon icon {:size ui/icon-size})]])
 
@@ -91,7 +101,13 @@
         (command #(if (state/sub :document/mode?)
                     (editor-handler/insert-new-block! nil)
                     (commands/simple-insert! parent-id "\n" {})) {:icon "arrow-back"})
-        (command editor-handler/cycle-todo! {:icon "checkbox"} true)
+        ;; On mobile devies, some IME(keyboard) uses composing mode.
+        ;; The composing text can be committed by losing focus.
+        ;; 100ms is enough to commit the composing text to db.
+        (command #(do
+                    (blur-if-compositing)
+                    (editor-handler/cycle-todo!))
+                 {:icon "checkbox"} true)
         (command #(mobile-camera/embed-photo parent-id) {:icon "camera"} true)
         (command history/undo! {:icon "rotate" :class "rotate-180"} true)
         (command history/redo! {:icon "rotate-clockwise" :class "rotate-180"} true)

+ 19 - 2
src/main/frontend/search/db.cljs

@@ -20,8 +20,10 @@
   (some-> content
           (util/search-normalize (state/enable-search-remove-accents?))))
 
-(defn block->index
-  "Convert a block to the index for searching"
+(defn- strict-block->index
+  "Convert a block to the index for searching.
+
+   Applies full text preprocessing to the content, including removing built-in properties"
   [{:block/keys [uuid page content format] :as block
     :or {format :markdown}}]
   (when-not (> (count content) (max-len))
@@ -32,6 +34,21 @@
          :page page
          :content (sanitize content)}))))
 
+(defn- loose-block->index
+  "Convert a block to the index for searching
+
+   For speed, applies no preprocessing to the content"
+  [{:block/keys [uuid page content] :as block}]
+  (when-not (string/blank? content)
+    {:id (:db/id block)
+     :uuid (str uuid)
+     :page page
+     :content content}))
+
+(defonce block->index (if (util/electron?)
+                        strict-block->index
+                        loose-block->index))
+
 (defn page->index
   "Convert a page name to the index for searching (page content level)
    Generate index based on the DB content AT THE POINT OF TIME"

+ 356 - 172
src/resources/dicts/pt-br.edn

@@ -63,50 +63,50 @@
  :on-boarding/section-computer "computador"
  :on-boarding/section-journals "Notas diárias"
  :on-boarding/section-pages "PÁGINAS"
-:on-boarding/section-phone "telefone"
-:on-boarding/section-app "Aplicativo interno"
-:on-boarding/section-config "Arquivo de configuração"
-:query/config-property-settings "Configurações de propriedades para esta consulta:"
-:bug-report/main-title "Relatório de bug"
-:bug-report/clipboard-inspector-title "Inspetor de dados da área de transferência"
-:bug-report/main-desc "Você pode nos ajudar enviando um relatório de bug? Vamos resolver isso o mais rápido possível."
-:bug-report/section-clipboard-title "O bug que você encontrou está relacionado a esses recursos?"
-:bug-report/section-clipboard-desc "Você pode usar essas ferramentas úteis para nos fornecer informações adicionais."
-:bug-report/section-clipboard-btn-title "Auxiliar da área de transferência"
-:bug-report/section-clipboard-btn-desc "Inspetar e coletar dados da área de transferência"
-:bug-report/section-issues-title "Ou..."
-:bug-report/section-issues-desc "Se não houver ferramentas disponíveis para coletar informações adicionais, relate o bug diretamente."
-:bug-report/section-issues-btn-title "Enviar um relatório de bug"
-:bug-report/section-issues-btn-desc "Ajude a melhorar o Logseq!"
-:bug-report/inspector-page-desc-1 "Pressione Ctrl+V / ⌘+V para inspecionar os dados da área de transferência"
-:bug-report/inspector-page-desc-2 "ou clique aqui para colar se estiver usando a versão mobile"
-:bug-report/inspector-page-placeholder "Pressione e segure aqui para colar se estiver no mobile"
-:bug-report/inspector-page-tip "Algum problema? Sem problemas, clique para voltar para o passo anterior."
-:bug-report/inspector-page-btn-back "Voltar"
-:bug-report/inspector-page-btn-copy "Copiar o resultado"
-:bug-report/inspector-page-copy-notif "Copiado para a área de transferência!"
-:bug-report/inspector-page-btn-create-issue "Criar uma issue"
-:bug-report/inspector-page-desc-clipboard "Aqui estão os dados lidos da área de transferência."
-:bug-report/inspector-page-desc-copy "Se for seguro compartilhar, clique no botão de cópia."
-:bug-report/inspector-page-desc-create-issue "Agora você pode relatar o resultado colado na sua área de transferência. Cole o resultado na seção 'Contexto Adicional' e indique de onde você copiou o conteúdo original. Obrigado!"
-:help/title-usage "Uso"
-:help/title-community "Comunidade"
-:help/title-development "Desenvolvimento"
-:help/title-about "Sobre"
-:help/title-terms "Termos"
-:help/start "Começando"
-:help/about "Sobre o Logseq"
-:help/roadmap "Roteiro"
-:help/bug "Relatório de bug"
-:help/feature "Solicitação de recurso"
-:help/changelog "Registro de alterações"
-:help/blog "Blog do Logseq"
-:help/docs "Documentação"
-:help/privacy "Política de privacidade"
-:help/terms "Termos"
-:help/forum-community "Comunidade do Fórum"
-:help/awesome-logseq "Incrível Logseq"
-:help/shortcuts "Atalhos de teclado"
+ :on-boarding/section-phone "telefone"
+ :on-boarding/section-app "Aplicativo interno"
+ :on-boarding/section-config "Arquivo de configuração"
+ :query/config-property-settings "Configurações de propriedades para esta consulta:"
+ :bug-report/main-title "Relatório de bug"
+ :bug-report/clipboard-inspector-title "Inspetor de dados da área de transferência"
+ :bug-report/main-desc "Você pode nos ajudar enviando um relatório de bug? Vamos resolver isso o mais rápido possível."
+ :bug-report/section-clipboard-title "O bug que você encontrou está relacionado a esses recursos?"
+ :bug-report/section-clipboard-desc "Você pode usar essas ferramentas úteis para nos fornecer informações adicionais."
+ :bug-report/section-clipboard-btn-title "Auxiliar da área de transferência"
+ :bug-report/section-clipboard-btn-desc "Inspetar e coletar dados da área de transferência"
+ :bug-report/section-issues-title "Ou..."
+ :bug-report/section-issues-desc "Se não houver ferramentas disponíveis para coletar informações adicionais, relate o bug diretamente."
+ :bug-report/section-issues-btn-title "Enviar um relatório de bug"
+ :bug-report/section-issues-btn-desc "Ajude a melhorar o Logseq!"
+ :bug-report/inspector-page-desc-1 "Pressione Ctrl+V / ⌘+V para inspecionar os dados da área de transferência"
+ :bug-report/inspector-page-desc-2 "ou clique aqui para colar se estiver usando a versão mobile"
+ :bug-report/inspector-page-placeholder "Pressione e segure aqui para colar se estiver no mobile"
+ :bug-report/inspector-page-tip "Algum problema? Sem problemas, clique para voltar para o passo anterior."
+ :bug-report/inspector-page-btn-back "Voltar"
+ :bug-report/inspector-page-btn-copy "Copiar o resultado"
+ :bug-report/inspector-page-copy-notif "Copiado para a área de transferência!"
+ :bug-report/inspector-page-btn-create-issue "Criar uma issue"
+ :bug-report/inspector-page-desc-clipboard "Aqui estão os dados lidos da área de transferência."
+ :bug-report/inspector-page-desc-copy "Se for seguro compartilhar, clique no botão de cópia."
+ :bug-report/inspector-page-desc-create-issue "Agora você pode relatar o resultado colado na sua área de transferência. Cole o resultado na seção 'Contexto Adicional' e indique de onde você copiou o conteúdo original. Obrigado!"
+ :help/title-usage "Uso"
+ :help/title-community "Comunidade"
+ :help/title-development "Desenvolvimento"
+ :help/title-about "Sobre"
+ :help/title-terms "Termos"
+ :help/start "Começando"
+ :help/about "Sobre o Logseq"
+ :help/roadmap "Roteiro"
+ :help/bug "Relatório de bug"
+ :help/feature "Solicitação de recurso"
+ :help/changelog "Registro de alterações"
+ :help/blog "Blog do Logseq"
+ :help/docs "Documentação"
+ :help/privacy "Política de privacidade"
+ :help/terms "Termos"
+ :help/forum-community "Comunidade do Fórum"
+ :help/awesome-logseq "Incrível Logseq"
+ :help/shortcuts "Atalhos de teclado"
  :help/shortcuts-triggers "Gatilhos"
  :help/shortcut "Atalho"
  :help/slash-autocomplete "Barra de preenchimento automático"
@@ -404,121 +404,121 @@
  :whiteboard/arrow-head "Cabeça da seta"
  :whiteboard/bold "Negrito"
  :whiteboard/italic "Itálico"
-:whiteboard/undo "Desfazer"
-:whiteboard/redo "Refazer"
-:whiteboard/zoom-in "Aumentar zoom"
-:whiteboard/zoom-out "Diminuir zoom"
-:whiteboard/select "Selecionar"
-:whiteboard/pan "Arrastar"
-:whiteboard/add-block-or-page "Adicionar bloco ou página"
-:whiteboard/draw "Desenhar"
-:whiteboard/highlight "Destacar"
-:whiteboard/eraser "Borracha"
-:whiteboard/connector "Conector"
-:whiteboard/text "Texto"
-:whiteboard/color "Cor"
-:whiteboard/select-custom-color "Selecionar cor personalizada"
-:whiteboard/opacity "Opacidade"
-:whiteboard/extra-small "Extra Pequeno"
-:whiteboard/small "Pequeno"
-:whiteboard/medium "Médio"
-:whiteboard/large "Grande"
-:whiteboard/extra-large "Extra Grande"
-:whiteboard/huge "Enorme"
-:whiteboard/scale-level "Nível de escala"
-:whiteboard/rectangle "Retângulo"
-:whiteboard/circle "Círculo"
-:whiteboard/triangle "Triângulo"
-:whiteboard/shape "Forma"
-:whiteboard/open-page "Abrir página"
-:whiteboard/open-page-in-sidebar "Abrir página na barra lateral"
-:whiteboard/remove-link "Remover link"
-:whiteboard/link "Link"
-:whiteboard/references "Referências"
-:whiteboard/link-to-any-page-or-block "Link para qualquer página ou bloco"
-:whiteboard/start-typing-to-search "Comece a digitar para pesquisar..."
-:whiteboard/new-block-no-colon "Novo bloco"
-:whiteboard/new-block "Novo bloco:"
-:whiteboard/new-page "Nova página:"
-:whiteboard/new-whiteboard "Novo whiteboard"
-:whiteboard/search-only-blocks "Pesquisar apenas blocos"
-:whiteboard/search-only-pages "Pesquisar apenas páginas"
-:whiteboard/cache-outdated "O cache está desatualizado. Clique no botão 'Re-indexar' no menu suspenso do grafo."
-:whiteboard/shape-quick-links "Links Rápidos de Forma"
-:whiteboard/edit-pdf "Editar PDF"
-:whiteboard/dashboard-card-new-whiteboard "Novo whiteboard"
-:whiteboard/dashboard-card-created "Criado "
-:whiteboard/dashboard-card-edited "Editado "
-:whiteboard/toggle-grid "Alternar grade"
-:whiteboard/snap-to-grid "Encaixar na grade"
-:whiteboard/toggle-pen-mode "Alternar modo de caneta"
-:flashcards/modal-welcome-title "Hora de criar um cartão!"
-:flashcards/modal-welcome-desc-1 "Você pode adicionar \"#card\" a qualquer bloco para transformá-lo em um cartão ou acionar \"/cloze\" para adicionar algumas partes ocultas."
-:flashcards/modal-welcome-desc-2 "Você pode "
-:flashcards/modal-welcome-desc-3 "clique neste link"
-:flashcards/modal-welcome-desc-4 " para verificar a documentação."
-:flashcards/modal-btn-show-answers "Mostrar respostas"
-:flashcards/modal-btn-hide-answers "Esconder respostas"
-:flashcards/modal-btn-show-clozes "Mostrar partes ocultas"
-:flashcards/modal-btn-next-card "Próximo"
-:flashcards/modal-btn-reset "Redefinir"
-  :flashcards/modal-btn-reset-tip "Redefina este cartão para que você possa revisá-lo imediatamente."
-  :flashcards/modal-btn-forgotten "Esquecido"
-  :flashcards/modal-btn-remembered "Lembrado"
-  :flashcards/modal-btn-recall "Levou um tempo para lembrar"
-  :flashcards/modal-finished "Parabéns, você revisou todos os cartões para esta consulta, nos vemos na próxima vez! 💯"
-  :flashcards/modal-select-all "Todos"
-  :flashcards/modal-select-switch "Alternar para"
-  :flashcards/modal-current-total "Atual/Total"
-  :flashcards/modal-overdue-total "Atrasado/Total"
-  :flashcards/modal-toggle-preview-mode "Alternar modo de pré-visualização"
-  :flashcards/modal-toggle-random-mode "Alternar modo aleatório"
+ :whiteboard/undo "Desfazer"
+ :whiteboard/redo "Refazer"
+ :whiteboard/zoom-in "Aumentar zoom"
+ :whiteboard/zoom-out "Diminuir zoom"
+ :whiteboard/select "Selecionar"
+ :whiteboard/pan "Arrastar"
+ :whiteboard/add-block-or-page "Adicionar bloco ou página"
+ :whiteboard/draw "Desenhar"
+ :whiteboard/highlight "Destacar"
+ :whiteboard/eraser "Borracha"
+ :whiteboard/connector "Conector"
+ :whiteboard/text "Texto"
+ :whiteboard/color "Cor"
+ :whiteboard/select-custom-color "Selecionar cor personalizada"
+ :whiteboard/opacity "Opacidade"
+ :whiteboard/extra-small "Extra Pequeno"
+ :whiteboard/small "Pequeno"
+ :whiteboard/medium "Médio"
+ :whiteboard/large "Grande"
+ :whiteboard/extra-large "Extra Grande"
+ :whiteboard/huge "Enorme"
+ :whiteboard/scale-level "Nível de escala"
+ :whiteboard/rectangle "Retângulo"
+ :whiteboard/circle "Círculo"
+ :whiteboard/triangle "Triângulo"
+ :whiteboard/shape "Forma"
+ :whiteboard/open-page "Abrir página"
+ :whiteboard/open-page-in-sidebar "Abrir página na barra lateral"
+ :whiteboard/remove-link "Remover link"
+ :whiteboard/link "Link"
+ :whiteboard/references "Referências"
+ :whiteboard/link-to-any-page-or-block "Link para qualquer página ou bloco"
+ :whiteboard/start-typing-to-search "Comece a digitar para pesquisar..."
+ :whiteboard/new-block-no-colon "Novo bloco"
+ :whiteboard/new-block "Novo bloco:"
+ :whiteboard/new-page "Nova página:"
+ :whiteboard/new-whiteboard "Novo whiteboard"
+ :whiteboard/search-only-blocks "Pesquisar apenas blocos"
+ :whiteboard/search-only-pages "Pesquisar apenas páginas"
+ :whiteboard/cache-outdated "O cache está desatualizado. Clique no botão 'Re-indexar' no menu suspenso do grafo."
+ :whiteboard/shape-quick-links "Links Rápidos de Forma"
+ :whiteboard/edit-pdf "Editar PDF"
+ :whiteboard/dashboard-card-new-whiteboard "Novo whiteboard"
+ :whiteboard/dashboard-card-created "Criado "
+ :whiteboard/dashboard-card-edited "Editado "
+ :whiteboard/toggle-grid "Alternar grade"
+ :whiteboard/snap-to-grid "Encaixar na grade"
+ :whiteboard/toggle-pen-mode "Alternar modo de caneta"
+ :flashcards/modal-welcome-title "Hora de criar um cartão!"
+ :flashcards/modal-welcome-desc-1 "Você pode adicionar \"#card\" a qualquer bloco para transformá-lo em um cartão ou acionar \"/cloze\" para adicionar algumas partes ocultas."
+ :flashcards/modal-welcome-desc-2 "Você pode "
+ :flashcards/modal-welcome-desc-3 "clique neste link"
+ :flashcards/modal-welcome-desc-4 " para verificar a documentação."
+ :flashcards/modal-btn-show-answers "Mostrar respostas"
+ :flashcards/modal-btn-hide-answers "Esconder respostas"
+ :flashcards/modal-btn-show-clozes "Mostrar partes ocultas"
+ :flashcards/modal-btn-next-card "Próximo"
+ :flashcards/modal-btn-reset "Redefinir"
+ :flashcards/modal-btn-reset-tip "Redefina este cartão para que você possa revisá-lo imediatamente."
+ :flashcards/modal-btn-forgotten "Esquecido"
+ :flashcards/modal-btn-remembered "Lembrado"
+ :flashcards/modal-btn-recall "Levou um tempo para lembrar"
+ :flashcards/modal-finished "Parabéns, você revisou todos os cartões para esta consulta, nos vemos na próxima vez! 💯"
+ :flashcards/modal-select-all "Todos"
+ :flashcards/modal-select-switch "Alternar para"
+ :flashcards/modal-current-total "Atual/Total"
+ :flashcards/modal-overdue-total "Atrasado/Total"
+ :flashcards/modal-toggle-preview-mode "Alternar modo de pré-visualização"
+ :flashcards/modal-toggle-random-mode "Alternar modo aleatório"
 
-  :home "Início"
-  :new-page "Nova página:"
-  :new-graph "Adicionar novo grafo"
-  :graph "Grafo"
-  :graph/persist "O Logseq está sincronizando o status interno, aguarde alguns segundos."
-  :graph/persist-error "Falha na sincronização do status interno."
-  :graph/save "Salvando..."
-  :graph/save-success "Salvo com sucesso"
-  :graph/save-error "Falha ao salvar"
-  :graph/all-graphs "Todos os grafos"
-  :graph/local-graphs "Grafos locais:"
-  :graph/remote-graphs "Grafos remotos:"
-  :export "Exportar"
-  :export-graph "Exportar grafo"
-  :export-page "Exportar página"
-  :export-markdown "Exportar como Markdown padrão (sem propriedades de bloco)"
-  :export-opml "Exportar como OPML"
-  :export-public-pages "Exportar páginas públicas"
-  :export-json "Exportar como JSON"
-  :export-roam-json "Exportar como Roam JSON"
-  :export-edn "Exportar como EDN"
-  :export-transparent-background "Fundo transparente"
-  :export-copy-to-clipboard "Copiar para a área de transferência"
-  :export-copied-to-clipboard "Copiado para a área de transferência!"
-  :export-save-to-file "Salvar em arquivo"
-  :all-graphs "Todos os grafos"
-  :all-pages "Todas as páginas"
-  :all-whiteboards "Todos os whiteboards"
-  :all-files "Todos os arquivos"
-  :remove-orphaned-pages "Remover páginas órfãs?"
-  :all-journals "Todos os diários"
-  :settings "Configurações"
-  :plugins "Plugins"
-  :themes "Temas"
-  :relaunch-confirm-to-work "Necessita reiniciar o aplicativo para funcionar. Deseja reiniciá-lo agora?"
-  :import "Importar"
-  :importing "Importando"
-  :join-community "Junte-se à comunidade"
-  :discourse-title "Nosso fórum!"
-  :help-shortcut-title "Clique para verificar os atalhos e outras dicas"
-  :loading "Carregando..."
-  :parsing-files "Analisando arquivos"
-  :loading-files "Carregando arquivos"
-  :login "Entrar"
-  :logout "Sair"
+ :home "Início"
+ :new-page "Nova página:"
+ :new-graph "Adicionar novo grafo"
+ :graph "Grafo"
+ :graph/persist "O Logseq está sincronizando o status interno, aguarde alguns segundos."
+ :graph/persist-error "Falha na sincronização do status interno."
+ :graph/save "Salvando..."
+ :graph/save-success "Salvo com sucesso"
+ :graph/save-error "Falha ao salvar"
+ :graph/all-graphs "Todos os grafos"
+ :graph/local-graphs "Grafos locais:"
+ :graph/remote-graphs "Grafos remotos:"
+ :export "Exportar"
+ :export-graph "Exportar grafo"
+ :export-page "Exportar página"
+ :export-markdown "Exportar como Markdown padrão (sem propriedades de bloco)"
+ :export-opml "Exportar como OPML"
+ :export-public-pages "Exportar páginas públicas"
+ :export-json "Exportar como JSON"
+ :export-roam-json "Exportar como Roam JSON"
+ :export-edn "Exportar como EDN"
+ :export-transparent-background "Fundo transparente"
+ :export-copy-to-clipboard "Copiar para a área de transferência"
+ :export-copied-to-clipboard "Copiado para a área de transferência!"
+ :export-save-to-file "Salvar em arquivo"
+ :all-graphs "Todos os grafos"
+ :all-pages "Todas as páginas"
+ :all-whiteboards "Todos os whiteboards"
+ :all-files "Todos os arquivos"
+ :remove-orphaned-pages "Remover páginas órfãs?"
+ :all-journals "Todos os diários"
+ :settings "Configurações"
+ :plugins "Plugins"
+ :themes "Temas"
+ :relaunch-confirm-to-work "Necessita reiniciar o aplicativo para funcionar. Deseja reiniciá-lo agora?"
+ :import "Importar"
+ :importing "Importando"
+ :join-community "Junte-se à comunidade"
+ :discourse-title "Nosso fórum!"
+ :help-shortcut-title "Clique para verificar os atalhos e outras dicas"
+ :loading "Carregando..."
+ :parsing-files "Analisando arquivos"
+ :loading-files "Carregando arquivos"
+ :login "Entrar"
+ :logout "Sair"
  :logout-user "Sair ({1})"
  :download "Baixar"
  :language "Idioma"
@@ -531,7 +531,7 @@
 
  :help/shortcut-page-title "Atalhos de teclado"
 
-  :plugin/installed "Instalado"
+ :plugin/installed "Instalado"
  :plugin/installed-plugin "Plugin instalado: {1}"
  :plugin/not-installed "Não instalado"
  :plugin/installing "Instalando"
@@ -565,22 +565,22 @@
  :plugin/unpacked-tips "Selecione o diretório do plugin"
  :plugin/contribute "✨ Escreva e envie um novo plugin"
  :plugin/up-to-date "Está atualizado {1}"
-:plugin/custom-js-alert "Encontrado o arquivo custom.js, permitir a execução? (Se você não entende o conteúdo deste arquivo, é recomendável não permitir a execução, pois isso tem certos riscos de segurança.)"
-:plugin/security-warning "Os plugins podem acessar o seu grafo e os seus arquivos locais, fazer requisições de rede.
+ :plugin/custom-js-alert "Encontrado o arquivo custom.js, permitir a execução? (Se você não entende o conteúdo deste arquivo, é recomendável não permitir a execução, pois isso tem certos riscos de segurança.)"
+ :plugin/security-warning "Os plugins podem acessar o seu grafo e os seus arquivos locais, fazer requisições de rede.
      Eles também podem causar corrupção ou perda de dados. Estamos trabalhando em regras de acesso adequadas para os seus grafos.
      Enquanto isso, certifique-se de fazer backups regulares dos seus grafos e só instale os plugins quando puder ler e
      entender o código-fonte."
-:plugin/search-plugin "Pesquisar plugins"
-:plugin/open-preferences "Abrir Preferências"
-:plugin/open-logseq-dir "Abrir"
-:plugin/remote-error "Erro remoto: "
-:plugin/checking-for-updates "Verificando atualizações de plugins ..."
-:plugin/list-of-updates "Atualizações de plugins: "
-:plugin/auto-check-for-updates "Verificação automática de atualizações"
-:plugin.install-from-file/menu-title "Instalar a partir de plugins.edn"
-:plugin.install-from-file/title "Instalar plugins a partir de plugins.edn"
-:plugin.install-from-file/notice "Os seguintes plugins substituirão os seus plugins:"
-:plugin.install-from-file/success "Todos os plugins foram instalados!"
+ :plugin/search-plugin "Pesquisar plugins"
+ :plugin/open-preferences "Abrir Preferências"
+ :plugin/open-logseq-dir "Abrir"
+ :plugin/remote-error "Erro remoto: "
+ :plugin/checking-for-updates "Verificando atualizações de plugins ..."
+ :plugin/list-of-updates "Atualizações de plugins: "
+ :plugin/auto-check-for-updates "Verificação automática de atualizações"
+ :plugin.install-from-file/menu-title "Instalar a partir de plugins.edn"
+ :plugin.install-from-file/title "Instalar plugins a partir de plugins.edn"
+ :plugin.install-from-file/notice "Os seguintes plugins substituirão os seus plugins:"
+ :plugin.install-from-file/success "Todos os plugins foram instalados!"
 
  :pdf/copy-ref "Copiar referência"
  :pdf/copy-text "Copiar texto"
@@ -647,6 +647,190 @@
  :header/go-back                     "Voltar"
  :header/go-forward                  "Avançar"
 
+ :command.auto-complete/complete "Auto-completar: Escolher item selecionado"
+ :command.auto-complete/next "Auto-completar: Selecionar próximo item"
+ :command.auto-complete/open-link "Auto-completar: Abrir item selecionado no navegador"
+ :command.auto-complete/prev "Auto-completar: Selecionar item anterior"
+ :command.auto-complete/shift-complete "Auto-completar: Abrir item selecionado na barra lateral"
+ :command.cards/forgotten "Cartões: esquecidos"
+ :command.cards/next-card "Cartões: próximo cartão"
+ :command.cards/recall "Cartões: lembrar em algum tempo"
+ :command.cards/remembered "Cartões: lembrados"
+ :command.cards/toggle-answers "Cartões: mostrar/ocultar respostas/ocultados"
+ :command.command/run "Executar comando git"
+ :command.command/toggle-favorite "Adicionar/remover dos favoritos"
+ :command.command-palette/toggle "Pesquisar comandos"
+ :command.date-picker/complete "Seletor de data: Escolher dia selecionado"
+ :command.date-picker/next-day "Seletor de data: Selecionar próximo dia"
+ :command.date-picker/next-week "Seletor de data: Selecionar próxima semana"
+ :command.date-picker/prev-day "Seletor de data: Selecionar dia anterior"
+ :command.date-picker/prev-week "Seletor de data: Selecionar semana anterior"
+ :command.dev/show-block-ast "(Dev) Mostrar AST do bloco"
+ :command.dev/show-block-data "(Dev) Mostrar dados do bloco"
+ :command.dev/show-page-ast "(Dev) Mostrar AST da página"
+ :command.dev/show-page-data "(Dev) Mostrar dados da página"
+ :command.editor/backspace "Backspace / Apagar"
+ :command.editor/backward-kill-word "Excluir uma palavra com backspace"
+ :command.editor/backward-word "Mover cursor para trás da palavra"
+ :command.editor/beginning-of-block "Mover cursor para o início de um bloco"
+ :command.editor/bold "Negrito"
+ :command.editor/clear-block "Excluir conteúdo inteiro do bloco"
+ :command.editor/collapse-block-children "Contrair"
+ :command.editor/copy "Copiar (copia seleção ou referência de bloco)"
+ :command.editor/copy-current-file "Copiar arquivo atual"
+ :command.editor/copy-embed "Copiar incorporação de bloco apontando para o bloco atual"
+ :command.editor/copy-page-url "Copiar URL da página"
+ :command.editor/copy-text "Copiar seleções como texto"
+ :command.editor/cut "Cortar"
+ :command.editor/cycle-todo "Rotacionar o estado TODO do item atual"
+ :command.editor/delete "Delete / Tecla Excluir"
+ :command.editor/delete-selection "Excluir blocos selecionados"
+ :command.editor/down "Mover cursor para baixo / Selecionar para baixo"
+ :command.editor/end-of-block "Mover cursor para o final de um bloco"
+ :command.editor/escape-editing "Sair da edição"
+ :command.editor/expand-block-children "Expandir"
+ :command.editor/follow-link "Seguir link sob o cursor"
+ :command.editor/forward-kill-word "Excluir uma palavra com tecla delete"
+ :command.editor/forward-word "Mover cursor para frente da palavra"
+ :command.editor/highlight "Destacar"
+ :command.editor/indent "Indentar bloco"
+ :command.editor/insert-link "Link de HTML"
+ :command.editor/insert-youtube-timestamp "Inserir timestamp do YouTube"
+ :command.editor/italics "Itálico"
+ :command.editor/kill-line-after "Excluir linha após a posição do cursor"
+ :command.editor/kill-line-before "Excluir linha antes da posição do cursor"
+ :command.editor/left "Mover cursor para a esquerda / Abrir bloco selecionado no início"
+ :command.editor/move-block-down "Mover bloco para baixo"
+ :command.editor/move-block-up "Mover bloco para cima"
+ :command.editor/new-block "Criar novo bloco"
+ :command.editor/new-line "Nova linha no bloco atual"
+ :command.editor/new-whiteboard "Novo whiteboard"
+ :command.editor/open-edit "Editar bloco selecionado"
+ :command.editor/open-file-in-default-app "Abrir arquivo no aplicativo padrão"
+ :command.editor/open-file-in-directory "Abrir arquivo no diretório pai"
+ :command.editor/open-link-in-sidebar "Abrir link na barra lateral"
+ :command.editor/outdent "Diminuir recuo do bloco"
+ :command.editor/paste-text-in-one-block-at-point "Colar texto em um bloco no lugar"
+ :command.editor/redo "Refazer"
+ :command.editor/replace-block-reference-at-point "Substituir referência de bloco pelo seu conteúdo no lugar"
+ :command.editor/right "Mover cursor para a direita / Abrir bloco selecionado no final"
+ :command.editor/select-all-blocks "Selecionar todos os blocos"
+ :command.editor/select-block-down "Selecionar bloco abaixo"
+ :command.editor/select-block-up "Selecionar bloco acima"
+ :command.editor/select-down "Selecionar conteúdo abaixo"
+ :command.editor/select-parent "Selecionar bloco pai"
+ :command.editor/select-up "Selecionar conteúdo acima"
+ :command.editor/strike-through "Riscar"
+ :command.editor/toggle-number-list "Alternar lista numerada"
+ :command.editor/toggle-open-blocks "Alternar blocos abertos (contrair ou expandir todos os blocos)"
+ :command.editor/toggle-undo-redo-mode "Alternar modo desfazer/refazer (global ou apenas nesta página)"
+ :command.editor/undo "Desfazer"
+ :command.editor/up "Mover cursor para cima / Selecionar para cima"
+ :command.editor/zoom-in "Dar zoom no bloco em edição / Avançar caso contrário"
+ :command.editor/zoom-out "Dar zoom out no bloco em edição / Retroceder caso contrário"
+ :command.git/commit "Criar commit git com mensagem"
+ :command.go/all-graphs "Ir para todos os grafos"
+ :command.go/all-pages "Ir para todas as páginas"
+ :command.go/backward "Retroceder"
+ :command.go/electron-find-in-page "Encontrar texto na página"
+ :command.go/electron-jump-to-the-next "Pular para a próxima correspondência na sua busca na barra de pesquisa"
+ :command.go/electron-jump-to-the-previous "Pular para a correspondência anterior na sua busca na barra de pesquisa"
+ :command.go/flashcards "Alternar cartões de memorização"
+ :command.go/forward "Avançar"
+ :command.go/graph-view "Ir para visualização de grafo"
+ :command.go/home "Ir para a página inicial"
+ :command.go/journals "Ir para diários"
+ :command.go/keyboard-shortcuts "Ir para atalhos de teclado"
+ :command.go/next-journal "Ir para o próximo diário"
+ :command.go/prev-journal "Ir para o diário anterior"
+ :command.go/search "Pesquisar páginas e blocos"
+ :command.go/search-in-page "Pesquisar blocos na página"
+ :command.go/tomorrow "Ir para amanhã"
+ :command.go/whiteboards "Ir para whiteboards"
+ :command.graph/add "Adicionar um grafo"
+ :command.graph/export-as-html "Exportar páginas de grafos públicos como HTML"
+ :command.graph/open "Selecionar grafo para abrir"
+ :command.graph/re-index "Reindexar grafo atual"
+ :command.graph/remove "Remover um grafo"
+ :command.graph/save "Salvar grafo atual no disco"
+ :command.misc/copy "Copiar"
+ :command.pdf/close "PDF: Fechar documento PDF atual"
+ :command.pdf/find "PDF: Pesquisar texto do documento PDF atual"
+ :command.pdf/next-page "PDF: Próxima página do documento PDF atual"
+ :command.pdf/previous-page "PDF: Página anterior do documento PDF atual"
+ :command.search/re-index "Reconstruir índice de pesquisa"
+ :command.sidebar/clear "Limpar todos na barra lateral direita"
+ :command.sidebar/close-top "Fechar o item superior na barra lateral direita"
+ :command.sidebar/open-today-page "Abrir a página de hoje na barra lateral direita"
+ :command.ui/clear-all-notifications "Limpar todas as notificações"
+ :command.ui/cycle-color "Mudar cor"
+ :command.ui/cycle-color-off "Desativar mudança de cor"
+ :command.ui/goto-plugins "Ir para o painel de plugins"
+ :command.ui/install-plugins-from-file "Instalar plugins do arquivo plugins.edn"
+ :command.ui/select-theme-color "Selecionar cores de tema disponíveis"
+ :command.ui/toggle-brackets "Alternar se deve exibir colchetes"
+ :command.ui/toggle-contents "Alternar conteúdo na barra lateral"
+ :command.ui/toggle-document-mode "Alternar modo de documento"
+ :command.ui/toggle-help "Alternar ajuda"
+ :command.ui/toggle-left-sidebar "Alternar barra lateral esquerda"
+ :command.ui/toggle-right-sidebar "Alternar barra lateral direita"
+ :command.ui/toggle-settings "Alternar configurações"
+ :command.ui/toggle-theme "Alternar entre tema escuro/claro"
+ :command.ui/toggle-wide-mode "Alternar modo amplo"
+ :command.whiteboard/bring-forward "Mover para frente"
+ :command.whiteboard/bring-to-front "Mover para a frente"
+ :command.whiteboard/clone-down "Clonar para baixo"
+ :command.whiteboard/clone-left "Clonar para a esquerda"
+ :command.whiteboard/clone-right "Clonar para a direita"
+ :command.whiteboard/clone-up "Clonar para cima"
+ :command.whiteboard/connector "Ferramenta de conexão"
+ :command.whiteboard/ellipse "Ferramenta de elipse"
+ :command.whiteboard/eraser "Ferramenta de borracha"
+ :command.whiteboard/group "Seleção de grupo"
+ :command.whiteboard/highlighter "Ferramenta de marca-texto"
+ :command.whiteboard/lock "Travar seleção"
+ :command.whiteboard/pan "Ferramenta de movimentação"
+ :command.whiteboard/pencil "Ferramenta de lápis"
+ :command.whiteboard/portal "Ferramenta de portal"
+ :command.whiteboard/rectangle "Ferramenta de retângulo"
+ :command.whiteboard/reset-zoom "Redefinir zoom"
+ :command.whiteboard/select "Ferramenta de seleção"
+ :command.whiteboard/send-backward "Mover para trás"
+ :command.whiteboard/send-to-back "Mover para trás"
+ :command.whiteboard/text "Ferramenta de texto"
+ :command.whiteboard/toggle-grid "Alternar grade do canvas"
+ :command.whiteboard/ungroup "Desagrupar seleção"
+ :command.whiteboard/unlock "Destravar seleção"
+ :command.whiteboard/zoom-to-fit "Zoom para desenho"
+ :command.whiteboard/zoom-to-selection "Zoom para ajustar à seleção"
+ :command.window/close "Fechar janela"
+ :help/search "Pesquisar páginas/blocos/comandos"
+ :linked-references/filter-directions "Clique para incluir e shift-clique para excluir. Clique novamente para remover."
+ :linked-references/filter-excludes "Excluir: "
+ :linked-references/filter-heading "Filtrar"
+ :linked-references/filter-includes "Incluir: "
+ :linked-references/reference-count (fn [filtered-count total] (str (when filtered-count (str filtered-count " de ")) total (if (= total 1) " Referência Vinculada" " Referências Vinculadas")))
+ :linked-references/unexpected-error "Referências Vinculadas: Erro inesperado. Reindexe seu grafo primeiro."
+ :settings-page/git-commit-on-close "Commitar mudanças no Git ao fechar a janela"
+ :unlinked-references/reference-count (fn [total] (str total (if (= total 1) " Referência Não-Vinculada" " Referências Não-Vinculadas")))
+ :whiteboard/reference-count (fn [refs-count] (if (= refs-count 1) "Referência" "Referências"))
+
+ ;; Allowed duplicates - start
+ :settings-of-plugins "Plugins"
+ :whiteboard "Whiteboard"
+ :whiteboards "Whiteboards"
+ :on-boarding/quick-tour-journal-page-desc-2 "[[link]]"
+ :plugin/downloads "Downloads"
+ :right-side-bar/history-global "global"
+ :right-side-bar/whiteboards "Whiteboards"
+ :search-item/whiteboard "Whiteboard"
+ :settings-page/enable-whiteboards "Whiteboards"
+ :settings-page/plugin-system "Plugins"
+ :shortcut.category/whiteboard "Whiteboard"
+ :command.whiteboard/zoom-in "Zoom in"
+ :command.whiteboard/zoom-out "Zoom out"
+ ;; Allowed duplicates - end
+
  ;; Os comandos estão aninhados por enquanto para permanecerem sincronizados com o sistema de atalhos.
  ;; Outras linguagens não devem aninhar chaves em :commands
 

+ 63 - 41
yarn.lock

@@ -496,10 +496,10 @@
     "@jridgewell/resolve-uri" "^3.1.0"
     "@jridgewell/sourcemap-codec" "^1.4.14"
 
-"@logseq/[email protected].1":
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/@logseq/capacitor-file-sync/-/capacitor-file-sync-5.0.1.tgz#e154f715597785518ccd7d058f353acb67fbc2b8"
-  integrity sha512-C1fLSS53orxsUWBsNb6LKwuOdlEU9ZhxkweMjNKG9VaSkLFTFqpjFG36OTso23WQ7hC5e45jjXq79aoWuqJaKA==
+"@logseq/[email protected].2":
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/@logseq/capacitor-file-sync/-/capacitor-file-sync-5.0.2.tgz#10c56e35b41b1a0afd293c9b045fbcfe150c3477"
+  integrity sha512-FymsTeRtF66zG+oeO+ohZxWICMQMC8An4n9pdI0zz1WaGLer4oWC/lUghlC2DpztRLA32p0CH28tEzF5+2jARg==
 
 "@logseq/[email protected]":
   version "0.2.2"
@@ -1608,7 +1608,7 @@ browserify-zlib@^0.2.0:
   dependencies:
     pako "~1.0.5"
 
-browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.20.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9:
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9:
   version "4.21.11"
   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.11.tgz#35f74a3e51adc4d193dcd76ea13858de7b8fecb8"
   integrity sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==
@@ -5044,6 +5044,11 @@ nanoid@^3.3.4:
   resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
   integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
 
+nanoid@^3.3.7:
+  version "3.3.7"
+  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+  integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
 nanomatch@^1.2.9:
   version "1.2.13"
   resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -5845,22 +5850,22 @@ [email protected]:
     slash "^4.0.0"
     yargs "^17.0.0"
 
-[email protected], postcss-colormin@^5.3.1:
-  version "5.3.0"
-  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a"
-  integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==
+postcss-colormin@^5.3.1:
+  version "5.3.1"
+  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f"
+  integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     caniuse-api "^3.0.0"
     colord "^2.9.1"
     postcss-value-parser "^4.2.0"
 
-[email protected], postcss-convert-values@^5.1.3:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab"
-  integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==
+postcss-convert-values@^5.1.3:
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393"
+  integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==
   dependencies:
-    browserslist "^4.20.3"
+    browserslist "^4.21.4"
     postcss-value-parser "^4.2.0"
 
 postcss-discard-comments@^5.1.2:
@@ -5924,10 +5929,10 @@ postcss-import@^15.1.0:
     read-cache "^1.0.0"
     resolve "^1.1.7"
 
-[email protected], postcss-js@^4.0.1:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
-  integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
+postcss-js@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
+  integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
   dependencies:
     camelcase-css "^2.0.1"
 
@@ -5951,20 +5956,20 @@ postcss-media-query-parser@^0.2.3:
   resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
   integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==
 
-[email protected], postcss-merge-longhand@^5.1.7:
-  version "5.1.6"
-  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce"
-  integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==
+postcss-merge-longhand@^5.1.7:
+  version "5.1.7"
+  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16"
+  integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==
   dependencies:
     postcss-value-parser "^4.2.0"
-    stylehacks "^5.1.0"
+    stylehacks "^5.1.1"
 
-[email protected], postcss-merge-rules@^5.1.4:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5"
-  integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==
+postcss-merge-rules@^5.1.4:
+  version "5.1.4"
+  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c"
+  integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     caniuse-api "^3.0.0"
     cssnano-utils "^3.1.0"
     postcss-selector-parser "^6.0.5"
@@ -5985,12 +5990,12 @@ postcss-minify-gradients@^5.1.1:
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
-[email protected], postcss-minify-params@^5.1.4:
-  version "5.1.3"
-  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9"
-  integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==
+postcss-minify-params@^5.1.4:
+  version "5.1.4"
+  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352"
+  integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
@@ -6086,12 +6091,12 @@ postcss-ordered-values@^5.1.3:
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
-[email protected], postcss-reduce-initial@^5.1.2:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6"
-  integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==
+postcss-reduce-initial@^5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6"
+  integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     caniuse-api "^3.0.0"
 
 postcss-reduce-transforms@^5.1.0:
@@ -6177,7 +6182,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
 
[email protected], postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6, postcss@^8.2.1, postcss@^8.4.23:
[email protected], postcss@^8.2.1:
   version "8.4.17"
   resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5"
   integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==
@@ -6186,6 +6191,23 @@ [email protected], postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.2
     picocolors "^1.0.0"
     source-map-js "^1.0.2"
 
+postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6:
+  version "7.0.39"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^8.4.23:
+  version "8.4.33"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742"
+  integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==
+  dependencies:
+    nanoid "^3.3.7"
+    picocolors "^1.0.0"
+    source-map-js "^1.0.2"
+
 [email protected]:
   version "1.10.2"
   resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.10.2.tgz#74d6c84f9675b65dfd4ff6f4051ed8d3cb974076"
@@ -7370,7 +7392,7 @@ style-search@^0.1.0:
   resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
   integrity sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==
 
-stylehacks@^5.1.0:
+stylehacks@^5.1.1:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9"
   integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==