global: move everything to notesnook.com/help/* (#10238)

This commit is contained in:
Abdullah Atta
2026-08-14 12:34:07 +05:00
committed by GitHub
parent 52d6044e73
commit 87aa98b85e
33 changed files with 1591 additions and 61 deletions

View File

@@ -33,14 +33,12 @@ jobs:
- name: Build help
run: npm run build:help
- name: Deploy to Cloudflare Pages
- name: Deploy to Cloudflare
id: deploy
working-directory: ./docs/help
run: |
set -euo pipefail
BRANCH=pr-${{ github.event.number }}-$(echo "${{ github.sha }}" | cut -c1-7)
echo "Deploying branch: $BRANCH"
DEPLOY_OUT=$(npx --yes wrangler pages deploy --project-name=notesnook-help --branch="$BRANCH" ./.vitepress/dist 2>&1) || { echo "$DEPLOY_OUT"; exit 1; }
DEPLOY_OUT=$(npx --yes wrangler versions upload 2>&1) || { echo "$DEPLOY_OUT"; exit 1; }
echo "$DEPLOY_OUT"
PREVIEW_URL=$(printf "%s" "$DEPLOY_OUT" | grep -Eo 'https?://[^ ]+' | head -1 || true)
if [ -z "$PREVIEW_URL" ]; then

View File

@@ -31,4 +31,4 @@ jobs:
echo "CLOUDFLARE_API_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }}" >> $GITHUB_ENV
- name: Publish on Cloudflare Pages
run: npx --yes wrangler pages deploy --project-name notesnook-help ./docs/help/.vitepress/dist/ --branch main
run: npx --yes wrangler deploy

View File

@@ -65,7 +65,7 @@ We take all queries, issues and bug reports that you might have. Feel free to as
## Additional Resources
- [Migrating & Importing your data from other apps — Importer](https://help.notesnook.com/importing-notes)
- [Migrating & Importing your data from other apps — Importer](https://notesnook.com/help/importing-notes)
- [Privacy policy](https://notesnook.com/privacy) & [Terms of service](https://notesnook.com/terms)
- [Verify Notesnook encryption claims yourself — Vericrypt](https://vericrypt.notesnook.com/)
- [Why Notesnook requires an email address?](https://blog.notesnook.com/why-notesnook-requires-an-email-address/)

View File

@@ -249,7 +249,7 @@ export default function NoteHistory({
<Text
onPress={() => {
openLinkInBrowser(
"https://help.notesnook.com/note-version-history"
"https://notesnook.com/help/note-version-history"
);
}}
style={{

View File

@@ -50,7 +50,7 @@ export const Synced = ({ item, close }) => {
close();
await sleep(300);
await openLinkInBrowser(
"https://help.notesnook.com/how-is-my-data-encrypted",
"https://notesnook.com/help/how-is-my-data-encrypted",
colors
);
} catch (e) {

View File

@@ -509,7 +509,7 @@ const PublishNoteSheet = ({
onPress={async () => {
try {
await openLinkInBrowser(
"https://help.notesnook.com/publish-notes-with-monographs"
"https://notesnook.com/help/publish-notes-with-monographs"
);
} catch (e) {
console.error(e);

View File

@@ -46,7 +46,7 @@ export function toCamelCase(title: string) {
export function openMonographsWebpage() {
try {
openLinkInBrowser(
"https://help.notesnook.com/publish-notes-with-monographs"
"https://notesnook.com/help/publish-notes-with-monographs"
);
} catch (e) {
console.error(e);

View File

@@ -208,15 +208,15 @@ export const settingsGroups: SettingSection[] = [
return status === SubscriptionStatus.TRIAL
? strings.trialOnGoing(trialEndDate)
: status === SubscriptionStatus.ACTIVE
? strings.subRenewOn(expiryDate)
: status === SubscriptionStatus.CANCELED ||
status === SubscriptionStatus.PAUSED
? strings.subEndsOn(expiryDate)
: status === SubscriptionStatus.EXPIRED
? subscriptionDaysLeft.time < -3
? strings.subEnded()
: strings.accountDowngradedIn(3)
: strings.neverHesitate();
? strings.subRenewOn(expiryDate)
: status === SubscriptionStatus.CANCELED ||
status === SubscriptionStatus.PAUSED
? strings.subEndsOn(expiryDate)
: status === SubscriptionStatus.EXPIRED
? subscriptionDaysLeft.time < -3
? strings.subEnded()
: strings.accountDowngradedIn(3)
: strings.neverHesitate();
}
return strings.neverHesitate();
@@ -971,7 +971,7 @@ export const settingsGroups: SettingSection[] = [
name: strings.keepScreenOn(),
description: strings.keepScreenOnDesc(),
property: "keepScreenOn",
icon: "cellphone-screenshot",
icon: "cellphone-screenshot"
},
{
id: "image-compression",
@@ -1679,7 +1679,7 @@ export const settingsGroups: SettingSection[] = [
id: "docs-link",
name: strings.documentation(),
modifer: async () => {
Linking.openURL("https://help.notesnook.com/");
Linking.openURL("https://notesnook.com/help/");
},
description: strings.documentationDesc(),
icon: "file-document"

View File

@@ -472,7 +472,7 @@ function ThemeSelector() {
actionText: strings.learnMore(),
func: () => {
openLinkInBrowser(
"https://help.notesnook.com/custom-themes/introduction"
"https://notesnook.com/help/custom-themes/introduction"
);
}
});

View File

@@ -141,7 +141,7 @@ export default function Monograph() {
bg: "background-secondary",
border: "1px solid var(--border)"
}}
href="https://help.notesnook.com/publish-notes-with-monographs"
href="https://notesnook.com/help/publish-notes-with-monographs"
target="_blank"
>
How it works

View File

@@ -918,7 +918,7 @@ function NavigationDropdown() {
icon: Documentation.path,
key: "help-and-support",
onClick: () => {
window.open("https://help.notesnook.com/", "_blank");
window.open("https://notesnook.com/help/", "_blank");
}
},
{

View File

@@ -179,7 +179,7 @@ const staticCommands: Command[] = [
id: "help",
title: strings.helpAndSupport(),
icon: ArrowTopRight,
action: () => (window.location.href = "https://help.notesnook.com"),
action: () => (window.location.href = "https://notesnook.com/help"),
group: strings.navigate(),
type: "command"
},

View File

@@ -386,7 +386,7 @@ export const SupportSettings: SettingsGroup[] = [
{
type: "button",
action: () =>
void window.open("https://help.notesnook.com/", "_blank"),
void window.open("https://notesnook.com/help/", "_blank"),
title: strings.open(),
variant: "secondary"
}

View File

@@ -181,7 +181,7 @@ const DEFAULT_TIPS: Record<TipContext, Omit<Tip, "contexts">> = {
icon: ArrowTopRight,
onClick() {
window.open(
"https://help.notesnook.com/publish-notes-with-monographs",
"https://notesnook.com/help/publish-notes-with-monographs",
"_blank"
);
}

View File

@@ -2,3 +2,4 @@
.vitepress/cache
contents/v*/
.vitepress/sidebars/generated.mjs
.wrangler

