Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
ba7b0c7
fix: remove skip-ci from version bump to allow PR checks
vishshukla Jan 9, 2026
a37561b
feat: skip version bump for landing page scoped commits
vishshukla Jan 9, 2026
0576cd8
docs: update CLAUDE.md with complete CI/CD automation details
vishshukla Jan 9, 2026
36a011c
feat: only trigger release when extension/ files change
vishshukla Jan 9, 2026
eeceb98
chore: sync staging with main after release
vishshukla Jan 9, 2026
e78d7b3
feat: auto-sync staging with main after release
vishshukla Jan 9, 2026
9ec8d26
feat(landing): convert to high-conversion page with direct Chrome CTA
vishshukla Jan 9, 2026
705db48
feat(landing): add messaging about growing problem coverage
vishshukla Jan 9, 2026
073d49c
fix: filter merge commits from release notes
vishshukla Jan 9, 2026
7dc31e3
chore: bump version to 0.11.0 [skip ci]
github-actions[bot] Jan 9, 2026
fea02c0
chore: bump version to 0.12.0 [skip ci]
github-actions[bot] Jan 12, 2026
c75690c
chore: bump version to 0.13.0 [skip ci]
github-actions[bot] Jan 13, 2026
bfbb627
chore: bump version to 0.14.0 [skip ci]
github-actions[bot] Jan 14, 2026
71bbe0d
chore: bump version to 0.15.0 [skip ci]
github-actions[bot] Jan 15, 2026
aeade2f
chore: bump version to 0.16.0 [skip ci]
github-actions[bot] Jan 16, 2026
facd9fe
chore: bump version to 0.17.0 [skip ci]
github-actions[bot] Jan 19, 2026
da1e200
chore: bump version to 0.18.0 [skip ci]
github-actions[bot] Jan 20, 2026
4ba203a
chore: bump version to 0.19.0 [skip ci]
github-actions[bot] Jan 21, 2026
e5e2113
chore: bump version to 0.20.0 [skip ci]
github-actions[bot] Jan 22, 2026
4ece8c9
chore: bump version to 0.21.0 [skip ci]
github-actions[bot] Jan 23, 2026
3c4c8f6
chore: bump version to 0.22.0 [skip ci]
github-actions[bot] Jan 26, 2026
b2deac7
chore: bump version to 0.23.0 [skip ci]
github-actions[bot] Jan 27, 2026
514c7fb
chore: bump version to 0.24.0 [skip ci]
github-actions[bot] Jan 28, 2026
c1fae28
chore: bump version to 0.25.0 [skip ci]
github-actions[bot] Jan 29, 2026
54fb170
chore: bump version to 0.26.0 [skip ci]
github-actions[bot] Jan 30, 2026
a36214f
chore: bump version to 0.27.0 [skip ci]
github-actions[bot] Feb 2, 2026
62d8288
chore: bump version to 0.28.0 [skip ci]
github-actions[bot] Feb 3, 2026
5119f42
chore: bump version to 0.29.0 [skip ci]
github-actions[bot] Feb 4, 2026
3c7cc97
chore: bump version to 0.30.0 [skip ci]
github-actions[bot] Feb 5, 2026
23dc72e
chore: bump version to 0.31.0 [skip ci]
github-actions[bot] Feb 6, 2026
41124c2
chore: bump version to 0.32.0 [skip ci]
github-actions[bot] Feb 9, 2026
383694b
chore: bump version to 0.33.0 [skip ci]
github-actions[bot] Feb 10, 2026
180599e
chore: bump version to 0.34.0 [skip ci]
github-actions[bot] Feb 11, 2026
1dadbcf
chore: bump version to 0.35.0 [skip ci]
github-actions[bot] Feb 12, 2026
e20b8be
chore: bump version to 0.36.0 [skip ci]
github-actions[bot] Feb 13, 2026
331d381
chore: bump version to 0.37.0 [skip ci]
github-actions[bot] Feb 16, 2026
8b62783
chore: bump version to 0.38.0 [skip ci]
github-actions[bot] Feb 17, 2026
c6a9c05
chore: bump version to 0.39.0 [skip ci]
github-actions[bot] Feb 18, 2026
027285d
chore: bump version to 0.40.0 [skip ci]
github-actions[bot] Feb 19, 2026
fe4ba1d
chore: bump version to 0.41.0 [skip ci]
github-actions[bot] Feb 20, 2026
a88d523
chore: bump version to 0.42.0 [skip ci]
github-actions[bot] Feb 23, 2026
9f3001f
chore: bump version to 0.43.0 [skip ci]
github-actions[bot] Feb 24, 2026
8d765f5
chore: bump version to 0.44.0 [skip ci]
github-actions[bot] Feb 25, 2026
7749e80
chore: bump version to 0.45.0 [skip ci]
github-actions[bot] Feb 26, 2026
bac55b8
chore: bump version to 0.46.0 [skip ci]
github-actions[bot] Feb 27, 2026
bd38320
chore: bump version to 0.47.0 [skip ci]
github-actions[bot] Mar 2, 2026
3f41b7d
chore: bump version to 0.48.0 [skip ci]
github-actions[bot] Mar 3, 2026
0abb999
chore: bump version to 0.49.0 [skip ci]
github-actions[bot] Mar 4, 2026
f4ef2d4
chore: bump version to 0.50.0 [skip ci]
github-actions[bot] Mar 5, 2026
281a2cd
chore: bump version to 0.51.0 [skip ci]
github-actions[bot] Mar 6, 2026
3835a6f
chore: bump version to 0.52.0 [skip ci]
github-actions[bot] Mar 9, 2026
9658a0c
chore: bump version to 0.53.0 [skip ci]
github-actions[bot] Mar 10, 2026
9ded7d0
chore: bump version to 0.54.0 [skip ci]
github-actions[bot] Mar 11, 2026
bdad69e
chore: bump version to 0.55.0 [skip ci]
github-actions[bot] Mar 12, 2026
c57ac15
chore: bump version to 0.56.0 [skip ci]
github-actions[bot] Mar 13, 2026
5835dc7
chore: bump version to 0.57.0 [skip ci]
github-actions[bot] Mar 16, 2026
3743d5b
chore: bump version to 0.58.0 [skip ci]
github-actions[bot] Mar 17, 2026
f86921b
chore: bump version to 0.59.0 [skip ci]
github-actions[bot] Mar 18, 2026
6701e0b
chore: bump version to 0.60.0 [skip ci]
github-actions[bot] Mar 19, 2026
c6f067d
chore: bump version to 0.61.0 [skip ci]
github-actions[bot] Mar 20, 2026
0aa4122
chore: bump version to 0.62.0 [skip ci]
github-actions[bot] Mar 23, 2026
35d6eb3
chore: bump version to 0.63.0 [skip ci]
github-actions[bot] Mar 24, 2026
7c052d2
chore: bump version to 0.64.0 [skip ci]
github-actions[bot] Mar 25, 2026
5ddd87c
chore: bump version to 0.65.0 [skip ci]
github-actions[bot] Mar 26, 2026
9025f4a
chore: bump version to 0.66.0 [skip ci]
github-actions[bot] Mar 27, 2026
ffa2fb6
chore: bump version to 0.67.0 [skip ci]
github-actions[bot] Mar 30, 2026
fd356d2
chore: bump version to 0.68.0 [skip ci]
github-actions[bot] Mar 31, 2026
2373771
chore: bump version to 0.69.0 [skip ci]
github-actions[bot] Apr 1, 2026
41cbdf5
chore: bump version to 0.70.0 [skip ci]
github-actions[bot] Apr 2, 2026
2cbef75
chore: bump version to 0.71.0 [skip ci]
github-actions[bot] Apr 3, 2026
5946052
chore: bump version to 0.72.0 [skip ci]
github-actions[bot] Apr 6, 2026
41e0a7a
chore: bump version to 0.73.0 [skip ci]
github-actions[bot] Apr 7, 2026
026144e
chore: bump version to 0.74.0 [skip ci]
github-actions[bot] Apr 8, 2026
27cb753
chore: bump version to 0.75.0 [skip ci]
github-actions[bot] Apr 9, 2026
fd05003
chore: bump version to 0.76.0 [skip ci]
github-actions[bot] Apr 10, 2026
abb8067
chore: bump version to 0.77.0 [skip ci]
github-actions[bot] Apr 13, 2026
57103fe
chore: bump version to 0.78.0 [skip ci]
github-actions[bot] Apr 14, 2026
dd1e389
chore: bump version to 0.79.0 [skip ci]
github-actions[bot] Apr 15, 2026
0e9b37f
chore: bump version to 0.80.0 [skip ci]
github-actions[bot] Apr 16, 2026
e3e162a
chore: bump version to 0.81.0 [skip ci]
github-actions[bot] Apr 17, 2026
3799ed9
chore: bump version to 0.82.0 [skip ci]
github-actions[bot] Apr 20, 2026
ffe39c5
chore: bump version to 0.83.0 [skip ci]
github-actions[bot] Apr 21, 2026
874267d
chore: bump version to 0.84.0 [skip ci]
github-actions[bot] Apr 22, 2026
25848c5
chore: bump version to 0.85.0 [skip ci]
github-actions[bot] Apr 23, 2026
e04c751
chore: bump version to 0.86.0 [skip ci]
github-actions[bot] Apr 24, 2026
d2f872a
chore: bump version to 0.87.0 [skip ci]
github-actions[bot] Apr 27, 2026
473eaf3
chore: bump version to 0.88.0 [skip ci]
github-actions[bot] Apr 28, 2026
3416cf8
chore: bump version to 0.89.0 [skip ci]
github-actions[bot] Apr 29, 2026
4e06134
chore: bump version to 0.90.0 [skip ci]
github-actions[bot] Apr 30, 2026
c9ce3d1
chore: bump version to 0.91.0 [skip ci]
github-actions[bot] May 1, 2026
6470fd8
chore: bump version to 0.92.0 [skip ci]
github-actions[bot] May 4, 2026
1d2b8f2
chore: bump version to 0.93.0 [skip ci]
github-actions[bot] May 5, 2026
2779062
chore: bump version to 0.94.0 [skip ci]
github-actions[bot] May 6, 2026
ef46aaa
chore: bump version to 0.95.0 [skip ci]
github-actions[bot] May 7, 2026
0351152
chore: bump version to 0.96.0 [skip ci]
github-actions[bot] May 8, 2026
13f4568
chore: bump version to 0.97.0 [skip ci]
github-actions[bot] May 11, 2026
7d01f1c
chore: bump version to 0.98.0 [skip ci]
github-actions[bot] May 12, 2026
62db471
chore: bump version to 0.99.0 [skip ci]
github-actions[bot] May 13, 2026
b18503f
chore: bump version to 0.100.0 [skip ci]
github-actions[bot] May 14, 2026
bba7631
chore: bump version to 0.101.0 [skip ci]
github-actions[bot] May 15, 2026
a39a6b4
chore: bump version to 0.102.0 [skip ci]
github-actions[bot] May 18, 2026
8f1502d
chore: bump version to 0.103.0 [skip ci]
github-actions[bot] May 19, 2026
b116b41
chore: bump version to 0.104.0 [skip ci]
github-actions[bot] May 21, 2026
8524fb0
chore: bump version to 0.105.0 [skip ci]
github-actions[bot] May 21, 2026
5a955b5
chore: bump version to 0.106.0 [skip ci]
github-actions[bot] May 22, 2026
4181d67
chore: bump version to 0.107.0 [skip ci]
github-actions[bot] May 25, 2026
c7328cd
chore: bump version to 0.108.0 [skip ci]
github-actions[bot] May 26, 2026
21f82df
chore: bump version to 0.109.0 [skip ci]
github-actions[bot] May 27, 2026
ee0e5a3
chore: bump version to 0.110.0 [skip ci]
github-actions[bot] May 29, 2026
de17b19
chore: bump version to 0.111.0 [skip ci]
github-actions[bot] May 30, 2026
736b0d4
chore: bump version to 0.112.0 [skip ci]
github-actions[bot] Jun 2, 2026
0c68b1a
chore: bump version to 0.113.0 [skip ci]
github-actions[bot] Jun 3, 2026
fb4826c
chore: bump version to 0.114.0 [skip ci]
github-actions[bot] Jun 4, 2026
1a724db
chore: bump version to 0.115.0 [skip ci]
github-actions[bot] Jun 4, 2026
8634011
chore: bump version to 0.116.0 [skip ci]
github-actions[bot] Jun 5, 2026
cbd290e
chore: bump version to 0.117.0 [skip ci]
github-actions[bot] Jun 8, 2026
5c7a6f0
chore: bump version to 0.118.0 [skip ci]
github-actions[bot] Jun 10, 2026
b62f1ca
chore: bump version to 0.119.0 [skip ci]
github-actions[bot] Jun 11, 2026
f5d83f5
chore: bump version to 0.120.0 [skip ci]
github-actions[bot] Jun 12, 2026
2303da2
chore: bump version to 0.121.0 [skip ci]
github-actions[bot] Jun 13, 2026
f2bf6c9
chore: bump version to 0.122.0 [skip ci]
github-actions[bot] Jun 16, 2026
699e461
chore: bump version to 0.123.0 [skip ci]
github-actions[bot] Jun 17, 2026
d49d794
chore: bump version to 0.124.0 [skip ci]
github-actions[bot] Jun 18, 2026
e2c82c7
chore: bump version to 0.125.0 [skip ci]
github-actions[bot] Jun 19, 2026
f6a667d
chore: bump version to 0.126.0 [skip ci]
github-actions[bot] Jun 20, 2026
042b14e
chore: bump version to 0.127.0 [skip ci]
github-actions[bot] Jun 22, 2026
6f0e086
chore: bump version to 0.128.0 [skip ci]
github-actions[bot] Jun 23, 2026
e497e50
chore: bump version to 0.129.0 [skip ci]
github-actions[bot] Jun 24, 2026
b2869bf
chore: bump version to 0.130.0 [skip ci]
github-actions[bot] Jun 26, 2026
cdec390
chore: bump version to 0.131.0 [skip ci]
github-actions[bot] Jun 26, 2026
c3efadc
chore: bump version to 0.132.0 [skip ci]
github-actions[bot] Jun 29, 2026
9623257
chore: bump version to 0.133.0 [skip ci]
github-actions[bot] Jun 30, 2026
a493fa3
chore: bump version to 0.134.0 [skip ci]
github-actions[bot] Jul 2, 2026
f3dfea5
chore: bump version to 0.135.0 [skip ci]
github-actions[bot] Jul 2, 2026
9a68b5d
chore: bump version to 0.136.0 [skip ci]
github-actions[bot] Jul 3, 2026
63c0a69
chore: bump version to 0.137.0 [skip ci]
github-actions[bot] Jul 6, 2026
fa042b2
chore: bump version to 0.138.0 [skip ci]
github-actions[bot] Jul 7, 2026
bd3d91e
chore: bump version to 0.139.0 [skip ci]
github-actions[bot] Jul 9, 2026
68ea01a
chore: bump version to 0.140.0 [skip ci]
github-actions[bot] Jul 9, 2026
5352408
chore: bump version to 0.141.0 [skip ci]
github-actions[bot] Jul 10, 2026
b53b9e0
chore: bump version to 0.142.0 [skip ci]
github-actions[bot] Jul 13, 2026
6d3a7b8
chore: bump version to 0.143.0 [skip ci]
github-actions[bot] Jul 14, 2026
f41830c
chore: bump version to 0.144.0 [skip ci]
github-actions[bot] Jul 15, 2026
3412240
chore: bump version to 0.145.0 [skip ci]
github-actions[bot] Jul 16, 2026
041f3e3
chore: bump version to 0.146.0 [skip ci]
github-actions[bot] Jul 17, 2026
c1040a7
chore: bump version to 0.147.0 [skip ci]
github-actions[bot] Jul 20, 2026
701ad08
chore: bump version to 0.148.0 [skip ci]
github-actions[bot] Jul 21, 2026
9c85f5b
chore: bump version to 0.149.0 [skip ci]
github-actions[bot] Jul 22, 2026
39aa5d0
chore: bump version to 0.150.0 [skip ci]
github-actions[bot] Jul 23, 2026
8632d8b
chore: bump version to 0.151.0 [skip ci]
github-actions[bot] Jul 24, 2026
02f1274
chore: bump version to 0.152.0 [skip ci]
github-actions[bot] Jul 27, 2026
95c5c41
chore: bump version to 0.153.0 [skip ci]
github-actions[bot] Jul 28, 2026
aa4eaf0
chore: bump version to 0.154.0 [skip ci]
github-actions[bot] Jul 29, 2026
73b9c44
chore: bump version to 0.155.0 [skip ci]
github-actions[bot] Jul 30, 2026
6844eeb
chore: bump version to 0.156.0 [skip ci]
github-actions[bot] Jul 31, 2026
294e486
chore: bump version to 0.157.0 [skip ci]
github-actions[bot] Aug 3, 2026
c5d224d
chore: bump version to 0.158.0 [skip ci]
github-actions[bot] Aug 4, 2026
c3da718
chore: bump version to 0.159.0 [skip ci]
github-actions[bot] Aug 5, 2026
91dab15
chore: bump version to 0.160.0 [skip ci]
github-actions[bot] Aug 7, 2026
db61913
chore: bump version to 0.161.0 [skip ci]
github-actions[bot] Aug 7, 2026
7927477
chore: bump version to 0.162.0 [skip ci]
github-actions[bot] Aug 10, 2026
9fd4c0f
chore: bump version to 0.163.0 [skip ci]
github-actions[bot] Aug 11, 2026
bb6568e
chore: bump version to 0.164.0 [skip ci]
github-actions[bot] Aug 12, 2026
26af9c0
chore: bump version to 0.165.0 [skip ci]
github-actions[bot] Aug 13, 2026
57874c5
chore: bump version to 0.166.0 [skip ci]
github-actions[bot] Aug 14, 2026
4146169
chore: bump version to 0.167.0 [skip ci]
github-actions[bot] Aug 17, 2026
d9bc494
chore: bump version to 0.168.0 [skip ci]
github-actions[bot] Aug 18, 2026
bb9082d
chore: bump version to 0.169.0 [skip ci]
github-actions[bot] Aug 19, 2026
1c44cde
chore: bump version to 0.170.0 [skip ci]
github-actions[bot] Aug 20, 2026
62989e2
chore: bump version to 0.171.0 [skip ci]
github-actions[bot] Aug 21, 2026
10e48db
chore: bump version to 0.172.0 [skip ci]
github-actions[bot] Aug 24, 2026
68ca95b
chore: bump version to 0.173.0 [skip ci]
github-actions[bot] Aug 25, 2026
77d2489
chore: bump version to 0.174.0 [skip ci]
github-actions[bot] Aug 27, 2026
4e07e1b
chore: bump version to 0.175.0 [skip ci]
github-actions[bot] Aug 28, 2026
4e3ebab
chore: bump version to 0.176.0 [skip ci]
github-actions[bot] Aug 29, 2026
7a16004
chore: bump version to 0.177.0 [skip ci]
github-actions[bot] Sep 1, 2026
1cb67bf
chore: bump version to 0.178.0 [skip ci]
github-actions[bot] Sep 2, 2026
ea05ecc
chore: bump version to 0.179.0 [skip ci]
github-actions[bot] Sep 3, 2026
4b0d75e
chore: bump version to 0.180.0 [skip ci]
github-actions[bot] Sep 4, 2026
552a71f
chore: bump version to 0.181.0 [skip ci]
github-actions[bot] Sep 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
34 changes: 26 additions & 8 deletions .github/workflows/promote-staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,39 @@ jobs:
echo "Commits to be promoted:"
echo "$COMMITS"

