Skip to content

docs: refresh CLAUDE.md files for 1.8.2 state#593

Merged
rainxchzed merged 8 commits into
mainfrom
docs/claude-md-refresh
May 13, 2026
Merged

docs: refresh CLAUDE.md files for 1.8.2 state#593
rainxchzed merged 8 commits into
mainfrom
docs/claude-md-refresh

Conversation

@rainxchzed
Copy link
Copy Markdown
Member

@rainxchzed rainxchzed commented May 13, 2026

Bring all CLAUDE.md files up to date with the merged 1.8.2 scope.

Root CLAUDE.md:

  • Version bump 1.6.2 (code 13) β†’ 1.8.2 (code 17), Compose Multiplatform β†’ 1.10.3
  • Added feature/tweaks/, feature/recently-viewed/ to module tree
  • Navigation route list now covers TweaksScreen, HiddenRepositoriesScreen, SkippedUpdatesScreen, RecentlyViewedScreen, ExternalImportScreen, MirrorPickerScreen, StarredPickerScreen, WhatsNewHistoryScreen, AnnouncementsScreen
  • core/domain interface list expanded to include SeenReposRepository, HiddenReposRepository, SearchHistoryRepository, TweaksRepository, AuthenticationState, ExternalImportRepository, TelemetryRepository + AssetVariant util + assetPlatformOf
  • New "Windows installer signing (SignPath Foundation)" Key Configuration block β€” workflow path, required secrets/vars, slug values, current test-signing status

New feature CLAUDE.md:

  • feature/tweaks/CLAUDE.md β€” settings home module, sub-screens (skipped, hidden, mirror, feedback), DataStore-backed coachmarks, multi-platform asset toggle wiring
  • feature/recently-viewed/CLAUDE.md β€” SeenReposRepository-backed history view

Updated feature CLAUDE.md:

  • apps/ β€” sort + search, ignore/skip per-app, APK Inspect, lifecycle resume, external-import wizard, starred picker sub-features
  • auth/ β€” backend-proxied device flow path, AuthPath persistence, rate limits, X-Request-ID convention
  • details/ β€” multi-OS picker (E15), coachmarks, self-owned badge plumbing, skipped-release tracking, full injection list
  • favourites/ + starred/ β€” search bar (E562), ProfileRepository dep, E20 self-owned flag
  • home/ + search/ β€” full VM injection list, hide/seen render-time filter, contextual action sheet, E20 plumbing
  • profile/ β€” narrowed scope: settings moved out to feature/tweaks/; module now owns account identity + ProfileRepository.getUser() that other features consume

Summary by CodeRabbit

  • New Features

    • Tweaks settings expanded (installer, telemetry, translation, mirrors, hidden repos, skipped updates, restart-on-locale).
    • Recently Viewed history, Starred picker, External import wizard, Apps UI improvements (sorting, per-app actions, APK inspection, resume auto-update cooldown).
    • Search UX: inline search, clipboard URL detection, hide-seen controls.
    • Details screen: multi-OS picker, owner badge, skipped-release handling.
    • Auth: backend-proxied device-flow option.
  • Bug Fixes

    • Auto-update sibling-app detection corrected.
  • Documentation

    • Large docs refresh, navigation updates, Windows installer signing and DI/architecture guidance; tech stack updated to Compose MPP 1.10.3.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

Walkthrough

Updates 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.

Changes

Documentation and Sibling App Detection Enhancement

