中文

Privacy

Status: 2026-10-08. The English twin of PRIVACY.md, line for line: a change to permissions, network requests or what is saved updates both, in the same commit. It is the privacy policy behind the store listings (pnpm packs:export turns it into privacy-en.html).

In one line

Everything Puffkin has stays in your browser. No account, no analytics, no ads, and your browsing history is never read. Only three kinds of request leave it: site icons (on by default, can be turned off, explained the first time you open it), companion art that is fetched only when you press "Download" for one, and a weather lookup that happens only if you turn on "Real" weather.

The extension's permissions

PermissionWhyWhen it is asked for
storageKeeps your settings and progressAt install
faviconReads site icons the browser already has cached, for the DockAt install
searchSearches with your browser's default search engineAt install
activeTabWhen you press the toolbar button, the shortcut (Alt+Shift+S) or choose "Give this page to Puffkin to keep" from the right-click menu, it reads that page's address and title and hands them to "To sort" on the new tab. When you choose a result from pf in the address bar and press Enter, it looks at whether the current tab is an empty new tab (if so the site opens there, otherwise in a new tab), without keeping anything. Only at that moment, only for that page; it never reads page content and never reads any page in the backgroundAt install; no warning when installing
contextMenusThe right-click entries "Give to Puffkin to keep" (links) and "Give this page to Puffkin to keep", and on the toolbar icon "Open a Puffkin new tab" and "Search Puffkin…"At install; no warning
scriptingWhen you press Alt+Shift+F (or "Search Puffkin…" on the toolbar icon), it puts a search box on that page. With activeTab, only at that moment and only for that page; what it puts there is a frame showing the extension's own page, it does not read the page's content, and the page cannot see what you type into the box; closing it removes it entirelyAt install; no warning when installing
bookmarks (optional)Two things, both only after you turn them on in settings: ① with "Search bookmarks too" on, as you type in a search box (the new tab and the Alt+Shift+F overlay) the browser's own bookmark search lists matching pages below, nothing is copied, kept or uploaded, and their icons come only from the browser's cache (never from Google's icon service); ② "Import from bookmarks…" reads your bookmark folders once and the ones you tick become cards on the desktop (only what you choose is kept, like cards you add by hand)Asked at the moment you choose it; when "Search bookmarks too" is off, or an import is over and search is not on, the permission is handed back to the browser
topSites (optional)Puts your browser's "most visited" sites on the DockAsked only when you press OK; you can say no and add sites by hand later

Not needed and never requested: history (browsing history), tabs, "read and change all your data on all websites". bookmarks is an optional permission only, as above.

Files open to web pages (web_accessible_resources): only the search box page find.html, with use_dynamic_url. A web page cannot reach it at a fixed address (it is turned away like any file that is not open), so it cannot use it to tell whether you have Puffkin installed.

The background script (background.js) does three things, none of which makes a network request:

What is saved, and where

Everything is kept in this browser's local storage (localStorage) on this computer and is never uploaded.

KeyWhat
puffkin.companion.v*, puffkin.companion.backups.v*Names (one for each companion), number and length of hugs, the record of time together (and the last few local backups of it)
puffkin.dock, puffkin.dock.askedSites on the Dock (address, name); whether it has asked about "most visited" sites
puffkin.metricsOnly in trial builds (the store build counts nothing and has no such item). Trial numbers: per day, how many tabs were opened, touched and hugged, how often it was squeezed to let off steam, minutes of nothing, reminders to drink or stand, and the number of Dock clicks and searches (no addresses, no search text); kept 30 days; it leaves this computer only if you copy it yourself
puffkin.appearance, puffkin.power, puffkin.parallax, puffkin.hand, puffkin.sound, puffkin.music, puffkin.music.vol, puffkin.icons.remote, puffkin.recSec, puffkin.minutesPreferences
puffkin.packs and the browser cache puffkin-packs-v1The companions you downloaded (id and version) and their files; "Delete the downloaded…" in settings clears them; they keep working offline from this
puffkin.sleep, puffkin.weather, puffkin.roamBedtime sound and length, weather setting, whether it wanders about
puffkin.captionsWhich of the photo captions were used last (the last 8, so they do not repeat)
IndexedDB puffkin-albumPhotos you took (JPEG) with their caption and date; at most 200; only on this computer, and deleting one in the album really deletes it
puffkin.arrivals, puffkin.arrivalThe last 4 things it was doing when you opened a tab and whether one was opened today (so each time is different); the setting for this
puffkin.care.on, puffkin.careOnly if you turn on "A light touch of care" in settings: the setting itself; when this stretch of sitting started, when a new tab was last opened, when it last suggested standing up or drinking, how many times today (only times and counts; it cannot see what you do elsewhere). Deleted when turned off
puffkin.touchmapWhere you touch it most: how often its head, face and belly were touched (three numbers, halved when they grow large); used to turn that side towards your hand
puffkin.secretsWhich little secrets were found (only to count how many are left)
puffkin.iconmissSites that have no icon (not asked again for a week)
puffkin.todayWhat you wrote for today (the most important thing and small ones); finished ones are cleared the next day
puffkin.timerThe focus timer's state
puffkin.noteYour note
puffkin.collectionsYour cards of links (names and addresses; pages kept from the toolbar also have their title)
puffkin.onboardedWhether the first question was answered (which interests you picked is not kept, only the Dock and cards it set up)
puffkin.weather.city, puffkin.weather.cacheOnly if you turn on "Real" weather: the city you chose (name and rough coordinates); the last weather it found (rain, snow, wind, temperature)
puffkin.opensSites you opened from this page (Dock, cards, search), from pf in the address bar and from the search box: the site's id, how many times, when last; at most 200, the oldest dropped. Used only to order "Recently used" and search results; not browsing history, pages opened anywhere else are not recorded
puffkin.inbox.declinedWhich groups you said "No thanks" to in the suggestion on "To sort" ("design" or a card's id) and how many there were, so it asks again only after two more of the kind; at most 30, removed once that group has left "To sort"
puffkin.collections.hintsAfter you move a site to a card by hand, "this domain → this card", so the same site goes there next time; at most 200, only domains and card ids
puffkin.queue in chrome.storage.localAddresses and titles from the toolbar button, the shortcut or the right-click menu that the new tab has not taken yet; deleted once taken
puffkin.index, puffkin.index.opens in chrome.storage.localA copy for pf and the search box: the names, addresses, page titles, cards and pinyin of the sites on your Dock and cards, and what is in puffkin.opens. Written by the new tab only when it changed; the background only reads it. A removed site leaves the copy with the next new tab; nothing in the bin is copied
puffkin.opened in chrome.storage.localSites opened from pf or the search box that the new tab has not added to "Recently used" yet: the site's id and the time, at most 200; deleted once taken
puffkin.find.ask in chrome.storage.sessionWhen the shortcut is pressed on a page where the search box cannot go, a time left for the new tab so it focuses its search; deleted when the new tab sees it, void after 5 seconds. Session storage lives in memory only and is gone when the browser closes
puffkin.index.sigA fingerprint of that copy (two short strings), to tell whether it needs writing again
puffkin.trashThe bin: sites and cards you removed from the Dock or cards (names, addresses), cleared after 30 days, at most 40; you can empty it any time. Only on this computer
puffkin.bookmarks.searchOnly if you turn on "Search bookmarks too" in settings: the switch itself (the bookmarks are not saved)
puffkin.sync.on, puffkin.sync.device, puffkin.sync.seenOnly if you turn on "Sync the Dock and cards to your other computers": the setting, a random id for this computer (to tell which computer a change came from), a fingerprint of what was last synced
pf.meta, pf.s.* in chrome.storage.syncAs above, only with sync on: the Dock and cards (names, addresses) in a few pieces, with a note (how many pieces, when, which computer, fingerprint, size). The browser's own sync (Chrome or Edge) carries them to your other computers signed in to the same account; turning sync off leaves them there for the other computers
puffkin.widgetsWhich widgets show on the desktop
puffkin.langOnly if you chose a language in settings: zh or en. Otherwise it follows the browser's language and nothing is kept
puffkin.sync.codeWeb page only: the sync code (see below)

During "Bedtime" the page asks the screen to stay on (Screen Wake Lock) and lets go when it ends or you wake it; no extra permission is needed.

Clearing browser data or removing the extension deletes all of this. "Save a backup" in settings writes the above (without trial numbers, caches or photos) to a JSON file wherever you choose; "Restore from a backup" reads only the file you choose.

Your to-dos, note and sorted links are your own: they stay on this computer, are not uploaded, and are not part of the web page's sync either (that sync holds only the plush's name and your time together).

Network requests

RequestToWhatCan it be turned off?
Downloading a companionOur own asset address (remote in catalog.json, which ships with the extension; downloads can only go there)Only when you press "Download" for a companion in settings: it fetches that companion's few files (images and JSON, no code; they are hosted on Cloudflare, whose servers can also see the request); the request carries nothing of yours, and every file is checked against the catalogue's fingerprint. The server sees your IP address and the file names, as with any requestNothing is sent unless you press it. The cloud is inside the package and never needs the network
Site iconst2.gstatic.com/faviconV2 (the static address of Google's icon service; if it is unavailable, www.google.com/s2/favicons)The domain of each site on the Dock and your cards (no path, no query); the browser caches the image for a week, after which new tabs do not go online for it; a site with no icon is not asked about again for a weekYes: Settings → "Sharper site icons". Off, only the browser's own icons are used, or the site's initial
Browser sync (not a request we make)The account you signed in to in the browser (Chrome: Google account; Edge: Microsoft account), handled by the browser's own sync serviceOnly after you turn on "Sync the Dock and cards to your other computers": the names and addresses of the sites on the Dock and cards. The browser carries and keeps them according to your account's sync settings (Chrome can encrypt them with a sync passphrase), never through any server of oursOff by default; turn it off in settings any time
City searchgeocoding-api.open-meteo.com (Open-Meteo, a free weather service, no account)The city name you typed; sent only when you press "Search", not while you typeNot sent by default; only if you choose "Real" weather in settings and press Search
Current weatherapi.open-meteo.comThe chosen city's rough coordinates (two decimal places, about 1 km); at most every 45 minutes, cached on this computerNot sent by default. Choose another weather option, or "Forget this city", and it stops

About IP addresses: your location is never read or used (there is no geolocation permission), and your IP address is not read either; but any network request shows the server the IP address it came from, which cannot be helped. The extension itself neither reads, keeps nor passes it on.

Pages you open yourself are not the extension's requests: when you choose "Search the web" or a site search such as "Search GitHub for…" in the search box, what you typed goes to that site as part of its address (as if you had typed it into its own search box); nothing is sent unless you choose it.

Beyond these, the extension sends no requests at all: the plush's pictures, faces, sounds and interface are all inside the package, and the background music is made live on your computer.

The web page (Puffkin's website) also has

Optional "Sync across devices": when on, the state is encrypted on your device with AES-GCM under a key derived from the sync code, and only the ciphertext and an authentication digest are uploaded; the server has no key to decrypt it, and a lost sync code cannot be recovered. The extension does not have this.

What we do not do

Recordings and photos

Recordings, photos and stickers are made on your computer. A file leaves the browser only when you press "Download" or "Share", and you choose who it goes to.

Contact: [email protected]