diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..a0aeac9 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,139 @@ +name: Build packages + +# Runs only on demand or when a release tag is pushed -- these builds are +# long (cljs release compile + webpack + native packaging per platform) so +# they don't run on every push. +on: + workflow_dispatch: {} + push: + tags: + - "v*" + +env: + # The `cli/` OCaml/dune package (a separate CLI companion tool) isn't + # bundled: this fork doesn't have the opam/dune toolchain wired into CI, + # and the `.agents/skills/logseq-cli/SKILL.md` doc it also depends on + # doesn't exist in this repo yet. Both the desktop-runtime staging script + # and gulpfile.js's prepareElectronMaker respect this flag by skipping the + # CLI-only steps instead of failing. Unset (or set to '0') once the CLI + # toolchain and skill doc are added. + LOGSEQ_SKIP_CLI_BUNDLE: "1" + +jobs: + linux: + name: Linux (AppImage, deb, rpm) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install rpmbuild + run: sudo apt-get update && sudo apt-get install -y rpm + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + + - uses: DeLaGuardo/setup-clojure@13.1 + with: + cli: 1.12.5.1664 + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: pnpm + + - uses: pnpm/action-setup@v4 + + - run: pnpm install --frozen-lockfile + + - name: Build unsigned AppImage/deb/rpm + env: + LOGSEQ_ELECTRON_BUILDER_ARGS: "--linux AppImage deb rpm" + run: pnpm release-electron:unsigned + + - uses: actions/upload-artifact@v4 + with: + name: logseq-linux + path: | + static/dist/*.AppImage + static/dist/*.deb + static/dist/*.rpm + if-no-files-found: error + + windows: + name: Windows (nsis) + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + + - uses: DeLaGuardo/setup-clojure@13.1 + with: + cli: 1.12.5.1664 + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: pnpm + + - uses: pnpm/action-setup@v4 + + - run: pnpm install --frozen-lockfile + + - name: Build unsigned nsis installer + run: pnpm release-electron:unsigned + + - uses: actions/upload-artifact@v4 + with: + name: logseq-windows + path: | + static/dist/*.exe + static/dist/*.zip + if-no-files-found: error + + android: + name: Android (debug APK) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + + - uses: android-actions/setup-android@v3 + + - name: Install Android SDK platform/build-tools + run: sdkmanager "platforms;android-36" "build-tools;36.0.0" + + - uses: DeLaGuardo/setup-clojure@13.1 + with: + cli: 1.12.5.1664 + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: pnpm + + - uses: pnpm/action-setup@v4 + + - run: pnpm install --frozen-lockfile + + - name: Build web assets and sync into the Android project + run: pnpm sync-android-release + + - name: Assemble debug APK + working-directory: android + run: ./gradlew assembleDebug --no-daemon + + - uses: actions/upload-artifact@v4 + with: + name: logseq-android + path: android/app/build/outputs/apk/debug/*.apk + if-no-files-found: error diff --git a/.gitignore b/.gitignore index 133c155..638365b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ cli/_opam/ *.log .vscode/ .idea/ +.claude/ # Python sidecar sidecar/.venv/ diff --git a/README.md b/README.md index 662bad1..4b5fe64 100644 --- a/README.md +++ b/README.md @@ -1,228 +1,24 @@ - -

- - -

+# Synapse -

Logseq

+A privacy-first, personal knowledge management platform. -

- A privacy-first, open-source platform for knowledge management and collaboration -

