<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Changelog on HugoKit</title><link>https://hugokit.com/changelog/</link><description>Recent content in Changelog on HugoKit</description><generator>Hugo</generator><language>en</language><copyright>2026</copyright><atom:link href="https://hugokit.com/changelog/index.xml" rel="self" type="application/rss+xml"/><item><title>0.2.0</title><link>https://hugokit.com/changelog/0.2.0/</link><pubDate>Thu, 23 Jul 2026 00:00:00 +0200</pubDate><guid>https://hugokit.com/changelog/0.2.0/</guid><description>&lt;p&gt;HugoKit no longer changes anything without a diff – and everything it changes can be undone.&lt;/p&gt;
&lt;h2 id="new"&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Snapshots:&lt;/strong&gt; before HugoKit writes to any file in your site – a preflight fix, a config save, a content edit, a theme switch – it keeps a copy of the file as it was. If the copy can&amp;rsquo;t be taken, the write doesn&amp;rsquo;t happen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-file diffs:&lt;/strong&gt; every change is captured at write time – read it in the new Snapshots sheet (in the site&amp;rsquo;s ⋯ menu), or copy it out&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two-level undo:&lt;/strong&gt; restore a whole operation, or a single file – and restoring snapshots first, so an undo can itself be undone&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-site snapshot settings:&lt;/strong&gt; turn the layer off for a site, or set how many versions of each file to keep&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Front matter inspector:&lt;/strong&gt; beside your content – edit title, description, date, draft, tags and categories in a panel next to the file, with tag and category suggestions drawn from the site&amp;rsquo;s own taxonomies. It edits the same text as the Raw tab, so nothing you didn&amp;rsquo;t touch is reformatted&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taxonomy overview:&lt;/strong&gt; every tag and category across the site, with duplicate spellings flagged – and Rename changes one everywhere in a single pass, taken as one snapshot you can undo in one go&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git URL import:&lt;/strong&gt; paste the repository, choose where to clone it, and HugoKit clones and adds the site in one step. A GitHub token is only ever attached to github.com URLs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archive a site:&lt;/strong&gt; hide it from the sidebar, the counts and All Sites without touching a single file, and bring it back from Settings when you want it again&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sidebar groups:&lt;/strong&gt; collapsible folders of your own, so Clients, Personal and the ones you rarely open aren&amp;rsquo;t all in one list&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build flags per site:&lt;/strong&gt; choose Hugo&amp;rsquo;s build flags (garbage collection, minify and a build environment) and see the exact command line on the Deploy page before it runs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish to All Targets:&lt;/strong&gt; one button on the Deploy page when a site has two or more active destinations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-target status:&lt;/strong&gt; each deploy target now shows its own status and history, not just the site as a whole&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target health:&lt;/strong&gt; after a successful publish HugoKit probes the live URL, and Check if Live in the target&amp;rsquo;s ⋯ menu runs the probe on demand&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git state on Deploy:&lt;/strong&gt; the Deploy page now shows the site&amp;rsquo;s git state before you publish – uncommitted work, a branch or remote that doesn&amp;rsquo;t match what&amp;rsquo;s being pushed – and warns when a GitHub Pages publish would send something other than what you see&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecation inbox:&lt;/strong&gt; Hugo&amp;rsquo;s deprecation notices are collected into one list on the dashboard – each notice once, with a count of how often it fired&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy Diagnostics:&lt;/strong&gt; in the Help menu, one click gathers a sanitised support report: HugoKit and Hugo versions, macOS, the settings that matter and the latest log, with no credentials or personal paths in it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crash reports:&lt;/strong&gt; caught on the next launch and shown as a readable report you can open and send yourself. No telemetry, nothing phoned home&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improved"&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page bundles:&lt;/strong&gt; a leaf bundle shows as a single post with its images, not a folder of loose files, and the inspector lists the bundle&amp;rsquo;s resources with thumbnails&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallel publishing:&lt;/strong&gt; publishing to several targets at once builds each to its own folder and uploads them in parallel – every target reports its own result, and the run is timed by the slowest, not the sum&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic lastmod:&lt;/strong&gt; a page&amp;rsquo;s lastmod is updated on save, but only when the field is already there, so nothing new is added behind your back&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starter template:&lt;/strong&gt; now has an archive, a colophon, sidenotes, a timeline archive view, a ⌘K search palette, a sharing image drawn per page and the whole site as llms.txt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redesigned window:&lt;/strong&gt; one warm surface with the sidebar and content as floating panes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Background surface:&lt;/strong&gt; now a choice of Flat, Warm Gradient, Quartet or Liquid Glass, set in Settings&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fixed"&gt;Fixed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dotfiles:&lt;/strong&gt; FTP/SFTP publish no longer skips them – .htaccess, .well-known and .nojekyll upload like everything else; only .DS_Store junk is filtered&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Symlinked paths:&lt;/strong&gt; FTP smart sync compares files correctly when the project path goes through a symlink&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub sign-in:&lt;/strong&gt; the dialog named the wrong app – connecting to GitHub asked you to authorise &amp;lsquo;hugodex&amp;rsquo;, a leftover from the project&amp;rsquo;s earlier identity. It reads HugoKit now&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Config diffs:&lt;/strong&gt; changing one field no longer lights up every other string field in Review Changes – a quote-normalisation quirk made untouched lines look changed. You see only what you touched&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template Preview:&lt;/strong&gt; single.html no longer reloads in a loop – a missing trailing slash was sending Hugo into a redirect on every refresh&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; macOS 26 (Tahoe) or later&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>0.1.0</title><link>https://hugokit.com/changelog/0.1.0/</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0200</pubDate><guid>https://hugokit.com/changelog/0.1.0/</guid><description>&lt;p&gt;The first release of HugoKit.&lt;/p&gt;
&lt;h2 id="new"&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Every Hugo site in one window – add sites one by one, or point HugoKit at a folder and it finds them itself&lt;/li&gt;
&lt;li&gt;One-click preview: start and stop Hugo&amp;rsquo;s server, with toggles for drafts, future and expired content&lt;/li&gt;
&lt;li&gt;Live logs translated into plain language, and a monospace preview of the exact command before it runs&lt;/li&gt;
&lt;li&gt;Publish to GitHub Pages and your own server over FTP/SFTP – one target or several per site&lt;/li&gt;
&lt;li&gt;Preflight before anything ships: broken links, subpath traps, config and asset issues – every fix shown as a diff first&lt;/li&gt;
&lt;li&gt;Create new sites from the HugoKit Starter template or a blank Hugo site, git init included&lt;/li&gt;
&lt;li&gt;Site health (⇧⌘H): a score per site – front matter checks, content stats, build trend and the issues behind the number&lt;/li&gt;
&lt;li&gt;Template preview (⇧⌘T): every layout file in your theme, rendered live&lt;/li&gt;
&lt;li&gt;Content overview: pages, sections, word counts and a front matter health check per site&lt;/li&gt;
&lt;li&gt;Config editor – visual or raw TOML, with a diff preview before anything is saved&lt;/li&gt;
&lt;li&gt;Hugo Reference: searchable Hugo documentation built into the app&lt;/li&gt;
&lt;li&gt;Menu bar extra with server controls, per-site emoji, and shortcuts for the daily moves (⌘P, ⇧⌘P, ⇧⌘H, ⇧⌘T)&lt;/li&gt;
&lt;li&gt;HugoKit finds your Hugo install automatically – and if there isn&amp;rsquo;t one, it installs it for you&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Free – no account, no cloud; deploy credentials live in the macOS Keychain&lt;/li&gt;
&lt;li&gt;Requires macOS 26 (Tahoe) or later&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>0.3.0</title><link>https://hugokit.com/changelog/0.3.0/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0200</pubDate><guid>https://hugokit.com/changelog/0.3.0/</guid><description>&lt;p&gt;0.3.0 keeps every publish and protected file write tied to the site and files you chose – and adds a deliberate way to order content without rewriting the rest of its front matter.&lt;/p&gt;
&lt;h2 id="new"&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Editable section landing pages:&lt;/strong&gt; based on user feedback, root, nested and deeply nested &lt;code&gt;_index.*&lt;/code&gt; branch-bundle pages now appear in Content with an explicit section label and open in the same Preview, Raw and structured front matter editor as other pages. Leaf-bundle &lt;code&gt;index.*&lt;/code&gt; files remain a distinct page type&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom order:&lt;/strong&gt; based on user feedback, choose one content section, then drag pages or use the row buttons to arrange it. HugoKit validates the complete section, writes predictable front matter weights only to changed pages, and captures them as one undoable snapshot. If any page cannot be edited safely, the whole reorder stops; if a disk write fails partway through, touched files are restored&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Front matter weight editing:&lt;/strong&gt; when a page already has a &lt;code&gt;weight&lt;/code&gt;, the structured editor now shows and edits it directly without adding the field to unweighted pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing tags and categories at a click:&lt;/strong&gt; the &lt;code&gt;+&lt;/code&gt; buttons beside Tags and Categories open the values already used across the site as selectable pills. Larger collections are searchable, selected values disappear from the picker, and manual entry still works&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improved"&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build trends survive a restart:&lt;/strong&gt; each site&amp;rsquo;s recent successful and failed
builds are saved with the site, keep the latest 50 entries and start empty
for sites created before build trends existed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editors stop before overwriting external work:&lt;/strong&gt; Content and Configuration remember a file&amp;rsquo;s identity, timestamp and bytes when you open it. If another editor changes the file, HugoKit writes nothing and offers Reload File, Compare or Save Copy instead. Structured configuration edits keep their surgical local candidate when you compare or save a copy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Front matter keeps text as text:&lt;/strong&gt; values that look like YAML booleans, numbers, dates or comments are quoted when edited, while line endings and untouched front matter stay intact&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template previews stay local:&lt;/strong&gt; links, redirects and new windows remain in the preview only for its exact &lt;code&gt;localhost&lt;/code&gt; origin. External web links open in the system browser, while other local ports and custom schemes are blocked&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Site creation completes atomically:&lt;/strong&gt; Blank and HugoKit Starter sites are built in private staging and appear in the selected folder only after Hugo, template installation and all scaffold writes succeed. GitHub Pages &lt;code&gt;baseURL&lt;/code&gt; edits now preserve TOML comments and unknown keys and create a recovery snapshot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FTP credentials and snapshots have deliberate lifecycles:&lt;/strong&gt; a tested FTP password is only saved when you finish the wizard, and it remains attached to its deploy target rather than a mutable endpoint. Removing a target, site or all local settings now tells you exactly what remains; passwords and snapshots stay by default, while a separate purge choice removes them together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preflight validates the published artifact:&lt;/strong&gt; local preflight, manual builds and FTP or Built site branch publishing now share target-specific Hugo arguments, an isolated &lt;code&gt;.hugokit/build/&amp;lt;target-id&amp;gt;&lt;/code&gt; destination and one per-project build gate. Local deploys consume the validated artifact directly, so the user&amp;rsquo;s &lt;code&gt;public/&lt;/code&gt; folder stays untouched and preflight cannot approve a different build from the one that ships. GitHub Actions continues to build its artifact remotely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explicit GitHub Pages publishing:&lt;/strong&gt; each target now chooses GitHub Actions or Built site branch. Actions pushes the full project with a HugoKit-managed workflow; Built site branch builds locally and replaces only &lt;code&gt;gh-pages&lt;/code&gt; without pushing the source branch. Existing Local Build + Full Project targets pause for an explicit choice instead of silently falling back&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow status stays with its publish:&lt;/strong&gt; after an Actions push, HugoKit matches the exact commit SHA, target branch and managed workflow path before accepting a run. It pins that run ID for status and jobs, and reports a separate timeout when no matching run appears&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FTP sync stays with its endpoint:&lt;/strong&gt; manifests now include protocol, canonical host, port, username and remote root, so two targets that share a host and path cannot reuse each other&amp;rsquo;s sync state. Delete failures remain pending for the next publish, while already missing remote files are treated as success&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish stays with its starting site:&lt;/strong&gt; the site, project, targets and run identity are captured before preflight and carried through build, credentials, history, Git status, notifications and target health, even if you select another site while it runs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancellation has exact ownership:&lt;/strong&gt; every publish target owns its own Hugo, FTP/SFTP and Git child-process handles under the immutable run identity, so parallel targets cannot replace each other&amp;rsquo;s process state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External servers remain externally owned:&lt;/strong&gt; when HugoKit finds a server started in Terminal or another tool, site removal, factory reset and quitting release HugoKit&amp;rsquo;s monitoring without stopping that process. Choosing Stop or Restart in HugoKit clearly identifies the external server and asks for confirmation before termination&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub credentials stay on GitHub:&lt;/strong&gt; push and pull attach the token only to the canonical &lt;code&gt;github.com&lt;/code&gt; HTTPS host, reject other hosts and do not follow redirects to somewhere else&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git locks stay owned:&lt;/strong&gt; HugoKit no longer deletes &lt;code&gt;.git/index.lock&lt;/code&gt; and retries merely because Git mentions a lock. A running Git operation in Terminal, Xcode or another Git app is left untouched, and HugoKit stops with a clear explanation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protected writes fail closed:&lt;/strong&gt; HugoKit resolves symlinks before a guarded write and rejects the whole operation if any destination escapes the site&amp;rsquo;s canonical root&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exact preflight snapshots:&lt;/strong&gt; an auto-fix now carries the full project-relative path for every file it will touch, so its preview, snapshot and applied change describe the same set&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preflight from the site menu:&lt;/strong&gt; Preflight Check now has a named item in the site&amp;rsquo;s ⋯ menu as well as its existing keyboard shortcut&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Front matter stays intact during reordering:&lt;/strong&gt; YAML and TOML keep their line endings, body, comments, unknown fields and existing weight-line formatting. New TOML root weights are placed before tables instead of accidentally becoming table values&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complete content scans:&lt;/strong&gt; Custom order accounts for every built-in Hugo content format and deep section path, so an unsupported page cannot remain hidden while the visible subset receives new weights&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native-feeling reordering:&lt;/strong&gt; drag from anywhere on a page row, keep the full-row preview and place it at the insertion line above or below another row. Dragging uses the same deterministic command path as the accessible up/down buttons&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ascending or descending sorting:&lt;/strong&gt; Date, Title and Custom order share an explicit ASC/DESC control. Dates switch between oldest and newest first, titles between A–Z and Z–A, while undated pages stay at the bottom. Custom reordering in either direction writes normalized weights that return in the same visible sequence after a rescan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faster large sections:&lt;/strong&gt; content discovery traverses each directory once, reuses parsed front matter and keeps scanning work off the main actor. A fixed 500-page benchmark now guards scan, sort and batch-write budgets&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable asynchronous refreshes:&lt;/strong&gt; a late content scan is ignored after cancellation or a site switch instead of replacing the current site&amp;rsquo;s rows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Section-safe custom ordering:&lt;/strong&gt; section landing pages stay outside their child section&amp;rsquo;s draggable rows, scanner race checks, snapshots and weight write-set, so their bytes and any section-level weight remain unchanged during reorder&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fixed"&gt;Fixed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Switching sites while a publish is waiting no longer lets the run continue with the newly selected site&amp;rsquo;s project, destination or post-publish state&lt;/li&gt;
&lt;li&gt;Cancelling a publish no longer resets the UI to idle or reports &lt;code&gt;CancellationError&lt;/code&gt; as a deploy failure. All live children in the run—including descendants of command wrappers—are stopped, target and run status end as cancelled, and no success or failure notification is sent&lt;/li&gt;
&lt;li&gt;Existing-server detection no longer misses the same project merely because one copy of its folder URL has a trailing slash&lt;/li&gt;
&lt;li&gt;Content scans no longer follow symlinked files or folders outside the content root&lt;/li&gt;
&lt;li&gt;Auto-fixes for nested config and template files no longer reduce the path to a basename or snapshot a lookalike file at the site root&lt;/li&gt;
&lt;li&gt;Ambiguous, quoted or duplicate root weight keys no longer risk receiving a second semantic weight during batch reorder&lt;/li&gt;
&lt;li&gt;A visible drag preview can no longer take the old provider-only path that failed to deliver an accepted drop on macOS; custom order now uses typed SwiftUI drag destinations&lt;/li&gt;
&lt;li&gt;Tags and categories cannot be added twice merely by using different letter casing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; macOS 26 (Tahoe) or later&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>