Files
photocraft/scorecard/bugs.toml
T

231 lines
6.9 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Scorecard checklist: open bugs (#203–#208).
# Each item: id, short target, status (done | partial | missing), issue, note (evidence).
# Statuses must be true on main. Verified against 4b53f62 on 2026-10-05.
area = "bugs"
title = "Open bugs"
order = 9
[[item]]
id = "BUG-203-1"
target = "Every document write goes through one atomic_write (temp, fsync, rename)"
status = "missing"
issue = 203
note = "services.rs:125 std::fs::write; file_cmds.rs:91 fs::write; automation/files.rs:67 in place"
[[item]]
id = "BUG-203-2"
target = "Temp file in the same dir, sync_all, rename over target, fsync dir on Unix"
status = "missing"
issue = 203
note = "No sync_all anywhere; services.rs:71 write_atomic (prefs only) does tmp + rename, no fsync"
[[item]]
id = "BUG-203-3"
target = "Windows: retry the rename with backoff on PermissionDenied"
status = "missing"
issue = 203
note = "No retry around fs::rename (services.rs:77, preset_store.rs:189, format/store.rs:457)"
[[item]]
id = "BUG-203-4"
target = "Unwritable directory errors clearly, never falls back to writing in place"
status = "missing"
issue = 203
note = "No atomic path exists for documents; all document writes are in place"
[[item]]
id = "BUG-203-5"
target = "On any failure the original file is untouched and the temp file removed"
status = "missing"
issue = 203
note = "services.rs:76 write_atomic leaves .tmp behind if rename fails; documents write in place"
[[item]]
id = "BUG-203-6"
target = "Failure-injection tests: mid-write, rename and read-only dir errors keep original bytes"
status = "missing"
issue = 203
note = "No such tests under crates/ or apps/"
[[item]]
id = "BUG-204-1"
target = "Interface prefs (UI scale, font size, channels in colour, sliders, tooltips) wired or hidden"
status = "missing"
issue = 204
note = "prefs.rs:196-202; no reader outside prefs.rs (see the prefs audit)"
[[item]]
id = "BUG-204-2"
target = "workspace.large_tabs, animated_zoom, auto_show_home_screen wired or hidden"
status = "missing"
issue = 204
note = "prefs.rs:163,166,229; no reader outside prefs.rs"
[[item]]
id = "BUG-204-3"
target = "RAW prefs and ask_before_saving_layered_tiff read, or hidden"
status = "missing"
issue = 204
note = "raw_defaults (prefs.rs:712), ask_before_saving_layered_tiff (prefs.rs:312) have no readers"
[[item]]
id = "BUG-204-4"
target = "Recent files persisted through prefs across restarts"
status = "missing"
issue = 204
note = "ui-egui lib.rs:461 push_recent only touches app.ui.recent_files"
[[item]]
id = "BUG-204-5"
target = "Recent-files list honours recent_file_count (default 20)"
status = "missing"
issue = 204
note = "lib.rs:465 truncate(10) hard-coded; menus.rs:1065 test asserts 'capped at 10'"
[[item]]
id = "BUG-204-6"
target = "Test: every Prefs field is read somewhere or on a hidden allowlist"
status = "partial"
issue = 204
note = "The scorecard's prefs audit counts unread fields; no engine test or allowlist yet"
[[item]]
id = "BUG-205-1"
target = "Free Transform with a selection moves only the selected part of a linked mask"
status = "missing"
issue = 205
note = "transform_cmds.rs:127-130 warps the whole linked mask even when the selection split pixels"
[[item]]
id = "BUG-205-2"
target = "Live transform preview draws the layer with its mask applied"
status = "missing"
issue = 205
note = "transform_tool.rs:173 preview_image uses the raw surface"
[[item]]
id = "BUG-205-3"
target = "edit.transform honours target mask: transforms only a targeted, unlinked mask"
status = "missing"
issue = 205
note = "transform_cmds.rs:214-270 never reads a target param"
[[item]]
id = "BUG-205-4"
target = "Test: a linked raster mask with no selection moves with the pixels"
status = "partial"
issue = 205
note = "Implemented at transform_cmds.rs:127; no raster-mask test"
[[item]]
id = "BUG-205-5"
target = "Tests: linked mask + selection stays aligned; unlinked stays; targeted mask only"
status = "missing"
issue = 205
note = "Unlinked case honoured (m.linked check, l.128) but untested; the other two not implemented"
[[item]]
id = "BUG-206-1"
target = "CharStyle models per-character manual kerning separately from the auto-kern mode"
status = "missing"
issue = 206
note = "doc/text.rs:76 only `kerning: Kerning` enum (Metrics/Optical/Off)"
[[item]]
id = "BUG-206-2"
target = "PSD import keeps Optical and manual Kerning values"
status = "missing"
issue = 206
note = "text/psd.rs:264 maps anything not Off to Metrics; Kerning value ignored"
[[item]]
id = "BUG-206-3"
target = "PSD export writes the real AutoKerning mode and Kerning values"
status = "missing"
issue = 206
note = "text/psd.rs:380-381 AutoKerning bool only; Kerning hard-coded 0"
[[item]]
id = "BUG-206-4"
target = "Alt+Left/Right at a collapsed caret adjusts pair kerning; Character panel field"
status = "missing"
issue = 206
note = "type_tool.rs:896-912 only a mode combo"
[[item]]
id = "BUG-206-5"
target = "Tests: PSD round trip of manual and Optical kerning, a real file in the oracle corpus"
status = "missing"
issue = 206
note = "No kerning round-trip test"
[[item]]
id = "BUG-207-1"
target = "Retouch tools respect the paint target (mask, alpha channel, Quick Mask)"
status = "missing"
issue = 207
note = "retouch_cmds.rs:83 run_stroke always uses l.surface_mut(); no paint_target() call"
[[item]]
id = "BUG-207-2"
target = "Sample All Layers applies to Blur, Sharpen and Smudge"
status = "missing"
issue = 207
note = "Checkbox at retouch_ui.rs:171-190 is not passed to the stroke commands"
[[item]]
id = "BUG-207-3"
target = "Smudge mixes premultiplied RGBA (no dark fringe at transparent edges)"
status = "missing"
issue = 207
note = "No premultiply in paint/src/retouch.rs"
[[item]]
id = "BUG-207-4"
target = "edit.transform transforms a targeted alpha channel"
status = "missing"
issue = 207
note = "transform_cmds.rs transform() has no target handling"
[[item]]
id = "BUG-207-5"
target = "Tests: per-tool mask/channel targeting, Sample All Layers, no smudge fringe"
status = "missing"
issue = 207
note = "Only smudge_drags_colour_along_the_stroke (retouch.rs:407)"
[[item]]
id = "BUG-208-1"
target = "Shift while dragging a Rect/Elliptical Marquee constrains to a square/circle"
status = "missing"
issue = 208
note = "canvas.rs:1498 and :1769 pass shift=false to marquee_end"
[[item]]
id = "BUG-208-2"
target = "Alt while dragging a marquee draws from the centre"
status = "missing"
issue = 208
note = "marquee_end (chrome_ui.rs:157) has no centre mode"
[[item]]
id = "BUG-208-3"
target = "W x H px readout beside the cursor while dragging a marquee"
status = "missing"
issue = 208
note = "No size readout in canvas.rs or tool_feedback.rs"
[[item]]
id = "BUG-208-4"
target = "Add/subtract/intersect from modifiers pressed before the drag, kept by a test"
status = "partial"
issue = 208
note = "Mods captured at press (canvas.rs:1679, used :1779); only a badge test (tool_feedback.rs:195)"
[[item]]
id = "BUG-208-5"
target = "Kittest: Shift drag gives a square, Alt drag is centred, readout matches the size"
status = "missing"
issue = 208
note = "No marquee drag tests"