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 Issue Link
Files count
0
Patches count
1