All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Dockerfile
- Renamed output_handler.py to output.py
- Append Output to all classes of output.py for clarity
- Seaparate installation docs from main README file
- HTML export — buganize search … -e html writes a styled HTML table with a row index column
- Feature-gated CLI — rich is no longer a core dependency. Install the CLI with pip install buganize[cli];
- Buganize.is_healthy() — checks if the Buganizer backend is reachable via /action/yes
- Health check runs automatically in the CLI before each command
- CommentsResult dataclass with comments, total_count, next_page_token, and has_more
- API reference now documents the /listComments endpoint, /action/yes health check, and the extended /updates request format with sort order
- Buganize.comments() now uses the dedicated /listComments endpoint instead of filtering /updates
- Buganize.comments() returns CommentsResult instead of list[Comment], with support for sort order ("ASC"/"DESC"), page size (max 500), and pagination
- Updated API reference: new endpoints, response shapes, and corrected limitations
- Buganize.issue() now returns the issue body/description by passing detail_level=2 to the getIssue endpoint. Previously the body was always None because the flag was set to 1
- Removed deprecation warning from Buganize.issue(), as it's now fully functional and the preferred way to fetch a single issue
- Failing test
- Added doc strings to tests
- Added type hints to tests
- Properly handle potentially private issues
- Nix shell support (shell.nix)
- Failing tests
- Possible logical bug in api/parser.py
- Failing tests
- Rename 'output' module to 'output_handler'
- Replace 't.Optional[X]' / 't.Union[X, Y]' with PEP 604 'X | None' / 'X | Y' syntax across the codebase
- Drop 'from future import annotations' in favour of native union types
- Migrate tests from deprecated 'Buganize.issue()' to 'Buganize.issues()'
- Scheduled tests CI workflow (runs daily at 12:00 AM CAT)
- Update checker now uses async 'httpx.AsyncClient' instead of synchronous 'requests.get'
- Dropped 'update-checker' external dependency in favour of a built-in async update checker module
- '-f/--fields', '-e/--export', and '-F/--all-fields' are now global options instead of per-subcommand, and '-f'/'-e' are repeatable (e.g. '-f owner -f cve -e csv -e json')
- Multi-tracker search — '-t/--tracker' is now repeatable (e.g. 'buganize -t chromium -t fuchsia search "status:open"')
- 'Buganize(trackers=["chromium", "fuchsia"])' library API for multi-tracker queries
- Issue body/description — 'Issue.body' field parsed from 'TOP[43][0]' in batch/detail responses
- 'Buganize(tracker=...)' renamed to 'Buganize(trackers=...)' — now accepts a list
- 'currentTrackerId' query parameter commented out on single-issue and updates endpoints (issue ID alone resolves correctly)
- 'Buganize.issue()' — does not return the issue body. Use 'Buganize.issues([id])[0]' instead
- '-f/--fields', '-e/--export', and '-F/--all-fields' are now global options instead of per-subcommand, and '-f'/'-e' are repeatable (e.g. '-f owner -f cve -e csv -e json')
- CI workflow now uses 'gh' CLI for GitHub releases instead of 'softprops/action-gh-release'
- CI checks PyPI for existing versions instead of git tags
- CI consolidated from 3 jobs to a single job
- Fix USAGE.md link in README pointing to itself instead of USAGE.md
- Update API docs and project README
- Severity field — issues now expose 'severity' (S0–S4), parsed independently from priority
- Duplicate tracking — 'duplicate_issue_ids' shows which issues have been marked as duplicates
- Blocking issues — 'blocking_issue_ids' sourced from the correct API field
- Collaborators — list of collaborator emails on an issue
- Found-in versions — 'found_in' shows which builds/versions a bug was discovered in
- In-production flag — 'in_prod' indicates whether a bug has been seen in production
- View counts — 'views_24h', 'views_7d', 'views_30d' for gauging issue activity
- 14 extra field columns available in CLI output ('severity', 'collaborators', 'found_in', 'in_prod', 'duplicates', '24h_views', '7d_views', '30d_views', and more)
- 'buganize trackers' CLI command to list all available trackers and their IDs
- 'USAGE.md' — dedicated usage documentation for both the library and CLI
- API reference now documents 14 public trackers and 6 additional endpoints (components, trackers, hotlists, relationships)
- Severity is shown by default in single-issue detail view
- CLI '--tracker' argument now shows available tracker names in help output
- 'Buganize(tracker_id=...)' renamed to 'Buganize(tracker=...)' — accepts both names ('"chromium"') and numeric IDs ( '"157"')
- 'details[21]' was incorrectly mapped to blocking issues — it is actually duplicate issue IDs
- Blocking issue IDs are now correctly sourced from the top-level array ('TOP[36]')
- View counts corrected from '[1d, 7d, total]' to '[24h, 7d, 30d]'
- Update API docs, and README.md at root
- Rebrand from "Chromium Issue Tracker" to "Google Issue Tracker" — the client now queries all public trackers by default
- Drop 'pandas' dependency, all output uses Rich tables and stdlib 'csv'/'json' for export
- Drop HTML export format, '--export' now accepts 'csv' and 'json' only
- '-t'/'--tracker' flag to scope queries to a specific tracker by name ('chromium', 'fuchsia') or numeric ID. Without it, queries search across all public trackers on the Google Issue Tracker
- 'API.md' — reverse-engineered documentation of the issuetracker.google.com API
- Update package details
- 'buganise' command to the CLI
- Moved from 'buganise' to 'buganize', running pip install on either one will install 'buganize' as a library and both 'buganise' and 'buganize' as cli commands.
- Randomised user agent on each request
- Remove img/ dir
- Update checker. Runs once a day
- Async Python client ('Buganize') for the Chromium Issue Tracker
- 'search()' for querying issues with pagination support via 'next_page()'
- 'issue()' for fetching a single issue by ID
- 'issues()' for fetching multiple issues in a single request
- 'issue_updates()' for fetching comments and field changes on an issue
- 'comments()' convenience method for fetching comments in chronological order
- CLI with 'buganize' command (search, issue, issues, comments)
- Export to CSV, JSON, and HTML via '-e'/'--export'
- Extra fields display with '-f'/'--fields' and '-F'/'--all-fields'
- Jupyter notebook examples for search, issues, comments, and export