Cookies

This page describes how Tale Haven uses cookies and similar browser storage. I keep the list short because the site is small. Names matter: the consent cookie is th_consent; the optional reading preference cookie is th_pref.

What a cookie is here

A cookie is a text string your browser stores and sends back on future requests to the same site. I use cookies only for remembering your consent choices and, if allowed, your text size preference. I do not use cookies to track you across other websites.

The banner

On first visit you see a banner with three paths: Accept all, Reject optional, or Customise. Accept all stores consent for essential, preference, and embed categories. Reject optional stores essential-only consent and blocks optional cookies. Customise opens checkboxes so you can allow preferences without maps or maps without preferences, though preferences without essential consent still require essential storage to remember the choice.

Cookie table

th_consent — stores a url-encoded json object with version, timestamp, and booleans for essential, preferences, embeds. Path /. Max-Age 15552000 seconds (about one hundred eighty days). Set by javascript after you choose. Not HttpOnly because script must read it to apply your choices.

th_pref — stores text size token: small, medium, or large. Path /. Max-Age 15552000 seconds. Set only if you allow preference cookies. Read on load to adjust root font size.

Maps and session exception

Google Maps iframes load from data-src when embeds are allowed. If you reject embeds, a placeholder offers "Show the map just for this visit." That choice lives in javascript memory for the session only — not a cookie — and clears when you close the tab.

Manage your choices on this page

Browser controls

You can block or delete cookies via browser settings. Blocking th_consent will show the banner each visit and prevent remembering embed choices. That is acceptable; the text of the site remains readable.

Updates

If I add a cookie I will update this page and the banner text. I will not add advertising cookies.

Afternoon light in a housing court below the block
Below the flat — where I test the banner on mobile signal.

Email [email protected] with subject "cookies" if something here disagrees with what you see in devtools. I would rather fix a mismatch than debate it.

Essential category

Essential storage remembers that you answered the banner. Without it the site would ask every visit and could not honour embed blocks. Essential does not mean invasive — the json contains no name, no email, no ip.

Preferences category

Preferences cover text size only. Medium is default when nothing is stored. Large increases root font size for comfortable reading; small decreases it. Buttons in the header toggle size immediately; persistence requires consent.

Embeds category

Embeds cover Google Maps iframes duplicated on each page with the same Strathmore Avenue centre. Allowing embeds sets iframe src from data-src on load. Rejecting leaves placeholders with a session override button that does not write cookies.

Testing your choices

Open a private window to simulate first visit. Accept, reject, customise, and save in sequence. Inspect Application → Cookies in devtools to see th_consent shape. Withdraw on this page should clear both cookies and restore banner.

Relationship to privacy notice

The privacy page covers email and hosting logs. This page covers client-side storage only. Together they describe the full picture for a visitor who reads both.

Why not a cookie wall

Reading does not require consent. Only remembering choices and loading third-party maps does. You can reject optional cookies and still read every tale — a design requirement I refuse to compromise.

Build date 8 August 2026 — script version matches footer date. If dates diverge after an edit, trust the newer footer and email me to align this page.

SameSite and security flags

Cookies set by consent.js use SameSite=Lax and Secure on https connections. They are not accessible to other sites. th_pref follows the same rules when present.

Local storage

This site does not use localStorage or sessionStorage for consent. Session map override lives only in javascript memory for the tab lifetime.

That is the full inventory. If a future build introduces another name, it will appear here first.