Version 0.9.0 of package Gnosis has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Gnosis describes itself as: ================ Knowledge System ================ More at https://elpa.gnu.org/packages/gnosis.html ## Summary: 1 Gnosis ════════ 1.1 About ───────── Gnosis is a GNU Emacs learning tool, with a spaced repetition like implementation. • Project's Page: <https://thanosapollo.org/projects/gnosis/> • User Manual: <https://elpa.nongnu.org/nongnu/doc/gnosis.html> ⁃ Demo deck: <https://codeberg.org/thanosapollo/gnosis-demo> ⁃ /It's recommended to try out the demo deck for first time users./ ## Recent NEWS: 2026/03/16 2026/03/04 ⁃ [Homepage] ⁃ [Upstream] ⁃ [Changelog] [Homepage] <https://thanosapollo.org/projects/gnosis/> [Upstream] <https://git.thanosapollo.org/gnosis/> [Changelog] <https://thanosapollo.org/log/gnosis/> 1 0.9.0 ═══════ 1.1 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. 1.2 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. 1.3 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. 1.4 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. 1.5 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. 2 0.8.0 ═══════ 2.1 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'. 2.2 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. 2.3 Bug fixes ───────────── ⁃ Fix anagnosis event calculation in the algorithm. … …