+Synapse is a personal fork of [Logseq](https://github.com/logseq/logseq) (DB-graph version), +maintained by DarΓ­o Sevilla (dario@dariosevilla.es). It keeps Logseq's outliner, DB-graph +model, and plugin API, reworked around a self-hosted server-client architecture: a single +daemon (`db-worker-node`) holds the authoritative graph and serves thin web, desktop, and +mobile clients over HTTP/WebSocket, with no cloud sync/E2EE layer. -
- Home Page | - Blog | - Documentation | - Roadmap -
-

+This is not affiliated with, endorsed by, or published on behalf of the Logseq project or +Logseq Inc. All credit for the original design and the vast majority of the codebase goes to +the [Logseq](https://logseq.com) team and its contributors. -

- - Download Logseq -

+## Development - -

- - forum - - chat on Discord - - follow on Twitter -

+See [docs/develop-logseq.md](docs/develop-logseq.md) (macOS/Linux) and +[docs/develop-logseq-on-windows.md](docs/develop-logseq-on-windows.md) (Windows) for setting +up a development environment. The `docs/` folder also has guides for mobile development, +translations, and the CLI. - -

- - - - - - - - - - latest release version -

+## License -## Table of Contents - - * [πŸš€ Database Version](#-database-version) - * [πŸ€” Why Logseq?](#-why-logseq) - * [πŸ‘€ How can I use it?](#-how-can-i-use-it) - * [πŸ“š Learn more](#-learn-more) - * [🫢 Support Logseq Development](#-support-logseq-development) - * [πŸ’‘ Feature requests](#-feature-requests) - * [πŸ”Œ Plugin API](#-plugin-api) - * [🌟 Contributing to Logseq](#-contributing-to-logseq) - * [πŸ› οΈ Setting Up a Development Environment](#️-setting-up-a-development-environment) - * [✨ Inspiration](#-inspiration) -* [πŸ™ Thank You](#-thank-you) - -## πŸš€ Database Version - -The Database version (DB version) of Logseq introduces DB graphs. [See this page](https://github.com/logseq/docs/blob/master/db-version.md) to get an overview of the main features for DB graphs. If you are an existing user, [see changes with the DB version](https://github.com/logseq/docs/blob/master/db-version-changes.md). The DB version has its own new mobile app (on iOS, with Android coming soon)! To participate in the mobile app alpha, [please complete this brief form](https://forms.gle/nfefJv51jUuULbFB9). The DB version also has a new sync approach, RTC (Real Time Collaboration)! You can use it to sync graphs between multiple devices or collaborate with others. To participate in the RTC alpha, [please fill out this form](https://forms.gle/YSyF4WfKPSDuwyjH6). - -The DB version is in beta status while the new mobile app and RTC is in alpha. This means that **data loss is possible** so we recommend [automated backups](https://github.com/logseq/docs/blob/master/db-version.md#automated-backup) or [regular SQLite DB backups](https://github.com/logseq/docs/blob/master/db-version.md#graph-export). We recommend you create a dedicated test graph and choose one project that’s not crucial for you. - -To get started with the DB version: -* To try the latest web version, go to https://app.logseq.com/. -* To try the latest desktop version, go to https://github.com/logseq/logseq/releases/tag/nightly and download the artifact for your operating system. -* To try the latest by building from the source code - * Use `test/db` for stable releases. Fewer bugs and slower updates. Update frequency: days or weeks. - * Use `master` for the latest updates as they are developed. Expect more bugs and faster changes. Update frequency: hours or days. -* To report bugs, please file them at https://github.com/logseq/db-test/issues. -* For feature or enhancement requests, please file them on Discord on the `#db-feedback` channel. -* For discussions: - * General ==> see the `#db-chat` channel in Discord. - * Sync and RTC ==> see the `#sync-test` channel in Discord. - * Mobile ==> see the `#mobile-test` channel in Discord. - -## πŸ€” Why Logseq? - -[Logseq](https://logseq.com) is a **knowledge management** and **collaboration** platform. It focuses on **privacy**, **longevity**, and [**user control**](https://www.gnu.org/philosophy/free-sw.en.html). Logseq offers a range of **powerful tools** for **knowledge management**, **collaboration**, **PDF annotation**, and **task management** with support for multiple file formats, including **Markdown** and **Org-mode**, and **various features** for organizing and structuring your notes. - -In addition to its core features, Logseq has a growing ecosystem of **plugins** and **themes** that enable a wide range of workflows and **customization** options. **Mobile apps** are also available, providing access to most of the features of the desktop application. Whether you're a student, a professional, or anyone who values a clear and organized approach to managing your ideas and notes, Logseq is an excellent choice for anyone looking to improve their productivity and streamline their workflow. - -![logseq-demo](https://user-images.githubusercontent.com/25513724/221387376-4dc419c2-0d0a-460c-a920-2d211e78b456.gif) - - - Download Logseq - -## πŸ‘€ How can I use it? - -To start using Logseq, follow these simple steps: - -1. [Download](https://github.com/logseq/logseq/releases/latest) the latest version of Logseq -2. Install Logseq on your device and launch the application -3. Start writing ✍️ - -That's it! You can now enjoy the benefits of using Logseq to streamline your workflow, manage your projects, and stay on top of your goals. Have fun! πŸŽ‰ - -**Linux users**: Use the automated installer script for the best experience: - - ```bash - # Download and run the installer - curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash - - # Or install a specific version - curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash -s -- 0.10.14 - - # For user-specific installation (no root required) - curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash -s -- --user - ``` - -## πŸ“š Learn more - -* Website: [logseq.com](https://logseq.com) -* Documentation: [docs.logseq.com](https://docs.logseq.com) - * FAQ page: [Logseq Docs: FAQ](https://docs.logseq.com/#/page/faq) -* Blog: [blog.logseq.com](https://blog.logseq.com) - * Please visit our [About page](https://blog.logseq.com/about) for the latest updates. -* Forum: [discuss.logseq.com](https://discuss.logseq.com) - Where we answer questions, discuss workflows, and share tips - * FAQ forum section: [Logseq Forum: FAQ](https://discuss.logseq.com/c/faq/6) -* [Awesome Logseq](https://github.com/logseq/awesome-logseq) - Awesome Logseq extensions and resources created by the community <3 -* Twitter: [@Logseq](https://twitter.com/logseq) -* Discord: [https://discord.com/invite/KpN4eHY](https://discord.com/invite/KpN4eHY) - * [δΈ­ζ–‡ Discord](https://discord.gg/xYqcrXWymg) - -## 🫢 Support Logseq Development - -If you find Logseq useful and want to help us keep the project growing, please consider supporting our contributors on [Open Collective](https://opencollective.com/logseq). Your support shows our contributors that their efforts are appreciated and motivates them to continue their excellent work. Every contribution, no matter how small, helps us keep improving Logseq. - -## πŸ’‘ Feature requests - -We value your input on improving Logseq and making it more useful for you. If you have any ideas or feature requests, please share them in the [Logseq Forum: Feature -Requests](https://discuss.logseq.com/new-topic?category=feature-requests) section. - -Your feedback helps us understand our users' needs and prioritize the features that matter most to you. We appreciate your time and effort in sharing your thoughts with us. - -We appreciate your support, and we look forward to hearing your ideas! - -## πŸ”Œ Plugin API - -Logseq provides a plugin API that enables developers to create custom plugins and extend the functionality of Logseq. The plugin API documentation is available at [plugins-doc.logseq.com](https://plugins-doc.logseq.com/), where you can find everything needed to get started with plugin development. - -We value your feedback and suggestions on how to improve our documentation. Please do not hesitate to contact us with any comments or questions. Your input helps us to provide a better experience for our users and developers. - -Thank you for using Logseq, and we look forward to seeing what you create with our plugin API! - -## 🌟 Contributing to Logseq - -To start contributing to Logseq, please read [CONTRIBUTING.md](CONTRIBUTING.md). -There are ways to contribute [with code](https://github.com/logseq/logseq/blob/master/CONTRIBUTING.md#code-contributions) and [without code](https://github.com/logseq/logseq/blob/master/CONTRIBUTING.md#-how-can-i-help). We welcome all -contributions, big or small, and we appreciate your time and effort in helping -us improve Logseq. We look forward to your contributions πŸš€ - -### πŸ› οΈ Setting Up a Development Environment - -If you want to set up a development environment for the Logseq web or desktop app, please refer to the [Develop Logseq](docs/develop-logseq.md) guide for macOS/Linux users and the [Develop Logseq on Windows](docs/develop-logseq-on-windows.md) guide for Windows users. - -In addition to these guides, you can also find other helpful resources in the [docs/](docs/) folder, such as the [Guide for Contributing to Translations](docs/contributing-to-translations.md), the [Docker Web App Guide](docs/docker-web-app-guide.md) and the [mobile development guide](docs/develop-logseq-on-mobile.md) - -### 🧰 Logseq CLI (Node) - -Logseq CLI documentation is maintained in `docs/cli/logseq-cli.md`. - -## ✨ Inspiration - -Logseq is inspired by several unique tools and projects, including [Roam Research](https://roamresearch.com/), [Org Mode](https://orgmode.org/), [TiddlyWiki](https://tiddlywiki.com/), [Workflowy](https://workflowy.com/), and [Cuekeeper](https://github.com/talex5/cuekeeper). - -We owe a huge debt of gratitude to the developers and creators of these projects, and we hope that Logseq can continue to build on their innovative ideas and make them accessible to a broader audience. - -Thank you to all those who inspire us, and we look forward to seeing what the Logseq community will create with this tool! - -Logseq is also made possible by the following projects: - -* [Clojure & ClojureScript](https://clojure.org/) - A dynamic, functional, general-purpose programming language -* [DataScript](https://github.com/tonsky/datascript) - An immutable database and Datalog query-engine for Clojure, -ClojureScript and JS -* [OCaml](https://ocaml.org/) & [Angstrom](https://github.com/inhabitedtype/angstrom), for the document parser [mldoc](https://github.com/logseq/mldoc) -* [isomorphic-git](https://isomorphic-git.org/) - A pure JavaScript implementation of Git for NodeJS and web browsers -* [SCI](https://github.com/borkdude/sci) - A Small Clojure Interpreter - -# πŸ™ Thank You - -We want to express our sincere gratitude to our [Open Collective](https://opencollective.com/logseq) **sponsors**, **backers**, and **contributors**. Your support and contributions allow us to continue developing and improving Logseq. Thank you for being a part of our community and helping us make Logseq the best it can be! - -## πŸ’Ž Sponsors - -

- [Become a sponsor] -

-

- - -

- -## 🌟 Contributors - -

- - -

- - -

- - -

- - -

- Logseq - Your joyful, private digital garden | Product Hunt -

+AGPL-3.0, inherited from upstream Logseq. See [LICENSE.md](LICENSE.md). diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index f0ac725..423e60d 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ - Logseq - Logseq + Synapse + Synapse com.logseq.app com.logseq.app diff --git a/capacitor.config.ts b/capacitor.config.ts index 13bc682..ea9810c 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -5,8 +5,10 @@ import * as fs from 'fs' const version = fs.readFileSync('static/package.json', 'utf8').match(/"version": "(.*?)"/)?.at(1) ?? '0.0.0' const config: CapacitorConfig = { + // appId intentionally left as-is: it must match android/'s applicationId + // and ios/'s bundle id, which haven't been renamed yet. appId: 'com.logseq.app', - appName: 'Logseq', + appName: 'Synapse', webDir: 'static/mobile', loggingBehavior: 'debug', server: { diff --git a/deploy/Caddyfile b/deploy/Caddyfile new file mode 100644 index 0000000..213c70c --- /dev/null +++ b/deploy/Caddyfile @@ -0,0 +1,11 @@ +your-domain.example { + # Everything the db-worker-node daemon serves: RPC, SSE/WS events, + # session auth, assets, the semantic API, and the MCP endpoint. + @daemon path /healthz /v1/* /mcp + reverse_proxy @daemon 127.0.0.1:3300 + + # Everything else is the static web client build. + root * /opt/logseq/static + file_server + try_files {path} /index.html +} diff --git a/deploy/logseq-daemon.service b/deploy/logseq-daemon.service new file mode 100644 index 0000000..834989b --- /dev/null +++ b/deploy/logseq-daemon.service @@ -0,0 +1,25 @@ +[Unit] +Description=Logseq db-worker-node daemon +After=network.target + +[Service] +Type=simple +User=logseq +Group=logseq +WorkingDirectory=/opt/logseq +EnvironmentFile=-/opt/logseq/daemon.env +ExecStart=/usr/bin/node /opt/logseq/dist/db-worker-node.js \ + --root-dir /opt/logseq/data \ + --repo logseq_db_main \ + --host 127.0.0.1 \ + --port 3300 \ + --log-level info +Restart=on-failure +RestartSec=2 +NoNewPrivileges=true +ProtectSystem=strict +ReadWritePaths=/opt/logseq/data +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/gulpfile.js b/gulpfile.js index 90a6023..c164cf5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -266,6 +266,8 @@ exports.electron = () => { } const prepareElectronMaker = async () => { + const skipCliBundle = process.env.LOGSEQ_SKIP_CLI_BUNDLE === '1' + cp.execSync('pnpm cljs:release-electron', { stdio: 'inherit', }) @@ -275,9 +277,11 @@ const prepareElectronMaker = async () => { cp.execSync('pnpm webpack-app-build', { stdio: 'inherit', }) - cp.execSync('pnpm cli:release', { - stdio: 'inherit', - }) + if (!skipCliBundle) { + cp.execSync('pnpm cli:release', { + stdio: 'inherit', + }) + } cp.execSync('pnpm desktop:prepare-runtime-js', { stdio: 'inherit', }) @@ -306,8 +310,8 @@ const prepareElectronMaker = async () => { } } -const runStaticScript = (script) => { - cp.execSync(`pnpm ${script}`, { +const runStaticScript = (script, extraArgs = '') => { + cp.execSync(`pnpm ${script}${extraArgs ? ' -- ' + extraArgs : ''}`, { cwd: outputPath, stdio: 'inherit', }) @@ -320,7 +324,7 @@ exports.electronMaker = async () => { exports.electronMakerUnsigned = async () => { await prepareElectronMaker() - runStaticScript('electron:make-unsigned') + runStaticScript('electron:make-unsigned', process.env.LOGSEQ_ELECTRON_BUILDER_ARGS || '') } exports.cap = common.runCapWithLocalDevServerEntry diff --git a/ios/App/App/Info.plist b/ios/App/App/Info.plist index 78b63a3..9f7760d 100644 --- a/ios/App/App/Info.plist +++ b/ios/App/App/Info.plist @@ -20,7 +20,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - Logseq + Synapse CFBundleExecutable $(EXECUTABLE_NAME) CFBundleGetInfoString diff --git a/package.json b/package.json index e372983..d0ac835 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,15 @@ { - "name": "logseq", + "name": "synapse", "version": "0.0.1", "private": true, + "author": { + "name": "DarΓ­o Sevilla", + "email": "dario@dariosevilla.es" + }, "packageManager": "pnpm@10.33.0", "main": "static/electron.js", "bin": { - "logseq": "dist/logseq.js" + "synapse": "dist/logseq.js" }, "files": [ "dist/", diff --git a/public/index.html b/public/index.html index f54c3b6..9f4fc78 100644 --- a/public/index.html +++ b/public/index.html @@ -11,25 +11,13 @@ - + - - - - - - - - - - - - Logseq: "A privacy-first platform for knowledge management and collaboration." - - + Synapse: A privacy-first, personal knowledge management platform +
diff --git a/resources/electron-builder.yml b/resources/electron-builder.yml index 22d0647..0bd4b07 100644 --- a/resources/electron-builder.yml +++ b/resources/electron-builder.yml @@ -1,4 +1,4 @@ -appId: com.logseq.logseq +appId: es.dariosevilla.synapse electronUpdaterCompatibility: ">=2.16" directories: @@ -37,18 +37,11 @@ toolsets: appimage: "1.0.2" protocols: - - name: logseq + - name: synapse schemes: - - logseq - -publish: - - provider: github - owner: logseq - repo: logseq + - synapse extraResources: - - from: .agents/skills/logseq-cli/SKILL.md - to: .agents/skills/logseq-cli/SKILL.md - from: ../sidecar to: sidecar @@ -83,7 +76,6 @@ linux: icon: icons/logseq.png category: Office target: - - AppImage - - zip + - rpm mimeTypes: - - x-scheme-handler/logseq + - x-scheme-handler/synapse diff --git a/resources/index.html b/resources/index.html index 121218e..6720997 100644 --- a/resources/index.html +++ b/resources/index.html @@ -9,25 +9,13 @@ - + - - - - - - - - - - - - Logseq: A privacy-first platform for knowledge management and collaboration - - + Synapse: A privacy-first, personal knowledge management platform +
diff --git a/resources/mobile/index.html b/resources/mobile/index.html index 8576e18..cf0a2df 100644 --- a/resources/mobile/index.html +++ b/resources/mobile/index.html @@ -4,7 +4,7 @@ - Logseq: A privacy-first platform for knowledge management and collaboration + Synapse: A privacy-first, personal knowledge management platform
diff --git a/resources/package.json b/resources/package.json index 3ac33bf..c4f7dbc 100644 --- a/resources/package.json +++ b/resources/package.json @@ -1,13 +1,16 @@ { - "name": "Logseq", - "productName": "Logseq", + "name": "Synapse", + "productName": "Synapse", "version": "2.0.1", "packageManager": "pnpm@10.33.0", "main": "electron.js", - "author": "Logseq", + "author": { + "name": "DarΓ­o Sevilla", + "email": "dario@dariosevilla.es" + }, "license": "AGPL-3.0", - "description": "A privacy-first, open-source platform for knowledge management and collaboration.", - "repository": "https://github.com/logseq/logseq", + "description": "A privacy-first, personal knowledge management platform.", + "repository": "ssh://gitea@git.dariosevilla.es:2222/dasemu/Synapse.git", "scripts": { "electron:dev": "electron .", "electron:debug": "electron --inspect=9229 .", diff --git a/scripts/prepare-desktop-runtime-js.mjs b/scripts/prepare-desktop-runtime-js.mjs index 4092a74..f315d42 100644 --- a/scripts/prepare-desktop-runtime-js.mjs +++ b/scripts/prepare-desktop-runtime-js.mjs @@ -17,6 +17,7 @@ const cliBundleRelativePath = "cli/_build/default/dist/logseq-cli.js"; const stagedCliRelativePath = "static/logseq-cli.js"; const desktopCliRelativePath = "static/js/logseq-cli.js"; const cliBundlePath = path.join(repoRoot, ...cliBundleRelativePath.split("/")); +const skipCliBundle = process.env.LOGSEQ_SKIP_CLI_BUNDLE === "1"; const copyPairs = [ { @@ -24,6 +25,7 @@ const copyPairs = [ to: path.join(repoRoot, ...desktopCliRelativePath.split("/")), generatedFrom: cliBundlePath, refreshCommand: "pnpm cli:release", + optional: skipCliBundle, }, { from: path.join(staticDir, "logseq-cli.js.map"), @@ -39,6 +41,7 @@ const copyPairs = [ { from: path.join(skillSourceDir, "SKILL.md"), to: path.join(stagedSkillDir, "SKILL.md"), + optional: skipCliBundle, }, ]; diff --git a/src/electron/electron/core.cljs b/src/electron/electron/core.cljs index 288baa3..6f22623 100644 --- a/src/electron/electron/core.cljs +++ b/src/electron/electron/core.cljs @@ -28,7 +28,7 @@ [promesa.core :as p])) ;; Keep same as main/frontend.util.url -(defonce LSP_SCHEME "logseq") +(defonce LSP_SCHEME "synapse") (defonce FILE_LSP_SCHEME "lsp") (defonce FILE_ASSETS_SCHEME "assets") (defonce LSP_PROTOCOL (str FILE_LSP_SCHEME "://")) diff --git a/src/electron/electron/url.cljs b/src/electron/electron/url.cljs index c9941dc..eb831c8 100644 --- a/src/electron/electron/url.cljs +++ b/src/electron/electron/url.cljs @@ -29,7 +29,7 @@ :i18n-key :electron/link-open-failed-no-graph :i18n-args [graph-identifier]}) (send-to-renderer "notification" {:type "error" - :payload "Failed to open link. Missing graph identifier after `logseq://graph/`." + :payload "Failed to open link. Missing graph identifier after `synapse://graph/`." :i18n-key :electron/link-open-failed-missing-graph}))) (defn local-url-handler diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index bd69122..645e7a6 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -14,7 +14,7 @@ :account/auth-error-username-exists "This username is already taken." :account/authentication "Authentication" :account/back-to-login "Back to login" - :account/benefits-desc "With a Logseq account, you can access cloud-based services like Logseq Sync and alpha/beta features." + :account/benefits-desc "With a Synapse account, you can access cloud-based services like Synapse Sync and alpha/beta features." :account/billing "Billing" :account/billing-expired-on-label "Pro plan expired on: {1}" :account/billing-expires-on-label "Pro plan expires on: {1}" @@ -23,7 +23,7 @@ :account/code-sent-to-email "We have sent a numeric verification code to your email address at {1}." :account/confirm "Confirm" :account/confirm-password "Confirm Password" - :account/core-features "Access to core Logseq features" + :account/core-features "Access to core Synapse features" :account/create-account "Create Account" :account/current-plan "Current plan" :account/delete-account "Delete Account" @@ -61,7 +61,7 @@ :account/sync-assets-limit "Sync assets up to 100MB per file" :account/synced-status "Synced" :account/unlimited-unsynced-graphs "Unlimited unsynced graphs" - :account/upcoming-cloud-features "Upcoming cloud-based features, including Logseq Publish" + :account/upcoming-cloud-features "Upcoming cloud-based features, including Synapse Publish" :account/upgrade-plan "Upgrade plan" :account/username "Username" @@ -184,7 +184,7 @@ :bug-report.inspector/tip "Something wrong? No problem, click to go back to the previous step." :bug-report.inspector/title "Clipboard data inspector" - :bug-report.issue/action-desc "Help Make Logseq Better!" + :bug-report.issue/action-desc "Help Make Synapse Better!" :bug-report.issue/action-title "Submit a bug report" :bug-report.issue/desc "If there are no tools available for you to gather additional information, please report the bug directly." :bug-report.issue/report-link "Report issue" @@ -574,14 +574,14 @@ :editor.slash/upload-asset-desc "Upload file types like image, PDF, DOCX, etc." :editor.slash/yesterday-desc "Insert the date of yesterday" - :electron/about "About Logseq" + :electron/about "About Synapse" :electron/add-to-dictionary "Add to dictionary" :electron/block-not-exist "Open link failed. Block-id `{1}` doesn't exist in the graph." :electron/cancel "Cancel" - :electron/cli-install-failed "Failed to install Logseq CLI.\n{1}" + :electron/cli-install-failed "Failed to install Synapse CLI.\n{1}" :electron/copy-image "Copy Image" :electron/link-open-confirm "Are you sure you want to open this link? \n{1}" - :electron/link-open-failed-missing-graph "Failed to open link. Missing graph identifier after `logseq://graph/`." + :electron/link-open-failed-missing-graph "Failed to open link. Missing graph identifier after `synapse://graph/`." :electron/link-open-failed-no-graph "Failed to open link. Cannot match graph identifier `{1}` to any linked graph." :electron/link-open-failed-no-target "Failed to open link. Cannot match `{1}` to any target." :electron/look-up "Look up selection" @@ -739,7 +739,7 @@ :graph/creating "Creating graph" :graph/db-worker-recovery-failed-error "Unable to reconnect to the database worker for graph \"{1}\". Please try again or reopen the graph." :graph/delete-local-action "Delete local graph" - :graph/delete-local-confirm-desc "Are you sure you want to permanently delete the graph \"{1}\" from Logseq?" + :graph/delete-local-confirm-desc "Are you sure you want to permanently delete the graph \"{1}\" from Synapse?" :graph/delete-server-action "Delete from server" :graph/delete-server-confirm-desc "Are you sure you want to permanently delete the graph \"{1}\" from our server?" :graph/delete-warning "⚠️ Notice that we can't recover this graph after being deleted. Make sure you have backups before deleting it." @@ -774,7 +774,7 @@ :graph/remote-graphs "Remote graphs:" :graph/removed "Removed graph \"{1}\"" :graph/removed-and-redirecting "Removed graph \"{1}\". Redirecting to graph \"{2}\"" - :graph/removed-from-sync "This graph has been removed from Logseq Sync." + :graph/removed-from-sync "This graph has been removed from Synapse Sync." :graph/reset-view "Reset graph view" :graph/retry "Retry" :graph/search-tags "Search tags" @@ -787,9 +787,9 @@ :graph/time-travel-now "Now" :graph/toggle-tag "Toggle tag {1}" :graph/updated-switching "Graph updated! Switching to graph ..." - :graph/upload-local-confirm-desc "Upload graph \"{1}\" to Logseq Server?" - :graph/use-sync-beta "Use Logseq Sync (Beta testing)" - :graph/use-sync-label "Use Logseq Sync?" + :graph/upload-local-confirm-desc "Upload graph \"{1}\" to Synapse Server?" + :graph/use-sync-beta "Use Synapse Sync (Beta testing)" + :graph/use-sync-label "Use Synapse Sync?" :graph/view-mode "View mode" :graph/view-mode-all-pages "All pages" :graph/view-mode-tags "Tags" @@ -842,7 +842,7 @@ :header/quit-highlight-recent-blocks "Quit highlight recent blocks" :header/toggle-left-sidebar "Toggle left sidebar" - :help/about "About Logseq" + :help/about "About Synapse" :help/about-title "About" :help/ask-community "Ask the community" :help/awesome-logseq "Awesome Logseq" @@ -930,7 +930,7 @@ :import/empty-graph-name "Empty graph name." :import/extract-inline-code-snippets "Extract inline code snippets as child blocks" :import/file-finished "Import finished!" - :import/file-to-db-desc "Import a file-based Logseq graph folder into a new DB graph" + :import/file-to-db-desc "Import a file-based Synapse graph folder into a new DB graph" :import/file-to-db-title "File to DB graph" :import/graph-name-conflict "Please specify another name as another graph with this name already exists!" :import/graph-name-placeholder "Graph name" @@ -941,7 +941,7 @@ :import/invalid-blocks-detected "Import detected {1} invalid block(s). These blocks may be buggy when you interact with them. See the javascript console for more." :import/invalid-edn-file "The given EDN file is not valid EDN. Please fix and try again." :import/loading "Importing" - :import/logseq-config-missing "Import failed as the file 'logseq/config.edn' was not found for a Logseq graph." + :import/logseq-config-missing "Import failed as the file 'logseq/config.edn' was not found for a Synapse graph." :import/new-graph-name "New graph name" :import/notes "Import existing notes" :import/org-files-imported "Imported {1} org file(s) as markdown. Support for org files will be added later." @@ -1021,8 +1021,8 @@ :live-note/refreshing "Refreshing…" :live-note/title "Live note" - :mobile/camera-access-denied "Camera access is denied. Enable it in Settings > Logseq." - :mobile/microphone-access-denied "Microphone access is denied. Enable it in Settings > Logseq." + :mobile/camera-access-denied "Camera access is denied. Enable it in Settings > Synapse." + :mobile/microphone-access-denied "Microphone access is denied. Enable it in Settings > Synapse." :mobile.header/actions "Actions" :mobile.header/create-graph "Create new graph" @@ -1107,15 +1107,15 @@ :notification/copied "Copied!" - :onboarding.import/desc "If they are in an EDN or Markdown format Logseq can work with them." - :onboarding.import/sqlite-desc "Import a SQLite DB Export of your Logseq graph into a new DB graph" + :onboarding.import/desc "If they are in an EDN or Markdown format Synapse can work with them." + :onboarding.import/sqlite-desc "Import a SQLite DB Export of your Synapse graph into a new DB graph" :onboarding.import/title "Do you already have notes that you want to import?" :onboarding.import-option/desc "You can also do this later in the app." :onboarding.import-option/title "Import existing notes" - :onboarding.setup/desc "First you need to choose a folder where Logseq will store your thoughts, ideas, notes." - :onboarding.setup/title (fn [] ["Welcome to " [:strong "Logseq!"]]) + :onboarding.setup/desc "First you need to choose a folder where Synapse will store your thoughts, ideas, notes." + :onboarding.setup/title (fn [] ["Welcome to " [:strong "Synapse!"]]) :page/add-to-favorites "Add to Favorites" :page/added-tag-to-node "Added tag \"{1}\" to \"{2}\"" @@ -1134,7 +1134,7 @@ :page/go-back-home "Go back home" :page/hide-properties "Hide properties" :page/local-storage "local storage" - :page/logseq-is-having-a-problem "Logseq is having a problem. To try to get it back to a working state, please try the following safe steps in order:" + :page/logseq-is-having-a-problem "Synapse is having a problem. To try to get it back to a working state, please try the following safe steps in order:" :page/make-private "Make it private" :page/make-public "Make it public for publishing" :page/moved-to-recycle "Node has been moved to Recycle" @@ -1152,7 +1152,7 @@ :page/relaunch-desc "Quit and reopen the app." :page/scheduled-and-deadline "Scheduled and Deadline" :page/search-index "search index" - :page/send-db-for-debugging "You can send it to help@logseq.com for debugging." + :page/send-db-for-debugging "You can send it to dario@dariosevilla.es for debugging." :page/similar-pages "Similar pages" :page/something-went-wrong "Something went wrong" :page/step "Step {1}" @@ -1271,7 +1271,7 @@ :plugin/installed-plugin "Installed plugin: {1}" :plugin/installing "Installing" :plugin/invalid-github-repo-url "Invalid GitHub repo url" - :plugin/invalid-package "Illegal Logseq plugin package." + :plugin/invalid-package "Illegal Synapse plugin package." :plugin/invalid-plugins-edn "Invalid plugins.edn provided. See javascript console for specific errors" :plugin/list-of-updates "Plugin Updates: " :plugin/load-from-web-url "Load plugin from web url" @@ -1302,7 +1302,7 @@ :plugin/refresh-lists "Refresh lists" :plugin/reload "Reload" :plugin/remote-error "Remote error: {1}" - :plugin/report-modal-desc "If any plugin is unavailable or you think it contains malicious code, please email {1}. Mention the name of the plugin and the URL of its GitHub repository. The Logseq team usually responds within a business day." + :plugin/report-modal-desc "If any plugin is unavailable or you think it contains malicious code, please email {1}. Mention the name of the plugin and the URL of its GitHub repository. The Synapse team usually responds within a business day." :plugin/report-security "Report plugin" :plugin/restart "Restart App" :plugin/search-plugin "Search plugins" @@ -1334,7 +1334,7 @@ :plugin.install-from-web-url/supports-note "URLs support both GitHub repositories and local development servers. (For Examples: {1}, {2})" :plugin.install-from-web-url/theme-label "theme" - :plugin.package-config/detach-desc "Removing it only detaches the plugin from Logseq and keeps the source folder untouched." + :plugin.package-config/detach-desc "Removing it only detaches the plugin from Synapse and keeps the source folder untouched." :plugin.package-config/parse-error "Failed to parse the plugin package config." :plugin.package-config/remove-error "Failed to remove the broken plugin." :plugin.package-config/remove-external-success "Removed the broken plugin from the plugin list." @@ -1350,7 +1350,7 @@ :plugin.settings/exit-code-mode "Exit code mode" :plugin.settings/title "Plugins" - :plugin.themes/default-desc "Logseq default {1} theme." + :plugin.themes/default-desc "Synapse default {1} theme." :plugin.themes/default-name "Default {1} Theme" :plugin.themes/group "{1} themes" :plugin.themes/light-and-dark "light & dark themes" @@ -1713,9 +1713,9 @@ :settings.advanced/auto-chmod-desc "Disable to allow editing by multiple users with permissions granted by group membership." :settings.advanced/auto-updater "Auto updater" :settings.advanced/developer-mode "Developer mode" - :settings.advanced/developer-mode-desc "Developer mode helps contributors and extension developers test their integrations with Logseq more efficiently." - :settings.advanced/disable-sentry "Send usage data and diagnostics to Logseq" - :settings.advanced/disable-sentry-desc "Logseq will never collect your local graph database or sell your data." + :settings.advanced/developer-mode-desc "Developer mode helps contributors and extension developers test their integrations with Synapse more efficiently." + :settings.advanced/disable-sentry "Send usage data and diagnostics to Synapse" + :settings.advanced/disable-sentry-desc "Synapse will never collect your local graph database or sell your data." :settings.advanced/network-proxy "Network proxy" @@ -1738,7 +1738,7 @@ :settings.features/enable-flashcards "Flashcards" :settings.features/home-default-page "Set the default home page" :settings.features/home-default-page-update-success "Home default page updated successfully!" - :settings.features/login-prompt "To access new features before anyone else you must be an Open Collective Sponsor or Backer of Logseq and therefore log in first." + :settings.features/login-prompt "To access new features before anyone else you must be an Open Collective Sponsor or Backer of Synapse and therefore log in first." :settings.features/markdown-mirror "Markdown Mirror" :settings.features/markdown-mirror-desc "Write a derived Markdown copy of edited pages to the graph's mirror/markdown folder. Desktop only." :settings.features/markdown-mirror-regenerate "Regenerate full mirror" @@ -1752,7 +1752,7 @@ :settings.general/accent-color "Accent color" :settings.general/accent-color-alert "Choosing an accent color may override any theme you have selected." - :settings.general/accent-color-logseq "Logseq classic color" + :settings.general/accent-color-logseq "Synapse classic color" :settings.general/accent-color-none-desc "Cancel accent color. This is currently in beta stage and mainly used for compatibility with custom themes." :settings.general/changelog "What's new?" :settings.general/check-for-updates "Check for updates" @@ -1778,17 +1778,17 @@ :settings.general/theme-light "light" :settings.general/theme-system "system" - :settings.sync-server/clear-success "Sync server URL cleared. Using official Logseq Sync." + :settings.sync-server/clear-success "Sync server URL cleared. Using official Synapse Sync." :settings.sync-server/reset "Reset to default" :settings.sync-server/save-success "Sync server URL saved." :settings.sync-server/url "Sync Server URL" - :settings.sync-server/url-desc "Set a custom HTTPS sync server URL for self-hosted sync. Your Logseq authentication tokens will be sent to this server, so only use a trusted URL. Leave empty to use the official Logseq Sync." + :settings.sync-server/url-desc "Set a custom HTTPS sync server URL for self-hosted sync. Your Synapse authentication tokens will be sent to this server, so only use a trusted URL. Leave empty to use the official Synapse Sync." :settings.sync-server/url-invalid-error "URL must start with https:// or http://" :settings-page/publish-server-url "Publish Server URL" - :settings-page/publish-server-url-cleared "Publish server URL cleared. Using official Logseq Publish." - :settings-page/publish-server-url-default "Logseq Publish" - :settings-page/publish-server-url-desc "Set a custom HTTPS publish server URL for self-hosted single-page publishing. Your Logseq authentication tokens will be sent to this server, so only use a trusted URL. Leave empty to use the official Logseq Publish service." + :settings-page/publish-server-url-cleared "Publish server URL cleared. Using official Synapse Publish." + :settings-page/publish-server-url-default "Synapse Publish" + :settings-page/publish-server-url-desc "Set a custom HTTPS publish server URL for self-hosted single-page publishing. Your Synapse authentication tokens will be sent to this server, so only use a trusted URL. Leave empty to use the official Synapse Publish service." :settings-page/publish-server-url-reset "Reset to default" :settings-page/publish-server-url-saved "Publish server URL saved." @@ -1863,7 +1863,7 @@ :sync/uploading "Uploading..." :sync/user-doesnt-exist-yet "User doesn't exist yet." - :theme/logseq-default "Logseq Default theme" + :theme/logseq-default "Synapse Default theme" :theme/switch-to "Switch to {1} theme" :ui/all-done "All Done!" @@ -2014,7 +2014,7 @@ :youtube/timestamps-not-available-mobile "YouTube timestamps aren't available on mobile yet." :zotero/attachments "Attachments" - :zotero/imported-file-warning "This is a Zotero imported file, set Zotero data directory to open the file in Logseq." - :zotero/linked-file-warning "This is a Zotero linked file, set Zotero linked attachment base directory to open the file in Logseq." + :zotero/imported-file-warning "This is a Zotero imported file, set Zotero data directory to open the file in Synapse." + :zotero/linked-file-warning "This is a Zotero linked file, set Zotero linked attachment base directory to open the file in Synapse." :zotero/notes "Notes" }