Home (All Topics) → Technology → Software → AI-Created Software
By Marios Alexandrou on September 9, 2026.
The following AI-generated aka vibe-coded software. The software is specific to my needs and my system and may not work for you or your system. Support is limited, but if you report a bug I'll certainly look into it. All code is provided in a zip file for you to review should you choose.
A Chrome extension (Manifest V3) that clears your browsing history on a repeating schedule and then re-adds a list of URLs you choose.
Everything runs locally. The extension makes no network requests, reads no page content, and has no host permissions.
Once started, a Chrome alarm fires every N minutes. On each run the extension:
You can also clear history once, on demand, without scheduling anything.
The extension is unpacked-only; it isn’t on the Chrome Web Store.
icons/ directory containing icon16.png, icon48.png, and icon128.png. The manifest references these and Chrome will warn on load if they’re missing.chrome://extensions.Click the toolbar icon or press Ctrl+Shift+H (Cmd+Shift+H on macOS) to open the options page.
Set Run every (minutes) and enter one URL per line in the text area. Blank lines and surrounding whitespace are ignored.
Only http:// and https:// addresses can be written to history; anything else is skipped.
Save & Start writes the settings to storage and creates the alarm. The first run happens after one full interval has elapsed, not immediately.
Stop Automation cancels the alarm. Your interval and URL list stay saved.
The status line shows whether the alarm is active and when it next fires.
Clear History Now deletes all history immediately, after a confirmation prompt. It does not add any URLs back.
Export Settings downloads the interval and URL list as JSON. The filename is the current local date and time:
history-automator-settings-2026-09-06-150322.json
That is history-automator-settings-YYYY-MM-DD-HHMMSS.json, with the time as six unseparated digits.
Export captures what is currently in the form, not what was last saved, so it reflects edits you haven’t committed with Save & Start.
Import Settings reads a file back. It validates before applying anything and reports the specific problem if the file is malformed. On success it fills the form and saves to storage. If automation is running at the time, the alarm is recreated with the imported interval so the schedule and the URL list stay consistent.
{
"app": "history-automator",
"formatVersion": 1,
"exportedAt": "2026-09-06T15:03:22.481Z",
"settings": {
"interval": 60,
"urlList": [
"https://www.google.com",
"https://www.youtube.com"
]
}
}
Import also accepts a bare { "interval": 60, "urlList": [...] } object, so a hand-written file works. interval must be a whole number of 1 or more and urlList must be an array.
Deletion is total and irreversible.chrome.history.deleteAll() wipes the entire history database, not a date range. There is no undo and no confirmation on scheduled runs. Anything you wanted to keep is gone.
History only. Cookies, cache, downloads, autofill data, site data, and open tabs are untouched. This is not a general privacy wipe.
Chrome Sync propagates deletions. If history sync is on, clearing here can remove history from your other signed-in devices too.
Google account activity is separate. History stored server-side under Web & App Activity lives at myactivity.google.com and is unaffected by this extension.
Timestamps cluster. Every seeded URL is recorded with a visit time of the moment the run executed, so they all share essentially the same timestamp.
Alarms need Chrome running. Nothing fires while the browser is closed. Chrome runs overdue alarms shortly after the next startup.
Titles may be missing. URLs added through chrome.history.addUrl() appear without page titles until the page is actually visited.
| Permission | Why |
|---|---|
history |
Delete history and add URLs back |
alarms |
Schedule the repeating run |
storage |
Persist the interval and URL list |
No downloads permission is needed. Export builds a blob URL and clicks a generated anchor from the options page.
manifest.json Extension manifest (MV3)
background.js Service worker: alarm listener and performAutomation()
options.html Options page, opened in a tab
popup.js Options page logic
popup.css Options page styles
icons/ Toolbar icons
popup.js and popup.css keep their names from an earlier version where the UI was a browser-action popup. They now drive the options page.
The service worker is event-driven and unloads when idle. Chrome wakes it when the alarm fires, so performAutomation() reads the URL list from chrome.storage.local on every run rather than holding it in memory. This also means edits to the saved list take effect on the next run without restarting the alarm.
chrome.action.onClicked opens the options page because the manifest declares no default_popup. Adding one would suppress that event.
manifest.json contains // comments.
Chrome’s manifest parser tolerates them, but strict JSON tooling will not.


Leave a Reply