Audit finding from #300 (commit 679f9fe)
Severity: medium
Category: bug
File: crates/web/src/app.rs:382
Obvious fix: no
Description
When constructing IndexableMessage in app.rs the indexer hard-codes letter_id: None, has_image: false, has_file: false. The search executor's has:image / has:file / in:#letter operators therefore never match anything, despite being part of the public SearchScope / parser API and surfaced in spec text.
Impact / Threat
User-facing — documented search operators silently return zero results; users assume their files / images aren't searchable.
Suggested fix
Derive has_image / has_file from m.attachments (or whatever DisplayMessage exposes) and plumb the letter id from the active letter context.
Verify
rg "letter_id: None,|has_image: false,|has_file: false," crates/web/src/app.rs
Audit finding from #300 (commit 679f9fe)
Severity: medium
Category: bug
File: crates/web/src/app.rs:382
Obvious fix: no
Description
When constructing
IndexableMessagein app.rs the indexer hard-codesletter_id: None,has_image: false,has_file: false. The search executor'shas:image/has:file/in:#letteroperators therefore never match anything, despite being part of the publicSearchScope/ parser API and surfaced in spec text.Impact / Threat
User-facing — documented search operators silently return zero results; users assume their files / images aren't searchable.
Suggested fix
Derive
has_image/has_filefromm.attachments(or whatever DisplayMessage exposes) and plumb the letter id from the active letter context.Verify
rg "letter_id: None,|has_image: false,|has_file: false," crates/web/src/app.rs