app-implement-feature
Implement a feature in baguette
baguette is a CLI + WebSocket server, not a SwiftUI app. There is no
ViewModel layer, no async actors in the input path — gestures are
synchronous Bool-returning calls into the @Mockable Input
abstraction whose only concrete adapter is IndigoHIDInput. The frontend
is hand-written vanilla JS IIFEs (no bundler) that talk to the server
via one WebSocket per stream.
Naming abstractions: every @Mockable protocol in this codebase is
a domain noun for the role it plays — Input, Screen,
Accessibility, LogStream, DeviceHost, Subprocess, Chromes,
Simulators. The pattern-label suffixes "Port" / "Service" /
"Manager" never appear. If you reach for XxxPort, the abstraction
isn't named yet — keep going until the noun describes what the thing
is in the domain.