Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
2e35e3d
chore: scaffold v2 on bun, wxt and bun:test
fathiraz Sep 4, 2026
31966f9
feat: port tagged error ADT, add pat storage and message protocol
fathiraz Sep 4, 2026
4c25c81
feat: add thin background graphql client and message handlers
fathiraz Sep 4, 2026
fa81468
feat: move rate-limit retry into declarative query policy
fathiraz Sep 4, 2026
e742ed1
feat: add lean project table dom helpers
fathiraz Sep 4, 2026
5b9b8e6
fix: resolve bun-types for tsc and drop stale vitest config
fathiraz Sep 4, 2026
df8fe26
feat: inject row selection control into the project table
fathiraz Sep 4, 2026
3e01ea9
feat: add token setup popup with scope reporting
fathiraz Sep 4, 2026
6c674a2
feat: persist project field metadata via tanstack db collection
fathiraz Sep 4, 2026
6d1f83c
feat: add paced sequential write queue
fathiraz Sep 4, 2026
2289e78
feat: add chip-composing selection bar and queue toast
fathiraz Sep 4, 2026
c104fd7
fix: patch customElements via defineProperty, not assignment
fathiraz Sep 4, 2026
8ef0346
chore: update agent rules and ci/release workflows for the v2 stack
fathiraz Sep 4, 2026
4544475
test: run the suite on vitest per the wxt guide
fathiraz Sep 4, 2026
f1ba20f
refactor: use ThemeProvider from @primer/react/next
fathiraz Sep 4, 2026
d8600ec
refactor: collapse 7-class error ADT into one GithubError
fathiraz Sep 4, 2026
4ab5f4b
refactor: extract githubFetch, reuse it in validateToken
fathiraz Sep 4, 2026
263da0c
chore: remove dead code
fathiraz Sep 4, 2026
2ed56b3
chore: restore lint and format tooling from main
fathiraz Sep 4, 2026
6a9184a
docs: update AGENTS.md for the collapsed error type
fathiraz Sep 4, 2026
344542a
fix: resolve real ProjectV2Item ids for bulk field writes
fathiraz Sep 4, 2026
7125d51
feat: add pure popup view-state machine
fathiraz Sep 4, 2026
ceec870
feat: add required-scope model with pre-validation neutral state
fathiraz Sep 4, 2026
6244518
refactor: extract shared token hook for popup and setup
fathiraz Sep 4, 2026
c3f6fe2
feat: rebuild popup as one shell with four token states
fathiraz Sep 4, 2026
3443c2b
feat: add full setup page with scope justification panel
fathiraz Sep 4, 2026
76b13ae
feat: move row checkbox into the leading table gutter
fathiraz Sep 4, 2026
11956eb
fix: size popup from content so the toolbar popup renders
fathiraz Sep 5, 2026
a69b41b
feat: persist token status and speed up the write queue
fathiraz Sep 5, 2026
53b5344
docs: correct documented write-queue pace to match the code
fathiraz Sep 5, 2026
9df0788
feat: record token freshness and share the PAT url
fathiraz Sep 5, 2026
8917427
feat: add a disconnect-confirm state to the token machine
fathiraz Sep 5, 2026
98e7338
feat: extract shared token account, scope and confirm pieces
fathiraz Sep 5, 2026
de90b30
feat: rebuild the popup connected and confirm states
fathiraz Sep 5, 2026
5d6244e
feat: give the setup panel a connected and confirm state
fathiraz Sep 5, 2026
aa985a2
feat: locate group header and column header rows
fathiraz Sep 5, 2026
a20289f
feat: derive tri-state selection and batch the store
fathiraz Sep 5, 2026
7dfe6dd
feat: add header and per-group selection checkboxes
fathiraz Sep 5, 2026
8aee2f4
feat: implement the advertised select-all and clear shortcuts
fathiraz Sep 5, 2026
782c878
feat: show selection scope and project-wide escalation in the bar
fathiraz Sep 5, 2026
95e3651
fix: hand-roll relativeTime to match design copy exactly
fathiraz Sep 5, 2026
fe80b71
fix: anchor the header and row checkboxes to the gutter column
fathiraz Sep 5, 2026
36de5ad
fix: give the row checkbox the design's 18px gap from the row number
fathiraz Sep 5, 2026
ffe9fc3
feat: model the command bar's chips and typeahead
fathiraz Sep 5, 2026
9ca4c6e
feat: read item titles off the project table
fathiraz Sep 5, 2026
127c124
feat: track per-item queue state, rate-limit waits, and cancel
fathiraz Sep 5, 2026
9a9355b
fix: annotate suggestionsOf's flatMap callback return type
fathiraz Sep 5, 2026
aa36c0e
feat: make the selection bar a typeahead command palette
fathiraz Sep 5, 2026
c717507
feat: give the queue card its four live states
fathiraz Sep 5, 2026
b4b1475
feat: give every token state one shared status callout
fathiraz Sep 5, 2026
45dc968
feat: share one status callout across the popup and full setup
fathiraz Sep 5, 2026
61a58de
fix: compute the queue countdown from state instead of calling Date.n…
fathiraz Sep 5, 2026
4e8557e
fix: keep relativeTime total when a stored record has no checkedAt
fathiraz Sep 6, 2026
d7dd39b
fix: make the reduced-motion css test actually isolate each media block
fathiraz Sep 6, 2026
82aae83
fix: stop a cancelled write task from mutating a later run's state
fathiraz Sep 6, 2026
a56aa8e
test: cover the real write-queue state machine, not a stand-in queuer
fathiraz Sep 6, 2026
cc671a4
fix: wire the field typeahead up as a real aria combobox
fathiraz Sep 6, 2026
4398a32
fix: seed the paused countdown fresh on its very first render
fathiraz Sep 6, 2026
75c838a
fix: clear a clean queue card once its run has settled
fathiraz Sep 6, 2026
0941d2b
feat: use ky for background GitHub GraphQL HTTP
fathiraz Sep 6, 2026
2a42a74
refactor: run paced writes through Query mutation retry
fathiraz Sep 6, 2026
33d816e
test: fix write-queue mutation mock types for tsc
fathiraz Sep 6, 2026
3f4e28c
feat: page the project query and return ordered items with content ids
fathiraz Sep 6, 2026
cf48561
refactor: let a queue task carry its own mutation and its run's wording
fathiraz Sep 6, 2026
a7f91c9
feat: split the palette model into a field step and a value step
fathiraz Sep 6, 2026
e45cd66
feat: add the five bulk-rename rule modes with a live preview
fathiraz Sep 6, 2026
5cd0b00
feat: compute chained position ops for bulk reorder
fathiraz Sep 6, 2026
4740b42
feat: derive state-aware mark verb rows from the selection's rows
fathiraz Sep 6, 2026
39b6bc3
feat: make the selection bar a two-step field palette
fathiraz Sep 6, 2026
c360ac0
fix: reset palette scratch state at the transition, not in an effect
fathiraz Sep 6, 2026
0c4a19c
feat: add the mark verb step that fires on click
fathiraz Sep 6, 2026
9a3170f
feat: add the bulk rename step with five rule tabs and a live preview
fathiraz Sep 6, 2026
e1b5b22
feat: add the bulk reorder step with top, bottom and custom position
fathiraz Sep 6, 2026
62bc32c
fix: annotate fetchProject's paged response and correct stale queue-s…
fathiraz Sep 7, 2026
1ebc75c
refactor: inject the PAT in a ky hook and extract the GraphQL decode
fathiraz Sep 7, 2026
8049370
fix: return validateToken decode failures as data instead of throwing
fathiraz Sep 7, 2026
7c1ca6f
refactor: drive token status and validation through TanStack Query
fathiraz Sep 7, 2026
ca75f06
feat: carry option colours, repository and item details through the d…
fathiraz Sep 7, 2026
5c198bc
feat: allow chained write tasks and one live queue run at a time
fathiraz Sep 7, 2026
5c3c52d
feat: model GitHub native and relationship fields as project fields
fathiraz Sep 7, 2026
e6c9e4a
feat: section the palette root and colour option swatches
fathiraz Sep 7, 2026
2fdf9a8
feat: add a shared field editor covering every field kind
fathiraz Sep 7, 2026
9f2eb0a
feat: unfold a chip's field editor in place under the chip row
fathiraz Sep 7, 2026
03aa530
feat: bind the mockup keyboard chords to palette steps
fathiraz Sep 7, 2026
f173385
fix: close the rename, reorder and mark drift against the mockups
fathiraz Sep 7, 2026
0f2e308
feat: add the row hovercard on RGP's own gutter cell
fathiraz Sep 7, 2026
584088f
feat: add deep duplicate as a single-screen palette step
fathiraz Sep 7, 2026
c0cd3b1
feat: create an issue with dynamic project fields from the palette
fathiraz Sep 7, 2026
6b5f2c3
fix: exclude GitHub's built-in fields from the duplicate carry-over list
fathiraz Sep 7, 2026
6452133
fix: resolve the row hovercard's item id through the cached project l…
fathiraz Sep 7, 2026
c72801d
feat: add the palette's Recent section to the field-kinds table
fathiraz Sep 13, 2026
49c1cb4
feat: pin the last three applied fields under Recent in the palette
fathiraz Sep 13, 2026
6309c7b
fix: filter and highlight the field step's options from the bar's own…
fathiraz Sep 13, 2026
d40ee82
feat: show a spinner while the row hovercard's details load
fathiraz Sep 13, 2026
3071fc5
fix: give RGP its own Primer portal root so ActionMenu overlays clear…
fathiraz Sep 14, 2026
33aef11
feat: move deep duplicate into a Primer dialog
fathiraz Sep 14, 2026
7fdc01d
refactor: share the project fields query through one hook
fathiraz Sep 14, 2026
a162dd5
feat: report a queue failure that never reached the wire
fathiraz Sep 14, 2026
807d86f
feat: resolve a new issue's project item and build its field writes
fathiraz Sep 14, 2026
848184c
feat: find github's create-issue dialog and the row it creates
fathiraz Sep 14, 2026
adb98eb
feat: set project fields inside github's own create-issue dialog
fathiraz Sep 14, 2026
7731dcf
fix: read only the sanitized name span in a group header, not the who…
fathiraz Sep 14, 2026
ef72fb8
fix: leave escape to an open dialog instead of clearing the selection
fathiraz Sep 14, 2026
46cc9cc
fix: stop the duplicate dialog's focus return from reopening the palette
fathiraz Sep 14, 2026
6607f32
fix: stop the duplicate dialog's escape key from bubbling into the se…
fathiraz Sep 14, 2026
6a7c238
fix: apply staged project fields after github's create-issue dialog c…
fathiraz Sep 14, 2026
28ae540
fix: apply staged fields to every issue in a create more session
fathiraz Sep 15, 2026
1fc5bd2
fix: gate the create-issue field apply on real click evidence and re-…
fathiraz Sep 15, 2026
f2e1252
fix: only clear create-click evidence once an apply actually starts
fathiraz Sep 15, 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
27 changes: 7 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up pnpm
uses: pnpm/action-setup@v4
- name: Set up bun
uses: oven-sh/setup-bun@v2
with:
version: 11.5.0
- name: Set up Node.js
id: setup-node-act
uses: actions/setup-node@v6
with:
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
node-version: 25
bun-version: latest
- name: Run CI
env:
SETUP_NODE_VERSION: ${{ steps.setup-node-act.outputs.node-version }}
run: |
set -euo pipefail
node_version="${SETUP_NODE_VERSION#v}"
export PATH="/opt/hostedtoolcache/node/${node_version}/x64/bin:$PATH"
node --version
npm --version
npm install --global pnpm@11.5.0
pnpm install --frozen-lockfile
pnpm typecheck
pnpm build
bun install --frozen-lockfile
bun run test
bun run typecheck
bun run build
19 changes: 6 additions & 13 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,18 @@ jobs:
token: ${{ secrets.TOKEN }}
fetch-depth: 0

