fix(jira): inline reorder arrows, fix first/last disabled reactivity - #141
Merged
wgordon17 merged 3 commits intoAug 26, 2026
Merged
Conversation
wgordon17
marked this pull request as ready for review
August 26, 2026 19:48
wgordon17
force-pushed
the
worktree-jira-reorder-arrows-spacing
branch
from
August 26, 2026 19:48
4837c87 to
71af46a
Compare
The custom-order reorder controls stacked the up/down arrows vertically, forcing each row taller than its content and leaving the Assigned tab far sparser than the non-reorder view. Lay the arrows out inline (side by side) so row height is content-driven again. Also make the first/last boundary state reactive: it was snapshotted into a plain object when each row first rendered, but the keyed <For> moves cached row nodes on reorder without re-running the callback, so the originally-first row kept its up arrow disabled after moving and whatever landed on top never got disabled. Passing isFirst/isLast as accessors re-tracks the row's live index on every reorder.
Guards the fix in the preceding commit: drives a custom-order reorder through the reactive prop layer (no click, so the reordering() lockout is not involved) and asserts the up/down disabled state follows each row's live position. Moving PROJ-1 first->last exercises both isFirst and isLast dynamically. Verified to fail against the pre-fix snapshot boundary and pass against the accessor-based fix.
wgordon17
force-pushed
the
worktree-jira-reorder-arrows-spacing
branch
from
August 26, 2026 19:51
71af46a to
8762265
Compare
The auth store's cross-tab storage listener fires a fire-and-forget
fetch("https://api.github.com/user") on token replacement. One test
("updates token signal when another tab writes a different non-null value")
dispatched that storage event without stubbing fetch, so a real happy-dom
request was left in flight; vi.resetModules across the file accumulates
listeners on the shared window, so a single dispatch launched many. When
vitest tore down the window it aborted those requests and happy-dom's abort
path double-closed the response body stream ("Invalid state: Controller is
already closed"), an uncaught error that failed the whole run — flakily,
since it only bit when a request was still in flight at teardown (CI load).
Two-layer fix:
- Stub fetch in the offending test and let the fire-and-forget settle.
- Add tests/fetch-guard.ts: default fetch to a fast network error so any
unmocked fetch fails cheaply and deterministically instead of leaking a
live request. Wired only into the workspace "browser" project, so the
live-network smoke suite (which shares tests/setup.ts) stays unguarded.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
<For>moves cached row nodes on reorder without re-running the callback, so the originally-first row kept its up arrow disabled after moving and whatever landed on top never got disabled. PassingisFirst/isLastas accessors re-tracks each row's live index.