Skip to content

Redraw the app as editorial content on glass controls - #787

Merged
michaelst merged 1 commit into
mainfrom
claude/apple-design-system-f361da
Aug 16, 2026
Merged

michaelst merged 1 commit into
mainfrom
claude/apple-design-system-f361da

Conversation

@michaelst

Copy link
Copy Markdown
Owner

Material was showing through everywhere: cards, list tiles, app bars, a navigation bar, dropdowns, ripples. This replaces it with the design system in mobile/lib/design, per the 2a token sheet - flat hairline-ruled content, every control a pane of glass, light and dark following the system.

The signature is that a budget's progress is its own bottom rule thickened to 2px, so a card is never needed to hold one. See mobile/docs/design.md.

What changes for the user

  • Large titles that collapse into a blurred band; a tab bar that floats as a glass capsule with the list scrolling under it
  • Selection is entered by long press, and a transaction swipes right to review, left to spend from
  • Dropdowns became sheets, the date picker became the wheel, the budget type a segmented control
  • Cupertino page transitions, bounce physics, pull to refresh, and haptics on every toggle and tab
  • Credit cards moves under its own "From connected accounts" rule. listedBudgets is untouched, so web parity holds

Notes for review

  • phosphor_flutter cannot build on Flutter 3.47, which made IconData a final class. The 16 glyphs are vendored under mobile/assets/icons from the same Phosphor set the web app ships, drawn with flutter_svg
  • Adds flutter_slidable for the swipe actions
  • test/design/layout_test.dart lays the whole app out at 390x844 in both appearances. The other tests run at 800x600, which hid all three bugs it caught: the month title overflowing, the budget name truncating against a Spacer, and the tab bar falling back to the framework's error text style for want of a Material above it
  • Not verified on a device - the simulator runtime is not installed here. The screens were checked by rendering the widget tree at phone size with the system font loaded

🤖 Generated with Claude Code

@michaelst
michaelst force-pushed the claude/apple-design-system-f361da branch 4 times, most recently from 3ba283e to 97b3b0f Compare August 16, 2026 18:36
Material was showing through everywhere: cards, list tiles, app bars, a navigation
bar, dropdowns, ripples. Replaces it with the design system in mobile/lib/design -
flat hairline-ruled content, every control a pane of glass, light and dark following
the system.

The signature is that a budget's progress is its own bottom rule thickened to 2px,
so a card is never needed to hold one.

- Selection is entered by long press, and a transaction swipes to review or spend from
- Dropdowns became sheets, the date picker became the wheel, the type picker a segmented control
- Phosphor glyphs are vendored under assets/icons; phosphor_flutter cannot build on
  Flutter 3.47, which made IconData a final class

Adds a layout test at phone size, which is what caught the month title overflowing,
the budget name truncating against a Spacer, and the tab bar falling back to the
framework's error text style for want of a Material above it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@michaelst
michaelst force-pushed the claude/apple-design-system-f361da branch from 97b3b0f to 4672e18 Compare August 16, 2026 18:44
@michaelst
michaelst merged commit 048677e into main Aug 16, 2026
6 checks passed
@michaelst
michaelst deleted the claude/apple-design-system-f361da branch August 16, 2026 18:48
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