Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
9f39d70
ADFA-2602: Move the on-device toolchain to Gradle 9.6.1, AGP 9.3.1, K…
alome007 Aug 10, 2026
26ec898
feat(ADFA-4824): Find usages in the Kotlin K2 LSP (#1624)
itsaky-adfa Aug 11, 2026
ad23205
ADFA-4942: Gate GlitchTip and Firebase analytics behind an onboarding…
Daniel-ADFA Aug 11, 2026
a1700fa
fix(ADFA-4892): Refresh search on re-opening search bar (#1640)
dara-abijo-adfa Aug 11, 2026
0019903
ADFA-5035: Fix WebServer occasionally failing to start with EADDRINUS…
davidschachterADFA Aug 11, 2026
64d9222
ADFA-4692: Fix unknown project language (#1650)
dara-abijo-adfa Aug 11, 2026
ffb63dd
ADFA-5097: Clean up telemetry choice screen (#1658)
hal-eisen-adfa Aug 11, 2026
c676f3b
ADFA-2602: Reference the agp-tooling catalog version in plugin-builder
alome007 Aug 12, 2026
2d7444a
ADFA-4419: Remote peer editor decoration API (#1459)
Daniel-ADFA Aug 12, 2026
c1c8c16
ADFA-5107: Add Claude-facing reference for the documentation database…
davidschachterADFA Aug 13, 2026
c5445bc
ADFA-4852: New file/folder dialog dismissal (#1670)
dara-abijo-adfa Aug 13, 2026
bf46d5e
ADFA-4394: Report attached input devices and external displays to an…
Daniel-ADFA Aug 13, 2026
ca80514
ADFA-5109: Remove unused Room deps from idetooltips (#1662)
davidschachterADFA Aug 13, 2026
f3d7dbf
ADFA-5123: Document docdb SQL-authoring gotchas from ADFA-5088 (#1666)
davidschachterADFA Aug 13, 2026
b516316
ADFA-5121: Remove dead UseSytemShell preference and unused setting (#…
davidschachterADFA Aug 13, 2026
18250a2
docs: retro for ADFA-5088 (Preferences/Plugin Manager tooltips + docd…
davidschachterADFA Aug 13, 2026
d192b0c
ADFA-4883: Add YouTube and Bilibili links to the About page (#1672)
davidschachterADFA Aug 14, 2026
191a97c
ADFA-5095 | Publish optional backend capabilities on the LLM inferenc…
jatezzz Aug 14, 2026
1bb0acc
ADFA-5156: Roll back R8 shrinking to unbreak plugins (#1679)
hal-eisen-adfa Aug 15, 2026
7659e3e
ADFA-5126: Keep volatile build metadata out of module ABIs (#1671)
itsaky-adfa Aug 17, 2026
3ac1ead
ADFA-4808: Fix empty App Logs output (#1674)
dara-abijo-adfa Aug 17, 2026
0567ccf
fix(ADFA-5177): Exclude Unknown from template languages (#1690)
dara-abijo-adfa Aug 18, 2026
50bd570
ADFA-4934: Install a .cgp or .cgt file opened from outside the app (#…
davidschachterADFA Aug 18, 2026
bcb1093
ADFA-5067 New assetlinks.json generation workflow (#1693)
hal-eisen-adfa Aug 18, 2026
d36a8bb
ADFA-5098: Require font-scale verification for new and changed screen…
hal-eisen-adfa Aug 19, 2026
4f8d1db
ADFA-5046: Add Java code action: surround with try/catch (#1686)
Daniel-ADFA Aug 19, 2026
18ea1bb
ADFA-4754: Capture n/a tooltips and display a friendly sorry message …
Daniel-ADFA Aug 19, 2026
28e00f1
ADFA-5148 | Add tool contribution contract for the AI agent (#1685)
jatezzz Aug 19, 2026
b24c041
ADFA-4826: Add shared IDE Compose theming in common-compose (#1653)
itsaky-adfa Aug 20, 2026
9bc17d9
ADFA-4826: Kotlin extract variable code action (K2 LSP) (#1654)
itsaky-adfa Aug 20, 2026
de4b2ed
ADFA-5080: Kotlin extract method code action (K2 LSP) (#1655)
itsaky-adfa Aug 20, 2026
69ddd09
ADFA-5206 Workflow to remove Rovo Dev advertising from Github PRs (#1…
hal-eisen-adfa Aug 20, 2026
55631fb
Add knowledge base link per DS request (#1708)
Elissa-AppDevforAll Aug 21, 2026
8f3a89d
Update Indonesian translation (#1703)
mcikadu-dev Aug 21, 2026
0ba730d
ADFA-5223: Fix Indonesian "resource" mistranslated as "sumber" (sourc…
hal-eisen-adfa Aug 21, 2026
9c8f217
ADFA-5153: Decode Content rows against the shared Brotli dictionary (…
davidschachterADFA Aug 22, 2026
ea658c3
ADFA-4510: Fix missing tooltips on code actions (#1712)
hal-eisen-adfa Aug 24, 2026
113b57f
ADFA-5264: Stop tracking the test project's sync cache (#1740)
davidschachterADFA Aug 26, 2026
0596292
ADFA-5263: Delete copyToTestDir, which copied a jar nothing reads (#1…
davidschachterADFA Aug 26, 2026
f13ddd6
ADFA-4928 create a single manager for plugins and templates (#1627)
hal-eisen-adfa Aug 26, 2026
a8a0448
Merge stage into task/ADFA-2602-toolchain-agp9
Daniel-ADFA Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .claude/skills/architecture-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,9 @@ For each changed first-party file, check the applicable rules. Each rule cites i
| 9 | **Dependency substitution:** don't add a Maven coordinate for something already vendored/substituted (`build-deps*`); don't add a new dependency without checking `gradle/libs.versions.toml` first. | ADR 0003 |
| 10 | **Strings** live in the `:resources` module's `strings.xml` (not per-module, not inline literals). | REVIEW.md §7 |
| 11 | **UI never drawn over the two system bars** (top status bar, bottom navigation bar). | CLAUDE.md |
| 12 | **Text scales:** new/changed screens verified at font scale 1.0 and 2.0 — `sp` for text and `dp` for spacing (no `sp` dimen used as margin/padding), no text boxed in a fixed `dp` size, a scroll container on content that can grow, and `maxLines`/`singleLine`/`ellipsize` only on genuinely disposable text. | CLAUDE.md, REVIEW.md §8 |

Rules 1, 2, 6 apply to UI changes; 4, 5 to data/model changes; 8, 9 to Gradle changes. Judge by what the diff touches — don't flag rules a file doesn't engage.
Rules 1, 2, 6, 10, 11, 12 apply to UI changes; 4, 5 to data/model changes; 8, 9 to Gradle changes; 3 wherever a dependency, singleton, or ViewModel is introduced; 7 wherever a module's dependencies or cross-module imports change. Any rule not listed here is still checked whenever the diff touches its subject. Judge by what the diff touches — don't flag rules a file doesn't engage.

For a **large diff (~15+ first-party files)**, fan out: spawn a subagent per dimension (UI/state, DI, persistence, Gradle/modules), each instructed to read the relevant ADR and report only its dimension's findings; then merge. For a small diff, do it inline.

Expand Down
91 changes: 91 additions & 0 deletions .github/workflows/deploy-well-known-worker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Deploy well-known Worker

# Deploys infra/well-known-worker, which serves
# https://<host>/.well-known/assetlinks.json out of the private "well-known" R2
# bucket. The object itself is written by signing-fingerprint.yml; this workflow
# owns only the code that reads it, and does not verify the served result -
# signing-fingerprint.yml already does that end to end when it deploys.
#
# A Cloudflare Origin Rule cannot do this job on the Free plan: host header, SNI
# and DNS record overrides are Enterprise-only, and R2 selects a bucket from the
# Host header. The Worker uses an R2 binding instead, so the bucket stays private.
#
# Requires a CLOUDFLARE_WORKERS_DEPLOY_TOKEN secret with:
# Account -> Workers Scripts -> Edit (upload the script)
# Account -> Workers R2 Storage -> Read (see below)
# Zone -> Workers Routes -> Edit (attach the routes on appdevforall.org)
# The R2 read scope is not optional: wrangler resolves the bucket named in the
# r2_buckets binding via GET /accounts/<id>/r2/buckets/well-known and fails the
# deploy with "Authentication error [code: 10000]" without it. Note that a scope
# added to an existing token takes a few minutes to take effect - that same error
# persists across an immediate re-run, so wait before concluding the scope is wrong.
# The existing CLOUDFLARE_KEY_ID / CLOUDFLARE_SECRET_ACCESS_KEY pair is an R2
# S3-compatible credential and cannot deploy a Worker.

on:
workflow_dispatch:
# Dispatch is only offered for workflows on the default branch, so run on push
# to let this work from a feature branch before it reaches stage. Note that a
# push on any branch therefore deploys the live Worker.
push:
paths:
- 'infra/well-known-worker/**'
- '.github/workflows/deploy-well-known-worker.yml'

permissions:
contents: read

# One deploy at a time: concurrent uploads of the same script race on the routes.
concurrency:
group: deploy-well-known-worker
cancel-in-progress: false

jobs:
deploy:
name: Deploy Worker
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Check Cloudflare credentials
env:
CLOUDFLARE_WORKERS_DEPLOY_TOKEN: ${{ secrets.CLOUDFLARE_WORKERS_DEPLOY_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
run: |
set -euo pipefail

# wrangler reports a missing token as an opaque auth error, so name the
# actual gap here. Required scopes are listed at the top of this file.
for var in CLOUDFLARE_WORKERS_DEPLOY_TOKEN CLOUDFLARE_ACCOUNT_ID; do
if [ -z "${!var:-}" ]; then
echo "ERROR: $var is not set. See the header of this workflow." >&2
exit 1
fi
done

- name: Deploy with Wrangler
uses: cloudflare/wrangler-action@v4
with:
apiToken: ${{ secrets.CLOUDFLARE_WORKERS_DEPLOY_TOKEN }}
accountId: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
workingDirectory: infra/well-known-worker
wranglerVersion: '4.124.0'
command: deploy

- name: Write job summary
run: |
set -euo pipefail
{
echo "## well-known Worker deployed"
echo
echo "Routes now served from the \`well-known\` R2 bucket:"
echo
echo "- \`https://appdevforall.org/.well-known/assetlinks.json\`"
echo "- \`https://www.appdevforall.org/.well-known/assetlinks.json\`"
echo
echo "A route with no matching object falls through to the site origin."
echo "Run **Print release signing certificate fingerprint** with \`deploy\` enabled to publish the object and verify it end to end."
} >> "$GITHUB_STEP_SUMMARY"
Loading
Loading