Capture two things future sessions need to know up front: (1) the
activity is locked to portrait and the camera image stays in the
device frame on purpose — eight releases of orientation-tracking
attempts (v1.1.6 → v1.1.13) all got reverted, and per-orientation
correctness now lives in the EXIF tag rather than the GL pipeline; (2)
the Pixel 6 emulator's default virtual scene is too symmetric to
verify rotation visually, `emu rotate` decrements rather than
increments, and there is a startup window where camera bitmaps look
black.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Introduce AGENTS.md with dcat workflow, .gitattributes merge driver for
dcat JSONL files, and .dogcats/ config + empty issue store. Update
CLAUDE.md to point agents at AGENTS.md and avoid the TodoWrite tool, and
ignore local-only dcat files (config.local.toml, .issues.lock).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Accompanist Permissions (0.36.0) is deprecated and experimental. Migrate
to the stable ActivityResultContracts.RequestPermission /
RequestMultiplePermissions APIs already available via activity-compose.
Adds explicit state tracking with a cameraResultReceived flag to
correctly distinguish "never asked" from "permanently denied" — an
improvement over the previous Accompanist-based detection.
Bump version to 1.1.2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Users can now opt out of embedding GPS coordinates in photos.
The toggle is persisted via SharedPreferences and defaults to enabled.
When disabled, effectiveLocation returns null so no EXIF GPS tags are written.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Documents the app's purpose, architecture, rendering pipeline,
build instructions, and key design decisions (bitmap lifecycle,
thread safety, error handling) established during the recent audit.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>