14 Commits
Author SHA1 Message Date
ayushyaandClaude Sonnet 5 da22030d43 CI: build on RC* tags only, name the APK, and publish to a Gitea release
Build APK / build (push) Successful in 5m22s
- Trigger on pushing a tag matching RC* instead of every push to main
  - tag the commit you want built: git tag RC1 && git push origin RC1
- Rename the built APK to Noo-<version>.apk (from pubspec.yaml's version)
- Replace the plain artifact upload with akkuman/gitea-release-action,
  which creates/updates a Gitea release named after the triggering tag
  and attaches the versioned APK to it - the GitHub-flavored
  actions/upload-artifact and release actions don't reliably work
  against Gitea's own API, this one talks to Gitea natively

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:17:49 -04:00
ayushyaandClaude Sonnet 5 ab427c0b9f Fix CI: downgrade upload-artifact to v3 for Gitea Actions compatibility
Build APK / build (push) Successful in 5m42s
actions/upload-artifact@v4 speaks a newer artifact backend protocol
that Gitea Actions doesn't implement yet, failing with
GHESNotSupportedError even though this isn't GHES. v3 uses the older
protocol Gitea does support. The build itself (flutter analyze +
flutter build apk --release) already succeeded before this step.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:06:53 -04:00
ayushyaandClaude Sonnet 5 dca0daf41f Fix CI: pin setup-android packages to skip removed 'tools' package
Build APK / build (push) Failing after 5m22s
Google removed the legacy standalone "tools" package from the Android
SDK repository (~Sep 2026); android-actions/setup-android@v3's default
packages list ("tools platform-tools") now fails its own sdkmanager
call for everyone. Pin packages: platform-tools instead - that's all
this step needs, flutter build fetches whatever platform/build-tools
versions it actually needs on its own.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 14:57:38 -04:00
ayushyaandClaude Sonnet 5 b5df0ee77a Add Gitea Actions workflow to build a release APK on push to main
Build APK / build (push) Failing after 3m28s
Checks out, sets up JDK 17 + Flutter (stable) + Android SDK, runs
flutter analyze, then builds and uploads a release APK artifact.
Requires a registered Gitea Actions runner - see the setup notes
given alongside this commit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 14:39:07 -04:00
ayushyaandClaude Sonnet 5 1c8ad898d9 Use the real app icon on the login screen
Replace the generic Material cloud icon in a colored circle with the
actual branded app_icon.png (same asset already used for the splash
screen). Checked the rest of the app for other Icons.cloud* usages -
the remaining ones (sync-status chip, activity feed fallback icon)
are functional/semantic, not app branding, so left as-is.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 12:30:16 -04:00
ayushyaandClaude Sonnet 5 73e05f8d22 Remove scrollbar thumb and restructure Settings profile card
- Revert the scrollbar-thumb feature entirely (per-view Scrollbar
  wrappers and the ScrollbarThemeData override) - back to plain
  scrollables with no visible thumb
- Settings: move the logout button into the profile card (next to the
  name/email), and move the ONLINE/OFFLINE badge + "Connected to..."
  text out of the top row into a combined line at the bottom of the
  card, instead of split between the AppBar and the top of the screen
- Update architecture.md/styling.md to drop the stale scrollbar-theme
  documentation

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 12:28:11 -04:00
ayushyaandClaude Sonnet 5 1fbdc1f8d0 Add multi-account support and update project docs
- Add SavedAccount/AccountStore and rework ServerProvider around a list
  of saved accounts: switch/remove/add, swipe-to-cycle on the avatar
  button, per-account browsing prefs (sort/view/filters/cache), and a
  session-generation guard so a stale fetch from an abandoned account
  can't land in the newly active one
- Migrate existing single-account installs into the new schema
  automatically so upgrading users stay logged in
- Settings gains an Accounts section; LoginView gains an "add account"
  mode pushed on top of the main shell instead of replacing it
- Give every Scrollbar in the app a thicker, draggable, Android-style
  thumb via a shared ScrollbarTheme instead of the default hairline
- Splash screen: use the monochrome app icon (tinted per theme) and a
  smaller spinner
- Update CLAUDE.md and .claude/context/*.md to reflect the accumulated
  multi-account, sharing, and UI changes across this session, and add
  a standing instruction to keep these docs current going forward

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 11:21:36 -04:00
ayushyaandClaude Sonnet 5 5299ac5c2c Add share-to-upload, per-folder sort, and media viewer polish
- Accept Android's "Share to..." intent (ACTION_SEND/SEND_MULTIPLE) to
  upload a shared file, with a new destination-folder picker screen
- Unlink Files/Photos sort settings and make Files remember sort
  per folder (like per-folder view settings), instead of one shared
  global sort field for both tabs
- Media viewer: show the file name (marquee-scrolling if too long) in
  the top bar next to a resized back button, slide the top bar out of
  view instead of fading it, and unify icon color/contrast across the
  top bar, bottom action bar, and video transport controls
- Add a scrollbar thumb to every scrollable list in the app (all tab
  views via SyncedHeaderScaffold, search results, settings, the new
  upload folder picker, share sheet, and the Details sheet's tabs)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 11:05:54 -04:00
ayushyaandClaude Sonnet 5 d5675d853c Polish media viewer, pull-to-sync, search nav, and add seek bar presets
- Remove peek details sheet from media viewer; scope Activity tab to
  the current file via client-side filtering instead of unreliable
  server-side query params
- Add file rename action (WebDAV MOVE); fix search result taps to
  switch to Files tab and rebuild breadcrumbs from an absolute path
- Add swipe-to-delete confirmation dialog; fix a crash from disposing
  the rename dialog's TextEditingController too early
- Rework pull-to-sync gesture so sync and lock-open thresholds fire
  independently within one gesture, raise thresholds, and add a
  classic Material refresh spinner
- Add "tap active tab to scroll to top" behavior with a settings toggle
- Align selection toolbar padding with the sort/filter controls row
- Replace app icon assets (adaptive icon + splash screen) with
  updated IconKitchen export
- Replace the seek bar style dropdown with a Default/Wavy/Slim/Squiggly
  preset picker, each rendered with a live, perpetually-animated
  preview via a new shared SeekBarPainter/SeekBarPreview

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 10:25:52 -04:00
ayushyaandClaude Sonnet 5 1e42fcc0e6 Rewrite README as public-facing project intro
Replace the default Flutter starter README with an actual
introduction: features, screenshots placeholder, getting-started,
supported platforms, build commands, and tech stack.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 09:06:24 -04:00
ayushyaandClaude Sonnet 5 0c877e619c Add CLAUDE.md with topic-specific context docs
Split project context into .claude/context/ (architecture, server,
styling, standards) instead of one large file, referenced from a
minimal root CLAUDE.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 00:25:53 -04:00
ayushyaandClaude Sonnet 5 d68cc43368 Add Trash/Shares/Recent tabs, file sharing, Details sheet, and rebrand to Noo
Major additions since the initial rebuild:
- New tabs: Trash, Shares, Recent, configurable tab visibility/order/default
- Nextcloud sharing: search users/teams, internal link, email shares,
  public links, "others with access" - in its own Share bottom sheet
- Details bottom sheet (Info/Versions/Activity) with a persistent peek
  panel in the media viewer, reachable from selection, swipe, and the
  media viewer
- Files/Photos: tap-and-hold multi-select with a sticky selection toolbar,
  swipe actions (favorite/delete/share), sticky sort/filter controls,
  list/grid views, breadcrumb chips, whole-account Photos view
- Media viewer: pinch/double-tap zoom on images, predictive-back support,
  fixed PDF zoom-out floor
- Settings: Material You theming incl. AMOLED black, configurable bottom
  bar tabs, swipe actions, media seek bar style, and folder-listing cache
  policy (never/periodic/manual) to cut down on refetching
- Login flow moved to an in-app Chrome Custom Tab with retry-tolerant
  polling
- Replaced ad hoc widgets with native Material 3 equivalents (toggle
  IconButtons, SliverAppBar selection toolbar, SearchBar, drag handles)
- Rebrand: app renamed to Noo throughout, package id -> dev.ayushya.noo,
  new adaptive launcher icon

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 22:44:42 -04:00
ayushyaandClaude Sonnet 5 f62d912ef7 Rebuild Noo as a full Nextcloud client: auth, media, and Material You UI
Replaces the starter template with Login Flow v2 auth, WebDAV-backed
Files/Photos/Activity tabs, a swipeable media viewer with PDF/text/video
preview, Material You dynamic theming, a frosted-glass floating nav bar,
and a rebranded app icon/identity (com.example -> family.nasa).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 16:07:02 -04:00
ayushyaandClaude Sonnet 5 54f80a65e7 Initial commit
Flutter Nextcloud client app.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 11:54:26 -04:00