[{"data":1,"prerenderedAt":363},["ShallowReactive",2],{"navigation":3,"/posts/2025-01-24-release-notes-v0.19.0":166,"/posts/2025-01-24-release-notes-v0.19.0-surround":360},[4],{"title":5,"path":6,"stem":7,"children":8,"page":165},"Posts","/posts","posts",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161],{"title":10,"path":11,"stem":12},"New API client library: Perl","/posts/2012-01-03-perl-api-library","posts/2012-01-03-perl-api-library",{"title":14,"path":15,"stem":16},"'Good' vs 'Strong' passwords","/posts/2012-01-25-good-passwords","posts/2012-01-25-good-passwords",{"title":18,"path":19,"stem":20},"Protecting your credentials from criminals","/posts/2012-01-30-protecting-credentials","posts/2012-01-30-protecting-credentials",{"title":22,"path":23,"stem":24},"Onetime Secret is Now Opensource","/posts/2013-01-30-onetimesecret-is-now-opensource","posts/2013-01-30-onetimesecret-is-now-opensource",{"title":26,"path":27,"stem":28},"Major UI update (with mobile support)","/posts/2013-02-04-ui-update-mobile","posts/2013-02-04-ui-update-mobile",{"title":30,"path":31,"stem":32},"Copying server data from the command-line, safely","/posts/2013-02-12-copy-server-data-command-line","posts/2013-02-12-copy-server-data-command-line",{"title":34,"path":35,"stem":36},"Privacy Policy Update (June 2024)","/posts/2024-06-15-privacy-policy-update","posts/2024-06-15-Privacy Policy-Update",{"title":38,"path":39,"stem":40},"Onetime Secret v0.16.0 Release - Modern UI and Enhanced Development","/posts/2024-07-29-release-notes-v0.16.0","posts/2024-07-29-release-notes-v0.16.0",{"title":42,"path":43,"stem":44},"Open-Source First Development Model","/posts/2024-08-14-opensource-first-model","posts/2024-08-14-opensource-first-model",{"title":46,"path":47,"stem":48},"Onetime Secret v0.17.0: Foundation for the Future","/posts/2024-08-31-release-notes-v0.17.0","posts/2024-08-31-release-notes-v0.17.0",{"title":50,"path":51,"stem":52},"So the custom font was a whoopsies","/posts/2024-09-03-custom-font-a-whoopsies","posts/2024-09-03-custom-font-a-whoopsies",{"title":54,"path":55,"stem":56},"UI/UX Updates - September '24","/posts/2024-09-04-ux-ui-updates","posts/2024-09-04-ux-ui-updates",{"title":58,"path":59,"stem":60},"Data Privacy Regulations: A New Framework for UI Design","/posts/2024-09-05-constraints","posts/2024-09-05-constraints",{"title":62,"path":63,"stem":64},"A verifiable error in our signup flow","/posts/2024-09-06-mistake-were-made-signups","posts/2024-09-06-mistake-were-made-signups",{"title":66,"path":67,"stem":68},"Support for ASCII QR Codes","/posts/2024-09-08-qr-code","posts/2024-09-08-qr-code",{"title":70,"path":71,"stem":72},"Denial of Service (DoS) Attack: A brief summary","/posts/2024-09-09-denial-of-service","posts/2024-09-09-denial-of-service",{"title":74,"path":75,"stem":76},"Denial of Service (DoS) Attack: Continued Adventure","/posts/2024-09-12-ddos-day-4","posts/2024-09-12-ddos-day-4",{"title":78,"path":79,"stem":80},"Denial of Service (DoS) Attack: Day 5","/posts/2024-09-13-ddos-day-5","posts/2024-09-13-ddos-day-5",{"title":82,"path":83,"stem":84},"Onetime Secret v0.18.0: Enjoying the Vue","/posts/2024-10-03-release-notes-v0.18.0","posts/2024-10-03-release-notes-v0.18.0",{"title":86,"path":87,"stem":88},"Installing Onetime Secret: The Complete Guide (Part 1 of 5)","/posts/2024-10-08-installation-series-1of5-standalone","posts/2024-10-08-installation-series-1of5-standalone",{"title":90,"path":91,"stem":92},"Ugly By Nature: Why Our Blog Graphics Look Terrible (On Purpose)","/posts/2024-10-15-ai-generated-graphics-transparency","posts/2024-10-15-ai-generated-graphics-transparency",{"title":94,"path":95,"stem":96},"Expanding Horizons: Introducing US Data Locality for Onetime Secret","/posts/2024-10-23-us-data-center","posts/2024-10-23-us-data-center",{"title":98,"path":99,"stem":100},"Industry Practices We Deliberately Avoid","/posts/2024-11-01-industry-practices-we-deliberately-avoid","posts/2024-11-01-industry-practices-we-deliberately-avoid",{"title":102,"path":103,"stem":104},"Why we don't have a cookie notice","/posts/2024-11-05-privacy-by-design-no-cookie-notice","posts/2024-11-05-privacy-by-design-no-cookie-notice",{"title":106,"path":107,"stem":108},"Onetime Secret v0.19.0: Custom Branding & Type Safety","/posts/2025-01-24-release-notes-v0.19.0","posts/2025-01-24-release-notes-v0.19.0",{"title":110,"path":111,"stem":112},"Onetime Secret v0.20.0: Internationalization","/posts/2025-02-24-release-notes-v0.20.0","posts/2025-02-24-release-notes-v0.20.0",{"title":114,"path":115,"stem":116},"Canada Region Now Available","/posts/2025-03-03-canada-region-now-available","posts/2025-03-03-canada-region-now-available",{"title":118,"path":119,"stem":120},"Aotearoa New Zealand Region Now Available","/posts/2025-04-03-aotearoa-new-zealand-region-available","posts/2025-04-03-aotearoa-new-zealand-region-available",{"title":122,"path":123,"stem":124},"Homepage Update: We're Going Regional","/posts/2025-05-05-homepage-update-going-regional","posts/2025-05-05-homepage-update-going-regional",{"title":126,"path":127,"stem":128},"Domain Strategy Reengineered: Building Verification into Our Architecture","/posts/2025-05-14-homepage-post-as-in-after","posts/2025-05-14-homepage-post-as-in-after",{"title":130,"path":131,"stem":132},"Verifying Authentic Onetime Secret Services","/posts/2025-05-15-distrust-and-double-verify","posts/2025-05-15-distrust-and-double-verify",{"title":134,"path":135,"stem":136},"Claude Roasts our tests","/posts/2025-05-21-claude-roasts-our-tests","posts/2025-05-21-claude-roasts-our-tests",{"title":138,"path":139,"stem":140},"JSON Trouble on the Default-lines","/posts/2025-06-07-json-trouble-on-the-default-lines","posts/2025-06-07-json-trouble-on-the-default-lines",{"title":142,"path":143,"stem":144},"OneTimeSecret v0.22.4: Password Settings & Disabling Homepage","/posts/2025-09-16-release-notes-v0.22.4","posts/2025-09-16-release-notes-v0.22.4",{"title":146,"path":147,"stem":148},"The Ramshackler's Guide to i18n","/posts/2025-12-12-how-we-handle-translations","posts/2025-12-12-how-we-handle-translations",{"title":150,"path":151,"stem":152},"Onetime Secret v0.23: Config Migration and API Improvements","/posts/2026-01-18-release-notes-v0.23","posts/2026-01-18-release-notes-v0.23",{"title":154,"path":155,"stem":156},"UK Region Now Available","/posts/2026-02-06-uk-region-now-available","posts/2026-02-06-uk-region-now-available",{"title":158,"path":159,"stem":160},"Onetime Secret v0.24.0: A New Foundation","/posts/2026-03-04-release-notes-v0.24.0","posts/2026-03-04-release-notes-v0.24.0",{"title":162,"path":163,"stem":164},"Mea gulpa: a big bowl of humble broth (or, API-carumba: an upgrade story)","/posts/2026-03-27-mea-gulpa-api-carumba","posts/2026-03-27-mea-gulpa-api-carumba",false,{"id":167,"title":106,"authors":168,"badge":174,"body":176,"date":351,"description":182,"extension":352,"headline":353,"icon":353,"image":354,"layout":355,"meta":356,"navigation":357,"path":107,"readingTime":339,"seo":358,"stem":108,"__hash__":359},"posts/posts/2025-01-24-release-notes-v0.19.0.md",[169],{"name":170,"to":171,"avatar":172},"Delano","https://blog.onetimesecret.com/about",{"src":173},"/img/portrait-profile-pic-delano-2025-m.png",{"label":175},"Release",{"type":177,"value":178,"toc":338},"minimark",[179,183,188,193,196,209,213,216,230,234,237,251,255,258,272,276,279,290,294,297,301,329,332],[180,181,182],"p",{},"Today we're announcing Onetime Secret v0.19.0, a release focused on enhanced type safety, robust error handling, and custom branding capabilities.",[184,185,187],"h2",{"id":186},"key-improvements","Key Improvements",[189,190,192],"h3",{"id":191},"custom-branding-for-brands","Custom Branding for Brands",[180,194,195],{},"Secret sharing now adapts to your brand identity with:",[197,198,199,203,206],"ul",{},[200,201,202],"li",{},"Custom logos and styling",[200,204,205],{},"Branded recipient experiences",[200,207,208],{},"Consistent visual language throughout",[189,210,212],{"id":211},"enhanced-type-safety","Enhanced Type Safety",[180,214,215],{},"We've rebuilt our type system from the ground up:",[197,217,218,221,224,227],{},[200,219,220],{},"Comprehensive TypeScript implementation",[200,222,223],{},"Zod schemas for runtime validation",[200,225,226],{},"Robust error boundaries and type checking",[200,228,229],{},"Improved data integrity across all operations",[189,231,233],{"id":232},"security-framework-enhancements","Security Framework Enhancements",[180,235,236],{},"Critical security improvements include:",[197,238,239,242,245,248],{},[200,240,241],{},"Content Security Policy (CSP) implementation with nonce support",[200,243,244],{},"Enhanced session management",[200,246,247],{},"Improved rate limiting for API access",[200,249,250],{},"Rack middleware freezing in production",[189,252,254],{"id":253},"error-handling","Error Handling",[180,256,257],{},"We've significantly improved our error management:",[197,259,260,263,266,269],{},[200,261,262],{},"Client-side exception tracking system",[200,264,265],{},"Enhanced visibility into frontend issues",[200,267,268],{},"Structured error reporting",[200,270,271],{},"Better feedback on system state",[184,273,275],{"id":274},"for-developers","For Developers",[180,277,278],{},"Notable improvements for self-hosted instances:",[197,280,281,284,287],{},[200,282,283],{},"Standardized database migration system",[200,285,286],{},"Refined Docker implementation",[200,288,289],{},"Enhanced installation documentation",[184,291,293],{"id":292},"looking-forward","Looking Forward",[180,295,296],{},"These foundational improvements strengthen our commitment to secure, one-time sharing of sensitive information. Each secret link still works exactly once before disappearing forever - now with improved reliability and type safety.",[184,298,300],{"id":299},"getting-started","Getting Started",[197,302,303,313,321],{},[200,304,305,306],{},"Use the hosted service: ",[307,308,312],"a",{"href":309,"rel":310},"https://onetimesecret.com",[311],"nofollow","onetimesecret.com",[200,314,315,316],{},"Self-host: ",[307,317,320],{"href":318,"rel":319},"https://github.com/onetimesecret/onetimesecret",[311],"GitHub repository",[200,322,323,324],{},"Review changes: ",[307,325,328],{"href":326,"rel":327},"https://github.com/onetimesecret/onetimesecret/releases/tag/v0.19.0",[311],"Full v0.19.0 release notes",[180,330,331],{},"Thank you to everyone who contributed to making this release possible.",[333,334],"image-modal",{"alt":335,"src":336,"width":337},"","/img/blog/2025/release-0.19-sparkle-enhanced.svg",600,{"title":335,"searchDepth":339,"depth":339,"links":340},2,[341,348,349,350],{"id":186,"depth":339,"text":187,"children":342},[343,345,346,347],{"id":191,"depth":344,"text":192},3,{"id":211,"depth":344,"text":212},{"id":232,"depth":344,"text":233},{"id":253,"depth":344,"text":254},{"id":274,"depth":339,"text":275},{"id":292,"depth":339,"text":293},{"id":299,"depth":339,"text":300},"2025-01-24","md",null,{"src":336},"post",{},true,{"title":106,"description":182},"3F6gK-tHobYrqDqfUoy_9VbWF-u7vwM2ZKZ8nxIa6Cs",[361,362],{"title":102,"path":103,"stem":104,"children":-1},{"title":110,"path":111,"stem":112,"children":-1},1781425298572]