Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
02c59f8
feat: add bootstrap loader to popup for improved initial load experience
navidshad May 2, 2026
c352f62
Merge remote-tracking branch 'origin/HEAD' into dev
navidshad May 3, 2026
45ac1c4
Merge branch 'dev' into CU-86et9bk39_Add-Support-for-Learning-from-Ar…
navidshad May 3, 2026
5122962
refactor: decouple ConsoleCrane from UI components by implementing an…
navidshad May 3, 2026
0b33c6d
Merge pull request #16 from codebridger/CU-86et9bk39_Add-Support-for-…
navidshad May 3, 2026
76ad53a
refactor: decouple ConsoleCrane into a standalone content script and …
navidshad May 3, 2026
adb4be4
Merge branch 'dev' into CU-86exfjner_Implement-single-translate-on-po…
navidshad May 3, 2026
efb435c
feat: add translate input on popup home view
navidshad May 3, 2026
a0968ec
feat: refresh popup help view to cover web text and quick translate #…
navidshad May 3, 2026
9c89f83
feat: add loading state and section divider to popup translate
navidshad May 3, 2026
24f087b
feat: add prerelease support for dev branch with environment-specific…
navidshad May 3, 2026
f67bd59
chore(release): 1.11.0-dev.1 [skip ci]
semantic-release-bot May 3, 2026
9bd2dda
Merge pull request #17 from codebridger/CU-86exfjner_Implement-single…
navidshad May 3, 2026
534493c
chore(release): 1.11.0-dev.2 [skip ci]
semantic-release-bot May 3, 2026
1f58e69
test: add Vitest scaffold and Tier-1 unit tests #86exfn1e3
navidshad May 3, 2026
3c67b53
test: add Tier-2 Vue component and store tests #86exfn1e3
navidshad May 3, 2026
22c4a37
docs: note env-routing in release-pipeline step 3
navidshad May 3, 2026
ed950e4
test: add Tier-3 Playwright E2E with unpacked extension #86exfn1e3
navidshad May 3, 2026
be85f93
ci: gate releases on a verify job that runs unit and e2e tests #86exf…
navidshad May 3, 2026
3b5471d
test: round-out Tier-3 with route-params fix, visual + lifecycle E2E,…
navidshad May 3, 2026
a2d4e7d
test: cover popup translate input and Persian translate-save E2E #86e…
navidshad May 3, 2026
13f31b0
ci: filter dashboard-app paths from typecheck and gate playwright rep…
navidshad May 3, 2026
aed4dc3
ci: drop --headless=new arg and emit playwright HTML report in CI #86…
navidshad May 3, 2026
120bc19
ci: restore --headless=new and add Linux sandbox flags so extensions …
navidshad May 3, 2026
eae7598
ci: write non-empty stub env values + fix typecheck filter for prefix…
navidshad May 4, 2026
e63f078
ci: clean typecheck summary output and upload playwright report on su…
navidshad May 4, 2026
ddeb5e4
docs: document the testing setup in CLAUDE.md #86exfn1e3
navidshad May 4, 2026
2f6c3ce
Merge pull request #18 from codebridger/CU-86exfn1e3_Implement-test-s…
navidshad May 4, 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
98 changes: 98 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,114 @@ on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev

permissions:
contents: write
issues: write
pull-requests: write

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
verify:
name: Verify (lint, unit, build, e2e)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

# Required because src/stores/profile.ts imports types from
# ../../../dashboard-app/frontend/types/database.type — see CLAUDE.md.
- name: Checkout sibling dashboard-app
run: git clone --depth 1 https://github.com/codebridger/subturtle-dashboard-app.git ../dashboard-app

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: yarn

- name: Install dependencies
run: yarn install --frozen-lockfile

- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
playwright-${{ runner.os }}-

- name: Install Playwright Chromium
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npx playwright install chromium --with-deps

- name: Install Playwright system deps (cache hit path)
if: steps.playwright-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps chromium

- name: Type check
run: yarn typecheck

