Skip to content

feat(e11): manual hide controls — long-press to hide repos#587

Merged
rainxchzed merged 12 commits into
mainfrom
feat/e11-hide-repository
May 12, 2026
Merged

feat(e11): manual hide controls — long-press to hide repos#587
rainxchzed merged 12 commits into
mainfrom
feat/e11-hide-repository

Conversation

@rainxchzed
Copy link
Copy Markdown
Member

@rainxchzed rainxchzed commented May 12, 2026

Sprint 2 task E11. Survey #4 — "Hide seen" is too strict; users want manual hide.

What landed:

  • hidden_repos Room table (v17 migration) + DAO + HiddenReposRepository in core/domain + impl in core/data.
  • Long-press on RepositoryCard opens a DropdownMenu with "Hide repository" (VisibilityOff icon). ExpressiveCard extended with optional onLongClick so the existing tap ripple stays intact via combinedClickable.
  • HomeViewModel + SearchViewModel inject HiddenReposRepository, observe hidden IDs, drop already-loaded repos that get hidden so the grid reacts immediately. mapReposToUi / computeVisibleRepos filter forward on subsequent page loads.
  • OnHideRepository / OnUndoHideRepository actions on both VMs persist via repo. Library/Apps screen unaffected — install state still authoritative.
  • 13-locale strings + 1.8.2 what's-new bullet.

