mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-26 10:57:20 -06:00
DDS textures can now be saved, not just opened: uncompressed (BGRA, BGRX, L8, A8L8; lossless) or BC1/BC2/BC3 (DXT1/3/5) from a clean-room block encoder, with an optional box-filtered mip chain, in the legacy header. Save As and Save a Copy ask with DDS Options; scripts pass `ddsCompression`/`ddsMipmaps` (file commands, control `app.save`, RPC `doc.save`, MCP `doc_save`/`doc_export`), and the CLI takes `--dds-compression`/`--dds-mipmaps`. Targa and DDS answers travel together as `FormatChoices` through the Save As flow. Review follow-ups: - File › Save behind DDS or Targa Options records a plain Save with its answer, and replaying `file.save` applies it (#3531). - The block encoder finds the principal axis from every channel, so a channel that varies on its own can't hide the others' variation. - DDS joins the shared round-trip suite; the header is built before the output buffer is allocated. - Enter on a focused Cancel in DDS, Targa or TIFF Options cancels instead of saving.
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.