Skip to content

Release v0.0.9#56

Merged
z8dn merged 1 commit into
mainfrom
release/v0.0.9
Apr 20, 2026
Merged

Release v0.0.9#56
z8dn merged 1 commit into
mainfrom
release/v0.0.9

Conversation

@z8dn
Copy link
Copy Markdown
Owner

@z8dn z8dn commented Apr 20, 2026

Summary

  • Bump pluginVersion to 0.0.9 in gradle.properties
  • Add [0.0.9] changelog entry covering all changes since v0.0.8

What's in v0.0.9

Test plan

  • ./gradlew build passes
  • Plugin version shows 0.0.9 in plugin descriptor
  • Changelog renders correctly in plugin marketplace preview

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added pattern exclusion syntax (!pattern) support for file groups.
    • Added right-click directory actions for file groups.
    • File group patterns now apply to non-Gradle folders.
    • Custom file groups can now be used as IntelliJ search scopes.
  • Chores

    • Updated minimum supported IDE build requirement.
    • Version bumped to 0.0.9.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 20, 2026

Warning

Rate limit exceeded

@z8dn has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 44 minutes and 51 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 44 minutes and 51 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 28e8c8df-1fc4-4251-91b5-668885ea0dd2

📥 Commits

Reviewing files that changed from the base of the PR and between d055efe and 23fc91b.

📒 Files selected for processing (1)
  • gradle.properties
📝 Walkthrough

Walkthrough

Version 0.0.9 release documentation: CHANGELOG.md is updated to record new features (exclusion pattern syntax, right-click directory actions, minimum IDE build requirement) and past versions are reformatted with structured subsections. gradle.properties version incremented from 0.0.8 to 0.0.9.

Changes

Cohort / File(s) Summary
Version Release
CHANGELOG.md
Added version 0.0.9 release notes documenting new features: !pattern exclusion syntax support, right-click directory actions, and IDE build minimum bump to 261. Restructured historical changelog entries (0.0.8 through 0.0.1) into consistent Added/Changed/Fixed subsections and updated comparison links.
Version Bump
gradle.properties
Updated pluginVersion from 0.0.8 to 0.0.9.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • PR #39: Both PRs update plugin version and corresponding CHANGELOG entries for release documentation.
  • PR #45: Both PRs modify pluginVersion in gradle.properties to increment the plugin version.
  • PR #26: Both PRs modify pluginVersion in gradle.properties and restructure CHANGELOG.md release entries.

Poem

🐰 Version nine hops into view,
Patterns excluded, actions new!
IDE builds bumped, changelog arranged,
Another release—the plugin's exchanged! 🚀

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Release v0.0.9' directly and clearly summarizes the main change—bumping the plugin version to 0.0.9 and creating a corresponding changelog entry.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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 release/v0.0.9

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

❤️ Share

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

Copy link
Copy Markdown

@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: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.buildkite/pipeline.qodana.yml:
- Around line 16-18: CHANGED is populated using a two-commit diff which can miss
earlier PR changes; replace the git diff invocation with a full PR diff (e.g.,
use git diff --name-only origin/main...HEAD or equivalent so CHANGED covers the
whole PR) and make the grep pipeline that builds NON_DOC safe under set -e by
appending "|| true" to each grep or by running grep against CHANGED via a
here-string/printf and using "|| true" (e.g., NON_DOC="$(printf '%s\n'
"$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$' |
grep -v '^img/' || true)"); keep the existing downstream if [ -z "$NON_DOC" ];
then logic so the script correctly skips when no non-doc files remain.

In @.buildkite/pipeline.release.yml:
- Around line 13-20: Update the Docker step configuration so the release
container has the GitHub CLI and receives GITHUB_TOKEN: change the docker image
value from "gradle:8-jdk21" to "gradle:9-jdk21" and add GITHUB_TOKEN to the
docker plugin environment list (alongside PUBLISH_TOKEN, CERTIFICATE_CHAIN,
PRIVATE_KEY, PRIVATE_KEY_PASSWORD), and if the chosen image still lacks gh,
install the GitHub CLI in a setup command executed before the gh invocations or
replace the docker-wrapped step with a non-docker step for the gh-based
release/PR operations; ensure this fixes the gh calls referenced in the pipeline
(the gh invocations on the steps around lines 25, 36, 47, 51).

