Misty greens, a soft serif and a full-bleed forest backdrop — goblog's forest theme.

893d8a8cda9d1ff5bed3e961957adb8c2d3f02643511702c4432831bbbe2e395Install it from your own goblog under Admin → Themes.
Misty greens, a soft serif and a full-bleed forest backdrop. This is the theme that ships compiled into goblog as forest, published as a directory theme so it can be installed and updated on its own.
From your goblog: Admin → Themes → Browse → Forest → Install, then Activate. Requires goblog 0.5.0 or newer.
Only the public-facing templates (header, footer, home, post, the page types, tag, search, error, login) and static/css/goblog.css. Admin and wizard pages render from goblog's default theme, so they keep up with new goblog releases automatically.
Edit the files under templates/ and static/, drop the folder into a goblog checkout as themes/installed/forest/ (or point THEMES_INSTALLED_DIR at its parent) and set the theme setting to forest. Templates are Go html/template; see docs/THEME_CONTRACT.md for the contract.
Tag vX.Y.Z and publish a GitHub release; the directory picks up the tag's archive. screenshot.png at the root is shown in the listing.
posts.html, presentations.html, projects.html and research.html. goblog never renders them (the Research page comes from the page templates), and three of them pointed at photos and a video goblog 0.15.0 no longer ships (goblog #677)._password_login partial) when the site has a password account, under the GitHub button. Until now a site with both GitHub login and a password admin showed only GitHub on this theme (goblog #666)._powered_by partial instead of being written out in the theme. It now links to goblog.live rather than the GitHub repository, and a site can hide it with the Show "Powered by goblog" setting under Admin → Settings → Appearance (goblog #644).footer.html references a template that does not exist./login/github; the theme no longer assembles the authorize URL in an inline script, where window.location went into redirect_uri unescaped, nor handles the ?code= that came back. goblog completes the exchange server-side against a state it minted, so a code obtained for one account can no longer be replayed into another visitor's browser (goblog #631, #637)..github_login_url, instead of being built with a template conditional in every theme (goblog #639).DOMContentLoaded, so the theme keeps working when goblog defers its CDN scripts (goblog 0.11.0, goblogplatform/GoBlog#624). Without this, posts lose syntax highlighting and the GitHub login button does nothing.href is set during parse with document.getElementById(...).href instead of jQuery, so the link is never briefly inert._search_results partial instead of rendering the post list itself, so plugin, theme and docs hits appear in the site search. The result colours the template used to set inline now come from goblog.css.Requires goblog 0.14.0 (unchanged).
Removed four templates goblog never renders: posts.html, presentations.html, projects.html and research.html. The Research page renders through the page templates, so it is unaffected. Three of the removed templates pointed at photos and a video that goblog 0.15.0 no longer ships (goblogplatform/GoBlog#677).
Nothing to do. No template goblog uses has changed.
Requires goblog 0.14.0.
The login page offers goblog's password form (the shared _password_login partial) under the GitHub button when the site has a password account, the admin account goblog 0.14.0's install wizard creates. Until now a site with both GitHub login and a password admin showed only GitHub on this theme (goblogplatform/GoBlog#666).
min_goblog_version is now 0.14.0, so the directory offers this only once your goblog is on that release. Upgrade goblog first.
Requires goblog 0.13.0 (unchanged from v1.4.0).
On a post page, the link sections and the comments sit on cards. The admin-only sections (Backlinks, Linked Posts, External Links, External Backlinks) and the comments were drawn straight onto the background photo, outside the card the post body sits on, where the text was hard to read. Each group now gets its own card (#10).
Nothing to do beyond updating the theme from Admin → Themes.
Requires goblog 0.13.0.
The footer's "Powered by goblog" line comes from goblog's shared _powered_by partial instead of being written out in the theme. It now links to goblog.live rather than the GitHub repository, and a site can hide it with the Show "Powered by goblog" setting under Admin → Settings → Appearance (goblogplatform/GoBlog#644).
min_goblog_version is now 0.13.0, the first release with the partial, so the directory offers this only once your goblog is on that release.
Upgrade goblog first. On anything older the theme's footer.html references a template that does not exist.
Requires goblog 0.12.0.
Signing in with GitHub is goblog's job now. The button is a plain link to /login/github; the theme no longer assembles the authorize URL in an inline script — where window.location went into redirect_uri unescaped — nor handles the ?code= that came back. goblog completes the exchange server-side against a state it minted, so a code obtained for one account can no longer be replayed into another visitor's browser (goblogplatform/GoBlog#631, #637).
The button's own URL comes from the server too, as .github_login_url, rather than being built with a nested template conditional in every theme (goblogplatform/GoBlog#639).
min_goblog_version is now 0.12.0, so the directory offers this only once your goblog is on that release — it will not install a theme whose sign-in button has no URL to point at.
Upgrade goblog first. On 0.12.0 an older version of this theme still signs in, because goblog restarts the flow when a callback arrives with no state (goblogplatform/GoBlog#640), but it gets there via a second round trip to GitHub. Update the theme rather than relying on that.
Prepares the theme for goblog 0.11.0, which loads its CDN scripts with defer (goblogplatform/GoBlog#624).
With defer, jQuery and highlight.js are not defined while the page is still parsing, so inline scripts that called them during parse would throw — no syntax highlighting, and a dead GitHub login button. Those calls now wait for DOMContentLoaded, which fires only after every deferred script has run.
footer.html — hljs.highlightAll()login.html — the ?code= exchange and the email login form wiringlogin.html — the GitHub button's href is now set with document.getElementById(...).href during parse, rather than through jQuery. It is never briefly inert, and that line no longer needs a library at all.Install this before upgrading to goblog 0.11.0. A DOMContentLoaded handler behaves the same whether or not the scripts are deferred, so this release also works on goblog 0.10.0 — min_goblog_version is unchanged.
On 0.11.0 without this release, posts lose syntax highlighting and the GitHub login button does nothing.
_search_results partial instead of rendering the post list itself, so plugin, theme and docs hits appear in the site search. The result colours the template used to set inline now come from goblog.css.First release: the forest theme as a directory theme — goblog's built-in forest templates and CSS, layered on the default theme, with the backdrop bundled. Requires goblog 0.5.0 or newer.
GoBlog
Powered by goblog v0.16.0