VNote
app.vnote.fun/en_us Windows, MacOS, LinuxA free, open-source note-taking application built with Qt, focused on providing a pleasant Markdown editing experience. It manages notes directly as plain text files on your local system.
- Homepage: app.vnote.fun/en_us
- GitHub: github.com/vnotex/vnote
- Web info: web-check.xyz/check/app.vnote.fun
VNote Source Code
Author
Description
A pleasant note-taking platform in native C++.
Homepage
https://app.vnote.funLicense
LGPL-3.0
Created
05 Oct 16
Last Updated
25 Jun 26
Latest version
Primary Language
C++
Size
72,440 KB
Stars
12,841
Forks
1,293
Watchers
12,841
Language Usage
Star History
Top Contributors
-
@tamlok (2818)
-
@feloxx (28)
-
@miurahr (16)
-
@dbkuaizi (7)
-
@Schips-Wong (5)
-
@xianzhon (5)
-
@henices (5)
-
@BeyondXinXin (4)
-
@tanle (3)
-
@tootal (3)
-
@fengwenhua (3)
-
@ygcaicn (2)
-
@LuoshuiTianyi (2)
-
@faveoled (2)
-
@akkuman (2)
-
@SugarWong97 (2)
-
@Integral-Tech (2)
-
@Erk- (2)
-
@SilverBut (1)
-
@Hijack-Everything (1)
-
@thomaskoppelaar (1)
-
@itviewer (1)
-
@YiChuJun (1)
-
@rothleer (1)
-
@MrHate (1)
-
@haipengno1 (1)
-
@plopop (1)
-
@hlyang1992 (1)
-
@zeroleo12345 (1)
-
@sclaire-1 (1)
-
@uRickLee (1)
-
@syhily (1)
-
@HelloWorld886 (1)
-
@Limosine (1)
-
@Nriver (1)
-
@kinka (1)
-
@jonmseaman (1)
-
@KenTsuRinn (1)
-
@shakna-israel (1)
-
@Igetin (1)
-
@hzhu212 (1)
-
@zirnc (1)
-
@nekoctl (1)
-
@geoffreycheungr (1)
-
@tani (1)
-
@Cedric-M (1)
-
@AlbinZhang (1)
-
@0xflotus (1)
Recent Commits
-
Le Tan (24 Jun 26)
refactor(assets): use short hex random names for inserted images and attachment folders FileUtils2::generateRandomFileName now emits a lowercase hex number in 0x0-0xffff (e.g. a3f.png) instead of a long timestamp+decimal name. Per-note vx_assets/ folders make short names viable; collisions are handled downstream (vxcore _N for images, generateUniqueFileName _N for attachment folders). Rewired the two image/attachment call sites from legacy FileUtils to FileUtils2.
-
Le Tan (24 Jun 26)
fix(notebook): disable DB/recycle-bin menu actions when no notebook Rebuild Database, Open Recycle Bin and Empty Recycle Bin are gated on an active notebook. Empty Recycle Bin is additionally disabled for read-only notebooks. Initial state is applied at menu setup so the actions start disabled on launch with no notebook.
-
Le Tan (23 Jun 26)
fix(vxcore): reconcile notebook session-record id (fix notebook reappearing after close) Bumps libs/vxcore to d0c947a so a closed notebook no longer reappears on restart when its session-record id diverged from vx_notebook/config.json (e.g. OneDrive overwrote config.json on another device).
-
Le Tan (23 Jun 26)
test(notebook): regression for NotebookNodeModel empty-state reset
-
Le Tan (23 Jun 26)
fix(notebook): clear explorer when last notebook is closed
-
Le Tan (23 Jun 26)
feat(mainwindow): wire FirstRunController and surface default notebook
-
Le Tan (23 Jun 26)
feat(controllers): add FirstRunController for default notebook bootstrap
-
Le Tan (23 Jun 26)
feat(config): expose isVersionChanged() accessor on ConfigMgr2
-
Le Tan (23 Jun 26)
test(core): assert App != Local config dirs; bump vxcore submodule Bump libs/vxcore: GetSessionConfigPath now resolves via the SSOT filename constants (fixing the session.json/vxsession.json drift), and the app/local data dirs are split into distinct subfolders in portable and test modes. Tighten testGetSessionConfigPath to require the real "vxsession.json" file name, and testGetDataPath to require App != Local unconditionally (the previous "|| contains(test)" escape hatch is obsolete now that test mode also splits the namespaces).
-
Le Tan (23 Jun 26)
docs: add v4.1.0 changelog entry for VNote 4 release
-
Le Tan (22 Jun 26)
fix(sync): persist and refresh Last Sync timestamp on two-phase sync The Sync Info dialog showed Last Sync as Never even after a successful Sync Now. The per-device last_sync_utc was never written on the production sync path: both manual and auto-sync use the two-phase API (StageOnly + NetworkPhaseOnly), neither of which persisted the timestamp (only the unused bundled TriggerSync did). Persist it on the GUI thread in SyncService::onSyncFinished (the shared completion tail for manual, auto, bootstrap-initial and post-conflict syncs) on VXCORE_OK, before emitting syncFinished. This keeps metadata.db single-threaded per notebook; writing from the sync worker would race the GUI-thread metadata.db accesses (open buffer, tags, getLastSyncUtc reads). NotebookSyncInfoDialog2::onSyncFinished now re-reads lastSyncTime() and updates the label live (without loadInitialData, so in-progress URL edits are preserved). Adds NotebookCoreService::setLastSyncUtc wrapping the new vxcore_sync_set_last_sync_utc C API. Bumps vxcore submodule.
-
Le Tan (22 Jun 26)
fix(core): silence C4858 on fire-and-forget QtConcurrent::run Discard the [[nodiscard]] QFuture from the reorder worker with a (void) cast, matching the existing pattern in opennotebookcontroller.cpp. Avoids QThreadPool::start(Callable&&) since that overload is Qt 6.3+ only and VNote targets Qt 5/6.
-
Le Tan (22 Jun 26)
build(vxcore): bump submodule for MaybeEnqueueSync comment fix
-
Le Tan (22 Jun 26)
docs: document autoSyncDebounceSeconds debounce + autoSyncEnabled gate Correct the stale 'no Qt-side debounce timer' note; document the SyncService trailing-throttle debounce, read-on-demand cadence, bypass rules, and the boolean autoSyncEnabled gate.
-
Le Tan (22 Jun 26)
test(sync): debounce test + rename updates + config round-trip Add test_sync_service_debounce (7 trailing-throttle cases via test seams). Add ConfigCoreService autoSyncDebounceSeconds round-trip + clamp coverage to test_configservice. Migrate clone/sync tests to the boolean autoSyncEnabled key.
-
Le Tan (22 Jun 26)
feat(sync): global auto-sync debounce + autoSyncEnabled gate rename Add a global autoSyncDebounceSeconds setting (vxcore.json) consumed by SyncService as a per-notebook trailing-throttle debounce on the auto-sync path (re-check-and-re-arm at fire; manual Sync Now and post-reconcile bypass). Expose it as a General-settings spinbox via new ConfigCoreService accessors (clamped 0..86400; 0=immediate). Rename the clone-flow writer field intervalSeconds->autoSyncEnabled. Bumps libs/vxcore submodule pointer.
-
Le Tan (22 Jun 26)
feat(controllers): reduced context menu for missing nodes
-
Le Tan (22 Jun 26)
build(vxcore): bump submodule for phantom structural-op error code
-
Le Tan (22 Jun 26)
fix(controllers): route phantom nodes to removal in paste/pin, flag missing on reopen
-
Le Tan (21 Jun 26)
build(vxcore): bump submodule for missing-folder delete fix
-
Le Tan (21 Jun 26)
test(integration): add Qt missing-node detection tests
-
Le Tan (21 Jun 26)
feat(widgets): batch 'remove missing from index' prompt
-
Le Tan (21 Jun 26)
feat(controllers): detect missing nodes + batch removal wiring
-
Le Tan (21 Jun 26)
feat(views): render missing nodes dimmed in node delegate
-
Le Tan (21 Jun 26)
feat(models): add IsMissingRole + populate/clear isMissing
-
Le Tan (21 Jun 26)
feat(services): surface NODE_NOT_EXISTS + exists flag in notebook service
-
Le Tan (21 Jun 26)
feat(services): surface NODE_NOT_EXISTS from buffer open
-
Le Tan (21 Jun 26)
feat(core): add NodeInfo.isMissing transient flag
-
Le Tan (21 Jun 26)
build(vxcore): bump submodule for missing-node detection API
-
Le Tan (21 Jun 26)
feat(sync): prompt to complete sync info after opening a partial-sync notebook When a notebook is opened from a local folder and its sync backend is configured on disk but the PAT is missing from the keychain (sync state S2), auto-open NotebookSyncInfoDialog2 in bootstrap mode so the user can supply the PAT right away instead of having to find the Sync button. The prompt is driven off the authoritative reconcileFinished signal (emitted after the async credential lookup) rather than a synchronous classify after the open dialog closes, which would deterministically false-positive on a cold credential cache. A per-id pending set scopes the prompt to interactively-opened notebooks only, so the startup reconcile sweep never triggers a dialog storm, and a classify() re-check guards against transient keychain faults that also surface as VXCORE_ERR_SYNC_AUTH_FAILED. Adds real-classifier S2 detection plus prompt-gating mirror tests in test_notebook_explorer_sync_state (6 new cases, all passing).
VNote Security
Security Advisories (2)
- high Patched CVSS 8.6
CVE-2024-41662 Markdown XSS leads to RCE
- high Patched
CVE-2024-39904 Code Execution Vulnerability via Local File Path Traversal in Vnote
VNote Website
Website
Viki - A simple Wiki page in Markdown from notebook of VNote
Redirects
Does not redirect
Security Checks
1 security checks failed (64 passed)
- Top-Level Domain Highly Abused
Server Details
- IP Address 185.199.108.153
- Hostname cdn-185-199-108-153.github.com
- Location California, Pennsylvania, United States of America, NA
- ISP GitHub Inc.
- ASN AS54113
Associated Countries
-
US
Safety Score
Website marked as risky
70%
Blacklist Check
app.vnote.fun was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
VNote Reviews
More Digital Notes
-
Private & encrypted rich-text documents. Cryptee has encryption and anonymity at its core, it also has a beautiful and minimalistic UI. You can use Cryptee from the browser, or download native apps. Comes with many additional features, such as support for photo albums and file storage. The disadvantage is that only the frontend is open source. Pricing is free for starter plan, $3/ month for 10GB, additional plans go up-to 2TB.
Not Open Source -
Cross-platform desktop and mobile note-taking and todo app. Easy organisation into notebooks and sections, revision history and a simple UI. Allows for easy import and export of notes to or from other services. Supports synchronisation with cloud services, implemented with E2EE.
-
Privacy-first, open-source knowledge base that works on top of local plain-text Markdown and Org-mode files. Supports lots of different note modes, including task management, PDF annotation, flashcards, whiteboards strong markdown support and more. Includes themes and extensions, backed by a strong community
-
An offline markdown-based note editor for desktop, with a simple, yet feature-rich UI. All notes are saved individually as .md files, making them easy to manage. No mobile app, built-in cloud-sync, encryption or web UI. But due to the structure of the files, it is easy to use your own cloud sync provider, and additional features are provided through extensions.
-
A powerful knowledge base that works on top of local plain-text Markdown files. It has a strong community, and a lot of plugins and themes. Generally privacy-respecting, but no encryption out of the box, and some of the code is obfuscated or not fully open source
Not Open Source -
S.Notes is a free, open-source, and completely encrypted private notes app. It has a simple UI, yet packs in a lot of features, thanks to the Extensions Store, allowing for: To-Do lists, Spreadsheets, Rich Text, Markdown, Math Editor, Code Editor and many more. You can choose between a number of themes (yay, dark mode!), and it features built-in secure file store, tags/ folders, fast search and more. Standard Notes is actively developed, and fully open-source.
-
A secure, collaborative notebook. Self-host it yourself, or use their hosted plan (free edition or $3/ month for premium).
About the Data: VNote
Change History
API
You can access VNote's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/vnote The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share VNote
Help your friends compare Digital Notes, and pick
privacy-respecting software and services.
Share VNote and Awesome Privacy with your network!