feat(devtools): extension snapshot and rollback #255

Open
opened 2026-06-23 16:56:26 +00:00 by jmiller · 1 comment
Owner

Extension Snapshot and Rollback

Overview

Take snapshots of installed extension versions before updates. If an update breaks something, one-click rollback to the previous version.

Features

  • Auto-snapshot — automatically records extension versions before any update
  • Manual snapshot — take a named snapshot of current state
  • Snapshot history — list of snapshots with date, name, and diff from current
  • Rollback — restore a specific extension to its snapshot version (re-installs from backup zip)
  • Zip backup — stores extension zip files in a configurable backup directory
  • Retention — configurable number of snapshots to keep (default: 5)

Database Schema

CREATE TABLE #__mokosuiteclient_ext_snapshots (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  snapshot_data TEXT NOT NULL,
  created DATETIME NOT NULL
);

Architecture

  • Hooks into onExtensionBeforeUpdate to auto-snapshot
  • Stores extension zips in administrator/components/com_mokosuiteclient/backups/
  • Rollback re-installs from stored zip via Joomla installer API
  • Snapshot data is JSON: [{element, type, folder, version, zip_path}]
## Extension Snapshot and Rollback ### Overview Take snapshots of installed extension versions before updates. If an update breaks something, one-click rollback to the previous version. ### Features - **Auto-snapshot** — automatically records extension versions before any update - **Manual snapshot** — take a named snapshot of current state - **Snapshot history** — list of snapshots with date, name, and diff from current - **Rollback** — restore a specific extension to its snapshot version (re-installs from backup zip) - **Zip backup** — stores extension zip files in a configurable backup directory - **Retention** — configurable number of snapshots to keep (default: 5) ### Database Schema ```sql CREATE TABLE #__mokosuiteclient_ext_snapshots ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, snapshot_data TEXT NOT NULL, created DATETIME NOT NULL ); ``` ### Architecture - Hooks into `onExtensionBeforeUpdate` to auto-snapshot - Stores extension zips in `administrator/components/com_mokosuiteclient/backups/` - Rollback re-installs from stored zip via Joomla installer API - Snapshot data is JSON: `[{element, type, folder, version, zip_path}]`
jmiller added this to the v03.00.00 milestone 2026-06-23 16:56:26 +00:00
Author
Owner

Branch created: feature/255-feat-devtools-extension-snapshot-and-rol

git fetch origin
git checkout feature/255-feat-devtools-extension-snapshot-and-rol
Branch created: [`feature/255-feat-devtools-extension-snapshot-and-rol`](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteClient/src/branch/feature/255-feat-devtools-extension-snapshot-and-rol) ```bash git fetch origin git checkout feature/255-feat-devtools-extension-snapshot-and-rol ```
Sign in to join this conversation.
No labels
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteClient#255