* feat(database): add tags property to collection
* feat(cli): add version commit command
* chore: add collection tags
* refactor: expose plugin-backups server api
* refactor(database): unify backup and restore options
* feat(database): support selective backup and skip full pre-drop
* chore: add database adapter option tests
* feat(backups): expose backup and restore table options
* chore: sub class of BackupManager can change file prefix
* feat(backups): add description fied in backup list
* fix: remove backup metadata on destroy
* fix: quote postgres backup table patterns
* chore: add collection tags
* feat(backups): isolate version control backup storage and cache
* feat(backups): isolate restoring from version control or backups`s storage and cache
* fix(cli): allow 2000-char version commit description
* chore(cli): rename command `version commmit` to `revision create`
* fix(plugin-backups): persist backup creator metadata
* feat(client): include command user in event payload
* chore(ai): add error handle in app:plublishEvent api
* docs: add version control operations guide
* fix(collection): mark system collections with system tags
* fix(collection): mark business collections with business tags
* refactor(database): replace collection tags with data category
* test(plugin-backups): stabilize restore manager tests
* fix(plugin-backups): stabilize restore test metadata
* chore: update collection data categories
* fix(plugin-verification): move data category to server collection
* fix(plugin-backups): qualify postgres table filters with schema
* chore: mysql client
* fix(cli): check version control plugin before revision create
---------
Co-authored-by: chenos <chenlinxh@gmail.com>
* fix: avoid persisting current schema on field sync
* test: move schema sync cleanup to hooks
* fix: respect collection manager schema during field sync
* test: avoid mocking schema in field sync test
* test: use default schema in field sync test
* fix(database): preserve loaded table names with prefix
* fix(data-source-main): separate dbsync collection source
* fix(database): preserve prefixed tables only for dbsync
* test(data-source-main): stabilize prefixed table loading case