Deferred to follow-up:

  • Swipe-to-hide gesture (long-press covers AC Appimage installation #1).
  • Snackbar with Undo on hide — needs SnackbarHostState wiring on Home + Search roots.
  • Tweaks → Storage → Hidden repositories management screen (per brief AC). Hidden repos currently only un-hideable via DB or pending UI.

Compile-verified: :composeApp:compileDebugKotlinAndroid BUILD SUCCESSFUL.

Summary by CodeRabbit

  • New Features

    • Long-press a repo card on Home or Search to hide it; undo via Snackbar.
  • Management

    • New "Hidden repositories" screen to view, unhide single repos or unhide all.
  • Persistence

    • Hidden repos are stored locally and preserved across app updates.
  • Presentation

    • Repository cards open a hide confirmation sheet on long-press.
  • Localization

    • Added hide/hidden/undo and hidden-repos UI strings for AR, BN, ES, FR, HI, IT, JA, KO, PL, RU, TR, ZH.
  • Documentation

    • Updated in-app "What's New" for release 17.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a "hide repository" feature: DB v17 + migration and DAO/entity, domain model & repo interface, repository impl + DI, Compose long-press + hide sheet, Home/Search wiring and filtering, navigation/screen, and localized strings/whatsnew.

Changes

Hide Repository Feature

Layer / File(s) Summary
Database schema snapshot (v17)
core/data/schemas/.../AppDatabase/17.json
Schema JSON for AppDatabase v17 including hidden_repos table and Room setupQueries with identityHash.
Database persistence and migration
core/data/src/androidMain/.../migrations/MIGRATION_16_17.kt, core/data/src/androidMain/.../initDatabase.kt
Adds MIGRATION_16_17 that creates hidden_repos and registers it in initDatabase.
Entity, DAO, AppDatabase wiring
core/data/src/commonMain/.../entities/HiddenRepoEntity.kt, core/data/src/commonMain/.../dao/HiddenRepoDao.kt, core/data/src/commonMain/.../db/AppDatabase.kt
Defines Room HiddenRepoEntity, HiddenRepoDao with Flow queries and suspend ops, and exposes hiddenRepoDao on AppDatabase (version bumped to 17).
Domain contracts
core/domain/src/commonMain/.../model/HiddenRepo.kt, core/domain/src/commonMain/.../repository/HiddenReposRepository.kt
Adds HiddenRepo data model and HiddenReposRepository interface with Flow accessors and suspend hide/unhide/clear methods.
Repository implementation and DI
core/data/src/commonMain/.../repository/HiddenReposRepositoryImpl.kt, core/data/src/commonMain/.../di/SharedModule.kt
Implements HiddenReposRepository, maps entities to domain, and wires Koin bindings for HiddenRepoDao and HiddenReposRepository.
Compose gesture & RepositoryCard UI
core/presentation/src/commonMain/.../ExpressiveCard.kt, core/presentation/src/commonMain/.../RepositoryCard.kt
ExpressiveCard gains onLongClick; RepositoryCard adds onHideClick, shows HideRepositoryBottomSheet on long-press to confirm hide.
Home integration
feature/home/presentation/.../HomeState.kt, HomeAction.kt, HomeViewModel.kt, HomeRoot.kt
Adds hiddenRepoIds to state; HomeAction adds hide/undo; HomeViewModel observes hidden IDs and handles hide/unhide; HomeRoot filters visible repos and wires onHideClick.
Search integration
feature/search/presentation/.../SearchState.kt, SearchAction.kt, SearchViewModel.kt, SearchRoot.kt
Adds hiddenRepoIds to state; SearchAction adds hide/undo; SearchViewModel observes hidden IDs, filters visible repos by hidden+seen logic, and handles hide/unhide; SearchRoot wires callback to RepositoryCard.
Navigation & ViewModel registration
composeApp/.../AppNavigation.kt, composeApp/.../GithubStoreGraph.kt, composeApp/.../ViewModelsModule.kt
Registers HiddenRepositoriesScreen, adds navigation wiring and ViewModel registration for HiddenRepositoriesViewModel.
Hidden Repositories screen (Tweaks)
feature/tweaks/presentation/hidden/*
Adds HiddenRepositoriesRoot composable, state/models, actions/events, and HiddenRepositoriesViewModel with unhide/unhide-all flows.
Localization and whatsnew
core/presentation/src/commonMain/composeResources/values*/strings-*.xml, core/presentation/src/commonMain/composeResources/files/whatsnew/17.json
Adds hide_repository, repository_hidden, and undo_hide strings across locales and adds whatsnew bullet for v17.

Sequence Diagram (high-level hide flow):

sequenceDiagram
  participant UI as RepositoryCard(UI)
  participant VM as HomeViewModel / SearchViewModel
  participant Repo as HiddenReposRepository
  participant DB as Room/HiddenRepoDao
  UI->>VM: OnHideRepository(repo)
  VM->>Repo: hide(repoId, repoName, repoOwner, repoOwnerAvatarUrl)
  Repo->>DB: insert HiddenRepoEntity(...)
  DB-->>Repo: confirm insert
  Repo-->>VM: Flow update (hidden repo ids)
  VM-->>UI: state.hiddenRepoIds updated (UI recomputes visible repos)
Loading

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

"I hop and hide a repo away,
A gentle long-press saves the day,
If you change your mind, just tap undo,
The rabbit brings the view back to you,
Hooray for tidy discovery! (🐇)"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main feature being implemented: manual hide controls via long-press on repository cards.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/e11-hide-repository

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt (1)

14-69: 💤 Low value

Consider extracting common ElevatedCard properties to reduce duplication.

The three branches of the when expression repeat the same colors, shape, and fillMaxWidth() configuration. While the current implementation is clear and correct, you could reduce duplication by extracting shared properties into local variables or using a helper function.

This is a minor maintainability improvement—the existing code functions properly.

♻️ Example refactor
 `@OptIn`(ExperimentalFoundationApi::class)
 `@Composable`
 fun ExpressiveCard(
     modifier: Modifier = Modifier,
     onClick: (() -> Unit)? = null,
     onLongClick: (() -> Unit)? = null,
     content: `@Composable` () -> Unit,
 ) {
+    val cardColors = CardDefaults.elevatedCardColors(
+        containerColor = MaterialTheme.colorScheme.surfaceContainer,
+    )
+    val cardShape = RoundedCornerShape(32.dp)
+    val cardModifier = modifier.fillMaxWidth()
+
     when {
         onClick != null && onLongClick != null -> {
             ElevatedCard(
-                modifier = modifier
-                    .fillMaxWidth()
+                modifier = cardModifier
                     .combinedClickable(
                         onClick = onClick,
                         onLongClick = onLongClick,
                     ),
-                colors = CardDefaults.elevatedCardColors(
-                    containerColor = MaterialTheme.colorScheme.surfaceContainer,
-                ),
-                shape = RoundedCornerShape(32.dp),
+                colors = cardColors,
+                shape = cardShape,
                 content = { content() },
             )
         }
         // ... similar for other branches
     }
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt`
around lines 14 - 69, The ExpressiveCard implementation repeats ElevatedCard
configuration (colors, shape, modifier.fillMaxWidth()) across branches; refactor
by extracting shared values into local vals (e.g., val cardModifier =
modifier.fillMaxWidth(), val cardColors = CardDefaults.elevatedCardColors(...),
val cardShape = RoundedCornerShape(32.dp)) and then call ElevatedCard once in
each branch using those locals while only varying the click-related parameters
(combinedClickable modifier vs onClick vs neither) so duplication is removed but
behavior of ExpressiveCard (onClick/onLongClick handling) remains unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchViewModel.kt`:
- Around line 158-174: observeHiddenRepos currently removes hidden entries from
state.repositories which breaks unhide and is inconsistent with
observeSeenRepos; instead, update observeHiddenRepos to mirror observeSeenRepos
by mapping over current.repositories and toggling each item's hidden flag based
on the collected ids (i.e., set item.isHidden = id in ids) rather than filtering
them out, then update state with the new repositories and hiddenRepoIds so
computeVisibleRepos can handle display/reactivity and OnUndoHideRepository
restores immediately.

---

Nitpick comments:
In
`@core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt`:
- Around line 14-69: The ExpressiveCard implementation repeats ElevatedCard
configuration (colors, shape, modifier.fillMaxWidth()) across branches; refactor
by extracting shared values into local vals (e.g., val cardModifier =
modifier.fillMaxWidth(), val cardColors = CardDefaults.elevatedCardColors(...),
val cardShape = RoundedCornerShape(32.dp)) and then call ElevatedCard once in
each branch using those locals while only varying the click-related parameters
(combinedClickable modifier vs onClick vs neither) so duplication is removed but
behavior of ExpressiveCard (onClick/onLongClick handling) remains unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 973d5b8d-8f89-41ea-8291-045e6c72291f

📥 Commits

Reviewing files that changed from the base of the PR and between 3dadbf1 and f401610.

📒 Files selected for processing (34)
  • core/data/schemas/zed.rainxch.core.data.local.db.AppDatabase/17.json
  • core/data/src/androidMain/kotlin/zed/rainxch/core/data/local/db/initDatabase.kt
  • core/data/src/androidMain/kotlin/zed/rainxch/core/data/local/db/migrations/MIGRATION_16_17.kt
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/di/SharedModule.kt
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/local/db/AppDatabase.kt
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/local/db/dao/HiddenRepoDao.kt
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/local/db/entities/HiddenRepoEntity.kt
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/HiddenReposRepositoryImpl.kt
  • core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/model/HiddenRepo.kt
  • core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/repository/HiddenReposRepository.kt
  • core/presentation/src/commonMain/composeResources/files/whatsnew/17.json
  • core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml
  • core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml
  • core/presentation/src/commonMain/composeResources/values-es/strings-es.xml
  • core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml
  • core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml
  • core/presentation/src/commonMain/composeResources/values-it/strings-it.xml
  • core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml
  • core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml
  • core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml
  • core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml
  • core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml
  • core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml
  • core/presentation/src/commonMain/composeResources/values/strings.xml
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeAction.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeState.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeViewModel.kt
  • feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchAction.kt
  • feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt
  • feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchState.kt
  • feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchViewModel.kt

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 12, 2026

Greptile Summary

  • Introduces long-press-to-hide for repository cards backed by a new hidden_repos Room table (migration 16→17), a HiddenReposRepository layer, and a Hidden Repositories management screen under Tweaks. The data layer is solid: DAO, entity, migration, and schema export are all consistent.
  • Both HomeViewModel and SearchViewModel correctly observe hiddenRepoIds and filter at the visibleRepos level to allow undo without re-fetching, but SearchViewModel still sets totalCount = allRepos.size (including hidden repos), so the "N results found" label over-counts what's actually rendered.
  • Three places in SearchRoot gate on state.isHideSeenEnabled but were not updated for the new manual-hide path: the auto-paginate LaunchedEffect, the "searching for unseen repos" spinner, and the "all results hidden" end-state banner — all three fail to fire/render when manual hide empties visibleRepos without "Hide seen" being enabled, leaving users on a blank screen.

Confidence Score: 3/5

Not safe to merge as-is; multiple P1s leave users on blank screens when manual hide is used without "Hide seen" enabled.

Four P1 findings across SearchRoot (spinner, banner, LaunchedEffect guard) and SearchViewModel (totalCount mismatch), plus the HomeRoot auto-paginate dead-end — all confirmed defects on the new manual-hide path rather than speculative risks. The data layer (migration, DAO, repository) is correct and well-structured. Score is pulled below the P1 ceiling of 4 due to multiple independent issues affecting the same core user flow.

feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt and SearchViewModel.kt require the most attention; HomeRoot.kt needs the auto-paginate guard widened.

Important Files Changed

Filename Overview
feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt Auto-paginate LaunchedEffect and both the spinner/end-state banner guard on isHideSeenEnabled only; manual-hide path leaves an empty grid with no feedback and no auto-load trigger.
feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchViewModel.kt Adds hiddenRepoIds observation and hide/undo actions, but totalCount is set to allRepos.size (all repos, including hidden), creating a count/card mismatch visible in the UI.
feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt Scroll-based auto-load guard checks totalItemsCount > 0, which is zero when manual-hide empties the visible grid, so no new page loads automatically.
feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeViewModel.kt Correctly observes hidden repo IDs and wires OnHideRepository/OnUndoHideRepository actions; filtering deferred to UI layer enables undo without re-fetching.
core/data/src/androidMain/kotlin/zed/rainxch/core/data/local/db/migrations/MIGRATION_16_17.kt Adds hidden_repos table with all required columns; schema matches the Room entity and the exported schema JSON.
core/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/HiddenReposRepositoryImpl.kt Straightforward DAO delegation; getAllHiddenRepoIds() maps to Set for O(1) lookup; hide uses REPLACE conflict strategy which correctly handles re-hides.
feature/tweaks/presentation/src/commonMain/kotlin/zed/rainxch/tweaks/presentation/hidden/HiddenRepositoriesViewModel.kt Cleanly collects the hidden-repos Flow, maps to UI models, and fires success/failure events; correctly snapshots repo name before deletion for the snackbar.
feature/tweaks/presentation/src/commonMain/kotlin/zed/rainxch/tweaks/presentation/hidden/HiddenRepositoriesRoot.kt Management screen with loading, empty, and list states; correctly wires snackbar for unhide/unhide-all/failure events.
feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchState.kt Adds hiddenRepoIds: Set and visibleRepos to state; visibleRepos is computed in the ViewModel's .map operator before stateIn, ensuring consistency.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User long-presses RepositoryCard] --> B[DropdownMenu shown]
    B --> C[OnHideRepository action]
    C --> D[HiddenReposRepository.hide]
    D --> E[Room: INSERT INTO hidden_repos]
    E --> F[getAllHiddenRepoIds Flow emits]
    F --> G[HomeVM / SearchVM: hiddenRepoIds updated]
    G --> H{computeVisibleRepos}
    H -->|repo.id in hiddenRepoIds| I[Filtered out of visibleRepos]
    H -->|repo.id not hidden| J[Shown in grid]
    I --> K[Grid re-renders — card disappears]
    subgraph SearchRoot issues
        L[LaunchedEffect: auto-paginate] -->|gates on isHideSeenEnabled only| M[Never fires for manual-hide path]
        N[Spinner: searching for unseen repos] -->|gates on isHideSeenEnabled only| O[Never shown for manual-hide path]
        P[Banner: all results hidden] -->|gates on isHideSeenEnabled only| Q[Never shown — blank screen]
    end
    subgraph Management screen
        R[Tweaks > Hidden Repositories]
        R --> S[HiddenRepositoriesViewModel observes getAllHiddenRepos]
        S --> T[OnUnhide / OnUnhideAll actions]
        T --> U[HiddenReposRepository.unhide / clearAll]
        U --> V[Room: DELETE FROM hidden_repos]
        V --> F
    end
Loading

Comments Outside Diff (1)

  1. feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt, line 594-651 (link)

    P1 Spinner and "all hidden" banner miss the manual-hide path

    Both the "searching for unseen repos" spinner (line 594) and the "all results hidden" end-state banner (line 627) still gate exclusively on state.isHideSeenEnabled. When a user manually hides repos without enabling "Hide seen", visibleRepos can be empty while isHideSeenEnabled is false — meaning neither block renders. The user is left staring at a blank grid below a "N results found" label with no feedback and no way to recover from the Search screen.

    The fix mirrors what is needed for the LaunchedEffect guard: add || state.hiddenRepoIds.isNotEmpty() to both conditions.

Reviews (5): Last reviewed commit: "feat(presentation): contextual actions b..." | Re-trigger Greptile

@rainxchzed rainxchzed force-pushed the feat/e11-hide-repository branch from 7085119 to e5f359b Compare May 12, 2026 16:30
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeViewModel.kt`:
- Around line 526-542: The HomeViewModel currently launches hiding/unhiding
calls (HomeAction.OnHideRepository and HomeAction.OnUndoHideRepository) without
handling exceptions; wrap the hiddenReposRepository.hide(...) and
hiddenReposRepository.unhide(...) calls inside try/catch blocks within the
viewModelScope.launch in HomeViewModel so any thrown exception is caught, log or
surface the error (e.g., via a logger or a UI error state update) and ensure you
update or rollback UI state predictably on failure; specifically modify the
handling for HomeAction.OnHideRepository and HomeAction.OnUndoHideRepository to
catch Throwable around hiddenReposRepository.hide and
hiddenReposRepository.unhide and perform appropriate error logging/state
emission instead of letting the exception propagate.

In
`@feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchViewModel.kt`:
- Around line 747-763: SearchViewModel currently launches database writes in the
viewModelScope for SearchAction.OnHideRepository (calling
hiddenReposRepository.hide) and SearchAction.OnUndoHideRepository (calling
hiddenReposRepository.unhide) without error handling; wrap each repository call
inside the existing viewModelScope.launch in a try-catch block that catches
Exception, then handle failures by logging the error and emitting an error
event/state (or calling the existing error reporting mechanism) so coroutine
exceptions are not uncaught and the UI can react to failures.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 467639a4-e7c3-499e-a3fe-0c791dce65bb

📥 Commits

Reviewing files that changed from the base of the PR and between f401610 and e5f359b.

📒 Files selected for processing (5)
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt
  • feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeViewModel.kt
  • feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchViewModel.kt
🚧 Files skipped from review as they are similar to previous changes (2)
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/ExpressiveCard.kt
  • core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt

@rainxchzed rainxchzed merged commit 0d403f4 into main May 12, 2026
1 check passed
@rainxchzed rainxchzed deleted the feat/e11-hide-repository branch May 12, 2026 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant