Custom share-via menu (#34, #35), Edge favicon fix (#33), v2.1.0 - #36
Merged
Merged
Conversation
navigator.share()'s OS share sheet on Windows is limited to whatever's registered on that machine, with no way to pick a channel it doesn't list (#34), and native share also leaves message ordering/spacing up to whatever the receiving app does when it joins the separate text/url fields back together (#35). Replace the single native-share button with a popover offering explicit channels -- WhatsApp, Email, X/Twitter, Facebook, LinkedIn, Copy link -- built from share-intent URLs Tabby fully controls, plus a "More options..." entry that still uses navigator.share (with photo attachment) when available. Text-based channels now share one composed message with the cat's profile link ahead of the Tabby plug, both on their own blank-separated line, instead of relying on OS/app-dependent concatenation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…/Nextdoor
Real-world testing surfaced three issues with the share-via menu:
- The popover always opened downward, but the Share button sits near
the bottom of the card -- which is often already near the bottom of
the viewport -- so lower menu items were regularly unreachable
without scrolling. It now flips above the button when there isn't
enough room below.
- Email sharing silently did nothing: window.open('mailto:...') is
unreliable in Chrome. Switched to a real anchor click, which is what
browsers actually special-case for handing a non-http(s) scheme off
to the OS/registered app.
- Facebook and LinkedIn only ever take a URL and build their preview
card by scraping that page's Open Graph tags -- most RescueGroups-
hosted rescue pages don't have (correct) ones, so those cards were
regularly missing the cat's photo/name entirely. LinkedIn is dropped
in favor of Reddit and Pinterest, whose share intents accept the
title/image/description directly and don't depend on the rescue
site's own markup, plus Nextdoor (a pre-filled text composer, same
as WhatsApp/email). Facebook stays since it's still widely used --
its OG-tag dependency is a platform restriction, not something a
channel swap fixes; that needs the cat-details share page already
planned separately.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pinterest: its pin-creation API fetches the `media` URL itself, server-side, so a non-public/non-https backend (the local dev BACKEND_URL) can't be reached from there -- it surfaced as a raw "not a valid URL format" error in Pinterest's own dialog instead of degrading gracefully. Only send `media` when it's a real https URL (always true in a release build -- see scripts/release.js); omit it otherwise and still let the pin go through without a forced image. Reddit: a link post (url= + title=) has no body-text field at all, and its thumbnail comes from Reddit scraping the target page's Open Graph tags -- same reliability problem as Facebook. Submit it as a self/text post instead (title= + text=) with the same composed message as WhatsApp/Nextdoor; the profile link is still right there in the text and Reddit auto-links it. Twitter/X's web intent has no media parameter at all -- confirmed via their own developer docs, not something fixable client-side. Email: append the synthetic anchor to the document before clicking it (and remove it right after) instead of clicking it detached, matching how other "trigger mailto/download via synthetic click" implementations do it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Neither page declared a favicon, so each browser fell back to its own default resolution. Chrome (and Edge, but only when a page is reached by direct navigation, e.g. options.html) derives one from the extension's manifest icons; Edge specifically doesn't do that same fallback for a chrome_url_overrides.newtab page in a freshly opened tab, which is why the icon only showed up after visiting settings and persisted only by leftover tab state, not on a new tab. An explicit <link rel="icon"> removes the reliance on that fallback entirely. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The explicit <link rel="icon"> added earlier didn't fix Edge showing a placeholder on a freshly opened new tab -- one theory for that gap is Edge's new-tab-page icon resolution specifically probes for an implicit /favicon.ico at the origin root rather than reading the page's own <link> tags, unlike normal page navigation. Added one (PNG-in-ICO container wrapping icon32.png, no external tooling needed) at the package root, and wired it into the release zip -- the release script only ever copied manifest.json + extension/ before, so this would otherwise have shipped in git but not in a real release build. Confidence on this one is genuinely lower than the last fix -- if it doesn't resolve the new-tab case either, the plan is to revert this and close #33 as a won't-fix Edge platform limitation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This was
linked to
issues
Sep 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
navigator.share()button with a custom "Share via" popover offering explicit channels — WhatsApp, Email, X/Twitter, Facebook, Reddit, Pinterest, Nextdoor, Copy link — plus a "More options…" entry that still uses native share (with photo attachment) when available.<link rel="icon">on both pages plus a rootfavicon.icowired into the release zip. Neither fully fixed the new-tab case in Edge — testing points to a genuine Edge platform limitation forchrome_url_overrides.newtabpages, not a page-markup issue. Left in place since it's correct/harmless regardless (and does work via direct navigation, e.g. options.html).manifest.json,package.json).Real-world fixes from live testing
Several rounds of hands-on testing (Chrome, Edge, real rescue sites) surfaced and fixed:
window.open('mailto:...')silently failed in Chrome — switched to a real (appended, then removed) anchor click, opened in a new tab.mediaparam errored when it resolved to a non-public URL (e.g. local dev backend) — now guarded to only send it for a realhttps://URL.Known, unfixable-by-us limitations (documented inline in code)
Test plan
npm test— 218/218 passingCo-Authored-By: Claude Sonnet 5 noreply@anthropic.com
🤖 Generated with Claude Code