gitstow 0.3.0__tar.gz → 0.4.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.
- gitstow-0.4.0/BACKLOG.md +43 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/CHANGELOG.md +23 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/PKG-INFO +1 -1
- gitstow-0.4.0/docs/building/plans/2026-07-12-ui-wave-a-make-it-real.md +831 -0
- gitstow-0.4.0/docs/building/plans/2026-07-12-ui-wave-b-polish.md +455 -0
- gitstow-0.4.0/docs/building/ui-audit-2026-07-12.md +57 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/user/commands.md +1 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/pyproject.toml +1 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/__init__.py +1 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/export_cmd.py +3 -89
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/pull.py +6 -0
- gitstow-0.4.0/src/gitstow/core/collection_io.py +98 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/status_model.py +8 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/collection.py +14 -73
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/dashboard.py +45 -10
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/pages.py +67 -8
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/repos.py +8 -3
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/server.py +2 -2
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/static/app.css +105 -9
- gitstow-0.4.0/src/gitstow/web/static/dashboard.js +97 -0
- gitstow-0.4.0/src/gitstow/web/static/fonts/bricolage-grotesque-latin-ext-var.woff2 +0 -0
- gitstow-0.4.0/src/gitstow/web/static/fonts/bricolage-grotesque-latin-var.woff2 +0 -0
- gitstow-0.4.0/src/gitstow/web/static/fonts/fonts.css +81 -0
- gitstow-0.4.0/src/gitstow/web/static/fonts/jetbrains-mono-latin-ext-var.woff2 +0 -0
- gitstow-0.4.0/src/gitstow/web/static/fonts/jetbrains-mono-latin-var.woff2 +0 -0
- gitstow-0.4.0/src/gitstow/web/static/vendor/VENDORED.md +39 -0
- gitstow-0.4.0/src/gitstow/web/static/vendor/htmx.min.js +1 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/_repo_drawer.html +4 -3
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/add_repo.html +20 -2
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/base.html +73 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/dashboard.html +19 -12
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/partials/pull_summary.html +1 -1
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/partials/repo_row.html +6 -6
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/settings.html +46 -13
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/workspaces.html +4 -2
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_cli.py +17 -0
- gitstow-0.4.0/tests/test_collection_io.py +33 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_serve.py +365 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_status_model.py +6 -2
- gitstow-0.3.0/BACKLOG.md +0 -18
- {gitstow-0.3.0 → gitstow-0.4.0}/.claude/settings.json +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.github/workflows/ci.yml +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.github/workflows/publish.yml +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/.gitignore +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/AGENTS.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/CLAUDE.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/CODE_OF_CONDUCT.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/CONTRIBUTING.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/LICENSE +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/README.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/SECURITY.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/demo.gif +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/demo.tape +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/building/audit-2026-07-06.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/building/implementation-plan.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/building/plans/2026-07-06-wave-1-correctness-safety.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/building/plans/2026-07-06-wave-2-status-model.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/building/plans/2026-07-06-wave-3-structure-polish.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/user/concepts.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/user/configuration.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/docs/user/getting-started.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/scripts/release.sh +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/__main__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/add.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/config_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/doctor.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/exec_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/fetch.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/helpers.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/list_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/main.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/manage.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/migrate.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/onboard.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/open_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/remove.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/search.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/serve.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/setup_ai.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/shell.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/skill_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/stats.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/status.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/update.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/cli/workspace_cmd.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/config.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/discovery.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/git.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/locking.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/operations.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/parallel.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/paths.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/repo.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/core/url_parser.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/mcp/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/mcp/server.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/skill/SKILL.md +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/system.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/routes/workspaces.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/partials/dashboard_rows.html +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/src/gitstow/web/templates/partials/fetch_summary.html +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/__init__.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/conftest.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_config.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_git.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_locking.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_mcp.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_onboard.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_operations.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_repo.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_setup_ai.py +0 -0
- {gitstow-0.3.0 → gitstow-0.4.0}/tests/test_url_parser.py +0 -0
gitstow-0.4.0/BACKLOG.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Backlog
|
|
2
|
+
|
|
3
|
+
Post-v0.1.0 improvements tracked here. See [GitHub Issues](https://github.com/rishmadaan/gitstow/issues) for discussion.
|
|
4
|
+
|
|
5
|
+
## Enhancements
|
|
6
|
+
|
|
7
|
+
- [x] **TUI: expand beyond read-only dashboard** (#1) — Added pull selected (P), workspace cycling (w), tag cycling (t)
|
|
8
|
+
- [x] **Shell completion for repo names** (#2) — `gitstow shell completions` for bash/zsh/fish; `--quiet` on list/tags/workspace list
|
|
9
|
+
- [x] **Network retry/resume for batch operations** (#3) — `--retry N` flag on add and pull; cleans up partial clones before retry
|
|
10
|
+
- [x] **Export format versioning and checksums** (#4) — Added `version: 1` to YAML/JSON exports; validates on import; backward-compatible with unversioned files
|
|
11
|
+
- [x] **Progress indication during long clones** (#5) — `git clone --progress`; pull shows live counter `[5/47]`
|
|
12
|
+
- [x] **Publish to PyPI** (#6) — Release workflow created (`.github/workflows/publish.yml`); publish on GitHub release
|
|
13
|
+
- [x] **Web dashboard (`gitstow ui`)** — Dark local browser UI wrapping core/ for daily repo management. FastAPI + Jinja2 + HTMX, dark + ember accent aesthetic. See [CHANGELOG.md](CHANGELOG.md) v0.2.0.
|
|
14
|
+
- [x] **Fix TUI breakage** — Resolved by retirement: the Textual TUI was removed in v0.3.0; `gitstow ui` (web dashboard) is the visual surface going forward.
|
|
15
|
+
|
|
16
|
+
## Documentation
|
|
17
|
+
|
|
18
|
+
- [x] **Record demo GIF for README** (#7) — Recorded with VHS, embedded in README
|
|
19
|
+
|
|
20
|
+
## Post-0.3.0 follow-ups
|
|
21
|
+
|
|
22
|
+
Triaged non-blocking items from the 2026-07 audit remediation (see
|
|
23
|
+
[docs/building/audit-2026-07-06.md](docs/building/audit-2026-07-06.md) for the full effort).
|
|
24
|
+
|
|
25
|
+
- [ ] **URL parser: schemeless multi-dot hosts** — `dev.azure.com/org/project/_git/repo` without
|
|
26
|
+
`https://` parses as owner/repo shorthand and builds a garbage clone URL (`_LOOKS_LIKE_HOST`
|
|
27
|
+
regex can't match a multi-dot first segment). Pre-existing; 0.3.1 candidate.
|
|
28
|
+
- [ ] **Route search subprocesses through a hardened runner** — `git grep`/`rg` in `cli/search.py`
|
|
29
|
+
and `mcp/server.py` shell raw `subprocess.run` without the `GIT_TERMINAL_PROMPT=0`/`LC_ALL=C`
|
|
30
|
+
env applied to all other git calls. Local-only operations, negligible risk — consistency cleanup.
|
|
31
|
+
- [ ] **Test strengthening batch** — frozen-collapse MCP test needs two frozen same-named repos;
|
|
32
|
+
`run_bulk` missing-status retry + `on_attempt` callback untested; locking mutual-exclusion test
|
|
33
|
+
passes without a lock (use an event-based barrier); status JSON legacy-key test covers 3/13 keys.
|
|
34
|
+
- [ ] **Small edges** — `add` on an on-disk repo with no remote falls through to a doomed clone;
|
|
35
|
+
whitespace-only `$EDITOR` raises IndexError; fully-untracked workspaces never get the untracked
|
|
36
|
+
hint (early return; `doctor` covers); dashboard vs single-row-refresh number sources diverge for
|
|
37
|
+
orphaned-workspace repos.
|
|
38
|
+
- [ ] **Product call: `pull --force` escape hatch** — CLI explicit args follow the bulk skip rule
|
|
39
|
+
while a web single-row Pull click pulls unconditionally; a `--force` flag would reconcile the
|
|
40
|
+
"explicit intent" asymmetry.
|
|
41
|
+
- [ ] **Product call: frozen + diverged + `--include-frozen`** — surfaces as an ff-only error row
|
|
42
|
+
instead of a clean "diverged" skip (check `remote_state` directly in the worker if the messaging
|
|
43
|
+
matters).
|
|
@@ -4,6 +4,29 @@ All notable changes to gitstow will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [0.4.0] - 2026-07-12
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Dashboard filters that actually filter.** The search box, workspace dropdown, and Hide-frozen toggle now work — instant client-side filtering that survives auto-refresh and pull updates.
|
|
12
|
+
- **Settings save.** The Settings page persists changes for real (and gains Parallel limit + Clone timeout fields).
|
|
13
|
+
- **`local` badge.** Repos without an upstream remote show a `local` Remote Δ badge; bulk pulls skip them with a clear reason instead of failing every run.
|
|
14
|
+
- **Responsive dashboard.** Works down to half-monitor width — columns collapse by priority, the table scrolls within its own container, and row menus flip upward when space runs out.
|
|
15
|
+
- **Last-fetched visibility.** The repo detail page shows when each repo was last pulled AND last fetched (hover for exact times); Remote Δ tooltips state which fetch the counts reflect.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **Fully offline dashboard.** htmx and both fonts are now bundled — no CDN, no network needed for the UI itself.
|
|
20
|
+
- **Styled confirmations.** Native browser confirm/alert dialogs replaced with an in-app dialog (also makes the dashboard automatable).
|
|
21
|
+
- **Web collection import honors recorded workspaces**, sharing one implementation with the CLI.
|
|
22
|
+
- **Honest metrics chips.** Diverged and missing repos get their own hero chips instead of hiding inside 'conflict'; the pull summary reads 'N attempted' with exclusions stated.
|
|
23
|
+
- **Cleaner micro-interactions.** Styled file picker, a LIVE dot that actually goes red when the server is unreachable, keyboard-visible focus rings, Escape closes menus, add-repo shows a Cloning… state.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- **Pull all / Fetch all spinners stop when the operation completes** (htmx indicator/disable double-count).
|
|
28
|
+
- **Repo detail timestamps** no longer render raw machine format.
|
|
29
|
+
|
|
7
30
|
## [0.3.0] - 2026-07-12
|
|
8
31
|
|
|
9
32
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitstow
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: A git repository library manager — clone, organize, and maintain collections of repos you learn from
|
|
5
5
|
Project-URL: Homepage, https://github.com/rishmadaan/gitstow
|
|
6
6
|
Project-URL: Repository, https://github.com/rishmadaan/gitstow
|