In @.buildkite/pipeline.ui-tests.yml:
- Around line 18-28: The IDE readiness loops currently fall through to running
./gradlew test even after 15 failed probes; update each readiness loop (the bash
loop using for i in $$(seq 1 15) with curl -sf http://127.0.0.1:8082 and the
equivalent macOS block) to detect timeout and exit with a non‑zero status (e.g.,
after the loop completes without a successful curl, call exit 1) so the pipeline
fails fast; for the Windows block implement the suggested READY flag (set
READY=0 before the loop, set READY=1 on success, and after the :ready label
check if READY is still 0 then call exit /b 1) so tests never run when the IDE
never becomes ready.

In @.buildkite/pipeline.yml:
- Around line 49-51: The pipeline currently deletes every draft release by
selecting all items with .draft == true; instead restrict deletion to the draft
that matches the release tag/version being created. Update the gh api jq filter
used in the two gh api calls (the pipeline commands that pipe through --jq '.[]
| select(.draft == true) | .id') to also match .tag_name (or .name) against the
pipeline's release variable (e.g., RELEASE_TAG, VERSION, or BUILDKITE_TAG) so
only the draft for the current tag is removed; ensure the selection becomes
something like select(.draft == true and .tag_name == env.RELEASE_TAG) so
unrelated draft releases are preserved.
- Around line 45-56: The CHANGELOG extraction uses gradle getChangelog with the
--unreleased flag, which returns the empty Unreleased section; update the
CHANGELOG assignment (symbol CHANGELOG and the gradle invocation) to call gradle
getChangelog without the --unreleased option so it defaults to the project
VERSION (e.g., 0.0.9), ensuring gh release create uses the populated notes;
leave PROPERTIES and VERSION extraction as-is and only remove the --unreleased
token from the getChangelog invocation.
🪄 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 57e440f5-55bd-4149-bcbc-9dcfe4056584

📥 Commits

Reviewing files that changed from the base of the PR and between cc313a4 and efea0ab.

📒 Files selected for processing (7)
  • .buildkite/pipeline.qodana.yml
  • .buildkite/pipeline.release.yml
  • .buildkite/pipeline.ui-tests.yml
  • .buildkite/pipeline.yml
  • CHANGELOG.md
  • build.gradle.kts
  • gradle.properties
💤 Files with no reviewable changes (1)
  • build.gradle.kts

Comment thread .buildkite/pipeline.qodana.yml Outdated
Comment on lines +16 to +18
CHANGED="$$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only origin/main...HEAD)"
NON_DOC="$$(echo "$$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/')"
if [ -z "$$NON_DOC" ]; then
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat -n .buildkite/pipeline.qodana.yml | head -40

Repository: z8dn/advanced-android-project-view

Length of output: 1694


🏁 Script executed:

# Check if there are any set -e or errexit settings at the top of the file or in Buildkite config
head -20 .buildkite/pipeline.qodana.yml && echo "---" && grep -r "set -e\|set -o errexit\|bash -e" .buildkite/ 2>/dev/null || true

Repository: z8dn/advanced-android-project-view

Length of output: 967


🏁 Script executed:

# Check if there are Buildkite configuration files that might set errexit
find .buildkite -name "*.yml" -o -name "*.yaml" | xargs grep -l "shell\|bash" 2>/dev/null || true

Repository: z8dn/advanced-android-project-view

Length of output: 60


🏁 Script executed:

# Let's trace through the git diff behavior logic
# Test what happens with git diff in different scenarios
git log --oneline -5 2>/dev/null || echo "Not a git repo in sandbox" && \
git diff --name-only HEAD~1 HEAD 2>&1 | head -5 || echo "No HEAD~1" && \
echo "---" && \
git diff --name-only origin/main...HEAD 2>&1 | head -5 || echo "No origin/main"

Repository: z8dn/advanced-android-project-view

Length of output: 367


🏁 Script executed:

# Check Buildkite documentation patterns and common CI shell behavior
# Let's also check if there's any shell configuration in the repo
find .buildkite -type f -exec cat {} \; | head -100

Repository: z8dn/advanced-android-project-view

Length of output: 3707


🏁 Script executed:

# Simulate the grep pipeline behavior with empty vs non-empty input
echo "=== Simulating grep behavior ===" && \
echo "With non-empty input:" && \
echo "file1.md
src/main.kt" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/' && echo "Exit code: $?" || echo "Exit code: $?" && \
echo "---" && \
echo "With empty input (only matching docs):" && \
(echo "README.md
CHANGELOG.md" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/' && echo "Exit code: $?") || echo "Exit code: $?"

Repository: z8dn/advanced-android-project-view

Length of output: 222


🏁 Script executed:

# Check Buildkite default shell behavior and documentation patterns
# Let's look for any shell configuration or buildkite agent settings
find . -name "buildkite.yml" -o -name "buildkite-agent.cfg" 2>/dev/null || echo "No agent config found"

Repository: z8dn/advanced-android-project-view

Length of output: 60


🏁 Script executed:

# Test the actual issue: when grep exits with 1 in a command substitution
# Does it break subsequent lines?
bash -c '
set -e
echo "Testing command substitution with failing grep:"
RESULT="$(echo "README.md" | grep -vE "^README" 2>/dev/null || true)"
echo "After grep with || true: Result is: [$RESULT]"
' && echo "Script succeeded" || echo "Script failed"

Repository: z8dn/advanced-android-project-view

Length of output: 181


🏁 Script executed:

# Now test WITHOUT the || true to show the issue
bash -c '
set -e
echo "Testing command substitution with failing grep (no || true):"
RESULT="$(echo "README.md" | grep -vE "^README" 2>/dev/null)"
echo "This line should not print"
' && echo "Script succeeded" || echo "Script failed (as expected)"

Repository: z8dn/advanced-android-project-view

Length of output: 166


Use full PR diff instead of just the last commit, and add errexit-safe guards to the grep pipeline.

Line 16 prefers HEAD~1 HEAD when it exists (true in multi-commit PRs), preventing the fallback to origin/main...HEAD. This means a PR with code changes in an earlier commit followed by a docs-only final commit will incorrectly skip Qodana. Additionally, the grep pipeline on Line 17 exits with status 1 when all files are filtered out, which causes the script to fail under set -e (standard in Buildkite).

🛠️ Proposed fix
-        CHANGED="$$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only origin/main...HEAD)"
-        NON_DOC="$$(echo "$$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/')"
+        if [ "$${BUILDKITE_PULL_REQUEST:-false}" != "false" ]; then
+          git fetch origin main --depth=1
+          CHANGED="$$(git diff --name-only origin/main...HEAD)"
+        else
+          CHANGED="$$(git diff --name-only HEAD~1 HEAD 2>/dev/null || true)"
+        fi
+        NON_DOC="$$(printf '%s\n' "$$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/' || true)"
📝 Committable suggestion

‼️ 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.

Suggested change
CHANGED="$$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only origin/main...HEAD)"
NON_DOC="$$(echo "$$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/')"
if [ -z "$$NON_DOC" ]; then
if [ "$${BUILDKITE_PULL_REQUEST:-false}" != "false" ]; then
git fetch origin main --depth=1
CHANGED="$$(git diff --name-only origin/main...HEAD)"
else
CHANGED="$$(git diff --name-only HEAD~1 HEAD 2>/dev/null || true)"
fi
NON_DOC="$$(printf '%s\n' "$$CHANGED" | grep -vE '^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$$' | grep -v '^img/' || true)"
if [ -z "$$NON_DOC" ]; then
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.buildkite/pipeline.qodana.yml around lines 16 - 18, CHANGED is populated
using a two-commit diff which can miss earlier PR changes; replace the git diff
invocation with a full PR diff (e.g., use git diff --name-only
origin/main...HEAD or equivalent so CHANGED covers the whole PR) and make the
grep pipeline that builds NON_DOC safe under set -e by appending "|| true" to
each grep or by running grep against CHANGED via a here-string/printf and using
"|| true" (e.g., NON_DOC="$(printf '%s\n' "$CHANGED" | grep -vE
'^(CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|README)\.md$' | grep -v '^img/' ||
true)"); keep the existing downstream if [ -z "$NON_DOC" ]; then logic so the
script correctly skips when no non-doc files remain.

Comment thread .buildkite/pipeline.release.yml Outdated
Comment on lines +13 to +20
- docker#v5.12.0:
image: "gradle:8-jdk21"
environment:
- PUBLISH_TOKEN
- CERTIFICATE_CHAIN
- PRIVATE_KEY
- PRIVATE_KEY_PASSWORD
commands:
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Check the release pipeline file
cat -n .buildkite/pipeline.release.yml | head -60

Repository: z8dn/advanced-android-project-view

Length of output: 2321


🏁 Script executed:

# Check other buildkite pipelines to compare gradle versions
find .buildkite -name "*.yml" -o -name "*.yaml" | head -20

Repository: z8dn/advanced-android-project-view

Length of output: 197


🏁 Script executed:

# Search for gh command usage in the release pipeline
rg "gh " .buildkite/pipeline.release.yml -A 2 -B 2

Repository: z8dn/advanced-android-project-view

Length of output: 732


🏁 Script executed:

# Check main CI pipeline for gradle version
cat -n .buildkite/pipeline.yml | grep -A 5 -B 5 "gradle" | head -40

Repository: z8dn/advanced-android-project-view

Length of output: 1418


🏁 Script executed:

# Check other pipelines for docker/gradle config
rg "image.*gradle" .buildkite/ -A 2 -B 2

Repository: z8dn/advanced-android-project-view

Length of output: 1116


🌐 Web query:

gradle:8-jdk21 docker image gh CLI github

💡 Result:

The official Docker image gradle:8-jdk21 (latest Gradle 8.x with JDK 21) is available on Docker Hub. It comes pre-installed with git, curl, wget, and other tools useful for builds, but does not include the GitHub CLI (gh). To use it for Gradle builds: docker run --rm -u gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle:8-jdk21 gradle build Variants include gradle:8-jdk21-noble (Ubuntu 24.04), gradle:8-jdk21-jammy (Ubuntu 22.04), gradle:8-jdk21-alpine. To add GitHub CLI (gh), extend the image in a Dockerfile. For Ubuntu-based (e.g., gradle:8-jdk21-noble): FROM gradle:8-jdk21-noble USER root RUN apt-get update && apt-get install -y curl gpg \ && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && apt-get update \ && apt-get install -y gh \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* USER gradle For Alpine-based: Use the binary download method from gh releases, as APT is not available. In GitHub Actions, use gradle:8-jdk21 directly or with actions/setup-gh-cli if needed, but gh is pre-installed on GitHub runners. Current version as of 2026-04-20: Gradle 8.14.4-jdk21 (8 tag points to latest 8.x).

Citations:


🌐 Web query:

Buildkite docker plugin environment variable forwarding how it works

💡 Result:

The Buildkite Docker plugin forwards environment variables to the Docker container through three main mechanisms: 1. Explicit environment array: Specify additional env vars as KEY or KEY=value. These map to Docker CLI --env flags and pass values from the host environment. Example: plugins: docker#v5.13.0: environment: - "MY_SECRET_KEY" - "PUBLIC_VAR=kittens" 2. propagate-environment: true (optional, default false): Automatically propagates all pipeline environment variables (from $BUILDKITE_ENV_FILE, visible in Buildkite UI) into the container via --env-file. Does not include vars set in hooks or agent env. Example: plugins: docker#v5.13.0: propagate-environment: true 3. env-propagation-list: "VAR_NAME" (optional): If VAR_NAME is an env var with a space-separated list (e.g., "A B C"), propagates those specific vars. Useful for hook-set secrets. Set in hooks like PROPAGATE_LIST="SECRET_1 ${PROPAGATE_LIST:-}". Additionally, propagate-aws-auth-tokens: true propagates AWS auth vars (e.g., AWS_ACCESS_KEY_ID). Key notes: - Docker containers do not inherit host env by default; plugin explicitly passes via docker run --env/--env-file. - Pipeline vars (upload-time) propagate with propagate-environment; hook vars need environment, env-propagation-list, or explicit listing. - Variable interpolation: $VAR at upload, $$VAR at runtime. - S3 Secrets plugin vars require explicit environment listing. Sources confirm this from official plugin repo (v5.13.0 as of 2025) and docs.

Citations:


Release container must include GitHub CLI and forward GITHUB_TOKEN.

The gradle:8-jdk21 image does not include the gh CLI tool, and GITHUB_TOKEN is not forwarded to the docker environment. The script calls gh on lines 25, 36, 47, and 51, so this will fail at runtime. Use gradle:9-jdk21 to match CI and add GITHUB_TOKEN to the docker plugin environment list. Additionally, verify the image includes gh or extend it with a custom Dockerfile that installs GitHub CLI before lines 21–56 execute.

🛠️ Required configuration fixes
       - docker#v5.12.0:
-          image: "gradle:8-jdk21"
+          image: "gradle:9-jdk21"
           environment:
             - PUBLISH_TOKEN
             - CERTIFICATE_CHAIN
             - PRIVATE_KEY
             - PRIVATE_KEY_PASSWORD
+            - GITHUB_TOKEN

If the image still lacks gh, either install it in a setup command before the gh calls or move GitHub release/PR operations into a step without docker wrapping.

📝 Committable suggestion

‼️ 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.

Suggested change
- docker#v5.12.0:
image: "gradle:8-jdk21"
environment:
- PUBLISH_TOKEN
- CERTIFICATE_CHAIN
- PRIVATE_KEY
- PRIVATE_KEY_PASSWORD
commands:
- docker#v5.12.0:
image: "gradle:9-jdk21"
environment:
- PUBLISH_TOKEN
- CERTIFICATE_CHAIN
- PRIVATE_KEY
- PRIVATE_KEY_PASSWORD
- GITHUB_TOKEN
commands:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.buildkite/pipeline.release.yml around lines 13 - 20, Update the Docker step
configuration so the release container has the GitHub CLI and receives
GITHUB_TOKEN: change the docker image value from "gradle:8-jdk21" to
"gradle:9-jdk21" and add GITHUB_TOKEN to the docker plugin environment list
(alongside PUBLISH_TOKEN, CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD),
and if the chosen image still lacks gh, install the GitHub CLI in a setup
command executed before the gh invocations or replace the docker-wrapped step
with a non-docker step for the gh-based release/PR operations; ensure this fixes
the gh calls referenced in the pipeline (the gh invocations on the steps around
lines 25, 36, 47, 51).

Comment thread .buildkite/pipeline.ui-tests.yml Outdated
Comment on lines +18 to +28
- |
# Wait for IDE to be ready (equivalent to url-health-check-action)
for i in $$(seq 1 15); do
if curl -sf http://127.0.0.1:8082 > /dev/null 2>&1; then
echo "IDE is ready"
break
fi
echo "Attempt $$i/15 — waiting 30s..."
sleep 30
done
- ./gradlew test
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fail fast when the IDE readiness check times out.

All three loops continue to the test command after 15 failed probes. Exit non-zero on timeout so the UI-test failure points to IDE startup instead of producing misleading test results.

🛠️ Proposed fix pattern
+        READY=0
         for i in $$(seq 1 15); do
           if curl -sf http://127.0.0.1:8082 > /dev/null 2>&1; then
             echo "IDE is ready"
+            READY=1
             break
           fi
           echo "Attempt $$i/15 — waiting 30s..."
           sleep 30
         done
+        if [ "$$READY" -ne 1 ]; then
+          echo "IDE did not become ready after 15 attempts"
+          exit 1
+        fi

Apply the same guard to the macOS block. For Windows, set a READY variable before the loop and exit /b 1 after :ready when it remains 0.

Also applies to: 42-51, 65-72

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.buildkite/pipeline.ui-tests.yml around lines 18 - 28, The IDE readiness
loops currently fall through to running ./gradlew test even after 15 failed
probes; update each readiness loop (the bash loop using for i in $$(seq 1 15)
with curl -sf http://127.0.0.1:8082 and the equivalent macOS block) to detect
timeout and exit with a non‑zero status (e.g., after the loop completes without
a successful curl, call exit 1) so the pipeline fails fast; for the Windows
block implement the suggested READY flag (set READY=0 before the loop, set
READY=1 on success, and after the :ready label check if READY is still 0 then
call exit /b 1) so tests never run when the IDE never becomes ready.

Comment thread .buildkite/pipeline.yml Outdated
Comment on lines +45 to +56
PROPERTIES="$$(gradle properties --console=plain -q)"
VERSION="$$(echo "$$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
CHANGELOG="$$(gradle getChangelog --unreleased --no-header --console=plain -q)"

gh api repos/{owner}/{repo}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}

gh release create "v$$VERSION" \
--draft \
--title "v$$VERSION" \
--notes "$$CHANGELOG"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, check if the file exists and read the relevant section
if [ -f .buildkite/pipeline.yml ]; then
  echo "=== .buildkite/pipeline.yml lines 45-56 ==="
  sed -n '45,56p' .buildkite/pipeline.yml
fi

Repository: z8dn/advanced-android-project-view

Length of output: 655


🏁 Script executed:

# Check CHANGELOG.md structure
if [ -f CHANGELOG.md ]; then
  echo "=== CHANGELOG.md structure (first 100 lines) ==="
  head -n 100 CHANGELOG.md
fi

Repository: z8dn/advanced-android-project-view

Length of output: 6787


🏁 Script executed:

# Look for Gradle Changelog Plugin version in build configuration
echo "=== Gradle Changelog Plugin configuration ==="
find . -name "build.gradle*" -o -name "gradle.properties" -o -name "settings.gradle*" | head -5 | xargs grep -l "changelog" 2>/dev/null || echo "Searching for changelog plugin configuration..."

Repository: z8dn/advanced-android-project-view

Length of output: 142


🏁 Script executed:

# Search for gradle getChangelog usage in the codebase
echo "=== Searching for gradle getChangelog usage ==="
rg "getChangelog" --type yaml --type gradle -B 2 -A 2

Repository: z8dn/advanced-android-project-view

Length of output: 125


🏁 Script executed:

# Check build.gradle.kts for Gradle Changelog Plugin configuration
echo "=== build.gradle.kts content ==="
cat -n build.gradle.kts | head -80

Repository: z8dn/advanced-android-project-view

Length of output: 3737


🏁 Script executed:

# Search for changelog plugin version and configuration
echo "=== Searching for changelog plugin in build files ==="
rg "changelog|getChangelog" build.gradle.kts -B 2 -A 2

Repository: z8dn/advanced-android-project-view

Length of output: 1154


🏁 Script executed:

# Check if there's a gradle.properties with version info
echo "=== gradle.properties ==="
if [ -f gradle.properties ]; then
  cat gradle.properties
fi

Repository: z8dn/advanced-android-project-view

Length of output: 1731


🏁 Script executed:

# Check the Gradle Changelog Plugin documentation and behavior
echo "=== Checking for gradle task definitions ==="
rg "getChangelog|task.*changelog" build.gradle.kts -B 2 -A 2

Repository: z8dn/advanced-android-project-view

Length of output: 122


🏁 Script executed:

# Look at the full changelog configuration in build.gradle.kts
echo "=== Full changelog configuration ==="
rg "changelog" build.gradle.kts -B 3 -A 3 | head -50

Repository: z8dn/advanced-android-project-view

Length of output: 1241


🌐 Web query:

Gradle Changelog Plugin getChangelog task behavior --unreleased flag

💡 Result:

The --unreleased flag for the getChangelog task in the JetBrains Gradle Changelog Plugin (org.jetbrains.changelog) instructs the task to return change notes specifically from the unreleased section of the changelog file (typically the [Unreleased] section at the top of CHANGELOG.md). By default, --unreleased is false, so the task retrieves changelog for the specified project version (via --project-version or project version). When set to true, it outputs only the unreleased content. Example usage: ./gradlew getChangelog --console=plain -q --unreleased This prints the unreleased changelog to console, respecting other flags like --no-header, --no-summary, --no-links, --no-empty-sections. The plugin's latest version is 2.5.0 (as of November 2025), and this flag has been available since version 0.3.1.

Citations:


Remove --unreleased flag to include release notes for v0.0.9.

The CHANGELOG.md has an empty [Unreleased] section and populated [0.0.9] section. Line 47 uses --unreleased, which reads only the unreleased section, resulting in blank draft release notes. The plugin defaults to the project version (0.0.9) without this flag, so the fix below will include the actual release notes:

🛠️ Proposed fix
-        CHANGELOG="$$(gradle getChangelog --unreleased --no-header --console=plain -q)"
+        CHANGELOG="$$(gradle getChangelog --no-header --console=plain -q)"
📝 Committable suggestion

‼️ 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.

Suggested change
PROPERTIES="$$(gradle properties --console=plain -q)"
VERSION="$$(echo "$$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
CHANGELOG="$$(gradle getChangelog --unreleased --no-header --console=plain -q)"
gh api repos/{owner}/{repo}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}
gh release create "v$$VERSION" \
--draft \
--title "v$$VERSION" \
--notes "$$CHANGELOG"
PROPERTIES="$$(gradle properties --console=plain -q)"
VERSION="$$(echo "$$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
CHANGELOG="$$(gradle getChangelog --no-header --console=plain -q)"
gh api repos/{owner}/{repo}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}
gh release create "v$$VERSION" \
--draft \
--title "v$$VERSION" \
--notes "$$CHANGELOG"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.buildkite/pipeline.yml around lines 45 - 56, The CHANGELOG extraction uses
gradle getChangelog with the --unreleased flag, which returns the empty
Unreleased section; update the CHANGELOG assignment (symbol CHANGELOG and the
gradle invocation) to call gradle getChangelog without the --unreleased option
so it defaults to the project VERSION (e.g., 0.0.9), ensuring gh release create
uses the populated notes; leave PROPERTIES and VERSION extraction as-is and only
remove the --unreleased token from the getChangelog invocation.

Comment thread .buildkite/pipeline.yml Outdated
Comment on lines +49 to +51
gh api repos/{owner}/{repo}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Do not delete every draft release in the repository.

This deletes all draft releases before creating the new one. Filter to the current tag/version so unrelated in-progress release drafts are not destroyed.

🛡️ Proposed fix
         gh api repos/{owner}/{repo}/releases \
-          --jq '.[] | select(.draft == true) | .id' \
-          | xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}
+          --jq ".[] | select(.draft == true and .tag_name == \"v$$VERSION\") | .id" \
+          | while read -r release_id; do
+              [ -n "$$release_id" ] && gh api -X DELETE "repos/{owner}/{repo}/releases/$$release_id"
+            done
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.buildkite/pipeline.yml around lines 49 - 51, The pipeline currently deletes
every draft release by selecting all items with .draft == true; instead restrict
deletion to the draft that matches the release tag/version being created. Update
the gh api jq filter used in the two gh api calls (the pipeline commands that
pipe through --jq '.[] | select(.draft == true) | .id') to also match .tag_name
(or .name) against the pipeline's release variable (e.g., RELEASE_TAG, VERSION,
or BUILDKITE_TAG) so only the draft for the current tag is removed; ensure the
selection becomes something like select(.draft == true and .tag_name ==
env.RELEASE_TAG) so unrelated draft releases are preserved.

