<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Changelog</title><description>A log of changes on my website</description><link>https://riyana.dev/changelog/</link><item><title>v2026.10.09</title><link>https://riyana.dev/changelog/2026-10-09/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-10-09/</guid><description>New page: bookshelf!</description><pubDate>Fri, 09 Oct 2026 12:54:49 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;I’ve been wanting a bookshelf page for a while now (inspired by the first one I’ve ever seen on a personal website &lt;a href=&quot;https://photogabble.co.uk/books/&quot;&gt;https://photogabble.co.uk/books/&lt;/a&gt;) and I finally built a simple one.&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;https://riyana.dev/bookshelf&quot;&gt;bookshelf&lt;/a&gt; retrieves records from &lt;a href=&quot;https://bookhive.buzz/profile/riyana.dev&quot;&gt;my BookHive collection&lt;/a&gt; server-side on build time. I don’t expect this shelf to change often so I opted not to show the live/latest version of it.&lt;/p&gt;
&lt;p&gt;Other changes include showing a relative time (e.g. &lt;code&gt;Published 5 days ago&lt;/code&gt;) as the publication date for each blog post, then showing the actual date at the end of the post.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.09.23</title><link>https://riyana.dev/changelog/2026-09-23/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-23/</guid><description>Social share and copy link</description><pubDate>Wed, 23 Sep 2026 06:59:05 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;I added a social share and copy link section under my blog posts for easier sharing. Currently only X (formerly Twitter), Bluesky, and Threads are in the Social Share and there’s a general purpose Copy Link button for all other platforms.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.09.19</title><link>https://riyana.dev/changelog/2026-09-19/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-19/</guid><description>Link previews and a ko-fi banner</description><pubDate>Sat, 19 Sep 2026 12:54:41 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;I added link previews to bare links in my blog posts with &lt;a href=&quot;https://github.com/okaryo/remark-link-card-plus&quot;&gt;&lt;code&gt;remark-link-card-plus&lt;/code&gt;&lt;/a&gt;. Now links can be pretty.&lt;/p&gt;
&lt;p&gt;I also added a Tip Jar / Support My Work banner at the bottom of the page. Completely optional of course but very much appreciated.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.09.17</title><link>https://riyana.dev/changelog/2026-09-17/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-17/</guid><description>An RSS feed for each of my publication!</description><pubDate>Thu, 17 Sep 2026 11:24:08 GMT</pubDate><content:encoded>&lt;p&gt;I should have done this earlier, but I have an RSS feed for each of my publications now!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://riyana.dev/field-notes/rss.xml&quot;&gt;Field Notes RSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://riyana.dev/rage/rss.xml&quot;&gt;Rage Against the Dying Light RSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://riyana.dev/changelog/rss.xml&quot;&gt;Changelog RSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>v2026.09.07</title><link>https://riyana.dev/changelog/2026-09-07/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-07/</guid><description>Custom cover images</description><pubDate>Mon, 07 Sep 2026 07:17:40 GMT</pubDate><content:encoded>&lt;p&gt;Only one main thing really changed in this version: I added support for custom cover images for blog posts.&lt;/p&gt;
&lt;p&gt;Previously, I generated Open Graph images for each blog post that also serves as the document’s &lt;code&gt;coverImage&lt;/code&gt;. I still generate OG images for each blog post, but it can be overriden by a custom image defined at the Markdown frontmatter of the post.&lt;/p&gt;
&lt;p&gt;I also have officially published my blog posts under &lt;a href=&quot;https://riyana.dev/rage&quot;&gt;Against the Dying Light&lt;/a&gt; publication to the Atmosphere!&lt;/p&gt;</content:encoded></item><item><title>v2026.09.06</title><link>https://riyana.dev/changelog/2026-09-06/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-06/</guid><description>UI/UX changes and adding Storybook</description><pubDate>Sun, 06 Sep 2026 15:16:42 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;The whole thing has changed! I locked in and actually made something beyond “okay na ‘to”—it’s a Filipino expression that conveys the energy of “this is probably fine.”&lt;/p&gt;
&lt;p&gt;On the homepage, I added a list of my five latest articles or writeups, followed by a feature section for &lt;a href=&quot;https://riyana.dev/rage&quot;&gt;Against the Dying Light&lt;/a&gt; which is a publication where I write under my pen name Rage—sometimes I also call the publication itself Rage because I agree it is quite a mouthful. And then there’s a short blurb about myself, and finally a list of my previous work experience.&lt;/p&gt;
&lt;p&gt;The publication pages and entry pages have also changed a little bit, but I will probably polish this more over the next days. Oh, and I added a reading time metric for each article!&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;internal-tooling&quot;&gt;Internal tooling&lt;/h2&gt;
&lt;section class=&quot;heading&quot; data-heading-rank=&quot;3&quot;&gt;&lt;h3 id=&quot;storybook&quot;&gt;Storybook&lt;/h3&gt;
&lt;p&gt;I added &lt;a href=&quot;https://storybook-astro.org&quot;&gt;Storybook Astro&lt;/a&gt; to the project to be able to prototype designs much quicker and so I can have a playground for experimental designs or components in development that the site isn’t using just yet.&lt;/p&gt;
&lt;p&gt;The setup was pretty straightforward, except for two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Styling with SCSS&lt;/li&gt;
&lt;li&gt;Fonts&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I did have to change the way I’m writing my styles if I want to write a story for an Astro component. Previously, in my &lt;code&gt;.astro&lt;/code&gt; files I have a &lt;code&gt;&amp;#x3C;style lang=&quot;scss&quot;&gt;&lt;/code&gt; for styles. This doesn’t work with Storybook Astro for some reason, although the documentation say it automatically injects styles (maybe only for vanilla CSS?). As a result, for any components I am developing via Storybook I need a separate &lt;code&gt;Component.module.scss&lt;/code&gt; file for styling.&lt;/p&gt;
&lt;p&gt;I also had to re-declare my &lt;code&gt;@font-face&lt;/code&gt;s in a &lt;code&gt;.storybook/preview.css&lt;/code&gt; file (it also imports my &lt;code&gt;global.scss&lt;/code&gt;) because my font variables are not resolving into anything otherwise.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.09.01</title><link>https://riyana.dev/changelog/2026-09-01/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-09-01/</guid><description>UI/UX improvements</description><pubDate>Tue, 01 Sep 2026 02:40:27 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;I changed the header, navigation, and footer so that it follows the theme color instead of reverting it. I added links to my social.&lt;/p&gt;
&lt;p&gt;The Table of Contents component now highlights which section is currently in view. It works for the most part, but in shorter write-ups like this one it has a tendency to only highlight the last intersection entry. I think it’s good enough for most scenarios in its use case.&lt;/p&gt;
&lt;p&gt;I added the &lt;code&gt;/tags/[tag]&lt;/code&gt; route to show all posts tagged with a certain tag. Each blog post will also contain a list of clickable tags (if it has any) above the headline.&lt;/p&gt;
&lt;p&gt;I also finally added a sitemap and &lt;code&gt;robots.txt&lt;/code&gt; to my website. Hooray?&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;internal-tooling&quot;&gt;Internal tooling&lt;/h2&gt;
&lt;p&gt;I fixed a small but terrible (and stupid) bug where my AT URIs start with &lt;code&gt;at:://&lt;/code&gt; instead of &lt;code&gt;at://&lt;/code&gt;. Don’t be like me.&lt;/p&gt;
&lt;p&gt;I also added support for uploading a cover image blob before uploading a document referencing the blob. Currently, this automatically retrieves the PNG from the OG images folder in the &lt;code&gt;dist&lt;/code&gt; output directory. This means at least &lt;code&gt;npm run build&lt;/code&gt; has to be called before running any of my internal AT Proto scripts.&lt;/p&gt;
&lt;p&gt;I also added a GitHub Action to run an AI PR Review every time a PR is opened. I’m using &lt;a href=&quot;https://www.robinreview.dev&quot;&gt;Robin&lt;/a&gt; with an &lt;a href=&quot;https://openrouter.ai/&quot;&gt;OpenRouter&lt;/a&gt; free API key. The model only reviews the git diff, so it doesn’t always have the full context of the changes. It could be more useful with big PRs where changes are contextful, unlike one-off changes or bug fixes where the bug isn’t immediately apparent.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.08.31</title><link>https://riyana.dev/changelog/2026-08-31/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-08-31/</guid><description>MDX to Markdown, Sass, and Takumi</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;p&gt;I decided to use Sass instead of vanilla CSS because it afforded me some tooling that would be perfectly useful for this site’s theming and design system needs. I was particularly interested in not having to re-declare CSS variables for &lt;code&gt;[data-theme=&quot;dark&quot;]&lt;/code&gt; and &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt; every time a new theme token is added. Typography is much better with Sass too.&lt;/p&gt;
&lt;p&gt;I also found out for the first time about &lt;a href=&quot;https://cube.fyi/&quot;&gt;CUBE CSS&lt;/a&gt;, which is already very similar to how I do my CSS initially but there are certain stylistic practices I wanted to adopt. I am slowly refactoring my styles to follow this methodology loosely.&lt;/p&gt;
&lt;p&gt;I changed the base font from Space Grotesk to Inter, and from &lt;code&gt;.ttf&lt;/code&gt; to &lt;code&gt;.woff2&lt;/code&gt;. Subsequently, I changed my OpenGraph image renderer from &lt;a href=&quot;https://github.com/vercel/satori&quot;&gt;Satori&lt;/a&gt; to &lt;a href=&quot;https://github.com/kane50613/takumi&quot;&gt;Takumi&lt;/a&gt; because Satori does not support &lt;code&gt;.woff2&lt;/code&gt; fonts.&lt;/p&gt;
&lt;p&gt;I added a &lt;code&gt;Scroll to top&lt;/code&gt; button for convenience.&lt;/p&gt;
&lt;p&gt;Oh, and I changed the header design again because I can’t decide on a proper header. Same goes with the footer. Both of these will very likely change in the future.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;internal-tooling&quot;&gt;Internal tooling&lt;/h2&gt;
&lt;p&gt;I added support for parsing MDX to simple Markdown when publishing articles to the Atmosphere since I am using the &lt;code&gt;at.markpub.markdown&lt;/code&gt; lexicon for my blog content and at the same time I needed custom components to present my content a certain way (like &lt;code&gt;PulloutQuote&lt;/code&gt; similar to Substack’s Pullout Quote).&lt;/p&gt;
&lt;p&gt;I removed &lt;code&gt;rkey&lt;/code&gt; from the blog post frontmatter schema (I was previously manually adding an &lt;code&gt;rkey&lt;/code&gt; every time the relevant blog post is published) and instead the update-document script retrieves this from the records file when needed. The records files gets automatically appended whenever a record is created.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>v2026.08.26</title><link>https://riyana.dev/changelog/2026-08-26/</link><guid isPermaLink="true">https://riyana.dev/changelog/2026-08-26/</guid><description>Added changelog, fix dynamic routing for future publications, and prettifying internal scripts</description><pubDate>Wed, 26 Aug 2026 14:55:47 GMT</pubDate><content:encoded>&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;website&quot;&gt;Website&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Added &lt;a href=&quot;https://riyana.dev/changelog&quot;&gt;&lt;code&gt;/changelog&lt;/code&gt;&lt;/a&gt; as a publication&lt;/li&gt;
&lt;li&gt;Configured dynamic routing to cover any additional publication in the future&lt;/li&gt;
&lt;li&gt;Added a Safari and Firefox workaround for &lt;code&gt;scroll-state&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;&lt;section class=&quot;heading&quot; data-heading-rank=&quot;2&quot;&gt;&lt;h2 id=&quot;internal-tooling&quot;&gt;Internal tooling&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Added &lt;code&gt;chalk&lt;/code&gt;, &lt;code&gt;boxen&lt;/code&gt;, &lt;code&gt;@inquirer/prompts&lt;/code&gt;, and &lt;code&gt;yocto-spinner&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Prettified scripts for publishing and updating AT Proto records&lt;/li&gt;
&lt;li&gt;Added a script to create a boilerplate blog file in Markdown&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item></channel></rss>