Type a command or app name…
Pinned
My open ticketsTallybench
Hue
Saturation
mira@peenholt.dev
Find a wallpaper…
Tiles   3
Molten pour in a foundry, photo by Bence Szemerey on Pexels
Dark crushed-stone texture, photo by Nikita Belokhonov on Pexels
Camera prototype · HaftUI
+
Portrait by Jake Nackos on Unsplash

Sketch me a photo capture screen in HaftUI 6

On it — here is the first pass at the view:

use HaftUI
use HaftMedia
deck ShellView: Pane {
@Kept private var lens = LensModel()
var body: some Pane {
ZDeck {
LensPreview(lens: lens)
.fillsBezel()
VDeck {
Gap()
Tap(action: lens.capture) {
Glyph(named: "shutter.ring.solid")
.stretchable()
.box(width: 64, height: 64)
.inset()
}
Portrait by Korede Adenola on Pexels right, so is it worth moving to the new…
Yes — moving to the newer
Ask Bloomhaft AI anything…

Forgewright On Tap

One shortcut, any question, any app. Blocked on a regex? Want a subject line rewritten? Just ask.

Type a command or app name…
Type a command or app name…
Pinned
My open ticketsTallybench

Kept In Step

Your commands, keys and themes follow every machine you sign in to — desk, laptop, spare.

Find a wallpaper…
Tiles   3
Molten pour in a foundry, photo by Bence Szemerey on Pexels
Dark crushed-stone texture, photo by Nikita Belokhonov on Pexels

Themes, Icons, Grids

Start from a ready-made skin, or build one from scratch and publish it for everyone else to fork.