Cookies

Storage, maps, and your controls.

This page explains cookies and similar storage on Note Haven — notehaven.pro — in plain Singapore English. I am Mei; this is my personal blog, not a shop or an app. There is no checkout, no account login, and no comment form that stores your name.

Why a banner appears: when you first visit, a bottom strip asks for your choice about optional storage. It must work — not decoration. Accept all, Reject all, and Customise buttons write a real record so the banner stays hidden after you decide, until the record expires in about six months.

What gets stored: a cookie named sg_reader_consent containing URL-encoded JSON like {"essential":true,"functional":true|false,"analytics":false,"ts":"<ISO time>","v":1}. The same JSON is mirrored in localStorage under reader_consent_v1 so the site can read your choice quickly on the next page. Both use Path=/ and SameSite=Lax; Secure is added on HTTPS.

Categories — Essential: always on. Remembers that you answered the banner so it does not nag every page load. Cannot be disabled while using the site because without it the banner would return continuously. No tracking purpose.

Categories — Functional / embedded content: controls Google Maps iframes on every page. This site uses approach (a): if you Reject all, maps are hidden and replaced by a quiet placeholder with a Load map button. Clicking Load map grants functional consent for that session view and stores your choice like Accept would for maps. If you Accept all or enable Functional in Customise, maps load normally without an extra click.

Categories — Analytics: included for honesty and future-proofing. No Google Analytics, no Meta pixel, no Hotjar, no session replay scripts run today. The toggle defaults off. Turning it on does not currently load extra scripts — there is nothing to load — but the category exists so the panel tells the truth if I add privacy-respecting stats later.

Google Maps disclosure: each page includes one embed centred on Sembawang at neighbourhood zoom, not my exact flat. Google's iframe may set its own cookies or read device data when functional consent allows loading. I do not control Google's processing. Read Google's privacy policy if you need vendor detail. If you prefer not to load maps, choose Reject all or leave Functional off.

How to change your mind: use Manage cookies below or the Customise path on the banner. The panel reopens with toggles reflecting saved state. Save overwrites the previous record immediately. Hard refresh after saving should keep your choice — if the banner returns, that is a bug and I want to know.

How to clear storage in your browser: open settings → privacy → cookies → search for notehaven.pro → remove sg_reader_consent. Also clear localStorage key reader_consent_v1 for this site. Next visit will show the banner again as first visit.

Retention: about 180 days (six months). After expiry the banner may return. I will never claim forever storage.

Keyboard and motion: banner controls are reachable by keyboard with visible focus rings. Animations respect prefers-reduced-motion.

No hidden inputs: consent toggles are buttons with aria-pressed, not form fields. There is no POST, no send.php, no server handler.

Relationship to privacy: the long-form PDPA notice lives on /privacy.php. This page is the operational companion focused on cookies, maps, and controls.

Contact: [email protected] if something behaves wrongly — banner reappears every load, Load map fails, console errors. Include your browser name if you can.

Safari / iOS: if maps fail after Accept, check Settings → Safari → Block All Cookies is off for this site, or use Load map once. Private browsing may discard storage when you close tabs.

Chrome / Edge: DevTools → Application → Cookies shows sg_reader_consent; Local Storage shows reader_consent_v1. Both should match after Save.

Last updated: 11 August 2026. For the personal blog disclaimer, see the Byline page.

Sembawang neighbourhood map on cookie notice page