# Skip if only chore/docs commits
NON_CHORE=$(echo "$COMMITS" | grep -vE "^(chore|docs|ci|style|refactor)(\(.+\))?:" || true)
if [ -z "$NON_CHORE" ]; then
echo "Only chore/docs commits. Skipping version bump."
# Check if any extension files actually changed
EXTENSION_FILES=$(git diff --name-only origin/main..staging -- extension/ || true)
echo "Extension files changed:"
echo "$EXTENSION_FILES"

if [ -z "$EXTENSION_FILES" ]; then
echo "No extension files changed. Skipping version bump."
echo "should_bump=false" >> $GITHUB_OUTPUT
exit 0
fi

# Determine bump type from conventional commits
# Filter out non-extension commits (chore, docs, landing page changes)
# These don't trigger version bumps
EXTENSION_COMMITS=$(echo "$COMMITS" | grep -vE "^(chore|docs|ci|style|refactor)(\(.+\))?:" | grep -vE "^(feat|fix)\(landing\):" || true)

if [ -z "$EXTENSION_COMMITS" ]; then
echo "Only chore/docs/landing commits. Skipping version bump."
echo "should_bump=false" >> $GITHUB_OUTPUT
exit 0
fi

echo "Extension-relevant commits:"
echo "$EXTENSION_COMMITS"

