waterbustech/waterbus
51.2
Weak · 21 September 2026
20.1k
lines of production code
Dart
with Swift
4
measurements over time
What this system is
Waterbus is a cross-platform video communication application built with Flutter, supporting Android, iOS, Linux, macOS, and Windows. The system facilitates real-time messaging and group conversations through a BLoC-based architecture, while also providing media features like screen sharing, picture-in-picture, and beauty filters. It includes comprehensive user management, including anonymous authentication, profile customization, and multi-language support.
How it got here
2023 — Cross-platform expansion and architecture
47 changes.
The project focused on establishing a robust, cross-platform foundation by implementing native support for Linux, macOS, and Windows, alongside significant iOS and Android configuration updates. This period also introduced a centralized architecture featuring dependency injection, BLoC state management, and standardized UI components across all platforms.
2024–2025 — Feature expansion and architecture modernization
24 changes.
This period focused on adding significant new capabilities, including chat, archived conversations, room management, and theme customization, while simultaneously modernizing the underlying architecture. Key technical improvements included migrating to GoRouter for navigation, implementing BLoC state management for various features, and introducing responsive design utilities and reusable UI components.
Features
Add Google API credentials and scopes to auth constants
A new constants file was added to the auth package, defining a Google API key, a list of OAuth2 scopes (specifically 'email'), and distinct client IDs for web and desktop applications. This introduces the necessary configuration for Google authentication flows.
packages/auth/lib/constants · high confidence
Add archived conversation and screen views
Users can now view their archived conversations. A new ArchivedScreen lists archived chats, and selecting one opens an ArchivedConversationScreen that displays the chat history using a reverse-scrolling list of message cards.
lib/features/archived/presentation/screens · high confidence
Add common divider style
A new common style for a divider is introduced in the shared styles module, defining a Divider with a height of 1.sp. This provides a reusable visual separator for the application's UI.
lib/features/common/styles · high confidence
Add core extensions for context, failures, and offsets
New extension files are added to the core types to improve developer ergonomics and error handling. BuildContext now includes helper properties to detect mobile, desktop, and landscape states via a sizer extension. Failure types are mapped to localized user-facing messages, providing consistent error text across the application. Additionally, Offset scaling utilities are introduced to standardize coordinate systems across different device canvas sizes, ensuring consistent rendering and interaction coordinates.
lib/core/types/extensions · high confidence
Add reusable TextFieldInput widget for consistent form inputs
A new TextFieldInput widget has been introduced in the common widgets library, providing a standardized, reusable component for text input fields across the application. This widget encapsulates common form behaviors such as validation, input formatting, and styling, allowing other screens to implement consistent user input experiences with reduced boilerplate code.
lib/features/common/widgets/textfield · high confidence
Add room code input formatter
A new RoomCodeFormatter is introduced to enforce formatting rules for room codes, automatically converting input to lowercase, stripping non-alphabetic characters, limiting length to 11 characters, and inserting hyphens after the 3rd and 7th characters.
_lib/core/utils/input\formatter · high confidence
Added Archived BLoC for managing archived conversations
Users can now view and interact with their archived conversations. This change introduces the ArchivedBloc along with its associated events (ArchivedStarted, ArchivedDataFetched, ArchivedInserted, ArchivedRefreshed) and states (ArchivedInitial, ArchivedInProgress, ArchivedDone). The BLoC handles fetching archived conversation lists, inserting new archived items, and refreshing the list, providing a structured way to manage the state of archived content within the application.
lib/features/archived/presentation/bloc · high confidence
Added CompleterQueue utility for managing pending requests
A new CompleterQueue class has been added to lib/core/utils/dio/completer\_queue.dart. This utility manages a queue of pending asynchronous operations, allowing multiple requests to wait for a single result (such as a new access token) and then all complete simultaneously with that result.
lib/core/utils/dio · high confidence
Added English and Vietnamese language support
The app now supports English and Vietnamese, with new translation files and a language model enabling users to switch between the two languages in settings.
lib/core/app/lang · high confidence
Added benchmark data and gnuplot scripts for visualization
The benchmark directory now includes a new data file, benchmark.txt, containing performance metrics such as latency, bitrate, and jitter over time. To visualize this data, two new gnuplot scripts have been added: plot\_benchmark\_results.gp and plot\_benchmark\_results\_light.gp. These scripts generate PNG charts with dark and light themes respectively, allowing users to easily view benchmark results.
benchmark · high confidence
Added common UI widgets for navigation, gestures, and device constraints
The app now includes a set of reusable UI components in the common widgets library. Users will see a new 'not supported' screen for unsupported device sizes, a standardized AppBar with a back-button header, a gesture wrapper that handles taps and keyboard dismissal, and a tooltip wrapper for accessibility hints. These widgets provide consistent navigation, interaction, and layout behavior across the application.
lib/features/common/widgets · high confidence
Added core utility classes for clipboard, date/time, device haptics, image compression, paginated lists, platform detection, and sharing
New utility classes have been introduced in lib/core/utils to support cross-platform functionality. These include ClipboardUtils for managing system clipboard operations, DateTimeUtils for calendar and time formatting, DeviceUtils for triggering haptic feedback, ImageUtils for image size reduction, PaginatedListView for handling infinite scroll and pull-to-refresh, PlatformUtils for detecting desktop/mobile/OS, and ShareUtils for sharing content. These utilities provide foundational support for UI interactions and platform-specific behaviors.
lib/core/utils · high confidence
Added end-to-end encryption (E2EE) worker for web
The web application now includes an end-to-end encryption worker (e2ee.worker.dart.js) and its associated dependency and source map files, enabling secure media processing in the browser. This addition supports the platform's security features by handling cryptographic operations within a dedicated worker thread, as evidenced by the new files in the web directory.
web · high confidence
Added iOS screen sharing and picture-in-picture support
Users on iOS can now share their screen during calls and use picture-in-picture mode for video calls. This update introduces a new BroadcastWaterbus extension that captures the screen and streams video frames to the main app via a Unix socket, while the main app manages the AVPictureInPictureController to display the remote video feed in a floating window. The change also updates the minimum iOS deployment target to 13.0 and adds necessary entitlements for application groups.
ios · high confidence
Added new dialog widgets for completion and loading states
Two new dialog widgets have been introduced in the common widgets library. A 'done' dialog is now available to display a checkmark and text with an optional auto-dismiss delay, while a 'loading' dialog provides a modal overlay with a Cupertino-style activity indicator that prevents dismissal. These components allow the application to present standardized success and loading states to users.
lib/features/common/widgets/dialogs · high confidence
Added room sound effects for user actions
A new RoomSound utility class has been introduced to manage audio feedback for specific room interactions. This singleton provides methods to play distinct sound effects for joining a room, leaving a room, starting a recording, and raising a hand, utilizing the audioplayers library to play corresponding asset files.
lib/core/utils/audio · high confidence
Added shell scripts for image conversion and test automation
Added two new shell scripts in the tools directory: convert-webp.sh, which converts JPG/JPEG images to WebP format, and tests\_sh.sh, a menu-driven script that runs tests with specific exclusions, generates code coverage reports, and validates the Codecov configuration.
tools · high confidence
Added welcome message for Waterbus users
A new Java file, assets/welcome.java, has been added to the project. This file contains a welcome message thanking users for using Waterbus and provides a link to the project's GitHub repository for feedback or contributions.
assets · high confidence
Enable Linux support for audio, file, and media plugins
The Linux build now registers several Flutter plugins, enabling native capabilities on that platform. Specifically, the generated plugin registrant and CMake configuration now include audioplayers\_linux, file\_saver, file\_selector\_linux, flutter\_webrtc\_plus, irondash\_engine\_context, super\_native\_extensions, and url\_launcher\_linux as Flutter plugins, as well as rhttp and simple\_native\_image\_compress as FFI plugins. This allows applications to use these features on Linux.
linux/flutter · high confidence
Generated asset and font mappings added
Added generated Dart files for assets and fonts. The new lib/gen/assets.gen.dart file provides typed access to application icons (e.g., GitHub, Google, and meeting icons) and image assets (e.g., background images, logos, and message animations). The lib/gen/fonts.gen.dart file introduces a FontFamily class that maps font names like AnonymousPro, FiraPro, and Helvetica to their respective string identifiers.
lib/gen · high confidence
Initial release of the auth package
The auth package has been initialized with standard project scaffolding, including configuration files for analysis, licensing, and versioning. This establishes the foundational structure for the authentication module within the application.
packages/auth · high confidence
Initialize dependency injection container with generated registrations
The dependency injection container is now configured to register core application components, including BLoCs for home, chat, user, and settings, as well as singletons for audio and platform channels. This establishes the foundation for the app's architecture by wiring up the GetIt service locator with the necessary dependencies.
lib/core/injection · high confidence
Introduce Application entry point for app initialization
Added lib/core/app/application.dart, a new singleton class that serves as the application's entry point. It provides a static method to initialize the app by setting up local storage, configuring dependency injection, and triggering the authentication state. This centralizes the startup sequence for the Flutter application.
lib/core/app · high confidence
Introduce BLoC-based authentication flow
Added new BLoC files (auth\_bloc.dart, auth\_event.dart, auth\_state.dart) to manage the app's authentication state. This introduces a structured approach to handling login, logout, and token management, replacing previous ad-hoc or less structured implementations.
lib/features/auth/presentation/bloc · high confidence
Introduce BLoC-based theme management with color seed support
The theme settings feature now uses a dedicated BLoC (ThemesBloc) to manage theme mode and custom color seed preferences. Users can now change the application's theme mode and set a custom color seed, with these preferences persisted via the ThemesDatasource.
lib/features/settings/themes/bloc · high confidence
Introduce HomePageEnum to map UI titles to specific screens
A new enum HomePageEnum is introduced in lib/features/home/xmodels/home\_page\_enum.dart, defining a mapping between UI titles (recent, chat, notifications, appearance, etc.) and their corresponding Flutter widgets (RecentMeetings, ChatsScreen, etc.). This provides a centralized way to resolve a title string to its associated screen component.
lib/features/home/xmodels · medium confidence
Introduce centralized app color palette and theme support
A new centralized color system has been added to the application, defining a comprehensive palette of named colors (e.g., \colorPrimary\, \colorBlack\, \colorRedCustom\) and a structured \AppColor\ class. This class provides \light()\ and \dark()\ factory methods to generate distinct color schemes for light and dark modes, standardizing UI colors across the app.
lib/core/app/colors · high confidence
Introduce core Auth class for anonymous sign-in
The packages/auth/lib/auth.dart file was added, defining an Auth class that exposes an initialize method and a signInAnonymously method, enabling users to perform anonymous sign-in via the underlying AuthService.
packages/auth/lib · high confidence
Introduce language settings and persistence
Added new files to manage user language preferences. The \lang\_datasource.dart\ file introduces a data source for storing and retrieving the selected locale using Hive, while \language\_service.dart\ defines the supported languages (English, Vietnamese, Danish, German, Greek, French, Indonesian, Japanese, Korean, Dutch, Chinese, and Russian) and provides methods to save, retrieve, and check the current language setting.
lib/features/settings/lang · high confidence
Introduce message management logic in the conversation feature
Added a new MessageBloc along with its associated events and states to handle message lifecycle operations including fetching, sending, editing, deleting, and resending messages. The implementation includes socket-based updates for real-time message synchronization and manages local caching of messages by room ID.
lib/features/conversation/bloc · high confidence
Introduce platform-specific authentication service implementations
The auth package now provides a platform-aware authentication service. An abstract \AuthService\ interface is defined, with a Linux-specific implementation (\auth\_service\_impl\_linux.dart\) that initializes Firebase and handles anonymous sign-in, while a stub implementation (\auth\_service\_impl\_stub.dart\) provides a default fallback. The \index.dart\ file exports a factory that returns the Linux implementation on Linux/Windows platforms and the stub implementation elsewhere, enabling consistent authentication behavior across different operating systems.
packages/auth/lib/services · high confidence
Introduce platform-specific image resizing and a custom network image widget
Added a new image resizing utility that uses native compression on mobile and a web-compatible library on the web, alongside a new CustomNetworkImage widget that provides consistent image display with caching, placeholder, and default avatar support across platforms.
_lib/core/utils/data\_sources, lib/core/utils/image\_resizer, lib/features/common/widgets/cached\_network\image · high confidence
Introduce profile management and username validation
The profile feature now includes a complete UI and state management for managing user profiles and usernames. A new UserBloc handles fetching, updating, and cleaning user data, including avatar changes and bio updates. The profile screen allows users to edit their full name and bio, while a dedicated username screen enables real-time validation of username availability with status indicators (valid, registered, or checking). The profile header displays the user's avatar, name, and username, with a toggle for light/dark mode. Additionally, a side menu and drawer components provide navigation to profile, archived chats, settings, and other account-related sections.
lib/features/profile · high confidence
Introduce responsive sizing utilities and reusable shimmer widgets
Added a new \sizer\ utility in \lib/core/utils/sizer\ that provides extension methods (\.h\, \.w\, \.sp\) and a \Sizer\ widget to calculate dimensions based on screen size and orientation, enabling responsive layouts. Additionally, added \FadeShimmer\ and \ShimmerList\ widgets in \lib/features/common/widgets/shimmers\ to display loading placeholders with configurable themes and directions.
lib/core/utils/sizer, lib/features/common/widgets/shimmers · high confidence
Introduced new chat feature with BLoC state management and UI components
Added a new chat feature implementation, including a ChatBloc for state management, a UserLocalDataSource for local storage, and a suite of UI widgets (such as ChatCard, ConversationList, and various helper widgets) to support the chat interface.
lib/features/chats · high confidence
Introduces new core constants and types for app configuration and UI behavior
The app now includes dedicated constant files for avatar colors, channel names, general app settings, API endpoints, local storage keys, and HTTP status codes, alongside new types for slide animations. These additions provide a centralized configuration for the app's identity, network endpoints, and UI transitions.
lib/core/constants · high confidence
Introduces new modal and toast utilities for consistent UI patterns
Adds three new utility functions in lib/core/utils/modal to standardize how the app displays overlays and notifications. showBottomSheetWaterbus wraps the standard bottom sheet with sensible defaults. showDialogWaterbus provides a customizable dialog with slide animations, rounded corners, and mobile-responsive behavior that falls back to a bottom sheet on smaller screens. showSnackBarWaterbus displays styled toast notifications with glassmorphism effects. These utilities replace ad-hoc calls to Flutter's built-in methods, ensuring consistent styling and behavior across the application.
lib/core/utils/modal · high confidence
Introduces room management, beauty filters, and recent joined rooms features
This change adds new capabilities for managing rooms and enhancing the user experience within them. It introduces a new RoomLocalDataSource for persisting room data locally, alongside a RoomModelX extension that provides UI helpers for room status, unread messages, and action options. The update also implements a beauty filters system, including a dedicated BLoC and UI widgets for adjusting smoothness, whitening, and other visual effects. Additionally, a RecentJoinedBloc is added to track and manage the user's recently joined rooms, allowing for quick access to past sessions.
lib/features/room · high confidence
New anonymous login option on the sign-in screen
The login screen now includes an 'Anonymously' sign-in button, allowing users to access the app without creating an account or providing personal information. This new UI component is implemented in the login screen and its associated button widget, providing a streamlined entry point for anonymous users.
lib/features/auth/presentation/screens · high confidence
New conversation UI components for message display and input
Added a suite of new Flutter widgets in the conversation feature to render the chat interface, including a header bar, message list and cards with context menus, an input field with edit support, member and user cards, and shimmer placeholders for loading states. These components collectively provide the visual structure and interactive elements for the conversation screen.
lib/features/conversation/widgets · high confidence
New conversation and group detail screens
Added new Flutter screens for the conversation feature: a main conversation screen for viewing and sending messages, a group detail screen for managing group settings and members, and an edit screen for renaming conversations and updating avatars. These files introduce the UI components and state management integration for these specific user flows.
lib/features/conversation/screens · high confidence
New conversation model classes for avatars, messages, and UI options
The conversation feature now includes new model classes to support enhanced UI and interaction capabilities. A DefaultAvatarModel has been added to generate user initials and associated background colors or gradients. A MessageX extension provides message data formatting and defines a context menu with edit and delete (retrieve) actions. An OptionModel class is introduced to represent menu items, and a StringExtension adds helper methods for formatting and displaying toast notifications.
lib/features/conversation/xmodels · high confidence
New home screen with bottom navigation and desktop sidebar layout
The home screen now features a bottom navigation bar on mobile devices and a sidebar layout on desktop, allowing users to switch between Home, Chats, and Settings. The home screen displays recent meetings and includes a sliding drawer for profile, settings, and archived chats. A new BLoC manages the home state for tab switching.
lib/features/home/screens · high confidence
New image picker and grid layout components
Added a new \WaterbusImagePicker\ widget that provides a unified interface for selecting images from the gallery or camera, including platform-specific handling for desktop/web versus mobile. Also added a \SliverGridWithCustomGeometryLayout\ and \SliverGridDelegateWithFixedCrossAxisCountAndCentralizedLastElement\ to support custom grid layouts with centralized last elements.
lib/features/common/widgets/images · high confidence
New reusable dropdown widget with custom styling
A new reusable dropdown widget has been added to the common widgets library. It wraps the \dropdown\_button2\ package to provide a styled, expandable dropdown with a custom checkmark icon, transparent splash effects, and dark/light mode support. This component can be used across the app to display selection menus with consistent theming.
_lib/features/common/widgets/drop\down · high confidence
New settings UI components for profile, call, and video quality options
The settings screen now features a redesigned profile header that displays the user's avatar, full name, and username, with a tap-to-edit avatar flow. A new reusable row-button component (SettingRowButton) and supporting widgets (CustomRowButton, LabelWidget, SettingCheckboxCard, SettingSwitchCard) have been introduced to structure the settings menu. Additionally, a new VideoQualityBottomSheet widget allows users to select video quality preferences, supporting the new call settings feature.
lib/features/settings/presentation/widgets · high confidence
New settings screens for call, language, notifications, theme, and privacy
Users can now configure call preferences (audio/video mute, echo cancellation, noise suppression), select the app language, manage in-app and in-meeting notification toggles, customize the app theme (light/dark mode and primary color seed), and view app licenses. These new screens provide dedicated UI for adjusting these settings across mobile and desktop.
lib/features/settings/presentation/screens · high confidence
Project governance and development tooling added
The repository now includes standard open-source governance files: a Contributor Covenant Code of Conduct, a CONTRIBUTING.md guide, an Apache 2.0 LICENSE, and a SECURITY.md with a reporting email. Additionally, build and quality tooling configurations have been added, including a Makefile for common tasks, a .gitignore for build artifacts, a codecov.yml for coverage thresholds, a sonar-project.properties for static analysis, and devtools\_options.yaml for Flutter DevTools. The project's internal metadata (.metadata) has been updated to reflect the current Flutter SDK revision and channel, and the README has been significantly expanded with badges, feature lists, and build instructions.
(repo-wide) · high confidence
Windows support enabled with expanded plugin registry
The Windows build configuration has been updated to support the Windows target platform, including a fallback configuration for older Flutter tool versions. The Windows-specific plugin registry has been expanded to include support for audioplayers, connectivity\_plus, file\_saver, file\_selector, firebase\_auth, firebase\_core, flutter\_webrtc\_plus, irondash\_engine\_context, permission\_handler, share\_plus, super\_native\_extensions, and url\_launcher. Additionally, the generated plugins list now includes rhttp and simple\_native\_image\_compress as FFI plugins.
windows/flutter · high confidence
Architecture
Centralized BLoC registration via new AppBloc
A new AppBloc singleton has been introduced to centralize the registration of feature-specific BLoCs (including Auth, Home, Chat, Message, Room, and Themes) into the application's dependency injection container. This change consolidates how these BLoCs are instantiated and provided to the UI layer, ensuring consistent initialization and lifecycle management for core application features.
lib/features/app/bloc · high confidence
Behavioural changes
Add color seed enum for theme customization
A new ColorSeed enum has been added to the core types, defining a set of predefined color options (such as Blue, Indigo, Teal, etc.) each associated with a label and a specific Flutter Color. This change enables the application to support custom color seeds for theming, allowing users to select from these predefined color palettes to customize the UI appearance.
lib/core/types/enums · medium confidence
Android app configuration and integration updates
The Android build configuration has been updated to use Gradle 8.2. The application package name was changed from 'com.example.waterbus' to 'com.waterbus.wanted' across all build variants. A new FlutterViewEngine wrapper was added to support Picture-in-Picture (PiP) mode, and the main activity was updated to handle PiP lifecycle events. The AndroidManifest.xml was updated to include permissions for screen sharing, foreground services, and boot receivers, while also removing the Google Ad ID permission. Additionally, the app's launcher icon was converted to an adaptive icon with monochrome support, and the splash screen was updated to use custom background and splash drawables for both light and dark themes.
android · high confidence
App entry point refactored to use go router and custom color seed theming
The main application widget in lib/features/app/app.dart has been refactored to integrate go router for navigation and support custom color seeds for theming. The app now uses a BlocBuilder to dynamically apply light and dark themes based on the current theme mode and color seed, and wraps the content with Toastification for toast notifications. Additionally, the app configures localizations for multiple languages and sets up system UI overlay styles.
lib/features/app · high confidence
App initialization and platform configuration overhaul
The application entry point (lib/main.dart) has been completely refactored to support cross-platform initialization, including WebRTC, Firebase, and i18n. A new PipChannel class was added to manage Picture-in-Picture mode on iOS. Additionally, a new firebase\_options.dart file was introduced to configure Firebase for all supported platforms (Web, Windows, Android, iOS, macOS).
lib · high confidence
App navigation migrated to GoRouter
The application's navigation system has been refactored from the standard Flutter Navigator to the GoRouter library. This change introduces a new \AppRouter\ class that manages all app routes, including authentication, chat, settings, and meeting screens. Users will experience improved navigation performance and more robust deep-linking support, such as accessing the lobby via a code-based URL. The underlying routing logic now uses typed route definitions and a generated routes list, which should result in more stable navigation states and easier maintenance of the app's structure.
lib/core/navigator · high confidence
Centralized app theme configuration with web-specific transition handling
A new \AppTheme\ class has been introduced in \lib/core/app/themes/app\_theme.dart\ to manage light and dark theme configurations. This change standardizes the application's visual style by defining \ThemeData\ for both light and dark modes, including specific settings for status bars, app bars, and snack bars. Notably, the implementation disables page transition animations on the web platform while retaining native iOS and Android transitions on mobile devices.
lib/core/app/themes · high confidence
Enforce code formatting and analysis on commit and push
The repository now enforces code quality standards through new Git hooks. The pre-commit hook automatically runs the Flutter formatter and import sorter on staged changes, preventing direct commits to the master branch, and re-commits with an automated message. The pre-push hook runs the Dart analyzer to catch errors before pushing, while the test execution is currently disabled.
.githooks · high confidence
Linux platform configuration and window behavior updates
The Linux build configuration now uses the application ID 'com.waterbus.waterbus' and includes native assets from the build directory. The main window's default height is increased to 800 pixels, a window icon is set from 'assets/images/logo\_rounded\_2.png', and minimum size constraints are applied. Additionally, startup and shutdown lifecycle hooks are implemented for the Linux application.
linux · medium confidence
Persist and retrieve theme mode and color seed settings
The app now saves the user's preferred theme mode (e.g., light, dark, or system) and a custom color seed to local storage. This ensures that the application's visual appearance and color palette are remembered and restored each time the app is opened, providing a consistent personalized experience across sessions.
lib/features/settings/themes/data · high confidence
Redesigned home screen with new widget components
The home screen UI has been significantly updated with new components including a side menu with user profile footer, a recent meetings list with date headers, and a join room action form. The layout now features a collapsible side navigation bar, a user avatar footer with a popover menu for account settings and sign-out, and a dedicated view for empty states and meeting cards.
lib/features/home/widgets · high confidence
Updated Xcode project configuration for macOS
The macOS Runner project has been updated to target Xcode 15.10 (LastUpgradeVersion 1510). The launch configuration now defaults to the Release build configuration and uses the PosixSpawn launcher instead of LLDB. Additionally, GPU validation mode has been enabled for the launch action, and the test suite for RunnerTests has been explicitly configured to run in parallel.
macos/Runner.xcodeproj/xcshareddata · high confidence
Updated macOS app identity and copyright
The macOS application's bundle identifier has been changed from 'com.example.waterbus' to 'com.waterbus.waterbus', and the copyright notice has been updated to reflect the year 2024 and the new domain.
macos/Runner/Configs · high confidence
Updated macOS build configuration and plugin registrations
The macOS build configuration has been updated to include CocoaPods support by adding the Pods project to the Xcode workspace and enabling the Pods xcconfig files in the Flutter build settings. Additionally, the generated plugin registrant has been updated to register a new set of plugins, including audioplayers, connectivity\_plus, device\_info\_plus, file\_picker, firebase\_auth, firebase\_core, firebase\_crashlytics, flutter\_image\_compress, flutter\_webrtc\_plus, package\_info\_plus, path\_provider, share\_plus, shared\_preferences, sqflite, url\_launcher, and wakelock\_plus.
macos/Flutter · medium confidence
Windows runner: improved window initialization and sizing
The Windows runner now sets the application window title to "Waterbus" and forces an immediate redraw to ensure the window is visible on the first frame. Additionally, a minimum window size of 1280x800 pixels is enforced via the WM\_GETMINMAXINFO message, preventing the user from resizing the window below these dimensions.
windows/runner · high confidence
macOS app gains camera, microphone, and file access permissions
The macOS build now requests permissions for the camera, microphone, photo library, and file downloads, enabling features like virtual backgrounds and media capture. The app window now enforces a minimum size of 1024x720 pixels, and the app bundle name is set to 'Waterbus' with URL schemes for Facebook and Google Sign-In.
macos/Runner · high confidence
Fixes
1 commit (1 fix) fixing res
A fix in res — 1 commit (1 fix), 8 files.
res · medium confidence · unverified
Test coverage
Added initial macOS test suite; Added unit test target and CocoaPods configuration for macOS; Added unit tests for auth service; Removal of default Flutter widget test.
Dependencies
Updated iOS, macOS, and Android build configurations and dependencies
The project's build system and dependencies have been updated across platforms. On iOS and macOS, new Podfile and Podfile.lock files were added to manage CocoaPods dependencies, including Firebase (Auth, Crashlytics, Performance) and WebRTC. On Android, the build.gradle files were updated to use Gradle 8.2.2, Kotlin 2.0.0, and compileSdk 35, while also adding signing configurations and multi-Dex support. The main pubspec.yaml was updated to include a wide range of new dependencies (such as go\_router, firebase packages, and various UI/state management libraries) and increased the app version to 2.0.0+10.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 53 → 51 (-2.3)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 87 (-11.9)
- Architecture 99 → 91 (-8.6)
- Maturity 53 → 54 (+0.9)
- Readiness 46 → 38 (-7.5)
- Security 52 → 67 (+15.1)
- Domain Modelling 100 → 100 (+0.0)
- Accessibility 59 → 59 (+0.0)
Resolved (28)
- Change coupling: home_screen.dart ↔ list_menu_drawer.dart (lib/features/home/screens/home_screen.dart)
- Change coupling: list_menu_drawer.dart ↔ profile_header.dart (lib/features/profile/presentation/widgets/list_menu_drawer.dart)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Further sole-owners (lower concentration)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 8 more
New (127)
- AppDelegate.application (cognitive 23) (ios/Runner/AppDelegate.swift)
- AppDelegate.application (cyclomatic 18) (ios/Runner/AppDelegate.swift)
- BodySettingScreens.build (cognitive 29) (lib/features/settings/presentation/widgets/body_setting_screens.dart)
- BodySettingScreens.build (cyclomatic 16) (lib/features/settings/presentation/widgets/body_setting_screens.dart)
- CallSettingsBottomSheet.build (cognitive 20) (lib/features/room/presentation/widgets/call_settings_bottom_sheet.dart)
- Change coupling: conversation_screen.dart ↔ message_card.dart (lib/features/conversation/screens/conversation_screen.dart)
- Change coupling: menu_drawer_card.dart ↔ profile_header.dart (lib/features/profile/presentation/widgets/menu_drawer_card.dart)
- Change coupling: profile_screen.dart ↔ privacy_screen.dart (lib/features/profile/presentation/screens/profile_screen.dart)
- Change coupling: room_bloc.dart ↔ room_view.dart (lib/features/room/presentation/bloc/room/room_bloc.dart)
- Change-coupling hub: enter_meeting_code_screen.dart → meeting_card.dart, room_state.dart, room_screen.dart (lib/features/room/presentation/screens/enter_meeting_code_screen.dart)
- ChatBloc.ChatBloc (cognitive 65) (lib/features/chats/presentation/bloc/chat_bloc.dart)
- ChatBloc.ChatBloc (cyclomatic 38) (lib/features/chats/presentation/bloc/chat_bloc.dart)
- ClassTooLong: _RoomBodyState (lib/features/room/presentation/widgets/room_body.dart)
- DateTimeUtils.getScheduleThisMonth (cognitive 18) (lib/core/utils/date_time_utils.dart)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- DetailGroupScreen.build (cognitive 30) (lib/features/conversation/screens/detail_group_screen.dart)
- DetailGroupScreen.build (cyclomatic 19) (lib/features/conversation/screens/detail_group_screen.dart)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (lib/features/profile/presentation/screens/profile_screen.dart)
- …and 107 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
waterbustech/waterbus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5e5c8791f39a9df370c0961c224d9b2448cfa4ee — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.