Commit 9c3cb2b
authored
feat(shell): welcome banner redesign + TUI polish, update orchestrator, release-orchestration plans (#37)
* docs: add 3-repo release orchestration design spec
Approved design for finishing the GitHub App/OIDC migration, a self-owned
release.py single-source-of-truth tool, fail-loud promotion, and broadened
distribution (Scoop/GHCR/Nix/WinGet). Phased P0->P2 roadmap. Produced via a
multi-agent design workflow, ground-truthed against the live repos.
* docs: add welcome banner redesign spec (footer chip)
* docs: add welcome banner redesign implementation plan
* test: lock welcome banner redesign (footer chip, no pipe, split strapline)
* feat(shell): redesign welcome banner with footer chip layout
* docs: add P0-P2 release-orchestration implementation plans (draft)
Write-stage plans recovered from the plan-writing workflow, each with its
automated review punch-list embedded. Finalize pass (applying the punch-lists)
pending after a session-limit interruption.
* docs: finalize P0-P2 release-orchestration plans
Applied the automated review punch-lists (finalize pass): P0 fixes the invalid
gh api --jq, the $GITHUB_ENV bottleneck plumbing, semver-ordered readiness-issue
auto-close, and the changelog-gate verification; P1 wires the PYTHINKER_MANAGED
hook end-to-end; P2 fixes the Scoop extract_dir/bin nesting and the Docker
ancestor-check dry-run. Removed draft banners and embedded punch-lists.
* feat(shell): TUI redesign, update orchestrator, release-orchestration docs
Broad checkpoint of the welcome-banner-redesign branch:
- Shell/TUI: welcome banner footer-chip layout, design system, glyphs,
motion, prompt, slash, tool renderers, MCP status, activity tree,
live view, worklog, theme tokens.
- Update flow: new update_orchestrator module + CLI wiring; terminal
capability detection (terminal_capabilities) with tests.
- Feedback: structured feedback repo (feedback_repo) and slash command.
- Auth/config/llm: OpenAI auth + platform/config/llm adjustments.
- Docs: welcome-banner spec/plan and P0–P2 release-orchestration plans.
- Web: subagent-steps component update.
- Address CodeRabbit review: -> None on update CLI handlers, drop a
duplicate test assertion, correct the backoff verification budget
(7 retries / 364s), and de-hardcode uv paths in the P2 plan.
* test(shell): follow-up tweaks to update, feedback, and TUI tests
Adjust update_orchestrator, mcp_status, feedback_repo, and live_view
alongside their tests; add update CLI test coverage.
* fix(ci): make UI tests terminal-agnostic, fix docs build, add changelog
CI runs the suite with TERM=dumb and NO_COLOR=1 to keep logs clean. The new
terminal_capabilities module correctly degrades the TUI to ASCII glyphs and
no-color under those, but ~115 pre-existing UI-contract tests assert the rich
(Unicode + color + motion) appearance and only ever ran in UTF-8 dev shells.
- tests/conftest.py: pin a capable terminal (drop NO_COLOR/CLICOLOR/glyph/motion
overrides, set TERM=xterm-256color) before any pythinker import freezes the
glyph constants in ui.shell.glyphs. The degraded fallbacks stay covered by
tests/ui_and_conv/test_terminal_capabilities.py. Verified: full tests/ run
green under NO_COLOR=1 TERM=dumb PYTHONUTF8=1.
- docs p0-quick-wins: wrap inline-code GitHub Actions ${{ ... }} in <code v-pre>
so VitePress's Vue SSR stops evaluating them as template interpolation.
Fixes the docs build crash on PYTHINKER_HOME_REPO_DISPATCH_TOKEN. Verified
with a local build over the committed doc set.
- CHANGELOG.md (+ synced docs mirror): add Unreleased entries for the welcome
banner redesign and terminal-aware rendering, satisfying the changelog gate.
* fix: address CodeRabbit review (null guard, ASCII glyphs, annotations)
- slash.py: guard provider.api_key (SecretStr | None) before get_secret_value()
to avoid AttributeError when no API key is configured.
- mcp_status.py + glyphs.py: add an ASCII-aware LIST_BULLET glyph and use it for
the MCP startup/inventory bullets instead of a hardcoded "•", so they degrade
with the rest of the TUI under TERM=dumb / legacy code pages.
- _blocks.py: build changed-paths via a list comprehension (PERF401).
- test_update_cli.py, test_update_orchestrator.py: add -> None on the
_isolate_update_files helpers.
- p0-quick-wins plan: scope the release-bot App secrets to
--visibility selected --repos pythinker-code instead of org-wide.
* docs: use repo-relative paths in release-orchestration design spec
* docs: address CodeRabbit doc nits (relative paths, telemetry wording, fence langs, plan note)
* fix(ci): resolve PR 37 review failures
* test(cli): normalize export help output
* docs(ci): tighten release tag filters1 parent 25c2f20 commit 9c3cb2b
74 files changed
Lines changed: 7541 additions & 356 deletions
File tree
- .github/workflows
- docs
- en/release-notes
- superpowers
- plans
- specs
- src/pythinker_code
- auth
- cli
- ui
- shell
- components
- tool_renderers
- visualize
- tests
- auth
- cli
- core
- e2e
- ui_and_conv
- web/src/components/ai-elements
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
18 | 20 | | |
19 | 21 | | |
20 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
801 | 801 | | |
802 | 802 | | |
803 | 803 | | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
804 | 808 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
21 | 25 | | |
22 | 26 | | |
| |||
0 commit comments