# Determine bump type from extension commits only
BUMP="patch" # Default

if echo "$COMMITS" | grep -qE "^feat(\(.+\))?!:|BREAKING CHANGE:"; then
# Check for breaking changes (exclude landing scope)
if echo "$EXTENSION_COMMITS" | grep -qE "^feat(\([^)]*\))?!:|BREAKING CHANGE:"; then
BUMP="major"
echo "Found breaking change - major bump"
elif echo "$COMMITS" | grep -qE "^feat(\(.+\))?:"; then
# Check for features (exclude landing scope)
elif echo "$EXTENSION_COMMITS" | grep -qE "^feat(\([^)]*\))?:"; then
BUMP="minor"
echo "Found feat commit - minor bump"
else
Expand Down Expand Up @@ -99,7 +117,7 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add extension/manifest.json
git commit -m "chore: bump version to $NEW_VERSION [skip ci]"
git commit -m "chore: bump version to $NEW_VERSION"
git push origin staging

echo "Bumped version to $NEW_VERSION on staging"
Expand Down
25 changes: 23 additions & 2 deletions .github/workflows/publish-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,12 @@ jobs:
git push origin "$TAG"

# Get recent commits for release notes (from previous tag)
# Filter out: merge commits, chore, docs, ci, style, refactor
LAST_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
NOTES=$(git log $LAST_TAG..HEAD --pretty=format:"- %s" | grep -vE "^- chore:" | head -20)
NOTES=$(git log $LAST_TAG..HEAD --pretty=format:"- %s" | grep -vE "^- (Merge|chore|docs|ci|style|refactor)" | head -20)
else
NOTES=$(git log --pretty=format:"- %s" -10 | grep -vE "^- chore:")
NOTES=$(git log --pretty=format:"- %s" -10 | grep -vE "^- (Merge|chore|docs|ci|style|refactor)")
fi

