debugbrief 1.2.0__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. debugbrief-1.3.0/PKG-INFO +171 -0
  2. debugbrief-1.3.0/README.md +131 -0
  3. {debugbrief-1.2.0 → debugbrief-1.3.0}/pyproject.toml +29 -8
  4. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/__init__.py +4 -3
  5. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/cli.py +326 -59
  6. debugbrief-1.3.0/src/debugbrief/command_runner.py +797 -0
  7. debugbrief-1.3.0/src/debugbrief/config.py +120 -0
  8. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/derive.py +36 -21
  9. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/doctor.py +72 -11
  10. debugbrief-1.3.0/src/debugbrief/filters.py +844 -0
  11. debugbrief-1.3.0/src/debugbrief/git_utils.py +727 -0
  12. debugbrief-1.3.0/src/debugbrief/markdown.py +49 -0
  13. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/models.py +115 -11
  14. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/paths.py +97 -4
  15. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/redaction.py +4 -2
  16. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/reporters/__init__.py +8 -2
  17. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/reporters/base.py +36 -20
  18. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/reporters/handoff.py +4 -3
  19. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/reporters/incident.py +4 -3
  20. debugbrief-1.3.0/src/debugbrief/reporters/pr.py +66 -0
  21. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/reports_index.py +28 -4
  22. debugbrief-1.3.0/src/debugbrief/session_manager.py +935 -0
  23. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/sessions_index.py +13 -5
  24. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/utils.py +84 -3
  25. debugbrief-1.3.0/src/debugbrief.egg-info/PKG-INFO +171 -0
  26. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief.egg-info/SOURCES.txt +11 -1
  27. debugbrief-1.3.0/src/debugbrief.egg-info/requires.txt +13 -0
  28. debugbrief-1.3.0/tests/test_ci_workflow.py +37 -0
  29. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_cli_ergonomics.py +55 -0
  30. debugbrief-1.3.0/tests/test_command_lease.py +387 -0
  31. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_command_runner.py +54 -0
  32. debugbrief-1.3.0/tests/test_config.py +110 -0
  33. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_derive.py +135 -2
  34. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_doctor.py +37 -0
  35. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_e2e_cli.py +6 -6
  36. debugbrief-1.3.0/tests/test_filters.py +431 -0
  37. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_git_utils.py +117 -0
  38. debugbrief-1.3.0/tests/test_markdown_safety.py +121 -0
  39. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_redaction.py +32 -0
  40. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_reporters.py +21 -4
  41. debugbrief-1.3.0/tests/test_runner_robustness.py +591 -0
  42. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_session_lifecycle.py +1 -1
  43. debugbrief-1.3.0/tests/test_state_dir_safety.py +98 -0
  44. debugbrief-1.3.0/tests/test_state_file_safety.py +147 -0
  45. debugbrief-1.3.0/tests/test_state_integrity.py +773 -0
  46. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_v12_features.py +141 -0
  47. debugbrief-1.3.0/tests/test_version.py +35 -0
  48. debugbrief-1.2.0/PKG-INFO +0 -154
  49. debugbrief-1.2.0/README.md +0 -124
  50. debugbrief-1.2.0/src/debugbrief/command_runner.py +0 -238
  51. debugbrief-1.2.0/src/debugbrief/filters.py +0 -307
  52. debugbrief-1.2.0/src/debugbrief/git_utils.py +0 -268
  53. debugbrief-1.2.0/src/debugbrief/reporters/pr.py +0 -28
  54. debugbrief-1.2.0/src/debugbrief/session_manager.py +0 -375
  55. debugbrief-1.2.0/src/debugbrief.egg-info/PKG-INFO +0 -154
  56. debugbrief-1.2.0/src/debugbrief.egg-info/requires.txt +0 -3
  57. debugbrief-1.2.0/tests/test_ci_workflow.py +0 -29
  58. debugbrief-1.2.0/tests/test_filters.py +0 -158
  59. {debugbrief-1.2.0 → debugbrief-1.3.0}/LICENSE +0 -0
  60. {debugbrief-1.2.0 → debugbrief-1.3.0}/setup.cfg +0 -0
  61. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief/__main__.py +0 -0
  62. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief.egg-info/dependency_links.txt +0 -0
  63. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief.egg-info/entry_points.txt +0 -0
  64. {debugbrief-1.2.0 → debugbrief-1.3.0}/src/debugbrief.egg-info/top_level.txt +0 -0
  65. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_autostart.py +0 -0
  66. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_cancel.py +0 -0
  67. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_json_report.py +0 -0
  68. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_last_open.py +0 -0
  69. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_list_show.py +0 -0
  70. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_paths.py +0 -0
  71. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_run_passthrough.py +0 -0
  72. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_snapshots.py +0 -0
  73. {debugbrief-1.2.0 → debugbrief-1.3.0}/tests/test_utils.py +0 -0
