Compare commits
merge into: naps62/maestro:etude
naps62/maestro:main
naps62/maestro:chorale
naps62/maestro:upbeat
naps62/maestro:tritone-2
naps62/maestro:fermata-4
naps62/maestro:android-app/271-theme-apk
naps62/maestro:blitz/android-app
naps62/maestro:android-app/270-command-bar
naps62/maestro:android-app/268-app-shell
naps62/maestro:android-app/267-structured
naps62/maestro:android-app/266-terminal
naps62/maestro:android-app/269-spawn-form
naps62/maestro:android-app/265-sidebar
naps62/maestro:android-app/264-daemon-connection
naps62/maestro:android-app/263-api-client
naps62/maestro:android-app/262-project-scaffold
naps62/maestro:rhapsody
naps62/maestro:dominant-2
naps62/maestro:animato-2
naps62/maestro:glockenspiel
naps62/maestro:septet
naps62/maestro:mandolin
naps62/maestro:chord
naps62/maestro:timbre-2
naps62/maestro:aeolian
naps62/maestro:cello-2
naps62/maestro:allegro
naps62/maestro:lento
naps62/maestro:lyre
naps62/maestro:maestoso
naps62/maestro:cadence-3
naps62/maestro:modulation-2
naps62/maestro:modulation
naps62/maestro:xylophone-2
naps62/maestro:tuba-2
naps62/maestro:piccolo-2
naps62/maestro:grazioso-2
naps62/maestro:grazioso
naps62/maestro:hymn
naps62/maestro:xylophone
naps62/maestro:blitz/react-tailwind-migration
naps62/maestro:254-design-kit-react
naps62/maestro:253-delete-vanilla-wire-react
naps62/maestro:issue/252-tests-rtl
naps62/maestro:issue/242-daemon-link-react
naps62/maestro:issue/240-types-api-router
naps62/maestro:issue/251-preview-mode-react
naps62/maestro:issue/250-dialogs-drawer-react
naps62/maestro:issue/249-layout-system-react
naps62/maestro:247-command-bar-react
naps62/maestro:issue/248-spawn-dialog-react
naps62/maestro:246-structured-pane-react
naps62/maestro:issue/245-terminal-pane-react
naps62/maestro:244-sidebar-react
naps62/maestro:issue/243-theme-tokens-tailwind
naps62/maestro:issue/241-catalog-connection-zustand
naps62/maestro:issue/239-scaffold-react-tailwind
naps62/maestro:timpani
naps62/maestro:staccato-2
naps62/maestro:trombone-2
naps62/maestro:grave-2
naps62/maestro:harpsichord-2
naps62/maestro:recorder-4
naps62/maestro:vivace
naps62/maestro:sotto
naps62/maestro:tuba
naps62/maestro:chaconne
naps62/maestro:etude
naps62/maestro:arpeggio
naps62/maestro:harpsichord
naps62/maestro:cadence-2
naps62/maestro:brillante
naps62/maestro:clarinet
naps62/maestro:snare-2
naps62/maestro:staccato
naps62/maestro:recorder-2
naps62/maestro:tritone
naps62/maestro:balalaika
naps62/maestro:timbre
naps62/maestro:violin
naps62/maestro:fix/web-nix-build
naps62/maestro:blitz/codex-structured-sessions
naps62/maestro:codex-structured-sessions/203-tui-spawn
naps62/maestro:codex-structured-sessions/202-web-spawn
naps62/maestro:codex-structured-sessions/201-codex-lifecycle
naps62/maestro:codex-structured-sessions/200-select-acp-adapter
naps62/maestro:blitz/structured-view
naps62/maestro:vivo
naps62/maestro:structured-view/199-command-resolution
naps62/maestro:structured-view/198-viewport
naps62/maestro:structured-view/197-lock-order
naps62/maestro:structured-view/196-concurrent-handshakes
naps62/maestro:structured-view/195-autoscroll
naps62/maestro:structured-view/194-plan-row
naps62/maestro:structured-view/193-expanded-reconnect
naps62/maestro:structured-view/192-pty-gate
naps62/maestro:structured-view/143-spawn-structured
naps62/maestro:structured-view/191-accurate-diffs
naps62/maestro:structured-view/190-web-tool-state
naps62/maestro:structured-view/189-tui-approval-failure
naps62/maestro:structured-view/188-web-submit
naps62/maestro:structured-view/187-tui-spawn-race
naps62/maestro:structured-view/141-tui-structured
naps62/maestro:structured-view/140-web-structured
naps62/maestro:structured-view/186-unknown-update-doc
naps62/maestro:structured-view/185-lock-order
naps62/maestro:structured-view/184-approval-persist
naps62/maestro:structured-view/142-structured-activity
naps62/maestro:structured-view/137-structured-docs
naps62/maestro:fix/codex-attach-scroll
naps62/maestro:structured-view/139-permission-requests
naps62/maestro:structured-view/138-structured-api
naps62/maestro:structured-view/136-transcript-projection
naps62/maestro:structured-view/183-dismissal-race
naps62/maestro:structured-view/182-natural-exit-race
naps62/maestro:structured-view/181-recovery-provenance
naps62/maestro:structured-view/180-shutdown-create
naps62/maestro:structured-view/179-shutdown-drain
naps62/maestro:structured-view/177-restart-worktree
naps62/maestro:structured-view/178-pid-safe
naps62/maestro:structured-view/135-event-log
naps62/maestro:structured-view/134-acp-subprocess
naps62/maestro:10-umbrella-feature-gate-tests
naps62/maestro:structured-view/133-session-view
naps62/maestro:contrabass
naps62/maestro:fermata
naps62/maestro:interlude
naps62/maestro:crescendo
naps62/maestro:reboot/173-timing-assert
naps62/maestro:reboot/169-tui-dormant
naps62/maestro:blitz/reboot-resilience
naps62/maestro:reboot/171-scrollback
naps62/maestro:reboot/176-session-id-refresh
naps62/maestro:reboot/175-resume-races
naps62/maestro:reboot/168-web-dormant
naps62/maestro:reboot/174-bootid-strand
naps62/maestro:reboot/167-resume-policy
naps62/maestro:reboot/166-resume-route
naps62/maestro:reboot/172-worktree-field
naps62/maestro:reboot/164-boot-id
naps62/maestro:reboot/165-resume-command
naps62/maestro:reboot/163-prune-sidecars
naps62/maestro:tuplet
naps62/maestro:reboot/162-dormant
naps62/maestro:reboot/161-agent-session-id
naps62/maestro:sarabande
naps62/maestro:glissando
naps62/maestro:blitz/command-bar
naps62/maestro:legato
naps62/maestro:command-bar/159-web-leader-config
naps62/maestro:command-bar/157-touch-entry
naps62/maestro:command-bar/158-literal-leader
naps62/maestro:command-bar/156-tui-literal-ctrlk
naps62/maestro:command-bar/155-tui-drillin
naps62/maestro:command-bar/151-web-drillin
naps62/maestro:command-bar/154-tui-sigils
naps62/maestro:command-bar/152-web-pane-ctrlk
naps62/maestro:command-bar/150-web-sigils
naps62/maestro:command-bar/153-tui-bar
naps62/maestro:aubade
naps62/maestro:command-bar/147-rust-matcher
naps62/maestro:dominant
naps62/maestro:command-bar/149-web-bar
naps62/maestro:command-bar/145-daemon-focus
naps62/maestro:command-bar/146-ts-matcher
naps62/maestro:command-bar/148-web-registry
naps62/maestro:harmony
naps62/maestro:command-bar/144-contract
naps62/maestro:coda
naps62/maestro:oboe
naps62/maestro:accordion
naps62/maestro:snare
naps62/maestro:feroce
naps62/maestro:cantabile
naps62/maestro:fix/tui-daemon-url-resolution
naps62/maestro:haiky
naps62/maestro:activity
naps62/maestro:shortcuts
naps62/maestro:dorian
naps62/maestro:symphony
naps62/maestro:colors
naps62/maestro:flugelhorn
naps62/maestro:andante
naps62/maestro:trombone
naps62/maestro:organ
naps62/maestro:scherzo
naps62/maestro:duduk
naps62/maestro:sostenuto
naps62/maestro:lullaby
naps62/maestro:moderato-motif
naps62/maestro:largo-piano
naps62/maestro:moderato-bassoon
naps62/maestro:lento-sonata
naps62/maestro:animato-trumpet
naps62/maestro:largo-lute
naps62/maestro:feroce-violin
naps62/maestro:grazioso-viola
naps62/maestro:sostenuto-bassoon
naps62/maestro:crescendo-rondo
naps62/maestro:refresh
naps62/maestro:marcato-nocturne
naps62/maestro:brillante-fugue
naps62/maestro:forte-lyre
naps62/maestro:rename
naps62/maestro:themes
naps62/maestro:blitz/tui-shell
naps62/maestro:issue/124-project-groups
naps62/maestro:issue/122-theme-presets
naps62/maestro:issue/123-focused-panels
naps62/maestro:issue/121-tui-line2
naps62/maestro:issue/120-web-line2
naps62/maestro:issue/119-bare-maestro-tui
naps62/maestro:issue/118-palette-roles
naps62/maestro:issue/117-path-helpers
naps62/maestro:issue/116-sidebar-contract
naps62/maestro:blitz/sidebar-cards
naps62/maestro:sidebar-cards/115-fourth-flake
naps62/maestro:sidebar-cards/114-hook-error
naps62/maestro:sidebar-cards/113-more-flakes
naps62/maestro:sidebar-cards/106-hooks-install
naps62/maestro:sidebar-cards/112-detail-render
naps62/maestro:sidebar-cards/111-flaky-retention
naps62/maestro:sidebar-cards/105-activity-endpoint
naps62/maestro:sidebar-cards/110-lenient-activity
naps62/maestro:sidebar-cards/108-tui-cards
naps62/maestro:sidebar-cards/107-web-cards
naps62/maestro:sidebar-cards/104-activity-clock
naps62/maestro:sidebar-cards/103-session-env
naps62/maestro:sidebar-cards/102-activity-wire
naps62/maestro:sidebar-cards/101-sidebar-contract
naps62/maestro:blitz/spawn-v2
naps62/maestro:spawn-v2/97-enter-submits
naps62/maestro:spawn-v2/94-labels
naps62/maestro:spawn-v2/96-tui-picker
naps62/maestro:spawn-v2/93-collapse-worktree
naps62/maestro:spawn-v2/98-flake-ci
naps62/maestro:spawn-v2/95-project-picker
naps62/maestro:spawn-v2/74-gitroot-debounce
naps62/maestro:spawn-v2/76-preset-reset
naps62/maestro:spawn-v2/73-draft-pane-swap
naps62/maestro:spawn-v2/91-wt-toggle-default
naps62/maestro:spawn-v2/92-form-width
naps62/maestro:spawn-v2/70-fastforward-key
naps62/maestro:spawn-v2/72-opendraft-reuse
naps62/maestro:spawn-v2/75-projects-ttl
naps62/maestro:blitz/worktree-lifecycle
naps62/maestro:wl/83-blocked-work
naps62/maestro:wl/88-e2e-lifecycle
naps62/maestro:wl/87-drop-cleanup-flag
naps62/maestro:wl/82-natural-exit
naps62/maestro:wl/84-web-worktrees
naps62/maestro:wl/81-force-retains
naps62/maestro:wl/85-tui-worktrees
naps62/maestro:wl/86-cli-worktrees
naps62/maestro:wl/79-kill-guard
naps62/maestro:wl/80-worktrees-api
naps62/maestro:wl/77-worktree-collisions
naps62/maestro:wl/78-retained-store
naps62/maestro:spawn-v2/67-fastforward
naps62/maestro:spawn-v2/66-e2e
naps62/maestro:spawn-v2/65-tui-worktree
naps62/maestro:spawn-v2/68-draft-teardown
naps62/maestro:spawn-v2/62-drop-modal
naps62/maestro:spawn-v2/64-tui-fields
naps62/maestro:spawn-v2/61-wt-defaults
naps62/maestro:spawn-v2/53-names
naps62/maestro:spawn-v2/55-branches
naps62/maestro:spawn-v2/59-projectlist
naps62/maestro:spawn-v2/54-projects
naps62/maestro:spawn-v2/60-autocomplete
naps62/maestro:spawn-v2/63-tui-draft-pane
naps62/maestro:spawn-v2/56-worktree-place
naps62/maestro:spawn-v2/58-tui-textinput
naps62/maestro:spawn-v2/57-draft-pane
naps62/maestro:nix
naps62/maestro:refactor
naps62/maestro:dev-environment
naps62/maestro:linear/nap-228-daemon-recover-leaves-stale-tmux-pipe-pane-attach-shows-no
...
pull from: naps62/maestro:arpeggio
naps62/maestro:chorale
naps62/maestro:main
naps62/maestro:upbeat
naps62/maestro:tritone-2
naps62/maestro:fermata-4
naps62/maestro:android-app/271-theme-apk
naps62/maestro:blitz/android-app
naps62/maestro:android-app/270-command-bar
naps62/maestro:android-app/268-app-shell
naps62/maestro:android-app/267-structured
naps62/maestro:android-app/266-terminal
naps62/maestro:android-app/269-spawn-form
naps62/maestro:android-app/265-sidebar
naps62/maestro:android-app/264-daemon-connection
naps62/maestro:android-app/263-api-client
naps62/maestro:android-app/262-project-scaffold
naps62/maestro:rhapsody
naps62/maestro:dominant-2
naps62/maestro:animato-2
naps62/maestro:glockenspiel
naps62/maestro:septet
naps62/maestro:mandolin
naps62/maestro:chord
naps62/maestro:timbre-2
naps62/maestro:aeolian
naps62/maestro:cello-2
naps62/maestro:allegro
naps62/maestro:lento
naps62/maestro:lyre
naps62/maestro:maestoso
naps62/maestro:cadence-3
naps62/maestro:modulation-2
naps62/maestro:modulation
naps62/maestro:xylophone-2
naps62/maestro:tuba-2
naps62/maestro:piccolo-2
naps62/maestro:grazioso-2
naps62/maestro:grazioso
naps62/maestro:hymn
naps62/maestro:xylophone
naps62/maestro:blitz/react-tailwind-migration
naps62/maestro:254-design-kit-react
naps62/maestro:253-delete-vanilla-wire-react
naps62/maestro:issue/252-tests-rtl
naps62/maestro:issue/242-daemon-link-react
naps62/maestro:issue/240-types-api-router
naps62/maestro:issue/251-preview-mode-react
naps62/maestro:issue/250-dialogs-drawer-react
naps62/maestro:issue/249-layout-system-react
naps62/maestro:247-command-bar-react
naps62/maestro:issue/248-spawn-dialog-react
naps62/maestro:246-structured-pane-react
naps62/maestro:issue/245-terminal-pane-react
naps62/maestro:244-sidebar-react
naps62/maestro:issue/243-theme-tokens-tailwind
naps62/maestro:issue/241-catalog-connection-zustand
naps62/maestro:issue/239-scaffold-react-tailwind
naps62/maestro:timpani
naps62/maestro:staccato-2
naps62/maestro:trombone-2
naps62/maestro:grave-2
naps62/maestro:harpsichord-2
naps62/maestro:recorder-4
naps62/maestro:vivace
naps62/maestro:sotto
naps62/maestro:tuba
naps62/maestro:chaconne
naps62/maestro:etude
naps62/maestro:arpeggio
naps62/maestro:harpsichord
naps62/maestro:cadence-2
naps62/maestro:brillante
naps62/maestro:clarinet
naps62/maestro:snare-2
naps62/maestro:staccato
naps62/maestro:recorder-2
naps62/maestro:tritone
naps62/maestro:balalaika
naps62/maestro:timbre
naps62/maestro:violin
naps62/maestro:fix/web-nix-build
naps62/maestro:blitz/codex-structured-sessions
naps62/maestro:codex-structured-sessions/203-tui-spawn
naps62/maestro:codex-structured-sessions/202-web-spawn
naps62/maestro:codex-structured-sessions/201-codex-lifecycle
naps62/maestro:codex-structured-sessions/200-select-acp-adapter
naps62/maestro:blitz/structured-view
naps62/maestro:vivo
naps62/maestro:structured-view/199-command-resolution
naps62/maestro:structured-view/198-viewport
naps62/maestro:structured-view/197-lock-order
naps62/maestro:structured-view/196-concurrent-handshakes
naps62/maestro:structured-view/195-autoscroll
naps62/maestro:structured-view/194-plan-row
naps62/maestro:structured-view/193-expanded-reconnect
naps62/maestro:structured-view/192-pty-gate
naps62/maestro:structured-view/143-spawn-structured
naps62/maestro:structured-view/191-accurate-diffs
naps62/maestro:structured-view/190-web-tool-state
naps62/maestro:structured-view/189-tui-approval-failure
naps62/maestro:structured-view/188-web-submit
naps62/maestro:structured-view/187-tui-spawn-race
naps62/maestro:structured-view/141-tui-structured
naps62/maestro:structured-view/140-web-structured
naps62/maestro:structured-view/186-unknown-update-doc
naps62/maestro:structured-view/185-lock-order
naps62/maestro:structured-view/184-approval-persist
naps62/maestro:structured-view/142-structured-activity
naps62/maestro:structured-view/137-structured-docs
naps62/maestro:fix/codex-attach-scroll
naps62/maestro:structured-view/139-permission-requests
naps62/maestro:structured-view/138-structured-api
naps62/maestro:structured-view/136-transcript-projection
naps62/maestro:structured-view/183-dismissal-race
naps62/maestro:structured-view/182-natural-exit-race
naps62/maestro:structured-view/181-recovery-provenance
naps62/maestro:structured-view/180-shutdown-create
naps62/maestro:structured-view/179-shutdown-drain
naps62/maestro:structured-view/177-restart-worktree
naps62/maestro:structured-view/178-pid-safe
naps62/maestro:structured-view/135-event-log
naps62/maestro:structured-view/134-acp-subprocess
naps62/maestro:10-umbrella-feature-gate-tests
naps62/maestro:structured-view/133-session-view
naps62/maestro:contrabass
naps62/maestro:fermata
naps62/maestro:interlude
naps62/maestro:crescendo
naps62/maestro:reboot/173-timing-assert
naps62/maestro:reboot/169-tui-dormant
naps62/maestro:blitz/reboot-resilience
naps62/maestro:reboot/171-scrollback
naps62/maestro:reboot/176-session-id-refresh
naps62/maestro:reboot/175-resume-races
naps62/maestro:reboot/168-web-dormant
naps62/maestro:reboot/174-bootid-strand
naps62/maestro:reboot/167-resume-policy
naps62/maestro:reboot/166-resume-route
naps62/maestro:reboot/172-worktree-field
naps62/maestro:reboot/164-boot-id
naps62/maestro:reboot/165-resume-command
naps62/maestro:reboot/163-prune-sidecars
naps62/maestro:tuplet
naps62/maestro:reboot/162-dormant
naps62/maestro:reboot/161-agent-session-id
naps62/maestro:sarabande
naps62/maestro:glissando
naps62/maestro:blitz/command-bar
naps62/maestro:legato
naps62/maestro:command-bar/159-web-leader-config
naps62/maestro:command-bar/157-touch-entry
naps62/maestro:command-bar/158-literal-leader
naps62/maestro:command-bar/156-tui-literal-ctrlk
naps62/maestro:command-bar/155-tui-drillin
naps62/maestro:command-bar/151-web-drillin
naps62/maestro:command-bar/154-tui-sigils
naps62/maestro:command-bar/152-web-pane-ctrlk
naps62/maestro:command-bar/150-web-sigils
naps62/maestro:command-bar/153-tui-bar
naps62/maestro:aubade
naps62/maestro:command-bar/147-rust-matcher
naps62/maestro:dominant
naps62/maestro:command-bar/149-web-bar
naps62/maestro:command-bar/145-daemon-focus
naps62/maestro:command-bar/146-ts-matcher
naps62/maestro:command-bar/148-web-registry
naps62/maestro:harmony
naps62/maestro:command-bar/144-contract
naps62/maestro:coda
naps62/maestro:oboe
naps62/maestro:accordion
naps62/maestro:snare
naps62/maestro:feroce
naps62/maestro:cantabile
naps62/maestro:fix/tui-daemon-url-resolution
naps62/maestro:haiky
naps62/maestro:activity
naps62/maestro:shortcuts
naps62/maestro:dorian
naps62/maestro:symphony
naps62/maestro:colors
naps62/maestro:flugelhorn
naps62/maestro:andante
naps62/maestro:trombone
naps62/maestro:organ
naps62/maestro:scherzo
naps62/maestro:duduk
naps62/maestro:sostenuto
naps62/maestro:lullaby
naps62/maestro:moderato-motif
naps62/maestro:largo-piano
naps62/maestro:moderato-bassoon
naps62/maestro:lento-sonata
naps62/maestro:animato-trumpet
naps62/maestro:largo-lute
naps62/maestro:feroce-violin
naps62/maestro:grazioso-viola
naps62/maestro:sostenuto-bassoon
naps62/maestro:crescendo-rondo
naps62/maestro:refresh
naps62/maestro:marcato-nocturne
naps62/maestro:brillante-fugue
naps62/maestro:forte-lyre
naps62/maestro:rename
naps62/maestro:themes
naps62/maestro:blitz/tui-shell
naps62/maestro:issue/124-project-groups
naps62/maestro:issue/122-theme-presets
naps62/maestro:issue/123-focused-panels
naps62/maestro:issue/121-tui-line2
naps62/maestro:issue/120-web-line2
naps62/maestro:issue/119-bare-maestro-tui
naps62/maestro:issue/118-palette-roles
naps62/maestro:issue/117-path-helpers
naps62/maestro:issue/116-sidebar-contract
naps62/maestro:blitz/sidebar-cards
naps62/maestro:sidebar-cards/115-fourth-flake
naps62/maestro:sidebar-cards/114-hook-error
naps62/maestro:sidebar-cards/113-more-flakes
naps62/maestro:sidebar-cards/106-hooks-install
naps62/maestro:sidebar-cards/112-detail-render
naps62/maestro:sidebar-cards/111-flaky-retention
naps62/maestro:sidebar-cards/105-activity-endpoint
naps62/maestro:sidebar-cards/110-lenient-activity
naps62/maestro:sidebar-cards/108-tui-cards
naps62/maestro:sidebar-cards/107-web-cards
naps62/maestro:sidebar-cards/104-activity-clock
naps62/maestro:sidebar-cards/103-session-env
naps62/maestro:sidebar-cards/102-activity-wire
naps62/maestro:sidebar-cards/101-sidebar-contract
naps62/maestro:blitz/spawn-v2
naps62/maestro:spawn-v2/97-enter-submits
naps62/maestro:spawn-v2/94-labels
naps62/maestro:spawn-v2/96-tui-picker
naps62/maestro:spawn-v2/93-collapse-worktree
naps62/maestro:spawn-v2/98-flake-ci
naps62/maestro:spawn-v2/95-project-picker
naps62/maestro:spawn-v2/74-gitroot-debounce
naps62/maestro:spawn-v2/76-preset-reset
naps62/maestro:spawn-v2/73-draft-pane-swap
naps62/maestro:spawn-v2/91-wt-toggle-default
naps62/maestro:spawn-v2/92-form-width
naps62/maestro:spawn-v2/70-fastforward-key
naps62/maestro:spawn-v2/72-opendraft-reuse
naps62/maestro:spawn-v2/75-projects-ttl
naps62/maestro:blitz/worktree-lifecycle
naps62/maestro:wl/83-blocked-work
naps62/maestro:wl/88-e2e-lifecycle
naps62/maestro:wl/87-drop-cleanup-flag
naps62/maestro:wl/82-natural-exit
naps62/maestro:wl/84-web-worktrees
naps62/maestro:wl/81-force-retains
naps62/maestro:wl/85-tui-worktrees
naps62/maestro:wl/86-cli-worktrees
naps62/maestro:wl/79-kill-guard
naps62/maestro:wl/80-worktrees-api
naps62/maestro:wl/77-worktree-collisions
naps62/maestro:wl/78-retained-store
naps62/maestro:spawn-v2/67-fastforward
naps62/maestro:spawn-v2/66-e2e
naps62/maestro:spawn-v2/65-tui-worktree
naps62/maestro:spawn-v2/68-draft-teardown
naps62/maestro:spawn-v2/62-drop-modal
naps62/maestro:spawn-v2/64-tui-fields
naps62/maestro:spawn-v2/61-wt-defaults
naps62/maestro:spawn-v2/53-names
naps62/maestro:spawn-v2/55-branches
naps62/maestro:spawn-v2/59-projectlist
naps62/maestro:spawn-v2/54-projects
naps62/maestro:spawn-v2/60-autocomplete
naps62/maestro:spawn-v2/63-tui-draft-pane
naps62/maestro:spawn-v2/56-worktree-place
naps62/maestro:spawn-v2/58-tui-textinput
naps62/maestro:spawn-v2/57-draft-pane
naps62/maestro:nix
naps62/maestro:refactor
naps62/maestro:dev-environment
naps62/maestro:linear/nap-228-daemon-recover-leaves-stale-tmux-pipe-pane-attach-shows-no
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
9c77965c51 | Merge remote-tracking branch 'origin/main' into arpeggio | ||
|
|
49df4c2e9e |
fix(web): surgical DOM patch for tool rows to stop flashing
Patch deltas on existing rows now swap just the affected element via replaceWith() instead of tearing down and rebuilding the entire transcript. Stops the visible flash and preserves text selection. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
1 changed files with 13 additions and 0 deletions
@@ -551,6 +551,19 @@ export function createStructuredConnection(
|
||||
rows.push(delta.row);
|
||||
} else {
|
||||
rows[i] = delta.row;
|
||||
// Surgical DOM swap: replace just this row's element instead of
|
||||
// tearing down and rebuilding the entire transcript, which causes
|
||||
// visible flashing and breaks text selection.
|
||||
const oldEl = rowEls.get(delta.row.id);
|
||||
if (oldEl) {
|
||||
const newEl = buildRowElement(delta.row);
|
||||
if (newEl) {
|
||||
oldEl.replaceWith(newEl);
|
||||
rowEls.set(delta.row.id, newEl);
|
||||
}
|
||||
syncAvailableCommands();
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const i = rowIndex.get(delta.id);
|
||||
|
||||
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.