#DHSeaDev — Chrome MV3 — Side Panel Extension
Vigil
Vigil is a Chrome side panel for lighting a candle — one a day, for someone or something important. It keeps a private record of every time you did, reminds you of the dates you would rather not let pass, and gives you somewhere to write things you never send. It makes no network requests at all.
Available now on the Chrome Web Store. Free, no account, and no network requests of any kind. Questions: dhseadev@gmail.com
What it does
Open the side panel and there is a candle. One button lights it, and it stays lit while you work, in the corner of the browser you already have open. That is the whole daily interaction: one deliberate act, then back to whatever you were doing. There is a candle on the web too, on this site, for anyone who does not want to install anything.
A private record. Every candle you light is written down with the date, so the thing you have been doing quietly for months is visible to you as something you did rather than something you vaguely remember doing.
Days that matter. Birthdays, the day someone died, the day you met. Vigil holds them and brings them up in its own time, described below.
Letter to the void. Somewhere to write the thing you would say if there were anyone to say it to, and then burn it.
It sits alongside the other quiet, shared surfaces on this site — the positivity wall is the public one, where the writing is meant to be read by strangers; Vigil is the opposite end of that, where nothing is meant to be read by anyone.
No streak to break
Almost everything that asks you back daily keeps a streak, and a streak has exactly one job: to make missing a day cost something. That works fine when the subject is push-ups. It fails badly when the subject is a person.
In an app built around remembering someone, a broken streak does not read as failing at an app. It reads as failing them. The number that said 47 says 0, on a week that was already hard, and the tool that was supposed to help you hold something has instead handed you one more small piece of evidence that you are not doing enough. That is a defect, not a motivational feature.
So the rule in Vigil is absolute: nothing in it can ever go down.
- Candles accumulate. The count is a total of every candle you have ever lit. There is no current-run number anywhere in the interface, because a current-run number is a streak wearing a different coat.
- Milestones are cumulative or seasonal. They are earned by reaching a total, or by lighting a candle in a particular season or at a particular hour. None of them is revoked, and none of them expires.
- One milestone rewards absence. You came back is earned only by being away and then returning, and the copy warms the longer you were gone. A month away earns a warmer line than a week away.
That last one is the point of the whole design. In a streak system, time away is a debt you come back to. Here it is the one thing that cannot be earned any other way. Absence is worth something in Vigil instead of costing something, which means there is never a reason not to open it again.
Days that matter
You add the days you do not want to let pass — a birthday, the day someone died, the day you met — and Vigil brings them up quietly when they are close, on the day itself, and for a few days afterwards. The days after an anniversary are often heavier than the day, and most software stops paying attention the moment the date rolls over.
There is no countdown. A day stays entirely out of sight until it enters the notice window you chose. Even inside that window it says on Thursday rather than a number, because a number counts down and a weekday does not. Watching a figure drop toward a date you are dreading is its own small harm, and Vigil will not do it to you.
You choose how much warning each day gets, including none at all. A day set to no warning simply arrives.
Calendars
A yahrzeit follows the Hebrew calendar, so its Gregorian date moves every year. The same is true of a Hijri date and of the Chinese lunisolar calendar. An app that stores one Gregorian date and repeats it annually is quietly wrong for a large number of the people most likely to want this.
Vigil tracks the day in the calendar you chose and works out the Gregorian date each year. Where that requires a judgement call it says so on screen rather than deciding silently:
- Which Adar it used, when a Hebrew date falls in a leap year that has two of them.
- When a date on the 30th of a month was kept on the 29th, because that month has only 29 days in the year in question.
- That a Hijri date is a calculated estimate, because month starts depend on local moon sighting and no calculation can settle that for you.
Letter to the void
Write anything. To the person, about the person, or about nothing to do with them. Then burn it.
The letter is never saved. There is no draft, no autosave, no recovery, no outbox and no recipient. It is not written to storage at any point between the first keystroke and the fire. The only thing Vigil keeps is the count of how many letters you have burned, which is a fact about you rather than a copy of what you wrote.
Built to be used on a hard day
The accessibility work here is not a compliance pass bolted on at the end. It is the assumption that someone will open this at three in the morning on the worst day of their year, and that everything about it has to be safe under that condition.
- The flame cannot trigger a seizure. The flicker was measured, not estimated: 1.50 Hz, with under 2% peak-to-peak luminance variation. That is well under the three-per-second threshold in WCAG 2.3.1, and the luminance swing is small enough that the rate would not matter even if it were not.
- Motion can be switched off entirely. Under
prefers-reduced-motionthe canvas draws exactly one static frame. That was verified by pixel diff rather than by reading the code. - Everything works from the keyboard, and every state the canvas draws has a text equivalent, so nothing meaningful exists only as a picture.
- Crisis resources are on every screen, not behind a menu item. If someone needs them, they need them now, and the moment of needing them is not a moment for navigating.
Questions
Does Vigil have a streak?
No, and that is deliberate. Nothing in it can go down. Candles accumulate as a lifetime total, milestones are cumulative or seasonal and are never revoked, and one of them is earned only by being away and coming back. A streak that resets on a miss would turn a hard week into a second failure, and in something built around remembering a person that reads as failing them rather than failing an app.
Will it count down to an anniversary?
No. A day stays out of sight until it enters the notice window you chose, and even then it says on Thursday rather than a number. You choose how much warning each day gets, including none at all, and Vigil keeps paying attention for a few days after the date rather than stopping the moment it passes.
Does it work for a yahrzeit?
Yes. Choose the Hebrew calendar when you add the day, and Vigil works out the Gregorian date for you each year rather than repeating one fixed date. It says on screen which Adar it used in a leap year and when a 30th was kept on the 29th, so the judgement call is visible instead of hidden. Hijri and Chinese lunisolar dates work the same way.
Does anything leave my computer?
No. Vigil makes no network requests of any kind. There is no account, no analytics, no sync and no remote fonts. Everything stays in chrome.storage.local on this machine, letters are never stored at all, and the extension cannot read any web page.
Privacy, in short
Vigil makes no network requests of any kind. Not to a server of mine, not to anyone else’s. There is no account and no sign-in, no analytics or telemetry of any kind, no sync to a Google account or anywhere else, and no remote fonts or CDN-loaded assets.
Everything it remembers — your candles, your days that matter, your settings — stays in chrome.storage.local, on this machine, in this browser. Letters are never stored at all: only the number you have burned is recorded. Vigil has no content script and no host permissions, so it cannot read any web page you visit, and it has no access to your browsing history.
Delete everything by clearing the extension’s storage from chrome://extensions, or by removing the extension.
Questions about any of this: dhseadev@gmail.com
More on how this was built
The reasoning behind the no-streak rule, the notice window and the calendar disclosures is written up at length in the case studies. If you want the conclusions without the build log, the short answers cover the same ground in a paragraph each.
Built by #DHSeaDev — dhseadev@gmail.com