mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-28 10:11:58 +01:00
* OpenEXR/HDR export: linearize grayscale documents too Fixes #2386. The EXR/HDR branch of export_flat converted RGB images to linear sRGB but left gray ones as stored, so an sGray #808080 was written as 0.502 instead of 0.216. Gray images are now converted from their profile (sGray when untagged) to linear gray. An untagged grayscale OpenEXR opens tagged linear gray (an EXR Y channel is linear luminance), and the open policy keeps that profile without a mismatch prompt, as it already does for linear sRGB. * contributors: add itsF4LCON --------- Co-authored-by: Brandon Thomas <echelon@gmail.com>
PhotoCraft Documentation
PhotoCraft is a native image editor written in Rust. This book is the maintained entry point for installation, architecture, formats, automation, development, and security documentation.
The repository's existing docs/ directory remains authoritative for detailed design notes, parity reports, UI conventions, release procedures, and the complete control-protocol method reference. The book links to those documents instead of copying them.
Start here
- Users and evaluators: Installation
- Contributors: Building and Contributing
- Architecture work: Architecture overview
- Agents and automation clients: Automation overview
- Security-sensitive work: Security overview and Threat model
Documentation for coding agents
Coding agents should read the following in order:
AGENTS.mdfor repository rules and verification gates.README.mdfor product scope and current entry points.book/src/architecture/for crate boundaries and command flow.book/src/automation/before driving the CLI, control protocol, or MCP server.book/src/security/before changing a parser, file I/O, automation, MCP, the control server, command execution, or serialization/deserialization.
Agents must treat document bytes, paths, command parameters, and automation messages as untrusted input. A page that describes a proposed control does not mean that control is implemented.
Status language
Security pages use four labels consistently:
- Implemented: behavior confirmed in current source or tests.
- Known limitation: an exposed risk or missing control in current source.
- Proposed: a design direction that is not enforced by the current build.
- Future hardening: useful follow-up work without an accepted implementation yet.