Read what would move before it moves, and a page that says which pin

Contribution Date
Contribution Project
Contribution Details
Read what would move before it moves, and a page that says which pin The screens. Two audiences: somebody who wants an archived asset back, and an administrator deciding what goes cold in the first place. ## The detail panel Quotes all three tiers with their ETAs before offering the button, because §6.5's whole argument is that Expedited against Bulk is 10× on price and 100× on latency and nobody should pick between them blind. A tier the class cannot offer stays on screen, greyed, with its reason — hiding it gives one asset two choices and another three, which invites a question the response already answers. Once a restore is running the form becomes a status. Offering the buttons again would offer a second retrieval; the server coalesces so pressing them is harmless, but a button that does nothing is worse than no button. A caller who joined somebody else's request is told so, rather than watching a spinner they think is theirs. That closes F.11b·2b, the one open item in the frontend track since M3. ## `/storage` Every rule leads with a Plan button and the sweep is the smaller control at the top, because the affordance that matters is reading what *would* happen: these rules move originals into classes that take up to 48 hours to read back and bill a 30-to-180-day minimum for the privilege. `dam_store::lifecycle` put it best — a plan can be read, diffed and approved before terabytes of a customer's masters go somewhere they cannot be read back from for two days. Dry run is stated on the row rather than hidden behind an edit form, because a rule nobody has taken off dry run has never moved anything and that is the most important fact about it. Skips are grouped by reason, since a plan over a real library is thousands of lines and almost all of them are skips — but the pins are spelled out individually, because a pin is the one kind of skip somebody may want to go and undo. Driven against the real library: 134 objects would move, 172 MiB, two left alone — one a member of the pinned collection 'Live campaign' and one under legal hold, each naming itself. ## Archive and Restore in the bulk bar Beside Unpublish rather than beside Delete, because that is the company archiving keeps: a reversible decision about visibility, not about existence. Restore is named Restore rather than Unarchive precisely so the two do not read as a pair — one changes a status, the other asks a provider for temporary copies and is charged per gigabyte. ## Ten e2e cases, two of them axe The properties that only exist in a browser: the price on screen before the button, a refused tier visible and explained, the running state replacing the form rather than sitting beside it, a plan readable at library scale, and an empty rule list explaining the consequence — nothing is moving, so everything stays where it was put — rather than only saying "none". Also corrected: the `Map` and `Set` in the plan grouping became a plain object and array. The lint rule asking for `SvelteMap` is right about reactive state and these are neither — computed in a function, read once, discarded — so the fix is to stop reaching for collections that carry reactive machinery rather than to silence the rule.
Contribution Author
Bassam Ismail
Files count
0
Patches count
1