# Write release notes to temp file to avoid YAML parsing issues
Expand Down Expand Up @@ -111,3 +112,23 @@ jobs:
client-secret: ${{ secrets.CHROME_CLIENT_SECRET }}
refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }}
publish: true

sync-staging:
needs: [tag-and-release, build-and-publish]
if: always() && needs.tag-and-release.result == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: staging
fetch-depth: 0
token: ${{ secrets.STAGING_PAT }}

- name: Sync staging with main
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git fetch origin main
git merge origin/main -m "chore: sync staging with main after release"
git push origin staging
echo "✅ Staging synced with main"
53 changes: 47 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,15 +183,32 @@ gh pr create --base staging --title "feat: add new feature" --body "Description"

### Conventional Commits (Auto-Versioning)

Version bumps are automatic based on commit message prefixes:
Version bumps are automatic based on commit message prefixes.

**CI enforces conventional commit format** - PRs with invalid messages will be rejected.

| Prefix | Version Bump | Example |
|--------|--------------|---------|
| `fix:` | Patch (0.0.X) | `fix: resolve scroll issue` |
| `feat:` | Minor (0.X.0) | `feat: add dark mode` |
| `feat!:` | Major (X.0.0) | `feat!: redesign entire UI` |
| `chore:` | No bump | `chore: update docs` |
| `chore:` | No bump | `chore: update deps` |
| `docs:` | No bump | `docs: fix typo in README` |
| `ci:` | No bump | `ci: update workflow` |
| `style:` | No bump | `style: format code` |
| `refactor:` | No bump | `refactor: extract helper` |
| `test:` | No bump | `test: add unit tests` |

