A clean, Markdown-based publishing platform made for writers. Write together, and build a community.

Overview

 

WriteFreely


Latest release Build status Go Report Card

 

WriteFreely is a clean, minimalist publishing platform made for writers. Start a blog, share knowledge within your organization, or build a community around the shared act of writing.

Try the writing experience

Find an instance

Features

Made for writing

Built on a plain, auto-saving editor, WriteFreely gives you a distraction-free writing environment. Once published, your words are front and center, and easy to read.

A connected community

Start writing together, publicly or privately. Connect with other communities, whether running WriteFreely, Plume, or other ActivityPub-powered software. And bring members on board from your existing platforms, thanks to our OAuth 2.0 support.

Intuitive organization

Categorize articles with hashtags, and create static pages from normal posts by pinning them to your blog. Create draft posts and publish to multiple blogs from one account.

International

Blog elements are localized in 20+ languages, and WriteFreely includes first-class support for non-Latin and right-to-left (RTL) script languages.

Private by default

WriteFreely collects minimal data, and never publicizes more than a writer consents to. Writers can seamlessly create multiple blogs from a single account for different pen names or purposes without publicly revealing their association.

Write.as

The quickest way to deploy WriteFreely is with Write.as, a hosted service from the team behind WriteFreely. You'll get fully-managed installation, backup, upgrades, and maintenance — and directly fund our free software work ❤️

Learn more on Write.as.

Quick start

WriteFreely deploys as a static binary on any platform and architecture that Go supports. Just use our built-in SQLite support, or add a MySQL database, and you'll be up and running!

For common platforms, start with our pre-built binaries and head over to our installation guide to get started.

Packages

You can also find WriteFreely in these package repositories, thanks to our wonderful community!

Documentation

Read our full documentation on WriteFreely.org —️ and help us improve by contributing to the writefreely/documentation repo.

Development

Start hacking on WriteFreely with our developer setup guide. For Docker support, see our Docker guide.

Contributing

We gladly welcome contributions to WriteFreely, whether in the form of code, bug reports, feature requests, translations, or documentation improvements.

Before contributing anything, please read our Contributing Guide. It describes the correct channels for submitting contributions and any potential requirements.

License

Copyright © 2018-2021 A Bunch Tell LLC and contributing authors. Licensed under the AGPL.

