Write Freely

release

Today we're excited to release WriteFreely v0.11! This is a huge update that includes many fixes and improvements, built-in automatic, free SSL certificates, support for our command-line client, and more moderation controls for multi-user instances.

Besides all of these improvements, this update come just over a year after our very first release, v0.1. Keep an eye out for a future post about the last year in review — a lot has happened!

Get the lastest release now (you'll notice it's v0.11.1), or jump into the updates below.

Major Features

Automatic SSL certificates from Let's Encrypt (T542)

It's now even easier to start up a WriteFreely instance with free, automatic certificates from Let's Encrypt. With the application facing the public internet (i.e. not behind a reverse proxy), you can set a few configuration values to have WriteFreely generate the certificate for you.

For new instances, choose Production, standalone > Secure (port 443), auto certificate during the interactive setup process.

For existing instances, set autocert = true and tls_cert_path = certs (see config documentation for more information).

WriteFreely Command-Line Interface

We've released our first official WriteFreely client along with this version: wf-cli! This is a simple command-line-based tool for publishing to one or many WriteFreely instances. It's perfect for tech-savvy users who don't want to leave their terminal window or anyone looking to build WriteFreely publishing into their desktop writing workflow — and it's available for Windows, Mac, Linux, and anywhere else you can build a Go application.