@@ -0,0 +1,171 @@
1
+ Metadata-Version: 2.4
2
+ Name: debugbrief
3
+ Version: 1.3.0
4
+ Summary: Records debugging commands, outcomes, notes, and Git changes, then generates evidence-backed Markdown reports for pull requests, handoffs, and incidents.
5
+ Author: Hari Krishna Kancharla
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/harihkk/Debug-Brief
8
+ Project-URL: Repository, https://github.com/harihkk/Debug-Brief
9
+ Project-URL: Documentation, https://github.com/harihkk/Debug-Brief/tree/main/docs
10
+ Project-URL: Changelog, https://github.com/harihkk/Debug-Brief/blob/main/CHANGELOG.md
11
+ Project-URL: Issues, https://github.com/harihkk/Debug-Brief/issues
12
+ Project-URL: Security, https://github.com/harihkk/Debug-Brief/security/policy
13
+ Keywords: cli,debugging,developer-tools,git,testing,pull-request,handoff,incident,report,terminal
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: POSIX
18
+ Classifier: Operating System :: MacOS
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Programming Language :: Python :: 3.14
26
+ Classifier: Topic :: Software Development
27
+ Requires-Python: >=3.9
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: tomli>=2.0.1; python_version < "3.11"
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.0; extra == "dev"
33
+ Requires-Dist: ruff>=0.6; extra == "dev"
34
+ Requires-Dist: mypy>=1.8; extra == "dev"
35
+ Requires-Dist: build>=1.0; extra == "dev"
36
+ Provides-Extra: release
37
+ Requires-Dist: build>=1.0; extra == "release"
38
+ Requires-Dist: twine>=5.0; extra == "release"
39
+ Dynamic: license-file
40
+
41
+ # DebugBrief
42
+
43
+ [![CI](https://github.com/harihkk/Debug-Brief/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/harihkk/Debug-Brief/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/pypi/v/debugbrief?cacheSeconds=3600)](https://pypi.org/project/debugbrief/)
44
+
45
+ Record what you do while debugging and turn it into an evidence-backed Markdown report for a pull request, a handoff, or an incident note.
46
+
47
+ ![A failing test streams live, the fix lands, redo passes, and the generated report appears](https://raw.githubusercontent.com/harihkk/Debug-Brief/main/docs/demo.gif)
48
+
49
+ DebugBrief captures the notes you write and the commands you run, then builds a report from what actually happened: what you tried, what failed, what passed, and which files changed in between. It does not use AI and does not infer a root cause or report a test result you did not get.
50
+
51
+ ## Install
52
+
53
+ ```bash
54
+ pipx install debugbrief
55
+ # or
56
+ uv tool install debugbrief
57
+ ```
58
+
59
+ Plain `pip install debugbrief` works too. DebugBrief needs Python 3.9 or newer. Native Git is used when available to capture repository metadata and changed files. The project you debug does not need to be Python; only DebugBrief runs on Python.
60
+
61
+ ## Quickstart
62
+
63
+ ```bash
64
+ debugbrief start "Fix add() returning wrong result"
65
+ debugbrief note "add() subtracts instead of adds; the test expects 5."
66
+ debugbrief run -- python -m pytest -q test_calc.py # fails
67
+ # make your fix
68
+ debugbrief redo # same test, now passes
69
+ debugbrief end # writes the PR report
70
+ ```
71
+
72
+ Everything after `--` runs exactly as you typed it, with its output streaming live to your terminal. DebugBrief flags (`--timeout`, `--shell`, `--no-redact`, `--verify`) go before the `--`. `redo` re-runs the last captured command, and `end` defaults to the `pr` report mode.
73
+
74
+ Tip: a one-line alias makes the capture prefix disappear in daily use.
75
+
76
+ ```bash
77
+ alias db="debugbrief run --"
78
+ db pytest -q
79
+ ```
80
+
81
+ ## What you get
82
+
83
+ A report built only from recorded evidence. A short excerpt from a real run:
84
+
85
+ ```markdown
86
+ ## Summary
87
+
88
+ Failing check `python -m pytest -q test_calc.py` passed after 2 attempts over 2s, changes touched calc.py.
89
+
90
+ ## Red to green
91
+
92
+ A check failed at 12:02:09 and `python -m pytest -q test_calc.py` passed at 12:02:10 (window 1s).
93
+
94
+ Between the failing and passing checks, these files changed (correlation, not proven cause):
95
+ - `calc.py`
96
+ ```
97
+
98
+ Full samples: [PR](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-pr.md), [handoff](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-handoff.md), [incident](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-incident.md).
99
+
100
+ ## How it works
101
+
102
+ - `run` executes a command under a pseudo-terminal so its output streams live, then records the real exit code, a bounded output preview, the duration, and a per-command `git` snapshot.
103
+ - Pass or fail comes only from the exit code. A command counts as verified only when a recognized test, build, lint, or typecheck runner actually exits 0.
104
+ - It works with any language. A recognized runner (pytest, jest, vitest, go test, cargo test, dotnet test, make check, and more) is classified automatically. Any other command is still captured, and you mark it a check with `--verify`.
105
+ - `end` derives the report from those events: the red-to-green window, the reproduce and verify commands, a timeline, the observed error, and the failed attempts. Empty sections are omitted.
106
+ - Secrets are redacted before anything is written to disk. Redaction is best effort; `--no-redact` opts out for a single command.
107
+
108
+ Full command reference and the complete recognized-runner list: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md). Security model and redaction details: [SECURITY.md](https://github.com/harihkk/Debug-Brief/blob/main/SECURITY.md).
109
+
110
+ Post a report straight to a pull request (GitHub CLI optional):
111
+
112
+ ```bash
113
+ debugbrief end --stdout | gh pr comment --body-file -
114
+ ```
115
+
116
+ ## Commands
117
+
118
+ The five you use most:
119
+
120
+ | Command | What it does |
121
+ | --- | --- |
122
+ | `start "<title>"` | Start a session |
123
+ | `note <text>` | Record an observation |
124
+ | `run -- <command>` | Run and capture a command |
125
+ | `redo` | Re-run the last captured command |
126
+ | `end [--mode pr\|handoff\|incident]` | Finalize and write a report (default `pr`) |
127
+
128
+ The rest:
129
+
130
+ | Command | What it does |
131
+ | --- | --- |
132
+ | `init` | Set up the project and show the workflow |
133
+ | `status` | Show the active session |
134
+ | `preview [--mode ...]` | Print the report without ending the session |
135
+ | `cancel [--yes]` | Discard the active session, no report |
136
+ | `doctor [--fix]` | Health-check the project and state |
137
+ | `recover` | Repair a broken session pointer after a crash |
138
+ | `last` | Show the most recent report path |
139
+ | `open` | Open the most recent report |
140
+ | `list` | List recorded sessions |
141
+ | `show <id>` | Show a recorded session |
142
+
143
+ Full flags and behavior for each: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md).
144
+
145
+ ## Dependencies
146
+
147
+ DebugBrief uses the Python standard library and native `git`. On Python 3.11 and newer it needs nothing else. On Python 3.9 and 3.10 it uses the small `tomli` package to read an optional `.debugbrief.toml`. DebugBrief itself makes no network requests, uses no AI, and collects no telemetry.
148
+
149
+ ## Supported platforms
150
+
151
+ Linux and macOS are tested in CI across Python 3.9 through 3.14. Other Unix-like systems may work but are not currently tested. Native Windows and PowerShell are not supported.
152
+
153
+ ## Limitations
154
+
155
+ - Capture is explicit through `debugbrief run`. Output streams live while a bounded preview is stored for the report, so there is no full transcript.
156
+ - Full-screen TUIs (a `vim` session, `htop`) are not meaningfully captured. Run those directly and record the outcome with `note`.
157
+ - Redaction is conservative and best effort; it does not catch every secret.
158
+ - Git sections need native `git`; outside a repository they are omitted.
159
+
160
+ ## Development
161
+
162
+ ```bash
163
+ pip install -e ".[dev]"
164
+ pytest
165
+ ```
166
+
167
+ See [CONTRIBUTING.md](https://github.com/harihkk/Debug-Brief/blob/main/CONTRIBUTING.md) for the full setup and contribution guidelines.
168
+
169
+ ## License
170
+
171
+ MIT. See [LICENSE](https://github.com/harihkk/Debug-Brief/blob/main/LICENSE).
@@ -0,0 +1,131 @@
1
+ # DebugBrief
2
+
3
+ [![CI](https://github.com/harihkk/Debug-Brief/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/harihkk/Debug-Brief/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/pypi/v/debugbrief?cacheSeconds=3600)](https://pypi.org/project/debugbrief/)
4
+
5
+ Record what you do while debugging and turn it into an evidence-backed Markdown report for a pull request, a handoff, or an incident note.
6
+
7
+ ![A failing test streams live, the fix lands, redo passes, and the generated report appears](https://raw.githubusercontent.com/harihkk/Debug-Brief/main/docs/demo.gif)
8
+
9
+ DebugBrief captures the notes you write and the commands you run, then builds a report from what actually happened: what you tried, what failed, what passed, and which files changed in between. It does not use AI and does not infer a root cause or report a test result you did not get.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ pipx install debugbrief
15
+ # or
16
+ uv tool install debugbrief
17
+ ```
18
+
19
+ Plain `pip install debugbrief` works too. DebugBrief needs Python 3.9 or newer. Native Git is used when available to capture repository metadata and changed files. The project you debug does not need to be Python; only DebugBrief runs on Python.
20
+
21
+ ## Quickstart
22
+
23
+ ```bash
24
+ debugbrief start "Fix add() returning wrong result"
25
+ debugbrief note "add() subtracts instead of adds; the test expects 5."
26
+ debugbrief run -- python -m pytest -q test_calc.py # fails
27
+ # make your fix
28
+ debugbrief redo # same test, now passes
29
+ debugbrief end # writes the PR report
30
+ ```
31
+
32
+ Everything after `--` runs exactly as you typed it, with its output streaming live to your terminal. DebugBrief flags (`--timeout`, `--shell`, `--no-redact`, `--verify`) go before the `--`. `redo` re-runs the last captured command, and `end` defaults to the `pr` report mode.
33
+
34
+ Tip: a one-line alias makes the capture prefix disappear in daily use.
35
+
36
+ ```bash
37
+ alias db="debugbrief run --"
38
+ db pytest -q
39
+ ```
40
+
41
+ ## What you get
42
+
43
+ A report built only from recorded evidence. A short excerpt from a real run:
44
+
45
+ ```markdown
46
+ ## Summary
47
+
48
+ Failing check `python -m pytest -q test_calc.py` passed after 2 attempts over 2s, changes touched calc.py.
49
+
50
+ ## Red to green
51
+
52
+ A check failed at 12:02:09 and `python -m pytest -q test_calc.py` passed at 12:02:10 (window 1s).
53
+
54
+ Between the failing and passing checks, these files changed (correlation, not proven cause):
55
+ - `calc.py`
56
+ ```
57
+
58
+ Full samples: [PR](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-pr.md), [handoff](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-handoff.md), [incident](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-incident.md).
59
+
60
+ ## How it works
61
+
62
+ - `run` executes a command under a pseudo-terminal so its output streams live, then records the real exit code, a bounded output preview, the duration, and a per-command `git` snapshot.
63
+ - Pass or fail comes only from the exit code. A command counts as verified only when a recognized test, build, lint, or typecheck runner actually exits 0.
64
+ - It works with any language. A recognized runner (pytest, jest, vitest, go test, cargo test, dotnet test, make check, and more) is classified automatically. Any other command is still captured, and you mark it a check with `--verify`.
65
+ - `end` derives the report from those events: the red-to-green window, the reproduce and verify commands, a timeline, the observed error, and the failed attempts. Empty sections are omitted.
66
+ - Secrets are redacted before anything is written to disk. Redaction is best effort; `--no-redact` opts out for a single command.
67
+
68
+ Full command reference and the complete recognized-runner list: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md). Security model and redaction details: [SECURITY.md](https://github.com/harihkk/Debug-Brief/blob/main/SECURITY.md).
69
+
70
+ Post a report straight to a pull request (GitHub CLI optional):
71
+
72
+ ```bash
73
+ debugbrief end --stdout | gh pr comment --body-file -
74
+ ```
75
+
76
+ ## Commands
77
+
78
+ The five you use most:
79
+
80
+ | Command | What it does |
81
+ | --- | --- |
82
+ | `start "<title>"` | Start a session |
83
+ | `note <text>` | Record an observation |
84
+ | `run -- <command>` | Run and capture a command |
85
+ | `redo` | Re-run the last captured command |
86
+ | `end [--mode pr\|handoff\|incident]` | Finalize and write a report (default `pr`) |
87
+
88
+ The rest:
89
+
90
+ | Command | What it does |
91
+ | --- | --- |
92
+ | `init` | Set up the project and show the workflow |
93
+ | `status` | Show the active session |
94
+ | `preview [--mode ...]` | Print the report without ending the session |
95
+ | `cancel [--yes]` | Discard the active session, no report |
96
+ | `doctor [--fix]` | Health-check the project and state |
97
+ | `recover` | Repair a broken session pointer after a crash |
98
+ | `last` | Show the most recent report path |
99
+ | `open` | Open the most recent report |
100
+ | `list` | List recorded sessions |
101
+ | `show <id>` | Show a recorded session |
102
+
103
+ Full flags and behavior for each: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md).
104
+
105
+ ## Dependencies
106
+
107
+ DebugBrief uses the Python standard library and native `git`. On Python 3.11 and newer it needs nothing else. On Python 3.9 and 3.10 it uses the small `tomli` package to read an optional `.debugbrief.toml`. DebugBrief itself makes no network requests, uses no AI, and collects no telemetry.
108
+
109
+ ## Supported platforms
110
+
111
+ Linux and macOS are tested in CI across Python 3.9 through 3.14. Other Unix-like systems may work but are not currently tested. Native Windows and PowerShell are not supported.
112
+
113
+ ## Limitations
114
+
115
+ - Capture is explicit through `debugbrief run`. Output streams live while a bounded preview is stored for the report, so there is no full transcript.
116
+ - Full-screen TUIs (a `vim` session, `htop`) are not meaningfully captured. Run those directly and record the outcome with `note`.
117
+ - Redaction is conservative and best effort; it does not catch every secret.
118
+ - Git sections need native `git`; outside a repository they are omitted.
119
+
120
+ ## Development
121
+
122
+ ```bash
123
+ pip install -e ".[dev]"
124
+ pytest
125
+ ```
126
+
127
+ See [CONTRIBUTING.md](https://github.com/harihkk/Debug-Brief/blob/main/CONTRIBUTING.md) for the full setup and contribution guidelines.
128
+
129
+ ## License
130
+
131
+ MIT. See [LICENSE](https://github.com/harihkk/Debug-Brief/blob/main/LICENSE).
@@ -5,14 +5,25 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "debugbrief"
8
- version = "1.2.0"
9
- description = "Local-first CLI that records the meaningful context of a debugging session and turns it into a useful markdown brief."
8
+ version = "1.3.0"
9
+ description = "Records debugging commands, outcomes, notes, and Git changes, then generates evidence-backed Markdown reports for pull requests, handoffs, and incidents."
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.9"
12
12
  license = "MIT"
13
13
  license-files = ["LICENSE"]
14
- authors = [{ name = "DebugBrief" }]
15
- keywords = ["cli", "debugging", "pull-request", "handoff", "incident", "report"]
14
+ authors = [{ name = "Hari Krishna Kancharla" }]
15
+ keywords = [
16
+ "cli",
17
+ "debugging",
18
+ "developer-tools",
19
+ "git",
20
+ "testing",
21
+ "pull-request",
22
+ "handoff",
23
+ "incident",
24
+ "report",
25
+ "terminal",
26
+ ]
16
27
  classifiers = [
17
28
  "Development Status :: 4 - Beta",
18
29
  "Environment :: Console",
@@ -25,21 +36,31 @@ classifiers = [
25
36
  "Programming Language :: Python :: 3.11",
26
37
  "Programming Language :: Python :: 3.12",
27
38
  "Programming Language :: Python :: 3.13",
39
+ "Programming Language :: Python :: 3.14",
28
40
  "Topic :: Software Development",
29
41
  ]
30
42
 
31
- # DebugBrief intentionally has ZERO runtime dependencies.
32
- # It uses only the Python standard library and native `git`.
33
- dependencies = []
43
+ # DebugBrief uses only the Python standard library and native `git`, with one
44
+ # conditional compatibility dependency: the `tomli` TOML parser on Python < 3.11,
45
+ # where the standard-library `tomllib` is not yet available (3.11+ needs nothing).
46
+ dependencies = [
47
+ "tomli>=2.0.1; python_version < '3.11'",
48
+ ]
34
49
 
35
50
  [project.urls]
36
51
  Homepage = "https://github.com/harihkk/Debug-Brief"
37
52
  Repository = "https://github.com/harihkk/Debug-Brief"
53
+ Documentation = "https://github.com/harihkk/Debug-Brief/tree/main/docs"
38
54
  Changelog = "https://github.com/harihkk/Debug-Brief/blob/main/CHANGELOG.md"
39
55
  Issues = "https://github.com/harihkk/Debug-Brief/issues"
56
+ Security = "https://github.com/harihkk/Debug-Brief/security/policy"
40
57
 
41
58
  [project.optional-dependencies]
42
- dev = ["pytest>=7.0"]
59
+ # Development and CI tooling only. These are never runtime dependencies;
60
+ # DebugBrief's only runtime dependency is the conditional `tomli` below 3.11.
61
+ dev = ["pytest>=7.0", "ruff>=0.6", "mypy>=1.8", "build>=1.0"]
62
+ # Release tooling, used only to build and check distributions before publishing.
63
+ release = ["build>=1.0", "twine>=5.0"]
43
64
 
44
65
  [project.scripts]
45
66
  debugbrief = "debugbrief.cli:main"
@@ -4,10 +4,11 @@ DebugBrief captures the useful path of a debugging session -- notes, executed
4
4
  commands and their outcomes, Git state changes, and verification steps -- and
5
5
  turns it into a concise, honest markdown brief (PR, handoff, or incident).
6
6
 
7
- It uses only the Python standard library and native ``git``. No AI, no
8
- telemetry, no cloud sync, no background daemon.
7
+ It uses the Python standard library and native ``git``, with one conditional
8
+ dependency: the ``tomli`` TOML parser on Python < 3.11 (3.11+ uses the
9
+ standard-library ``tomllib``). No AI, no telemetry, no cloud sync, no daemon.
9
10
  """
10
11
 
11
- __version__ = "1.2.0"
12
+ __version__ = "1.3.0"
12
13
 
13
14
  __all__ = ["__version__"]