Undo a link you just made; signpost manage mode#3565
Conversation
Picking a candidate in the link or blocker picker commits on that single tap.
That speed is the point of the flow, so this does not add a confirm step — it
adds recovery. On success the commit is now followed by a message naming what
was written ("Blocks: <title>") with an Undo that removes exactly the
(fromId, toId, type) triple just created, so it can only ever take back the
edge the message is about and never another relationship the same pair holds.
Two experts and two personas raised this across design-review rounds 3-6, and
the low-vision and novice personas both scored it an outright blocker — the
largest single contributor to the gap between the panel's 7.17/7.0 and its
8/10 bar.
Manage mode now says it is on: the header swaps its link action for an inline
Done, and the overflow offers "Manage links…" only as a way in. Previously the
mode was visible only as two icons appearing per row, and the way out was the
same unlabelled menu it was entered from — so the menu item also stops being
two controls for one state.
Also: the picker search field autofocuses on desktop-width windows only (on a
phone it would raise the keyboard over the results it filters), and the
linked-tasks overflow menu uses the app's own surface and radius instead of
Material defaults and a raw radius, so it stops being a themed island inside
the card it opens from.
entryLinkTypeDbName maps a bare EntryLinkType to its linked_entries.type
value, which undo needs since it knows the type but has no EntryLink instance.
A test pins it against every variant, since a mismatch would silently fail to
match the row it just wrote.
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Warning Review limit reached
Next review available in: 15 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (32)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3565 +/- ##
=======================================
Coverage 99.22% 99.22%
=======================================
Files 1774 1775 +1
Lines 130106 130139 +33
=======================================
+ Hits 129093 129126 +33
Misses 1013 1013
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Follow-up to #3563, closing out the design-review backlog that PR deliberately
deferred. Tracked as
lotti3-t4m.8.Undo a link you just made
The highest-value item left over. Picking a candidate row commits on that
single tap — deliberately, since the speed is the point of the flow — but there
was no recovery: a mis-tap, or the right task under the wrong relationship,
silently persisted a real edge whose only removal path was the card's manage
mode.
This does not add a confirm step. It adds an undo:
Blocks: Draft crew rotation schedule— rather than a generic "linked".(fromId, toId, type)triple just created, so itcan only take back the edge the message is about, never another relationship
the same pair also holds (which Redesign task relationship links: one directed choice, editable in place #3563 made possible).
Two experts and two personas raised this across review rounds 3-6; the
low-vision and novice personas both scored it an outright blocker, and it was
the largest single contributor to the gap between the panel's 7.17/7.0 and its
8/10 bar.
Manage mode says it is on
Manage mode was visible only as two icons appearing per row, and the way out
was the same unlabelled overflow menu it was entered from. The header now
swaps its link action for an inline Done while the mode is active, and the
overflow offers "Manage links…" only as a way in — so the menu item stops
being a second control for the same state.
Smaller items from the same backlog
phone it would raise the keyboard over the very results it filters.
tokens instead of Material scheme defaults,
elevation: 8and a rawcircular(12)— it was a themed island inside the card it opens from.Verified, not assumed
One backlog item turned out to be based on a wrong premise and is not
"fixed" here: completed tasks are not offered as link candidates. The query
already passes
openTaskStatuses, which excludesDONEandREJECTED. Thefinding came from tests that stub
getTasksto return done/rejected tasksregardless of the filter argument, which made it look reachable in the UI.
Still deferred, with reasons
prefetch, so a match outside that window is invisible. Fixing it properly
means querying by match rather than filtering a page, which is a data-layer
change, not UI.
EntityPickerSheetalready supportscreateFromQuery; wiring it would let the overflow's "Create new linkedtask…" and the last un-migrated
AlertDialogcollapse into one flow. That isa flow redesign worth its own review, not a rider here.
DesignSystemDropdown's field surface withDesignSystemSearch's. Genuine inconsistency, but a design-system-leveldecision affecting every caller of both.
Testing
repository call, not just the SnackBar); a rejected link offers no undo;
manage mode's inline exit returns to browse mode;
entryLinkTypeDbNamepinned against every
EntryLinkTypevariant.flutter analyzeclean project-wide.Version bumped to 0.9.1064+4244 with its own CHANGELOG and flatpak entries.