Skip to content
CAI
Software that uses CAICheck a score

Zatoner/Trivi

46.0

Weak · 21 September 2026

2.9k

lines of production code

Kotlin

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Android launcher application that replaces the standard home screen with a customizable interface featuring a bottom navigation bar and three main sections: a home dashboard, an app grid, and an AI chat interface. It aggregates real-time data from external APIs to display current weather conditions and device location, while also persisting local notification history and installed app metadata. The core functionality revolves around an integrated Gemini AI assistant that provides context-aware updates and app suggestions, all managed through a centralized dependency injection architecture.

Features

Add OpenWeather API interface for weather and forecast data

A new OpenWeather API interface has been added to define the remote data layer for fetching current weather and forecast information. This includes endpoints for retrieving current weather conditions and multi-day forecasts, utilizing Retrofit annotations to map HTTP requests to Kotlin data classes (WeatherDto and ForecastDto).

app/src/main/java/com/aboe/trivilauncher/data/remote · high confidence

Added Apps screen with app grid and favorites management

Introduced the AppsScreen component, which renders a two-column grid of installed applications. Each AppCard displays the app icon and label, and supports click-to-launch and long-press-to-toggle-favorites. Favorites are currently persisted in SharedPreferences, with temporary toast feedback for add/remove actions.

app/src/main/java/com/aboe/trivilauncher/presentation/apps/components · high confidence

Added WeatherRepositoryImpl to handle weather data retrieval

Introduced WeatherRepositoryImpl, a new implementation of the WeatherRepository interface that fetches weather data via the OpenWeatherApi. This adds support for retrieving current weather conditions, widget-specific weather data, and weather forecasts by latitude and longitude.

app/src/main/java/com/aboe/trivilauncher/data/remote/repository · high confidence

Added app repository implementation for retrieving installed applications

A new implementation of the AppRepository interface has been introduced, providing the mechanism to fetch a list of installed applications along with their labels, package names, and icons. This change enables the application to query and cache the set of installed apps, supporting features like app search and launchability status.

app/src/main/java/com/aboe/trivilauncher/data/local/apps/repository · high confidence

Added data models for weather forecast API responses

Introduced a new set of Kotlin data classes in the remote data layer to parse weather forecast data. The diff adds DTOs for City, Clouds, Coord, Main, Rain, Sys, Weather, and Wind, alongside a ForecastDto that maps the API's list of weather conditions into the app's internal WeatherItem model. This change enables the application to deserialize and process forecast data from the weather API.

app/src/main/java/com/aboe/trivilauncher/data/remote/dto/forecast · high confidence

Added weather data transfer objects for remote API responses

Added new Kotlin data classes (Clouds, Coord, Main, Rain, Sys, Weather, WeatherDto, Wind) in the remote DTO package to model the structure of weather API responses. The WeatherDto class includes mapping functions to convert the raw API data into domain-specific WeatherItem and WeatherWidgetItem models, enabling the app to parse and display current weather conditions and widget data.

app/src/main/java/com/aboe/trivilauncher/data/remote/dto/weather · high confidence

Home screen now displays date, weather, and Gemini AI responses

Users can now see the current date, a weather widget, and AI-generated Gemini responses directly on the home screen. The HomeViewModel manages the state for these three distinct data sources, handling loading and error conditions by showing snackbar messages when updates fail. This change introduces the core logic for fetching and displaying these new home screen elements.

app/src/main/java/com/aboe/trivilauncher/presentation/home · high confidence

Introduce Gemini chat interface and onboarding flow

Users can now interact with a new Gemini chat feature, which includes a dedicated screen for sending and receiving AI-generated responses, along with an onboarding flow that collects user preferences and requests necessary system permissions. The chat interface displays user queries and AI responses in a scrollable list, while the onboarding screen gathers username, user info, and personality settings before completing the initial setup.

app/src/main/java/com/aboe/trivilauncher/presentation/gemini · high confidence

Introduce main activity with onboarding flow

The app now launches into a new main activity that manages the initial user experience. It displays an onboarding screen on first launch, controlled by a shared preference flag, and transitions to the main navigation screen once the onboarding is completed.

app/src/main/java/com/aboe/trivilauncher/presentation · high confidence

Introduced domain models and repositories for apps, notifications, and weather

Added new domain model classes—CompactAppInfo, GeminiItem, NotificationItem, WeatherItem, and WeatherWidgetItem—alongside corresponding repository interfaces (AppRepository, NotificationRepository, WeatherRepository) to support the app's launcher, notification logging, and weather widget features.

app/src/main/java/com/aboe/trivilauncher/domain/model · high confidence

Introduces Gemini AI assistant integration with app suggestion capabilities

The app now features an integrated Gemini AI assistant that provides concise, context-aware updates and suggests up to three relevant installed apps to reduce phone use friction. This change introduces a new system prompt and default prompt for the AI, configures the Gemini 1.5 Flash model with specific temperature and top-k settings, and implements safety filters for harassment, hate speech, dangerous content, and sexually explicit material. The update also includes a generic Resource class to handle loading, success, and error states for the AI responses, enabling a smoother user experience when fetching notifications, weather, and app usage data.

