PageSourceSearch

https://tempstash.onrender.com/assets/Changelogs-BMETpKzI.js

js tempstash.onrender.com collected 2026-10-03 11:43:29 UTC 24,803 bytes, 29 lines download raw bytes

1import{j as e}from"./vendor-react-CUnmROEk.js";import{P as r}from"./PublicLayout-B8M4IsEK.js";import{S as n}from"./index-DTm5UXEN.js";import{H as o}from"./history-BUN_j2o2.js";import"./external-link-BbEwJ1B9.js";import"./vendor-supabase-fVq5vccW.js";const s=[{version:"Unreleased",date:"In development",title:"Media previews and workflow clarity",summary:"Made file previews, temporary-access decisions, transfers, recovery, and everyday dashboard work clearer without changing Tempstash's storage model.",sections:[{title:"Recipient experience",items:["Added in-page previews for plain text, Markdown, CSV, JSON, XML, YAML, configuration files, and common source files.","Added text search with bounded highlighted matches, line-wrap control, exact expiry details, and clear loading and recovery states to public preview pages.","Added a custom keyboard-accessible video player with seek and buffer progress, volume, speed controls, picture-in-picture, fullscreen, common-extension detection for generic Drive metadata, and honest unsupported-codec recovery.","Added iPhone native fullscreen fallback when the standard browser Fullscreen API is unavailable."]},{title:"Preview safety",items:["HTML and SVG source are now displayed as literal text instead of being embedded as active content.","Readable previews continue to use the controlled Share Preview endpoint and are limited to 1 MB before delivery.","Made share readiness size-aware and bounded automatic image, PDF, and video previews at 100 MB, keeping download access available whenever a file is too large to preview safely.","View-only text previews do not add a copy-text shortcut, and view-only video previews suppress direct download and picture-in-picture controls."]},{title:"Dashboard and transfers",items:["Replaced blank document preview panes with extension-aware vector file tiles, while retaining real Google Drive thumbnails for supported photos and videos.","Clarified that native share-sheet intake is available only on platforms that implement installed web share targets, and added an iPhone and iPad explanation directly on the dashboard uploader before the native picker opens.","Added a persistent operation tray for uploads, moves, archives, downloads, cleanup, Secure Drop delivery, and Secure Drop decryption, including progress, retry, and plain-language failures.","File uploads now dismiss the Stash Files dialog immediately after handoff, while progress and retry continue in the background operation tray.","Note and link saves, folder creation, and item moves now dismiss their dialogs after handoff too, leaving progress, failures, and retry in the operation tray.","Cached Drive actions now stay disabled until Google Drive is ready, and dashboard setup retries perform real initialization instead of becoming silent no-ops.","Ctrl/Cmd+K now stays contained even on the first frame after a dialog opens, preventing the browser shortcut from stealing focus from modal forms.","Added an intentional selection action bar, useful upload/share/Secure Drop empty states, Drive connection awareness, cached-results guidance while offline, first-use Drive storage context, and a compact real-data recent activity timeline.","Standardized expiry labels across file cards, shares, and Secure Drop links so relative status and exact local date and time appear together, with explicit paused, archived, destroyed, and reconnect states.","Kept the file grid visible during archive, restore, move, cleanup, and bulk-delete work, paused conflicting Drive actions, contained search shortcuts inside open dialogs, and corrected Expiring Soon archive labels."]},{title:"Sharing, Secure Drop, and Settings",items:["Added a share-readiness summary that previews recipient capabilities, download policy, passphrase requirements, expiry, and encryption delivery before a link is copied.","Added a Secure Drop preflight summary and post-upload delivery receipt, and kept large-transfer actions available in a mobile-safe sticky footer.","Settings now preserves edits between tabs, marks unsaved changes, confirms before discarding, reports successful saves without closing, and keeps account controls explicit as save-as-you-go actions.","Restored direct Arrow-key opening and selected-option focus for custom dropdowns in Settings.","Kept running transfers visible in the operation tray and made partial bulk failures retain the exact retryable selection instead of appearing successful.","Prevented retry failures from leaking as browser errors, kept Settings open during saves, and ensured files without browser previews always remain downloadable.","Fixed the PostgreSQL column collision that could stop resumable Secure Drop chunks from being claimed or completed during large-file uploads."]}]},{version:"2.3.2",date:"August 12, 2026",title:"Privacy and terms clarity release",summary:"Published a material, implementation-aligned legal update with clearer disclosures, responsibilities, and service limits.",sections:[{title:"Privacy Policy",items:["Expanded the Privacy Policy with plain-language descriptions of Google OAuth and Drive access, sharing, Secure Drop, browser storage, retention, recipients, rights, and security limitations.","Added an explicit Google API Services 
1User Data Policy and Limited Use disclosure, and clarified that mobile pairing creates a separate one-time Tempstash session without transferring a Google refresh token.","Added structured data and retention tables so account, cleanup, pairing, optional statistics, local browser data, and email-alert handling are easier to review."]},{title:"Terms and acceptance",items:["Expanded the Terms with clear account, sharing, Secure Drop, cleanup, Beta-feature, acceptable-use, availability, liability, dispute, and account-deletion terms.","Versioned both legal documents to 2.3.2 and added a renewed in-app acceptance gate that explains the scope of the material update before app actions continue.","Consolidated folder navigation into one editable Home/Folder/Subfolder path bar instead of showing the same location again as a separate breadcrumb pill.","Aligned the dashboard file toolbar into deliberate path/search and filter/action rows, removing uneven wrapping and excess gaps at common desktop widths.","Added a compact dashboard footer with legal, changelog, and support links to give the workspace a clear, useful ending.","Increased the Privacy and Terms reading scale with larger typography, stronger headings, and more breathing room on desktop and mobile.","Renamed Quick Settings to Settings and made it a stable-height, scrollable workspace. The existing account implementation now lives there too: profile, Drive and cleanup, usage statistics, Secure Drop recovery, data rights, product tour, help, and account deletion are available without a duplicate settings implementation.","Simplified the New Folder expiry picker so preset choices stay clean and the custom-hours editor appears only after someone explicitly chooses Custom expiry.","Replaced the browser-native default-expiry menu with a dark Tempstash dropdown that supports keyboard navigation, screen readers, and safe outside-click closing.","Consolidated Share Link download limits onto the same shared dark dropdown component, removing duplicate selector styling.","Styled Secure Drop upload progress and the Settings blur slider consistently across supported browsers.","Excluded generated Playwright output from lint discovery so local and CI validation stays stable while test reports are created or cleaned."]}]},{version:"2.3.1",date:"August 12, 2026",title:"Stabilization and release hardening",summary:"Hardened public share access, aligned product information with the implementation, and improved reliability and recovery paths.",sections:[{title:"Share protection",items:["Made paused, expired, and download-exhausted share links unavailable to public metadata, preview, and download endpoints.","Added owner pause and resume controls for currently eligible links, including an authoritative final download reservation check.","Moved optional activity-alert email work outside public file responses and escaped dynamic notification values."]},{title:"Recovery and product quality",items:["Changed Drive retry to rerun initialization and rebuilt the product tour with accessible keyboard and focus behavior.","Removed disconnected feature shells and updated owner-facing error, alert, and release language.","Replaced raw provider and database errors with clear recovery guidance, while keeping Drive diagnostics behind an expandable details view.","Versioned the existing installed-app icon URLs so browsers refresh the current Tempstash artwork after an update.","Replaced dashboard storage placeholders with animated Loading states and added compact progress feedback to quiet refreshes, lazy dashboard controls, and Settings actions.","Refined the Secure Drop manager with a compact action toolbar, clearer key-unlock status, intentional empty states, item counts, and responsive mobile controls.","Corrected Secure Drop limit steppers so only the visible plus and minus controls can change a value.","Restored the configured default expiry for new files, notes, and folders. Saved preferences now initialize on every signed-in reload, use a small local cache for a faster start, and are cleared when the session ends.","Fixed Account Settings recovery actions: completed recent reauthentication is recognized for account deleti
1on, same-account Google reconnects synchronize reliably, and removing offline Drive access clears every saved authorization record.","Unlocking the required Secure Drop recovery key now continues the selected inbox download automatically.","Restored typed folder-path navigation and reliable Ctrl/Cmd+K search focus, corrected the All filter label, and made archive and move feedback name the affected item.","Updated the guided tour so only the surrounding page is dimmed, and improved Open on Mobile scanning with a larger QR code and camera-brightness guidance.","Added a Secure Drop large-file beta: new Drops still default to 50 MB, while owners can choose up to 1 GB per file. Large files use bounded encrypted chunks and Drive resumable transfers instead of one large browser payload.","Labelled large-file Secure Drop controls as beta, ask senders to keep the page open, stream supported large owner downloads directly to disk, and direct issue reports to [email protected].","Made bounded scheduled maintenance retry provisional Drive-file removal before discarding the server-only capability for an abandoned large-file transfer.","Rebuilt Open on Mobile as an owner-approved, five-minute pairing flow: scanning connects the phone, and the signed-in desktop must approve it before the phone receives its own one-time Tempstash session. The QR code never contains a Google refresh token.","Corrected the one-time mobile session exchange to verify the generated Supabase magic-link token correctly, and improved QR clearance and sizing for reliable scanning in compact windows.","Added a sign-out confirmation so ending a local session cannot happen by accident and never implies deletion of stored files or Drive authorisation.","Made titles and descriptions update immediately for every route, while preserving generic noindex metadata for private shares, Secure Drop, mobile pairing, and account pages.","Reduced installed-app startup work by caching the active app shell first and loading dashboard ZIP, checksum, QR, Active Shares, mobile pairing, and settings tools only when they are used.","Loaded the current Drive folder and its settings in parallel, then calculated whole-vault storage totals after the file grid is ready.","Added a short-lived in-memory cache for recently opened dashboard and move-picker folders. Cached contents render immediately, then Tempstash always checks Google Drive for updates.","Separated document and versioned-asset cache rules so the app updates promptly while unchanged application assets load faster."]},{title:"Policies and deployment",items:["Updated the Privacy Policy and Terms & Conditions to version 2.3.1.","Corrected deployment and product documentation for the current Drive storage, encryption, Secure Drop, cleanup, and SMTP behavior."]}]},{version:"2.2.4",date:"July 20, 2026",title:"Production readiness release",summary:"Completed the final production hardening pass with quieter dashboard refreshes, current policy records, and dependable installed-app metadata.",sections:[{title:"Reliability and delivery",items:["Replaced the dashboard brand reload with a silent value refresh that preserves the current route, open controls, selections, and in-progress workflows.","Added production verification for the application build, public routes, Render security headers, Supabase migrations, and key upload/share safety paths.","Aligned production cache and security-header behavior with the deployment configuration."]},{title:"Installed app and policies",items:["Added standard 192px, 512px, and Apple touch icon manifest assets derived from the existing Tempstash logo so installed browsers have the right source artwork.","Updated the Privacy Policy and Terms & Conditions to version 2.2.4 with a renewed acceptance record for the material policy release.","Updated the in-app release notice, documentation, and deployment references to Tempstash v2.2.4."]}]},{version:"2.2.0",date:"July 17, 2026",title:"Secure Drop and privacy controls",summary:"Introduced public client-encrypted uploads, recoverable Secure Drop keys, policy versioning, opt-in usage statistics, and account privacy controls.",sections:[{title:"Secure Drop",items:["Added the owner manager, public re
1cipient upload page, encrypted inbox, unread badge, QR links, expiry countdowns, and destroy controls.","Encrypted files and filenames in the sender browser before transport; the upload service streams ciphertext into the owner's managed Tempstash Google Drive folder.","Added recovery-passphrase protected owner keys, encrypted key backups, fingerprints, versioned key rotation, and session-level key snapshots.","Added atomic upload reservations, file/count/total-size limits, stale-reservation cleanup, access passphrases, activity records, and explicit crypto metadata.","Hardened Drive-token refresh, upload finalization, orphan cleanup, destroyed-session behavior, inbox status transitions, and failed-item handling."]},{title:"Privacy and accounts",items:["Added versioned Privacy Policy and Terms acceptance with a mandatory update gate and readable policy pages.","Added Account Settings for profile correction, data export, usage-data erasure, recovery-passphrase changes, grievances, and permanent account deletion.","Added optional first-party usage statistics with an explicit off-by-default toggle, strict field allowlist, owner-only RLS, withdrawal, and 90-day retention.","Restricted legacy privileged functions and rate-limit storage to server roles and added an authenticated account-deletion Edge Function."]},{title:"Production readiness",items:["Added encrypted offline Google Drive authorization and a staged metadata-only cleanup engine for expired ordinary stash items while owners are signed out.","Added signed versioned Drive metadata, an authoritative cleanup registry, root and ancestry verification, five-minute safety windows, bounded worker leases, idempotent deletion receipts, and 90-day audit aggregation.","Added Account Settings controls for cleanup consent, authorization health, granted scope, cleanup metrics, root recovery, legacy adoption, reconnection, and offline-access removal.","Repaired encrypted preview and download delivery, key/IV/salt link handling, custom-password propagation, view-only enforcement, and activity alerts.","Replaced browser-native controls, added consistent loading and error states, and audited routes and modals for narrow mobile screens.","Refined dense dashboards, share dialogs, settings navigation, modal sizing, control spacing, and responsive management surfaces.","Added route-level code splitting, hardened Render security and cache headers, reproducible Supabase function authorization, and a deployment runbook.","Updated dependencies, removed obsolete plaintext key-backup transport, cleared security advisories, and completed lint and production-build checks."]}]},{version:"2.1.0",date:"July 15, 2026",title:"Security and share management",summary:"Expanded encrypted sharing with stronger access controls, activity visibility, multi-file delivery, and a more capable owner dashboard.",sections:[{title:"Sharing controls",items:["Added trusted custom slugs, passphrase-protected shares, download limits, atomic download enforcement, and remote revoke.","Added view-only image, PDF, and video previews while preserving normal downloads for unrestricted links.","Added in-app access notifications and Activity Log records for timestamp, browser, device, IP, and approximate country when available."]},{title:"File delivery",items:["Bundled multiple files into a ZIP before encryption while keeping single-file uploads unchanged.","Generated SHA-256 checksums before encryption and exposed checksum display and copy actions to owners.","Added QR preview and high-resolution PNG export for share links."]},{title:"Management and security",items:["Added Burner Folders with inherited expiry, passphrase, download-l
1imit, and view-only defaults.","Expanded Active Shares with folders, security badges, views, downloads, remaining counts, checksums, QR actions, activity, and destroy controls.","Added RLS, rate limiting, server-side bcrypt hashing, idempotent migrations, and hardened Edge Function share flows."]}]},{version:"2.0.0",date:"March 7, 2026",title:"Encrypted links and dependable delivery",summary:"Matured Tempstash into a polished encrypted-sharing product with reliable key, password, expiry, preview, download, folder, and mobile workflows.",sections:[{title:"Encrypted sharing",items:["Added uploader key display, recipient key/password entry, embedded key and IV links, and an include-key sharing option.","Corrected decrypt-and-download behavior, password-protection metadata, salt handling, binary delivery, and file-type preview states.","Added never-expiring files and folders with clear labels and dashboard warnings."]},{title:"Folders and workflows",items:["Added distinct folder surfaces, inline folder creation, movement, archive handling, drag and drop, and folder expiry.","Resolved global versus internal drag conflicts and stabilized click targets, transforms, tile rendering, and modal overflow.","Iterated expiry controls from dropdowns to reliable inline choices with correct stacking and viewport behavior."]},{title:"Product quality",items:["Expanded the home experience, dynamic and static SEO, social previews, vault analytics, and page transitions.","Improved accessibility, dimensions, hierarchy, GPU animation behavior, header spacing, footer structure, and logo aspect ratios.","Introduced loaders and richer interactions, then simplified unstable tilt and magnetic effects to favor dependable daily use."]}]},{version:"1.0.0",date:"February 7, 2026",title:"Secure sharing foundation",summary:"Added Supabase-backed secure links, Edge Function delivery, client-side encryption, mobile workflows, and production routing.",sections:[{title:"Production foundation",items:["Added Render SPA routing, OAuth verification, optional trailing-slash handling, and archive filtering.","Added PWA installation, global file drop, keyboard shortcuts, share-target support on compatible installed browsers, and responsive upload overlays.","Added QR-based mobile connection and iterated session timing, transfer, login, and error handling for reliable authentication."]},{title:"Sharing and encryption",items:["Added expiring-soon indicators, share links, folder expiry, download progress, and secure short-link records.","Introduced Supabase Edge Functions so public recipients never receive direct Google Drive URLs.","Implemented client-side encryption and corrected binary response downloads in the public share view."]},{title:"Launch polish",items:["Improved mobile navigation and upload presentation, search shortcuts, branding refresh, and responsive visual feedback.","Added Product Hunt launch presentation and referral measurement during the initial product rollout."]}]},{version:"0.1.0",date:"February 3, 2026",title:"The first usable Tempstash vault",summary:"Established the private temporary-storage experience on top of the user's managed Tempstash Google Drive folder.",sections:[{title:"Initial build",items:["Created the React and TypeScript application, its focused dark interface, Google Drive connection, and temporary vault foundation.","Added domain verification and the first production-facing project metadata."]},{title:"First usable vault",items:["Added paste-to-stash, direct file upload, text notes, archive handling, and automatic expiry workflows.","Added storage visibility, universal themes, toasts, sounds, and the initial dashboard experience."]}]}],m=()=>e.jsxs(r,{children:[e.jsx(n,{title:"Changelog | Tempstash",description:"Explore every Tempstash release in chronological order."}),e.jsxs("div",{className:"changelog-page",children:[e.jsxs("header",{className:"changelog-hero",children:[e.jsxs("span",{className:"changelog-eyebrow",children:[e.jsx(o,{size:16})," Product history"]}),e.jsx("h1",{children:"Tempstash Changelog"}),e.jsx("p",{children:"Every Tempstash milestone, organized from the latest production release back to the first usable vault."})]}),e.jsx("div",{className:"release-timeline",children:s.map(a=>e.jsxs("article",{className:"release-entry",children:[e.jsx("div",{className:"timeline-marker","aria-hidden":"true"}),e.jsxs("div",{className:"release-meta",children:[e.jsx("span",{children:a.version==="Unreleased"?a.version:`v${a.version}`}),e.jsx("time",{children:a.date})]}),e.jsxs("div",{className:"release-copy",children:[e.jsx("h2",{children:a.title}),e.jsx("p",{children:a.summary}),e.jsx("div",{className:"release-sections",children:a.sections.map(t=>e.jsxs("section",{children:[e.jsx("h3",{children:t.title}),e.jsx("ul",{children:t.items.map(i=>e.jsx("li",{children:i},i))})]},t.title))})]})]},a.version))})]}),e.jsx("style",{children:`
2      .changelog-page { width: 1080px; max-width: calc(100vw - 2rem); margin: 0 auto; padding: 4.5rem 0 7rem; }
3      .changelog-hero { max-width: 720px; margin-bottom: 3rem; }
4      .changelog-eyebrow { display: inline-flex; align-items: center; gap: .5rem; color: var(--accent-color); font-size: .82rem; font-weight: 800; text-transform: uppercase; }
5      .changelog-hero h1 { margin: .8rem 0 .65rem; font-size: clamp(2.25rem, 6vw, 4.4rem); line-height: 1.05; letter-spacing: 0; }
6      .changelog-hero p { margin: 0; color: var(--text-secondary); font-size: 1.08rem; line-height: 1.7; }
7      .release-timeline { position: relative; }
8      .release-timeline::before { content: ''; position: absolute; top: 12px; bottom: 12px; left: 116px; width: 1px; background: var(--border-color); }
9      .release-entry { position: relative; display: grid; grid-template-columns: 92px 1fr; gap: 3.5rem; padding: .6rem 0 3.5rem; }
10      .timeline-marker { position: absolute; top: 14px; left: 110px; width: 13px; height: 13px; border: 3px solid var(--bg-color); border-radius: 50%; background: var(--accent-color); box-shadow: 0 0 0 1px var(--accent-color); }
11      .release-meta { display: flex; flex-direction: column; align-items: flex-end; gap: .35rem; text-align: right; }
12      .release-meta span { color: var(--accent-color); font-weight: 800; }
13      .release-meta time { color: var(--text-secondary); font-size: .78rem; line-height: 1.4; }
14      .release-copy { padding-left: .5rem; }
15      .release-copy h2 { margin: 0 0 .55rem; font-size: 1.4rem; }
16      .release-copy p { margin: 0; color: var(--text-secondary); line-height: 1.65; }
17      .release-sections { display: grid; gap: 1.15rem; margin-top: 1.25rem; }
18      .release-sections h3 { margin: 0 0 .4rem; color: var(--text-primary); font-size: .88rem; text-transform: uppercase; }
19      .release-copy ul { margin: 0; padding-left: 1.2rem; color: #c4ccd6; line-height: 1.65; }
20      .release-copy li + li { margin-top: .35rem; }
21      @media (max-width: 760px) {
22        .changelog-page { padding-top: 2.5rem; }
23        .release-timeline::before { left: 10px; }
24        .release-entry { grid-template-columns: 1fr; gap: .65rem; padding: 0 0 3rem 2.25rem; }
25        .timeline-marker { left: 4px; top: 5px; }
26        .release-meta { align-items: flex-start; text-align: left; flex-direction: row; flex-wrap: wrap; }
27        .release-copy { padding: 0; }
28      }
29    `})]});export{m as Changelogs};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.