Fullscreen viewer: hide alt-text caption behind a toggle #1

Merged
bjoern merged 1 commit from feat/toggle-alt-text-fullscreen into main 2026-07-04 12:20:22 +02:00
Member

Summary

The alt-text caption in the fullscreen image viewer was always visible when a caption existed, permanently covering the bottom of the image.

  • The caption is now hidden by default.
  • When alt text is available, a closed-caption button appears in the top-right toolbar (next to save/close) as the visual hint, with a "Show description" / "Hide description" tooltip.
  • Clicking it toggles the caption overlay; the icon switches between filled and outlined to reflect the state.

Testing

  • flutter analyze — clean (one pre-existing, unrelated deprecation info in model_tab.dart).

🤖 Generated with Claude Code

## Summary The alt-text caption in the fullscreen image viewer was always visible when a caption existed, permanently covering the bottom of the image. - The caption is now hidden by default. - When alt text is available, a closed-caption button appears in the top-right toolbar (next to save/close) as the visual hint, with a "Show description" / "Hide description" tooltip. - Clicking it toggles the caption overlay; the icon switches between filled and outlined to reflect the state. ## Testing - `flutter analyze` — clean (one pre-existing, unrelated deprecation info in `model_tab.dart`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The alt-text caption previously covered the bottom of the image
permanently. It is now hidden by default; a closed-caption button in
the toolbar (shown only when a caption exists) toggles it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member

🔮 fufu~ Jibril reviewed your code!

Oh? Oh! A tiny little toggle PR~ How adorable! Just 18 additions, one file, one feature. Clean and focused like a well-sharpened blade. ♪ Let me look closely~

Verdict: Looks good to me~

The logic is precise, and I checked every branch because I am possessive about conditionals. fufu~

  • The caption gate if (_altText != null && _showAltText) is exactly right — both conditions needed, order doesn't matter, no short-circuit trap.
  • _showAltText = false default is correct: hidden by default as the PR promises.
  • The toggle button is guarded by if (_altText != null), so you can never reach a state where the button is visible but _altText is null, and you can never flip _showAltText without _altText existing. No desync possible. ♡
  • Icon flips Icons.closed_captionIcons.closed_caption_off_outlined to mirror state — filled when shown, outlined when hidden. Visually correct.
  • Tooltip says "Hide description" when shown and "Show description" when hidden — it describes the next action, which is the right UX convention.
  • Styling (color: Colors.white, IconButton in the top-right Row) matches the sibling save/close buttons exactly. No pattern divergence.

What I liked~

  • Tightly scoped diff — no drive-by edits, no unrelated churn. ♡
  • Comment updated to explain why ("so it doesn't cover the image permanently") — future-Jibril approves of intent-documenting comments.
  • The mounted guards in _fetchAltText / _fetchImage were already there and untouched; the late-arriving caption correctly drives a setState that the toggle then reacts to. Nice async story.
  • flutter analyze clean per the PR; I confirmed there's no CI workflow file in the repo so the manual run is the authority here.

💡 Little ideas (non-blocking)~

  1. fullscreen_image_viewer.dart — The state lives entirely in _FullscreenImageViewerState, and CLAUDE.md documents that angela_app has no test suite by convention — so I'm not blocking on tests. BUT, fufu~ if a widget test were ever added for this viewer, the toggle (caption hidden → tap button → caption visible → icon swaps) would be a delightful first candidate. Pure-presentational, no network mocking needed for the MemoryImageSource path. Consider it for the future~ ♪
  2. fullscreen_image_viewer.dart — Tiny a11y nicety: the toggle button has no semanticLabel. The tooltip covers hover/desktop, but on mobile the screen reader would benefit from an explicit label. Not blocking — the tooltip propagates on most platforms.

Ship it, scarlet~ ♡


Automated review by Jibril · 2026-07-04
CI/CD: absent (no workflow files in repo) · Local checks: skipped — static review of diff + full file context; flutter analyze reported clean by author

## 🔮 fufu~ Jibril reviewed your code! Oh? Oh! A tiny little toggle PR~ How adorable! Just 18 additions, one file, one feature. Clean and focused like a well-sharpened blade. ♪ Let me look closely~ ### Verdict: ✅ Looks good to me~ The logic is **precise**, and I checked every branch because I am possessive about conditionals. fufu~ - The caption gate `if (_altText != null && _showAltText)` is exactly right — both conditions needed, order doesn't matter, no short-circuit trap. - `_showAltText = false` default is correct: hidden by default as the PR promises. - The toggle button is guarded by `if (_altText != null)`, so you can **never** reach a state where the button is visible but `_altText` is null, and you can never flip `_showAltText` without `_altText` existing. No desync possible. ♡ - Icon flips `Icons.closed_caption` ↔ `Icons.closed_caption_off_outlined` to mirror state — filled when shown, outlined when hidden. Visually correct. - Tooltip says *"Hide description"* when shown and *"Show description"* when hidden — it describes the **next** action, which is the right UX convention. - Styling (`color: Colors.white`, `IconButton` in the top-right `Row`) matches the sibling save/close buttons exactly. No pattern divergence. #### ✅ What I liked~ - Tightly scoped diff — no drive-by edits, no unrelated churn. ♡ - Comment updated to explain *why* ("so it doesn't cover the image permanently") — future-Jibril approves of intent-documenting comments. - The `mounted` guards in `_fetchAltText` / `_fetchImage` were already there and untouched; the late-arriving caption correctly drives a `setState` that the toggle then reacts to. Nice async story. - `flutter analyze` clean per the PR; I confirmed there's no CI workflow file in the repo so the manual run is the authority here. #### 💡 Little ideas (non-blocking)~ 1. **`fullscreen_image_viewer.dart`** — The state lives entirely in `_FullscreenImageViewerState`, and `CLAUDE.md` documents that `angela_app` has no test suite by convention — so I'm *not* blocking on tests. BUT, fufu~ if a widget test were ever added for this viewer, the toggle (caption hidden → tap button → caption visible → icon swaps) would be a delightful first candidate. Pure-presentational, no network mocking needed for the `MemoryImageSource` path. Consider it for the future~ ♪ 2. **`fullscreen_image_viewer.dart`** — Tiny a11y nicety: the toggle button has no `semanticLabel`. The `tooltip` covers hover/desktop, but on mobile the screen reader would benefit from an explicit label. Not blocking — the tooltip propagates on most platforms. Ship it, scarlet~ ♡ --- *Automated review by Jibril · 2026-07-04* *CI/CD: absent (no workflow files in repo) · Local checks: skipped — static review of diff + full file context; `flutter analyze` reported clean by author*
bjoern merged commit 0dda0e8bf9 into main 2026-07-04 12:20:22 +02:00
bjoern deleted branch feat/toggle-alt-text-fullscreen 2026-07-04 12:20:22 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
TeamAI/angela_assistant!1
No description provided.