This release ships a 60-second product tour video, turns the seek field into a first-class save door (paste, drop, bookmarklet), adds related-article blocks driven by shared entities, hardens subscription lapse handling and several write paths, and polishes the field, drag overlay, and related UI across dozens of follow-up fixes.
New
- Ship a sixty-second product tour videoA Remotion project now renders the real UI (including styles.css) into a continuous 60-second take that walks through save, feed, gist, read, clear, search, mobile share, and the home feed. The tour is embedded in a modal from the wordmark and linked from help.
b1474ec627bd0b90f37d052cc4dab94343ef48625f72148c9e4aefd19751f7967d97cebc38acff865ab63b33aee0ea6cded3ebc3b4cfaf4db0575c525266323839fd3dae4afaada828565175187f3de6c372798c93d17e14cf4df18601660bea2ac3446da21cf9c73cc70ee770b31a7a - Save links by pasting or dropping a URL into the search fieldThe seek field now recognises a pasted or dropped URL, arms itself for save, and lets Enter (or the button) keep it. Bare hosts are resolved against the viewer's own pile and the corpus so the right action is offered. A link already kept surfaces its row instead of a sentence.
4185fdef240c0dc8c9f4d5fcd912e5c12d17b35ab629c56baea47ef93fddb7b7ef1f3f393cf450ea98417f910f5db15355e5f80454406392b1db61a89418258a7d8484c516808a5e9cfa932330e9db2eea65f05b - Add related-article blocks on every article pageArticles now show up to five neighbours chosen by shared entities (scored by inverse frequency). Each row carries its gist and the tie that produced it. The block is written by the digest job and refreshed by sweep; nothing is computed on the request path.
801a8e92dcb8e49899ae2e1bca35f9b36ec31559b44083840 - Add a self-contained bookmarklet for one-click savesA javascript: bookmarklet re-uses the extension's extraction logic, posts to a new bearer-token endpoint, and falls back gracefully on CSP-strict sites. The token is personalised per user and warned about in help.
153ecca2687aefd09b1b5f9ec743b3dcbf34382f3d16301ee43ebf770e3d88b3b5e68588e3f385823705 - Handle subscription lapses and Stripe reconciliationA lapse notice is stamped on the user record and shown once to the owner. Daily reconciliation walks subscribers so a missed webhook cannot leave Plus active forever. The notice leads with search impact and offers resubscribe.
73305060cc689518bb77d606e00d
Improved
- Make the drag-and-drop overlay and field seams consistentThe overlay now says "Anywhere on this page" and the header line answers the drag. Seams appear only where two visible elements meet; the × target is 44 px on touch and the hairline follows the number.
149f27efbb0cd7009c9066959c9e1c0d7c4ffeb054e17a137c8f278fd1cdc7be727bce7e2136bb70049152de558
Fixed
- Stop rendering bot-wall titles and clean the existing corpusnoise.wall() recognises the common interstitial strings and metadata.extract treats them as missing titles (recovering via Wayback when possible). A one-time script requeues the 33 affected rows.
d322c62841e329 - Tighten the site-answer cache and stranger behaviourA site answer is never written to the anonymous cache. Strangers receive the corpus search instead of silence or another user's rows. The early-out guard and its tests were clarified.
b8dac48f90df9b
Security
- Reject javascript: and other non-http schemes at every write pathPOST /api/link, the extension, the shortcut and the bookmarklet now refuse anything whose scheme is not http(s). Client-side shape checks and normalisation were tightened in parallel.
db15355e5f80454406392b1db61a89418258a7d848