TidGi-Desktop is a cross-platform Electron application that integrates TiddlyWiki (a personal wiki) with AI agent capabilities, Git synchronization, and modern desktop features. It allows users to manage multiple workspaces (folder-based or single-file HTML wikis), sync with Git remotes, and interact with AI agents for chat, tool execution, and knowledge management. The architecture is Electron multi-process with main process, renderer processes (multiple windows), and a utility process for wiki worker. Services are wired via Inversify DI container and communicate via typed IPC (electron-ipc-cat). Key entry points include src/main.ts (Electron main), src/renderer.tsx (React renderer), src/services/agentInstance/ (AI agent lifecycle), src/services/wiki/ (wiki management), and src/services/git/ (Git operations). External dependencies include TiddlyWiki, Git (via dugite), SQLite (TypeORM), various AI SDKs (OpenAI, Anthropic, etc.), OAuth providers, and system-level integrations. The codebase is well-structured with a service-oriented architecture, extensive test coverage (unit, E2E, BDD), and a rich preference system driven by Zod schemas. It demonstrates high craftsmanship in areas like AI prompt concatenation, tool registration, and file system watching, though some modules are tightly coupled to the application's domain.
TiddlyDesktop is a desktop application that serves as a custom web browser for working with locally stored TiddlyWiki files and folders. Built on nw.js (formerly node-webkit), it provides a native windowing system to open, edit, save, and manage multiple TiddlyWiki instances. The application includes a backstage configuration wiki for managing settings, a wiki list window for organizing wikis, and support for both single-file HTML wikis (TiddlyWiki 5 and Classic) and wiki folder formats. It implements file saving via a TiddlyFox-like protocol, automatic backups, and drag-and-drop wiki registration. The architecture is modular, with separate window classes for wiki files, wiki folders, and backstage tiddlers, all managed by a central window list. The codebase is well-structured and demonstrates solid engineering practices for an nw.js application.
Jimmy is a command-line and terminal UI tool for converting notes from 50+ note-taking applications (Evernote, Obsidian, Joplin, Notion, Bear, etc.) into a unified Markdown format. It uses an intermediate representation (Notebook/Note/Resource/Tag objects) decoupled from input parsing and output writing, allowing clean extensibility. The architecture is a plugin-style converter framework with a rich set of format-specific parsers, markdown preprocessing libraries, and a resource deduplication system. The tool is distributed as standalone binaries bundling Pandoc and other dependencies. While the core abstractions are well-crafted, the vast majority of the codebase consists of tightly coupled format converters that are specific to each app's export schema, limiting general reuse. The project has extensive integration tests via a test data submodule, but many converters lack unit tests. Its requirement for Python 3.14 (a very recent version) and reliance on external binaries (Pandoc, one2html) introduce drift risks.
TiddlyWiki5 is a mature, extensible personal wiki application that runs entirely as a single HTML file in the browser or as a Node.js server. It manages content as individual 'tiddlers' — small, addressable pieces of text with metadata — and provides a powerful custom filter language for querying, transforming, and aggregating them. The application features a widget-based UI rendering engine, a pluggable wiki-text parser with dozens of rules, a built-in HTTP server with REST-like endpoints, encryption, and extensive integration plugins (geospatial maps via Leaflet/Turf, math typesetting via KaTeX, Markdown parsing, CodeMirror editing, QR codes, etc.). The architecture is highly modular: core functionality is implemented via module types (widgets, filter operators, parser rules, startup hooks, saver backends) that can be extended or overridden by plugins. The codebase has been continuously developed since 2011 and supports both client-side single-page application mode and server-side wiki mode. Despite its impressive extensibility and long history, the codebase shows signs of technical drift. The boot kernel (boot/boot.js) is a large monolithic file that mixes utility functions, the wiki store, module loading, and platform-specific startup logic. Many third-party libraries (e.g., JSZip v2.6.1, Leaflet.markercluster 1.5.3, minified CodeMirror modes) are vendored and outdated, requiring manual patching. The code style is inconsistent, with some modules using modern ES6+ features while others remain in ES5. The filter language and widget infrastructure are well-architected and reusable, but the tight coupling between core modules makes extraction for external use non-trivial. The project remains actively maintained with frequent commits, a large community, and an extensive test suite, making it a solid foundation for knowledge management applications, though significant refactoring would be needed to bring it to contemporary best practices.