- name: Set up pnpm
uses: pnpm/action-setup@v4
- name: Set up bun
uses: oven-sh/setup-bun@v2
with:
version: 11.5.0

- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: 25
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
bun-version: latest

- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bun install --frozen-lockfile

- name: Run tests with coverage
# Writes coverage/cobertura-coverage.xml and coverage/coverage-summary.json
# in addition to the existing text + lcov reporters.
run: pnpm test:coverage
run: bun run test:coverage

- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.3.0
Expand All @@ -63,7 +56,7 @@ jobs:
thresholds: '50 75'

- name: Update README badge + summary
run: node scripts/update-coverage-badge.mjs --from-markdown code-coverage-results.md
run: bun scripts/update-coverage-badge.mjs --from-markdown code-coverage-results.md

- name: Commit updated README
uses: stefanzweifel/git-auto-commit-action@v6
Expand Down
48 changes: 15 additions & 33 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,24 @@ jobs:
with:
persist-credentials: false

- uses: pnpm/action-setup@v4
- uses: oven-sh/setup-bun@v2
with:
version: 11.5.0

- uses: actions/setup-node@v6
with:
node-version: 25
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
bun-version: latest

- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bun install --frozen-lockfile

- name: Type check
run: pnpm typecheck
run: bun run typecheck

