docs: refresh CLAUDE.md files for 1.8.2 state#593
Conversation
WalkthroughUpdates app metadata to 1.8.2 and adds base-name stem extraction to avoid auto-updating sibling assets; integrates stem-based filtering into InstalledAppsRepository auto-pick. Broad documentation updates add a Tweaks feature, reshuffle profile/settings responsibilities, and expand per-feature CLAUDE docs and release notes. ChangesDocumentation and Sibling App Detection Enhancement
Estimated code review effortπ― 3 (Moderate) | β±οΈ ~20 minutes Possibly related PRs
Poem
π₯ Pre-merge checks | β 4 | β 1β Failed checks (1 warning)
β Passed checks (4 passed)
βοΈ Tip: You can configure your own custom pre-merge checks in the settings. β¨ Finishing Touchesπ§ͺ Generate unit tests (beta)
Tip π¬ Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. π Get started 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. Comment |
Greptile SummaryThis PR brings all
Confidence Score: 5/5Safe to merge β the only code changes are an additive bug fix with a well-guarded fallback, and a what's-new entry; the rest is documentation. The bug fix is narrow and conservative: when no stem match is found the code falls back to the existing pool, so a false negative in stem extraction cannot strand an update. The new extractBaseStem logic mirrors the already-tested extractTokens n-gram pass. Documentation changes carry no runtime risk. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["resolveRelease(installedAssetName)"] --> B["extractBaseStem(installedAssetName)"]
B --> C{stem empty?}
C -- yes --> E["use full filterByPackageFlavor pool"]
C -- no --> D["filter pool: extractBaseStem(asset.name) == installedStem"]
D --> F{any matches?}
F -- yes --> G["use matching subset"]
F -- no --> E
E --> H["choosePrimaryAsset(autoPickPool)"]
G --> H
H --> I["fingerprintMatch ?? positionMatch ?? primary"]
Reviews (4): Last reviewed commit: "chore: add Approach section to CLAUDE.md..." | Re-trigger Greptile |
| /** | ||
| * `1`, `10`, `1.0.0`, `v2.0.1`, `2024.04.10`, `1.0-rc1`, `beta3` β | ||
| * common patterns used in release filenames to encode the version. | ||
| * Conservative on purpose: false positives here just lose a stem | ||
| * character; false negatives would let a numeric variant leak into | ||
| * the stem and break the sibling-app detection. | ||
| */ |
There was a problem hiding this comment.
The KDoc examples include
1.0-rc1 and beta3, implying the function recognises those patterns. After tokenisation, rc1 and beta3 are single tokens that don't satisfy either branch (all { it.isDigit() } or startsWith("v") && rest.all { it.isDigit() }), so they survive into the stem. A filename like AppA-1.0-rc1.apk produces stem "apparc1" while AppA-2.0.apk produces "appa" β no match, triggering the fallback pool (correct behaviour, but the doc implies it was handled). Removing 1.0-rc1 and beta3 from the examples aligns the doc with the conservative implementation.
| /** | |
| * `1`, `10`, `1.0.0`, `v2.0.1`, `2024.04.10`, `1.0-rc1`, `beta3` β | |
| * common patterns used in release filenames to encode the version. | |
| * Conservative on purpose: false positives here just lose a stem | |
| * character; false negatives would let a numeric variant leak into | |
| * the stem and break the sibling-app detection. | |
| */ | |
| /** | |
| * `1`, `10`, `1.0.0`, `v2.0.1`, `2024.04.10` β | |
| * common patterns used in release filenames to encode the version. | |
| * Conservative on purpose: false positives here just lose a stem | |
| * character; false negatives (e.g. `rc1`, `beta3` tokens after | |
| * tokenisation) would let a non-numeric variant leak into the stem β | |
| * the caller's pool fallback handles those cases gracefully. | |
| */ |
| /** | ||
| * Extracts the **base-name stem** of an asset β the lowercased, | ||
| * separator-stripped concatenation of every token that isn't a | ||
| * version-like number, an arch token, or a flavor token. Used to | ||
| * detect "sibling app in the same repo" cases where two releases | ||
| * ship `AppA-1.10.apk` and `AppB-2.20.apk` and the auto-picker | ||
| * would otherwise swap one for the other based on numeric version | ||
| * alone (issue #591). | ||
| * | ||
| * `AppA-1.10.apk` β `"appa"` | ||
| * `AppB-2.20.apk` β `"appb"` | ||
| * `app-arm64-v8a-1.10.apk` and `app-x86_64-1.10.apk` β both `"app"` | ||
| * `app-1.0.apk` and `app-fdroid-1.0.apk` β both `"app"` | ||
| * | ||
| * Returns an empty string when stripping leaves nothing behind | ||
| * (release ships only a versioned filename like `2.0.apk`). Callers | ||
| * treat empty as "no stem signal β don't filter". | ||
| */ | ||
| fun extractBaseStem(assetName: String): String { |
There was a problem hiding this comment.
extractBaseStem (and isVersionLikeToken) were inserted immediately after the closing */ of deriveGlob's KDoc block, placing them between the doc comment and the fun deriveGlob(...) declaration at line 332. As a result deriveGlob now has no KDoc attached (the floating comment above extractBaseStem's own block is not attributed to it), and IDEs will show deriveGlob as undocumented. Moving extractBaseStem + isVersionLikeToken to before the deriveGlob KDoc block restores the association.
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and canβt be posted inline due to platform limitations.
β οΈ Outside diff range comments (1)
feature/profile/CLAUDE.md (1)
85-90:β οΈ Potential issue | π‘ Minor | β‘ Quick winResolve scope contradiction inside this file.
These lines say settings moved to
feature/tweaks/, but the Module Structure andProfileStatesections still describe profile-owned settings artifacts. Please align those sections so ownership is unambiguous.π€ 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 `@feature/profile/CLAUDE.md` around lines 85 - 90, The document currently contradicts itself by saying "Settings moved out" to feature/tweaks while the Module Structure and ProfileState sections still list profile-owned settings; update those sections so they no longer claim ownership of appearance/installer/proxy/telemetry/cache/hidden lists/mirror/feedback settings: either remove those settings from the Module Structure and ProfileState descriptions or explicitly note they are delegated to feature/tweaks (and reference the feature name) and keep only ProfileRepository, Platform, ProfileViewModel, and cached getUser() details (e.g., CacheManager `profile:me`) as profile-owned; ensure the wording is consistent across Module Structure, ProfileState and any bullets mentioning Settings moved out.
π€ 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 `@CLAUDE.md`:
- Line 165: The CLAUDE.md entry exposes a concrete secret value for
SIGNPATH_ORGANIZATION_ID; remove/redact that literal and document only the
variable name and where it is configured. Edit the Windows installer signing
paragraph (references: .github/workflows/build-desktop-platforms.yml, job name
sign-windows, variables SIGNPATH_API_TOKEN, SIGNPATH_ORGANIZATION_ID,
SIGNPATH_SIGNING_POLICY_SLUG) to replace the hard-coded GUID with a placeholder
or omit the value, e.g. keep "SIGNPATH_ORGANIZATION_ID (secret)" and mention it
is set in the CI secret store, and ensure no concrete secret values remain in
the text.
In
`@core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.kt`:
- Around line 325-330: The current isVersionLikeToken(token: String) only
recognizes pure digits and v+digits, so qualifier counters like "rc1" or "beta3"
are treated as stem content; update isVersionLikeToken to also recognize and
return true for tokens that combine alphabetical qualifiers with numeric
counters (e.g. "rc1", "beta3", "alpha2" and optionally with a leading 'v', e.g.
"vrc1") by adding a regex/conditional branch that matches patterns like optional
leading 'v' plus letters+digits (and optionally digits+letters if you want to be
liberal), keeping the existing digit and v+digit checks and using the function
name isVersionLikeToken to locate and replace the logic.
In `@feature/recently-viewed/CLAUDE.md`:
- Line 9: The fenced code block in CLAUDE.md is missing a language identifier;
locate the code fence that starts with ``` immediately before the directory tree
(the block containing "feature/recently-viewed/" and the list of files) and
change the opening fence to include a language identifier (e.g., ```text) so it
reads ```text while keeping the closing ``` unchanged, which will satisfy the
MD040 lint rule.
In `@feature/tweaks/CLAUDE.md`:
- Around line 9-28: Update the fenced code block in CLAUDE.md that shows the
feature/tweaks/ presentation tree to include a language tag (e.g., change the
opening ``` to ```text) so markdownlint MD040 is satisfied; locate the
triple-backtick block containing the directory tree and add the language marker
while keeping the block contents unchanged.
---
Outside diff comments:
In `@feature/profile/CLAUDE.md`:
- Around line 85-90: The document currently contradicts itself by saying
"Settings moved out" to feature/tweaks while the Module Structure and
ProfileState sections still list profile-owned settings; update those sections
so they no longer claim ownership of
appearance/installer/proxy/telemetry/cache/hidden lists/mirror/feedback
settings: either remove those settings from the Module Structure and
ProfileState descriptions or explicitly note they are delegated to
feature/tweaks (and reference the feature name) and keep only ProfileRepository,
Platform, ProfileViewModel, and cached getUser() details (e.g., CacheManager
`profile:me`) as profile-owned; ensure the wording is consistent across Module
Structure, ProfileState and any bullets mentioning Settings moved out.
πͺ 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: aa50be6e-c6dc-47a3-a1e0-0fd871760074
π Files selected for processing (14)
CLAUDE.mdcore/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/InstalledAppsRepositoryImpl.ktcore/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.ktcore/presentation/src/commonMain/composeResources/files/whatsnew/17.jsonfeature/apps/CLAUDE.mdfeature/auth/CLAUDE.mdfeature/details/CLAUDE.mdfeature/favourites/CLAUDE.mdfeature/home/CLAUDE.mdfeature/profile/CLAUDE.mdfeature/recently-viewed/CLAUDE.mdfeature/search/CLAUDE.mdfeature/starred/CLAUDE.mdfeature/tweaks/CLAUDE.md
| private fun isVersionLikeToken(token: String): Boolean { | ||
| if (token.isEmpty()) return false | ||
| if (token.all { it.isDigit() }) return true | ||
| if (token.startsWith("v") && token.drop(1).all { it.isDigit() }) return true | ||
| return false | ||
| } |
There was a problem hiding this comment.
Broaden version-token stripping to keep stems stable across prerelease bumps.
At Line 325, isVersionLikeToken() only strips numeric and v-numeric tokens. Qualifier counters like rc1/beta3 leak into stems, so names like AppA-1.0-rc1.apk β AppA-1.0-rc2.apk no longer share a stem and can bypass sibling filtering.
π‘ Suggested fix
+ private val QUALIFIER_VERSION_TOKEN =
+ Regex("""^(alpha|beta|rc|pre|preview)\d+$""")
private fun isVersionLikeToken(token: String): Boolean {
- if (token.isEmpty()) return false
- if (token.all { it.isDigit() }) return true
- if (token.startsWith("v") && token.drop(1).all { it.isDigit() }) return true
+ if (token.isEmpty()) return false
+ val t = token.lowercase()
+ if (t.all { it.isDigit() }) return true
+ if (t.startsWith("v") && t.length > 1 && t.drop(1).all { it.isDigit() }) return true
+ if (QUALIFIER_VERSION_TOKEN.matches(t)) return true
return false
}π€ 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/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.kt`
around lines 325 - 330, The current isVersionLikeToken(token: String) only
recognizes pure digits and v+digits, so qualifier counters like "rc1" or "beta3"
are treated as stem content; update isVersionLikeToken to also recognize and
return true for tokens that combine alphabetical qualifiers with numeric
counters (e.g. "rc1", "beta3", "alpha2" and optionally with a leading 'v', e.g.
"vrc1") by adding a regex/conditional branch that matches patterns like optional
leading 'v' plus letters+digits (and optionally digits+letters if you want to be
liberal), keeping the existing digit and v+digit checks and using the function
name isVersionLikeToken to locate and replace the logic.
|
|
||
| ## Module Structure | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Add a language identifier to the fenced code block.
Markdown lint flags this fence as missing language (MD040).
Proposed fix
-```
+```text
feature/recently-viewed/
βββ presentation/
βββ RecentlyViewedViewModel.kt # Observes seen-repos, exposes UI list
@@
-```
+```π§° Tools
πͺ markdownlint-cli2 (0.22.1)
[warning] 9-9: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
π€ 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 `@feature/recently-viewed/CLAUDE.md` at line 9, The fenced code block in
CLAUDE.md is missing a language identifier; locate the code fence that starts
with ``` immediately before the directory tree (the block containing
"feature/recently-viewed/" and the list of files) and change the opening fence
to include a language identifier (e.g., ```text) so it reads ```text while
keeping the closing ``` unchanged, which will satisfy the MD040 lint rule.
There was a problem hiding this comment.
Actionable comments posted: 3
β»οΈ Duplicate comments (1)
CLAUDE.md (1)
85-85:β οΈ Potential issue | π Major | β‘ Quick winRedact concrete secret-like value in SignPath config docs.
SIGNPATH_ORGANIZATION_IDis documented with a concrete value fragment. Keep only the variable name and where it is configured (CI secret/variable store).Suggested minimal doc fix
-- **Windows installer signing (SignPath Foundation):** CI workflow `.github/workflows/build-desktop-platforms.yml` job `sign-windows` after every push to `generate-installers` branch. Action pinned to commit SHA (not `@v2`). Secrets: `SIGNPATH_API_TOKEN`, `SIGNPATH_ORGANIZATION_ID` (`1ecf111e-...`). Variable `SIGNPATH_SIGNING_POLICY_SLUG` = `test-signing` until prod cert issued; flip to `release-signing`. Project slug `GitHub-Store`, artifact config slug `initial`. Unsigned artifact deleted post-sign; only `windows-installers-signed` reaches the draft release. +- **Windows installer signing (SignPath Foundation):** CI workflow `.github/workflows/build-desktop-platforms.yml` job `sign-windows` after every push to `generate-installers` branch. Action pinned to commit SHA (not `@v2`). Secrets: `SIGNPATH_API_TOKEN`, `SIGNPATH_ORGANIZATION_ID` (set in CI secrets). Variable `SIGNPATH_SIGNING_POLICY_SLUG` = `test-signing` until prod cert issued; flip to `release-signing`. Project slug `GitHub-Store`, artifact config slug `initial`. Unsigned artifact deleted post-sign; only `windows-installers-signed` reaches the draft release.π€ 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 `@CLAUDE.md` at line 85, Remove the concrete GUID fragment shown for SIGNPATH_ORGANIZATION_ID in the CLAUDE.md SignPath config section and replace it with only the variable name and where it should be configured (e.g., CI secret/variable store); locate the text referring to the SignPath config (references to .github/workflows/build-desktop-platforms.yml and job name sign-windows) and redact the example value so only SIGNPATH_ORGANIZATION_ID is shown with an instruction to set it as a secret.
π§Ή Nitpick comments (7)
CLAUDE.md (1)
20-20: β‘ Quick winAdd a language tag to the fenced structure block.
Use
```textfor the tree block to satisfy MD040 and keep docs lint-clean.π€ 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 `@CLAUDE.md` at line 20, The fenced tree block in CLAUDE.md is missing a language tag causing MD040; update the opening fence from ``` to ```text so the block is marked as plain text (e.g., change the triple-backtick that starts the tree block to ```text) to satisfy the linter and keep docs lint-clean.feature/apps/CLAUDE.md (1)
7-7: β‘ Quick winAdd
textlanguage tag to the structure code fence.π€ 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 `@feature/apps/CLAUDE.md` at line 7, The code fence in CLAUDE.md is missing a language tag; update the triple-backtick fence that wraps the "structure" example to use the text language tag (change ``` to ```text) so the block is marked as plain text and renders correctly.feature/profile/CLAUDE.md (1)
7-7: β‘ Quick winAdd a language label to the structure code fence.
Please mark this fence as
textto satisfy markdownlint MD040.π€ 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 `@feature/profile/CLAUDE.md` at line 7, The fenced code block in CLAUDE.md should include a language label to satisfy markdownlint MD040; edit the code fence around the example (the triple backticks block at the current content) and add the label "text" immediately after the opening ``` so it reads ```text, leaving the block contents unchanged.feature/details/CLAUDE.md (1)
7-7: β‘ Quick winAdd a language marker (
text) to this fenced code block.π€ 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 `@feature/details/CLAUDE.md` at line 7, The fenced code block currently uses plain backticks (```) with no language hint; update that block delimiter to include the language marker by replacing the opening fence from ``` to ```text so the code block in CLAUDE.md is explicitly marked as plain text.feature/auth/CLAUDE.md (1)
7-7: β‘ Quick winSpecify a language for the fenced structure block (
text).π€ 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 `@feature/auth/CLAUDE.md` at line 7, The fenced code block in CLAUDE.md is missing a language tag; update the opening triple-backtick fence for the structure block to include the language identifier (e.g., "text") so the fenced block is declared as a text block; locate the triple-backtick fence in CLAUDE.md around the structure example and add the language specifier to the opening fence.feature/home/CLAUDE.md (1)
7-7: β‘ Quick winLabel the fenced tree block with a language (
text).This keeps the doc compliant with markdownlint MD040.
π€ 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 `@feature/home/CLAUDE.md` at line 7, The fenced tree block in CLAUDE.md is missing a language label; update the opening triple-backtick for that block (the ``` fence) to include the language identifier text (i.e., change ``` to ```text) so the Markdown lint rule MD040 is satisfied and the block is treated as plain text.feature/dev-profile/CLAUDE.md (1)
7-7: β‘ Quick winUse a language tag on the structure fence (
text).π€ 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 `@feature/dev-profile/CLAUDE.md` at line 7, The fenced block ending with ``` is missing a language tag; change the code fence to include the text language tag by using ```text for the opening fence (and keep the closing ```), so the structure fence is explicitly labeled as text.
π€ 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/favourites/CLAUDE.md`:
- Around line 7-13: The fenced code block in CLAUDE.md is missing a language tag
causing markdownlint MD040; update the opening fence from ``` to a
language-tagged fence such as ```text (or ```bash/```md as appropriate) so the
block is recognized as code/text and the linter warning is resolved β edit the
fenced block that contains the directory tree under the feature/favourites
presentation listing.
In `@feature/search/CLAUDE.md`:
- Around line 7-14: The markdown code fence for the directory tree in
feature/search/CLAUDE.md lacks a language tag (violates MD040); update the
opening fence from ``` to include a language such as ```text (or ```bash) so the
block becomes ```text and preserves the tree formattingβmodify the fenced block
that contains the "feature/search/" directory listing to include the language
tag.
In `@feature/starred/CLAUDE.md`:
- Around line 7-14: The fenced code block in feature/starred/CLAUDE.md (the
directory tree snippet under feature/starred/presentation/) is unlabeled; add a
language identifier "text" to the opening triple backticks so it reads ```text
to satisfy MD040; update the fenced block that contains the lines starting with
"feature/starred/presentation/" and the list items (StarredReposViewModel,
model/StarredRepositoryUi, mappers/StarredRepoToUiMapper, utils/TimeFormatUtils,
components/StarredRepositoryItem) to use the labeled fence.
---
Duplicate comments:
In `@CLAUDE.md`:
- Line 85: Remove the concrete GUID fragment shown for SIGNPATH_ORGANIZATION_ID
in the CLAUDE.md SignPath config section and replace it with only the variable
name and where it should be configured (e.g., CI secret/variable store); locate
the text referring to the SignPath config (references to
.github/workflows/build-desktop-platforms.yml and job name sign-windows) and
redact the example value so only SIGNPATH_ORGANIZATION_ID is shown with an
instruction to set it as a secret.
---
Nitpick comments:
In `@CLAUDE.md`:
- Line 20: The fenced tree block in CLAUDE.md is missing a language tag causing
MD040; update the opening fence from ``` to ```text so the block is marked as
plain text (e.g., change the triple-backtick that starts the tree block to
```text) to satisfy the linter and keep docs lint-clean.
In `@feature/apps/CLAUDE.md`:
- Line 7: The code fence in CLAUDE.md is missing a language tag; update the
triple-backtick fence that wraps the "structure" example to use the text
language tag (change ``` to ```text) so the block is marked as plain text and
renders correctly.
In `@feature/auth/CLAUDE.md`:
- Line 7: The fenced code block in CLAUDE.md is missing a language tag; update
the opening triple-backtick fence for the structure block to include the
language identifier (e.g., "text") so the fenced block is declared as a text
block; locate the triple-backtick fence in CLAUDE.md around the structure
example and add the language specifier to the opening fence.
In `@feature/details/CLAUDE.md`:
- Line 7: The fenced code block currently uses plain backticks (```) with no
language hint; update that block delimiter to include the language marker by
replacing the opening fence from ``` to ```text so the code block in CLAUDE.md
is explicitly marked as plain text.
In `@feature/dev-profile/CLAUDE.md`:
- Line 7: The fenced block ending with ``` is missing a language tag; change the
code fence to include the text language tag by using ```text for the opening
fence (and keep the closing ```), so the structure fence is explicitly labeled
as text.
In `@feature/home/CLAUDE.md`:
- Line 7: The fenced tree block in CLAUDE.md is missing a language label; update
the opening triple-backtick for that block (the ``` fence) to include the
language identifier text (i.e., change ``` to ```text) so the Markdown lint rule
MD040 is satisfied and the block is treated as plain text.
In `@feature/profile/CLAUDE.md`:
- Line 7: The fenced code block in CLAUDE.md should include a language label to
satisfy markdownlint MD040; edit the code fence around the example (the triple
backticks block at the current content) and add the label "text" immediately
after the opening ``` so it reads ```text, leaving the block contents 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: f03c26ea-8764-4b1f-a532-c5441b74d8d6
π Files selected for processing (12)
CLAUDE.mdfeature/apps/CLAUDE.mdfeature/auth/CLAUDE.mdfeature/details/CLAUDE.mdfeature/dev-profile/CLAUDE.mdfeature/favourites/CLAUDE.mdfeature/home/CLAUDE.mdfeature/profile/CLAUDE.mdfeature/recently-viewed/CLAUDE.mdfeature/search/CLAUDE.mdfeature/starred/CLAUDE.mdfeature/tweaks/CLAUDE.md
| ``` | ||
| feature/favourites/ | ||
| βββ presentation/ | ||
| βββ FavouritesViewModel.kt # Observes favourites, handles remove | ||
| βββ FavouritesState.kt # favourites list, loading | ||
| βββ FavouritesAction.kt # RemoveFavourite, click actions | ||
| βββ FavouritesRoot.kt # Main composable (list of favourites) | ||
| βββ model/FavouriteRepository.kt # UI model for display | ||
| βββ mappers/FavouriteRepositoryMapper.kt # Domain β UI model mapper | ||
| βββ components/FavouriteRepositoryItem.kt # Individual favourite card | ||
| feature/favourites/presentation/ | ||
| βββ FavouritesViewModel / State / Action / Root | ||
| βββ model/FavouriteRepository | ||
| βββ mappers/FavouriteRepositoryMapper | ||
| βββ components/FavouriteRepositoryItem | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the fenced block (MD040).
Line 7 opens a fenced code block without a language identifier; markdownlint will keep warning on this file.
Proposed fix
-```
+```text
feature/favourites/presentation/
βββ FavouritesViewModel / State / Action / Root
βββ model/FavouriteRepository
βββ mappers/FavouriteRepositoryMapper
βββ components/FavouriteRepositoryItem</details>
<!-- suggestion_start -->
<details>
<summary>π Committable suggestion</summary>
> βΌοΈ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
π§° Tools
πͺ markdownlint-cli2 (0.22.1)
[warning] 7-7: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
π€ 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 `@feature/favourites/CLAUDE.md` around lines 7 - 13, The fenced code block in
CLAUDE.md is missing a language tag causing markdownlint MD040; update the
opening fence from ``` to a language-tagged fence such as ```text (or
```bash/```md as appropriate) so the block is recognized as code/text and the
linter warning is resolved β edit the fenced block that contains the directory
tree under the feature/favourites presentation listing.
| ``` | ||
| feature/search/ | ||
| βββ domain/ | ||
| β βββ model/ | ||
| β β βββ SearchPlatform.kt # All, Android, Windows, macOS, Linux | ||
| β β βββ ProgrammingLanguage.kt # Language filter options | ||
| β β βββ SortBy.kt # Sort options (stars, updated, etc.) | ||
| β βββ repository/SearchRepository.kt # Filtered, paginated search | ||
| βββ data/ | ||
| β βββ di/SharedModule.kt # Koin: searchModule | ||
| β βββ repository/SearchRepositoryImpl.kt # GitHub search API integration | ||
| β βββ dto/ # Network DTOs | ||
| β βββ mappers/ # DTO β domain model mappers | ||
| βββ domain/ # SearchRepository; SearchPlatform (All/Android/Macos/Windows/Linux), ProgrammingLanguage, SortBy | ||
| βββ data/ # SearchRepositoryImpl + dto + mappers + di | ||
| βββ presentation/ | ||
| βββ SearchViewModel.kt # Search state, filter management, pagination | ||
| βββ SearchState.kt # query, results, filters, loading state | ||
| βββ SearchAction.kt # Search, filter changes, load more, clicks | ||
| βββ SearchEvent.kt # One-off events | ||
| βββ SearchRoot.kt # Main composable with search bar + filter dropdowns | ||
| βββ components/ # Filter UI components | ||
| βββ SearchViewModel / State / Action / Event / Root | ||
| βββ components/ filter chips, ClipboardLinkBanner, etc. | ||
| ``` |
There was a problem hiding this comment.
Specify a language for the directory-tree fence (MD040).
Line 7 should include a fence language to satisfy markdownlint.
Proposed fix
-```
+```text
feature/search/
βββ domain/ # SearchRepository; SearchPlatform (All/Android/Macos/Windows/Linux), ProgrammingLanguage, SortBy
βββ data/ # SearchRepositoryImpl + dto + mappers + di
βββ presentation/
βββ SearchViewModel / State / Action / Event / Root
βββ components/ filter chips, ClipboardLinkBanner, etc.</details>
<details>
<summary>π§° Tools</summary>
<details>
<summary>πͺ markdownlint-cli2 (0.22.1)</summary>
[warning] 7-7: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>π€ Prompt for AI Agents</summary>
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @feature/search/CLAUDE.md around lines 7 - 14, The markdown code fence for
the directory tree in feature/search/CLAUDE.md lacks a language tag (violates
MD040); update the opening fence from to include a language such astext
(or bash) so the block becomes text and preserves the tree
formattingβmodify the fenced block that contains the "feature/search/" directory
listing to include the language tag.
</details>
<!-- fingerprinting:phantom:triton:hawk -->
<!-- This is an auto-generated comment by CodeRabbit -->
| ``` | ||
| feature/starred/ | ||
| βββ presentation/ | ||
| βββ StarredReposViewModel.kt # Observes starred repos, handles remove | ||
| βββ StarredReposState.kt # starred list, loading | ||
| βββ StarredReposAction.kt # RemoveStarred, click actions | ||
| βββ StarredReposRoot.kt # Main composable (list of starred repos) | ||
| βββ model/StarredRepositoryUi.kt # UI model for display | ||
| βββ mappers/StarredRepoToUiMapper.kt # Domain β UI model mapper | ||
| βββ utils/TimeFormatUtils.kt # Time formatting utilities | ||
| βββ components/StarredRepositoryItem.kt # Individual starred repo card | ||
| feature/starred/presentation/ | ||
| βββ StarredReposViewModel / State / Action / Root | ||
| βββ model/StarredRepositoryUi | ||
| βββ mappers/StarredRepoToUiMapper | ||
| βββ utils/TimeFormatUtils | ||
| βββ components/StarredRepositoryItem | ||
| ``` |
There was a problem hiding this comment.
Add a language identifier to the fenced block (MD040).
Line 7 opens an unlabeled code fence; add text to clear markdownlint.
Proposed fix
-```
+```text
feature/starred/presentation/
βββ StarredReposViewModel / State / Action / Root
βββ model/StarredRepositoryUi
βββ mappers/StarredRepoToUiMapper
βββ utils/TimeFormatUtils
βββ components/StarredRepositoryItem</details>
<details>
<summary>π§° Tools</summary>
<details>
<summary>πͺ markdownlint-cli2 (0.22.1)</summary>
[warning] 7-7: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>π€ Prompt for AI Agents</summary>
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @feature/starred/CLAUDE.md around lines 7 - 14, The fenced code block in
feature/starred/CLAUDE.md (the directory tree snippet under
feature/starred/presentation/) is unlabeled; add a language identifier "text" to
the opening triple backticks so it reads ```text to satisfy MD040; update the
fenced block that contains the lines starting with
"feature/starred/presentation/" and the list items (StarredReposViewModel,
model/StarredRepositoryUi, mappers/StarredRepoToUiMapper, utils/TimeFormatUtils,
components/StarredRepositoryItem) to use the labeled fence.
</details>
<!-- fingerprinting:phantom:triton:hawk -->
<!-- This is an auto-generated comment by CodeRabbit -->
There was a problem hiding this comment.
β»οΈ Duplicate comments (1)
CLAUDE.md (1)
85-85:β οΈ Potential issue | π Major | β‘ Quick winRedact concrete secret-like value from signing docs (Line 85).
SIGNPATH_ORGANIZATION_IDis listed under secrets but still shows a concrete value fragment (1ecf111e-...). Keep only the variable name and where it is configured (CI secret/variable store).π€ 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 `@CLAUDE.md` at line 85, Remove the concrete fragment from the SIGNPATH_ORGANIZATION_ID entry and replace it with only the variable name and where it is configured (e.g., "SIGNPATH_ORGANIZATION_ID β configured in CI secrets/variable store"); update the CLAUDE.md reference to SIGNPATH_ORGANIZATION_ID so it no longer includes the partial value "1ecf111e-..." and ensure other signing-related entries (e.g., SIGNPATH_API_TOKEN, SIGNPATH_SIGNING_POLICY_SLUG) similarly list only variable names and configuration locations.
π€ 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.
Duplicate comments:
In `@CLAUDE.md`:
- Line 85: Remove the concrete fragment from the SIGNPATH_ORGANIZATION_ID entry
and replace it with only the variable name and where it is configured (e.g.,
"SIGNPATH_ORGANIZATION_ID β configured in CI secrets/variable store"); update
the CLAUDE.md reference to SIGNPATH_ORGANIZATION_ID so it no longer includes the
partial value "1ecf111e-..." and ensure other signing-related entries (e.g.,
SIGNPATH_API_TOKEN, SIGNPATH_SIGNING_POLICY_SLUG) similarly list only variable
names and configuration locations.
βΉοΈ Review info
βοΈ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 077ea864-fbf5-4b04-b01d-375aafaad115
π Files selected for processing (1)
CLAUDE.md
Bring all CLAUDE.md files up to date with the merged 1.8.2 scope.
Root
CLAUDE.md:feature/tweaks/,feature/recently-viewed/to module treecore/domaininterface list expanded to include SeenReposRepository, HiddenReposRepository, SearchHistoryRepository, TweaksRepository, AuthenticationState, ExternalImportRepository, TelemetryRepository +AssetVariantutil +assetPlatformOfNew feature CLAUDE.md:
feature/tweaks/CLAUDE.mdβ settings home module, sub-screens (skipped, hidden, mirror, feedback), DataStore-backed coachmarks, multi-platform asset toggle wiringfeature/recently-viewed/CLAUDE.mdβ SeenReposRepository-backed history viewUpdated feature CLAUDE.md:
apps/β sort + search, ignore/skip per-app, APK Inspect, lifecycle resume, external-import wizard, starred picker sub-featuresauth/β backend-proxied device flow path, AuthPath persistence, rate limits, X-Request-ID conventiondetails/β multi-OS picker (E15), coachmarks, self-owned badge plumbing, skipped-release tracking, full injection listfavourites/+starred/β search bar (E562), ProfileRepository dep, E20 self-owned flaghome/+search/β full VM injection list, hide/seen render-time filter, contextual action sheet, E20 plumbingprofile/β narrowed scope: settings moved out tofeature/tweaks/; module now owns account identity + ProfileRepository.getUser() that other features consumeSummary by CodeRabbit
New Features
Bug Fixes
Documentation