You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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).