Gnosis Change Log

Homepage Upstream Changelog 0.9.0 Breaking changes Dropped emacsql dependency: gnosis now uses Emacs’s built-in sqlite module (requires Emacs 29+). The new gnosis-sqlite backend handles all database access. Unified database: org-gnosis has been merged into gnosis. A single gnosis.db stores both themata and nodes. Existing org-gnosis data is migrated automatically. Decks removed: the deck abstraction is gone. Existing deck names are automatically converted into tags during the v6 migration, so no data is lost. Export and import are now thema-centric with tag filtering. New features Anki import: import Anki decks or user collections directly with gnosis-anki-import. Tag filtering: gnosis-tags-filter-prompt supports +tag -tag syntax for include/exclude filtering. Used in export and gnosis-collect-thema-ids. Day start hour: gnosis-algorithm-day-start-hour (default 3) lets you define when a new review day begins. Tag bulk operations: rename, regex bulk rename (R), merge case duplicates (C), bulk delete, and suspend/unsuspend from the dashboard tags view. Tag renames are merge-safe (handles UNIQUE conflicts when target tag already exists). Elapsed time intervals: the algorithm uses actual elapsed time for interval calculation. Review transient menu: gnosis-review uses transient instead of completing-read. Template expansion: {*} heading markers in templates are expanded relative to insertion context via gnosis-org-expand-headings. Export with tag filtering: gnosis-export-themata supports tag filtering and node export. Dashboard Tags view with regex filter (l), regex search (SPC), and tag counts. Bulk tag rename via regex pattern (R) using a temp-table approach for O(1) SQL statements regardless of batch size. Anki import keybinding in the dashboard menu. Merge case-duplicate tags (C): groups tags by case, keeps the most-used variant as canonical. Meant to simplify imports from anki decks hierarchical tag structure Entry cache for themata view (avoids re-querying unchanged entries). Cache invalidation on tag mutations so the themata view stays fresh. Performance Batch SQL helpers: gnosis-sqlite-execute-batch and gnosis-sqlite-select-batch auto-chunk IN clauses to stay within SQLITE_MAX_VARIABLE_NUMBER. N+1 query patterns eliminated throughout: tag suspend, tag delete, bulk link, export, and dashboard operations. Bulk tag rename uses a temp mapping table (4 SQL statements for any number of renames, instead of 2N). SELECT DISTINCT replaces Elisp deduplication for tag lookups. Bug fixes Fix DST bug in gnosis-algorithm-date. Fix gnosis-review-topic: flatten select results, fix y-or-n-p logic. Fix gnosis-completing-read to use completing-read for require-match. Fix force-sync purge and journal link FK violation. Warn on duplicate filename when timestring is nil in node creation. 0.8.0 New features Auto input-method detection: gnosis detects the script of the expected answer (Greek, Cyrillic, etc.) and activates the appropriate input method during review. Configured via gnosis-script-input-method-alist. Change thema type and deck via gnosis-update-thema. Dashboard bulk-link action for currently displayed themata. Dashboard header-line with entry count and context. Asynchronous deck import with gnosis-import-deck-async. Demo deck included in decks/demo.org. Performance New gnosis-tl module replaces tabulated-list-print for dashboard rendering (3-4x faster). Progressive async rendering for large dashboards. Batch-fetch review data instead of per-thema queries. Bug fixes Fix anagnosis event calculation in the algorithm. Fix cloze tag removal for edge cases and mc-cloze type. Fix vc-pull to run migrations after pull. 0.7.0 New features Review topic from dashboard nodes view (r), with configurable forward-link and backlink depth (R or C-u r). gnosis-review-topic accepts separate forward/backlink depth to include themata from related nodes. gnosis-save-hook runs after saving a thema, called with the thema ID. Link integrity detection and repair commands (gnosis-links-check, gnosis-links-sync). Dashboard maintenance menu for syncing/rebuilding nodes and link health checks. Dashboard shows themata with orphaned links. View due org-gnosis nodes linked to themata from dashboard. Bulk replace string in keimenon with org-gnosis node link. Custom gnosis-center-content-during-review option. Delete action available during review. Format org-gnosis links in keimenon during review output. Export deck option to include or exclude suspended themata. Exported decks include a #+THEMATA: header with thema count. Importing into an existing deck prompts for confirmation. Failed thema imports report the source file line number. Dashboard Added nodes dashboard, view org-gnosis nodes information including backlinks and linked themata as well as start a review session. Suspend column displays Yes No instead of 1 0. Flatten Actions submenu into the home menu. Separate Import/Export into its own menu column. Four-column layout: Navigate, Actions, Import/Export, Maintenance. Algorithm Cap gnosis-synolon at gnosis-algorithm-synolon-max (default 3.0), floor at 1.3. Add interval fuzz to prevent review clustering. Fix lethe event: properly reduce gnosis-plus on consecutive failures. Performance Dashboard suspend, delete, and edit update only the affected entry instead of refreshing the entire buffer. Dashboard nodes view uses bulk queries for link counts (2 queries instead of 2N). Deck export uses 2 bulk queries instead of 2 per thema (N+1 eliminated). Deck export uses plain text insertion instead of per-thema buffer scans (O(n^2) eliminated). Deck import wraps all operations in a single transaction with pre-cached IDs (10K fsyncs reduced to 1). Review updates use a single DB query. Tag output uses a single DB call. Average daily reviews computed with a single DB call. Bug fixes Fix gnosis-monkeytype hook leak (now buffer-local). Fix vc-pull to reopen database properly after successful pull. Pre-load emacsql-sqlite-builtin to fix cl-generic dispatch crash on Emacs 29+. Documentation Update Introduction to describe the intended workflow with org-gnosis (write notes, create themata, link, review). Document the two separate databases (gnosis and org-gnosis). Update dashboard section for new menu layout. Add Import & Export section with export options and import behavior. 0.6.0 New features View links to org-gnosis nodes during review. Monkeytype wrong answers upon failed recalls. gnosis-modeline-mode Add ‘warning face property for due themata indication. cloze themata [fix] Properly center keimenon during reviews. Other gnosis-cloze-string value defaults to "(...)". 0.5.8 Update database to version 5. Restructure gnosis modules. Add monkeytype functionality. 0.5.7 Resolve issues relating to selecting multiple questions on dashboard. Resolve issues for suspending content. Improve performance for suspending multiple questions 0.5.6 Fix issues for clozes with multiple identical answers. Improve performance for suspending multiple notes via the dashboard. Display newlines when reviewing notes. Add feature to mark all notes present at current dashboard. 0.5.5 Performance improvements for un/suspending decks. Minor bug fixes & adjustments. 0.5.4 New feature: open of file links in a new buffer. This can be used to view images or pdf/ebooks. Change syntax highlighting to org mode. Quitting viewing notes/decks returns to dashboard home page. Minor bug fixes & adjustments on dashboard. 0.5.3 Fix gnosis algorithm bug for failed reviews with custom amnesia value of lower than 0.5. Update documentation. 0.5.2 Fix importing deck issues with non-new gnosis ids. Minor aesthetic changes on review header. Remove modeline review indication when due reviews are 0. 0.5.1 Minor bug fixes & documentation update. 0.5.0 Announcement post ...

