Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
c1d6824
Add IAB TCF v2.2, US Privacy (CCPA), and Global Privacy Control support
claude Apr 4, 2026
cfc5cbf
Add network-level GPC hooks for all HTTP requests from all SDKs
claude Apr 4, 2026
a3af1df
Add stable local-proxy GPC mode as default, keep YAHFA hooks as fallback
claude Apr 4, 2026
ba09f4e
Replace YAHFA with LSPlant, remove fragile GPC network interceptors
claude Apr 4, 2026
5c5878e
Add build-time bytecode transformation as alternative to runtime hooking
claude Apr 4, 2026
cfb8df5
Add CI tests for bytecode transforms, standards managers, and GPC
claude Apr 4, 2026
8579113
Run CI on all branch pushes, not just main/master
claude Apr 4, 2026
9d0fc7d
Fix CI: use JDK 17, decouple plugin tests from AGP dependency
claude Apr 4, 2026
43956c8
Add plugin/build to gitignore
claude Apr 4, 2026
1f6bb89
Fix plugin build: include ConsentPlugin in jar, add plugin wrapper
claude Apr 4, 2026
6b9f3b3
Fix ConsentPlugin: use Variant.getInstrumentation() for AGP 7.2 API
claude Apr 4, 2026
9043f87
Fix transformClassesWith: pass required configuration lambda
claude Apr 4, 2026
e2cbaa8
Fix ConsentPlugin: cast to Variant, use kotlin.Unit for lambda return
claude Apr 4, 2026
656ff9e
Switch from LSPlant to Pine for runtime hooking
claude Apr 4, 2026
9e7fda1
Remove all runtime hooking — build-time transforms replace it entirely
claude Apr 4, 2026
65db215
Rewrite README to document new architecture and usage
claude Apr 4, 2026
4d47c4d
Add build-time GPC header injection into OkHttp requests
claude Apr 4, 2026
7f06f73
Add GPC header injection for OkHttp2 and Cronet, make injection generic
claude Apr 4, 2026
f689d9b
Add GPC for HttpURLConnection via URLStreamHandlerFactory
claude Apr 4, 2026
21e5076
Fix GpcUrlHandler: resolve default handlers before installing factory
claude Apr 4, 2026
8565d47
Update README: document GPC coverage across all HTTP stacks
claude Apr 4, 2026
40fd06e
Add TC String encoder — write IABTCF_TCString for SDK compatibility
claude Apr 5, 2026
fbccd3e
Refactor consent to purpose-based categories, add Google Consent Mode v2
claude Apr 5, 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
81 changes: 81 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: CI

on:
push:
pull_request:
branches: [ main, master ]

jobs:
plugin-tests:
name: Plugin Unit Tests (bytecode transforms)
runs-on: ubuntu-latest
defaults:
run:
working-directory: plugin
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-plugin-${{ hashFiles('plugin/**') }}
restore-keys: ${{ runner.os }}-gradle-plugin-

- name: Run plugin tests
run: ./gradlew test --no-daemon

- name: Verify all SDK signatures have tests
run: |
RULE_COUNT=$(grep -c 'addRule(' src/main/java/net/kollnig/consent/plugin/ConsentTransformRules.java)
TEST_COUNT=$(grep -c 'realSignature_' src/test/java/net/kollnig/consent/plugin/ConsentMethodVisitorTest.java)
echo "Transform rules: $RULE_COUNT, Signature tests: $TEST_COUNT"
if [ "$TEST_COUNT" -lt "$RULE_COUNT" ]; then
echo "::warning::Not all SDK rules have signature verification tests ($TEST_COUNT < $RULE_COUNT)"
fi

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: plugin-test-results
path: plugin/build/reports/tests/

library-tests:
name: Library Unit Tests (TCF, US Privacy, GPC)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-library-${{ hashFiles('library/**', 'build.gradle', 'settings.gradle') }}
restore-keys: ${{ runner.os }}-gradle-library-

- name: Run library unit tests
run: ./gradlew :library:testDebugUnitTest --no-daemon

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: library-test-results
path: library/build/reports/tests/
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/.idea
.DS_Store
/build
/plugin/build
/captures
.externalNativeBuild
.cxx
Expand Down
Loading
Loading