Skip to content

TYDAL 1.1.0

Choose a tag to compare

@tydaleon tydaleon released this 08 Oct 07:59
· 60 commits to main since this release

Added

  • Purpose-agnostic vault write ops ingest / update / withdraw.
    Every purpose's ingest now lands in the vault's ingest target, and
    gallery vaults gain all three next to activate/open/close (curator
    uploads for Full Frame). The payload is one flat metadata document:
    name and description go onto the resource, every other key into its
    metadata. update and withdraw only accept resources that vault's
    ingest created; the write-info probe lists them (ingested) and reports
    max_upload_bytes. See VAULT_WRITE_METHODS.md §3.
  • exhibitions:setup / exhibitions:create: provision Full Frame photo
    exhibitions. setup runs once per organization (photo scheme, index and
    Photos collection); create runs once per exhibition (workspace, private
    gallery vault, its read + write keys, and optionally a curator account).
  • POST /api/v1/auth/identify: an identity check for products that use
    TYDAL as their identity provider (Full Frame curators sign in with their
    TYDAL account). No token or session is issued; rate-limited per email and
    per IP.
  • Workspaces chosen by name when creating a vault. The vault form picks
    the workspaces it reads from (workspace_ids on vault create/update), and
    the workspaces dialog manages the same links from the other side.
  • tools/clients/fullframe.sh setup|create: a tier-aware front for
    exhibitions:setup / exhibitions:create, so provisioning Full Frame
    exhibitions no longer needs docker exec -w /var/www/html ….
  • exhibitions:setup --language=CODE: the Photos collection gets the
    language you pick (asked interactively, default en), and a re-run with
    the option corrects it. When run through fullframe.sh, the closing hint
    suggests fullframe.sh create instead of php artisan exhibitions:create.
  • exhibitions:create --curator-password=…: a new curator's password
    can be chosen instead of changed later. Interactive runs ask for it
    (hidden, confirmed; empty = generated). It's validated before anything is
    created, and an existing account's password is never overwritten.
  • Quick reference: every everyday script and
    artisan command on one line, in docker and native form, with preconditions.
  • Tools index: what goes in each tools/ category.
  • The scheduler now runs in dev. Before, nothing ran schedule:work, so
    resource:prune, files:purge-uncommitted and resources:purge-drafts never
    fired. The docker tier gets a scheduler compose service (tydal_scheduler,
    toggled with app/queue by configure.sh). On the host tier start.sh runs
    schedule:work beside the queue. start.sh prints where the daemon runs and
    warns if the container is down. DEPLOYMENT.md gains the production cron entry.

Changed

  • ai vault ingest payload. name and source_hash now travel inside
    the metadata JSON field instead of as top-level form fields, which are no
    longer read. @tydal/client ≥ 1.5.0 and @tydal/vault-mcp already send the
    new shape; raw multipart callers must update.
  • Login and registration are throttled per IP (20 and 10 a minute), on top
    of the existing per-email limit on failed logins.
  • tools/ reorganized by role. deploy/ keeps the stack lifecycle.
    clients/ holds what sits at TYDAL's border (vault-apps.sh, formerly
    deploy/clients.sh, plus fullframe.sh). dev/ holds seeding and smoke
    (seed-vault.sh, loadtest.sh), and lib/ the sourced tier.lib.sh. The
    root wrappers ./clients.sh and ./seed-vault.sh still work.
  • tools/deploy/test.sh no longer resets the dev database. It used to run
    migrate:fresh --seed on tydal although Pest runs on tydal_test. It now
    creates tydal_test if missing, runs the client/org-mcp/vault-mcp
    suites (it pointed at the removed mcp/ workspace), runs every suite even
    after a failure, and accepts --backend-only and -- PEST_ARGS.

Fixed

  • Uploads over 50 MB on the docker tier. The app image's nginx capped
    every request body at 50 MB, below PHP's limits. Its body limit now matches
    PHP_POST_MAX_SIZE (310 MB).
  • seed-vault.sh works against the current API again. Resources are created
    with state: live, and the vault with organization_id, state: public and
    workspace_ids. The removed visibility / is_published fields made every
    resource create fail and the vault come out private.
  • vault-apps.sh shields org-mcp/ and vault-mcp/ node_modules
    (it listed the removed mcp/).

Removed

  • tools/deploy/populate.sh, tools/deploy/query.sh and tools/bulk_uploader/.
    They had broken against the current API: visibility instead of the required
    state, and calls to the removed extract/autotag endpoints. The uploader's
    accept/tags logic already lives in AutoApprovalService. Use
    tools/dev/seed-vault.sh for dev data (see tools/README.md).