> For the complete documentation index, see [llms.txt](https://docs.tessl.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tessl.io/changelog-web.md).

# Web Changelog

## 2026-09-03

### Breaking changes

* `GET /experimental/tasks` renames its link filters from `filter[link.type]` and `filter[link.value]` to `filter[linkType]` and `filter[linkValue]`. The dotted names are removed with no alias. The old spellings worked only because this route read those two query keys by hand; the shared filter parser matches field names with word characters only, so a dotted key never reaches a route that relies on the parser. The rename aligns these filters with that parser's vocabulary, so filter field names are camelCase throughout.

## 2026-09-02

### Breaking changes

* `GET /experimental/tasks/by-link` is removed. `GET /experimental/tasks` now accepts `filter[link.type]` and `filter[link.value]`, which return every task carrying the reference, newest first, with the same paging as any other task list. Each filter narrows on its own and the two compose.
* `tessl task by-link` is removed. Use `tessl task list --link-type` and `--link-value`.

### Features

* Several tasks can now link the same external reference. Previously a given pull request URL or Linear issue belonged to exactly one task per workspace, so when a later task reported the same reference it was silently dropped and never showed up in a lookup. A pull request worked on across several review rounds now lists every task that touched it.

## 2026-08-26

### New features

* Organizations now have their own Home, Context, and Findings pages that roll up every workspace in the org, so you can see context health, quality bands, and security findings across the whole organization in one place. Signed-in users now land on org Home by default, and the sidebar logo navigates there. Inventories owned directly by the org, with no workspace, now appear on these pages too.
* The organization Insights page shows organization-wide activity: active users, plugin install counts sourced from a nightly snapshot (total, daily series, and top plugins), and per-window timeframe labels on each activity graph. The `GET /experimental/orgs/{orgId}/insights` response carries an `installs` object and `window.installsThrough`.
* New scheduled runs get a plain-English schedule builder (every N hours, daily, weekly on chosen days, or monthly) with a time-of-day and a Timezone dropdown, keeping raw cron entry behind a toggle for expressions the builder cannot model. The Skill, Repository, and Environment fields become searchable comboboxes, the Agent and Model controls populate from the supported-agents endpoint, and the form links out to environment setup.
* The scheduled-run detail page shows the schedule author, a linked and summarized Skill, and each run's output as a pull request link or summary. The scheduled-runs table shows a plain-English schedule with its timezone, a Name and Description, and the last run's outcome. Scheduled runs accept an optional `description` on `POST` and `PATCH /experimental/scheduled-runs`.
* Launch runs can be cancelled through the new `POST /experimental/launch-runs/{id}/cancel` endpoint. Cancellation is idempotent, tears down the sandbox, and marks the run with a distinct `cancelled` status. Launch-run reads gain a derived `outcome` (succeeded, no-action, or failed with a reason) so an agent-reported failure is distinguishable from a completed run, plus a live `progress_phase`, `progress_message`, and `liveness` projection.
* The native remote MCP server gains a discover, validate, publish, and poll workflow for skill-backed plugins through `validate_plugin_for_publish`, `publish_plugin`, and `get_plugin_publish_status`, an optional pre-publish skill quality review through `review_skill` and `check_review_status`, and a read-only `list_workspaces` tool for workspace discovery. `validate_plugin_for_publish` now reports every detectable publishing problem in one call. The endpoint serves both the current MCP protocol (`2026-07-28`) and the legacy version (`2025-11-25`), and every authenticated tool call produces an audit event.
* Organizations can run and track a Claude marketplace sync at org scope through `POST /v1/orgs/{orgId}/claude-marketplace/sync`, `GET /v1/orgs/{orgId}/claude-marketplace/sync/latest`, and `GET /v1/orgs/{orgId}/claude-marketplace/sync/overview`. The integration settings page shows a live sync overview with per-plugin status, versions, Quality and Security columns, and run history, plus an Automatic sync toggle (`syncEnabled`) that pauses scheduled sync while keeping manual sync available.
* Workspace owners can delete eligible plugins from the plugin detail page through a Delete plugin action and confirmation, without Tessl-admin support. Policy rejections surface the exact reason.
* New `GET /v1/whoami` reports what a request is authenticated as, for both user sessions and API keys, discriminated on `data.type`. `GET /v1/users/me` is deprecated in favor of it.
* Feature availability can now be gated by region from a committed policy driven by the `TESSL_REGION` environment variable: routes marked `regionalFeature` return `404` where a feature is withheld, and the frontend hides it. The policy ships empty, so nothing is withheld yet.

### Improvements

* The BYO LLM gateway is now the *Customer Managed Gateway* throughout the product. It uses a high, medium, and low model tier selection instead of per-feature model dropdowns: `byo-provider` responses drop `featureDefaultModels` and carry `tierModels` instead, and enabling a gateway now requires a model for every tier. A gateway can be created with a connection and no models while routing is off, so you can save the connection first and add models later. The stored credential shows as a masked, read-only value with a Replace control.
* Linear can no longer be connected at organization level and is managed at workspace level only. The org-level Linear connect, callback, metadata, and config routes under `/v1/orgs/{orgId}/integrations` are removed, and Linear no longer appears in org integration listings. Existing workspace-level Linear connections keep working. In a hoisted organization with more than one source-control installation, a workspace's own connection is now preferred over the org's.
* The launch-run, scheduled-run, and task-run creation endpoints accept a GitHub repository as a bare `owner/repo` slug, an HTTPS URL, a scheme-less link, or SSH shorthand, normalize it to a canonical `https://github.com/owner/repo`, and reject unparseable or non-GitHub values with a `400`. Launch runs, scheduled runs, and task runs also accept an optional `snapshotFamily` (`base` or `dev`) to select the base sandbox image. Creating a scheduled run from an inline spec now requires an `environmentId` and rejects the request with a `400` up front instead of failing later at trigger time.
* A cloud launch that names no GitHub-token source (no uploaded env file and no workspace environment carrying a token) is now rejected with a `400` before the run, workflow, or 100-credit platform fee is created, and the error names both remedies. Checkout is blocked with a `503` unless the whole payment-to-credit pipeline is configured, so a card is never charged against a pipeline that cannot grant credits.
* Org read endpoints now include the organization `slug` on `GET /v1/orgs/{orgId}` and `GET /v1/users/{userId}/orgs`, and `/orgs` URLs accept an org id or slug with the slug canonical. `GET /experimental/launch-runs` and scheduled-run fire history include the configured `mcpServers`, `outcome`, `summary`, `pr`, and `triggerSource` fields. Workspace environments can carry MCP servers, which are applied to launch, scheduled, and task runs.
* Paginated remote MCP list tools now render an explicit page count that states it is not the total and include the exact `nextCursor`, so agents can page through every result. `list_organization_skills` and `get_skill` discover skills contained in published plugins and accept an optional `workspaceId` filter.
* Publishing a passing plugin now automatically starts finding enrichment for eligible security findings without blocking, delaying, or failing the publish. Creating an inventory now requires selecting a GitHub organization. The target-repository picker searches across every connected GitHub organization instead of one, and the scan-scope picker shows only repositories already in the policy with a searchable combobox to add more.
* The organization Home Most Installed chart ranks plugins by 30-day installs from the same source as the Skill Installs sparkline, so the two panels agree. The Active users tile is replaced by a New members tile that counts members by join date. Context score badges open a popover with the full quality, impact, and security breakdown. The Home CLI box gains a package-manager selector (`npm`, `yarn`, `pnpm`, `bun`) that updates the shown command and remembers the choice.
* During the Code Review beta, review rounds consume no credits while every round is still recorded in the usage ledger and shown at 0 credits. Support staff can grant 500 credits from the admin Grant Credits dropdown, and can reset a user's onboarding status from the admin user page.

### Bug fixes

* Free-tier organizations now reset their credit balance on a rolling monthly window anchored to their signup date, with month-end clamping, and the public credit status exposes an explicit `resetsAt`. Paid-plan organizations with no billing ledger are no longer given the free-tier allowance and resolve as unlimited instead of being wrongly blocked. Team checkout now succeeds for billing addresses outside the US and Canada that carry a state code, and legitimate Canadian territory addresses are accepted.
* A scheduled run's `nextRunAt` is now recalculated and stored when its cron or timezone changes or when a paused schedule resumes, so it is no longer blank after those operations. A completed launch run whose agent reported failure shows a distinct Agent Failed badge instead of reading as Completed.
* The "View in Context" link on a finding now lands on that finding's own Context item rather than an empty page; the findings response exposes `groupId` and the Context endpoint accepts `filter[groupId]`. Context tables gain sortable column headings and a repository filter. The org Home context-health bands are sourced from the context model over the same scope as the Context page, so the bands sum to the Total context figure.
* Charts on organization pages that had stopped drawing now render again, the org usage range no longer triggers a refetch loop, and several organization Home and Insights states now show static placeholders or a Try again control instead of flashing skeletons or asking for a full reload.

### Features

* The workspace sidebar now has an **Activity** item that replaces the separate **Eval Runs** and **Reviews** items, showing eval runs and reviews in one timeline.
* Workspace **Members** moved out of the sidebar and into **Settings**, where it is a card on the workspace Settings page.
* The organization switcher moved from the account menu at the bottom of the sidebar to a dropdown at the top of the sidebar. Organization **Members**, **Settings**, and **Admin Keys** open from that dropdown.
* The sidebar has a new collapsible **Resources** section with **Registry**, **Documentation**, and **Community**. The **Blog** link was removed.
* Search is now an icon in the sidebar header. Click it, or press `cmd-K` (`ctrl-K` on Windows and Linux), to open the search popover.

## 2026-07-31

### Features

* `POST /experimental/tasks`, `GET /experimental/tasks/{id}`, and `GET /experimental/tasks/by-link` responses now include a `links.web` field with the task's URL in the web app.

## 2026-07-24

### Features

* `GET /v1/workspaces/{workspaceNameOrID}/skill-inventories/{id}/findings` now returns a `repoActivity` field (`active`, `quiet`, or `dormant`) reflecting how recently a finding's repositories were pushed to, and accepts a `repoActivity` query parameter to filter results by one or more of these buckets.
* The canonical home banner on skill pages now shows a colored status badge (In sync, Stale, or Modified), plus when that status was last confirmed, matching the detail already shown in the "Also appears in" panel.
* `GET /experimental/tasks/{id}/runs` responses now include a `summary` field on completed runs when one is available, giving a short description of what the run did.
* The task timeline now shows a short summary of what a completed run did, alongside its existing status and links.

### Bug Fixes

* The Eval Runs pages no longer show an unrelated default-model notice banner at the top; pages now open directly with the heading and results table.
* Eval run detail pages now show an "Activation Run" label above the run heading for runs that measure activation, and the Skills Activated column shows "None" when a solution completed with confirmed zero activations; previously this looked identical to a run still in progress.
* The stale copy-state label on skill pages now reads "Last in sync {date}" instead of the contradictory "In sync until {date}", so the date shown accurately reflects when the copy last matched its source.
* Skill listings on the registry now correctly hide skills whose current review failed, and no longer hide skills based on stale historical review results for identical content.

## 2026-07-17

### Features

* Connected GitHub App integrations now show separate Manage and Remove actions in integration settings, in place of a single Remove button: Manage opens the installation's settings on GitHub, and Remove opens a confirmation dialog before disconnecting.

### Bug Fixes

* The Ignored repos picker on the inventory scans page now searches your connected provider directly, so repositories beyond the first page of previously scanned repos can be found and ignored.

## 2026-07-09

### Features

* The eval runs list now shows a single Injected Context column in place of the separate Type and Subject columns, plus a new Scenarios column showing where each run's scenarios live.

### Bug Fixes

* Removed an inconsistent focus-ring outline from breadcrumb links; other interactive elements are unaffected.

## 2026-07-08

### Features

* The eval run detail view now labels variants "Baseline" and "With context" (replacing the misleading "Without context" label) and shows a new Injected Context panel describing exactly what fixture, plugin, directory, or commit a run injected.

## 2026-07-06

### Bug Fixes

* Skill-overload warnings no longer count skills sitting in plain source directories that no agent actually loads; only genuinely root-loaded skills count toward the threshold.

## 2026-07-03

### Features

* Billing settings now show the Team plan's monthly price inline: free organizations see it next to the Upgrade to Team button before checkout, and Team organizations see it next to their plan name.
* `GET /v1/orgs/{orgId}/billing/subscription` now includes `monthlyPriceUsd` and `upgradePriceUsd` fields. `monthlyPriceUsd` is the current plan's monthly price (`null` for free or custom-priced plans); `upgradePriceUsd` is the Team plan's upgrade price (`null` once the org is already on a paid plan).
* Workspace member pages now support setting a default role that's automatically granted to every member of the workspace's organization, on top of any individual membership, useful for organizations that provision users via SSO.
* `PATCH /v1/workspaces/:id` now accepts an `orgDefaultRole` field. When set, every member of the workspace's owning organization is granted that role on the workspace (capped at `publisher`); omit it or set it to `null` to remove the default.

### Bug Fixes

* The org billing page's credit usage display now matches the sidebar meter: over-limit usage reads "You've used your credit allowance" instead of a negative remaining figure, and fractional credit amounts are floored consistently.

## 2026-07-02

### Features

* New `DELETE /v1/projects/:projectId` endpoint soft-deletes a project: it's removed from normal reads and its name and source binding are freed for reuse, while eval-run and scenario-generation history is preserved.

### Breaking Changes

* `GET /v1/orgs/{orgId}/credits` **no longer returns** the `bundles` field by default. Pass `?include=bundles` to include the purchasable credit-bundle catalogue in the response, as before.

## 2026-07-01

### Features

* Claude Sonnet 5 (`claude-sonnet-5`) is now available as an agent model for eval runs.
* The workspace Inventories Scans page has been rebuilt as a dashboard, with summary cards for estate growth, findings backlog, and scan health shown above the scans table.

## 2026-06-29

### Features

* Organizations can now subscribe to the Team plan and manage billing from organization settings: pay by card through a hosted checkout, get a monthly credit allowance, and buy additional credit bundles whenever you need them. Cancelling reverts the organization to the free plan at the end of the billing period.

### Bug Fixes

* Requests to `GET /v1/tiles/:workspaceName/:tileName/versions/:version/files/:filePath` with a malformed percent-encoded file path now return `404` instead of `500`. File paths containing a literal `%` are also served correctly.

## 2026-06-27

### Breaking Changes

* Review and fix runs that select a custom reviewer plugin or a non-default model **now require** a paid plan. An explicit reviewer or model override on `POST /experimental/review-runs` or `POST /experimental/fix-runs` now returns `403` for an organization without the entitlement; previously such requests were accepted or silently fell back to the default. Free organizations continue to run against the default reviewer and model with no change.

## 2026-06-25

### Features

* Workspace members can now start skill reviews, security reviews, and review-fix runs. Previously these required the publisher role or higher; running a review is now available at the member level.

## 2026-06-19

### Features

* Org install policies now support a git source allowlist. Under Source restrictions, admins can configure which git hosts and repository path prefixes are permitted; installs from any unlisted git source are blocked at evaluation time. Sources are specified as `github.com/org` or `github.com/org/repo` patterns.
* The install policy `sourceRestriction` rule now accepts a `gitSourceAllowlist` field: an array of `{ host, path }` objects. When present, policy evaluation blocks any git-sourced install whose source does not match a listed host and path prefix.

## 2026-06-18

### Features

* Skill inventories can now be deleted from the inventory list. Workspace managers and owners see a delete action with a confirmation dialog; deleted inventories and their scans are immediately hidden but the workspace can be re-scanned at any time.
* New `DELETE /v1/workspaces/:workspaceName/skill-inventories/:id` endpoint removes a skill inventory and hides it and all associated scans. Requires the `manage_integrations` permission.
* The inventory estate view now includes an Ignored repos panel for managing which repositories are excluded from future scans. Ignoring a repo purges its existing scan data and prevents it from being re-ingested on subsequent imports.
* New `GET`, `POST`, and `DELETE /v1/workspaces/{workspaceName}/skill-inventories/{id}/ignored-repos` endpoints let workspace admins manage which repositories are excluded from inventory scans. Ignoring a repo cascades a full data purge of its existing findings.
* The Inventories item now always appears in the workspace sidebar when the feature is enabled, even before any imports have been run. The empty state and failed-scan messages now show the `tessl inventory import` command.
* Install, publish, and dependency policies can now be set and viewed at the org, workspace, and project levels from a unified policy editor. The editor shows the effective merged policy with per-field provenance badges indicating whether each value is set at the current level or inherited from a parent.
* `GET /v1/policies/{type}/{id}/effective` now accepts a `?provenance=true` query parameter. The response includes a `policySource` field with per-field attribution showing which hierarchy level set each effective value.
* New users with pending org invitations are now shown them during sign-up, before a personal workspace is provisioned. Accepting an invite joins the invited org directly; skipping provisions a personal workspace as before.
* Eval runs now default to `deepseek-v4-flash` as the solver model (previously `glm-5.1`). Runs without an explicit `model` override pick up the new default; the scorer default remains `claude-sonnet-4-6`.

### Bug Fixes

* The plugin registry no longer shows stale installed-plugin content. Registry overview pages now always display the plugin's own declared skill documentation instead of falling back to vendored internal files.
* The managed requirements search dropdown in the policy editor now overlays the page correctly instead of pushing the save button and other form content down.
* Sending an org invitation now immediately refreshes the pending invitations list without requiring a page reload.

## 2026-06-17

### Features

* The inventory scan detail page now shows which first-party skills were added to or excluded from the index, with timestamps for added skills and reasons for excluded ones. A Re-index first-party skills button triggers a fresh indexing pass from the same page.

### Bug Fixes

* Skills submitted from repositories whose default branch is not `main` no longer get stuck in a sync error loop. The skill's source branch is now correctly recorded at submission time.

## 2026-06-11

### Features

* Review Runs now show what was reviewed: a registry-linked badge for tile skills, or the skill name for direct CLI review runs.
* Review run objects now include a `subject` field in their metadata: `{ type: "tile_skill", tileRef, registryUrl }` for tile-triggered reviews, or `{ type: "skill", name }` for CLI-initiated reviews. Runs created before this change omit the field.

### Bug Fixes

* Buttons rendered as links (navigation CTAs and similar) no longer show an underline on hover.

## 2026-06-04

### Bug Fixes

* Skill-name validation no longer rejects names containing `anthropic` or `claude` as substrings. Skills such as `claude-api` that were previously blocked now validate and score correctly.
* tile quality scores now include completed review run results. Previously, review run scores were missing from the quality calculation.

## 2026-05-28

### Features

* File downloads for tile versions with failed, errored, or pending moderation now return `403` with a `moderation_hidden` error code. Inline docs and steering are omitted from those version objects on `GET /v1/tiles`, `GET /v1/tiles/:ws/:tile/versions`, and `GET /v1/tiles/:ws/:tile/versions/:version`.
* tile pages now show a placeholder instead of inline docs and steering when a version is under moderation review, has failed moderation, or encountered a moderation error.
* Public tiles now enforce a platform-level critical-severity security threshold: publishing a version with critical-severity findings blocks moderation and prevents the version from becoming available, regardless of workspace security policy settings.
* Claude Opus 4.8 (`claude-opus-4-8`) is now available as an agent model for eval runs.

### Bug Fixes

* Security severity levels in moderation failure messages now display as 'Critical', 'High', 'Medium', and 'Low' rather than internal identifiers.
* Trend indicators on tile analytics now show 'New' when there is no baseline period to compare against, instead of an incorrect percentage.

## 2026-05-27

### Bug Fixes

* Eval-run detail pages now live under workspace-scoped URLs (`/workspaces/:workspace/eval-runs/:id`), so the sidebar shows the correct workspace navigation. Existing `/eval-runs/:id` links redirect automatically for workspace members; public run links continue to work without authentication.

## 2026-05-22

### Features

* `moderationStatus` and `moderationError` are now included in the version objects returned by `GET /v1/tiles`, `GET /v1/tiles/:ws/:tile`, `GET /v1/tiles/:ws/:tile/versions`, and `GET /v1/tiles/:ws/:tile/versions/:version`. `moderationStatus` is one of `pass`, `fail`, `error`, `pending`, or `skipped`; `moderationError` carries a safe, human-readable message when present. The deprecated `moderationPassed` boolean is unchanged; `moderationStatus` is the recommended replacement.
* The moderation status banner on tile pages now shows three distinct states: failed moderation (red), moderation error (orange), and review in progress (blue), each with copy tailored to the outcome.

## 2026-05-21

### Features

* Security review is now a required stage before a published tile version becomes available. After publishing, a version stays in `pending` moderation state until the security scan completes; a failed or errored scan results in a `fail` verdict and prevents the version from being accessible.
* tiles now show a pending moderation state immediately after publishing while security review runs; the version becomes available once review completes, and a failed scan keeps it offline.
* Workspace member pages now include a short description explaining that org membership is required before a workspace role can be assigned, with a direct link to the org members page.

### Bug Fixes

* The error toast shown after a failed skill submission now displays a close button and auto-dismisses.

## 2026-05-14

### Bug Fixes

* Publishing to a workspace where you lack the publisher role now returns `401 Unauthorized` with a message directing you to ask a workspace manager or owner (previously returned `404 Not Found`).

## 2026-05-13

### Features

* tiles and skills with no eval coverage now show an adjusted score: 80% of the review-based score at zero evals, ramping to full weight at three or more. Search ranking and score badges reflect this change.

## 2026-05-12

### Features

* The organization switcher has moved into the user menu with keyboard navigation. The workspace list now shows all workspaces across organizations, with an org badge when you belong to more than one.

### Breaking Changes

* The `allowUrlSources` and `allowFileSources` fields **have been removed** from the managed-project policy; `PUT /v1/workspaces/{workspaceId}/managed-project-policy` now returns an error if either field is sent. Existing policies are migrated automatically.

### Bug Fixes

* The workspace selector in the 'Add member to organization' form now correctly requires a selection before submitting.

## 2026-05-11

### Features

* `GET /v1/workspaces/:id` now accepts a workspace name in place of an ID.

## 2026-05-08

### Features

* Workspace settings now include toggles for public publishing, security reviews, and eval runs, accessible to workspace managers and above.
* New `GET`, `PUT`, and `DELETE /v1/workspaces/{workspaceId}/managed-project-policy` endpoints for managing workspace dependency-pinning policies.
* tiles in workspaces with security reviews disabled now show a disabled state instead of Pending on the security tab.

## 2026-05-07

### Features

* Starting an eval run or generating scenarios now returns 400 for workspaces with evals disabled.

### Bug Fixes

* Workspace created during onboarding now appears in the sidebar immediately without a page reload.

## 2026-05-06

### Features

* New /changelog page summarizing what shipped on Web and API each week.
* Onboarding now captures role and use case during signup.

### Bug Fixes

* UUID validators relaxed to accept any valid hex format.

## 2026-05-05

### Features

* Refreshed copy on workspace and org role descriptions to make permissions easier to understand at a glance.
* Creating a workspace now requires the org-admin permission.

### Bug Fixes

* Org and workspace selectors stay populated after a page refresh.

## 2026-05-01

### Features

* API endpoints are now tagged as `public` or `experimental` in the OpenAPI spec.

### Breaking Changes

* Editing workspace settings now requires the `edit_settings` permission (manager or higher).

## 2026-04-30

### Features

* Workspace Projects are now available to all customers.
* Eval-result emails redesigned with a clearer score breakdown.
* HTML files are now permitted in tile publishes.

## 2026-04-29

### Breaking Changes

* Legacy user-scoped API keys no longer accepted; switch to workspace- or org-level API keys.

### Bug Fixes

* Eval-run table rows are now real links so command-click opens them in a new tab.

## 2026-04-28

### Features

* Refreshed the favicon set across the web product.

## 2026-04-27

### Features

* Org admins can now change member roles.
* Org admins can now remove members from the organization.

## 2026-04-24

### Features

* Pending org invitations can now be listed, resent, and revoked from the UI.
* Related tiles and skills are back, now powered by semantic search.

### Bug Fixes

* Pending eval runs are now labeled "In Progress".

## 2026-04-23

### Features

* Added an organization switcher above the workspace selector.
* Workspace owners can now delete empty workspaces.
* Organizations can now be renamed directly from the UI.
* A single invitation can now add a user to multiple workspaces in an organization.
* Workspace managers can now browse organization members when adding workspace members.
* Eval-run page now renders activation results from agent runs.

## 2026-04-21

### Features

* Eval-run progress now renders as a per-scenario segmented bar.

## 2026-04-16

### Features

* New workspace settings page with a Block Public Tiles toggle.
* Email notifications are now sent on eval completion.

## 2026-04-15

### Features

* tile publishing now uses workspace-level API tokens.

## 2026-04-13

### Features

* tile lists can now be sorted by score, security, and impact.
* API-key authentication now accepted on `GET /users/me`.

## 2026-04-09

### Features

* Codex agent now available for eval runs.

## 2026-04-08

### Features

* Username now visible in the user dropdown menu.
* Login and signup pages refreshed with a new tessellated logo background.

## 2026-04-07

### Features

* Improved the error messages when tile moderation fails.

### Bug Fixes

* tiles with no score now show a Pending badge instead of a 404.

## 2026-04-02

### Features

* Authentication-provider buttons now use a consistent "Continue with" label.
* Removed the in-product tile-generation flow and the Request Docs CTAs.

## 2026-04-01

### Features

* Directory fixtures now supported in the V2 eval-run API.

## 2026-03-31

### Features

* Custom login and signup screens replace the previous hosted auth experience.
* CLI device-auth flow added so `tessl login` works from the terminal.

## 2026-03-30

### Features

* New API-key management UI rolled out.
* Failed security reviews now appear in the UI.
* Install CTA is now hidden on tiles and skills with critical-severity security findings.
* Email invitations are now rate-limited.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tessl.io/changelog-web.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
