feat: add worktree hygiene dashboard to web UI (Closes #432) #453

Merged
sysadmin merged 5 commits from feat/issue-432-worktree-hygiene into master 2026-07-09 08:24:35 -05:00
Owner

Summary

Closes #432. Child of tracker #425. Stacks on current master (ee8e9a) with only #432 worktree-hygiene work.

Adds read-only /worktrees and /api/worktrees routes that scan local branches/ directories, classify hygiene state, flag missing preserved worktrees (#404), and surface the canonical cleanup prompt — no deletion actions.

Base / head

  • Base: master
  • Head: 276a71b
  • Commits: exactly one — 276a71b (feat #432)

Changes (only #432)

  • webui/worktree_scanner.py — git worktree scan, classification, lock anomalies
  • webui/worktree_views.py — HTML table + cleanup prompt copy button
  • webui/app.py/worktrees, /api/worktrees routes (replaces stub)
  • docs/webui-local-dev.md — worktree hygiene section
  • tests/test_webui_worktree_hygiene.py — 8 tests; skeleton tests updated

Classifications

active-pr, active-issue, dirty, stale-clean, detached-review, unsafe-unknown, orphan

Validation

pytest tests/test_webui_skeleton.py tests/test_webui_project_registry.py tests/test_webui_prompt_library.py tests/test_webui_queue_dashboard.py tests/test_webui_worktree_hygiene.py -q

43 passed (9 subtests).

Worktree

branches/issue-432-worktree-hygiene @ 276a71b

## Summary Closes #432. Child of tracker #425. Stacks on current `master` (`ee8e9a`) with only #432 worktree-hygiene work. Adds read-only `/worktrees` and `/api/worktrees` routes that scan local `branches/` directories, classify hygiene state, flag missing preserved worktrees (#404), and surface the canonical cleanup prompt — no deletion actions. ## Base / head - Base: `master` - Head: `276a71b` - Commits: exactly one — `276a71b` (feat #432) ## Changes (only #432) - `webui/worktree_scanner.py` — git worktree scan, classification, lock anomalies - `webui/worktree_views.py` — HTML table + cleanup prompt copy button - `webui/app.py` — `/worktrees`, `/api/worktrees` routes (replaces stub) - `docs/webui-local-dev.md` — worktree hygiene section - `tests/test_webui_worktree_hygiene.py` — 8 tests; skeleton tests updated ## Classifications `active-pr`, `active-issue`, `dirty`, `stale-clean`, `detached-review`, `unsafe-unknown`, `orphan` ## Validation ``` pytest tests/test_webui_skeleton.py tests/test_webui_project_registry.py tests/test_webui_prompt_library.py tests/test_webui_queue_dashboard.py tests/test_webui_worktree_hygiene.py -q ``` **43 passed** (9 subtests). ## Worktree `branches/issue-432-worktree-hygiene` @ `276a71b`
jcwalker3 added 1 commit 2026-07-07 14:26:41 -05:00
Adds read-only /worktrees and /api/worktrees routes that scan branches/
directories, classify worktree state, flag missing preserved worktrees from
the issue lock, and surface the canonical cleanup prompt without deletion.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Author
Owner

pr: #453
branch: feat/issue-432-worktree-hygiene
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-432-worktree-hygiene
profile: prgs-author
session_id: unknown
phase: claimed
head_before: 276a71bd1a
expires_at: 2026-07-09T04:42:41Z
reviewer_active: no

<!-- mcp-conflict-fix-lease:v1 --> pr: #453 branch: feat/issue-432-worktree-hygiene worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-432-worktree-hygiene profile: prgs-author session_id: unknown phase: claimed head_before: 276a71bd1a5d8193ae62d808daf223ffb9038d72 expires_at: 2026-07-09T04:42:41Z reviewer_active: no
jcwalker3 added 1 commit 2026-07-08 21:44:04 -05:00
Merge prgs/master into PR branch.
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #453
issue: #432
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 38902-b20551f05e00
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-feat-issue-432-worktree-hygiene
phase: claimed
candidate_head: 87d6532cb3
target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T03:12:41Z
expires_at: 2026-07-09T05:12:41Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #453 issue: #432 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 38902-b20551f05e00 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-feat-issue-432-worktree-hygiene phase: claimed candidate_head: 87d6532cb3ec684dfe9a264fd8825a4846857662 target_branch: master target_branch_sha: none last_activity: 2026-07-09T03:12:41Z expires_at: 2026-07-09T05:12:41Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #453
issue: #432
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 38902-b20551f05e00
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-feat-issue-432-worktree-hygiene
phase: released
candidate_head: 87d6532cb3
target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T03:12:56Z
expires_at: 2026-07-09T05:12:56Z
blocker: manual-release

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #453 issue: #432 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 38902-b20551f05e00 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-feat-issue-432-worktree-hygiene phase: released candidate_head: 87d6532cb3ec684dfe9a264fd8825a4846857662 target_branch: master target_branch_sha: none last_activity: 2026-07-09T03:12:56Z expires_at: 2026-07-09T05:12:56Z blocker: manual-release
jcwalker3 added 1 commit 2026-07-09 07:43:13 -05:00
# Conflicts:
#	docs/webui-local-dev.md
#	webui/app.py
jcwalker3 added 1 commit 2026-07-09 08:22:59 -05:00
Merge both audit (#431) and worktree hygiene (#432) route/docs lines.
jcwalker3 added 1 commit 2026-07-09 08:23:24 -05:00
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #453
issue: #432
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 65352-b8e6f81d9ef8
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-453-worktree-hygiene
phase: claimed
candidate_head: b3bc459423
target_branch: master
target_branch_sha: 5cf44d78e6
last_activity: 2026-07-09T13:23:46Z
expires_at: 2026-07-09T15:23:46Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #453 issue: #432 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 65352-b8e6f81d9ef8 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-453-worktree-hygiene phase: claimed candidate_head: b3bc459423188383d9caeb0803934423d0d010d4 target_branch: master target_branch_sha: 5cf44d78e6c646593848b6d4e0110c87897aa83e last_activity: 2026-07-09T13:23:46Z expires_at: 2026-07-09T15:23:46Z blocker: none
sysadmin approved these changes 2026-07-09 08:24:00 -05:00
sysadmin left a comment
Owner

Review: APPROVE PR #453

Closes #432 — worktree hygiene dashboard in web UI.

Pre-review

Rebased onto master after #452 (docs conflict resolved; dropped obsolete skeleton stub assertion for /worktrees).

Scope (6 files)

  • webui/worktree_scanner.py / worktree_views.py — read-only branches/ scan
  • Routes /worktrees + /api/worktrees
  • Tests + docs

Validation

  • Focused suite: 28 passed (8 subtests) on rebased head
  • Mergeable against current master

Identity

  • Reviewer: sysadmin / prgs-reviewer
  • Author: jcwalker3 (not self-review)

Canonical PR State

STATE: approved ready-to-merge
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #453 at pinned head
NEXT_PROMPT:

Merge PR #453 (confirmation MERGE PR 453) at head b3bc459423188383d9caeb0803934423d0d010d4 using prgs-merger. Files: docs/webui-local-dev.md, tests/test_webui_skeleton.py, tests/test_webui_worktree_hygiene.py, webui/app.py, webui/worktree_scanner.py, webui/worktree_views.py. Then continue #455/#456/#457/#516.

WHAT_HAPPENED: Rebased after #452, fixed skeleton stub assertion, re-validated, APPROVE.
WHY: Scope matches #432; read-only scan only; tests green.
ISSUE: #432
HEAD_SHA: b3bc459423
REVIEW_STATUS: approved
MERGE_READY: yes
BLOCKERS: none
VALIDATION: 28 passed; mergeable True
LAST_UPDATED_BY: sysadmin / prgs-reviewer

## Review: APPROVE PR #453 **Closes #432** — worktree hygiene dashboard in web UI. ### Pre-review Rebased onto master after #452 (docs conflict resolved; dropped obsolete skeleton stub assertion for `/worktrees`). ### Scope (6 files) - `webui/worktree_scanner.py` / `worktree_views.py` — read-only `branches/` scan - Routes `/worktrees` + `/api/worktrees` - Tests + docs ### Validation - Focused suite: **28 passed** (8 subtests) on rebased head - Mergeable against current master ### Identity - Reviewer: sysadmin / prgs-reviewer - Author: jcwalker3 (not self-review) ## Canonical PR State STATE: approved ready-to-merge WHO_IS_NEXT: merger NEXT_ACTION: merge PR #453 at pinned head NEXT_PROMPT: ```text Merge PR #453 (confirmation MERGE PR 453) at head b3bc459423188383d9caeb0803934423d0d010d4 using prgs-merger. Files: docs/webui-local-dev.md, tests/test_webui_skeleton.py, tests/test_webui_worktree_hygiene.py, webui/app.py, webui/worktree_scanner.py, webui/worktree_views.py. Then continue #455/#456/#457/#516. ``` WHAT_HAPPENED: Rebased after #452, fixed skeleton stub assertion, re-validated, APPROVE. WHY: Scope matches #432; read-only scan only; tests green. ISSUE: #432 HEAD_SHA: b3bc459423188383d9caeb0803934423d0d010d4 REVIEW_STATUS: approved MERGE_READY: yes BLOCKERS: none VALIDATION: 28 passed; mergeable True LAST_UPDATED_BY: sysadmin / prgs-reviewer
Owner

adopted_at: 2026-07-09T13:24:24Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 65352-b8e6f81d9ef8
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 8005
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #453
issue: #432
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 66139-d4c7ef3f8dba
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-453-worktree-hygiene
phase: adopted
candidate_head: b3bc459423
target_branch: master
target_branch_sha: 5cf44d78e6
last_activity: 2026-07-09T13:24:24Z
expires_at: 2026-07-09T15:24:24Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T13:24:24Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 65352-b8e6f81d9ef8 adopted_from_profile: prgs-reviewer adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 8005 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #453 issue: #432 reviewer_identity: sysadmin profile: prgs-merger session_id: 66139-d4c7ef3f8dba worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-453-worktree-hygiene phase: adopted candidate_head: b3bc459423188383d9caeb0803934423d0d010d4 target_branch: master target_branch_sha: 5cf44d78e6c646593848b6d4e0110c87897aa83e last_activity: 2026-07-09T13:24:24Z expires_at: 2026-07-09T15:24:24Z blocker: none
sysadmin merged commit cd83b7588f into master 2026-07-09 08:24:35 -05:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#453