{"blyg":"0.4","id":"7b5283nva94y1b2x76ckh9cg9p","kind":"thread","origin":"https://blyg.blygger.org/","page":"t/7b5283nva94y1b2x76ckh9cg9p/","author":{"name":"Venkatesh Rao","url":"https://blyg.blygger.org/"},"created":"2026-10-29T19:46:13Z","updated":"2026-10-29T19:46:15Z","version":1,"content_md":"\n# Blygger Studio 0.49.0\n\n*Released 2026-10-29, the reference client. [v0.49.0 on GitHub](https://github.com/blygger/blygger-studio/releases/tag/v0.49.0).*\n\n**Migrations: 0033** (`browse_log`, `link_probe`; both studio-private). Apply it to every D1 before deploying.\n\n- **Browse the thicket from the reader.** Every quoted layer in an entry, at\n  any depth, now says whose it is and opens in the reader; so does any ordinary\n  link that names a blyg item (the server looks at the page the link points to,\n  §5.8's `rel=\"alternate\"` item document, and remembers the answer for a\n  week). An item of a blyg you hold opens at its own address; one you do not\n  hold opens at `/peek`, read from its origin with nothing stored, with a\n  *subscribe* button. A stub opened that way shows what it responds to, and\n  that opens too. Back retraces the descent one entry at a time, and a\n  breadcrumb shows the path.\n- **Browsing history.** The walk is logged privately (`browse_log`, a tree: each\n  step names the step it was reached from) and a *history* pane beside the\n  reader (a bottom sheet on a phone) shows this walk and earlier ones, with\n  *clear history*. Never on the wire or a public page.\n- **Public pages name every nested quote.** `injectNestedProvenance`: the\n  provenance line, with a link, now appears on quotes inside quotes too; an\n  absent `data-blyg-origin` takes the origin of the layer that baked it. Links\n  behave as ordinary links.\n- **Links that are not blyg items open in a new tab**, so reading your place is\n  kept; and opening an item of a blyg you do not subscribe to shows an alert,\n  *You're not subscribed to this blyg — subscribe?*, with the subscribe sheet\n  prefilled.\n- **Withdrawn posts are background.** The Background lens, a placeholder until\n  now, lists withdrawn posts (your own endcaps and the blygs you read); every\n  other lens, the sources counts and hopper timelines leave them out.\n  `GET /reading` takes `background=true`.\n- **A revised post leads with its latest changelog entry.** On a feed card for\n  an imported blyg item past its first version the line `V3: …` comes first,\n  read from the origin's changelog once the card is on screen (nothing new is\n  stored); with no note for that version it says `V3: No changelog entry\n  available`.\n- New operations: `peekItem`, `classifyLinks` (both `owner:read`), `listBrowse`\n  (`owner:read`), `logBrowse` and `clearBrowse` (`reading:state`).\n\n- **A stub's passage is selected in the editor's own preview.** The separate\n  chooser pane, which showed the quoted post a second time, is gone. Select\n  text inside the stub's quote in the preview and press *quote only this*; the\n  passage is written under that quote's `![[id]]`, whichever of several it is.\n  On a phone the button *select a passage in the preview* switches panes, and\n  the draft returns after the choice. *Quote another passage* adds a whole-post\n  quote after the cursor to select from, replacing *add as another quote* and\n  *replace the first quote*. Selections inside a nested quote, or while the\n  preview is out of step with the draft, offer nothing.\n\n\n\n*This announcement is drafted from the release's section of [`CHANGELOG.md`](https://github.com/blygger/blygger-studio/blob/main/CHANGELOG.md), which is where it is maintained. To comment, respond to this item from your own blyg.*\n","content_html":"<div class=\"blyg-tk-gen\"><h1>Blygger Studio 0.49.0</h1>\n<p><em>Released 2026-10-29, the reference client. <a href=\"https://github.com/blygger/blygger-studio/releases/tag/v0.49.0\">v0.49.0 on GitHub</a>.</em></p>\n<p><strong>Migrations: 0033</strong> (<code>browse_log</code>, <code>link_probe</code>; both studio-private). Apply it to every D1 before deploying.</p>\n<ul>\n<li>\n<p><strong>Browse the thicket from the reader.</strong> Every quoted layer in an entry, at\nany depth, now says whose it is and opens in the reader; so does any ordinary\nlink that names a blyg item (the server looks at the page the link points to,\n§5.8's <code>rel=&quot;alternate&quot;</code> item document, and remembers the answer for a\nweek). An item of a blyg you hold opens at its own address; one you do not\nhold opens at <code>/peek</code>, read from its origin with nothing stored, with a\n<em>subscribe</em> button. A stub opened that way shows what it responds to, and\nthat opens too. Back retraces the descent one entry at a time, and a\nbreadcrumb shows the path.</p>\n</li>\n<li>\n<p><strong>Browsing history.</strong> The walk is logged privately (<code>browse_log</code>, a tree: each\nstep names the step it was reached from) and a <em>history</em> pane beside the\nreader (a bottom sheet on a phone) shows this walk and earlier ones, with\n<em>clear history</em>. Never on the wire or a public page.</p>\n</li>\n<li>\n<p><strong>Public pages name every nested quote.</strong> <code>injectNestedProvenance</code>: the\nprovenance line, with a link, now appears on quotes inside quotes too; an\nabsent <code>data-blyg-origin</code> takes the origin of the layer that baked it. Links\nbehave as ordinary links.</p>\n</li>\n<li>\n<p><strong>Links that are not blyg items open in a new tab</strong>, so reading your place is\nkept; and opening an item of a blyg you do not subscribe to shows an alert,\n<em>You're not subscribed to this blyg — subscribe?</em>, with the subscribe sheet\nprefilled.</p>\n</li>\n<li>\n<p><strong>Withdrawn posts are background.</strong> The Background lens, a placeholder until\nnow, lists withdrawn posts (your own endcaps and the blygs you read); every\nother lens, the sources counts and hopper timelines leave them out.\n<code>GET /reading</code> takes <code>background=true</code>.</p>\n</li>\n<li>\n<p><strong>A revised post leads with its latest changelog entry.</strong> On a feed card for\nan imported blyg item past its first version the line <code>V3: …</code> comes first,\nread from the origin's changelog once the card is on screen (nothing new is\nstored); with no note for that version it says <code>V3: No changelog entry available</code>.</p>\n</li>\n<li>\n<p>New operations: <code>peekItem</code>, <code>classifyLinks</code> (both <code>owner:read</code>), <code>listBrowse</code>\n(<code>owner:read</code>), <code>logBrowse</code> and <code>clearBrowse</code> (<code>reading:state</code>).</p>\n</li>\n<li>\n<p><strong>A stub's passage is selected in the editor's own preview.</strong> The separate\nchooser pane, which showed the quoted post a second time, is gone. Select\ntext inside the stub's quote in the preview and press <em>quote only this</em>; the\npassage is written under that quote's <code>![[id]]</code>, whichever of several it is.\nOn a phone the button <em>select a passage in the preview</em> switches panes, and\nthe draft returns after the choice. <em>Quote another passage</em> adds a whole-post\nquote after the cursor to select from, replacing <em>add as another quote</em> and\n<em>replace the first quote</em>. Selections inside a nested quote, or while the\npreview is out of step with the draft, offer nothing.</p>\n</li>\n</ul>\n</div>\n<div class=\"blyg-tk-gen\"><p><em>This announcement is drafted from the release's section of <a href=\"https://github.com/blygger/blygger-studio/blob/main/CHANGELOG.md\"><code>CHANGELOG.md</code></a>, which is where it is maintained. To comment, respond to this item from your own blyg.</em></p>\n</div>\n","content_hash":"sha256:ba94d89863f3f9c0d57fd4a2a14745bc25fe11702a20ce47e9bb023e2d6cfc8f","media":[],"transclusions":[],"generated":[{"sources":[],"model":"claude-sonnet-5-5"},{"sources":[],"model":"claude-opus-5-5"}],"changelog":[{"version":1,"at":"2026-10-29T19:46:15Z","note":"Studio 0.49.0 released."}]}