User-Facing Changes / Fixes

  • Prevent transliterated slugs from exceeding character limit (#137)
  • Don't consider posts unpublished when they have a title (#138)
  • Blog 404 pages are now styled like the rest of the blog (T493)
  • Fix missing hostname when publishing via API and support WriteFreely CLI (#144)
  • Fix various minor issues with single-user instances (#145)
  • Support <audio> HTML element (#147)
  • Fix future pinned posts showing in navigation (#158)
  • Fix false logged-in state on failed login
  • Fix title attribute getting stripped on <abbr> elements (#184)
  • Add helpful instructions on invite links when logged in (T690)
  • Publish to user's blog by default, instead of Drafts (T697)
  • Fix blog URLs in CSV export (#205)
  • Include Reader link in site-wide navigation while logged in
  • Make header navigation on user and non-authenticated pages consistent

Minor Changes

  • Fix go-sitemap-generator overriding GOMAXPROCs (#86)
  • Log server software and version on startup (#168)
  • Fix crash on some duplicate ActivityPub follows (#159)

Admin-Facing Changes

  • Support setting a default visibility for all blogs (T675, #148)
  • Support toning down WriteFreely promotion (T676, #149)
  • Support using an alternative editor template (T677)
  • Support customizing Reader page (T684)
  • Support resetting user password from web-based UI (T695)
  • Fix tar bomb on install (#160)

Developer-Facing Changes

  • Add make build-arm7
  • Remove dependency on github.com/gogs/gogs/pkg/tool (#182)
  • API endpoints will now honor Accept: application/json headers (not only Content-Type) (#178)

Experimental / In-Progress Work

User Silencing (T661)

Now instance admins can silence problematic users to make their writing inaccessible to the world and prevent further publishing. This strikes a balance between preventing further abuse and making reversible moderation decisions, as users will still be able to log in to their account and access their data.

This is still experimental, as it needs more extensive testing. Please report any bugs you find and give us any feedback you have on this feature!

Reader-centric instances (T681, #157)

As part of our new Write.as for Teams service, we're experimenting with an alternative configuration for admins that want their site to be more focused on the collective work of its writers, rather than on individuals. It's meant for businesses, organizations, and institutions that want to create more of a shared blog than provide individual blog hosting. It sets the Reader view as the home page, uses blog templates with global navigation, and has hashtags search across all public blogs.

This functionality is not at all finalized, and subject to change drastically without notice. We don't recommend enabling this in your configuration unless you're merely curious or want to provide feedback (which we highly encourage!).

Upgrading from v0.10.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

Now make sure your database is backed up, and update it with writefreely --migrate.

No additional steps are needed to upgrade from v0.10.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

If you are running a custom build, note that there were style changes in this release. Run make ui to generate the latest stylesheets.

Contributors

Thanks for contributing to this release!

@robjloranger @OddBloke

#WriteFreely

Today we're happy to release WriteFreely v0.10, one of our largest updates yet.

This is a pretty important release for us. It brings together improvements driven by our thoughtful community and features that'll help us take the next step into our future — namely, one where WriteFreely helps organizations and groups effortlessly communicate via simple, open source tools.

For anyone running WriteFreely, this means more control over your community, starting with more customization in this version and better moderation in the next. Really, this is just the start. Let's jump in.

Major Features

Fully Private Instances (T576)

Communities looking for more privacy can now start up WriteFreely instances meant only for internal use. Just enable the private config value to make all blogs and content accessible only to authenticated users in your instance.

NOTE: this is a breaking change! This changes behavior for existing instances with the private config value already set to true. If you have it set, you should verify that the new behavior is what you want.

Landing Page Customization (T565, T574)

Now admins have two new ways to customize their multi-user instance:

Editing your landing page. Now you can change the content of your landing page from the Admin dashboard, including the banner text to the left of the signup form and the optional text below.

Changing the landing URL. For anyone who doesn't want to use their normal landing page — such as with closed or invite-only instances — this lets you set the URL that unauthenticated users go to when they first come to your site. For example, you might send them to your About page (/about) or your public Reader (/read).

User-Facing Changes / Fixes

  • Add Lithuanian translation (writeas/web-core#3)
  • Fix changing RTL setting back to LTR from web UI (#103, #110)
  • Fix federation with pubgate (#100, #111, #116)
  • Include pinned posts in JSON export (#112)
  • Include post title in exported txt files (#114)
  • Fix same-size 1st- and 2nd-level headings on blog index (#82)
  • Fix post deletion logic needed for WriteFreely CLI (#117)
  • Fix C syntax highlighting (#124)
  • Fix default background-color not set (#132)
  • Fix inconsistent naming / icons on post metadata page

Admin-Facing Changes

  • Landing URL is now editable (T574)
  • The private config option now makes an instance readable only by registered, authenticated users (T576)
  • New upgrade script
  • The --config command now automatically initializes the database, removing the need for --init-db during setup
  • Specify which part of the app configuration you want to edit with the new --sections flag, e.g. writefreely --config --section="app db server"
  • Landing page is now customizable (T565)

Developer-Facing Changes

  • Fix lessc installation on macOS and CentOS (#97, #99)
  • MathJax library is now a git submodule instead of directly included
  • The writefreely.Serve() func has been split out into multiple functions
  • Flag handling has moved out of the writefreely pkg to cmd/writefreely/main.go

Upgrading from v0.9.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.9.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

If you are running a custom build, note that there were style changes in this release. Run make ui to generate the latest stylesheets.

Contributors

Thanks to everyone who contributed to this release!

@dariusk @gytisrepecka @robjloranger @joyeusenoelle @sandrockcstm @qwazix @mrvdb

#WriteFreely

Today's non-critical release fixes issues with new WriteFreely installations, introduced in the previous release (v0.9.0).

Admin-Facing Changes

  • Fix V2 migrations not run on a new instance (#92)
  • Fix Docker build with Go Modules enabled (#95)

Upgrading from v0.9.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.9.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks for contributing to this release!

@kaiyou

#WriteFreely

Today we released WriteFreely v0.9, featuring the past few months of fixes and improvements.

User-Facing Changes / Fixes

  • Fix hash symbols (#) wrongly recognized as hashtags inside code blocks (#6)
  • Hashtags without spaces between them are now properly parsed
  • Fix IsValidUsername check when PagesParentDir isn't current dir
  • Fix code blocks not highlighting when an invalid language is given (#81)
  • Strip HTML from meta descriptions (#83)
  • Add missing Apple touch icons (#77, #78)
  • Fix future-dated posts being immediately federated when moving from Draft to blog (#76)
  • Fix excessive space between paragraphs inside blockquotes

Minor Changes

  • Navigating to a non-existent invite ID now shows “Page not found” instead of “Server error”
  • On Export page: “zip” option now shows “txt” instead
  • Remove unused references to files.writeas.org resources

Admin-Facing Changes

  • Improve admin navigation
  • Move “About” and “Privacy” page editing off the dashboard to a new dedicated section
  • Add the ability to change “About” and “Privacy” page titles
  • Add Admin Dashboard link in backend navigation

Upgrading from v0.8.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

Now make sure your database is backed up, and update it with writefreely --migrate.

No additional steps are needed to upgrade from v0.8.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

If you are running a custom build, note that there were style changes in this release. Run make ui to generate the latest stylesheets.

Contributors

Thanks for contributing to this release!

@mrvdb

#WriteFreely

Today's #bugfix release includes an important fix for the install process, as well as a fix for anchor links.

User-facing Fixes

Install Fixes

  • Admin account isn't created correctly with —config (#71)
  • Use correct go get command in documentation

Admin-Facing Changes

  • Fix —create-user usage error message

Trivial Changes

  • Fix Write.as link in README

Upgrading from v0.8.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.8.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks for contributing to this release!

@mrvdb @SamWhited


P.S. Matt is at #FOSDEM in Brussels this weekend! Say hi and grab a WriteFreely sticker!

#WriteFreely

Our tenth release features a few major milestones we've been aiming for for a while: a smoother upgrade process, and a user invitation system.

Features

User Invites (T556)

Now it's even easier to run a private / invite-only community, with user invites. Admins have a new user_invites setting that can enable invite link generation for all users, admins only, or no users at all (the default). If enabled, users can create invite links to let others sign up for your WriteFreely instance, even if public registration is closed. Invite links can each be set to expire, or optionally have a maximum number of uses.

User-Facing Changes / Fixes

  • Fix spacing in sublists (#27)
  • Optimize web font loading (#65)

Admin-Facing Changes

  • Fixed Docker build (#57)
  • Support automated database migration with writefreely --migrate (T509)
  • Support configuring resource directories (T560 / #63)

Upgrading from v0.7.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

Now make sure your database is backed up, and update it with writefreely --migrate.

No additional steps are needed to upgrade from v0.7.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

If you are running a custom build, note that there were style changes in this release. Run make ui to generate the latest stylesheets.

Contributors

Thanks to everyone who contributed to this release!

@kaiyou @nkoehring

#WriteFreely

Today's #bugfix release is a non-critical update for anyone currently running WriteFreely — you can skip it if you haven't been affected by any of the issues below.

You'll want to upgrade to this version if you're running WriteFreely on Windows, as it fixes a server error that prevents a blog's customize page from rendering (#61). With this fix, WF should be stable enough to run on Windows.

You'll also want to upgrade if you weren't able to successfully configure a single-user blog, whether backed by MySQL or SQLite, due to a database error (#59).

Fixes

  • Fix blog customize page not rendering on Windows (#61)
  • Initialize database during config step for single-user instance (#59)

Upgrading from v0.7.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.7.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

#WriteFreely

Happy New Year! We took some time over the holiday season to relax a bit, slow down, and pause the weekly updates. But our first release of 2019 is here, featuring plenty of bug fixes (especially for SQLite users) and more admin tools as we prepare for our v1.0 launch.

Speaking of which — if you run your own instance, we're looking for your feedback on what features should make it into v1.0! We want to make sure we include everything you need to run your personal blog or writing community, so let us know over on the forums. Now for the updates:

Features

User Management

  • Admin user creation. Admins can now create a normal user from the command-line with: writefreely --create-user username:password
  • Users List (T553). Get an overview of all the users in your community with the new user list for admins. This is the foundation for future moderation features.

Changes

  • Use an en dash in the title of posts that are written in German, instead of em dash (#1)
  • Now you can build writefreely without SQLite support. To include support, compile with the sqlite build tag (this is the default with all make commands)
  • Blog names starting with a number now have an ActivityPub avatar

Fixes

  • Prevent creating users with invalid usernames via command-line (#49)
  • Fix metadata update for draft posts on single-user instances (#50)
  • Fix “Database user or password not set.” error when starting SQLite-backed instances (#54)
  • Fix user creation process hanging on SQLite-backed instances (#53)
  • Fix tagged post query on SQLite-backed instances (#55)
  • Fix ActivityPub follows on SQLite-backed instances (#56)

Upgrading from v0.6.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.6.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

Some style changes were made in this version. If you are running a custom build / fork, run make ui to generate the latest stylesheets.

Contributors

Thanks for contributing to this release!

@geekgonecrazy

#WriteFreely

Today's release features two major additions, one to make installation easier, and the other to make discovery easier. Let's jump in.

Features

SQLite support (T529)

You no longer need MySQL / MariaDB to store data for your instance! Just select SQLite during the configuration process to use it instead of the MySQL driver.

Reader / local timeline (T554)

Take a break from writing to see what others on your instance have written! Admins can now turn on the Local timeline option in the Admin panel ([app] local_timeline in config.ini) to enable this for both writers on your instance and the wider public. The local timeline functions just like Read Write.as — it includes an RSS feed, and is opt-in. Writers can start publishing their work on the feed by going into their blog settings and choosing the Public visibility option.

More changes

  • Ability to create admin user from the command-line with: --create-admin username:password (T544)
  • Specify non-default configuration file to use with various commands via new -c [filename] flag
  • Host highlight.js and MathJax locally, instead of on CloudFlare (T551)

Upgrading from v0.5.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.5.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks to everyone who contributed to this release!

@BenOvermyer @kaiyou

#WriteFreely

This week's release brings more admin control via the web UI and new ways to configure the application. It also finishes up support for syntax highlighting.

Features

  • Configure bind address with new bind configuration value (#38, #5)
  • Syntax highlighting support for all programming languages supported in highlight.js (#39)
  • Modify NodeInfo description with new site_description config value
  • Change admin values via the web admin UI (T541)

Fixes

  • Fix metadata editing in single-user mode (#40)
  • Always show stats on About page if public_stats enabled

Upgrading from v0.4.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.4.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks for contributing!

@mrvdb