• Mahmoud Aglan's avatar
    feat: download, zip/unzip, PDF export, and ten quality-of-life fixes · 90a71482
    Mahmoud Aglan authored
    Files
    - Download to the phone (Android's save dialog) or Share — a file, a folder
      as .zip, or a multi-selection. Streamed to disk with progress and Cancel.
    - Long-press selects; a selection zips, downloads, shares or deletes. A ⋮
      on every row carries the per-file actions.
    - Compress to .zip and Extract, always into a new folder (the server never
      overwrites). Tapping a .zip lists its contents first.
    - Export as PDF, made on the phone: markdown (tables, Arabic RTL, repo
      images inlined, mermaid rendered to SVG in a headless WebView because the
      print WebView runs without JavaScript), code as a numbered highlighted
      listing, images, a folder's markdown as one document with contents, and a
      whole chat. Saved to the phone, shared, or put into the repo beside the
      source under a name that never overwrites.
    
    Quality of life
     1. Retry / Edit & resend under a failed run.
     2. Per-chat drafts that survive leaving the chat.
     3. Quick-prompt chips; save your own, long-press to remove.
     4. Screen stays on while a watched run is live (toggle in Settings).
     5. Image preview with pinch and double-tap zoom.
     6. Copy path, and "Ask Claude about this": a new chat, path pre-typed.
     7. Files reopens the folder last used in each project.
     8. Sort by name, date or size; size and age on every row.
     9. Git lists changed files per repo; each opens its own diff with a +/−
        count and Discard for unstaged changes; untracked files show as new.
    10. Text size in Settings, app-wide and in the code editor (re_editor
        ignores the app text scale, so it is applied there explicitly).
    
    Fixes
    - File and Git actions never read the server's answer. A 200 carrying
      ok:false — a rejected push, a pull that cannot fast-forward — showed
      "Pushed"/"Pulled", and a refused delete said nothing.
    - Uploads over 48 MB are refused before sending, with the reason.
    - R8 keep rules for printing's android.print bridge; verified in the
      release mapping that PdfConvert and its callbacks keep their names.
    - Version 1.4.0+14; Settings no longer claims 1.0.0.
    
    Tests: test/pdf_export_test.dart (8) — span-balanced listing rows, escaping,
    language detection, download names, and markdown image paths that cannot
    climb out of the project.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    90a71482
Name
Last commit
Last update
..
api Loading commit data...
lock.dart Loading commit data...
notifications.dart Loading commit data...
prefs.dart Loading commit data...
providers.dart Loading commit data...
theme.dart Loading commit data...
watcher.dart Loading commit data...