Every build, in the order it shipped — what was added, what broke, and what was fixed.
Admin-only tooling ships too, but isn't detailed here for security reasons — you won't find specific internal routes or how they work, though general "something changed" notes about the product as a whole will still show up.
Build 45
Fixed password-reset emails not arriving, and added per-address email logins
BugPassword-reset emails (and a few other account emails) were silently failing to send when a single mailbox login didn't have permission to send as a different address — the request looked successful, but nothing arrived. Fixed: a send now falls back to the account that actually logged in rather than failing outright.
AddedAdmins can now add a real login for each specific sending address (notifications@, security@, admin@, system@) instead of relying on one shared account for all of them — each address then sends genuinely as itself.
FixedA failed email send is now recorded in the admin error log, so a delivery problem is actually visible instead of only appearing in a server log nobody's watching.
Build 44
The sharing microsite is back as wallofcerts.link, and email now knows who it's from
FixedThe sharing domain is now correctly wallofcerts.link (a stray extra "s" had it as wallofcerts.links in the previous build).
AddedThe dedicated sharing-domain microsite is renamed wallofcerts (from WoCerts) to match — its own home page, live stats, "verify a link" tool, and Privacy/Terms/DMCA pages. Old /wocerts links redirect automatically.
AddedAccount emails now come from an address that matches what they're about — a password change notice from security@, a new-account welcome from notifications@ — instead of one generic sender.
AddedAdded a security notice: whenever your password is changed, you get an email about it with a one-click way to react if it wasn't you.
FixedThe custom-SMTP settings form now defaults its TLS setting correctly based on the port you enter, and warns if the combination looks wrong — the single most common way that form used to fail to connect.
Build 43
wallofcerts.link, custom SMTP email, and a share-preview reliability fix
BugA shared certificate's link preview (WhatsApp, Slack, iMessage, etc.) would sometimes show no image at all, or show one inconsistently — caused by a rare internal image-rendering failure, not the certificate data itself. The image is now fully generated before being sent, so a preview always gets a complete image: the certificate's own thumbnail, or a plain fallback card, never a broken one.
Addedwallofcerts.link is the new dedicated domain for short certificate links, replacing the retired wocerts.link. Its own home page, live stats, "verify a link" tool, and Privacy/Terms/DMCA pages are back.
AddedAdmins can now send account email through their own SMTP server instead of Resend, configured from a new Settings → Email page — no redeploy needed to switch.
FixedUpdated the privacy policy to reflect that email may now be sent via a self-hosted SMTP server instead of Resend, depending on what the site operator has configured.
Build 42
A real logo, better sharing previews, group frames, and search/AI discoverability controls
BugSharing a certificate's link (not your wall's link) previously showed a generic site preview instead of that certificate — fixed, and the preview now shows the certificate's own thumbnail through its actual frame.
AddedGrouped certificates: a parent certificate can now apply its frame to every certificate in the group at once, from its edit page — any certificate you've already given its own specific frame is left alone.
AddedAdded a real logo and favicon, and gave the navigation and footer links a cleaner look across the site.
AddedNew Settings → Discoverability section: an off-by-default toggle to let your public wall be found via search engines and AI assistants, plus a per-certificate switch to keep one certificate out even while the rest of your wall is discoverable. This never overrides Unlisted/Private or an off/PIN-protected wall.
AddedAdded a sitemap and other technical groundwork so opted-in public walls and certificates can actually be found — none of this guarantees indexing or an AI mention, since no site can force that.
Build 41
Share buttons, a copyright notice, and traffic sources for admins
AddedAdded one-click share buttons (WhatsApp, Facebook, LinkedIn, X, Telegram, Email) to your wall and to each certificate's page.
AddedAdded a copyright notice to the bottom of every page.
AddedAdmins can now see an aggregate breakdown of which sites wall views are coming from (WhatsApp, Facebook, LinkedIn, Google, etc., or direct) — counts only, never which specific visitor.
Build 40
Two more wall layouts, and a privacy fix for private/PIN-protected walls
BugA wall turned off, or protected with a PIN, still let an individual certificate's own page and file be viewed or downloaded directly by anyone who had or guessed its link — only the main wall page itself was actually checking this. Fixed everywhere at once.
AddedAdded two more wall layouts — List (compact rows, good for a lot of certificates) and Mosaic (staggered tile sizes) — alongside the existing four.
FixedFixed turning your own wall off also 404ing the page for you — you can now still preview it yourself while it's off.
Build 39
A public API, Docs and FAQ pages
AddedAdded a public API — generate a key from Settings → API access, then list, upload, edit, and delete your own certificates from outside the site. See the new Docs page for authentication, endpoints, and examples.
AddedRequests are rate-limited per key, and separately per account (combined across every key you own), so creating more keys can't raise your overall limit.
AddedAdded a Docs page covering how the whole site works — uploading, organizing, sharing, your wall, privacy, redaction, and the API — and a separate FAQ page for shorter, common questions.
AddedKeys can be named, listed, and revoked at any time from Settings; revoking one stops it from working immediately.
Build 38
More realistic frames, and a background speed pass
AddedAdded 8 more frame styles going for a more literal picture-frame look — Vintage, Modern, and Classic black are free now; Wood, Museum mat, Art deco, Marble & gold, and Velvet are previewable but not selectable yet, ahead of a future paid tier.
FixedDeleting your account now also removes a certificate's redacted (blacked-out) copy from storage — it was previously being skipped, left behind as an orphaned file.
FixedSped up account deletion — a certificate's files are now all removed at once instead of one after another.
FixedFixed your public wall looking up your profile from the database twice on a single visit (once for the page, once for its link-preview info) — now just once.
Build 37
/u/ links, wall privacy, fonts, and more frames
FixedWall and certificate links now live at /u/username instead of a bare /username — old links still work and redirect automatically.
AddedSettings now has a real "Share my wall" on/off switch — it existed under the hood before, but there was no way to actually use it.
AddedAdded an optional PIN or password for your wall — set one in Settings and anyone visiting (other than you) has to enter it before seeing anything, even if they have the link.
AddedAdded a font choice in Settings, independent of your theme — pick Fraunces, Playfair, Inter, or Space Grotesk, or just leave it matching your theme like before.
AddedAdded 3 more frame options — Ornate, Vignette, and an animated Shine effect on hover — alongside the existing 6. Your profile avatar also got a small decorative touch.
AddedIf you're the admin account, your dashboard header now shows a direct Admin link.
Build 36
Frames, a shorter edit link, and some tidying up
AddedAdded 6 free frames you can put around a certificate — Thin line, Gold double, Deep shadow, Corner marks, and Rounded, alongside the existing plain look. Pick one from the upload or edit form.
AddedAdded a "Remove redacted" button — undo a redaction entirely and go back to showing your original to everyone, exactly as before.
AddedEditing your own certificate now has a short link too: /cert/edit/1, matching the existing /cert/1 view shortcut.
AddedAdded an admin page (Deployment & cache) showing which commit is actually live and a button to force-clear server-side caching, for when something looks like it hasn't updated.
FixedThe contact email shown across the legal pages now says "a new contact address, coming soon" instead of the retired wocerts.link one.
FixedCleaned up the dashboard header and homepage footer — both had grown to 7-8 links crammed into one row; split into clearer groups.
FixedFixed the Settings page leaving a large empty gap on wider screens instead of centering its content.
FixedThe old wocerts.link share-link stats (total links, active/revoked/expired, views) are now part of the main Status page, since that dedicated page no longer exists.
Build 35
Redact sensitive info, and AI-assisted titles/descriptions
AddedAdded a redaction tool: draw boxes over names, ID numbers, addresses, or signatures on a certificate and permanently black them out in a genuinely new file — not a visual overlay, the original pixels are gone from what anyone but you ever sees.
AddedAsked right after uploading (with a "skip for now" option), and always available afterward from the edit page — redacting was never meant to be a one-time decision at upload.
AddedAdded an owner-only "View redacted" link on the certificate page so you can always check what everyone else actually sees, alongside your untouched original.
AddedAdded AI-assisted title and description suggestions, generated from your redacted certificate (never the original) via a free-tier provider — shown as an editable suggestion you can accept or ignore, same as the existing OCR suggestions.
FixedFixed a caching gap this uncovered: once a certificate has a redacted version, the file-serving route now correctly avoids letting a shared cache mix up which viewer should see which version.
Build 34
Faster navigation, a fixed link-preview bug, and a real error log
BugFixed the new link-preview image (og:image) not showing up in production — a font file it needs wasn't being included in the deployed build.
AddedAdded an error log for the admin (/admin/logs) that captures every server-side error automatically, with a one-click download as a plain-text file — since a live deployment has no persistent disk to keep a real log file on, this is the next best thing.
FixedSped up navigation across the site: duplicate "who's signed in" checks on the same page load are now reused instead of repeated, several pages' database queries now run at the same time instead of one after another, and a couple of background counters (view counts) no longer make you wait for them before the page shows up.
Build 33
Three more ways to arrange your wall, and real link previews
AddedAdded Featured, Timeline, and Categorized layouts for your public wall, alongside the existing Grid — pick your default from Settings, or let a visitor flip between all four just to browse (their choice isn't saved, so your wall always shows your own pick again next time).
AddedSharing a wall link now shows a real preview when pasted into WhatsApp, Slack, iMessage, etc. — your name and certificate count, styled in your own theme, instead of just the generic site name.
Build 32
A short link for your own certificates
AddedEvery certificate now has a short owner-only link (/cert/1, /cert/2, ...) — click one from your own dashboard, wall, or a certificate you own and you'll land there instead of the long username/id link.
AddedAdded a direct Edit button on the certificate page itself, for its owner, instead of only being reachable by hovering its card on the dashboard.
FixedThe long link is still what gets shared/copied — the short one only ever works for the certificate's actual owner, so an Unlisted certificate's link stays just as hard to guess as before.
Build 31
Domain wind-down, and replying to feedback from the admin panel
BugGrouping a certificate under another one made it impossible to edit ever again — its edit button only lived on its own dashboard card, and a grouped certificate no longer gets one of those. Fixed: certificates listed under "Included in this group" now show the same edit/delete controls their owner sees everywhere else.
FixedRetired wocerts.link, the dedicated short-link domain, after a trademark search turned up a name/domain clash — a replacement is coming shortly. Every wall link, share link, and watermark stamp now falls back to the main app domain instead.
AddedAdmin can now reply directly to a contact-form submission from /admin/feedback — pick a starter template (general/bug/feature/other), edit it, and send, without leaving the admin panel.
Build 30
Verify a certificate's title against its file
AddedAdded an "Auto-detect & verify" button on the edit-certificate page, next to the Title field.
AddedRe-scans the certificate's original file and flags it if the title you've entered doesn't match what it reads off the file, with a one-click way to use the detected title instead.
Build 29
An admin analytics dashboard
AddedAdded an analytics view for the admin: daily signups, daily certificate uploads, daily share links created, and daily share link views over the last 2 weeks.
AddedAdded a "most-visited public walls" ranking, by aggregate view count only — no per-visitor identity, same anonymized approach described in the Privacy Policy.
AddedWall views are now actually counted (they weren't before) to make that ranking possible.
BugNone of this uses a third-party analytics or advertising service — it's built entirely from this app's own database.
Build 28
Dark mode
AddedThe site now follows your system's light/dark setting automatically if you haven't picked a theme yourself.
AddedAdded a sun/moon toggle in the homepage header and the dashboard header to switch manually at any time.
AddedYour choice is remembered — as your account's theme setting if you're signed in, or a browser cookie if you're not — so it stays put on your next visit instead of re-detecting your system setting.
FixedElegant and Sepia are treated as the two light themes, Minimal and Ink as the two dark ones (Minimal is actually a dark theme despite the name) — the toggle switches between Elegant and Ink specifically; Sepia and Minimal are still available from Settings.
Build 27
A real contact form
AddedThe Contact page now has an actual form (category, your email, message) instead of just a mailto link.
AddedSubmissions email us directly so they don't just sit unread in a database, and are also visible to the admin at a new review queue.
AddedAdded a note that formal DMCA copyright takedown notices should still go by email in the specific format the DMCA page describes — the form isn't a substitute for that.
Build 26
Popups, toasts, and a notification bell
AddedConfirmations (delete, revoke) now show as a proper popup dialog instead of the browser's plain confirm box.
AddedSuccess and error messages now show as a toast in the corner of the screen instead of a browser alert or an inline banner.
AddedAdded a notification bell to the dashboard, with All / Unread / Read / Archived tabs.
AddedYou're notified when one of your certificates is reported, and again if it gets automatically hidden after enough reports.
AddedAdmins are notified whenever a new report comes in anywhere on the site.
AddedThe account that becomes admin (the first one registered) now gets a notification explaining what just happened.
Build 25
Recipient names on share links
AddedShare links now have an optional "Recipient name" — who you actually made the link for — stamped into the watermark alongside the existing label, timestamp, and domain.
AddedRecipient name can be added or changed any time after a link is created, without needing to generate a new one.
Build 24
Faster thumbnails and previews
BugAfter changing something, or right after the site restarted/redeployed, profile photos and certificate thumbnails could take a noticeable moment to (re)appear, and sometimes showed blank briefly on refresh.
FixedPhotos and thumbnails now load instantly when unchanged, while still always showing the latest version the moment something actually changes.
FixedWatermarked certificate previews now load faster on a repeat view (reopening the same link, or reloading the page) instead of being regenerated from scratch every time.
Build 23
Watermark now names the site, with a DMCA note to match
AddedWatermarked certificate previews now also stamp wocerts.link alongside the viewer's name/label and timestamp, so a copy can be identified as coming from Wall of Certificates even after it's been screenshotted or reposted elsewhere.
AddedAdded a section to the DMCA page explaining the watermark's domain stamp and how to report a watermarked certificate found posted elsewhere without permission.
AddedAdded a short explanation next to the "Allow downloads" toggle on the certificate edit page, about what turning it off actually does.
Build 22
Watermark shows when a link was created, and avatars/thumbnails never go stale
BugThe watermark's timestamp showed whenever a viewer happened to open the link, not when the owner actually created it — so a friend viewing late at night could see a time on "the next day."
FixedThe watermark now shows the moment the share link was created, converted into whichever timezone the person looking at it is actually in.
BugAfter changing your profile photo, or after a certificate's preview finished regenerating, people who'd already loaded the page could keep seeing the old photo or preview for up to an hour.
FixedProfile photos and certificate previews now always reflect the latest version, while still loading instantly when nothing's actually changed.
Build 21
Responsive pass across the whole site
FixedThe upload and edit forms' Issuer/Year fields and Visibility picker no longer look cramped on a phone — they stack into a single column below tablet width.
AddedThe dashboard header shows shorter button labels on a phone ("Upload" instead of "Upload certificate", etc.) so it doesn't wrap across several lines.
FixedTightened side padding on narrow screens across every page for a bit more breathing room.
FixedA handful of header rows (homepage, certificate view's related sections, changelog, status) could have overflowed on a very narrow phone — they now wrap properly instead.
Build 20
12-hour timestamps, clearer link errors, and a real admin role
FixedThe watermark timestamp now shows as 08:25 PM instead of 20:25.
AddedOpening a share link that's been revoked or has expired now says so plainly, instead of a generic "not found."
AddedAn invalid certificate link now says "that certificate link is invalid" instead of a generic wall-not-found message.
AddedThe admin report queue is no longer controlled by a hidden password in the server's configuration. The first account ever registered on this app automatically becomes the admin, and only that account gets a special "you're the admin" verification email.
FixedSigning in as any other account and trying to visit the admin queue now shows a proper "not for you" page instead of nothing happening.
Build 19
Watermark now shows your label and your timezone
BugThe watermark stamped on a shared certificate always showed the reason (Public/Friends & Family/Other), ignoring any custom label (e.g. "For LinkedIn") you'd set on that link.
FixedThe watermark now shows your label when you set one, falling back to the reason only when there isn't one — matching the share list.
BugThe watermark's timestamp showed as 2026-07-29 15:25 UTC — year-first, and always UTC no matter who was looking at it.
FixedThe timestamp now reads day-month-year (29-07-2026), and shows in whoever's actually viewing the link's own local time and timezone — someone in Pakistan sees Pakistan time, someone in New York sees New York time, all from the same underlying moment stored in UTC.
Build 18
wocerts.link gets its own site
Addedwocerts.link now shows a real homepage explaining what it is and why it exists, instead of the same homepage as the main app.
AddedAdded a "Verify a link" tool — paste any wocerts.link address to check if it's active, revoked, or expired, without revealing which certificate it points to.
AddedAdded a live stats page for wocerts.link: total links created, active vs. revoked vs. expired, total views, and a breakdown of active links by the certificate's visibility (public/unlisted/private).
AddedAdded dedicated Privacy, Terms, and DMCA pages for the wocerts.link domain specifically, separate from the main app's.
AddedShare links now count views, shown both on the new stats page and available for a future per-link view count.
Build 17
Share link display fixes
BugA custom label on a share link (e.g. "For LinkedIn") wasn't showing up in the share list — only the reason (Public/Friends & Family/Other) was.
FixedA share link's label, if you set one, now shows as the main text, with the reason next to it in parentheses.
BugDates on share links showed as 2026-07-29 (year-month-day) instead of a day-first format.
FixedDates now show as day-month-year, e.g. 29-07-2026.
BugIf the app's domain (or the sharing domain) was ever entered with a trailing slash, links in emails and share pages would show a double slash.
FixedDomain values are now cleaned up automatically, so a trailing slash in configuration can no longer produce a double slash in any link.
Build 16
Sharing a certificate found a missing Report button, and a branding cleanup
BugOpening a shared certificate link (wocerts.link/...) had no way to report it — the Report button only existed on the direct certificate page, not the one an actual recipient of a share link sees.
FixedAdded a Report link to the shared-certificate view, so anyone receiving a share link can flag it too.
FixedThe site's own name is now consistently "Wall of Certificates" everywhere it refers to itself — page titles, legal pages, emails, and every "back to home" link. "WoCerts" is reserved for the short link domain (wocerts.link) only.
AddedContact address across the Contact, DMCA, Privacy, Terms, and Content Policy pages is now contact@wocerts.link.
BugThe signup page's "wocerts.link/username" preview was a hardcoded string that wouldn't have followed a real domain change.
FixedSignup page now reads the sharing domain from configuration instead of a hardcoded string.
Build 15
Legal pages, settings, reporting, and domain roles
AddedAdded Privacy Policy, Terms & Conditions, DMCA, and Contact Us pages, linked from the homepage footer.
Addedwallofcertificates.com (and the vercel.app staging domain) is now the main app; wocerts.link is used only for share links, so the two never mix.
AddedAdded a Settings page — change your display name, username, bio, and profile photo; pick a theme and layout; delete your account.
AddedChanging your username now frees the old one for 90 days before anyone (including you) can take it again, so it can't be reused to impersonate you.
AddedAdded a Report button on every certificate page, so a visitor can flag one they think shouldn't be there.
AddedA certificate is now automatically held from public view if it collects 3+ reports within a day, pending review — never deleted outright.
AddedAdded a private report queue for the site operator to review flagged certificates and restore or confirm the hold.
Build 14
Short, customizable share links
BugShare links were long, random addresses under /api/shares/... instead of something short enough to actually send to someone.
FixedShare links are now short addresses like wocerts.link/my-certification, shown as a proper page instead of a bare image.
AddedOwners can now choose their own link name instead of a random one, or leave it blank for a short random one.
AddedOwners can now set a share link to expire after a day, a week, a month, or never.
AddedAdded a navigation bar with Sign in / Sign up to the top of the homepage.
Build 13
Password reset, easier navigation, and error pages
AddedAdded "Forgot password?" — request a reset link by email, then choose a new password.
AddedThe homepage footer now shows both Sign in and Sign up when logged out.
AddedAdded a link back to the homepage from the dashboard.
AddedAdded proper 403 and 500 error pages, matching the rest of the site's design.
Build 12
Branding refresh and a share-link fix
FixedAn owner opening their own certificate through a share link now always sees the real file, not a watermarked copy of their own certificate.
AddedVerification emails now use a proper template matching the site's look, and show as coming from "WoCerts" instead of a raw email address.
FixedRenamed the site's internal short name from "WoC" to "WoCerts" for consistency.
Build 11
Domain, security review, and real email delivery
BugThe auto-detected certificate title was still occasionally wrong for real-world certificates, picking up a stray misread line instead of the actual course name.
FixedImproved the title detection further using a real example of the exact failure.
FixedReviewed file storage and database access end-to-end; tightened one spot where a certificate's internal storage reference was reaching the browser unnecessarily.
AddedMoved to the wocerts.link domain.
AddedAccount verification emails are now actually delivered (previously only logged for testing).
Build 10
Fixed garbled watermark text
BugThe name/timestamp stamped on shared certificate previews rendered as garbled box characters in production, though it looked correct when tested locally.
FixedThe watermark text now uses a font bundled with the site itself instead of depending on a font already installed on the server.
Build 9
Redesigned certificate sharing
BugThe original file was still reachable by editing the watermarked-preview link's address, since the two links only differed by one word.
FixedReplaced both links with per-purpose share links that share no pattern with each other, so there's no address to guess between.
AddedOwners can now create multiple share links for the same certificate, each tagged with a reason (Friends & Family, Public, Other) that's stamped into that link's watermark.
AddedShare links can be revoked or regenerated at any time, immediately invalidating the old link.
FixedRewrote this changelog to read as a public product history rather than an internal development log.
Build 8
Changelog, live status page, and preview retry
AddedAdded this changelog and a public status page showing live site-wide totals.
AddedAdded a "Retry preview" button for any certificate whose preview never generated, so it doesn't require re-uploading the file.
BugAuto-detected certificate title/issuer text was sometimes wrong for certain certificate layouts.
FixedImproved how the title and issuer are located within a certificate's text, instead of relying on simple keyword matching.
Build 7
Certificate previews now generate reliably
BugCertificate preview images and auto-detected text worked when tested locally, but failed for real uploaded PDFs once the site was live.
FixedReplaced the certificate preview renderer with one designed for the hosting environment, after tracing the failure through several distinct causes.
FixedCorrected how the renderer located its own support files (fonts, character maps, and its text-recognition engine) once running on the hosting platform.
BugOnce previews started generating, the text-recognition step for auto-filling the form still failed in the same environment.
FixedFixed the text-recognition engine failing to load one of its required files after deployment.
Build 6
Watermarked previews and a closed access gap
AddedWhen an owner turns off downloads for a certificate, other viewers now see a preview with the viewer's name and the time stamped across it, instead of the original file.
BugThe original file was still directly reachable even when downloads were turned off, bypassing the watermarked preview.
FixedThe original file is no longer served to non-owners once downloads are turned off; they're redirected to the watermarked preview instead.
Build 5
Malware scanning and faster file loading
AddedUploaded files are now checked by a malware-scanning service, in addition to the existing file-type and content checks every upload goes through.
BugViewing or downloading a certificate's original file could feel slow for larger files.
FixedOriginal files now stream to the browser as they load instead of loading fully into memory first.
Build 4
Public launch
AddedThe site is now hosted and publicly reachable, backed by managed database and file storage so uploads persist across updates to the site.
Build 3
Certificate organization
AddedAdded categories for organizing a wall of certificates.
AddedAdded the ability to edit a certificate's details after uploading.
AddedAdded grouping, for bundling several related certificates (e.g. courses within one program) under a single entry.
Build 2
Upload auto-fill
AddedUploading a certificate now auto-detects and suggests a title, issuer, and year from the file, for review before saving.
Build 1
Initial launch
AddedSign up, upload a certificate (PDF or image), and see it appear on a dashboard.
AddedEvery account gets a public link showing their certificates as a wall, with public, unlisted, and private visibility per certificate.