oficina / memoria Public

Clone
git clone https://amadan.net/oficina/memoria

Plain git — no account needed to clone.

Download

Download this file

Memoria UX review · 12 September 2026

MemoriaWorkspace.swift

  1. Medium: give desktop results enough reading width. The original narrow sidebar wrapped snippets excessively. Split-view width hints alone were ignored in the actual Mac render; a Mac-only minimum frame now enforces 280 points, with a 340-point ideal. The compact Answer action fits clearly.

Before: column min 220 / ideal 260. After: column min 280 / ideal 340, plus .frame(minWidth: 280, idealWidth: 340) on Mac. iPhone keeps the native compact navigation layout.

  1. Medium: remove internal indexing details. Passage 0 and similar ordinals offered no useful navigation. Results now show a named source type, readable snippet and source number. An explicit results section separates matches from the Answer action. Result accessibility combines the row's description.

Before: Source [1] · Passage 0 After: Source 1, with source type and snippet above.

  1. Medium: anchor answers to the current search. The generic slogan is replaced by the query and a clear answer purpose. Before searching, a native ContentUnavailableView explains how to start. A stable thinking indicator stays visible while permission rechecks temporarily clear results. Sources have a divider, document labels and 44-point minimum tap areas.
  1. Medium: prove source navigation in compact and split layouts. The selected passage text has a detail-only sourcePassage identifier. Tests assert its existence and exact body rather than matching the sidebar snippet. Only compact navigation expects a Source navigation bar. The final test scopes its tap to the sidebar result cell: on iPad the same title also appears as the search-query heading, so a global text selector was ambiguous.

AddNoteView.swift

Medium: label the editable note body for assistive technology.

Before: TextEditor(text: $bodyText) After: TextEditor(text: $bodyText).accessibilityLabel("Note")

Priority addressed: result readability and navigation, then contextual answers, progress feedback and editor accessibility.

Method and validation

Applied swiftui-pro design, accessibility and navigation references, plus swiftui-native-component-design semantics/control/accessibility guidance. Reviewed actual SwiftUI renders on Mac, iPhone and iPad; checked light mode and accessibility-large Dynamic Type in dark mode on iPhone. Real forms/navigation are exercised through the isolated authenticated Go fixture and XCTest. No backend, auth, model retrieval or permission behavior changed.

Independent reviewer: /root/canary_release_review, dispatched as gpt-6-astra with high reasoning; runtime identity not independently verified. Screenshots and source corrections were reviewed independently. Full VoiceOver walkthrough, localization and every accessibility size remain hands-on acceptance work.

Final independent review approved. The scoped iPad test passed (15.496 seconds XCTest; 38.230 seconds complete fixture). The reviewer removed only the result cell tap: detail-only sourcePassage assertions failed as intended. The test was restored byte-for-byte to the passing version, then this mutation comment was added. The mutation's XCTest suite finished with the intended failures, but its xcodebuild watcher hung during teardown and was terminated; that watcher is not claimed as a completed normal test run. Evidence: /tmp/memoria-ux-scoped-clean.log and /tmp/memoria-ux-scoped-mutation.log.