dtourolleandClaude Opus 5 e7130ff891 Give the library header somewhere to put six buttons
A tablet in portrait is 1920 physical pixels at density 400 — 768 logical,
which is below the 820 breakpoint, so the library was already taking the
compact layout. The compact header simply was not compact: one flat
HorizontalLayout holding a menu button, a title, three status readouts and
six buttons.

Slint's HorizontalLayout has no wrap and no overflow. Given less width than
its children want it shrinks each to its minimum and lets the rest run past
the edge, so "Change library" arrived as "Change li…", the readouts elided to
nothing useful, and the row overflowed anyway.

The six actions move into a `HeaderActions` component drawn in one of two
places: inline in the header when expanded, and in a disclosure row under it
behind a "More" button when compact. One component rather than two copies,
because the alternative is six buttons with their visibility rules and
callbacks written twice, and the copy that rots is the one behind a
disclosure nobody opens while testing.

The row closes itself when the window widens, so rotating to landscape does
not leave a stray toolbar behind. "More" is a word rather than an ellipsis
glyph: "⋯" sitting in a header of elided labels reads as one more truncation,
which is the failure this change exists to remove.

`LibraryGrid` takes `expanded` to decide, from the window width rather than
the device (FR-UI-1) — so a narrow desktop window gets the same treatment.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 23:04:06 +02:00
2026-08-12 22:16:15 +02:00
2026-08-16 22:26:37 +02:00
2026-08-16 22:26:37 +02:00
2026-08-16 22:26:37 +02:00

DarkRoom

A cross-platform, non-destructive RAW photo editor for Linux and Android.

Status: early. v0.1 is a remote library viewer — see docs/milestone-v0.1.md.

Documentation

Document Contents
requirements.md What the software must do — 122 numbered requirements
architecture.md How it is built — crates, GPU pipeline, data model, sync
milestone-v0.1.md The first buildable milestone

Building

Desktop:

cargo run -p darkroom-desktop

Android (containerised toolchain, see docker/android):

./docker/android/build.sh cargo ndk -t arm64-v8a build --release

Current state

Working: workspace, GPU context and compute pass, adaptive Slint shell, Android cross-compilation of the core crates.

Not yet working: the zero-copy display path. The build currently uploads frames through the CPU, which is exactly what ARCH §6.1 forbids — measured at 96% of frame time at 4K. Replacing it is spike S1, the project's highest priority.

cargo run -p dr-gpu --example bench --features readback

reproduces that measurement.

Licence

GPL-3.0-or-later.

S
Description
No description provided
Readme GPL-3.0
1 GiB
2026-10-07 11:27:59 +00:00
Languages
Rust 86.1%
Slint 10.3%
Python 1.1%
Shell 1%
WGSL 0.9%
Other 0.6%