AI-Created Software

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.

History Automator

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.

What it does

Once started, a Chrome alarm fires every N minutes. On each run the extension:

  1. Deletes the entire browsing history.
  2. Adds each URL from your saved list back into history, timestamped at the moment of the run.

You can also clear history once, on demand, without scheduling anything.

Installation

The extension is unpacked-only; it isn’t on the Chrome Web Store.

  1. Clone or download this folder.
  2. Add an icons/ directory containing icon16.png, icon48.png, and icon128.png. The manifest references these and Chrome will warn on load if they’re missing.
  3. Open chrome://extensions.
  4. Turn on Developer mode (top right).
  5. Click Load unpacked and select the folder.

Click the toolbar icon or press Ctrl+Shift+H (Cmd+Shift+H on macOS) to open the options page.

Usage

Scheduling

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.

Manual clear

Clear History Now deletes all history immediately, after a confirmation prompt. It does not add any URLs back.

Backup & restore

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.

File format

{
  "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.

Limitations worth knowing

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.

Permissions

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.

Files

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.

Implementation notes

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.

(1 votes, average: 5.00 out of 5)

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail.