Repository navigation
fix(progress): show an attached goal item at once - #1724
Merged
github-actions[bot] merged 1 commit intoNov 10, 2026
Merged
Conversation
Attaching an item to a goal in the Goals view waited for the full re-read (stand-up, goals, pull requests, which can reach GitHub) before the board redrew, so the row appeared seconds later. The host now draws the goal the module answered with at once on attach, quick add, picker attach and move, and detach, and the reading after it brings the counts and statuses. A goal the board has not read yet (made by the picker's New goal...) is left to the reading, so a moved item never shows under No goal. The goal control on a task's panel renders the new goal and closes its picker before re-reading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 tasks done
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
An item attached to a goal in the Goals view took seconds to appear. The board redrew only after a full re-read, and that re-read asks GitHub for every pull request on the board. The host now draws the goal the module answered with straight away. A goal the board has not read yet (one the picker's New goal… just made) is left to the reading, so a moved item never shows under No goal. The goal control on a task's panel (
GoalAttach) gets the same fix: it renders the new goal and closes its picker before the re-read.Changes
GoalsHost.razor:WriteAsynctakes aWritten(Read, Goal). On success it draws the module's goal before the reading, and only when a reading follows.Drawreplaces that goal in the last reading and keeps its counts. It takes the goal's items off every other goal, since an item belongs to at most one.GoalAttach.razor: renders before its re-read.GoalsHostTestsandGoalAttachTests:Testing
GoalsHostTests,GoalAttachTests, filtered)Backlog.WithoutAppHeads.slnf -warnaserrordotnet test(Release)The 2 full-suite failures (
TaskSyncWorkerTests.A_rehydrate_asked_for_during_a_cycle_is_still_carried_out,DevbookSyncWriteTests.Inheriting_again_clears_the_entry) are outside the change set. Each class passed 3/3 when rerun alone.The new tests hold the reading open and assert the board before and after it lands:
An_attached_item_shows_on_its_goal_before_the_reading_after_it_landsA_moved_item_shows_on_its_new_goal_and_leaves_the_old_one_before_the_reading_landsAn_item_moved_into_a_new_goal_from_the_picker_never_shows_under_no_goal_before_the_reading_landsA_detached_item_leaves_its_goal_before_the_reading_landsA_new_task_shows_on_its_goal_once_attached_before_the_reading_landsAn_attach_shows_the_new_goal_and_closes_the_picker_before_the_goals_are_read_againQA covered four scenarios, all passing: attach a task, detach it, attach and detach PR #1712, and the goal picker on a task's panel. Timings run from the click to the DOM change. In the runs where the re-read was slow, the row was drawn well before the counts changed. Aspire showed no error logs; the two startup 404 traces for the fixture repos
acme/webandacme/apiwere there before any scenario ran. The application heads (desktop and mobile MAUI) were not built.Review took two rounds. Round 1 found one bug: a move into a goal just made in the picker showed the item under No goal for a moment. It is fixed and has its own test. One advisory remains open and predates this change: attach and detach have no busy guard, so two overlapping writes answered out of order would draw the older goal until the reading lands.
Spec check:
.devbook/domain/progress/features.md#the-goals-viewis code-ahead. One sentence is still to be captured: "After an attach, a move or a detach made in it, a goal shows what it now holds at once, and its counts and pull request statuses follow when the view is read again."#attaching-work-to-a-goalis aligned.Related
Fixes a defect reported in a session; there is no issue.
Merge danger: two-way door. A revert undoes it: no migration, no stored value, no chapter change. Blast radius:
local, limited to the Goals view and the goal control on the task panel, plan shelf, roadmap editor and pull request screens.Checklist
build\stop-aspire-before-pr.ps1)🤖 Generated with Claude Code