Layer / File(s) Summary
Asset Variant Stem Extraction
core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.kt
New public extractBaseStem(assetName) tokenizes filenames, removes known arch/flavor vocabulary and version-like tokens, and returns a lowercased base-name stem. Private isVersionLikeToken() added.
Installed Apps Sibling Filtering
core/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/InstalledAppsRepositoryImpl.kt
resolveTrackedRelease() gains installedAssetName parameter and uses its extracted stem to restrict layer-5 auto-pick candidates to sibling assets, falling back to the broader pool if none match. Update-check flow passes the installed asset name into the resolver.
Changelog and Root Documentation
CLAUDE.md, core/presentation/.../whatsnew/17.json
Version bumped to 1.8.2 (code 17); whatsnew/17.json notes sibling-app detection fix. Root doc updated with build/run commands, expanded structure (adds tweaks/), extended navigation routes, expanded core/domain contract list, Compose Multiplatform bump to 1.10.3, and Windows SignPath signing CI notes.
Settings Architecture Reorganization
feature/profile/CLAUDE.md, feature/tweaks/CLAUDE.md, feature/home/CLAUDE.md
feature/profile narrowed to account/profile retrieval; settings moved to new feature/tweaks. Home/Search docs updated to include TweaksRepository, SeenReposRepository, HiddenReposRepository and new filtering/visibility behavior.
Feature Documentation Expansion
feature/apps/CLAUDE.md, feature/auth/CLAUDE.md, feature/details/CLAUDE.md, feature/favourites/CLAUDE.md, feature/search/CLAUDE.md, feature/starred/CLAUDE.md, feature/recently-viewed/CLAUDE.md, feature/dev-profile/CLAUDE.md
Apps docs expanded (import/starred sub-features, inline search, per-app actions, auto-update-on-resume, Obtainium import). Auth documents backend-proxied device-flow and X-Request-ID propagation. Details documents install modes, multi-platform picker, coachmarks, skipped-release logic. Favourites/Search/Starred updated with owner-badge behavior and filtering. Recently-Viewed documented as a local history backed by SeenReposRepository.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 A rabbit skips through code and stem,
Finds the right asset, avoids the hem,
Tweaks tuck settings safe and neat,
Docs sing versions, clear and sweet,
Updates land on apps that stem from the same stem.

πŸš₯ Pre-merge checks | βœ… 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 60.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 'docs: refresh CLAUDE.md files for 1.8.2 state' accurately summarizes the main objective: updating documentation files to reflect version 1.8.2. It is specific, concise, and clearly indicates the scope and purpose of the changeset.
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 docs/claude-md-refresh

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.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire orgβ€”no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-inβ€”scoped access, auditability, and budget controls

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.

❀️ Share

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

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 13, 2026

Greptile Summary