@github-actions
Copy link
Copy Markdown

Qodana for JVM

It seems all right 👌

No new problems were found according to the checks applied

☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@CHANGELOG.md`:
- Around line 5-18: The changelog currently has the v0.0.9 release notes under
the "Unreleased" section; move the entries under "### Added" and "### Changed"
from the "## [Unreleased]" block into the "## [0.0.9] - 2026-04-20" section so
0.0.9 documents the same bullet points (preserve the three Added bullets and the
Changed bullet and their PR links), and leave the "Unreleased" header either
empty or with no release-specific bullets; locate the text by the headings "##
[Unreleased]", "### Added", "### Changed" and the "## [0.0.9] - 2026-04-20"
heading to perform the move.
🪄 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: b3f876e5-1288-4652-9850-ce52f45366bc

📥 Commits

Reviewing files that changed from the base of the PR and between efea0ab and d055efe.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • gradle.properties

Comment thread CHANGELOG.md Outdated
Comment on lines +5 to +18
## [Unreleased]

### Added

- File group patterns now support `!pattern` exclusion syntax — use `!*.generated.kt` to exclude files by name or `!docs/*.md` for path-relative globs ([#52](https://github.com/z8dn/advanced-android-project-view/pull/52))
- Exclusion and path-based patterns now work in non-Gradle project folders (e.g. a top-level `docs/` or `config/` directory), not only inside Gradle modules ([#53](https://github.com/z8dn/advanced-android-project-view/pull/53))
- Right-click any directory in the project tree to instantly add or exclude it from a file group — patterns are generated automatically ([#54](https://github.com/z8dn/advanced-android-project-view/pull/54))

### Changed

- Minimum supported IDE build bumped to 261 (Android Studio Quail / 2026.1) ([#51](https://github.com/z8dn/advanced-android-project-view/pull/51))

## [0.0.9] - 2026-04-20

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Move released notes from Unreleased into 0.0.9 section.

At Line 17, 0.0.9 is empty, while the actual v0.0.9 changes are currently under Unreleased (Lines 7–15). This does not satisfy the release objective of documenting 0.0.9 contents and will produce incorrect release notes.

Proposed fix
 ## [Unreleased]
 
-### Added
-
-- File group patterns now support `!pattern` exclusion syntax — use `!*.generated.kt` to exclude files by name or `!docs/*.md` for path-relative globs ([`#52`](https://github.com/z8dn/advanced-android-project-view/pull/52))
-- Exclusion and path-based patterns now work in non-Gradle project folders (e.g. a top-level `docs/` or `config/` directory), not only inside Gradle modules ([`#53`](https://github.com/z8dn/advanced-android-project-view/pull/53))
-- Right-click any directory in the project tree to instantly add or exclude it from a file group — patterns are generated automatically ([`#54`](https://github.com/z8dn/advanced-android-project-view/pull/54))
-
-### Changed
-
-- Minimum supported IDE build bumped to 261 (Android Studio Quail / 2026.1) ([`#51`](https://github.com/z8dn/advanced-android-project-view/pull/51))
-
 ## [0.0.9] - 2026-04-20
+
+### Added
+
+- File group patterns now support `!pattern` exclusion syntax — use `!*.generated.kt` to exclude files by name or `!docs/*.md` for path-relative globs ([`#52`](https://github.com/z8dn/advanced-android-project-view/pull/52))
+- Exclusion and path-based patterns now work in non-Gradle project folders (e.g. a top-level `docs/` or `config/` directory), not only inside Gradle modules ([`#53`](https://github.com/z8dn/advanced-android-project-view/pull/53))
+- Right-click any directory in the project tree to instantly add or exclude it from a file group — patterns are generated automatically ([`#54`](https://github.com/z8dn/advanced-android-project-view/pull/54))
+
+### Changed
+
+- Minimum supported IDE build bumped to 261 (Android Studio Quail / 2026.1) ([`#51`](https://github.com/z8dn/advanced-android-project-view/pull/51))
📝 Committable suggestion

‼️ 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.

Suggested change
## [Unreleased]
### Added
- File group patterns now support `!pattern` exclusion syntax — use `!*.generated.kt` to exclude files by name or `!docs/*.md` for path-relative globs ([#52](https://github.com/z8dn/advanced-android-project-view/pull/52))
- Exclusion and path-based patterns now work in non-Gradle project folders (e.g. a top-level `docs/` or `config/` directory), not only inside Gradle modules ([#53](https://github.com/z8dn/advanced-android-project-view/pull/53))
- Right-click any directory in the project tree to instantly add or exclude it from a file group — patterns are generated automatically ([#54](https://github.com/z8dn/advanced-android-project-view/pull/54))
### Changed
- Minimum supported IDE build bumped to 261 (Android Studio Quail / 2026.1) ([#51](https://github.com/z8dn/advanced-android-project-view/pull/51))
## [0.0.9] - 2026-04-20
## [Unreleased]
## [0.0.9] - 2026-04-20
### Added
- File group patterns now support `!pattern` exclusion syntax — use `!*.generated.kt` to exclude files by name or `!docs/*.md` for path-relative globs ([`#52`](https://github.com/z8dn/advanced-android-project-view/pull/52))
- Exclusion and path-based patterns now work in non-Gradle project folders (e.g. a top-level `docs/` or `config/` directory), not only inside Gradle modules ([`#53`](https://github.com/z8dn/advanced-android-project-view/pull/53))
- Right-click any directory in the project tree to instantly add or exclude it from a file group — patterns are generated automatically ([`#54`](https://github.com/z8dn/advanced-android-project-view/pull/54))
### Changed
- Minimum supported IDE build bumped to 261 (Android Studio Quail / 2026.1) ([`#51`](https://github.com/z8dn/advanced-android-project-view/pull/51))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` around lines 5 - 18, The changelog currently has the v0.0.9
release notes under the "Unreleased" section; move the entries under "### Added"
and "### Changed" from the "## [Unreleased]" block into the "## [0.0.9] -
2026-04-20" section so 0.0.9 documents the same bullet points (preserve the
three Added bullets and the Changed bullet and their PR links), and leave the
"Unreleased" header either empty or with no release-specific bullets; locate the
text by the headings "## [Unreleased]", "### Added", "### Changed" and the "##
[0.0.9] - 2026-04-20" heading to perform the move.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Entire-Checkpoint: d5287274f255
@z8dn z8dn enabled auto-merge April 20, 2026 15:22
@z8dn z8dn merged commit 11f8a21 into main Apr 20, 2026
5 of 8 checks passed
@z8dn z8dn deleted the release/v0.0.9 branch April 20, 2026 15:26
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