Todo¶
Ideas to add to Cogitus
UI¶
- Allow key customization (using the
Textualbuilt-in functionality and the config file). - continue navigation and keybinding polish.
- add contextual dynamic toolbar/actions by mode. [mostly implemented]
- add toggle and hotkey for the left tree to expand/collapse all.
spacedoes this for the individual nodes, but it would be good to have a toggle that does all (only to the group level, not the root node). - add a tag management dialog with usage counts, rename/edit support, and explicit stale-tag pruning (selected/all stale with confirmation).
- revisit the custom footer status widgets and replace the current private
textual.widgets._footer.FooterKeydependency with a public Textual API or an internal equivalent once that can be done without reintroducing the past footer layout/refresh regressions. Low priority.
CLI¶
- add CLI commands to list, add and prune tags and groups
Database Layer¶
- In the
dbmodule there are a few places where we still use raw SQL. investigate how we can updatesqliter-pyto add missing functionality - especially SQLALTERand listing a helper to list indexes on fields/tables
Tests¶
- refactor suitable UI/integration tests to be pilot-first: use Textual's
pilotfor tests that validate keyboard behavior, focus changes, footer/binding state, screen transitions, or other user-visible interaction flows; keep direct method/event calls only for unit-style helper and branch coverage where pilot would add noise without improving confidence. - review
tytype-checker findings in tests, especially whether intentionally invalidSearchFilterconstruction should use a clearer explicit escape hatch thaninvalid_field: Any = "status".
Search and Filtering¶
- upgrade dedicated search results from best-fragment rows to true occurrence-level navigation: let one match row map to one specific occurrence where practical, then scroll the right pane to that exact occurrence and add inline match highlighting there.
- optimize advanced search query execution to reduce multi-pass PK collection and re-fetch overhead as dataset size grows.
Documentation¶
- Add realistic OpenAPI/Swagger response examples to all API endpoints, not just the MCP-exposed read-only routes.
Export, Import, and Backup¶
- add export to assorted file-types both on the tags, group and idea level.
- save and load either entire database or individual ideas
- On creating an Idea, allow to use a local or remote file as the seed (ie get a todo from a github repo or local code)
- Allow to export an Idea to a remote file (this would be more difficult and need assorted auth additions)
API¶
- reevaluate the remote API cache design once there is less planned work and technical debt: can we simplify from the current file-backed local cache to a memory-backed cache without losing the needed sync, worker-thread, startup, and cursor-state behavior?
- split API database startup initialization from per-request connection creation, then revisit changing synchronous API handlers from
async deftodefso FastAPI can safely use a threadpool with request-scopedSqliterDB/IdeaServiceinstances. - replace pre-edit full remote sync with a targeted single-idea refresh so editing one idea does not require pulling the whole remote snapshot first.
- remove plaintext secret storage from normal app settings: stop persisting the API JWT signing secret in TOML, and move the remote API password to a secret store or runtime-only prompt flow instead of keeping it as plain text in the normal config file.
- replace fragile API error-message substring matching with shared typed domain/API exceptions so HTTP 404/409/422 classification does not depend on repository and service error wording.
Undo and History¶
- add full undo ability (basically with git-like functionality, but not using git - a journal that we can unwind?) Include edited, created and deleted ideas at first, more as the need arises. How would we store this?
Profiles¶
- add profiles, link ideas to a profile, optionally password protected, allow multiple profiles and dialogs to switch between profiles from inside the app.
Relationships and Idea Graph¶
- add explicit idea linking relationships.
- add relationship browsing primitives.
- add richer metadata and prioritization signals.
- add graph-oriented idea exploration views.
- add scoring heuristics (impact/effort/confidence).
Data Layer and Performance¶
- evaluate optional SQLite write tuning (
PRAGMA synchronous=NORMAL) with benchmark and risk assessment. - make idea table writes and FTS index sync failure-tolerant.
create(),update(), anddelete()currently commit the canonical row change and then updateidea_searchseparately, so an index write failure can leave search stale until rebuild. Investigate a proper fix: shared transaction support ifsqliter-pycan expose it cleanly, or a transactional outbox/on-commit reindex queue with retry/logging plus an explicit rebuild path. - avoid unconditional FTS index rebuild on every
get_db()startup; add an index validity/version check or other lightweight verification so rebuilds only happen when needed, while keeping an explicit/manual rebuild path.
AI Assistance / MCP¶
- Write a project info or skills file (check how FastAPI does it using https://agentskills.io) so agents can understand how to use the read-only MCP server, when to fall back to CLI JSON export, and what future write support should look like.
- Consider a read-only MCP helper that returns full idea details or compact summaries for a query/group in one call, so agents do not need one
get_single_idearound trip per result when summarizing many ideas. - Plan future MCP write support as a profile-scoped agent scratchpad: keep broad read-only tools, require write tokens scoped to a Cogitus profile, add explicit JWT claims such as
profileandscope, and start with small write tools such as create note, append note, update note, and archive note. Avoid delete/write-anywhere behavior until profile isolation and recovery/history are in place. - explore optional AI-assisted idea expansion and prompt-to-structure workflows.