TidGi is an privatcy-in-mind, automated, auto-git-backup, freely-deployed Tiddlywiki knowledge management Desktop note app, with local REST API. 「 太记 」是一个基于「 太微 TiddlyWiki 」的知识管理桌面应用,能保护隐私内容、高级自动化、自动Git云备份、部署为博客,且可通过RESTAPI与Anki等应用连接。(迭代开发中欢迎试用,开发进度见下方链接)(Under active development, see website below for details)
Find a file
lin onetwo 9a6f3480f5
Feat/watch fs (#649)
* Add watch-filesystem-adaptor plugin and worker IPC

Introduces the watch-filesystem-adaptor TiddlyWiki plugin, enabling tag-based routing of tiddlers to sub-wikis by querying workspace info via worker thread IPC. Adds workerServiceCaller utility for worker-to-main service calls, updates workerAdapter and bindServiceAndProxy to support explicit service registration for workers, and documents the new IPC architecture. Updates wikiWorker and startNodeJSWiki to preload workspace ID and load the new plugin. Also updates the plugin build script to compile and copy the new plugin.

* test: wiki operation steps

* Add per-wiki labeled logging and console hijack

Introduces labeled loggers for each wiki, writing logs to separate files. Adds a logFor method to NativeService for logging with labels, updates interfaces, and hijacks worker thread console methods to redirect logs to main process for wiki-specific logging. Refactors workspaceID usage to workspace object for improved context.

* Update log handling for wiki worker and tests

Enhanced logging tests to check all log files, including wiki logs. Adjusted logger to write wiki worker logs to the main log directory. Updated e2e app script comment for correct usage.

* Enable worker thread access to main process services

Introduces a proxy system allowing worker threads to call main process services with full type safety and observable support. Adds worker-side service proxy creation, auto-attaches proxies to global.service, and updates service registration to use IPC descriptors. Documentation is added for usage and architecture.

* Update ErrorDuringStart.md

* chore: upgrade ipc cat and allow clean vite cache

* Refactor wiki worker initialization and service readiness

Moved wiki worker implementation from wikiWorker.ts to wikiWorker/index.ts and deleted the old file. Added servicesReady.ts to manage worker service readiness and callbacks, and integrated notifyServicesReady into the worker lifecycle. Updated console hijack logic to wait for service readiness before hijacking. Improved worker management in Wiki service to support detaching workers and notifying readiness.

* Refactor wiki logging to use centralized logger

Removed per-wiki loggers and console hijacking in favor of a single labeled logger. All wiki logs, including errors, are now written to a unified log file. Updated worker and service code to route logs through the main logger and removed obsolete log file naming and management logic.

* fix: ipc cat log error

* Refactor wiki test paths and improve file save logic

Updated test step to use wikiTestRootPath for directory replacements and added wikiTestRootPath to paths.ts for clarity. Improved error handling and directory logic in watch-filesystem-adaptor.ts, including saving tiddlers directly to sub-wiki folders, more informative logging, and ensuring cleanup after file writes is properly awaited.

* rename

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* feat: basic watch-fs

* feat: check file not exist

* refactor: use exponential-backoff

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* Initial commit when init a new git.

* fix: cleanup

* Refactor test setup and cleanup to separate file

Moved Before and After hooks from application.ts to a new cleanup.ts file for better organization and separation of concerns. Also removed unused imports and related code from application.ts. Minor type simplification in agent.ts for row parsing.

* test: modify and rename

* feat: enableFileSystemWatch

* refactor: unused utils.ts

* Update watch-filesystem-adaptor.ts

* refactor: use node-sentinel-file-watcher

* refactor: extract to two classes

* The logFor method lacks JSDoc describing the level parameter's

* Update startNodeJSWiki.ts

* fix: napi build

* Update electron-rebuild command in workflows

Changed the electron-rebuild command in release and test GitHub Actions workflows to use a comma-separated list for native modules instead of multiple -w flags. This simplifies the rebuild step for better-sqlite3 and nsfw modules.

* lint

* not build nsfw, try use prebuild

* Update package.json

* Update workerAdapter.ts

* remove subWikiPlugin.ts as we use new filesystem adaptor that supports tag based sub wiki

* fix: build

* fix: wrong type

* lint

* remove `act(...)` warnings

* uninstall chokidar

* refactor and test

* lint

* remove unused logic, as we already use ipc syncadaptor, not afriad of wiki status change

* Update translation.json

* test: increast timeout in CI

* Update application.ts

* fix: AI's wrong cleanup logic hidden by as unknown as

* fix: AI's wrong  as unknown as

* Update agent.feature

* Update wikiSearchPlugin.ts

* fix: A dynamic import callback was not specified.
2025-10-28 13:25:46 +08:00
.github Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
.vscode Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
build-resources Feat/mini window (#642) 2025-10-21 20:07:04 +08:00
docs Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
features Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
localization Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
patches Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
scripts Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
src Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
template Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
tiddlers/subwiki feat: show better error message when html extract failed 2022-11-19 22:14:40 +08:00
.editorconfig refactor: initial transform to ts 2020-12-19 22:33:59 +08:00
.env feat: add SKIP_PREFLIGHT_CHECK=true to skip silly react check 2020-08-22 19:36:24 +08:00
.gitattributes Create .gitattributes 2021-07-08 23:23:59 +08:00
.gitignore test: codeql for wikioperation (#647) 2025-10-24 16:40:32 +08:00
.gitmodules refactor: make template wiki a git submodule 2021-09-09 00:16:43 +08:00
.npmrc Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
.nvmrc chore: upgrade deps 2024-11-24 16:59:21 +08:00
.pnpmfile.cjs Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
dprint.json fix: dprint conflict 2023-05-19 11:06:29 +08:00
eslint.config.mjs Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
forge.config.ts Feat/mini window (#642) 2025-10-21 20:07:04 +08:00
forge.env.d.ts Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
index.html Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
LICENSE Initial 2019-08-30 11:41:23 +07:00
package.json Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
pnpm-lock.yaml Feat/watch fs (#649) 2025-10-28 13:25:46 +08:00
PrivacyPolicy.md refactor: rename tiddlygit to tidgi in code 2021-12-18 13:16:26 +08:00
README.md Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
reviewpad.yml feat: add reviewpad.yml file 2023-07-04 20:29:50 +08:00
tsconfig.json Feat/mini window (#642) 2025-10-21 20:07:04 +08:00
tsconfig.test.json Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
vite.main.config.ts Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
vite.preload.config.ts Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
vite.renderer.config.ts Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
vite.worker.config.ts Feat/Native AI Agent (#640) 2025-10-10 17:16:56 +08:00
vitest.config.ts Chore/upgrade (#646) 2025-10-23 23:42:06 +08:00

TidGi

Customizable personal knowledge-base with git as backup manager and blogging platform.

License: MPL 2.0 GitHub Actions Build Status Lin Onetwo! Power by tiddlywiki!


Pronounce: Same as Tai Chi /ˌtaɪ ˈtʃiː/

🇬🇧 English | 🇨🇳 简体中文

ShowCases And Demo

Demo

Screenshot

Screenshot of main-window

Load NodeJS Wiki
Screenshot of main-window
Create Local Wiki Clone Online Wiki
Screenshot of add-workspace Screenshot of clone-workspace
Translation, Preferences
Screenshot of preference
Interactive code
Screen recording of zx-script in tiddlywiki
Community Plugin Library
Screenshot of add-workspace
For mac users, since I haven't buy Apple developer key yet, so you have to entrust App to open it, click here to expand details.◀

First of all, you need to drag this App into Applications folder! Otherwise there will be an error.

Click "Cancel" ↓

step00001

step00002

step00003

Click "Open" ↓

step00004

Click "OK" ↓

step00005

No English posts yet...Please help sharing!

About TidGi-Desktop

TidGi is a cross-platform Note Taking & GTD & Fragment Knowledge Management desktop app powered by nodejs-TiddlyWiki, it ship with a lot of tiddlywiki plugins from the TiddlyWiki community.

You can call it TG-Note, it is totally free and you own all your data. Code by the people, build for the people.

It used to named TiddlyGit, means TiddlyWiki with easy Git backup, short for TidGi now.

Download

Packaging status

For Windows MacOS normal user

Download
GitHub Releases

For arch user

yay tidgi

For MacOS CLI user

brew install TidGi # Not tested

Mobile App

  • TidGi-Mobile is the official pair with TidGi-Desktop, developed by @linonetwo, fast for 100MB+ wiki.
  • See Tiddloid for Android App developed by @donmor. Good for smaller wiki, and you can have access to your HTML wiki.

You can switch between them, and sync data between them and TidGi at any time. All of them are local-first, open-sourced and compatible with TiddlyWiki ecosystem.

Data Privacy Protection

You can choose storage provider for your wiki workspace:

  1. "Github" as unlimited storage and gh-pages blogging platform.
  2. "Local" will create a local git repo for you, you can use GithubDesktop to sync manually.
  3. "Gitlab" and "Gitee" is on the way

Differences

Differences from TiddlyDesktop?

  1. NodeJS version of TiddlyWiki have seamless auto-save experience, which is taking the advantage of SyncAdaptor instead of Saver, TG have better support for NodeJS wiki
  2. Using NodeJS wiki, We can have separated tiddler files, which can be modified by hand, or by other programs (e.g. VSCode with VSCode-TW5-Syntax)
  3. Though TiddlyDesktop can also load wiki folder generated by nodejs-TiddlyWiki, TG can backup that folder to the Github easily
  4. With the Electron technology, we can use fs, git and many other nodejs things within TiddlyWiki, which greatly extend the hackability, which is the reason why I choose TiddlyWiki as my daily KM tool

Why Github?

Because Github is one of the best free civil level BaaS:

  1. Its storage is basically free, allow us to store unlimited images and PDF files, which can have permanent URIs for public download
  2. It has GraphQL API that allow us programmatically update our wiki
  3. It has free CI to automatically deploy our TiddlyWiki blog
  4. It provides unlimited repository, public and private, which enables us to store private content into our TiddlyWiki

Development

Read Dev doc for details.

Credits

The desktop app shell is based on https://github.com/atomery/singlebox and atomery/webcatalog, they provide lots of utils around website-generated-app, much powerful than generating app from website simply using Chrome. Also the independent developer @quanglam2807 behind these great tools helps me a lot when I develop TidGi.

Current Icon is download from iconsdb under Creative Commons Attribution-NoDerivs 3.0 , if you are a designer, please feel free to contribute your ICON if you have a better idea.

Stargazers over time

Please give a star if you like it!

Stargazers over time