Every background job reported into a window property of its own — library-thumbs-done, library-pin-total, library-syncing — which only the grid ever read. A pin download that outlived the view it was started from drew nothing at all once the user opened an image, and there was no answer anywhere to "what is this busy with", because the answer was spread across eight properties nothing collected. They report to one register now (ui/dr-ui/src/activity.rs). It publishes an aggregate, which draws a three-pixel bar across the top of the shell in every view, and a row per job, which the settings page lists: scans, thumbnail batches, pin and open downloads, sidecar uploads, the sync and the trash. Failures stay on the list until they are cleared; routine successes do not, or a scroll would bury them. The handle removes a still-running job when it drops, so a worker that dies mid-transfer takes its row with it rather than leaving the bar sweeping for the rest of the session. Also carries in-flight work from a parallel session — the drawn icon set and the dr-pipeline ops split. dr-pipeline's build script does not compile at this commit; ui/dr-ui does, with clippy clean and its tests passing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
24 lines
1.0 KiB
YAML
24 lines
1.0 KiB
YAML
# A hand-written node. `rust:` names the type in `crate::ops` that implements
|
|
# `Operation`; everything else about it — its descriptor, its parameters, its
|
|
# WGSL — comes from that type rather than from this file.
|
|
#
|
|
# It appears here anyway so that `ops/` lists the whole pipeline in order.
|
|
# A chain half-declared here and half-ordered in Rust would be worse than
|
|
# either alone: the order is the one thing a reader comes to this directory
|
|
# to learn.
|
|
id: tone_curve
|
|
order: 60
|
|
rust: ToneCurve
|
|
|
|
why_rust: |
|
|
Five control points presented as one curve widget, with an interpolator and
|
|
a monotonicity guarantee behind it. Its neutral is a *relationship* between
|
|
parameters rather than a set of values — the identity diagonal — which is
|
|
not something the declarative `active:` rule can express, and its
|
|
`presentation()` spans parameters rather than describing one.
|
|
|
|
placement: |
|
|
After the fixed-weight region controls, so the curve is the final word on
|
|
tone: a photographer reaches for it to fix what those controls could not
|
|
place exactly.
|