This PR brings all CLAUDE.md agent-context files up to date with the 1.8.2 release scope and ships two companion code changes that land alongside the docs. No behaviour regressions were found; the documentation accurately reflects the codebase.

  • Version bump & new modules: Root CLAUDE.md updated from 1.6.2 β†’ 1.8.2 (code 17), Compose Multiplatform 1.10.1 β†’ 1.10.3; new feature/tweaks/ and feature/recently-viewed/ CLAUDE.md files added; all navigation routes, core-domain interfaces, and VM injection lists refreshed across every feature guide.
  • Sibling-app detection fix (issue Version detection issueΒ #591): AssetVariant.extractBaseStem + isVersionLikeToken added; InstalledAppsRepositoryImpl threads the caller's installedAssetName through to a new stem-filter step in the auto-pick pool, with a safe fallback to the full pool when no stem matches are found.
  • What's new entry: 17.json gains a changelog bullet for the sibling-app fix.

Confidence Score: 5/5

Safe 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

Filename Overview
core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.kt New extractBaseStem + private isVersionLikeToken helpers added for sibling-app stem filtering; logic is sound and consistent with existing extractTokens n-gram pass.
core/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/InstalledAppsRepositoryImpl.kt Added installedAssetName parameter and stem-filter block to the auto-pick pool selection; graceful fallback to the full pool when no matching stems are found is correct.
CLAUDE.md Root guide refreshed to 1.8.2: version bump, Compose 1.10.3, new modules/routes documented, condensed format, new SignPath signing block, approach principles appended.
feature/tweaks/CLAUDE.md New CLAUDE.md for the tweaks/settings home module; covers sub-screen VMs, navigation routes, coachmark flags, and cross-feature prefs accurately.
feature/recently-viewed/CLAUDE.md New CLAUDE.md for presentation-only recently-viewed history module; notes SeenReposRepository dependency and Koin registration location.
feature/details/CLAUDE.md Significantly condensed while adding E15 multi-OS picker, coachmarks, E20 self-owned badge, E542 skip-release, and full VM injection list for the most complex feature.
feature/profile/CLAUDE.md Narrowed scope to account identity only; settings correctly redirected to feature/tweaks; ProfileRepository.getUser() cross-feature consumption documented.

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"]
Loading

Reviews (4): Last reviewed commit: "chore: add Approach section to CLAUDE.md..." | Re-trigger Greptile

Comment on lines +318 to +324
/**
* `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.
*/
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 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.

Suggested change
/**
* `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.
*/

Comment on lines +260 to +278
/**
* 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 {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Orphaned KDoc for deriveGlob

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.

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: 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 win

Resolve scope contradiction inside this file.

These lines say settings moved to feature/tweaks/, but the Module Structure and ProfileState sections 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

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between ffe4636 and a2b92ad.

πŸ“’ Files selected for processing (14)
  • CLAUDE.md
  • core/data/src/commonMain/kotlin/zed/rainxch/core/data/repository/InstalledAppsRepositoryImpl.kt
  • core/domain/src/commonMain/kotlin/zed/rainxch/core/domain/util/AssetVariant.kt
  • core/presentation/src/commonMain/composeResources/files/whatsnew/17.json
  • feature/apps/CLAUDE.md
  • feature/auth/CLAUDE.md
  • feature/details/CLAUDE.md
  • feature/favourites/CLAUDE.md
  • feature/home/CLAUDE.md
  • feature/profile/CLAUDE.md
  • feature/recently-viewed/CLAUDE.md
  • feature/search/CLAUDE.md
  • feature/starred/CLAUDE.md
  • feature/tweaks/CLAUDE.md

Comment thread CLAUDE.md Outdated
Comment on lines +325 to +330
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
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚑ Quick win

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

```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟑 Minor | ⚑ Quick win

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.

Comment thread feature/tweaks/CLAUDE.md
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: 3

♻️ Duplicate comments (1)
CLAUDE.md (1)

85-85: ⚠️ Potential issue | 🟠 Major | ⚑ Quick win

Redact concrete secret-like value in SignPath config docs.

SIGNPATH_ORGANIZATION_ID is 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 win

Add a language tag to the fenced structure block.

Use ```text for 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 win

Add text language 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 win

Add a language label to the structure code fence.

Please mark this fence as text to 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 win

Add 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 win

Specify 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 win

Label 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 win

Use 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

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between a2b92ad and dbbd057.

πŸ“’ Files selected for processing (12)
  • CLAUDE.md
  • feature/apps/CLAUDE.md
  • feature/auth/CLAUDE.md
  • feature/details/CLAUDE.md
  • feature/dev-profile/CLAUDE.md
  • feature/favourites/CLAUDE.md
  • feature/home/CLAUDE.md
  • feature/profile/CLAUDE.md
  • feature/recently-viewed/CLAUDE.md
  • feature/search/CLAUDE.md
  • feature/starred/CLAUDE.md
  • feature/tweaks/CLAUDE.md

Comment on lines 7 to 13
```
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
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟑 Minor | ⚑ Quick win

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.

Comment thread feature/search/CLAUDE.md
Comment on lines 7 to 14
```
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.
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟑 Minor | ⚑ Quick win

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 -->

Comment thread feature/starred/CLAUDE.md
Comment on lines 7 to 14
```
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
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟑 Minor | ⚑ Quick win

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 -->

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.

♻️ Duplicate comments (1)
CLAUDE.md (1)

85-85: ⚠️ Potential issue | 🟠 Major | ⚑ Quick win

Redact concrete secret-like value from signing docs (Line 85).

SIGNPATH_ORGANIZATION_ID is 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

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between b8a08f3 and 204aca6.

πŸ“’ Files selected for processing (1)
  • CLAUDE.md

@rainxchzed rainxchzed merged commit 4925b1f into main May 13, 2026
1 check passed
@rainxchzed rainxchzed deleted the docs/claude-md-refresh branch May 13, 2026 16:32
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