Issues
  • Federation with Hubzilla

    Federation with Hubzilla

    Describe the bug

    New posts not shown in Hubzilla

    Steps to reproduce (if necessary)

    Steps to reproduce the behavior:

    1. In Hubzilla, add a new connection to a write.as account
    2. On the write.as account, add a new post
    3. Check that this new post is visible elsewhere (ex: from misskey), but not on Hubzilla

    Expected behavior

    I should see the new post in Hubzilla

    Application configuration

    Tested in qua.name instance Version or last commit: v0.9.1-49-g901bf14

    bug help wanted federation 
    opened by Eldarendil 30
  • AP actors have erroneous sharedInbox

    AP actors have erroneous sharedInbox

    In my actor, https://blog.dereferenced.org/api/collections/kaniini, I see:

    "endpoints":{"sharedInbox":""}
    

    This is obviously wrong ;)

    bug federation 
    opened by kaniini 23
  • support pubgate

    support pubgate

    this moves the unmarshaling of a remote actor out into a new helper which accounts for the possibility of a context being a list or a single entity. i.e. a string or an object.

    basics tests are provided for both situations

    also go fmt'd the file activitypub.go

    during the course of working on this I found a missing string format variable in exports.go, in fixing that I also go fmt'd the file.

    Fixes #100 This also fixes #116 by using the followers Inbox if SharedInbox is not set.

    • [x] I have signed the CLA
    opened by ghost 20
  • data: URIs are incorrectly stripped

    data: URIs are incorrectly stripped

    Describe the bug

    The markup

    ![Red dot](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==)
    

    Should show a red dot as an image.

    It doesn't. Inspecting the generated HTML from the Markdown shows that the generated img element has no src attribute.

    I think, but have not confirmed, that this is because https://github.com/writeas/writefreely/blob/32e99d00415c6e86a9536d9b824dcdf0b119270d/posts.go#L1368 does not include data: as a valid protocol.

    Expected behavior

    img element should be created with the correct src attribute.

    enhancement discussion 
    opened by nikclayton 17
  • Field 'description' doesn't have default value

    Field 'description' doesn't have default value

    ERROR: 2018/11/11 11:57:33 log.go:26: Rolling back collections INSERT: Error 1364: Field 'description' doesn't have a default value
    ERROR: 2018/11/11 11:57:33 log.go:26: Unable to create user: Error 1364: Field 'description' doesn't have a default value
    

    I had to manually change description varchar(160) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL to description varchar(160) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT ''

    however after that it shows the same problem with privacy field. Either something wrong with my mySQL or with your schema.sql. Server version: 5.7.18-0ubuntu0.16.10.1 (Ubuntu)

    bug 
    opened by MasterGroosha 17
  • db migrate error with utfmb4

    db migrate error with utfmb4

    I tried to upgrade to v0.12.0rc1

    "db migrate" gives the error ERROR: 2020/04/19 17:16:57 main.go:121: migrate: Error 1709: Index column size too large. The maximum column size is 767 bytes.

    I suspect this is due to my mysql being setup in utf8mb4.

    bug documentation 
    opened by vince2bir 16
  • Fix following from Mastodon with Authorized Fetch enabled

    Fix following from Mastodon with Authorized Fetch enabled

    This fixes federation with Mastodon instances that have Authorized Fetch turned on by signing the GET request to fetch the actor when a blog is first followed.

    Closes T820


    • ☑ I have signed the CLA
    opened by thebaer 15
  • Send out ActivityPub mentions (T627)

    Send out ActivityPub mentions (T627)

    This pull request adds code that scans the text of each post to be published for handles of the type @[email protected], uses webfinger to ask ActivityPub endpoints about them, gets their inbox and actor IRI's and adds mention tags to the post. Finally it adds the users to the CC list of the recipients of the activity.

    This works in pleroma but not in mastodon unless we set the object type to "Note" instead of "Article"

    T627

    opened by qwazix 15
  • Possible memory leak?

    Possible memory leak?

    Describe the bug

    I'm running WriteFreely v 0.9.1 on my Scaleway instance with 2GB of RAM. It's a single-user federated instance with SQLite as backend. I'm managing it via systemd with the following service description:

    [Unit]
    Description=Write Freely Instance
    After=syslog.target network.target
    
    [Service]
    Type=simple
    WorkingDirectory=/home/groosha/writefreely
    ExecStart=/home/groosha/writefreely/writefreely >> /var/log/writefreely.log
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    The only modification I made is replacing one of "letter-avatars" with a custom one to see a proper profile pic on Mastodon.

    Symptoms

    If I run WriteFreely for a long time (let's say, a month) without even touching it (no users, no new posts, nothing), it consumes almost all free RAM on server, causing other apps to have problems. For example, my Python scripts which are running as cron jobs and regular processes, raise some exceptions like RuntimeError: can't start new thread or vedis.cpython-35m-x86_64-linux-gnu.so: failed to map segment from shared object. Also running htop shows that writefreely process consumes ~60% of RAM: изображение (notice that I'm running only one process, but htop shows all threads)

    After I restart writefreely with systemctl restart writefreely everything gets back to normal: изображение (here I enabled "tree" view of processes, showing that I have only 1 process of writefreely and others are most likely threads)

    My bad I didn't write down Go internal stats from /admin page, I guess it would help a lot.

    Expected behavior

    RAM usage should depend on active users or API usage, not increase as the time goes by.

    Application configuration

    • Single mode or Multi-user mode? Single mode
    • Database? SQLite
    • Open registration? No
    • Federation enabled? Yes
    • Operating system? Ubuntu 16.10 (oops!)

    Version or last commit: 0.9.1

    help wanted performance 
    opened by MasterGroosha 15
  • check for lessc executable in any location

    check for lessc executable in any location

    previously the checks were explicit locations which does not work when using something like nvm to manage node packages and versions.

    this checks for the executable and sets the script variable LESSC to the full path of the one found. if none was found the make command will error.


    • [x] I have signed the CLA
    opened by ghost 14
  • Invalid JSON-LD syntax; @context must be an object.

    Invalid JSON-LD syntax; @context must be an object.

    When following my writefreely user [email protected] from friendica [email protected] I get the following error response upon writing new posts / updating posts in writefreely:

    2020/04/10 22:51:59 Response: JsonLdException: [jsonld.SyntaxError]: Invalid JSON-LD syntax; @context must be an object.

    From the json-ld spec it also seems that the context is supposed to be an object or a link to a jsonld file: https://www.w3.org/TR/2020/CR-json-ld11-20200316/#the-context

    bug federation 
    opened by wiwie 13
  • Bump docker/build-push-action from 3.0.0 to 3.1.1

    Bump docker/build-push-action from 3.0.0 to 3.1.1

    Bumps docker/build-push-action from 3.0.0 to 3.1.1.

    Release notes

    Sourced from docker/build-push-action's releases.

    v3.1.1

    Full Changelog: https://github.com/docker/build-push-action/compare/v3.1.0...v3.1.1

    v3.1.0

    • no-cache-filters input by @​crazy-max (#653)
    • Bump @​actions/github from 5.0.1 to 5.0.3 (#619)
    • Bump @​actions/core from 1.6.0 to 1.9.0 (#620 #637)
    • Bump csv-parse from 5.0.4 to 5.3.0 (#623 #650)

    Full Changelog: https://github.com/docker/build-push-action/compare/v3.0.0...v3.1.0

    Commits
    • c84f382 Merge pull request #663 from crazy-max/fix-git-token-cond
    • cd5d0b7 Merge pull request #661 from dud225/subdir_context
    • 30a3224 Fix GitHub token not passed with Git context if subdir defined
    • 1f19633 Update comment regarding the support of subdir context
    • 67af6dc Merge pull request #657 from bendrucker/deprecated-fs-rmdir
    • 988cb09 replace deprecated fs.rmdir with fs.rm
    • 1cb9d22 Merge pull request #653 from crazy-max/no-cache-filters
    • 5ffbca1 no-cache-filters input
    • a8d76c0 Merge pull request #650 from docker/dependabot/npm_and_yarn/csv-parse-5.3.0
    • 12b1e41 Update generated content
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump github.com/urfave/cli/v2 from 2.3.0 to 2.11.1

    Bump github.com/urfave/cli/v2 from 2.3.0 to 2.11.1

    Bumps github.com/urfave/cli/v2 from 2.3.0 to 2.11.1.

    Release notes

    Sourced from github.com/urfave/cli/v2's releases.

    v2.11.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/urfave/cli/compare/v2.11.0...v2.11.1

    v2.11.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/urfave/cli/compare/v2.10.3...v2.11.0

    v2.10.3

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.10.2...v2.10.3

    v2.10.2

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.10.1...v2.10.2

    v2.10.1

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.10.0...v2.10.1

    v2.10.0

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.9.0...v2.10.0

    ... (truncated)

    Commits
    • c8147a4 Merge pull request #1439 from hmiyado/fix-timestamp-getvalue
    • 6d67b2d Fix for TimestampFlag.GetValue to return empty string without value
    • a91950f Merge pull request #1436 from urfave/revert-1435-merging-main-to-v3-dev-main
    • 25116be Revert "Merging main to v3 dev main"
    • f8124ae Merge pull request #1435 from urfave/merging-main-to-v3-dev-main
    • a82c9b1 Merge remote-tracking branch 'origin/main' into merging-main-to-v3-dev-main
    • 8d46d37 Approve v2 addition of timestamp/timezone/location
    • 8b41988 Merge pull request #1426 from urfave/default-command-doc
    • 2e71cb8 Merge pull request #1432 from julian7/timezoned-timestamp
    • 1335a70 accept timezone for timestamps
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies go 
    opened by dependabot[bot] 0
  • Newline in MathJax

    Newline in MathJax

    Describe the bug

    Adding a newline in MathJax with \ doesn't work

    Steps to reproduce (if necessary)

    Steps to reproduce the behavior:

    1. Create a blog post with MathJax and a newline sequence \
    2. Publish post

    Expected behavior

    A newline should have been inserted in correspondence of the \ sequence

    Application configuration

    I don't know, it's noblogo.org

    Version or last commit: I don't know

    opened by fedeb95 0
  • Bump github.com/microcosm-cc/bluemonday from 1.0.5 to 1.0.19

    Bump github.com/microcosm-cc/bluemonday from 1.0.5 to 1.0.19

    Bumps github.com/microcosm-cc/bluemonday from 1.0.5 to 1.0.19.

    Release notes

    Sourced from github.com/microcosm-cc/bluemonday's releases.

    Add SVG inline images, improve RGB color and length matching, fix bug

    What's Changed

    • css: improve RGB hex color and length matching by @​hochhaus in microcosm-cc/bluemonday#142
    • css: add support for image/svg+xml for data-uri inline images
    • html: fix double-escaping of content within HTML attributes
    • tests: added more tests to provide examples of proofs of some open issues

    New Contributors

    Full Changelog: https://github.com/microcosm-cc/bluemonday/compare/v1.0.18...v1.0.19

    Fix bug in iframe sandboxvalues

    What's Changed

    Full Changelog: https://github.com/microcosm-cc/bluemonday/compare/v1.0.17...v1.0.18

    Add support for the "sandbox" attribute on the "iframe" element

    As per microcosm-cc/bluemonday#135 @​kiwiz has added support to bluemonday that allows the iframe element to correctly declare the security attribute sandbox.

    You can read about that attribute here: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox

    No other change is in this release.

    Prevent a HTML sanitization vulnerability

    CVE-2021-42576

    A vulnerability was discovered by https://github.com/TomAnthony https://www.tomanthony.co.uk/ which allowed the contents of a style tag to be leaked unsanitized by bluemonday into the HTML output. Further it was demonstrated that if the form elements select and option were allowed by the policy that this could result in a successful XSS.

    You would only be vulnerable to if if you allowed style, select and option in your HTML sanitization policy:

    p := bluemonday.NewPolicy()
    p.AllowElements("style","select")
    html := p.Sanitize(`<select><option><style><script>alert(1)</script>`)
    fmt.Println(html)
    

    bluemonday very strongly recommends not allowing the style element in a policy. It is fundamentally unsafe as we do not have a CSS sanitizer and the content is passed through unmodified.

    bluemonday has been updated to explicitly suppress style and script elements by default even if you do allow them by policy as these are considered unsafe. If you have a use-case for using bluemonday whilst trusting the input then you can assert this via p.AllowUnsafe(true) which will let style and script through if the policy also allows them.

    Note: the policies shipped with bluemonday are not vulnerable to this.

    Fix XSS vulnerability in HTML attribute parsing

    A well crafted HTML attribute had the potential to evade sanitization due to incorrect escaping of the attribute whilst serializing it.

    This version resolves that issue. In doing so it will also correctly use &amp; to separate query string values in URLs within HTML attributes (href, src, ...).

    ... (truncated)

    Commits
    • 84409dd Only test n-1 Go versions
    • 8fc9802 Merge branch 'main' of github.com:microcosm-cc/bluemonday into main
    • c66f9ff Updated Go version, retract old versions of this package which are always con...
    • a232bac Removed outdated build badge
    • 97a5b1f Test recent Go versions
    • 9ec48cf Test recent Go versions
    • d4b11cb Added funding file
    • 9ef01f7 Closes #134 add tests to show all sanitize methods are roughly equal in time
    • ed50dcc Closes #139 by demonstrating in a test that it still works
    • cdefdb2 Closes #143 Rely on html and url packages for sanitization, don't roll your o...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies go 
    opened by dependabot[bot] 0
  • Bump github.com/stretchr/testify from 1.7.0 to 1.8.0

    Bump github.com/stretchr/testify from 1.7.0 to 1.8.0

    Bumps github.com/stretchr/testify from 1.7.0 to 1.8.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies go 
    opened by dependabot[bot] 0
  • Using MySQL driver without a password fails.

    Using MySQL driver without a password fails.

    Describe the bug

    Attempting to use the MySQL database driver without a password set causes the program to throw an error and exit, printing the following.

    Database user or password not set.
    
    View config.ini file.
    [app]
    host = http://local.test
    site_name = WriteFreely
    theme = write
    
    [database]
    database = writefreely
    host = localhost
    password = ""
    port = 3306
    tls = 
    type = mysql
    username = writefreely
    
    [server]
    autocert = 
    bind = localhost
    gopher_port = 0
    keys_parent_dir = /var/lib/writefreely
    pages_parent_dir = /nix/store/0sd080c203cc8nrgkmbjd8i5ydl4d2r5-source
    port = 80
    static_parent_dir = /nix/store/07va1db963wnsbm84lpxz3jcdjyxkkir-writefreely-assets-0.13.1
    templates_parent_dir = /nix/store/0sd080c203cc8nrgkmbjd8i5ydl4d2r5-source
    

    I'm currently trying to wire up a NixOS module for WriteFreely. NixOS's MySQL module configures database users for auth with either unix_socket or auth_socket and does not initialize users with a password.

    Steps to reproduce (if necessary)

    1. Start MySQL.
    2. Create a user with either unix_socket or auth_socket auth as described above.
    3. Configure WriteFreely to use MySQL with an empty password entry.
    4. Start WriteFreely.

    Expected behavior

    WriteFreely should be able to connect to the database without a password, though I'm not familiar enough with Go or the libraries underlying the database system to know if that's possible here (though my gut says it should be).

    Application configuration

    • Single mode or Multi-user mode? both
    • Database? [mysql/sqlite] mysql
    • Open registration? [yes/no] both
    • Federation enabled? [yes/no] both

    Version or last commit: 0.13.1

    opened by jakehamilton 0
Releases(v0.13.1)
  • v0.13.1(Jun 30, 2021)

    User-Facing Changes

    • Fix title rendering as list item (#470)
    • Remove additional slash in /feed/ redirect
    • Don't include image alt text in post description metadata (#306)
    • Fix SQLite-backed instances locking up (#467)
    • Fix backslashes added to list items in Classic editor (#480)

    Admin-Facing Changes

    • Return error when generic OAuth provider doesn't return a user ID, and prompt admin to add map_user_id (#469)
    • Fix "Collection.hostName is empty!" log on Stats page (#468)

    Upgrading from v0.13.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.13.0. Follow the instructions in each previous release if you're upgrading from an earlier version.

    Developers

    If you are running a custom build: we made changes to UI components that need to be compiled. Run this to compile everything:

    make ui
    

    Contributors

    Thanks to everyone who contributed bug reports, code, and code review to this release!

    @stayinside @bandicootdancing @PeterCxy @DaarkMoon @poVoq @Tealk @thebaer @mkyos

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.13.1_linux_amd64.tar.gz(21.81 MB)
    writefreely_0.13.1_linux_arm6.tar.gz(19.08 MB)
    writefreely_0.13.1_linux_arm64.tar.gz(20.69 MB)
    writefreely_0.13.1_linux_arm7.tar.gz(19.07 MB)
    writefreely_0.13.1_macos_amd64.tar.gz(14.57 MB)
    writefreely_0.13.1_windows_amd64.zip(21.36 MB)
  • v0.13.0(Jun 11, 2021)

    write freely

    v0.13

    Major Features

    Classic editor (T727)

    If plain text and Markdown aren't your thing, now you can get a more "classic" writing experience with the Classic editor! This features more of a What You See Is What You Get interface that doesn't require the learning curve of Markdown. However, behind the scenes, posts are still saved as Markdown, so you can always switch between the Classic and standard editor. Admins can enable this option by setting editor = classic in the [app] config section.

    Gopher Support (T559)

    Give your audience a old-school, lightweight way to read posts on your WriteFreely instance, via the Gopher protocol! Enable it with the new gopher_port config value in the [server] section. When it’s enabled, multi-user instances will show all Public blogs at gopher://[host]:[gopher_port]/.

    Gitea and Generic OAuth Provider Support (#293, #317, #405)

    We’ve added more ways for users to authenticate with your WriteFreely instance, via Gitea or any generic OAuth 2.0 provider! Our generic OAuth provider support in particular gives you the chance to use WriteFreely alongside a range of applications that hold your users, from Mastodon to Nextcloud to Keycloak.

    Web Monetization Support (T773)

    Writers can now accept micropayments for their work via the proposed Web Monetization standard, and even publish exclusive content behind a paywall. Admins can enable this by setting monetization = true in the [app] section of their config, or changing the setting in their admin panel. This is just the start as we look to give readers more ways to financially support writers — read more about this on the Write.as blog.

    ActivityPub Notes (#220)

    Now, WriteFreely is more friendly to microblogs! If a post doesn’t have a double-line-break in it, it’ll be sent to the fediverse as a Note, rather than an Article. If you’d prefer to always send Notes, admins can set notes_only = true in the [app] config section.

    Account deletion (T319)

    It’s now easy for users and admins to quickly delete account data from WriteFreely via the web! Admins can access this option from their Admin Dashboard, and users can access it from their Account Settings page, if admins have configured Open Account Deletions (via the Dashboard or config file: open_deletion = true under the [app] section).

    Post Signatures (T582)

    This enables users to add a signature to all blog posts, and update it from a single location (the blog's Customize page).

    User-Facing Changes / Fixes

    • Optimize Drafts retrieval (#295)
    • Support AP-style mentions of centralized social media accounts (#319)
    • Show warning in editor when local draft is out of date (#41)
    • Allow footer and header elements (#326)
    • Set pad light / dark theme based on system settings (#196)
    • Improved blog management navigation (#371)
    • Fix silenced user post visibility (#374)
    • Automatically resize CSS editor (T708)
    • Stop private and protected blogs from federating (#403)
    • Fix following from Mastodon with Authorized Fetch enabled (T820)
    • Fix language metadata gets reset to English after editing a post (#280)
    • Support logging out of password-protected blogs (T492)
    • Always show post actions on mobile devices (#309)
    • Include images as attachments in ActivityStreams data (#442)
    • Fix .md file import from Safari (#334)
    • Fix Custom CSS editor not working well on touchscreen devices (#452)
    • Support Drafts list paging (T401, T696)
    • Support title-only posts (#464)

    Minor Changes

    • Support number+letter hashtags
    • Use a bigger font size for h2 (#217)
    • Ignore "collation mix" errors in GetCollectionRedirect() (#318)
    • Make dropdown navigation menus more accessible (#355)
    • Fix removal of query parameters on youtube embed links (#328)
    • Truncate lede at question mark (#316)
    • Fix double HTML-encoded meta tags (#340)
    • Fix header spacing on pinned posts (#385)
    • Fix unable to edit posts titled "Tags" (#305)
    • Set SameSite=None on session cookie (#443)
    • Make language highlighting matching case-insensitive (#429)

    Admin-Facing Changes

    • Remove “No to!” log (#311)
    • Support encrypted database connections (#297)
    • Fix docker-compose (#407, #139, #323)
    • Fix Docker repository does not exist (#416)
    • Support user deletion from web interface (T319)
    • Support Unicode domain names (#457)

    Developer-Facing Changes

    • Add CORS header to public APIs (#327)
    • Support slug parameter when publishing a post (T811)
    • Return a url property on Publish a Post endpoint
    • Support setting description at user registration

    Performance / Backend

    • Move WriteFreely repo from writeas org to writefreely (#451)
    • Move MathJax library from submodule to single file (#176)
    • Improve static file serving with Cache-Control header (#322)
    • Use HTMLContent field in RSS feed (#418)
    • Remove writeas/nerds/store pkg dependency (#445)
    • Bump github.com/gorilla/feeds from 1.1.0 to 1.1.1
    • Bump github.com/hashicorp/go-multierror from 1.0.0 to 1.1.1
    • Bump github.com/microcosm-cc/bluemonday from 1.0.2 to 1.0.5
    • Bump github.com/stretchr/testify from 1.6.0 to 1.7.0
    • Bump gopkg.in/ini.v1 from 1.55.0 to 1.62.0
    • Bump github.com/guregu/null from v3.4 to v3.5
    • Bump github.com/go-sql-driver/mysql from 1.4.1 to 1.6.0
    • Bump github.com/writeas/import from 0.2.0 to 0.2.1
    • Bump github.com/mattn/go-sqlite3 from 1.10.0 to 1.14.6
    • Bump github.com/gorilla/schema from 1.0.2 to 1.2.0
    • Bump github.com/manifoldco/promptui from 0.3.2 to 0.8.0
    • Bump github.com/urfave/cli/v2 from 2.1.1 to 2.3.0
    • Bump github.com/fatih/color from 1.7.0 to 1.10.0

    Upgrading from v0.12.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 db migrate
    

    Finally, generate a new encryption key needed for this release (you can ignore messages about removing existing keys):

    writefreely keys generate
    

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

    Developers

    If you are running a custom build: we made changes to site styles and added a Javascript dependency that needs to be compiled (prose.js). Run this to compile everything:

    make ui
    

    Contributors

    Thanks to everyone who contributed to this release!

    Development

    @gytisrepecka @thebaer @RJ722 @ketudb @pascoual @Dar13 @shleeable @joicemjoseph @dariusk @Obayanju @qwazix @Antolius @colin-axner @conor-f @VV-EE @mostfunkyduck @Dak425 @cjeller1592 @x4e @robjloranger

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.13.0_linux_amd64.tar.gz(21.81 MB)
    writefreely_0.13.0_linux_arm6.tar.gz(19.08 MB)
    writefreely_0.13.0_linux_arm64.tar.gz(20.68 MB)
    writefreely_0.13.0_linux_arm7.tar.gz(19.06 MB)
    writefreely_0.13.0_macos_amd64.tar.gz(14.57 MB)
    writefreely_0.13.0_windows_amd64.zip(21.35 MB)
  • v0.13.0rc1(May 10, 2021)

    write freely

    v0.13 Release Candidate 1

    This is a WriteFreely v0.13.0 release candidate. It is intended to be stable, but may not be. Please open bug reports for any issues you find, and otherwise contact us via IRC (#writefreely on freenode) if you have any questions.

    Major Features

    Classic editor (T727)

    If plain text and Markdown aren't your thing, now you can get a more "classic" writing experience with the Classic editor! This features more of a What You See Is What You Get interface that doesn't require the learning curve of Markdown. However, behind the scenes, posts are still saved as Markdown, so you can always switch between the Classic and standard editor. Admins can enable this option by setting editor = classic in the [app] config section.

    Gopher Support (T559)

    Give your audience a old-school, lightweight way to read posts on your WriteFreely instance, via the Gopher protocol! Enable it with the new gopher_port config value in the [server] section. When it’s enabled, multi-user instances will show all Public blogs at gopher://[host]:[gopher_port]/.

    Gitea and Generic OAuth Provider Support (#293, #317, #405)

    We’ve added more ways for users to authenticate with your WriteFreely instance, via Gitea or any generic OAuth 2.0 provider! Our generic OAuth provider support in particular gives you the chance to use WriteFreely alongside a range of applications that hold your users, from Mastodon to Nextcloud to Keycloak.

    Web Monetization Support (T773)

    Writers can now accept micropayments for their work via the proposed Web Monetization standard. Admins can enable this by setting monetization = true in the [app] section of their config, or changing the setting in their admin panel. This is just the start as we look to give readers more ways to financially support writers — read more about this on the Write.as blog.

    ActivityPub Notes (#220)

    Now, WriteFreely is more friendly to microblogs! If a post doesn’t have a double-line-break in it, it’ll be sent to the fediverse as a Note, rather than an Article. If you’d prefer to always send Notes, admins can set notes_only = true in the [app] config section.

    Account deletion (T319)

    It’s now easy for users and admins to quickly delete account data from WriteFreely via the web! Admins can access this option from their Admin Dashboard, and users can access it from their Account Settings page, if admins have configured Open Account Deletions (via the Dashboard or config file: open_deletion = true under the [app] section).

    Post Signatures (T582)

    This enables users to add a signature to all blog posts, and update it from a single location (the blog's Customize page).

    User-Facing Changes / Fixes

    • Optimize Drafts retrieval (#295)
    • Support AP-style mentions of centralized social media accounts (#319)
    • Show warning in editor when local draft is out of date (#41)
    • Allow footer and header elements (#326)
    • Set pad light / dark theme based on system settings (#196)
    • Improved blog management navigation (#371)
    • Fix silenced user post visibility (#374)
    • Automatically resize CSS editor (T708)
    • Stop private and protected blogs from federating (#403)
    • Fix following from Mastodon with Authorized Fetch enabled (T820)
    • Fix language metadata gets reset to English after editing a post (#280)
    • Support logging out of password-protected blogs (T492)
    • Always show post actions on mobile devices (#309)
    • Include images as attachments in ActivityStreams data (#442)
    • Fix .md file import from Safari (#334)
    • Fix Custom CSS editor not working well on touchscreen devices (#452)
    • Support Drafts list paging (T401, T696)

    Minor Changes

    • Support number+letter hashtags
    • Use a bigger font size for h2 (#217)
    • Ignore "collation mix" errors in GetCollectionRedirect() (#318)
    • Make dropdown navigation menus more accessible (#355)
    • Fix removal of query parameters on youtube embed links (#328)
    • Truncate lede at question mark (#316)
    • Fix double HTML-encoded meta tags (#340)
    • Fix header spacing on pinned posts (#385)
    • Fix unable to edit posts titled "Tags" (#305)
    • Set SameSite=None on session cookie (#443)
    • Make language highlighting matching case-insensitive (#429)

    Admin-Facing Changes

    • Remove “No to!” log (#311)
    • Support encrypted database connections (#297)
    • Fix docker-compose (#407, #139, #323)
    • Fix Docker repository does not exist (#416)
    • Support user deletion from web interface (T319)
    • Support Unicode domain names (#457)

    Developer-Facing Changes

    • Add CORS header to public APIs (#327)
    • Support slug parameter when publishing a post (T811)

    Performance / Backend

    • Move WriteFreely repo from writeas org to writefreely (#451)
    • Move MathJax library from submodule to single file (#176)
    • Improve static file serving with Cache-Control header (#322)
    • Use HTMLContent field in RSS feed (#418)
    • Remove writeas/nerds/store pkg dependency (#445)
    • Bump github.com/gorilla/feeds from 1.1.0 to 1.1.1
    • Bump github.com/hashicorp/go-multierror from 1.0.0 to 1.1.1
    • Bump github.com/microcosm-cc/bluemonday from 1.0.2 to 1.0.5
    • Bump github.com/stretchr/testify from 1.6.0 to 1.7.0
    • Bump gopkg.in/ini.v1 from 1.55.0 to 1.62.0
    • Bump github.com/guregu/null from v3.4 to v3.5
    • Bump github.com/go-sql-driver/mysql from 1.4.1 to 1.6.0
    • Bump github.com/writeas/import from 0.2.0 to 0.2.1
    • Bump github.com/mattn/go-sqlite3 from 1.10.0 to 1.14.6
    • Bump github.com/gorilla/schema from 1.0.2 to 1.2.0
    • Bump github.com/manifoldco/promptui from 0.3.2 to 0.8.0
    • Bump github.com/urfave/cli/v2 from 2.1.1 to 2.3.0
    • Bump github.com/fatih/color from 1.7.0 to 1.10.0

    Upgrading from v0.12.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 db migrate
    

    Finally, generate a new encryption key needed for this release (you can ignore messages about removing existing keys):

    writefreely keys generate
    

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

    Developers

    If you are running a custom build: we made changes to site styles and added a Javascript dependency that needs to be compiled (prose.js). Run this to compile everything:

    make ui
    

    Contributors

    Thanks to everyone who contributed to this release!

    Development

    @gytisrepecka @thebaer @RJ722 @ketudb @pascoual @Dar13 @shleeable @joicemjoseph @dariusk @Obayanju @qwazix @Antolius @colin-axner @conor-f @VV-EE @mostfunkyduck @Dak425 @cjeller1592 @x4e @robjloranger

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.13.0rc1_linux_amd64.tar.gz(21.79 MB)
    writefreely_0.13.0rc1_linux_arm6.tar.gz(19.06 MB)
    writefreely_0.13.0rc1_linux_arm64.tar.gz(20.67 MB)
    writefreely_0.13.0rc1_linux_arm7.tar.gz(19.05 MB)
    writefreely_0.13.0rc1_macos_amd64.tar.gz(14.56 MB)
    writefreely_0.13.0rc1_windows_amd64.zip(21.34 MB)
  • v0.12.0(Apr 22, 2020)

    write freely

    v0.12

    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 @[email protected] 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.3.0 or later

    Download the latest release for your operating system, from the files below. Then follow these steps:

    1. Stop running your writefreely service
    2. Replace all files in your installation except the keys directory with the files from the archive
    3. Start your writefreely service again.

    Now make sure your database is backed up, and migrate it with the steps below.

    1. If you're running MariaDB, run this query on your WriteFreely database (fixes #302):
    ALTER DATABASE writefreely CHARACTER SET latin1 COLLATE latin1_swedish_ci;
    
    1. Finally, run this command to update your database schema:
    writefreely db migrate
    

    No additional steps are needed to upgrade from v0.3.0 or later. 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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.12.0_linux_amd64.tar.gz(45.17 MB)
    writefreely_0.12.0_linux_arm6.tar.gz(42.52 MB)
    writefreely_0.12.0_linux_arm64.tar.gz(44.02 MB)
    writefreely_0.12.0_linux_arm7.tar.gz(42.51 MB)
    writefreely_0.12.0_macos_amd64.tar.gz(38.47 MB)
    writefreely_0.12.0_windows_amd64.zip(57.24 MB)
  • v0.12.0rc1(Mar 27, 2020)

    write freely

    v0.12 Release Candidate 1

    This is a WriteFreely v0.12.0 release candidate. It is intended to be stable, but may not be. Please open bug reports for any issues you find, and otherwise contact us via IRC (#writefreely on freenode) if you have any questions.

    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 @[email protected] 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)

    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

    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 make ui to generate the latest stylesheets.

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.12.0rc1_linux_amd64.tar.gz(45.14 MB)
    writefreely_0.12.0rc1_linux_arm6.tar.gz(42.51 MB)
    writefreely_0.12.0rc1_linux_arm64.tar.gz(44.00 MB)
    writefreely_0.12.0rc1_linux_arm7.tar.gz(42.49 MB)
    writefreely_0.12.0rc1_macos_amd64.tar.gz(38.46 MB)
    writefreely_0.12.0rc1_windows_amd64.zip(57.21 MB)
  • v0.11.2(Dec 18, 2019)

    write freely

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.11.2_linux_amd64.tar.gz(44.02 MB)
    writefreely_0.11.2_linux_arm64.tar.gz(42.95 MB)
    writefreely_0.11.2_linux_arm7.tar.gz(41.62 MB)
    writefreely_0.11.2_macos_amd64.tar.gz(38.65 MB)
    writefreely_0.11.2_windows_amd64.zip(56.03 MB)
  • v0.11.1(Nov 12, 2019)

    write freely

    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, and Linux.

    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.

    About v0.11.0...

    Our v0.11.0 release featured a new regression that broke single-user instances, and taught us about the value release candidates -- something we'll start doing, going forward. There's no extra work needed to upgrade from v0.11.0 if you've already upgraded from v0.10 -- only your enduring support as we learn how to build good software goodly.

    Contributors

    Thanks for contributing to this release!

    @robjloranger @OddBloke

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.11.1_linux_amd64.tar.gz(44.02 MB)
    writefreely_0.11.1_linux_arm7.tar.gz(41.62 MB)
    writefreely_0.11.1_macos_amd64.tar.gz(38.65 MB)
    writefreely_0.11.1_windows_amd64.zip(56.03 MB)
  • v0.11.0(Nov 11, 2019)

    write freely

    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, and Linux.

    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)

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.11.0_linux_amd64.tar.gz(44.03 MB)
    writefreely_0.11.0_linux_arm7.tar.gz(41.61 MB)
    writefreely_0.11.0_macos_amd64.tar.gz(38.65 MB)
    writefreely_0.11.0_windows_amd64.zip(56.04 MB)
  • v0.10.0(Jul 2, 2019)

    write freely

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.10.0_linux_amd64.tar.gz(47.91 MB)
    writefreely_0.10.0_linux_arm7.tar.gz(45.50 MB)
    writefreely_0.10.0_macos_amd64.tar.gz(42.43 MB)
    writefreely_0.10.0_windows_amd64.zip(56.37 MB)
  • v0.9.1(Apr 20, 2019)

    write freely

    This isn't a required upgrade; it's only needed to fix new installations.

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.9.1_linux_amd64.tar.gz(26.93 MB)
    writefreely_0.9.1_macos_amd64.tar.gz(21.46 MB)
    writefreely_0.9.1_windows_amd64.zip(27.29 MB)
  • v0.9.0(Apr 13, 2019)

    write freely

    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 draft post metadata (#91)
    • 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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.9.0_linux_amd64.tar.gz(26.93 MB)
    writefreely_0.9.0_macos_amd64.tar.gz(21.45 MB)
    writefreely_0.9.0_windows_amd64.zip(27.30 MB)
  • v0.8.1(Feb 1, 2019)

    write freely

    User-facing Fixes

    • Fix same-page anchor links (#43, #42, #33)

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.8.1_linux_amd64.tar.gz(26.89 MB)
    writefreely_0.8.1_macos_amd64.tar.gz(21.43 MB)
    writefreely_0.8.1_windows_amd64.zip(27.25 MB)
  • v0.8.0(Jan 24, 2019)

    write freely

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.8.0_linux_amd64.tar.gz(26.89 MB)
    writefreely_0.8.0_macos_amd64.tar.gz(21.42 MB)
    writefreely_0.8.0_windows_amd64.zip(27.25 MB)
  • v0.7.1(Jan 13, 2019)

    write freely

    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.

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.7.1_linux_amd64.tar.gz(26.87 MB)
    writefreely_0.7.1_macos_amd64.tar.gz(21.40 MB)
    writefreely_0.7.1_windows_amd64.zip(27.22 MB)
  • v0.7.0(Jan 8, 2019)

    write freely

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.7.0_linux_amd64.tar.gz(26.86 MB)
    writefreely_0.7.0_macos_amd64.tar.gz(21.40 MB)
    writefreely_0.7.0_windows_amd64.zip(27.22 MB)
  • v0.6.0(Dec 10, 2018)

    write freely

    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

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.6.0_darwin_amd64.tar.gz(21.30 MB)
    writefreely_0.6.0_linux_amd64.tar.gz(26.75 MB)
    writefreely_0.6.0_windows_amd64.zip(27.10 MB)
  • v0.5.0(Dec 4, 2018)

    write freely

    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. See previous releases if you're upgrading from an earlier version.

    Contributors

    Thanks for contributing!

    @mrvdb

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.5.0_linux_amd64.tar.gz(14.97 MB)
    writefreely_0.5.0_macos_amd64.tar.gz(14.86 MB)
    writefreely_0.5.0_windows_amd64.zip(14.94 MB)
  • v0.4.0(Nov 26, 2018)

    write freely

    Features

    • Work as a standalone server, with TLS (T537)
    • Code syntax highlighting (#31)

    Functional Fixes

    • Fix About page link in Admin dashboard
    • Include About/Privacy page content in page description

    Upgrading from v0.3.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.3.x. Follow the instructions in each previous release if you're upgrading from an earlier version.

    Contributors

    Thanks to everyone who contributed!

    @mrvdb @koehn

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.4.0_linux_amd64.tar.gz(14.97 MB)
    writefreely_0.4.0_macos_amd64.tar.gz(14.86 MB)
    writefreely_0.4.0_windows_amd64.zip(14.94 MB)
  • v0.3.0(Nov 19, 2018)

    write freely

    Features

    Admin panel

    Dashboard

    Now you can get a basic overview of your application on the admin dashboard. It shows you the app's resource utilization and provides helpful admin commands.

    Currently, the first registered user is always an admin.

    Page editing (T533)

    Make your instance your own by updating your site's About and Privacy pages -- now possible directly from the web. The editor accepts Markdown.

    Other Features

    • Add --init-db flag to create schema in app (T530)
    • Add --reset-pass <username> option for resetting passwords (#25, T534)
    • Federate draft when published to a blog (#9, T526)
    • Support setting created date on new posts (T532)

    Functional Fixes

    • Fix "view blog" links on customize page in single-user mode (#21)
    • Fix "Scheduled" badge appearing when application and database timezones are different (#23)
    • Prevent fatal errors when no ActivityPub response is returned
    • Change Accept activity ID to use blog's origin (#16)
    • Fix MathJax setting not sticking (#28)
    • Fix wrong collection data loaded in RSS feeds on multi-user instances
    • Fix feed and outbox post order in RSS feeds and ActivityPub outboxes
    • Fix em dashes and some glyphs by upgrading Lora

    Others

    • Add -v flag for outputting version

    Upgrading from v0.2.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.

    Important: you'll want to keep config.ini and the files in your keys directory across all upgrades -- don't delete or replace these manually.

    You'll need to manually migrate your database for now. To upgrade, connect to your database and run:

    CREATE TABLE IF NOT EXISTS `appcontent` (
      `id` varchar(36) NOT NULL,
      `content` mediumtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    Optionally, run these queries to clean up bad data that might've shown up due to previous bugs, now fixed in this version.

    -- Erroneous values inserted if you tried to enable MathJax on your blog (fixed in #28)
    DELETE FROM `collectionattributes` WHERE collection_id = 0;
    

    Development

    This update contains some style changes. Run make ui to regenerate CSS after pulling in the latest changes.

    Contributors

    Thanks to our contributors!

    @TheJF @BenOvermyer

    Source code(tar.gz)
    Source code(zip)
    writefreely_0.3.0_linux_amd64.tar.gz(14.93 MB)
    writefreely_0.3.0_macos_amd64.tar.gz(14.82 MB)
    writefreely_0.3.0_windows_amd64.zip(14.93 MB)
  • v0.2.1(Nov 13, 2018)

  • v0.2.0(Nov 12, 2018)

    write freely

    New Features

    • See how many fediverse followers your blogs have
    • WriteFreely now works with Pleroma

    Application Fixes

    • Fix individual post ActivityStreams data fetching, so boosting works (#4)
    • Use WriteFreely avatars in social media image preview, instead of Write.as logo

    Installation Fixes

    • Fix template loading on Windows (#2)
    • Fix database errors around default values (#3, #7)
    • Don't unnecessarily connect to DB after configuring multi-user instance
    • Show any errors when server start fails
    • Fix encryption key loading on Windows
    • Move encryption key generation from keys.sh to writefreely --gen-keys

    Installing

    See our guide.

    Upgrading from v0.1

    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.

    Important: always keep config.ini and the files in your keys directory across all upgrades -- don't delete or replace these manually.

    Database migrations are manual for now! Fun! To upgrade, connect to your database and run:

    ALTER TABLE `remoteusers` DROP `followers`;
    
    Source code(tar.gz)
    Source code(zip)
    writefreely_0.2_linux_amd64.tar.gz(13.63 MB)
    writefreely_0.2_macos_amd64.tar.gz(13.53 MB)
    writefreely_0.2_windows_amd64.zip(13.59 MB)
  • v0.1.0(Nov 10, 2018)

Owner
WriteFreely
Build a digital writing community.
WriteFreely
Markdown - Markdown converter for golang

markdown ?? Talks ?? Join ?? Youtube ❤️ Sponsor Install via nami nami install ma

TxThinking 3 Jun 2, 2022
Mdfmt - A Markdown formatter that follow the CommonMark. Like gofmt, but for Markdown

Introduction A Markdown formatter that follow the CommonMark. Like gofmt, but fo

杨英明 13 Jun 6, 2022
Online server tool to made markdown document.

An authenticated(basic auth with digest) docsify server for private markdown documents. Embedded docsify-mermaid as UML tool.

null 0 Oct 16, 2021
Godown - Markdown to HTML converter made with Go

Godown Godown is a tiny-teeny utility that helps you convert your Markdown files

Kevin Suñer 0 Jan 18, 2022
Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI.💅🏻

Glow Render markdown on the CLI, with pizzazz! What is it? Glow is a terminal based markdown reader designed from the ground up to bring out the beaut

Charm 9.9k Aug 12, 2022
Stylesheet-based markdown rendering for your CLI apps 💇🏻‍♀️

Glamour Write handsome command-line tools with Glamour. glamour lets you render markdown documents & templates on ANSI compatible terminals. You can c

Charm 1.3k Aug 10, 2022
The Markdown-based note-taking app that doesn't suck.

Notable I couldn't find a note-taking app that ticked all the boxes I'm interested in: notes are written and rendered in GitHub Flavored Markdown, no

Notable 20.1k Aug 12, 2022
Generate markdown formatted sprint updates based on the Jira tickets were involved in the given sprint.

Generate markdown formatted sprint updates based on the Jira tickets were involved in the given sprint.

Gábor Boros 2 Nov 15, 2021
Effortless customization for markdown-based SvelteKit blogs!

reece Effortless customization for markdown-based SvelteKit blogs! Installation Install using: One-Script Installation (Linux): curl -sfL https://gith

Aadhav Vignesh 0 Dec 11, 2021
A terminal based preview tool for markdown 🍪

Smooth Smooth is a terminal based preview tool for markdown. Features Turning: turn next/previous slide Scroll: scroll up/down slide Search: search wo

ketsu chin 3 May 22, 2022
Parse data and test fixtures from markdown files, and patch them programmatically, too.

go-testmark Do you need test fixtures and example data for your project, in a language agnostic way? Do you want it to be easy to combine with documen

Eric Myhre 19 Aug 8, 2022
⚙️ Convert HTML to Markdown. Even works with entire websites and can be extended through rules.

html-to-markdown Convert HTML into Markdown with Go. It is using an HTML Parser to avoid the use of regexp as much as possible. That should prevent so

Johannes Kaufmann 377 Aug 4, 2022
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.

Tagify Gets STDIN, file or HTTP address as an input and returns a list of most popular words ordered by popularity as an output. More info about what

ZoomIO 23 Jul 17, 2022
Blackfriday: a markdown processor for Go

Blackfriday Blackfriday is a Markdown processor implemented in Go. It is paranoid about its input (so you can safely feed it user-supplied data), it i

Russ Ross 5k Aug 14, 2022
Upskirt markdown library bindings for Go

Goskirt Package goskirt provides Go-bindings for the excellent Sundown Markdown parser. (F/K/A Upskirt). To use goskirt, create a new Goskirt-value wi

Jukka-Pekka Kekkonen 31 Jul 16, 2022
A CLI markdown converter written in Go.

MDConv is a markdown converter written in Go. It is able to create PDF and HTML files from Markdown without using LaTeX. Instead MDConv u

null 41 Aug 1, 2022
A markdown renderer package for the terminal

go-term-markdown go-term-markdown is a go package implementing a Markdown renderer for the terminal. Note: Markdown being originally designed to rende

Michael Muré 243 Aug 2, 2022
A markdown parser written in Go. Easy to extend, standard(CommonMark) compliant, well structured.

goldmark A Markdown parser written in Go. Easy to extend, standards-compliant, well-structured. goldmark is compliant with CommonMark 0.29. Motivation

Yusuke Inuzuka 2.3k Aug 9, 2022
:triangular_ruler:gofmtmd formats go source code block in Markdown. detects fenced code & formats code using gofmt.

gofmtmd gofmtmd formats go source code block in Markdown. detects fenced code & formats code using gofmt. Installation $ go get github.com/po3rin/gofm

po3rin 90 Apr 3, 2022