Skip to content

Releases: mayneyao/xmeta

xmeta v0.6.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:59
416eab0

xmeta 0.6.0

xmeta queries and folder schemas

  • Bundle SQLite and the existing fs_meta extension in xmeta. xmeta query [PATH] [SQL] queries a folder without a separate SQLite installation, .load step, index, or database file.
  • Add xmeta schema get/set/clear. Versioned field declarations are stored in the root folder's <metadata-namespace>.schema xattr or NTFS ADS. Schema edits leave file properties unchanged.
  • The extension reads folder schemas when fields is omitted. Explicit fields, including fields='', take precedence. CLI and application integrations share the same scanner, column conversions, and query behavior.
  • CLI queries are read-only and support bound JSON parameters, paged JSON/TSV results, and a SQLite progress-handler timeout. SQL writes, extension loading, and mutating scalar functions are blocked.
  • Existing file metadata and direct read/write commands require no migration. No Web UI or application runtime is added to the CLI.

xmeta 0.5.0

xmeta CLI

  • Add xmeta, a native command-line interface for reading and writing namespace properties. It does not need SQLite, a database file, or an external attr/xattr package.
  • Commands: get, set, unset, patch, and clear.
  • Use KEY=VALUE for strings and KEY:=JSON for typed values, or pass a JSON object with patch --from (including stdin).
  • Support --dry-run, --print, --replace, --json, --text, and --raw.
  • Exit codes distinguish I/O failures, usage errors, missing paths/keys, invalid data, unsupported filesystems, and set/remove conflicts.
  • Configure the default namespace with xmeta config set, a project-level .xmeta.json, an explicit --config file, or FS_META_NAMESPACE. Project config is discovered from the target path and takes precedence over the user config.
  • CLI and SQL scalar functions now share src/properties.rs, so validation, patch semantics, size limits, symlink/hardlink policy, and error messages stay aligned.

Compatibility

  • fs_meta_read and fs_meta_patch keep their behavior. Their output uses deterministic object key ordering on subsequent writes.
  • Existing metadata requires no migration. The CLI reads and writes the same xattr/ADS envelopes.
  • The CLI is intentionally single-target in this release; recursive and batch writes remain out of scope.

xmeta 0.4.0

Directory properties

  • Store custom properties on directories using native xattr on macOS/Linux and NTFS alternate data streams on Windows.
  • Query directories, including empty folders, alongside regular files in virtual tables. Use is_dir = 1 to select folders, then update or clear their properties with the same SQL operations and transaction/savepoint rollback as files.
  • Use fs_meta_read and fs_meta_patch on directories, including the virtual table's root. Directory properties belong to the folder itself and are not inherited by its children.
  • Discover directory support through the new directory-properties capability.
  • Directory scans read fresh filesystem metadata so Windows folder modification times match point lookups.

Compatibility and deletion

Virtual-table scans now include directories by default. Add WHERE is_dir = 0 to queries that should return only files. The root itself has no table row; access its properties through the scalar functions. Directory rows have an empty extension and NULL attachment/MIME columns. Their size is the native filesystem metadata length, not the total size of their contents.

The default DELETE clears only the selected entry's metadata namespace, preserving the folder and its children. With on_delete='delete_file', physical deletion accepts only empty directories and never recursively removes contents. Physical deletion remains irreversible by SQL rollback.

Directory symbolic links and Windows reparse points are rejected, including paths with trailing directory separators. Existing stored properties require no migration.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 12:02
adebe8a

sqlite-fs-meta 0.5.0

This release adds xmeta, a standalone native CLI for file and directory metadata. It reads and writes the same xattr/ADS properties as the SQLite extension, without requiring SQLite or a database file.

CLI

  • Read and write metadata with get, set, unset, patch, and clear.
  • Use KEY=VALUE for strings and KEY:=JSON for typed values, or pass a JSON object with patch --from, including stdin.
  • Support dry runs, replacement, JSON/text/raw output, and distinct exit codes for common failures.
  • Configure namespaces with xmeta config, project .xmeta.json, --config, FS_META_NAMESPACE, or a per-command override.
  • Share validation, patch behavior, size limits, and symlink/hardlink handling with the SQL scalar functions.

xmeta focuses on single-target metadata reads and writes. Use Eidos for visual metadata management. Existing metadata requires no migration.

Downloads

Platform CLI archive
macOS Apple Silicon xmeta-v0.5.0-aarch64-apple-darwin.tar.gz
macOS Intel xmeta-v0.5.0-x86_64-apple-darwin.tar.gz
Linux x86-64 xmeta-v0.5.0-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 xmeta-v0.5.0-aarch64-unknown-linux-gnu.tar.gz
Windows x86-64 xmeta-v0.5.0-x86_64-pc-windows-msvc.zip

