Skip to content

fix(workspace): finish grouping interactions and window containment - #94

Merged
wzz6423 merged 1 commit into
mainfrom
fix/sidebar-duplicate-new-project
Sep 17, 2026
Merged

wzz6423 merged 1 commit into
mainfrom
fix/sidebar-duplicate-new-project

Conversation

@wzz6423

@wzz6423 wzz6423 commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Summary

This follow-up completes the project and session-tab grouping work after #93. The unfinished interaction paths could leave an earlier group click queued while the user moved to another row, ordinary singleton panels could be presented independently of the Zshell window that opened them, and long worktree lists shared the Git panel's outer scroll area.

  • Persist color markers for sidebar groups and session-tab groups, expose the matching context-menu actions, and restore invalid or legacy grouping data safely.
  • Remove the duplicate ungrouped-project row and use the sidebar's New Project button as the drag target for removing project membership or creating an ungrouped project from a tab.
  • Keep delayed group single-click handling compatible with double-click rename while cancelling superseded work across rows. A selection token prevents cancelled dispatch work from applying a stale collapse or expand action.
  • Replace the worktree list with an AppKit-owned, height-limited scroll viewport so scrolling stays inside the worktree section and refreshed lists clamp their previous offset.
  • Attach ordinary Quick Launch, editor, SSH, color, settings, environment, and quick-command presentation to the Zshell window that initiated it. The global quick terminal retains its application-level behavior.
  • Update the English and Simplified Chinese project and Git documentation for the final interactions.

GitHub Project

  • Project: zshell Development

PR Type

  • Type: fix

Validation

macOS application

  • Status: passed
  • Command: xcodebuild -project mac/zshell.xcodeproj -scheme zshell -configuration Debug -destination 'platform=macOS,arch=arm64' -derivedDataPath build
  • Result: The arm64 Debug application built successfully after the final interaction changes.

Code signing

  • Status: passed
  • Command: codesign --verify --deep --strict --verbose=2 '/Build/Products/Debug/zshell Debug.app'
  • Result: The generated application was valid on disk and satisfied its designated requirement.

Website and documentation

  • Status: passed
  • Command: cd web && bun run typecheck && bun run build
  • Result: MDX generation, TypeScript checking, client and server builds, and prerendering completed successfully.

Diff hygiene

  • Status: passed
  • Command: git diff --check
  • Result: No whitespace errors were reported.

Manual UI exercise

  • Status: passed
  • Command: Exercise the development app's group collapse and rename flow, color panel, Quick Launch appearance, and bounded worktree scrolling.
  • Result: The affected AppKit interactions behaved as expected. The final deferred-click cancellation change was subsequently rebuilt and signature-checked.

Risk and Rollback

  • Risk: The affected surface includes group click timing, sidebar and tab drag targets, singleton AppKit window ownership, and Git-panel scrolling. Persistence additions are optional Codable fields, and the global quick terminal path is unchanged.
  • Rollback: Revert this pull request to restore the previous grouping, presentation, and worktree-scroll behavior.

Related Issue

None

AI Attribution

@github-actions

Copy link
Copy Markdown

Automated reply: the following guidance comes from CONTRIBUTING.md.

Thank you for opening a pull request. Check these requirements while it is awaiting review.

  • The PR title must use an English Conventional Commit subject, for example:

    • feat(terminal): add per-pane scrollback search
    • fix(git): resolve stale diff after a branch switch
    • docs: update contributing guidelines
      Allowed types are feat, fix, docs, style, refactor, perf, test, chore, build, ci, and revert.
  • The PR body must be in English and contain the Summary, GitHub Project, PR Type, Validation, Risk and Rollback, Related Issue, and AI Attribution sections that .github/PULL_REQUEST_TEMPLATE.md provides.

    • GitHub Project keeps the template value - Project: zshell Development. Project Automation reads it to place the pull request on the shared board.
    • PR Type declares exactly one - Type: value, and it must match the type in the title. PR Automation turns it into a label, for example fix into bug.
    • Every Validation block must declare passed, failed, or not run. passed and failed need Command and Result; not run needs Reason.
    • Related Issue must either close an issue with a keyword such as Closes #123, which also applies the development label, or be exactly None.
    • AI Attribution must declare - Agent:. Any agent other than None requires a matching - Co-authored-by: Name <email> line, which must also appear as a trailer on at least one commit, and applies the ai-assisted label.

    Example:

    ## Summary
    - Add a repository hygiene check.
    
    ## GitHub Project
    - Project: zshell Development
    
    ## PR Type
    - Type: ci
    
    ## Validation
    - Status: passed
    - Command: bash .github/scripts/check-repository-hygiene.sh
    - Result: Repository hygiene check passed.
    
    ## Risk and Rollback
    - Risk: Only repository automation is affected.
    - Rollback: Revert this pull request.
    
    ## Related Issue
    Closes #123
    
    ## AI Attribution
    - Agent: Claude Code
    - Co-authored-by: Claude <noreply@anthropic.com>
  • The PR Quality check validates this format; a pull request cannot be merged while the check is failing. PR Automation then applies the labels and assigns the pull request.

  • There is no unit test target: app changes are proven by building and running Zshell and exercising the change, so say in Validation what you did and attach screenshots or a recording for UI work. Run cargo test --locked in mac/Vendor/alacritty-bridge for bridge changes, bun run typecheck && bun run build in web/ for site changes, and bunx tsc --noEmit in mac/ for anything under mac/scripts/. Install dependencies with bun install --frozen-lockfile in each package before running Bun checks.

  • Build all new UI in AppKit. SwiftUI is legacy and must not be introduced or expanded; materially changing an existing SwiftUI view means migrating the affected UI to AppKit.

  • Update the relevant documentation when changing user-visible behavior, build instructions, or the release process. CHANGELOG.md is written for end users, so it records the shipped outcome rather than the fixes and refactors on the way there, and the version is bumped only by a release, never by a pull request.

  • Do not commit mac/build/, mac/Vendor/alacritty-bridge/target, node_modules, dist, downloaded files, logs, tokens, signing materials, or personal data. Repository Hygiene fails on them.

  • main and publish-v* are protected and can only be updated through a reviewed pull request that passes its checks.

@github-actions github-actions Bot added ai-assisted An AI agent co-authored this change bug Something isn't working labels Sep 17, 2026
@wzz6423 wzz6423 moved this to Bug Fix in zshell Development Sep 17, 2026
@wzz6423
wzz6423 merged commit 2834f6b into main Sep 17, 2026
28 checks passed
@wzz6423
wzz6423 deleted the fix/sidebar-duplicate-new-project branch September 17, 2026 02:33
@wzz6423 wzz6423 moved this from Bug Fix to Done in zshell Development Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-assisted An AI agent co-authored this change bug Something isn't working

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant