Skip to content

feat: add files, photos, and camera attachments to conversations - #26

Merged
sugarforever merged 2 commits into
mainfrom
codex/chat-attachments
Oct 23, 2026
Merged

sugarforever merged 2 commits into
mainfrom
codex/chat-attachments

Conversation

@sugarforever

@sugarforever sugarforever commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Conversations now accept files, selected photos, or a new camera photo through the composer's + menu. Users can preview or remove attachments and send without text. Each message supports up to four attachments, with an 8 MiB limit per original/converted file; images are normalized to JPEG with a maximum edge of 2048 pixels.

Attachment bytes persist with the existing request ID/outbox and Pi transcript. Images use visual input; other files enter the conversation workspace for the read tool. Retry, explicit resend, reopened history, and checkpoint branches retain attachments. Retry does not overwrite files edited after the original submission. Picker cache copies are cleaned on capture or rejection, and late picker results cannot cross conversations.

This branch is based on current main and preserves its background execution leases, cancellation, activity display, and message menus. It includes only the attachment feature; unrelated changes in the original working checkout are excluded.

Version metadata in the app, npm manifests, lockfile, and README is aligned to 0.8.0 for the minor release. The release/update regression suite passed all 24 tests.

Validation

  • npm run verify: passed — 262 tests passed, 37 optional native tests skipped; all 3 installer-script tests passed; strict types, portable smoke checks, and iOS/Android Hermes exports passed.
  • npx expo-doctor: 20/20; Prettier and diff checks passed.
  • Controlled OpenAI, Anthropic, and Codex requests verify image payloads and credential isolation. Real Harness/SQLite tests cover persistence, retries, file import, branches, and cancellation before import.
  • iOS photo selection, conversion, previews/removal, document-picker cancellation, and cache cleanup were exercised on the original implementation build. The migrated PR build has not been rebuilt natively. Android native attachment use, physical-device capture, software-keyboard layout, and real model requests remain unverified.

Native dependencies require rebuilding the development client. Existing npm audit output contains 15 high-severity toolchain/transitive findings; no forced downgrade was applied. See attachment design and validation.

@sugarforever
sugarforever merged commit a48d170 into main Oct 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant