<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Upgrades on vanityURLs</title><link>https://vanityurls.link/en/tags/upgrades/</link><description>Recent content in Upgrades on vanityURLs</description><generator>Hugo</generator><language>en-CA</language><lastBuildDate>Sun, 31 May 2026 20:04:27 -0400</lastBuildDate><atom:link href="https://vanityurls.link/en/tags/upgrades/index.xml" rel="self" type="application/rss+xml"/><item><title>Edit custom, leave defaults boring</title><link>https://vanityurls.link/en/blog/keeping-vanityurls-upgradable-with-custom-overrides/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/keeping-vanityurls-upgradable-with-custom-overrides/</guid><description>&lt;p&gt;The fastest way to ruin a small self-hosted tool is to edit upstream files in place.&lt;/p&gt;
&lt;p&gt;It works once. Then the next upgrade asks a dull question with expensive consequences: which files are product defaults, which files are local decisions, and which files are generated output?&lt;/p&gt;
&lt;p&gt;vanityURLs avoids that by keeping three layers:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Layer&lt;/th&gt;
 &lt;th&gt;Owner&lt;/th&gt;
 &lt;th&gt;Rule&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;defaults/&lt;/code&gt; and &lt;code&gt;scripts/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;product&lt;/td&gt;
 &lt;td&gt;refresh from upstream&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;instance&lt;/td&gt;
 &lt;td&gt;review and preserve&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;build/&lt;/code&gt; and generated &lt;code&gt;src/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;build&lt;/td&gt;
 &lt;td&gt;replace freely&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That boundary is not bureaucracy. It is what keeps upgrades from becoming archaeology.&lt;/p&gt;</description></item><item><title>You do not need to restart from scratch</title><link>https://vanityurls.link/en/blog/upgrading-without-restarting-from-scratch/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/upgrading-without-restarting-from-scratch/</guid><description>&lt;p&gt;When a tool is still moving quickly, the tempting but exhausting instinct is to start over each time the installer improves. Delete the instance, clone again, answer the questions again, copy custom files back, hope nothing subtle was lost.&lt;/p&gt;
&lt;p&gt;That is not the intended vanityURLs workflow.&lt;/p&gt;
&lt;p&gt;An instance is designed to keep its local identity while the product layer improves around it. Your links, schedules, policies, branding, legal pages, Cloudflare settings, and helper configuration live in the instance layer. The upstream product files live in &lt;code&gt;defaults/&lt;/code&gt; and &lt;code&gt;scripts/&lt;/code&gt;. The generated output can be rebuilt.&lt;/p&gt;</description></item></channel></rss>