WriteFreely

writefreely

Our latest version of WriteFreely is out now! This is a minor update, but with some important bug fixes, especially around navigation and federation.

Note: The official release binary will not work on older systems, e.g. Ubuntu 18.04 or earlier. See #1064 for more information and a way to work around it.

Download v0.15.1 now, or read on to see what’s new in this version.

Read more...

Our next release is here, with a ton of improvements and fixes from the last year!

Download v0.14.0 now, or read on to see what’s new in this version.

Read more...

After a long break, our next release is finally here! This includes some important bugfixes, plus minor improvements and updates.

Download v0.13.2 now, or read on to see what’s new in this version.

Read more...

This release fixes issues that were mostly introduced in our last release, v0.13. Most critically, it fixes a database lock bug that caused SQLite-backed instances with the Reader enabled to become unresponsive — so we recommend that admins of these instances absolutely upgrade to this version.

Download v0.13.1 now, or read on to see what’s new in this version.

Read more...

Hello again! 👋 After a long absence, we’re pleased to release WriteFreely v0.13 today! This one includes a new rich editor, generic OAuth support, Web Monetization support, and a ton of small improvements. Besides that, this is one of our last releases before version 1.0!

Download v0.13 now

Read more...

This summer we largely took a break from major work on WriteFreely to turn our focus to something new: native apps for the Apple ecosystem. Now, after developing in the open, building a Swift library, writing about our adventures with SwiftUI, and opening the app to beta testers, we're excited to finally release WriteFreely for iOS v1.0!

You can buy it now for $14.99 on the App Store (requires iOS 14 or later), and find the GPL-licensed source code on GitHub.

Read more...

We're excited to release WriteFreely v0.12, our biggest update yet! This version comes with a ton of great features for communities and organizations, and officially moves WriteFreely into the beta stage — just a few steps away from version 1.0.

Besides our new features and performance improvements, this update also includes plenty of contributions from new members of the community! Thank you to everyone who helped out, whether you contributed code or tested our release candidate!

Major Features

ActivityPub Mentions (T627)

Enable more interaction with your posts by mentioning users on Mastodon, Pleroma, and other ActivityPub platforms! Users on instances with federation enabled can now insert @handle@their.instance to mention someone. You might use this to write a long response to someone in the fediverse, or even mention your own microblogging account, so that replies to your blog post also notify you there, where you can continue the conversation.

New Admin Dashboard (T694)

We've redesigned the admin dashboard to be a little easier to navigate, and generally more user friendly. It now includes an overview of stats for your instance, dedicated pages for app settings and monitoring, and more details on what each configuration option does. We've also made it easier for admins to get to the “Invite people” page.

OAuth 2.0 Support (#225)

Now you can authenticate with your WriteFreely instance via OAuth! This is perfect for WriteFreely communities that are set up to accompany other platforms. We support three providers so far: GitLab, Slack, and Write.as.

Reader Filter Updates (#269)

Now the Reader will show the most recent 250 public posts, instead of only the last three months of public posts. This should be much more fitting for most WriteFreely instances.

Plain Text Import

Now you can import plain text files to publish them as posts on WriteFreely.

User-Facing Changes / Fixes

  • Show dates on blog posts (T669, #276)
  • Show post publish dates in local time (T670)
  • Fix HTML entities in Draft descriptions (#248)
  • Add Drafts explanation (#248)
  • Fix post deletion on Pleroma (#233)
  • Make user management + Reader pages consistent in their design (#262)
  • Fix image metadata extraction (#266)
  • Add syntax highlighting aliases: js, jsx, html (#270)
  • Lightly style tables in posts (#194)
  • Send users to Login page by default on private instances (#274)
  • Fix pagination on last page of blogs using “Novel” display format (#272)
  • Show 503 Service Unavailable page when server under high load (#284)
  • Remove extraneous @context fields to fix Friendica federation (#299)

Minor Changes

  • Require authentication for accessing editor (#245, #255)
  • Fix 500 on invite links with invalid characters (#250)
  • Tell search engines not to index invite URLs (#268)
  • Hide Reader footer link when unauthenticated on private instances (#274)

Admin-Facing Changes

  • Support Varnish use on ActivityPub endpoints (#180)
  • Fix automatic certificates (#228)
  • Automatically check for WriteFreely updates (T572) — enable with update_checks = true in config
  • Support account deletion via command-line for non-federated instances (T319 / #202)
  • Support sign in via Write.as
  • Support sign in via Slack (T710)
  • Support sign in via GitLab (#277)
  • Refactor command-line commands (#261)

Developer-Facing Changes

  • Add /api/markdown endpoint for generating HTML from Markdown
  • Add ARM64 build (#213)
  • Support OAuth 2.0 as client application (#225)
  • Add stylesheet cache busting script and use it on official WF release (#288)

Performance / Backend

  • Improve resource use for federation (#249)
  • Fix memory leak from gorilla/session library (#133)

Upgrading from v0.11.x and v0.12.0rc1

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 db migrate

No additional steps are needed to upgrade from v0.11.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 the following command to generate the latest stylesheets:

make ui

Contributors

Thanks to everyone who contributed to this release!

Development

@thebaer @robjloranger @qwazix @yalh76 @ngerakines @techknowlogick @shleeable @nkoehring @paddatrapper @cjeller1592

Documentation

@cjeller1592

Bug reports

@barbrastreisand @wakest @judges119 @laBecasse @misaka00251 @OliverViking @mrvdb @darddan @wiwie @annando

#WriteFreely

This version fixes some regressions introduced in our last major release, particularly around #federation. We highly recommend that all admins upgrade to this version, especially if you're on v0.11.x.

On that note: want to help us test WriteFreely before future major releases? We'd love your help! Let us know over on the forum.

User-Facing Changes / Fixes

  • Fix Announceing posts via ActivityPub (#212)
  • Fix id property in collection posts' ActivityStreams data (#214)
  • Remove false “programmer error” log (#216)
  • Fix password-protected blog rendering (#221)
  • Fix silenced password-protected blog quirks
  • Fix wrong errors returned when looking up non-existent paths (#215)

Upgrading from v0.11.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.11.x. Follow the instructions in each previous #release if you're upgrading from v0.10.0 or earlier.

Contributors

Thanks for contributing to this release!

@robjloranger @cjeller1592

#WriteFreely

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