2026-04-03
- Use
POSTrequest for deletion. - Use safe referer extractor to avoid open redirect via
prefquery parameter. - Set cookie attributes also on theme preference cookie.
- Encode content disposition filename with RFC 5987 to avoid encoding problems.
2025-12-25
wastebin-theme-showcasebinary to generate a static HTML page with theme examples for both light and dark variants. See here for example output.- w key to toggle line wrapping.
- Re-wrote the
Dockerfileto compile for both x86_64-unknown-linux and aarch64-unknown-linux from an x86_64-unknown-linux host. - Unconditionally set the
Secureattribute on cookies and do not try to derive applicability from the origin header. - Customize scrollbar color for the language list.
- Many small memory-related optimizations, thanks to @cgzones for a bunch of these.
- Check if Ctrl/Meta/Cmd key is pressed together with C to avoid unexpected behaviour on platforms where Ctrl+C might be registered as just C.
2025-08-17
- Possibility to switch back to system settings for the dark/light mode selection.
deletecommand towastebin-ctlto delete specific entries.- Filters to the
wastebin-ctl'slistcommand.
- Do not require JavaScript to hide respective dark/light/system mode buttons. Note that this might cause a confusing initial state because we do not know the system setting without querying it with browser APIs but in the worst case it means two to three clicks to change it.
- Store
wastebin-ctlcorrectly in the ARM image.
2025-06-07
- Support for binding to a Unix domain socket instead of a TCP address/port via
the
WASTEBIN_UNIX_SOCKET_PATHenvironment variable. - Support for expiration durations specified explicitly as seconds, minutes, hours, days, months and years.
- Display set expiration in the title.
- Display set expiration in
wastebin-ctl list. catpuccintheme key selecting Catppuccin Latte for light and Catppuccin Mocha for dark mode.- New debsources, GDScript, Idris, Odin and Typst syntaxes.
- Use main accent color for selected options.
- Root element's
color-schemeis now set according to the selected theme, which makes browser use appropriate color scheme for its UI. - Make "never" the default expiration like it was with wastebin before 3.0.
- Reject duplicate expiration values.
- Missing separators between expiration parts.
- Better number of days for expiration months (30 days instead of 28) and years (365 days instead of 336).
2025-05-20
wastebin-ctlcommand line tool to list all existing entries and purge expired ones./robots.txtdisallowing any crawling.- Subtle button animations.
- Toast message when a burned paste is read.
x86_64-apple-darwinaarch64-apple-darwinaarch64-unknown-linux-muslriscv64gc-unknown-linux-gnux86_64-pc-windows-msvcaarch64-pc-windows-msvcrelease binaries in addition to the existingx86_64-unknown-linux-muslones.
- Enclose Markdown links in anchor tags to make them clickable. Thanks for preliminary work done in #85 by @FliegendeWurst.
- Improve performance by avoiding unnecessary memory allocations.
- Improve throughput by avoiding locks on the database. Thanks for preliminary work done in #156 by @mokurin000.
- Improve mobile layout.
- Content disposition header value was wrongly constructed.
- Download appended
txtextension even if paste was uploaded without an extension.
2025-03-05
WASTEBIN_THEMEconfiguration key to change the default theme fromayutobase16ocean,coldark,gruvbox,monokai,onehalforsolarized.- UI button to switch between light and dark mode and cookie to store the preference. By default the system setting is used.
- UI button and c to copy content to clipboard. Thanks @limitcool.
- Breaking: From now on,
WASTEBIN_BASE_URLis only used for the QR code link but not for internal routing. Use a dedicated proxy server to do that if necessary. - Breaking: Always return HTML on
/:ideven iftext/htmlis not in the Accept header. Use the/raw/:idendpoint to retrieve raw text. - Breaking: Replace
WASTEBIN_MAX_PASTE_EXPIRATIONwith a customizable set of expirations via theWASTEBIN_PASTE_EXPIRATIONSvariable. - Use the two-face crate for an extended syntax list.
- Use 64-bit integers that render as 11-character identifier from now on. Existing 32-bit/6-character identifiers continue to work. Based on a PR #71 by @cgzones.
- Use title as downloaded filename instead of identifier if one is available.
- Serve all CSS assets under hashed URL to avoid caching issues and set
cache-control header to one month and the
immutableattribute. - Do not offer any interactions for burn-after-reading pastes that will end up with a 404 anyway.
- Sort syntax list in case insensitive manner.
- Wrong background color for inline code in Markdown.
2025-01-24
- Select extension based on the filename.
- Serve Javascript under hashed URL to avoid caching issues.
- Use same six month maximum age cache control for all assets.
- Show nicer error pages for some middleware layer issues instead of plain text responses.
- Actually respect
WASTEBIN_MAX_BODY_SIZE. - Allow selection of title.
- QR code overflowing content.
2025-01-15
- Improve UI by using SVG icons instead of text for action links and buttons, using only flexbox for layouting, round UI elements.
- Replace QR code button on the QR page with a button that leads back to the paste page.
- Pre-fill the title box when uploading a local file.
- Optimize code for minor performance improvements.
- Include extension in the QR code link.
2025-01-12
- ctrl+s binding to store a paste.
- Input field to set a title for a paste.
- Security headers served with each HTTP response and secure cookie settings.
- Button to show a paste's QR code.
- Use
NonZerointernally for data where 0 is not a valid value and any special meaning in expressed via an outer Option. - Show QR code on the page after submitting a burn-after-reading paste.
- Low-impact performance improvements.
- Return
FORBIDDENon wrong password instead ofINTERNAL_SERVER_ERROR.
- Paste content selection and copying using ctrl+a or mouse.
- Issues reported by the w3c validator.
- Vertical auto-scroll.
2024-08-19
- Possibility to serve from some subdomain via the
WASTEBIN_BASE_URLenvironment variable. - Possibility to limit maximum paste expiration with the
WASTEBIN_MAX_PASTE_EXPIRATIONenvironment variable. - Open button to read local file into input.
- Improve container layout and CSS.
2023-08-24
- Focus main input elements (thanks @egor-tensin)
- Stretched vertically lines, mostly with bash scripts.
2023-08-24
- Reading of encrypted pastes set to burn-after-reading.
2023-08-13
- Initial reading of pastes set to burn-after-reading.
2023-08-11
WASTEBIN_HTTP_TIMEOUTenvironment variable to control request timeouts.
⚠️ Database schema updated to version 6. Like previous migrations rolling back is not (easily) possible, so plan on making a backup in case you want to roll back the server itself.- Allow optional encryption of pastes based on Argon 2 password hashing and ChaCha20/Poly1305 symmetric encryption.
- Language selection filter which was not working correctly with certain characters.
2023-07-17
- Additional syntaxes compiled by the zola project.
2023-06-29
- Add anchors to line number, so the links actually make some sense.
- Do not highlight lines longer than 2048 characters. This can take a considerable amount of time effectively DoS'ing the server.
2023-04-21
- QR code display accessible via q to browse the URL on phones and
corresponding
WASTEBIN_BASE_URLenvironment variable to control the base. In case it is not set, the user agent'sHostheader field is used as an approximation. To go back to normal paste view you can use p. - Help overlay accessible via ?.
- Serve style CSS filename based on content hash to force client reload on change. With that bump max age for CSS to six months.
2023-03-04
- Replace overlaying link box with a navigation bar containing stylized buttons and homogenize layout in general.
- Format burn page like the rest.
2023-02-04
- Return correct exit code in case of errors.
2023-02-01
- Breaking: replace deletion timer with a cookie based solution that
identifies creator of a paste on subsequent visits. That cookie is a
monotonically increasing number and only used to implement the delete
functionality. Because that implies it is a strictly necessary cookie
according to GDPR, we will not show a cookie banner. If you are
uncomfortable with that either strip the
Set-Cookieheader from responses via a proxy server or stop using this software. - Breaking: stop supporting down migrations.
- Compress data with zstd for a reduction of about 75%. On migration all rows
will be compressed. However file size will not change but unused pages be used
for new rows. If you want to reduce the file size, you have to use the
VACUUMstatement. - The database is not purged periodically anymore, instead expired entries are removed on access.
2023-01-10
- Upgraded to tokio 1.24.1 to mitigate RUSTSEC-2023-0001.
2022-12-26
- Move to axum 0.6.
- d downloads again.
2022-11-07
- Paste text content by dragging and dropping files onto the text area.
2022-10-14
- Broken insertion via JSON API.
2022-07-31
- Breaking: remove possibility to GET
/api/entries/:id, just use/:id. - Breaking: remove possibility to POST to
/api/entriesand DELETE/api/entries/:id, this can be done on/and/:idrespectively. Note that DELETEing/:idwill now return a 303 status code instead of 200. - Return appropriate content type for
/:idbased onacceptheader (i.e.text/htmlreturns the HTML page) and thefmtquery parameter (i.e. set torawreturns raw text). - Use
dlquery parameter to determine the extension to download a paste. - Use
fmt=rawquery parameter to fetch plain text paste. - Set cache control timeout for the favicon.
2022-07-19
- Normal font color for the light theme to increase contrast.
- Strange content padding.
2022-07-04
- Link that is valid for one minute to delete a paste.
generatormeta tag containing the version number.
2022-06-27
- Evict cached items for expired pastes.
- Do not swallow fatal errors from serving and database purging.
- Link to error page to go back to the index.
- Link to download a paste (@yannickfunk).
- Bind d to download a paste.
2022-06-12
- y keybind to copy the paste URL to the clipboard
WASTEBIN_TITLEenvironment variable to override the HTML page title.
- Reduced font size of pre and text area to 13pt.
2022-06-11
- Set bright color for textarea in dark mode.
2022-06-08
- Add r and n keybinds on the paste view.
- Timeout with status code 408 after five seconds.
- Limit maximum body size to 1 MB or a value set with
WASTEBIN_MAX_BODY_SIZEin bytes.
2022-06-06
- Configurable cache for syntax highlighted HTML fragments to improve response times, especially when run in debug mode.
/api/healthendpoint for render.com health checks.
2022-06-02
- Initial release.