1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Changelog
## 0.3.1 (2026-10-18)
### pygittools
- `pgt` changes for less aggressive scanning, particularly helpful when working in large repos.
### pygitweb
- New Logo!
- Restyle the login page in the Tabler layout.
- Drop per-branch read checks and the `pre-receive.branch-permissions` hook. Project read still gates visibility, and a user who can see a project can see every object in it.
- Enforce ref push rules in Smart HTTP. `pgw.write_branch` still covers `refs/heads`. New `pgw.write_ref` scopes cover any ref under `refs/` (tags, notes, and the rest). Project write remains the fallback when no specific grant matches.
- Give OAuth sessions a passwordless local account, matched by email, so they can store Smart HTTP keys. A session with no email cannot store keys. If a local account already uses that email, the keys attach to it.
### Tests and docs
- Add Python 3.15 to the version plane, even if dependencies aren't ready yet.
## 0.3.0 (2026-10-13)
### pygittools
- Rebuild the `pgt` terminal UI on pyratatui.
- Add a worktrees tab for listing and switching worktrees.
- Add an actions page that runs project scripts from `pyproject.toml` or `actions.toml`, including named action groups.
- Add Fibonacci story points to the task schema.
- Fix a crash when opening `pgt` in a repository with no commits.
### pygitweb
- Add sprint boards with Fibonacci story points, a board switcher, and moving tasks between boards. Column headers show a running points total.
- Improve the task UI with add, archive, and delete actions, plus board selection.
- Render a project's markdown blog as its own page, including the archive, search, and assets.
- Restyle the project list, summary, boards, tasks, and activity feed to follow the Tabler layout, including repository stats and open merge requests on the summary.
- Fix board column headers and horizontal scrolling.
- Let users issue a limited number of Smart HTTP keys, read-only or read-write and with an expiry, and log clone and push attempts to `smart_http.log`.
- Enable and disable installed plugins from the settings page, and check plugins against annotated protocols when they register.
- Use one base template per page, and emit table cell contents as text.
- Fix code-block alignment that shifted with display scaling.
### Tests and docs
- Run JavaScript unit tests and browser integration tests with Playwright.
- Lay the repository out as a uv workspace, with packages under `src` and the `uv_build` backend.
- Require Python 3.12 for the workspace, which plugin protocols need.
- Polish the README.
## 0.2.3 (2026-08-12)
### pygittools
- Fix an issue where under some conditions, the default auth config would always load instead of the on-disk config.
## 0.2.2 (2026-08-09)
### pygittools
- Add tag support to the official task schema.
- Fix `pgt` worktree removals by using `index.remove` instead of `index.add`.
- Split MCP-related dependencies into a separate `pygittools-mcp` package.
### pygitweb
- Add per-project and per-branch read/write permissions for repository access.
- Display a user’s preferred username (or configured email) instead of a raw user ID.
- Move the `pygitweb_pytesthtml` plugin into a separate project to decouple testing utilities.
### Tests and docs
- Improve OAuth2 coverage in `pygitweb` by mocking an identity provider.
## 0.2.1 (2026-07-26)
### pygittools
- Add a task editor and improve task creation, syncing, and deletion in the TUI.
- Respect terminal color settings, using more reasonable defaults and configured values for colorization.
- Normalize staged file paths and quiet upstream encoding warnings to reduce platform-specific issues.
### pygitweb
- Fix README packaging so it is correctly loaded on the docs page.
### Tests and docs
- Improve OAuth2 test coverage in `pygitweb`.
- Increase `pgt` test coverage, fixing regressions on Windows.
- Add coverage tooling to the development dependencies.
## 0.2.0 (2026-07-12)
### pygittools
- Add `pgt`, a terminal user interface for browsing repos, staging changes, and committing.
- Persist commit message drafts across sessions.
- Add tab navigation on the main page, input context handling to avoid key conflicts, and a basic log page.
- Add `pgt tags sync` to synchronize annotated task tags.
- Add a task MCP server (`pygittools-mcp`) for agent integration.
- Show task IDs on the task board.
### pygitweb
- Implement Git smart HTTP for clone and push over HTTP.
- Add per-project read/write permissions, enabling private repositories.
- Harden board creation and comment modification routes.
- Restrict the `/_internal/notify` hook route to localhost connections only.
- Add a shutdown option on the settings page.
- Add tag and commit search in the task UI.
- Fix merge request opener when not explicitly configured in project settings.
### Tests and docs
- Fix hook listing and OAuth callback tests; mock Git signatures in tests for fresh Git installs.
- Add smart HTTP clone/push test coverage including WebSocket upgrade.
## 0.1.0
Initial PyPI release of pygitweb and pygittools.