- name: Build & ZIP Chrome
run: pnpm zip:chrome
run: bun run zip:chrome

- name: Build & ZIP Firefox
run: pnpm zip:firefox
run: bun run zip:firefox

- name: Build & ZIP Edge
run: pnpm zip:edge
run: bun run zip:edge

- name: Upload release artifacts
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -83,18 +77,12 @@ jobs:
with:
persist-credentials: false

- uses: pnpm/action-setup@v4
with:
version: 11.5.0

- uses: actions/setup-node@v6
- uses: oven-sh/setup-bun@v2
with:
node-version: 25
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
bun-version: latest

- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bun install --frozen-lockfile

- name: Download store submission artifacts
uses: actions/download-artifact@v8
Expand All @@ -104,7 +92,7 @@ jobs:

- name: Submit to Chrome Web Store
run: |
pnpm wxt submit \
bunx wxt submit \
--chrome-zip dist/*-chrome.zip
env:
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
Expand All @@ -122,18 +110,12 @@ jobs:
with:
persist-credentials: false

- uses: pnpm/action-setup@v4
with:
version: 11.5.0

- uses: actions/setup-node@v6
- uses: oven-sh/setup-bun@v2
with:
node-version: 25
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
bun-version: latest

- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bun install --frozen-lockfile

- name: Download store submission artifacts
uses: actions/download-artifact@v8
Expand All @@ -143,7 +125,7 @@ jobs:

- name: Submit to Firefox Add-ons
run: |
pnpm wxt submit \
bunx wxt submit \
--firefox-zip dist/*-firefox.zip \
--firefox-sources-zip dist/*-sources.zip
env:
Expand Down
Loading