the signals and their derived score are provisional and subject to change.
validate manually before sharing.
453a20c3cd5e275cc9079771b98b4aaf80db6956020c9fb711cc4 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>06264f3fe02e5 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>c2af57372a875 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>465cc55672e45 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>c55888eee8036 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>9c55034ad6306 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>1b904d9232816 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>034384b157ec6 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>c097785d66086 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>9914acf701506 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>d54c1b1ceaca6 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>1f74437828786 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>5a2b1d9f106d6 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>30ac22726fbc6 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>3ff72eec63106 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>d0b485d19b947 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>f5f604510eaa8 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>79eb63bcd05e8 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>3afbdfc445738 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>49cd2c1378918 months agoCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8a139dd03fc69 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>9bf575d3e38010 months agoCo-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com># Komi Store
Open-source app store for apps released on GitHub, Codeberg and other Forgejo forges. Kotlin Multiplatform and Compose Multiplatform: one codebase for Android (min API 26) and Desktop (Windows, macOS, Linux). Package `zed.rainxch.githubstore`.
## Map
- `composeApp/`: shared app code and the Desktop entry point: navigation (`GithubStoreGraph`, `AppNavigation`), DI wiring (`ViewModelsModule`, `initKoin`)
- `androidApp/`: the Android application: `MainActivity`, `GithubStoreApp`, manifest, reso# Apps Feature
Installed-apps manager. Lists apps tracked by Komi Store, launches them, checks and installs updates, links apps installed elsewhere to a repo. In the Android bottom nav (label "Library"). Android only: Desktop hands the downloaded installer to the OS and never records an installed app, so the Desktop sidebar and menu bar leave Library out.
## Structure
```
feature/apps/
├── domain/ # AppsRepository, GithubRepoInfo, ImportResult / ImportFormat
├── data/ # AppsRepositoryIm# Search Feature
Repo search with source / platform / language / sort filters. Paginated results.
## Structure
```text
feature/search/
domain/ # package zed.rainxch.domain (not zed.rainxch.search.domain): SearchRepository, SearchHistoryRepository; SearchSource, ProgrammingLanguage, SortBy, SortOrder, ExploreResult
data/ # SearchRepositoryImpl, SearchHistoryRepositoryImpl, dto/, di
presentation/
SearchViewModel / State / Action / Event / Root
model/ + mappers/ # UI models (SearchSourc# Auth Feature
Three GitHub sign-in paths, picked per session: **web OAuth + PKCE + handoff** (primary), **device flow** (fallback), **Personal Access Token paste** (last resort). Works on Android + Desktop.
## Structure
```text
feature/auth/
domain/repository/ # AuthenticationRepository + AuthPath, DeviceFlowStart, PollOutcome, DevicePollResult, WebAuthRegistration, AuthException, PatRejectedException / RejectedKind
data/
crypto/PkceGenerator.kt # SHA-256 PKCE triplet (stat# Details Feature
Repository detail screen: owner, stats, releases with download/install, readme (with translation), per-app install/update flow. Plus full-README, release-notes and markdown-viewer sub-screens. Most complex feature.
## Structure
```text
feature/details/
domain/ # DetailsRepository, TranslationRepository, AttestationVerifier, InstallationManager
data/ # impls; translation/ has one Translator per TranslationProvider; ReadmeLocalizationHelper, preprocessMarkdown
pr# Favourites Feature
Local saved favourites view, plus "Import stars" to favourite repos from any GitHub user's public stars. All code is in `presentation/` (the `domain/` and `data/` modules are empty); it uses `FavouritesRepository` from `core/domain` directly.
## Structure
```
feature/favourites/presentation/
├── FavouritesViewModel / State / Action / Root
├── model/ # FavouriteRepository (UI model), FavouritesSortRule
├── mappers/FavouriteRepositoryMapper
├── components# Profile Feature
Account hub: signed-in user card (or sign-in prompt), links to Stars / Favourites / Recently viewed, What's new, Announcements, Tweaks, About, and logout. **Settings live in `feature/tweaks/`**; this module is narrow on purpose. Presentation-only; the user comes from core `UserSessionRepository`.
## Structure
```
feature/profile/presentation/
├── ProfileViewModel / State / Action / Event / Root
├── components/ # ProfileSections, LogoutDialog
├── announcements/ #@AGENTS.md
## Claude Code
- Run `/verify` before calling a change done; it runs the same checks as CI.
- `feature/<name>/CLAUDE.md` files load when you work in that folder. Update the one you touch in the same change.
# Repo Pages Feature
GitHub repo sub-pages opened from Details: issues list (filter, paging, new issue), issue detail (comments, thumbs-up reactions), security (advisories + SECURITY.md), pull requests.
## Structure
```text
feature/repo-pages/
domain/ # RepoPagesRepository (every call returns Result<T>) + models
data/ # RepoPagesRepositoryImpl, dto/, mappers/RepoPagesMappers, di (repoPagesModule)
presentation/
issues/ issuedetail/ security/ pulls/ # XRoot + XViewModel +# Starred Feature
Locally cached view of the signed-in user's GitHub stars. All code is in `presentation/` (the `domain/` and `data/` modules are empty); it uses `StarredRepository` from `core/domain` directly.
## Structure
```
feature/starred/presentation/
├── StarredReposViewModel / State / Action / Root
├── model/ # StarredRepositoryUi, StarredSortRule
├── mappers/StarredRepoToUiMapper
└── components/StarredRepositoryItem
```
## Deps
- `StarredRepository`, `FavouritesR# Recently Viewed Feature
Local "recently viewed" history. **Presentation-only**, backed by `SeenReposRepository`, the same table that drives the "Hide seen" filter on Home / Search / Feed.
## Structure
```
feature/recently-viewed/presentation/
├── RecentlyViewedViewModel / State / Action / Root
├── model/RecentlyViewedRepo, mappers/RecentlyViewedRepoMapper
└── components/RecentlyViewedItem
```
## Navigation
`GithubStoreGraph.RecentlyViewedScreen`.
## Notes
- Rows come from `SeenRep# Tweaks Feature
Single home for app-level settings: appearance, language, proxy, GitHub mirror, custom forges, translation, installer choice (Default / Shizuku / Dhizuku / Root / Third-party), update checks, seen / hidden / skipped lists, access tokens, feedback, plus the About and Licenses screens. Presentation-only module.
## Structure
```
feature/tweaks/presentation/
├── TweaksViewModel / State / Action / Event / Root, RestartApp (expect/actual)
├── components/
│ ├── sections/ # Dev Profile Feature
GitHub user / org profile view: avatar, bio, stats, contribution calendar, and their repos with search / filter / sort.
## Structure
```
feature/dev-profile/
├── domain/ # DeveloperProfileRepository; DeveloperProfile, DeveloperRepository, ContributionCalendar / ContributionDay, RepoFilterType, RepoSortType
├── data/ # impl + dto + mappers + di
└── presentation/
├── DeveloperProfileViewModel / State / Action / Root
└── components/ ProfileI# Home Feature
Top Charts: Trending / Releases / Popular tabs (`ChartTab`) over backend category lists, with installed / update / favourite / starred / seen badges. Also holds the category list screen (`categorylist/`).
## Structure
```
feature/home/
├── domain/ # HomeRepository + HomeCategory (TRENDING / HOT_RELEASE / MOST_POPULAR), TopicCategory
├── data/ # HomeRepositoryImpl, CachedRepositoriesDataSource (backend + offline mirror, 1h in-memory cache), dto, mappers, di
└── pre# Feed Feature
Explore screen: the backend's repo feed, filtered by platform and category, with installed / update / favourite / starred / seen badges. Infinite scroll.
## Structure
```
feature/feed/
├── domain/ # FeedRepository, FeedPage (items, page, hasMore, rotation, fromCache, isOffline)
├── data/ # FeedRepositoryImpl + di (feedModule)
└── presentation/
├── FeedViewModel / State / Action / Event / Root
├── components/ FeedPlatformBar (unused)
└─none