Verify downloads against SHA256SUMS, extract the archive, and place xmeta (xmeta.exe on Windows) on your PATH.

The release also includes the SQLite extension as raw libraries and fs_meta-v0.5.0-<target> archives. CLI and extension downloads are packaged separately.

See the CLI reference for commands, configuration, and exit codes.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 04:46
3f55bad

sqlite-fs-meta 0.4.0

Directory properties

  • Store custom properties on directories using native xattr on macOS/Linux and NTFS alternate data streams on Windows.
  • Query directories, including empty folders, alongside regular files in virtual tables. Use is_dir = 1 to select folders, then update or clear their properties with the same SQL operations and transaction/savepoint rollback as files.
  • Use fs_meta_read and fs_meta_patch on directories, including the virtual table's root. Directory properties belong to the folder itself and are not inherited by its children.
  • Discover directory support through the new directory-properties capability.
  • Directory scans read fresh filesystem metadata so Windows folder modification times match point lookups.

Compatibility and deletion

Virtual-table scans now include directories by default. Add WHERE is_dir = 0 to queries that should return only files. The root itself has no table row; access its properties through the scalar functions. Directory rows have an empty extension and NULL attachment/MIME columns. Their size is the native filesystem metadata length, not the total size of their contents.

The default DELETE clears only the selected entry's metadata namespace, preserving the folder and its children. With on_delete='delete_file', physical deletion accepts only empty directories and never recursively removes contents. Physical deletion remains irreversible by SQL rollback.

Directory symbolic links and Windows reparse points are rejected, including paths with trailing directory separators. Existing stored properties require no migration.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 17:41

sqlite-fs-meta 0.3.0

What's new

  • Read a file's complete metadata namespace with fs_meta_read(path, namespace), including properties outside a virtual table's declared columns.
  • Update selected properties with fs_meta_patch(path, namespace, set_json, remove_json). Unchanged keys are preserved, JSON null remains a value, and named keys can be removed explicitly.
  • Discover these functions through the metadata-api capability. They use native extended attributes on macOS/Linux and alternate data streams on Windows.

Existing virtual tables remain compatible and require no metadata migration. Namespace operations take effect immediately, outside SQL transaction rollback; applications coordinating multiple processes must serialize writers. Hosts remain responsible for validating file access scope.

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 28 Sep 10:23

sqlite-fs-meta 0.2.4

This patch fixes the creation timestamp reported by filesystem virtual tables.

  • _created_at now uses the filesystem's actual creation time instead of modification time, for both directory scans and individual file lookups. It returns SQL NULL when creation time is unavailable.
  • Editing file metadata no longer appears to change the file's creation time on Windows. _updated_at and mtime continue to report actual filesystem modification time; Windows alternate data stream writes can still change that time.
  • Cross-platform regression checks cover creation timestamps, metadata edits and rollback. SQLite CLI integration tests now use extension-enabled SQLite, platform-specific library names and valid Windows paths, and fail explicitly when extension loading is unavailable.

No metadata migration is required. This release does not restore historical filesystem timestamps changed by other programs.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 26 Sep 17:08

sqlite-fs-meta 0.2.3

This release delivers the changes prepared for 0.2.1 and 0.2.2, whose release validation did not complete successfully.

  • Resolve relative scan roots against the owning database directory, including attached databases, and decode escaped SQL string arguments.
  • Support JSON field definitions with independent storage keys. Field names may contain spaces, Unicode and quotes; renaming a column can preserve existing attributes.
  • Restore exact metadata envelopes on transaction and savepoint rollback. Reject dropping a virtual table with pending metadata writes, and support transactional cleanup of retired keys after schema changes.
  • Resolve file attachment URIs relative to the database directory, including nested scan roots. In-memory databases retain scan-root-relative URIs.
  • Reject symlink traversal during file lookup, preserve scalar text values and refuse to overwrite malformed metadata.
  • Require an existing regular file for Windows metadata operations, preventing rollback from recreating a deleted file through an alternate data stream.
  • Qualify default Linux extended attributes with user. and ship a Linux arm64 binary alongside macOS arm64/x64, Linux x64 and Windows x64.

fs_meta_capabilities() exposes the new storage-key, rollback and attachment-path capabilities. Legacy comma-separated field definitions remain supported.

Rollback journals are in memory. These changes do not provide crash atomicity across SQLite and filesystem attributes, or isolation from independent filesystem writers. Opt-in physical file deletion remains irreversible.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 04:53

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 03:56