Changelog
All notable changes to IssueDB are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.11.0] - 2026-06-21
Changed
Internal modularization: the four largest modules were split into packages (
database/,repository/,cli/,web/) so no source file exceeds 550 lines. This is a pure refactor — the public API, CLI, and web behaviour are unchanged.
[2.10.0] - 2026-06-21
Fixed
``create –tag`` did nothing: the documented
create --tagflag was never implemented;createnow accepts repeatable--tagoptions and attaches them.Due date / estimate never displayed:
_row_to_issueused"col" in row, butsqlite3.Rowmembership tests values not column names, sodue_dateandestimated_hourswere stored but never read back onto anIssue. Now fixed (usesrow.keys()), soget/listshow due dates again.Cannot clear a field:
update -d ""/--due-date ""now clears the field (previously the empty value was silently ignored).Redundant due-date audit entries: re-setting the same due date is now a true no-op (dates are normalised before comparison).
Time report dropped estimated issues:
get_time_reportkept its time predicates inWHERE, silently turning theLEFT JOINinto anINNER JOIN; issues with an estimate but no logged time in the period are no longer dropped.Non-atomic operations:
add_dependencynow checks for cycles inside the same transaction as the insert (rolling back on a cycle), andstart_issue/stop_issueapply the workspace and status changes together;get_last_fetchedno longer opens a nested connection mid-iteration.Unreachable CLI commands: the
find-similaranddedupesubparsers were registered afterparse_args()and could never be invoked; the time-tracking (timer-start,timer-stop,timer-status,estimate,time-log,time-report), code-reference (attach,detach,refs,affected) and pattern bulk commands (bulk-close-pattern,bulk-update-pattern,bulk-delete-pattern) had implementations but were never wired to the parser or dispatcher. All of these are now registered and dispatched.``report`` crash:
get_report(group_by="status")raisedKeyErrorfor any issue with the validwont-dostatus.wont_dois now grouped correctly.Wrong database returned: the
Databasesingleton was keyed on a single global instance, so a request for the default database could return a previously-opened custom path (and concurrent web requests with?db=could clobber each other). Instances are now cached per resolved path.``–json`` error output: errors are now emitted as JSON (
{"error": ...}) when--jsonis set instead of plain text.``summary``/``report``/``info``: human-readable output no longer leaks raw Python
dictreprs for nested values.Thread pragmas:
PRAGMA synchronous=NORMALis now applied to every connection instead of only the first thread’s.``clear``: now clears all data tables, not just
issuesandaudit_logs.Similarity performance: long descriptions no longer trigger an O(n·m) character Levenshtein blow-up; token similarity is used past a length cap and for very uneven lengths (which also improves short-query-in-long-text matching).
Git integration: all
gitsubprocess calls now use a timeout, an explicitutf-8/replacedecode, and--/ leading-dash guards against argument injection.
Security
CSRF: state-changing web requests from a cross-origin
Origin/Refererare now rejected; a secret key is always set.Stored XSS: the linked-issue delete button no longer interpolates the user-controlled relation type into an inline
onclickhandler.Command injection: the Ollama helper no longer runs model-generated commands through
shell=True; commands are parsed withshlexand must start withissuedb-cli.Input validation: invalid
status/priorityand malformed JSON bodies in the web API now return400instead of500.Safer default bind:
issuedb-cli webnow binds to127.0.0.1by default (pass--host 0.0.0.0to expose it on the network).CSS injection: tag colours are validated against a hex pattern before being rendered into inline
styleattributes (invalid values fall back to a default).Open redirect: the comment-delete endpoint redirects to a server-built URL instead of the client-supplied
Referer.Resource limits: the Ollama helper truncates oversized requests and caps the response read.
Changed
bulk-updaterefuses to update all issues unless a filter is given or the new--allflag is passed.Status.from_stringnow accepts underscore and space separators (e.g.in_progress) in addition to the canonical hyphenated form.
[2.5.0] - 2025-11-29
Added
Memory System: Persistent storage for AI agents and general knowledge
memorycommand to add, list, update, and delete memory itemsMemorymodel and database tableWeb UI integration at
/memory
Lessons Learned: Track knowledge gained from resolved issues
lessoncommand to add and list lessonsLessonLearnedmodel and database tableWeb UI integration at
/lessons
Tagging: Flexible categorization for issues
tagcommand to add, remove, and list tags--tagflag increateandlistcommandsTag filtering in CLI and Web UI
Due Dates: Set deadlines for issues
--due-dateflag increateandupdatecommandsDue date display in CLI and Web UI
Linked Issues: Connect related issues
linkandunlinkcommands to manage relationshipsRelationship types (e.g., “related”, “blocks”)
Web UI support for linking issues
Web UI Enhancements:
New Memory and Lessons pages
Linked Issues section in Issue Detail
Improved sidebar layout
[2.4.0] - 2025-11-26
Added
Issue Dependencies: Track blocking relationships between issues
blockcommand to mark issues as blocked by othersunblockcommand to remove blockersdepscommand to view dependency graphblockedcommand to list all blocked issues
Code References: Link issues to specific code locations
attachcommand to link files/lines to issuesdetachcommand to remove code referencesrefscommand to list references for an issueaffectedcommand to find issues referencing a file
Time Tracking: Track time spent on issues
timer-startandtimer-stopcommandstimer-statusto check active timersset-estimateto set estimated hourstime-logto view time entriestime-reportfor time summaries (all/week/month)
Workspace Awareness: Track current working context
workspacecommand for status overviewstartcommand to begin working (sets active + starts timer)stopcommand to finish working (with optional –close)activecommand to show current issue
Issue Context: Comprehensive context for LLM agents
contextcommand returns issue + comments + history + related + suggestions--compactflag for minimal context
Duplicate Detection: Find similar issues
find-similarcommand with configurable thresholdfind-duplicatesto find duplicate groups--check-duplicatesflag for create commandSimilarity algorithms: Levenshtein and Jaccard
Issue Templates: Predefined issue templates
templatescommand to list available templates--templateflag for create commandBuilt-in templates: bug, feature, task
Bulk Pattern Operations: Pattern-based bulk operations
bulk-close-patternfor closing by patternbulk-update-patternfor updating by patternbulk-delete-patternfor deleting by patternSupport for glob and regex patterns
--dry-runflag for preview
Database schema: New tables for dependencies, code_references, time_entries, workspace_state, issue_templates
Tests: 501 tests covering all new functionality
Changed
Updated LLM agent prompt (PROMPT.txt) with all new commands
Updated README.md with new features
Updated CLI reference documentation
Improved type annotations (mypy clean)
Code style improvements (ruff clean)
[2.3.1] - 2025-11-25
Fixed
–ollama flag now accepts unquoted multi-word requests
Before:
issuedb-cli --ollama "create a high priority bug"After:
issuedb-cli --ollama create a high priority bugNote:
--ollama-model,--ollama-host,--ollama-portmust come BEFORE--ollama
4 new tests for argparse behavior (now 136 total)
[2.3.0] - 2025-11-25
Added
Fetch History Tracking: Track which issues were fetched via
get-nextget-nextnow logs aFETCHaction in the audit trailget-lastcommand to view last fetched issue(s)-n/--numberflag to get last N fetched issues (default: 1)Shows current state of existing issues or reconstructs deleted issues from audit log
Example:
issuedb-cli get-last -n 5to see last 5 fetched issues
Repository methods:
get_last_fetched(limit)API parameter:
log_fetchinget_next_issue()to control loggingTests: 16 new tests for get-last functionality (now 132 total)
Changed
Updated LLM agent prompt with get-last examples
Full documentation update
[2.2.0] - 2025-11-24
Added
Comment system: Add comments to issues for tracking notes, progress, and resolutions
commentcommand to add comments to issueslist-commentscommand to view all comments on an issuedelete-commentcommand to remove commentsComments are automatically deleted when their parent issue is deleted (CASCADE)
CLI methods:
add_comment(),list_comments(),delete_comment()Repository methods:
add_comment(),get_comments(),delete_comment()Comment model: New
Commentdataclass withto_dict()methodDatabase schema: New
commentstable with foreign key to issuesTests: 19 new tests for comment functionality
Changed
Enabled SQLite foreign key constraints for data integrity
Updated documentation with comment examples
[2.1.0] - 2025-01-XX
Added
Bulk operations: Efficiently manage multiple issues at once
bulk-createcommand: Create multiple issues from JSONbulk-update-jsoncommand: Update multiple issues from JSONbulk-closecommand: Close multiple issues by ID
Input options: Both file (
-f) and direct data (-d) input for bulk operationsRepository methods:
bulk_create_issues()bulk_update_issues_from_json()bulk_close_issues()
Audit logging: Bulk operations logged with BULK_CREATE and BULK_UPDATE actions
Tests: Comprehensive tests for all bulk operations
Changed
Fixed datetime handling for Python 3.12+ compatibility (no more deprecation warnings)
Improved type annotations throughout codebase
[2.0.0] - 2025-01-XX
Added
Audit logging: Full transactional audit trail
All issue changes logged immutably
Audit logs preserved even after issue deletion
auditcommand to view audit history
Reporting: New summary and report commands
summarycommand for aggregate statisticsreportcommand for grouped issue lists
Search:
searchcommand for keyword-based issue lookupDatabase info:
infocommand showing database statistics
Changed
Enhanced JSON output format
Improved error messages
Better validation for all inputs
[1.1.0] - 2025-01-XX
Added
Filtering: Filter issues by status and priority
Pagination:
--limitoption for list commandsNext issue:
nextcommand for FIFO queue processing
Changed
Improved table formatting for human-readable output
Better handling of empty results
[1.0.0] - 2025-01-XX
Initial release.
Added
Core functionality:
Create issues with title, description, priority, status
List all issues
Get issue details by ID
Update issue fields
Delete issues
CLI: Full command-line interface via
issuedb-cliJSON output:
--jsonflag for all commandsSQLite storage: Local database at
~/.issuedb/issuedb.sqlitePriority levels: low, medium, high, critical
Status values: open, in-progress, closed
Python API: Programmatic access via
IssueRepositoryclass
Migration Notes
From 1.x to 2.x
Version 2.0 added the audit_log table. When upgrading:
The database schema will be updated automatically on first run
Existing issues are preserved
Historical audit logs are not retroactively created
From 2.0 to 2.1
No migration needed. New bulk operation features are additive.
From 2.1 to 2.2
Version 2.2 adds the comments table:
Schema updates automatically on first run
Foreign key constraints are now enabled
Existing data is preserved
From 2.2 to 2.3
No migration needed. New fetch history tracking is additive:
get-nextwill start loggingFETCHactions automaticallyget-lastcommand will return results after issues are fetchedHistorical fetches are not retroactively logged