Org Gnosis Change Log

This document contains the release notes that are included in each tagged commit on the project’s main git repository: https://git.thanosapollo.org/org-gnosis. 0.2.1 Critical Fixes Database Sync Fixed org-gnosis--delete-file querying with full paths instead of basenames, causing incremental sync to silently fail. Fixed org-gnosis-update-file to accept full paths and correctly detect journal files. Fixed force sync not recreating indexes after dropping tables. Removed redundant table rebuild in org-gnosis-db-sync. Emacs 29+ Compatibility Fixed wrong-type-argument processp error on Emacs 29+ by pre-loading emacsql-sqlite-builtin to ensure cl-generic dispatches the correct methods for builtin sqlite connections. Other Fixes Fixed reversed SQL condition in org-gnosis-insert. Fixed org-gnosis-mode not passing LOCAL argument to remove-hook, causing the after-save hook to be removed globally instead of per-buffer. Fixed typo in default org-gnosis-journal-file path. Fixed tags--cleanup-orphaned indentation causing incorrect behavior. Fixed org-gnosis-insert-tags redundant expression. Fixed org-gnosis-find error message and redundant expression. New Features Added org-gnosis-db-force-sync command for unconditional database rebuild. Provides clearer alternative to C-u M-x org-gnosis-db-sync. Prompts for confirmation before dropping tables. Improvements Database version bumped to 4 with indexes on file columns for faster sync lookups. Simplified orphaned tags cleanup into a single SQL query. Extracted directory creation into org-gnosis-ensure-directories. Improved error messages to suggest org-gnosis-db-force-sync. Fixed docstrings and checkdoc warnings. Testing Added 29 regression tests covering database init, CRUD, tags, links, sync change detection, file naming, journal, and mode hooks. 0.2.0 Important Changes Database Changes Database version bumped to 3, tracking mtime and hash for both nodes and journal files. Automatic database migration prompts when schema is outdated. Lazy database initialization - database connections are created only when needed, improving startup time. Added org-gnosis-database-file custom variable to specify custom database file location. Performance Improvements Major performance improvements for org-gnosis-db-sync with GC optimization during sync. Two-tier incremental sync: fast mtime check, then accurate hash comparison. Only processes files where both modification time and content have changed. Dramatically improves performance for .gpg encrypted files and large repositories. Both node files and journal files now use incremental sync with progress reporting showing changed/total file counts. To force full resync, call org-gnosis-db-sync with prefix arg C-u. e.g C-u M-x org-gnosis-db-sync RET. Journaling By default, today’s journal entries are created in org-gnosis-journal-file as level 1 headings. When set to nil, creates separate files for each date entry. Creating new entries (e.g., via org-gnosis-journal-find for an event, non-date) creates separate files in org-gnosis-journal-dir regardless of this setting. Single journal file is only used for today’s date entries. Added org-gnosis-journal-as-gpg that when non-nil journal files will be created as gpg encrypted files. Journal todos now only retrieve checkboxes from today’s heading when using a single journal file, improving performance. Tag Management Automatic cleanup of orphaned tags (tags with no associated nodes) when updating files. Improved tag-based node selection with dedicated functions. Improvements Simplified parsing algorithm for better performance and maintainability. Better handling of topic titles - only includes parent headings when they have IDs. Added org-gnosis-get-nodes-data for retrieving node information with backlink counts. Improved test coverage for parsing, title processing, and journal todos. 0.1.2 Important Changes Titles for nodes are now stacked with their parent headings. ...