View File

@@ -21,19 +21,22 @@ export default defineConfig({
"Your complete and free resource to using Notesnook as a daily note taking app to organize your work and life while safeguarding your privacy.",
lang: "en-US",
srcDir: "./contents",
base: "/help/",
outDir: "./.vitepress/dist/help",
// Version overrides are source material for build-versions.mjs, not pages.
// The Standard Notes importer is unpublished for now — the page is kept in
// the repo but is not built, linked or listed in the sitemap. Delete the
// second entry (and restore the sidebar link) to publish it again.
srcExclude: [
"_versions/**",
"importing-notes/import-notes-from-standardnotes.md"
"importing-notes/import-notes-from-standardnotes.md",
"self-hosting.md"
],
cleanUrls: true,
lastUpdated: true,
metaChunk: true,
sitemap: {
hostname: "https://help.notesnook.com",
hostname: "https://notesnook.com/help",
// Only the latest docs belong in the sitemap.
transformItems: (items) =>
items.filter(
@@ -69,7 +72,7 @@ export default defineConfig({
"link",
{
rel: "preload",
href: "/fonts/Inter-Regular.woff2",
href: "/help/fonts/Inter-Regular.woff2",
as: "font",
type: "font/woff2",
crossorigin: ""
@@ -79,7 +82,7 @@ export default defineConfig({
"link",
{
rel: "preload",
href: "/fonts/Inter-SemiBold.woff2",
href: "/help/fonts/Inter-SemiBold.woff2",
as: "font",
type: "font/woff2",
crossorigin: ""
@@ -94,9 +97,9 @@ export default defineConfig({
{
async: "",
defer: "",
"data-website-id": "ad34576b-2721-436c-b36a-47a614009d2b",
"data-website-id": "676a7449-2151-44f7-a8c7-3b0691cade30",
src: "https://aas.streetwriters.co/script.js",
"data-domains": "help.notesnook.com"
"data-domains": "notesnook.com"
}
]
],

View File

@@ -21,14 +21,13 @@ import { join } from "node:path";
import type { HeadConfig, TransformPageContext, PageData } from "vitepress";
import { resolveString } from "./strings.mjs";
const SITE = "https://help.notesnook.com";
const SITE = "https://notesnook.com/help";
const OG_IMAGE = `${SITE}/logo.png`;
const url = (relativePath: string) =>
`${SITE}/${relativePath.replace(/(index)?\.md$/, "").replace(/\/$/, "")}`.replace(
/\/$/,
""
) || SITE;
`${SITE}/${relativePath
.replace(/(index)?\.md$/, "")
.replace(/\/$/, "")}`.replace(/\/$/, "") || SITE;
/** "organizing-notes/archive-notes.md" -> ["Organizing notes", "Archive notes"] */
function breadcrumbs(relativePath: string, title: string) {

View File

@@ -1,6 +1,6 @@
# Notesnook Help
The source of [help.notesnook.com](https://help.notesnook.com), built with [VitePress](https://vitepress.dev).
The source of [notesnook.com/help](https://notesnook.com/help), built with [VitePress](https://vitepress.dev).
```bash
npm install

View File

@@ -1,6 +1,6 @@
# Help docs — writing conventions
Every page on help.notesnook.com follows these. They cover accuracy, plan tags, SEO and linking.
Every page on notesnook.com/help follows these. They cover accuracy, plan tags, SEO and linking.
## 1. Accuracy is non-negotiable

View File

@@ -113,4 +113,3 @@ Your data encryption key is created the next time you change your password.
- [Recovering your account](/recovering-your-account) — when you forget your password
- [Backup and restore](/backup-and-restore-notes-in-notesnook) — keeping your own encrypted copy
- [Two-factor authentication](/two-factor-authentication) — a second step at login
- [Self-hosting](/self-hosting) — running your own servers

View File

@@ -138,5 +138,4 @@ After rotating your PGP keys in Notesnook settings, re-fetch the public key (Ste
## Related pages
- [Inbox API](/inbox-api/getting-started) — sending notes in from other services
- [Self-hosting](/self-hosting) — running your own servers
- [How is my data encrypted?](/how-is-my-data-encrypted) — the encryption behind every note

View File

@@ -2,4 +2,4 @@
User-agent: *
Allow: /
Sitemap: https://help.notesnook.com/sitemap.xml
Sitemap: https://notesnook.com/help/sitemap.xml

View File

@@ -150,4 +150,3 @@ If you are here because something is not syncing, try the ordinary fixes in [syn
- [Plans & limits](/plans-and-limits) — full offline mode needs Essential, sync controls need Pro
- [Backup and restore](/backup-and-restore-notes-in-notesnook) — take one before any forced sync
- [What are merge conflicts?](/faqs/what-are-merge-conflicts) — resolving two versions of the same note
- [Self-hosting](/self-hosting) — pointing sync at your own server instead

View File

@@ -83,7 +83,7 @@ Stop pressing sync, wait a few minutes, and let the app sync on its own. If you
| Message | What it means | What to do |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| _(no message — only the status flips to `{{syncFailed}}`)_ | The app could not open a connection to the sync server within 30 seconds. Connection failures are written to the log as `Could not connect to the Sync server. Please try again.` but are deliberately not shown as a toast. | Check your connection, then sync again. Behind a strict firewall or VPN, try another network. |
| `Notesnook Sync Server is not responding. Please check your internet connection.` (the full message goes on to give a support address and a reference error) | The server did not answer at all. Other names you may see are `Authentication Server`, `Eventing Server` and `Monograph Server`. If you have pointed the app at your own servers you get the raw network error instead of this friendly one. | Check your connection. If you are [self-hosting](/self-hosting), check that server is up. |
| `Notesnook Sync Server is not responding. Please check your internet connection.` (the full message goes on to give a support address and a reference error) | The server did not answer at all. Other names you may see are `Authentication Server`, `Eventing Server` and `Monograph Server`. If you have pointed the app at your own servers you get the raw network error instead of this friendly one. | Check your connection. |
| `You are being rate limited.` | Too many requests. | Wait a few minutes. |
| `Unauthorized.` | Your session is no longer valid. | Log out and log back in. |
| `Failed to send all items. Sent X out of Y.` | The upload stopped partway. | Sync again — the remaining items are still queued and go out on the next run. |
@@ -155,4 +155,3 @@ Send the details to support@streetwriters.co — which devices, what the status
- [What are merge conflicts?](/faqs/what-are-merge-conflicts) — resolving a conflicted note step by step
- [Backup and restore](/backup-and-restore-notes-in-notesnook) — take one before any forced sync
- [Plans & limits](/plans-and-limits) — storage allowances and which sync features need a paid plan
- [Self-hosting](/self-hosting) — sync errors when you run your own servers

File diff suppressed because it is too large Load Diff

View File

@@ -34,6 +34,7 @@
"@notesnook/intl": "file:../../packages/intl",
"markdown-it-task-lists": "^2.1.1",
"vitepress": "^1.6.4",
"vitepress-plugin-tabs": "^0.9.1"
"vitepress-plugin-tabs": "^0.9.1",
"wrangler": "^4.123.0"
}
}

18
docs/help/wrangler.jsonc Normal file
View File

@@ -0,0 +1,18 @@
{
"name": "notesnook-help",
"routes": [
{
"pattern": "notesnook.com/help/*",
"zone_name": "notesnook.com"
},
{
"pattern": "notesnook.com/help",
"zone_name": "notesnook.com"
}
],
"compatibility_date": "2026-08-14",
"preview_urls": true,
"assets": {
"directory": "./.vitepress/dist"
}
}

View File

@@ -1,4 +1,4 @@
- Inbox API is now in beta. Learn more about it at https://help.notesnook.com/inbox-api/getting-started
- Inbox API is now in beta. Learn more about it at https://notesnook.com/help/inbox-api/getting-started
- Added close all tabs button in editor
- Deeplinking support for nn:// urls
- Set default image compression mode in Settings -> Behavior

View File

@@ -1,4 +1,4 @@
- Inbox API is now in beta. Learn more about it at https://help.notesnook.com/inbox-api/getting-started
- Inbox API is now in beta. Learn more about it at https://notesnook.com/help/inbox-api/getting-started
- Added close all tabs button in editor
- Deeplinking support for nn:// urls
- Set default image compression mode in Settings -> Behavior

View File

@@ -4332,10 +4332,12 @@
},
"node_modules/js-tokens": {
"version": "4.0.0",
"dev": true,
"license": "MIT"
},
"node_modules/loose-envify": {
"version": "1.4.0",
"dev": true,
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -4425,6 +4427,7 @@
},
"node_modules/react": {
"version": "18.3.1",
"dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"

View File

@@ -4110,8 +4110,8 @@ msgid "Login to encrypt and sync notes"
msgstr "Login to encrypt and sync notes"
#: src/strings.ts:2625
msgid "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)"
msgstr "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)"
msgid "Login to upload attachments. [Read more](https://notesnook.com/help/faqs/login-to-upload-attachments)"
msgstr "Login to upload attachments. [Read more](https://notesnook.com/help/faqs/login-to-upload-attachments)"
#: src/strings.ts:542
msgid "Login to your account"
@@ -7494,8 +7494,8 @@ msgid "Using {instance} (v{version})"
msgstr "Using {instance} (v{version})"
#: src/strings.ts:2812
msgid "Using Notesnook without an account will NOT sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
msgstr "Using Notesnook without an account will NOT sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
msgid "Using Notesnook without an account will **NOT** sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
msgstr "Using Notesnook without an account will **NOT** sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
#: src/strings.ts:2265
msgid "Using official Notesnook instance"
@@ -7933,11 +7933,11 @@ msgstr "You must log out in order to change/reset server URLs."
#: src/strings.ts:2741
msgid ""
"You need to login to restore attachments from a backup file. [Read more](https://help.notesnook.com/faqs/login-to-restore-attachments-in-backup).\n"
"You need to login to restore attachments from a backup file. [Read more](https://notesnook.com/help/faqs/login-to-restore-attachments-in-backup).\n"
" \n"
"Continue without attachments?"
msgstr ""
"You need to login to restore attachments from a backup file. [Read more](https://help.notesnook.com/faqs/login-to-restore-attachments-in-backup).\n"
"You need to login to restore attachments from a backup file. [Read more](https://notesnook.com/help/faqs/login-to-restore-attachments-in-backup).\n"
" \n"
"Continue without attachments?"

View File

@@ -4090,7 +4090,7 @@ msgid "Login to encrypt and sync notes"
msgstr ""
#: src/strings.ts:2625
msgid "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)"
msgid "Login to upload attachments. [Read more](https://notesnook.com/help/faqs/login-to-upload-attachments)"
msgstr ""
#: src/strings.ts:542
@@ -7444,7 +7444,7 @@ msgid "Using {instance} (v{version})"
msgstr ""
#: src/strings.ts:2812
msgid "Using Notesnook without an account will NOT sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
msgid "Using Notesnook without an account will **NOT** sync your notes across devices and could result in data loss if you lose access to your device or uninstall the app. Make sure to backup your notes regularly."
msgstr ""
#: src/strings.ts:2265
@@ -7875,7 +7875,7 @@ msgstr ""
#: src/strings.ts:2741
msgid ""
"You need to login to restore attachments from a backup file. [Read more](https://help.notesnook.com/faqs/login-to-restore-attachments-in-backup).\n"
"You need to login to restore attachments from a backup file. [Read more](https://notesnook.com/help/faqs/login-to-restore-attachments-in-backup).\n"
" \n"
"Continue without attachments?"
msgstr ""

View File

@@ -2622,7 +2622,7 @@ Use this if changes from other devices are not appearing on this device. This wi
clickToDirectlyClaimPromo: () =>
t`Click here to directly claim the promotion.`,
loginToUploadAttachments: () =>
t`Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)`,
t`Login to upload attachments. [Read more](https://notesnook.com/help/faqs/login-to-upload-attachments)`,
views: () => t`Views`,
clickToUpdate: () => t`Click to update`,
noPassword: () => t`No password`,
@@ -2738,7 +2738,7 @@ Use this if changes from other devices are not appearing on this device. This wi
currentPasswordRequired: () => t`Current password required`,
loginToRestoreAttachments: () => t`Login required to restore attachments`,
loginToRestoreAttachmentsDesc: () =>
t`You need to login to restore attachments from a backup file. [Read more](https://help.notesnook.com/faqs/login-to-restore-attachments-in-backup).
t`You need to login to restore attachments from a backup file. [Read more](https://notesnook.com/help/faqs/login-to-restore-attachments-in-backup).
Continue without attachments?`,
pleaseLoginToDownloadAttachments: () =>