v0.7.1

<p>Admin saves are recorded in History automatically, and the Changes page becomes a History page with one Sync button.</p>

6 October 2026

Added

  • The admin records its own writes in History: a page saved, deleted or moved, an item saved or deleted, and a file stored, changed or deleted. The admin router calls History::autoCommit() for its non-GET requests, so a GET never commits. Code that saves pages itself (the CLI, imports, a site's own routes) is not committed.
  • History::sync() records anything still uncommitted under data/pages as one entry, fast-forwards from the remote, then pushes. It never merges: if the histories diverged it stops and says a developer must resolve it.
  • History::refresh() fetches at most once a minute, with a timeout, so remoteStatus() can show what is waiting to send or receive.
  • History::commitIfDirty(), commitMoved() and commitOwner(), and the page.delete:after and page.move:after events.
  • Git::lastFetched(). Git::fetch(), pull() and push() take a timeout, and commit() and commitAll() return a GitResult.

Changed

  • The admin Changes page is now History. It shows the remote's status with one Sync button, and the branch list when features.versions is on. The remote panel opens at once and fetches its status while it loads.
  • The admin's Publish action is renamed Save: saving turns the autosave draft into the page and records it.
  • Restoring an old revision commits it as a new entry, so history is never rewritten.
  • A failed commit is logged and the write still stands.

Removed

  • The git.commit setting (manual or auto) and the Publish-as-commit step. History::mode(), maybeAutoCommit(), publish(), discardDraft(), changes(), diffPending(), revertField(), fetch(), pull() and push() go with it, along with the Changes page's publish, discard, revert and diff actions and the separate fetch, pull and push buttons.

Comments

No comments yet. Be the first!

Loading form…