Skip to content

v2.1.0

Choose a tag to compare

@Zingzy Zingzy released this 08 Aug 11:09
· 241 commits to main since this release
6633971

What's Changed

  • build(deps): bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in #228
  • build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #227
  • build(deps): bump actions/setup-node from 5 to 6 by @dependabot[bot] in #226
  • feat: per-country geo-targeting rules on short links by @Zingzy in #230
  • feat: custom meta-tags (social link previews) by @Zingzy in #231
  • feat: per-user /me API — onboarding resume, layouts, feature availability by @Zingzy in #235
  • feat: reserved alias list blocks frontend-path short codes by @Zingzy in #236
  • fix(auth): propagate user email to CurrentUser for feature-flag email allowlists by @Zingzy in #238
  • feat: public link preview endpoint by @Zingzy in #240
  • feat: X-Error-Code header + edge-composed error bodies by @Zingzy in #239
  • feat: public per-link stats endpoint by @Zingzy in #241
  • feat: report intake + contact API by @Zingzy in #242
  • fix: unmatched routes get negotiated errors, not Starlette's default by @Zingzy in #243
  • fix(public-stats): skip malformed v1 dimension entries instead of 500ing by @Zingzy in #245
  • fix: enforce time-based URL expiry at resolve + derive effective status by @Zingzy in #246
  • fix(stats): null avg_redirection_time when no measurements exist by @Zingzy in #247
  • feat(api): add GET /api/v1/apps connected-apps list by @Zingzy in #248
  • feat: profile editing (user_name update, picture upload and unset) by @Zingzy in #249
  • refactor: move profile picture endpoints to /api/v1/me by @Zingzy in #250
  • fix(auth): serialize auth timestamps with explicit UTC offset by @Zingzy in #252
  • feat: emoji short links on the v2 API by @Zingzy in #251
  • feat(api): complete URL addressing with create-response id and single-resource GETs by @Zingzy in #253
  • feat: bulk URL operations (delete, status, expiry) by @Zingzy in #255
  • feat: bulk move domain endpoint by @Zingzy in #257
  • feat(api): expose accepted emoji set at GET /api/v1/emoji-set by @Zingzy in #256
  • fix(auth): standardize error shapes on refresh and device revoke by @Zingzy in #258
  • chore(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #254
  • feat(auth): PKCE and grant-scoped tokens for connected apps by @Zingzy in #260
  • feat(analytics): add device and UTM click dimensions by @Zingzy in #259
  • chore(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #262
  • feat: attribute requests to clients and API keys in logs by @Zingzy in #265
  • feat: api key last_used_at and failed auth logging by @Zingzy in #266
  • feat: carry resolved identity into request_completed logs by @Zingzy in #267
  • feat: persist created_via on shortened urls by @Zingzy in #268
  • refactor: move operator Discord pings out of infrastructure/webhook by @Zingzy in #269
  • feat(webhooks): discord and slack delivery flavors by @Zingzy in #272
  • feat: webhooks by @Zingzy in #270
  • feat: serve Next frontend on beta.spoo.me by @Zingzy in #237
  • chore: relicense from Apache 2.0 to AGPL-3.0 by @Zingzy in #261
  • feat: send rate limit headers on limited responses by @Zingzy in #273
  • feat: claimable anonymous links via one-time claim tokens by @Zingzy & @revanthlol in #277

Full Changelog: v2.0.2...v2.1.0