Files
noo/tool/demo_server
ayushyaandClaude Opus 5.5 56784ef212 Rebuild UI on the Noo design system
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>
2026-09-26 01:51:58 -04:00
..
2026-09-26 01:51:58 -04:00
2026-09-26 01:51:58 -04:00

Demo server for Play Store screenshots

tool/screenshots.sh takes the Play Store screenshots against a throwaway Nextcloud that only contains fake data, so nothing real can appear in them. This folder is that server:

  • docker-compose.yml - a single Nextcloud container (SQLite, nothing persisted; docker compose down -v wipes it).
  • seed.py - creates the users and fills them with invented content: landscape "photos" drawn with Pillow, tiny generated PDFs, made-up documents, favorites, shares (to a second user and a public link), trash, a filler file for the storage quota, and edits by a second user so the Activity feed has more than one author. It ends by printing APP_PASSWORD=... - an app password for the demo user, so the app can start logged in without the browser login step.

Running it

Most of the time just run the whole pipeline from the repo root:

bash tool/screenshots.sh

(Git Bash is fine on Windows.) You need Docker, Python 3, Flutter and an Android SDK (ANDROID_HOME). Pillow and requests are installed into tool/demo_server/.venv automatically if your Python lacks them. The script installs the emulator and a system image through sdkmanager on first use. Options (HEADLESS=1, DEMO_PORT, DEMO_HOST, KEEP_SERVER=1, ANDROID_SERIAL, ...) are documented at the top of the script.

To poke at the server yourself:

docker compose -f tool/demo_server/docker-compose.yml up -d
python3 tool/demo_server/seed.py          # prints APP_PASSWORD=...
# browse http://localhost  (Alex / alex-demo-pass, admin / demo-admin-password)
docker compose -f tool/demo_server/docker-compose.yml down -v

python3 tool/demo_server/seed.py --generate-only DIR writes the generated files to DIR without any server - handy for previewing the fake content.

Before you upload

Look at every image. The known places where real data could still show up: the server address and username (sync header panel, Settings > Accounts), the avatar initial, notification icons in the status bar, and anything left over from a previously used emulator profile (the script always wipes its own).