Fork of open-source BookmarkHub: sync bookmarks via GitHub Gist or Gitee snippets, with optional semi-automatic upload/pull aligned with the HarmonyOS app.
Repos: GitHub (issues, Releases) · Gitee (发行版 — use this site’s Releases when browsing on Gitee).
Not the official store “BookmarkHub” from the original authors. See License before redistributing.
Apache-2.0 (see LICENSE). Redistribution: keep license and notices; mark your changes; fill NOTICE if you ship builds. Upstream: open-source BookmarkHub — this project is not affiliated with upstream or their store listing. Disclaimer: AS IS — LICENSE §§7–8.
Upstream: manual sync, counts, Gist storage. Plus:
- Optional auto-upload after bookmark changes (~4.5s debounce).
- Optional periodic / startup pull (15 / 30 / 60 min via
alarms). - Gitee backend option in settings.
- Dirty guard: auto-pull skipped while local changes aren’t uploaded yet (
SyncDataInfo.createDate/ same idea as the HarmonyOS client). - Auto sync paths stay quiet on success unless you enable notifications.
Extra permission vs upstream: alarms (for periodic pull).
Install: Huawei AppGallery — com.jonas.webbookmarks
Source: jonas-pi/webfolder
A — Pre-built zip (no Node)
Download from the same site you use: GitHub Releases or Gitee 发行版 → file like bookmarkhub-*-chrome.zip. Extract so the folder you load contains manifest.json at its root. Chromium: chrome://extensions / edge://extensions → Developer mode → Load unpacked → pick that folder → in Options, choose GitHub Gist or Gitee and fill token, snippet ID, and filename. Update: new zip from the same Releases site → Reload the extension.
B — Build: npm install (try --legacy-peer-deps if needed) → npm run build → Load unpacked → .output/chrome-mv3. Firefox: npm run build:firefox → about:debugging → temporary load manifest.json (clears on full browser restart). Zip: npm run zip / npm run zip:firefox. Dev: npm run dev / npm run dev:firefox.
Sync backends (pick one in extension options — tokens and IDs are not interchangeable):
- GitHub Gist: Personal access token with gist scope → create a secret Gist → paste Token, Gist ID, and filename in Options.
- Gitee 代码片段: 私人令牌 with snippet / gists permission → create a private snippet → paste Token, snippet ID, and filename (same fields in the UI; labels match the selected provider).
Optional: auto-upload / periodic pull (pull is skipped while local changes are dirty / not yet uploaded).
Warning: upload overwrites remote file; download replaces local bookmarks — back up first (also when using the HarmonyOS app).