Skip to content

Releases

Sani v1.0.3

Choose a tag to compare

@github-actions github-actions released this 02 Nov 13:31
v1.0.3
0485825

Restore the Enter key badges on the creation buttons and give all three one size and style. Database schema remains 7 with no new migration.

Upgrading from v1.0.2 needs no data migration; the API, public contracts and existing links are unchanged. Take a complete snapshot as described in backup and restore before upgrading.

  • Bring back the Enter key badges on the Shorten and Share buttons in place of tooltips; the link, text and file creation buttons now share one height, corner and badge style.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v1.0.3

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v1.0.2

Choose a tag to compare

@github-actions github-actions released this 02 Nov 11:54
v1.0.2
574d603

Improve expiry selection and the creation buttons, and align admin controls on shared styles and states. Database schema remains 7 with no new migration.

Upgrading from v1.0.1 needs no data migration; the API, public contracts and existing links are unchanged. Take a complete snapshot as described in backup and restore before upgrading.

  • Show custom expiry in a popover without stretching the creation form. Apply commits the date and time; Cancel, Escape and outside dismissal preserve the previous value.
  • Add an hour and minute chooser alongside typed time entry, with keyboard controls. Unify the size and state styling of link, text and file creation buttons; their keyboard shortcuts now show in a tooltip.
  • While a file uploads, the Share button shows the percentage again.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v1.0.2

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v1.0.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:56
v1.0.1
0a8a541

Correct the random distribution of generated access passwords and align stable-release documentation. Database schema remains 7 with no new migration.

  • Remove modulo bias from generated access passwords with rejection sampling, giving each allowed character equal probability. The admin app and R11 prototype use the corrected algorithm; existing passwords are unchanged.
  • Add regression coverage for password generation and unlock-cookie transport attributes, and verify that query parameters cannot replace a short link's saved destination.
  • Align Chinese and English project status, version plans and access-password guidance, correcting outdated statements in configuration, API and security pages that shares have no access passwords.

Upgrading from v1.0.0 needs no data migration and preserves public interfaces and existing links. The fix applies to newly generated passwords; it does not rotate existing passwords. Use the link editor to generate a replacement if needed. Take a complete snapshot before upgrading as described in Backup and restore.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v1.0.1

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v1.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 08:47
v1.0.0
52fbd8a

First stable release, establishing compatibility guarantees for public contracts throughout 1.x. Access passwords, and a new visual system for the admin app and visitor pages. The database moves to schema 7.

  • Links, texts and files can have an access password. When creating, expiry, visit limit and password sit side by side next to the submit button; the password opens with a readable six-character code, so Enter accepts it. The clipboard and the toast then carry the link and its password. The list marks protected links with a lock, the details show or copy the password, and the editor changes or clears it.
  • Visitors first see a password page with only the short address on it, which works without script. Short links ask every time; texts and files stay open in that browser for 12 hours, and their raw and download links carry a parameter valid for an hour. Wrong passwords don’t count as visits, and five within a minute from one visitor for one link make them wait. A new password, or a restart, asks again.
  • The API’s link object and create and update requests gain a password field and the password_invalid error; JSON and CSV exports and imports carry it; protected shares no longer return rawUrl from the admin API.
  • The admin app and visitor pages use Radix Colors (Slate, Indigo, Red, Green, Amber), 0.5px lines, four type sizes, concentric corners and shadows only on floating layers. Hover is instant and layers move with a 250ms ease-out. Dot separators and explanatory filler are gone, and the selected row is tinted instead of edged. Tag presets are now Radix step 9; saved colors stay as they are.

Upgrade and rollback

v1.0.0 begins the 1.x compatibility promise, preserving existing public addresses and access without passwords. Upgrading migrates the database to schema 7. Back up first as in Backup and restore; rolling back means restoring the full pre-upgrade snapshot, since older versions refuse schema 7.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v1.0.0

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.10

Choose a tag to compare

@github-actions github-actions released this 23 Oct 18:41
v0.9.10
e8cccb2

Fix draft protection, chart range changes, encoded short-URL searches and narrow detail layouts, and remove an unused legacy helper. Database schema remains 6 with no new migration.

  • Fix discarded drafts remaining in the editor and disabling subsequent leave warnings after changing sort order, search or content type. Reopened editors retain full draft protection.
  • Fix chart rendering errors when shortening a date range with the keyboard while hovering. Track the hovered day by date so the chart stays consistent with the selected range.
  • Fix clipped detail content on narrow screens when QR codes, metadata and access rules competed for one row. Wrap the sidebar to the available width and give access rules a full row in both languages and themes.
  • Find Unicode short URLs encoded by the browser, including text and file share URLs. Apply the same matching rules after saving, statistics refreshes and failed-operation rollbacks; preserve literal percent characters in ordinary searches and destination URLs.
  • Remove an unused legacy hostname helper and its dedicated assertions while retaining coverage for the metadata hostname handling still used in production.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.10

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.9

