Skip to content
CAI
Software that uses CAICheck a score

waterbustech/waterbus

51.2

Weak · 21 September 2026

20.1k

lines of production code

Dart

with Swift

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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

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.