### Landing Page Changes

Use `(landing)` scope for landing page changes - **these don't trigger Chrome extension releases**:

| Commit | Version Bump | Releases Extension? |
|--------|--------------|---------------------|
| `feat(landing): redesign hero` | None | No |
| `fix(landing): mobile layout` | None | No |
| `feat: add dark mode` | Minor | Yes |
| `fix: resolve quiz crash` | Patch | Yes |

### CI/CD Pipeline

Expand Down Expand Up @@ -220,16 +237,36 @@ feature/* ──PR──→ staging ──────────────
1. Create `hotfix/*` branch from main
2. Make fix AND bump version in `extension/manifest.json` manually
3. PR to main → CI validates version was bumped
4. Merge → auto-publishes like normal release
4. Merge → auto-publishes like normal release + auto-syncs staging

**Manual promotion (don't want to wait for 6pm):**
1. Go to: Actions → "Promote Staging to Main"
2. Click "Run workflow" → Select branch: `staging` → Run
3. Same process as daily, just triggered manually

### Workflows

| File | Trigger | Purpose |
|------|---------|---------|
| `ci.yml` | PR to main/staging | Validate branch, run tests, check hotfix version |
| `publish-extension.yml` | Push to main | Tag, release, publish (reads version from manifest) |
| `ci.yml` | PR to main/staging | Validate branch, lint commits, run tests, check hotfix version |
| `publish-extension.yml` | Push to main | Tag, release, publish, sync staging with main |
| `promote-staging.yml` | Daily 6pm EST / manual | Bump version on staging, PR to main |

**CI checks (`ci.yml`):**
- `check-branch-name` - Validates branch naming (feature/*, fix/* → staging; staging, hotfix/* → main)
- `check-commit-messages` - Enforces conventional commit format (skipped for staging → main)
- `check-hotfix-version` - Ensures hotfix PRs include manual version bump
- `run-tests` - Runs `npm test`

**Secrets required:**
| Secret | Purpose |
|--------|---------|
| `CHROME_EXTENSION_ID` | Chrome Web Store extension ID |
| `CHROME_CLIENT_ID` | OAuth client ID |
| `CHROME_CLIENT_SECRET` | OAuth client secret |
| `CHROME_REFRESH_TOKEN` | OAuth refresh token |
| `STAGING_PAT` | Personal Access Token for pushing to staging (bypasses branch protection) |

---

## Architecture Principles
Expand Down Expand Up @@ -325,9 +362,13 @@ npm test -- --watch # Watch mode
- **Re-runs use original commit code** - Push fix to new branch, don't just re-run
- **Release creation is idempotent** - Skips if tag already exists
- **Chrome Store review** - First public publish needs manual approval
- **Version bumped on staging** - Not main (main is protected, staging isn't)
- **Version bumped on staging** - Uses STAGING_PAT to bypass branch protection
- **Hotfixes need manual version bump** - CI checks that hotfix PRs bump the version
- **promote-staging calculates version** - From commits since last tag, highest bump wins
- **Only extension/ changes trigger release** - Changes to README, tests, scripts alone won't publish
- **`[skip ci]` hangs required checks** - Never use in commits that will be in PRs
- **STAGING_PAT expires** - Fine-grained PAT needs rotation (check expiration date)
- **Landing page changes use `(landing)` scope** - Won't trigger extension release

---

Expand Down
2 changes: 1 addition & 1 deletion extension/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "PatternPulse - LeetCode Pattern Trainer",
"version": "0.10.0",
"version": "0.181.0",
"description": "Train your pattern recognition! Quiz yourself on algorithmic patterns before seeing LeetCode hints, tags, and solutions.",
"icons": {
"16": "icons/icon-16.png",
Expand Down
Loading