- SharesController's fetchShares() built NextcloudShare objects through
its own thin inline parser instead of _shareFromJson, so url/token/
permissions/expireDate were always null - a public link share could
never show "Copy link" in the Shares tab. Reuses _shareFromJson.
- Upload/Move/Copy's destination picker hid External storage in its
filter sheet (showStorageScope: false) unlike Files' own controls
row, despite the design doc already calling for full parity.
- Files' and Photos' type filter (All/Files/Folders, All/Photos/Videos)
now render as one consistent style in both filter sheets: every icon
always shown, label only on the selected segment
(NooSegmentedControl's new labelOnlySelected), replacing Files' old
checkmark list and Photos' own always-labelled track.
- Fixes Photos' type filter only visually updating after closing and
reopening the filter sheet - it lived on PhotosView's own State, so
Listenable.merge([photos, files]) never rebuilt the sheet when it
changed; a StatefulBuilder now gives it that trigger.
- Replaces Settings' trailing section jump rail with per-section
collapsible cards (NooGroupedList's new collapsible param, expanded
by default) - one less parallel way to navigate a long screen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces the Material 3 screens with the Noo design system: warm
neutrals, one violet accent, pill controls, Schibsted Grotesk/
Instrument Sans, Lucide icons, no gradients/shadows.
- New lib/widgets/noo/ component kit (core, lists, files, media, nav,
overlays) plus lib/theme/design_tokens.dart for the color/type/space/
radius/motion tokens.
- Rebuilt the app shell (top/bottom bars, drawer, desktop sidebar and
toolbar), every tab (Files/Offline, Photos, Favorites, Recent,
Activity, Trash, Shares), Settings, the lock and login screens, the
media viewer, search, the details/share sheets, and the share-upload
and move/copy destination pickers.
- Added a design canvas (linked from DESIGN_SYSTEM.md) covering the
screens the spec didn't already describe, with matching Android and
iOS chrome; wrote up the approved recipes into DESIGN_SYSTEM.md §4.
- Removed now-dead legacy widgets (media_grid_tile, swipeable_item,
sync_status_badge, selectable_thumbnail) and updated
architecture.md/styling.md/standards.md to describe the new
structure and component/testing conventions.
- Added widget tests for the noo/ component kit.
This is a UI-only rework: no provider/model/service behavior changed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>