app/src/main/java/com/aboe/trivilauncher/common · high confidence

Local notification storage and persistence layer

The app now persists received notifications locally using a new Room-based data layer. A NotificationEntity, NotificationDao, and NotificationDatabase have been added to store notification details (title, text, package name, etc.). The NotificationListener service has been updated to capture incoming notifications and save them via the new repository, which also handles automatic cleanup of notifications older than 24 hours.

app/src/main/java/com/aboe/trivilauncher/data/local · high confidence

New bottom navigation bar with Home, Apps, and Gemini screens

A new bottom navigation bar has been added to the app, featuring a persistent bottom bar with a text input field and action buttons that change based on the current screen state. The navigation supports three main destinations: HomeScreen, AppsScreen, and GeminiScreen. The bottom bar includes an input field for Gemini queries, a search field for apps, and circular action buttons for navigation and submission. The implementation includes a NavViewModel to manage screen state and Gemini text, along with reusable UI components like CircleButton and InputTextField.

app/src/main/java/com/aboe/trivilauncher/presentation/nav · high confidence

New domain use cases for app, notifications, weather, and Gemini integration

Added new domain use cases to support the app's core features: GetAppUseCase and GetAppsUseCase for retrieving installed applications; GetNotificationsUseCase and AddNotificationUseCase for managing notification history; GetWeatherForecastUseCase and GetWeatherWidgetUseCase for fetching and displaying weather data; GetUserLocationUseCase for retrieving device location; and GetGeminiPromptUseCase and GetGeminiResponseUseCase for interacting with the Gemini AI assistant. These use cases enable the app to display date, weather, notifications, and AI-generated responses, and to launch suggested apps.

_app/src/main/java/com/aboe/trivilauncher/domain/use\case · high confidence

New home screen layout with AI suggestions and favorites

The home screen now displays the current date and weather conditions at the top. Below that, an AI-generated response from Gemini is shown, including a list of suggested apps that users can launch directly. Additionally, a 'Favourites' section displays a list of user-pinned apps. New UI components introduced include AppPill for displaying app icons and labels, PillLabel for section headers, TypingText for animated text rendering, and WeatherWidget for displaying weather data.

app/src/main/java/com/aboe/trivilauncher/presentation/home/components · high confidence

Behavioural changes

Centralized dependency injection for app, weather, and notification services

The app now uses a centralized Dagger/Hilt module to provide core services, including local notification storage, weather data from OpenWeather, and device location via Google Play Services. This establishes the foundation for features like Gemini prompting and weather display, while also addressing previous logcat spam issues by properly wiring repositories.

app/src/main/java/com/aboe/trivilauncher/di · medium confidence

Replaced default Activity with a custom Application class

The app's entry point has changed from a standard Activity (MainActivity) to a custom Application class (TriviLauncher) that is annotated with Hilt for dependency injection. This indicates a shift in the app's architecture, likely to support background services or launcher-specific initialization rather than a standard UI-driven launch.

app/src/main/java/com/aboe/trivilauncher · medium confidence

Updated app theme colors and typography

The app's visual theme has been updated to use a new color palette (replacing purple/pink tones with brown and yellow shades) and a new serif font family (Noto Serif) for body and title text, changing the overall look and feel of the application.

app/src/main/java/com/aboe/trivilauncher/ui · high confidence

Dependencies

Upgrade Android SDK and add networking, storage, and location dependencies

The app's target and compile SDK levels have been raised to 35. New dependencies have been added to support features such as Gemini prompting, weather API integration, and location services. Specifically, the project now includes Retrofit and OkHttp for HTTP requests, Room for local database storage, Google Play Services for location, and libraries for JSON serialization and navigation. Additionally, the Android Gradle Plugin and several AndroidX libraries have been updated to their latest versions.

(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

Score

  • CAI 50 → 46 (-3.9)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (-0.1)
  • Architecture 98 → 89 (-8.3)
  • Maturity 42 → 43 (+0.6)
  • Readiness 24 → 24 (+0.0)
  • Security 100 → 100 (+0.0)
  • Domain Modelling 100 → 74 (-25.6)

Resolved (6)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (9 lines × 2) (app/src/main/java/com/aboe/trivilauncher/data/remote/dto/forecast/WeatherComp.kt)
  • No exposed public API
  • Test reliability not included
  • single-maintainer — knowledge-concentration (bus factor) risk

New (8)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (12 lines × 2) (app/src/main/java/com/aboe/trivilauncher/data/remote/dto/forecast/WeatherComp.kt)
  • Hotspot: app/src/main/java/com/aboe/trivilauncher/domain/use_case/get_weather_widget/GetWeatherWidgetUseCase.kt (app/src/main/java/com/aboe/trivilauncher/domain/use_case/get_weather_widget/GetWeatherWidgetUseCase.kt)
  • No ADRs found
  • TodoComment (app/src/main/java/com/aboe/trivilauncher/data/local/notifications/service/NotificationListener.kt)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Zatoner/Trivi 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 5f4714d64be4b9766144ef5e266324a4cdc37a49 — 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.