Change History
Change History lists configuration changes people have made in the admin pages, with the record as it was before and after each one. Any change can be undone from this page, including deletes.
Open Change History
What is recorded
A change is recorded whenever someone signed in to the admin saves through the standard editors:
- Edits, creates and deletes of any configuration record (zones, devices, macros and their steps, triggers, schedules, UIs, users, and so on)
- Attribute changes made in the Attributes editor, including the bulk set, bulk flag and bulk delete actions on the Attributes page. A bulk action is recorded as one group, so Group undoes the whole action at once
- Enable / disable toggles
- Drag-and-drop reordering
The system's own writes are not recorded: a driver updating a device's state, a macro stamping its last run time, sync from an auth server. The AI assistant keeps its own undo in the assistant drawer, so its changes don't appear here either.
Each entry records when the change was made, who made it and from which address, the table and record, and the fields that changed.
Passwords and other secrets
Secure attribute values (passwords, API keys, PINs) and user credential fields are stored encrypted with the site's encryption key. They show as hidden on this page and are never sent to the browser. Undo can still restore them.
Large fields
A field larger than 256 KB (such as an embedded image in a theme asset) is not copied into the history. A change that needs that field to be reversed is reported as not undoable.
From the editors
You don't have to leave an editor to see or undo its changes:
- History button on grid rows. The main admin lists (devices, zones, macros, triggers, schedules, UIs, users, roles, subsystems, site modes, AV zones, alarms, access control, variables and others) have a history icon among each row's actions. It opens that record's changes in a window, with undo, and refreshes the list after an undo.
- Changes tab. The device and zone editors have a Changes tab next to History. It shows the same record history, and after an undo it reloads the open form. If the undo removed the record itself, the editor closes.
A record's history covers more than its own row:
| Record | Also shows changes to |
|---|---|
| Zone, device, site, space, subsystem, UI, variable, remote, user | Its attributes |
| Macro | Its steps |
| UI | Its zones, macros, controls and site modes |
| Command set | Its commands |
| UI page | Its widgets |
Open in Change History at the bottom of a record's history opens the full page filtered to that record.
The list
| Column | Description |
|---|---|
| When | Time the change was saved |
| User | The signed-in user who made it |
| Change | insert, update, delete, or undo for a change written by an undo |
| Table | The table the record lives in |
| Record | The record's name and id — click to open the details |
| Fields | For an update, the fields that changed |
Use the search box (name, record id or table) and the Table, Record id and User filters to narrow the list. Press Enter or Search to apply them. Undone changes are hidden unless Show undone is ticked.
You can link straight to one record's history with /admin/change_history?model=zone&record_id=12.
Groups
Changes saved by one browser within about two seconds of each other form a group. That is usually one action. For example, deleting a macro first deletes its steps and then the macro itself. Grouped rows are joined by a blue bar on the left. The first row of a group has a Group (n) button that undoes every change in it, newest first.
Details
Click a record to open its details under the row: each changed field side by side, before and after. For a create or delete, every field of the record is shown. History of this record filters the list to every change made to the same record.
Undoing a change
Undo puts the record back the way it was before the change:
| Change | What undo does |
|---|---|
| Update | Writes the previous values of the changed fields back |
| Insert | Deletes the record that was created |
| Delete | Re-creates the record with its original id. For a zone, device, site, space, subsystem, UI, variable, remote or user, the attributes deleted along with it are restored as well |
An undo is itself recorded as a new undo entry, so it can be undone too ("redo").
Undo saves through the same path as the admin editors, so it behaves like an ordinary save. Where an edit would normally need a reload (devices, zones, macros and so on), the pending changes bar offers the reload as usual.
When the record has changed since
Undo checks that the record still looks the way the change left it. If someone, or the system, has changed those fields since, the undo stops and lists each field with the value it expected and the value it found. Undo anyway writes the old values over the newer ones.
A group is checked as a whole before anything is written. A conflict in any of its changes stops the entire group.
Some changes cannot be undone:
- A delete whose record id has been taken by a new record
- A change whose earlier value was too large to keep, or was sealed under an encryption key the site no longer has
- Changes to tables managed by an auth server (on a synced site)
Retention
Change History is kept for 90 days by default. Set the window on the Data Retention page. It is pruned with the other history tables in the nightly maintenance.
Permissions
Viewing and undoing changes is limited to admin (elevated) sessions. The history itself is read-only: no editor or API can change or delete an entry, except retention pruning.
Related
- Request History — every request made to the system, including denied ones
- Data Retention — how long each history is kept