Choose a tag to compare

@github-actions github-actions released this 23 Oct 10:35
v0.9.9
0205f32

Fix database paths, Unicode identity comparison and browser test cleanup, and update build dependencies. Database schema stays at 6 with no new migration.

  • Fix database paths containing %, # and other URI characters being interpreted as URIs. Database opening, password changes, backups, upgrade snapshots and read-only preflight now consistently use literal filenames, with relative and absolute path coverage on Windows and Linux. Database schema stays at 6 with no new migration.
  • Align Unicode case comparison in tag and slug editors with the server and list search: Greek final sigma stays distinct, while dotted capital İ correctly matches plain i.
  • Preserve the original browser startup error in end-to-end tests without an additional teardown exception when no page was created. Add fault-injection regression coverage.
  • Update the app's Vite build tool to 8.3.3 and the docs dependency to 6.4.5 to fix development-server issues reported by dependency auditing, keeping the existing CI audit threshold.
  • Align the Go toolchain and container builder on 1.27.3 to fix the GO-2026-6809 certificate-trust issue in crypto/x509.

If an older version used a data directory containing % or #, stop the service before upgrading, check the actual database location, and back up the database and shared files. This fix does not automatically locate or move data previously written to the wrong path; verify which instance owns the data before restoring it to the configured directory.

When upgrading from v0.9.5–v0.9.8, follow backup and restore, replace the binary or pin ghcr.io/dejavumoe/sani:v0.9.9, then reload the admin app to continue using the existing schema 6 data. Upgrades from v0.9.4 or earlier still require the API adjustments and migration steps under upgrade and rollback.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.9

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.8

Choose a tag to compare

@github-actions github-actions released this 17 Oct 20:45
v0.9.8
72a71e2

Fix development collectors and dependency graph accuracy, enforce checks for the exact release commit, and verify session cookie boundaries behind reverse proxies. Database schema stays at 6 with no new migration.

  • Fix DOM content collectors used by prototype and accessibility checks: escape backslashes in identifiers and handle emoji, leading digits and a lone hyphen when CSS.escape is unavailable. Add browser regression coverage.
  • Submit GitHub dependency snapshots generated from the actual lockfiles to correct stale versions and unresolved pnpm catalogs in the static dependency graph, including development tools.
  • Require successful CI, known-vulnerability checks and every CodeQL job for the exact release commit before building archives or publishing images. Preserve the Forgejo → GitHub synchronization flow.
  • Add cookie attribute regressions for setup, sign-in, renewal and sign-out, and document the TLS, trusted-proxy and local HTTP boundaries. Isolated tests with the repository's Nginx and Caddy templates did not reproduce an HTTPS session missing Secure. Preserve local HTTP support without suppressing CodeQL rules.

When upgrading from v0.9.5–v0.9.7, follow backup and restore, replace the binary or pin ghcr.io/dejavumoe/sani:v0.9.8, then reload the admin app to continue using the existing schema 6 data. Upgrades from v0.9.4 or earlier still require the API adjustments and migration steps under upgrade and rollback.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.8

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.7

Choose a tag to compare

@github-actions github-actions released this 11 Oct 02:19
v0.9.7
e399ab2

Fix 23 reproduced issues in the admin app, metadata tasks, imports and operations tools. Database schema stays at 6 with no new migration.

  • Preserve editor and composer drafts across session expiry for manual saving after sign-in, including recovery when the initial text load failed authentication. Canceling selection leaves no hidden selected rows, and deletion respects draft protection. Deliberate sign-out still clears drafts.
  • Restore rows after failed deletion under short-URL searches and remove rows and counts that no longer match after saving. Search consistently handles Unicode case and NFC, with wildcard characters treated literally.
  • Validate new visit limits as integers from 1 to 10¹²; only blank input means unlimited. Preserve unchanged larger imported limits when editing other fields. Failed upload retries recalculate relative expiry, while resumed chunk sessions retain their original deadline.
  • Parse decimal/exponent JSON integers exactly, skip rows with invalid counters or visit limits, and reject fields belonging to other resource kinds during chunked upload. Explicit default ports no longer bypass self-link checks.
  • Commit metadata only for its current task, cancel or replace superseded tasks on metadata-affecting edits or refreshes, and settle canceled queued work during orderly shutdown. Decode file titles once, retain stale icons after failed refresh with a one-day retry delay, and use the full hostname for www favicon lookup.
  • Honor Accept-Encoding quality values and exclusions. Public text pages try a compatible copy method when the clipboard API is absent or rejects, then show success or manual-copy feedback.
  • Encode special characters in setup links, reject setup codes made only of ignored separators, and trim healthcheck listen addresses consistently with startup.
  • Correct systemd symlink-directory backup instructions and literal dollar escaping in generated Compose root URLs. Load checks require their own child to become ready, use a fresh password and stop on an occupied port.
  • Add per-issue failure regressions, concurrency/cancellation tests, CLI and Compose checks, and browser coverage across both languages, themes and desktop/mobile sizes.

