Skip to content

Releases: marcua/ayb

v0.1.11

07 Sep 15:08

Choose a tag to compare

What's Changed

v0.1.11 is a massive release ahead of testing out a publicly hosted version of ayb. It features

  • A web frontend that fully mirrors the command line interface. Everything from registration to database listing and creation to querying to profile updates to sharing to snapshots are supported through the web! Relevant PRs:
    • Introduce web frontend scaffolding, implement register/login/entity details by @marcua in #531
    • [WIP] Frontend database details/query support by @marcua in #553
    • Create database interface by @marcua in #586
    • Reorganize nav for logged-out/logged-in states, implement logout by @marcua in #588
    • Don't require a base_url when in local web mode by @marcua in #597
    • Migrate HTML templating to Tera by @marcua in #600
    • Implement sharing/permissions interface, add ayb client list_database_permissions by @marcua in #606
    • Implement web interface for snapshots by @marcua in #614
    • Edit profile interface by @marcua in #621
  • Full Playwright end-to-end testing of the web interface. Relevant PRs:
    • Browser e2e testing for web interface by @marcua in #613
    • Tests for profile view/edit, database creation and querying, sharing, and snapshots by @marcua in #639
  • Support public_url for externally facing links (for when ayb is behind a load balancer/CDN) by @marcua in #657
  • A database details endpoint that exposes data the web interface needed to properly facilitate database exploration. (Add database_details endpoint on the server and client by @marcua in #560)
  • A feature to make it easier to run tests on ayb or try it out without setting up a mail server: Support for registration messaging backends other than SMTP (e.g., local file) by @marcua in #615
  • Some CI improvements: Speed up GitHub Actions for tests by @marcua in #620
  • Prevent abusive registration attempts: Introduce reserved username list and test for existing paths on registration by @marcua in #612
  • Clippy autoformat for uninlined_format_args by @marcua in #627

Dependency bumps

Full Changelog: v0.1.10...v0.1.11

v0.1.10

23 Feb 16:41

Choose a tag to compare

Docker images!

ayb v0.1.10 has a few quality-of-life improvements (replacing a dependency on aws-sdk-s3 with rust-s3 to speed up and stabilize builds, skipping isolation on non-Linux systems), but the major feature of this release is Docker images!

While the full details are in the documentation, here's a high-level introduction. To pull the latest version of the image:

docker pull ghcr.io/marcua/ayb

To run the server, you'll need to:

  1. Create an ayb.toml configuration file (see Running a server)
  2. Create a data directory for the databases
  3. Map these as volumes when running the container

For example:

docker run -v $(pwd)/ayb.toml:/ayb.toml \
          -v $(pwd)/ayb_data:/ayb_data \
          -p 5433:5433 \
          ghcr.io/marcua/ayb \
          ayb server --config /ayb.toml

To run client commands, you can create an alias for convenience:

alias ayb="docker run --network host ghcr.io/marcua/ayb ayb"

Then use the client as normal:

ayb client --url http://127.0.0.1:5433 register marcua you@example.com

Other improvements

  • Investigate and fix CI create DB error by @marcua in #511
  • Replace aws-sdk-s3 with rust-s3 by @marcua in #510
  • Skip isolation with a warning when not on Linux by @marcua in #525
  • Dockerfile with image publishing on new tag by @marcua in #517

Dependency bumps

Full Changelog: v0.1.9...v0.1.10

v0.1.9

03 Dec 03:49

Choose a tag to compare

High-level description: public and individual sharing

Beyond clearer errors and instructions, the major two features of this release are public sharing levels and individual sharing permissions. By default, only the owner / creator of an ayb database can access it. It's possible to share ayb databases in two ways:

  • By setting the public sharing level of the database to give all entities some level of access to the database.
  • By sharing the database with a particular entity.

To set the public sharing level of a database, select one of the following options:

# The default setting: no entity will be able to access the database
# unless they specifically get permissions.
$ ayb client update_database marcua/test.sqlite --public-sharing-level no-access

# With a public sharing level of `fork`, entities will be able to see
# the database in the owner's list of databases using `ayb client
# list` and fork a copy of the database under their own account. They
# won't be able to query the database unless they fork it. Note:
# Listing access is implemented today, but forking one database into
# another account is not yet implemented.
$ ayb client update_database marcua/test.sqlite --public-sharing-level fork

# In addition to the listing and forking access that `fork`
# allows, `read-only` access allows any entity to
# issue a read-only (e.g., SELECT) query against the database. They
# can't modify the database.
$ ayb client update_database marcua/test.sqlite --public-sharing-level read-only

To provide a specific user with access to a database, select one of the following:

# Revoke access to a database from an entity.
$ ayb client share marcua/test.sqlite sofia no-access

# Allow an entity to make read-only (e.g., SELECT) queries against a
# database.
$ ayb client share marcua/test.sqlite sofia read-only

# Allow an entity to make any type of query against a database.
$ ayb client share marcua/test.sqlite sofia read-write

# Allow an entity to not only modify a database, but also to manage
# snapshots and change the permissions of any non-owner entity.
$ ayb client share marcua/test.sqlite sofia manager

Individual pull requests

Feature/cleanup changes

  • Make a few errors that new users are likely ot encounter easier to understand by @marcua in #455
  • Migrations for sharing permissions data models by @marcua in #461
  • Add instructions for setting up test postgres user on Linux vs macOS by @marcua in #463
  • Permissions data models in Rust by @marcua in #466
  • Introduce update_database endpoint to enable public sharing level update by @marcua in #473
  • Permissions public_sharing_level read-only/fork support by @marcua in #479
  • Database sharing with individual entities by @marcua in #487
  • Documentation for public sharing level and entity-specific permissions by @marcua in #483

Various dependabot changes

Full Changelog: v0.1.8...v0.1.9

v0.1.8

27 Aug 04:19

Choose a tag to compare

What's Changed

The major feature of this release is periodic snapshot-based backups to S3-compatible storage (#14). To learn more, read the snapshots/backups documentation. Beyond snapshots, we introduced a code of conduct and refactored the client / end-to-end tests as each was growing unruly.

  • Add code of conduct by @marcua in #310
  • Move databases into their own directory, introduce snapshot path (changes storage format, requires migration) by @marcua in #311
  • Unsafe mode for SQLite querying by @marcua in #312
  • Introduce scheduled periodic snapshot loop with basic vacuum-based backups by @marcua in #316
  • Introduce snapshot model, storage manager, and refactor model macros for reuse by @marcua in #317
  • Add support for S3 force_path_style; Introduce localstack for testing; remove debugging symbol details in Cargo.toml by @marcua in #358
  • Refactor client functionality in the CLI by @marcua in #365
  • Reduce default debugging information for development by @marcua in #367
  • Refactor end-to-end tests into smaller groupings by @marcua in #372
  • List snapshots endpoint, end-to-end tests, standardize end-to-end test setup, introduce localstack on GH Actions by @marcua in #385
  • Ability to restore from a snapshot by @marcua in #405
  • Identify snapshots by their hashes by @marcua in #417
  • Don't upload snapshot if it's already in S3, prune snapshots once list gets too long by @marcua in #418
  • Replace gzip wtih zstd for compressing snapshots by @marcua in #424
  • Cleanups/refactors of snapshot execution logic by @marcua in #432
  • Add mutex to ensure only one snapshot run happens at a time by @marcua in #444
  • Snapshots documentation by @marcua in #446

Full Changelog: v0.1.7...v0.1.8

v0.1.7

25 Feb 14:45

Choose a tag to compare

What's Changed

The major new feature is interactive mode for multiple queries at the command line by @Suguivy. This release also includes a few bugfixes, some refactors, and documentation updates.

  • Return entity slug with confirmation endpoint by @marcua in #279
  • Refactor: Move everything but structs from http to server module by @marcua in #284
  • Interactive mode for multiple queries by @Suguivy in #286
  • Interactive followups by @marcua in #292

Dependency version bumps

New Contributors

  • @Suguivy made their first contribution in #286

Full Changelog: v0.1.6...v0.1.7

v0.1.6

14 Jan 14:50

Choose a tag to compare

What's Changed

This release packs a punch! At a high level, we've got:

  • Support for web frontends like aybWeb: the frontend can share details on its endpoints so ayb can point you at the right page for registration, etc.
  • Tenant isolation for databases: through nsjail, we ensure that queries to one database can't access other databases on the same machine, and that resources like memory and CPU are isolated across databases.
  • Client API token saving: When you register or log in with the ayb command line, it will remember the server URL and API token you used to save you time in the future.
  • Profiles: The ability to get details on a user, like ayb client list for listing their databases or ayb client update_profile / ayb client profile for updating and getting their profile information.
  • Various testing improvements and bug fixes.

The full set of pull requests is here:

  • Improve cleanup and test creation in E2E testing by @sofiaritz in #224
  • Add email.templates.confirm.confirmation_url by @sofiaritz in #225
  • Entity retrieval API and ayb client list command; Introduce CORS by @sofiaritz in #231
  • TemplateString struct by @sofiaritz in #240
  • Replace AybError with an enum by @sofiaritz in #241
  • Implement web frontend details by @sofiaritz in #242
  • Isolate databases/queries from one-another by @marcua in #235
  • Make clippy break build on warnings by @marcua in #253
  • Implement user profiles and rel=me verification by @sofiaritz in #248
  • Save API tokens and default server URL locally by @marcua in #259
  • Fix profile update bug by @marcua in #268
  • Test for different casing on entity slugs, catch an error in the database interface, lowercase slugs before query by @marcua in #269
  • ...and a whole bunch of package updates from @dependabot

Full Changelog: v0.1.5...v0.1.6

v0.1.5

18 Nov 03:46

Choose a tag to compare

What's Changed

  • Update text based on blog post by @marcua in #107
  • Link to blog post by @marcua in #113
  • Readme updates by @marcua in #144
  • Add fernet and lettre libraries to faciliate short-lived tokens and email authentication by @marcua in #146
  • Add lettre dependency on tokio1-native-tls by @marcua in #147
  • Move serde_json from dev_dependencies to dependencies by @marcua in #157
  • Email registration and login by @marcua in #145
  • Create API key on account creation/login, validate permissions on sensitive endpoints by @marcua in #211
  • Add explicit lifetimes in constants by @sofiaritz in #212
  • Introduce Clippy, apply automated fixes, place endpoints in their own files, and introduce conversion macros by @sofiaritz in #222
  • Introduce ayb default_server_config command by @marcua in #223

New Contributors

Full Changelog: v0.1.4...v0.1.5

v0.1.4

04 Jun 23:24
cfad960

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/marcua/ayb/commits/v0.1.4