- name: Unit tests (Vitest)
run: yarn test

# dotenv-webpack is configured with `safe: true`, so the build needs
# every key in .env.example to exist at build time. We write
# non-empty placeholders rather than copying the empty .env.example
# — `mixpanel.init("")` throws synchronously during the content-script
# import chain, which silently halts every Vue mount and was the root
# cause of e2e tests failing on `#subturtle-{nibble,console-crane}-root`
# never appearing. SUBTURTLE_API_URL points at the local fixtures
# server so any auth/translate calls 404 instead of escaping to the
# real backend.
- name: Stub .env.production for verify build
run: |
cat > .env.production <<'EOF'
MIXPANEL_PROJECT_TOKEN=ci_e2e_stub_token
MIXPANEL_API_HOST=http://localhost:4173/_mixpanel_stub
GOOGLE_TRANSLATE_KEY=ci_e2e_stub_key
GOOGLE_TRANSLATE_PROXY_URL=http://localhost:4173/_translate_proxy_stub
UNINSTALL_FORM_URL=http://localhost:4173/_uninstall_stub
SUBTURTLE_API_URL=http://localhost:4173
SUBTURTLE_DASHBOARD_URL=http://localhost:4173/_dashboard_stub
GOOGLE_OAUTH_CLIENT_ID=ci_e2e_stub_oauth_client
EOF

- name: Build extension
run: yarn build

- name: E2E tests (Playwright)
run: yarn test:e2e

- name: Upload Playwright report
# Run on both success and failure (anything except job cancel) so
# the HTML report is downloadable for green runs too. The
# hashFiles guard skips silently when typecheck or unit tests
# failed before Playwright produced any output.
if: ${{ !cancelled() && hashFiles('playwright-report/**') != '' }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 7

release:
name: Release
needs: verify
if: github.event_name == 'push'
runs-on: ubuntu-latest
environment: ${{ github.ref_name == 'main' && 'prod' || 'dev' }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ dist
static/key-file.json
*.zip
.npmrc
/.claude
/playwright-report
/test-results
38 changes: 0 additions & 38 deletions .releaserc.json

This file was deleted.

18 changes: 18 additions & 0 deletions CHANGELOG-DEV.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# [1.11.0-dev.2](https://github.com/codebridger/subturtle-extension-apps/compare/v1.11.0-dev.1...v1.11.0-dev.2) (2026-05-03)


### Features

* add loading state and section divider to popup translate ([9c89f83](https://github.com/codebridger/subturtle-extension-apps/commit/9c89f83557f899bc1465de7625d0149489c73dda)), closes [#86exfjner](https://github.com/codebridger/subturtle-extension-apps/issues/86exfjner)
* add translate input on popup home view ([efb435c](https://github.com/codebridger/subturtle-extension-apps/commit/efb435cbbbea03598fefe6a6bff0c8fd989caaa8)), closes [#86exfjner](https://github.com/codebridger/subturtle-extension-apps/issues/86exfjner)
* refresh popup help view to cover web text and quick translate [#86](https://github.com/codebridger/subturtle-extension-apps/issues/86)exfjner ([a0968ec](https://github.com/codebridger/subturtle-extension-apps/commit/a0968ec2ba5c551d94151075ce08217675cedbd9)), closes [#86exfjner](https://github.com/codebridger/subturtle-extension-apps/issues/86exfjner)

# [1.11.0-dev.1](https://github.com/codebridger/subturtle-extension-apps/compare/v1.10.1...v1.11.0-dev.1) (2026-05-03)


### Features

* add bootstrap loader to popup for improved initial load experience ([02c59f8](https://github.com/codebridger/subturtle-extension-apps/commit/02c59f89232f44c4ef0dd3a4dbbef07f37469e80))
* add prerelease support for dev branch with environment-specific changelogs and configs ([24f087b](https://github.com/codebridger/subturtle-extension-apps/commit/24f087b5b8e6cc4c7c53ed1f2e2f72b974d01f6d))

# Dev Changelog
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Changelog
Loading
Loading