When upgrading from v0.9.5 or v0.9.6, follow backup and restore, replace the binary or pin ghcr.io/dejavumoe/sani:v0.9.7, then reload the admin app to continue using the existing schema 6 data. Upgrades from v0.9.4 or earlier still require the API adjustments and migration steps under upgrade and rollback.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.7

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.6

Choose a tag to compare

@github-actions github-actions released this 10 Oct 16:37
v0.9.6
b76fce8

Fix missing authentication on admin import example downloads and add management resource access regressions. Database schema stays at 6 with no new migration.

  • Require management API authentication for admin CSV/JSON import example downloads; old /admin/examples/... static URLs return 404. Downloads disable caching and session cookies remain scoped to /api/. Examples contain fixed demonstration data, never instance content.
  • Block static downloads even when an older frontend build still contains example files. Regressions cover anonymous access to every existing protected management route, plus example GET/HEAD requests, expired sessions, revoked credentials, conditional requests and pointer/keyboard downloads.

When upgrading from v0.9.5, follow backup and restore, replace the binary or pin ghcr.io/dejavumoe/sani:v0.9.6, then reload the admin app to download examples. Replace bookmarked old example URLs with the new admin links. Upgrades from v0.9.4 or earlier still require the API and schema-6 migration steps under upgrade and rollback. Existing public share URLs and instance data remain unchanged.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.6

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志

Sani v0.9.5

Choose a tag to compare

@github-actions github-actions released this 10 Oct 15:33
v0.9.5
21b2376

Release the approved R10 compact interface and new Sani HTTP API, with migration to database schema 6. This release includes breaking changes as a one-time exception to the patch rule; read the steps below and the versioning note before upgrading.

Breaking changes

  • Replace old management routes with /api/admin/v1 and switch the embedded app, exports, icons, uploads and automation examples together. Existing public URLs, IDs, passwords, tokens and sessions remain valid.

  • Add Sani resource API /api/v1: 12 operations with POST 201, PATCH 200, DELETE 204, Bearer authentication and structured errors. GET never mutates resources. Reject unsupported protection and domain inputs. Archive the v0.9.4 API reference alongside the new documentation.

  • Admin JSON and multipart uploads also reject unknown fields; JSON rejects trailing data so unsupported protection inputs cannot appear to succeed.

  • Schema 6 adds stable opaque file deletion keys. Pending migrations run in one transaction, with preflight and a database safety copy before upgrading. Resource deletion is permanent; management deletion stays restorable.

  • Upgrade steps: export JSON from the old admin app; stop cleanly; snapshot database, shared files and deployment configuration; run new-binary preflight; start and verify old addresses. Normal upgrades migrate in place, without reimport. Roll back only with the old binary/image and the complete pre-upgrade snapshot. See operations.

  • Add direct HTTP contract checks without external SDK dependencies, schema 1–5 preservation/failure tests and the old-binary full-snapshot recovery drill to CI.

  • Independent review adds atomic identity checks between rename and updates/permanent deletion, raw JSON UTF-8 validation, database/WAL/SHM write-access preflight and failed-migration copy cleanup. Docker verifies full-snapshot rollback, read-only databases and real ENOSPC as UID 65532.

  • Record cache/batching ablations and dependency/component references; correct documented day storage, cache capacity, referrers and units.

  • Keep menus inside short viewports and clean up listeners on unmount; make scrolling docs tables keyboard reachable with visible focus. Update token examples and fail screenshot scripts on authentication errors.

Interface refinements

  • Size empty slug fields for their placeholder and shorten the English hint to avoid clipping. Refresh actual documentation and README screenshots, using English for landing images.
  • Implement approved R10: share compact sizing across buttons, fields and segmented controls; reuse numeric/unit inputs with regular weight and start alignment. Refine settings and tag spacing, bilingual typography, stable busy-button width, Home/End navigation and reduced motion.

Development tooling

  • Patch VitePress 1.6.4 preview to honor --host and default to 127.0.0.1. Documentation builds verify the listener address, homepage and 404 responses.

Install

With Docker, for linux/amd64, linux/arm64 and linux/arm/v7:

docker pull ghcr.io/dejavumoe/sani:v0.9.5

Or download the archive for your platform below. To check a download against
the checksums and the build provenance GitHub recorded for it:

sha256sum --ignore-missing -c SHA256SUMS
gh attestation verify sani-linux-amd64.tar.gz --repo DejavuMoe/sani

Back up before upgrading. If an upgrade changes the database schema, older
versions may no longer open it. See deployment and
operations · 中文更新日志