Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 3 additions & 2 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# Release runbook

Steps to ship a change from `dev` to `main`, which auto-deploys the server to Northflank, and on to the Chrome Web Store / Edge Add-ons.
Steps to ship a change to `main`, which auto-deploys the server to Northflank, and on to the Chrome Web Store / Edge Add-ons.

## 1. One-time setup (only needs doing once, ever)

- [ ] `main` has a ruleset requiring the `test` status check (from `.github/workflows/ci.yml`) to pass before merging, and requiring changes to go through a pull request. See GitHub → repo → Settings → Rules → Rulesets.

## 2. Pre-merge

- [ ] Open a pull request from `dev` into `main` — don't merge locally and push. Going through a PR is what lets the ruleset above actually gate the merge on CI passing (a direct push of an untested commit is rejected outright, since it can never satisfy the required check).
- [ ] Default: open a pull request straight from the feature branch into `main` — don't merge locally and push. Going through a PR is what lets the ruleset above actually gate the merge on CI passing (a direct push of an untested commit is rejected outright, since it can never satisfy the required check). The ruleset gates on the *target* branch (`main`) requiring a PR + a green `test` check — it doesn't care what the source branch is named, so there's no need to create a `dev` branch just to have one.
- [ ] Exception: if several feature branches are ready to ship together, merge them all into a shared `dev` branch first, then open one PR from `dev` into `main`. Use this only when bundling multiple branches — a single feature branch goes straight to `main`.
- [ ] Wait for the `test` check to go green. If it's red, stop — do not merge.
- [ ] Merge the PR.

Expand Down
3 changes: 3 additions & 0 deletions cws/CHROMEWEBSTORE.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ English
| Screenshot 3 [RECOMMENDED] | 1280×800 | ✅ Ready | `screenshot-3-first-run.png` |
| Screenshot 4 | 1280×800 | ✅ Ready | `screenshot-4-settings.png` |
| Screenshot 5 | 1280×800 | ✅ Ready | `screenshot-5-fee-tags.png` |
| Screenshot 6 | 1280×800 | ✅ Ready | `screenshot-6-share.png` |
| Small Promo Tile [RECOMMENDED] | 440×280 | ✅ Ready | `small-promo-tile.png` |
| Marquee Promo Tile | 1400×560 | ✅ Ready | `marquee-promo-tile.png` |

Expand All @@ -99,6 +100,7 @@ English
3. **First run** — the "Find cats near you" panel (Use my location / enter ZIP), so users see how onboarding works before installing.
4. **Settings** — the redesigned settings page (stacked "Use my location" / ZIP layout from the recent redesign).
5. **Status chips & fee** — a card showing the "Adoption pending" / "Special needs" chips and a normalized adoption fee, to demonstrate the extension surfaces real, practical adoption details.
6. **Share menu** — the "Share via" popover open on a card, showing the explicit channel list (WhatsApp, Email, X/Twitter, Facebook, Reddit, Pinterest, Nextdoor, Copy link) added in v2.1.0.

All screenshots use the real `extension/newtab.css`/`newtab.js`/`options.js` unmodified — layout, CSS, and copy are all pixel-real, not a mockup — with realistic sample data standing in for a live RescueGroups response (an automated capture can't depend on a real user's location or the live API's current inventory). Per GitHub issue #28, the original captures showed the real 620px-wide card centered on a 1280×800 canvas with huge empty margins (close to half the image blank), since `.shell`'s max-width is fixed regardless of viewport. Recaptured via `screenshot-frame.source.html` / `screenshot-frame-options.source.html` (see those files for the exact per-screenshot URLs), which scale the rendered card up to ~75–90% of the canvas width without touching the real responsive layout at all. The card's own aspect ratio is close to square, so filling 80%+ of a wide 1280×800 canvas by width while keeping every line of text on-screen isn't simultaneously achievable — screenshots 1 and 5 trade a bit of width (down to ~63–75%) to keep their relevant text (name / status chips & fee) uncropped, rather than hit 80% at the cost of visibly truncated text; screenshots 2–4 reach ~75–90% width with nothing cropped.

Expand Down Expand Up @@ -188,6 +190,7 @@ https://github.com/BrandonML/tabby
| Version | Date | Changes | Status |
|---------|------|---------|--------|
| 0.1.0 | 2026-08-19 | Initial Chrome Web Store submission: location/ZIP search with radius escalation, explore-another-area, adoption fee display, redesigned card layout | Draft |
| 2.1.0 | 2026-09-14 | Custom "Share via" menu (WhatsApp, Email, X/Twitter, Facebook, Reddit, Pinterest, Nextdoor, Copy link) replacing the single native-share-only button | Submitted |


## Review Notes
Expand Down
Binary file added cws/screenshot-6-share.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions cws/screenshot-frame.source.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@
?scene=fee-tags&scale=1.3
(lower scale so the status chips + fee, which sit below the name/
meta this scene doesn't otherwise need, are in frame)
screenshot-6-share.png:
?scene=share&scale=1.3&shiftY=-140
(auto-clicks the Share button 200ms after load; shifted down enough
to bring the actions row into frame -- the menu itself renders into
document.body, not .stage, so it isn't scaled by --scale, but it
still self-positions correctly since positionShareMenu() reads the
button's real post-transform rect)

screenshot-4-settings.png comes from the companion
screenshot-frame-options.source.html (no query params needed -- the
Expand Down Expand Up @@ -190,6 +197,12 @@ <h1>Find cats near you</h1>
});
}

if (scene === 'share') {
window.addEventListener('load', () => {
setTimeout(() => document.querySelector('#card .share')?.click(), 200);
});
}

const scaleOverride = new URLSearchParams(location.search).get('scale');
if (scaleOverride) document.documentElement.style.setProperty('--scale', scaleOverride);
const shiftYOverride = new URLSearchParams(location.search).get('shiftY');
Expand Down
Loading