CLAUDE.md
feature/details/CLAUDE.mdCLAUDE.md
Quality
53/100
Scores the file, not the repository.Length
518 words
4 headings · 1 code blocksRepository
17k
— · pushed 5 days agoLast changed
3 days ago
First indexed 3 days ago.1# Details Feature23Repository detail screen — owner, stats, releases with download/install, readme (with translation), per-app install/update flow. Most complex feature.45## Structure67```8feature/details/9├── domain/ # DetailsRepository, TranslationRepository; ReleaseCategory, RepoStats, SupportedLanguage, TranslationResult10├── data/ # impls + ReadmeLocalizationHelper, preprocessMarkdown11└── presentation/12 ├── DetailsViewModel.kt / State / Action / Event / Root13 ├── model/ # DownloadStage, InstallLogItem, LogResult, ShowDowngradeWarning, SupportedLanguages, TranslationState14 ├── components/15 │ ├── AppHeader, ReleaseAssetsPicker, VersionPicker, VersionTypePicker, SmartInstallButton, InspectApkButton, ApkInspectSheet, LanguagePicker, TranslationControls, StatItem16 │ └── sections/ About, Header, Logs, Owner, ReportIssue, Stats, WhatsNew, ReleaseChannel17 ├── states/ErrorState18 └── utils/ # MarkdownImageTransformer, MarkdownUtils, SystemArchitecture, LocalTopbarLiquidState, LogResultAsText19```2021## Navigation2223`GithubStoreGraph.DetailsScreen(repositoryId, owner, repo, isComingFromUpdate, sourceHost)`. By ID or owner+name (deep links use latter; `repositoryId == -1` falls back to owner+name lookup). `sourceHost` non-null routes all `DetailsRepository` calls through `ForgejoClientRegistry` (Codeberg / Forgejo / custom forge).2425## Notes2627- Readme localized via `ReadmeLocalizationHelper`; markdown via `multiplatform-markdown-renderer` + `MarkdownImageTransformer`. Translation via `TranslationRepository` + `LanguagePicker`. `TranslationProvider` enum = `GOOGLE` / `YOUDAO` / `LIBRE_TRANSLATE` / `DEEPL` / `MICROSOFT`.28- Download stages: `DownloadStage` idle→downloading→installing→done. `SmartInstallButton` adapts to install state. Downgrade warning before installing older version.29- Injects (lots): `DetailsRepository`, `TranslationRepository`, `FavouritesRepository`, `StarredRepository`, `InstalledAppsRepository`, `SeenReposRepository`, `TweaksRepository`, `TelemetryRepository`, `ExternalImportRepository`, `AuthenticationState`, `ProfileRepository`, `Downloader`, `Installer`, `PackageMonitor`, `SystemInstallSerializer`, `BrowserHelper`, `ShareManager`, `Platform`, `SyncInstalledAppsUseCase`, `InstallationManager`, `AttestationVerifier`, `DownloadOrchestrator`, `ApkInspector`, `GitHubStoreLogger`. Data layer additionally injects `ForgejoClientRegistry`.30- Android installer paths: Default / Shizuku / Dhizuku / Root. Root via raw `su` (`RootServiceManager`). Dhizuku 14+ retries without installer attribution.31- **Multi-OS picker (E15):** `ReleaseAssetsItemsPicker` toggle flips `TweaksRepository.showAllPlatforms`. ON → assets group by `assetPlatformOf` into `PlatformSectionCard`s with "Your device"/"For transfer" chips. Non-current asset → `OnDownloadForTransfer` → `BrowserHelper.openUrl`.32- **Coachmarks:** APK Inspect button pulse + ReleaseChannel chip Popup. One-shot via `TweaksRepository.get*CoachmarkShown`.33- **Self-owned ✓ badge (E20):** `AppHeader` ✓ next to owner login when `state.isCurrentUserOwner`. Reactive via `combine(profileRepo.getUser(), state.repository.owner.login)`.34- **Skip release (E542):** per-app `skippedReleaseTag` on `InstalledApp`. `SmartInstallButton` suppresses CTA; auto-clears on strictly-newer release.35- **Forgejo / Codeberg branch:** `DetailsRepositoryImpl.getRepositoryByOwnerAndName / getAllReleases / getReadme / getRepoStats / getLatestPublishedRelease` accept `sourceHost: String? = null`. Non-null → `ForgejoApiClient` direct call (no backend mediator). README from `/contents/README.md?ref={branch}` (Forgejo lacks `/readme`); license sniffed from `/contents/LICENSE` via SPDX regex; downloads aggregated by summing asset `download_count`. CRLF release bodies normalized so GFM tables render. Foreign-source `getUserProfile` skipped (GitHub-only). `AppHeader` avatar falls back to `repository.owner.avatarUrl` when profile null.36- **Multi-flavor primary picker (#638):** `pickPrimaryInstalledApp` prefers asset-filter match → `isUpdateAvailable=false` variant → `first()`. Prevents false "Update" CTA when a project ships multiple packages (e.g. generic + Play APK) and only one variant is current.37- **Content width:** `LocalContentWidth` (`COMPACT` 680dp default, `WIDE` 960dp, `EXTRA_WIDE` fills window). Set in `Tweaks → Appearance` (desktop). Outer Box's `Modifier.scrollable(state=listState, reverseDirection=true, enabled = !ANDROID)` forwards mouse-wheel events from empty side gutters to the LazyColumn — gated to non-Android to avoid double scrollable contending with LazyColumn touch.38- **Markdown perf:** Chunked progressive rendering (`splitMarkdownIntoChunks`, ~4000 chars). Pre-processing (theme-aware images + `separateAdjacentImageLinks`) on `Dispatchers.Default`. `onAction` lambda hoisted via `remember`; `MarkdownComponents` memoized; `TranslationState @Immutable`. Together kills download-progress-driven recomp storms.39- **Markdown image link awareness:** `LinkAwareMarkdownImage` walks `ASTNode.parent` for `INLINE_LINK`, makes badge images clickable to outer href. `MarkdownImageTransformer` adds browser-like User-Agent + accept header to bypass CDN hotlink protection on common badge services.40
Also in kurikomi-labs/komi-store
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| kurikomi-labs/komi-storefeature/dev-profile/CLAUDE.md · 17k | CLAUDE.md | arch | 40/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/favourites/CLAUDE.md · 17k | CLAUDE.md | arch | 40/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/home/CLAUDE.md · 17k | CLAUDE.md | arch | 54/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/profile/CLAUDE.md · 17k | CLAUDE.md | arch | 54/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/tweaks/CLAUDE.md · 17k | CLAUDE.md | archmonorepo | 54/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/recently-viewed/CLAUDE.md · 17k | CLAUDE.md | arch | 35/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/search/CLAUDE.md · 17k | CLAUDE.md | arch | 54/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/starred/CLAUDE.md · 17k | CLAUDE.md | arch | 54/100 | 3 days ago | |
| kurikomi-labs/komi-storeAGENTS.md · 17k | AGENTS.md | buildlint-formatstylearch+1 | 97/100 | 3 days ago | |
| kurikomi-labs/komi-storeCLAUDE.md · 17k | CLAUDE.md | buildstylearchgit | 78/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/apps/CLAUDE.md · 17k | CLAUDE.md | arch | 58/100 | 3 days ago | |
| kurikomi-labs/komi-storefeature/auth/CLAUDE.md · 17k | CLAUDE.md | archsecurity | 58/100 | 3 days ago |
Diff against feature/dev-profile/CLAUDE.md Diff against feature/favourites/CLAUDE.md Diff against feature/home/CLAUDE.md Diff against feature/profile/CLAUDE.md Diff against feature/tweaks/CLAUDE.md Diff against feature/recently-viewed/CLAUDE.md Diff against feature/search/CLAUDE.md Diff against feature/starred/CLAUDE.md Diff against AGENTS.md Diff against CLAUDE.md Diff against feature/apps/CLAUDE.md Diff against feature/auth/CLAUDE.md
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| livewire/livewireCLAUDE.md · 24k | CLAUDE.md | setupbuildteststyle+4 | 100/100 | 3 days ago | |
| filamentphp/filamentCLAUDE.md · 32k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| stacklok/toolhiveCLAUDE.md · 2.0k | CLAUDE.md | buildteststylearch+4 | 100/100 | 3 days ago | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 3 days ago | |
| Adit-Jain-srm/NightmareNetCLAUDE.md · 45 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 3 days ago | |
| microsoft/playwrightCLAUDE.md · 94k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.4k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 3 days ago | |
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 3 days ago |
