Desktop

Beta testers wanted for Ghost Desktop app

Beta testers wanted for Ghost Desktop app

Last month we talked about [https://dev.ghost.org/desktop-app/] how we'd started working on a desktop application for Ghost. This month I'm thrilled to share the first beta release of the new application, which we very much want to get some beta testers for! We’ve been incredibly fortunate to receive a lot of support for Ghost since its inception three years ago, but no organisation has done more for us at this point than Microsoft and its incredible team of developer & open source evangelists.

Meetings

Public Dev Meeting 15th March

Public Dev Meeting 15th March

Quick Summary Current sprint epic issue [https://github.com/TryGhost/Ghost/issues/6586] Progress Report * Progress being made on the new database migration [https://github.com/TryGhost/Ghost/issues/6301] - #6596 [https://github.com/TryGhost/Ghost/pull/6596], #6599 [https://github.com/TryGhost/Ghost/pull/6599], #6602 [https://github.com/TryGhost/Ghost/pull/6602], #6596 [https://github.com/TryGhost/Ghost/pull/6596] * Fixed a bug in which a database could have multiple database sc

i18n

Integrating Transifex into a large-scale web application

Integrating Transifex into a large-scale web application

Last week we announced that Ghost.org is now open for business translation. It was a long process to get here, so I thought it would be interesting to share some of the finer details around how we made this possible. Ghost.org has some 600,000 users from over 170 countries, and about 50%(!) of our traffic is from non-English users. Being an open source project which is largely built and supported by its community, it was really important for us to do this in a way which would be open for everyo

Meetings

Public Dev Meeting 8th March

This week is sprint change over week, so the meeting took place in hangout form. You can watch it back on youtube and see some corresponding chatter in the #dev slack channel.

Meeting Summary

In todays meeting we reviewed the progress of items from the previous sprint, and put together a new sprint epic.

Lots of internal work being done.

Timezones is close to being done, just needs some tests and to be looked over. The tour is hoping to be finished as well as changing/removing some library dependencies to shrink the file size of Ghost.

Full details

If you'd like more details of what happened during the meeting, you can on youtube.

What is this?

We hold a public development meeting pretty much every Tuesday at 5:30pm UK time in the #dev channel on Ghost's slack. In this meeting we discuss progress, important issues, and what is and isn't on the Roadmap. It's a chance for everyone to get involved and have their say about where Ghost goes next.

Inside Ghost

How we migrated 30,000 blogs & 400,000 users across an ocean with zero downtime

How we migrated 30,000 blogs & 400,000 users across an ocean with zero downtime

Some time in May 2013, a handful of fearless (ha) developers sat down to work on the very first implementation Ghost(Pro), the official hosted platform for Ghost. The aim was to ship it as fast as humanly possible. They succeeded. On the 14th of October 2013 Ghost(Pro) started serving blogs for Kickstarter backers from a datacenter in England. I remember this day quite well. It was my first official day at Ghost. This first version of Ghost's hosted platform was the foundation of our success

Meetings

Public Dev Meeting 1st March

Public Dev Meeting 1st March

Quick Summary Current sprint epic issue [https://github.com/TryGhost/Ghost/issues/6560] Progress Report * Ember Updates - #6567 [https://github.com/TryGhost/Ghost/pull/6567] * Added timezones to the public api - #6525 [https://github.com/TryGhost/Ghost/pull/6525] * Test fixes - #6561 [https://github.com/TryGhost/Ghost/pull/6561] * Restructure of the configuration API endpoint - #6548 [https://github.com/TryGhost/Ghost/pull/6548] * Feature service refactor - #6558 [https://github.c

Meetings

Public Dev Meeting February 23rd

Public Dev Meeting February 23rd

This week is sprint change over week, so the meeting took place in hangout form. You can watch it back on youtube [https://youtu.be/Ef8esWTgFLc] and see some corresponding chatter in the #dev slack channel [https://ghost.slack.com/archives/dev/p1455039081001272]. Meeting Summary In todays meeting we reviewed the progress of items from the previous sprint [https://github.com/TryGhost/Ghost/issues/6470], and put together a new sprint epic [https://github.com/TryGhost/Ghost/issues/6560]. With two

New

Help us Translate Ghost.org

Help us Translate Ghost.org

Ghost has been an international project since day 1, with team members, contributors and users from all over the world who care deeply about online publishing. Until now, though, Ghost.org has only been available in English. Today, that’s finally changing! We have well over half a million people registered on Ghost.org - but even just the top 10% of most active users are spread across 7,505 cities and 176 countries. It’s about time we started catering to a more geographically diverse audience

Releases

Ghost 0.7.8

Ghost 0.7.8 is now available on GitHub, npm and Ghost.org. 0.7.8 is exactly the same as 0.7.7, but with a additional fix for a bug with saving tags.

Highlights

  • [Fixed] Unable to add an existing tag to a new post

And from 0.7.7...

  • [Fixed] Node v4 LTS support handles 4.3 and all future v4 LTS versions 🚀
  • [Fixed] Settings cache cleared on import, so your blog will now look correct without needing a restart
  • [Fixed] Various issues with navigation - the UI behaves better, and you'll no longer get ignored by {{current}} if you forget a trailing slash.
  • [Fixed] API serving invalid status codes, which was a potential source of crashes 💥
  • [New] The delete all content button now creates a backup file first... just in case 😉
  • And much more...

You can see the full change log for the details of every change included in this release... or read the 0.7.7 change log instead 'cause it is way more interesting 😁.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.8 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.8 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was speedily whipped up by Kevin Ansfield.

Releases

Ghost 0.7.7

Ghost 0.7.7 is now available on GitHub, npm and Ghost.org. This includes several bug fixes, UI tweaks and performance improvements as well as dependency updates, refactors and better test coverage.

Update: We've spotted a pretty nasty bug in 0.7.7 with saving tags. 0.7.8 will be along shortly...

Highlights

  • [Fixed] Node v4 LTS support handles 4.3 and all future v4 LTS versions 🚀
  • [Fixed] Settings cache cleared on import, so your blog will now look correct without needing a restart
  • [Fixed] Various issues with navigation - the UI behaves better, and you'll no longer get ignored by {{current}} if you forget a trailing slash.
  • [Fixed] API serving invalid status codes, which was a potential source of crashes 💥
  • [New] The delete all content button now creates a backup file first... just in case 😉
  • And much more...

You can see the full change log for the full details of every change included in this release.

In Detail

For the developers out there, you may have noticed that the Ghost codebase is evolving and iterating at a very fast rate at the moment.

The Ember admin client operates almost a separate project now, and will likely move to its own repository sometime in the not-too-distant future. In Ember-land there is constant iteration and improvement, leveraging new features from Ember.js, improving our use of dependencies as well as significant work on including quality and coverage of the acceptance tests.

The serverside code in Ghost also needs a lot of love and attention. We're pushing hard to refactor it to make it more flexible (the channels refactor) as well as pushing it towards being a more "traditional" (if you can even use that word for such a new thing) Node project. This also includes a push towards improving the quality of our unit tests.

We're always looking for new contributors to help us with this work, as well as help us keep the balance between working on the codebase and shipping new features. If you'd like to get involved, come and chat to us in the #dev channel on slack 👫.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.7 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.7 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was lovingly crafted by Hannah Wolfe, Kevin Ansfield, Austin Burdine, Jason Williams, Fabian Becker, Kevin P. Kucharczyk, Cameron Viner, cobbspur, JT Turner, Matt Enlow, Naoya Kanai and Gabor Javorszky.

Desktop

Can you help us build a native desktop Ghost app?

Since Ghost started, we’ve always been very passionate about dedicating all of our time and efforts to building for the web. In the last couple of years, though, we’ve watched as the technology available for creating native desktop apps with web-views have evolved from primitive, to really-quite-impressive.

Towards the end of last year, we were very fortunate to have Enric from Todoist get in touch and offer to help Ghost out with some OS X development.

Having seen how well both Slack and Atom have done in the last few years, we were really excited by the possibility of creating a slick desktop experience to complement our existing web based app.

So we said “hell yes” to Enric, gave him a private repository to play with on Github, and within a week or two he’d thrown together a prototype implementation which had multiple Ghost blogs running in a single OS X application. Rejoice!

It was immediately striking how much more attention the app commanded psychologically by being both in the dock menu, and visibly separated from the browser.

Unfortunately, since the holiday season Enric has (understandably!) become very busy with Todoist again, and has much less time available to play with this. But, we loved where it was going and wondered how we could keep the project alive.

So, we thought: Let’s open up the repository, and see if anyone else is interested in working on this. This is where you come in!

Right now, what we have is a very simple, alpha prototype - but we’re really interested in the possibility of building out a full Electron application to provide native application wrappers for Mac, Windows and Linux. Much like Atom has done.

But we need help.

If this sounds like something that you have some experience with and would be excited to work on, please get in touch via the comments below. We’d love to chat!

Meetings

Public Dev Meeting February 16th

Public Dev Meeting February 16th

Quick Summary Beginning of new features like hashtags and channels as well as lots of internal optimization and testing. Current sprint epic issue [https://github.com/TryGhost/Ghost/issues/6470] Progress Report * Dependency updates - #6478 [https://github.com/TryGhost/Ghost/pull/6478], #6489 [https://github.com/TryGhost/Ghost/pull/6489] * Move the feature controller to a service - #6207 [https://github.com/TryGhost/Ghost/pull/6207] * Adding tests - #6482 [https://github.com/TryGhost/

Inside Ghost

Moving to Singapore

Moving to Singapore

In the next couple of months we’ll be reincorporating the Ghost Foundation in Singapore and closing down all operations in the UK. This is easily the biggest business change we've made to Ghost since it started, and will hopefully give us a much easier time trading internationally! This was a huge decision which represents the conclusion of a full year of research, planning and hard work. So, we wanted to take a moment to share exactly how and why we’re doing it. Let’s start with a simple ques

Meetings

Public Dev Meeting 9th February

Public Dev Meeting 9th February

This week is sprint change over week, so the meeting took place in hangout form. You can watch it back on youtube [https://youtu.be/AoNNIxeiLLo] and see some corresponding chatter in the #dev slack channel [https://ghost.slack.com/archives/dev/p1455039081001272]. Meeting Summary In todays meeting we reviewed the progress of items from the previous two sprints, and put together a new sprint epic [https://github.com/TryGhost/Ghost/issues/6470]. We are continuing to work on and make progress on s

Releases

Ghost 0.7.6

Ghost 0.7.6 is now available on GitHub, npm and Ghost.org. This includes several bug fixes, dependency updates and minor improvements.

Highlights

  • [Fixed] Getting frequently signed out, especially whilst writing a post.
  • [Fixed] Unable to log in to multiple blogs on different subdirectories at the same time.
  • [Fixed] No current class in navigation if you missed a trailing slash from the URL.
  • [Fixed] Blog titles being treated as numbers and other weird data type issues.
  • [Fixed] Horrible errors in the admin panel if the active theme was missing.
  • [Improved] Various CSS and minor UI tweaks, including adding a preview link to the draft saved notification.
  • And much more...

You can see the full change log for the full details of every change included in this release.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.6 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.6 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was lovingly crafted by Kevin Ansfield, Hannah Wolfe, Austin Burdine, Fabian Becker, Kevin P. Kucharczyk, JT Turner, James Seymour-Lock, John O'Nolan, zinyando, Damien Dormal, Matt Enlow, rfpe and Antuan Khanna.

Meetings

Public Dev Meeting February 2nd

Public Dev Meeting February 2nd

Quick Summary Current sprint epic issue [https://github.com/TryGhost/Ghost/issues/6401] Ghost 0.7.6 about to be released containing mostly bug fixes and code updates. Progress Report * Beginning of moving testing from Casper over to Ember - #6426 [https://github.com/TryGhost/Ghost/pull/6426] * Fix not being able to reset password - #6425 [https://github.com/TryGhost/Ghost/pull/6425] * UI/CSS Improvements - #6400 [https://github.com/TryGhost/Ghost/pull/6400], #6412 [https://github.

Meetings

Public Dev Meeting 26th January

Public Dev Meeting 26th January

This week is sprint change over week, so the meeting took place in hangout form and you can watch it back on youtube [https://youtu.be/i0o3O7-OCrk] and see some corresponding chatter in the #dev slack channel [https://ghost.slack.com/archives/dev/p1453829710000269]. Meeting Summary In today's meeting we looked back at progress on the last sprint [https://github.com/TryGhost/Ghost/issues/6328]: the post scheduling spec [https://github.com/TryGhost/Ghost/wiki/Post-Scheduling-101] is now on the wi

Meetings

Public Dev Meeting January 19th

Public Dev Meeting January 19th

Quick Summary First sprint of the new year. Continuation of bug fixes and updates as well as progress towards the new editor. Progress Report * Bug fixes - #6327 [https://github.com/TryGhost/Ghost/pull/6327], #6353 [https://github.com/TryGhost/Ghost/pull/6353], #6314 [https://github.com/TryGhost/Ghost/pull/6314] * Ember updates - #6334 [https://github.com/TryGhost/Ghost/pull/6334], #6350 [https://github.com/TryGhost/Ghost/pull/6350], #6243 [https://github.com/TryGhost/Ghost/pull/6

Meetings

Public Dev Meeting 12th January

Public Dev Meeting 12th January

This week is sprint change over week, so the meeting took place in hangout form and you can watch it back on youtube [http://youtu.be/qTsigi72avE]. Meeting Summary This is the first proper sprint of 2016! In the meeting I talked through the 3 projects we're going to be working on for the next 2 weeks. They are: * New editor demo * Specs for post scheduling * Hashtag feature You can see more details of the progress we're hoping to make in our sprint epic [https://github.com/TryGhost/Ghost/i

Releases

Ghost 0.7.5

Ghost 0.7.5 is now available on GitHub, npm and Ghost.org. This contains a number of bug fixes, and some further improvements to the {{tags}} and {{#foreach}} helpers.

Highlights

  • [New] from and to attributes added to {{tags}} and {{#foreach}}
  • [Fixed] Admin panel slow/unresponsive when navigating or searching with large numbers of posts
  • [Fixed] Private blogging correctly disables author/tag rss feeds
  • [Fixed] Login in Safari's private browsing mode
  • [Fixed] Generation of http vs https urls for meta data
  • [Fixed] Sitemaps missing tag images

You can see the full change log for the full details of every change included in this release.

Theme API Changes

In 0.7.5, the {{tags}} and {{#foreach}} helpers both got two new attributes: from and to. These allow you to output a specific set of data, either from the standard lists of posts and tags that are provided to templates by Ghost, or more powerfully, in conjunction with using the {{#get}} helper to fetch more data.

See the theme API docs for full details of what changed in Ghost 0.7.5. The theme documentation is frequently updated with more details and better examples. Please also use the suggest edits feature if you see something that is missing.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.5 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.5 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was lovingly crafted by Kevin Ansfield, Hannah Wolfe, John O'Nolan, JT Turner, Sean Hussey, Aileen Nowak, Szu Yaung, Austin Burdine, Fabian Becker and Jacob Gable.

Meetings

Public Dev Meeting January 5th

Public Dev Meeting January 5th

Quick Summary Ghost 0.7.4 released and holiday break. Progress Report Fixed autoscoping bug in settings/navigation - #6268 [https://github.com/TryGhost/Ghost/pull/6268] Fixing a small typo in the README. #6261 [https://github.com/TryGhost/Ghost/pull/6261] Everyone took a nice break for the holidays, but there is also a large backlog of unmerged PRs ready to go in this week. The full logs of the meeting [https://ghost.slack.com/archives/dev/p1452015113000636] can be found in our Slack logs.

Releases

Ghost 0.7.4

Ghost 0.7.4 is now available on GitHub, npm and Ghost.org. This contains a handful of bug fixes for things which weren't quite right in 0.7.3, particularly relating to the new Public API features.

Highlights

  • [Fixed] Tag pages for tags starting with numbers
  • [Fixed] Helpers still causing aSyNcId errors when used inside the {{#get}} helper
  • [Fixed] ghost.url.api() utility issue with multiple requests
  • [Fixed] authentication error on resubmitting setup/two
  • [Fixed] broken @last when using {{#foreach}} with limit
  • [Fixed] Duplicate URL input field in image uploader

Also note, in 0.7.3 the ability to use custom post templates was added, but not documented. This is being documented in 0.7.4.

You can see the full change log for the full details of every change included in this release.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.4 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.4 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was lovingly crafted by Fabian Becker, Hannah Wolfe, Austin Burdine, Kevin P. Kucharczyk and Matt Enlow.

Meetings

Public Dev Meeting December 22nd

Quick Summary

Ghost 0.7.3 released and bug fixes.

Progress Report

The full logs of the meeting can be found in our Slack logs.

Priority Issues

  • Testing of the API so we can take it out of labs

Discussion

  • As of 0.7.3, you can now create custom post pages (ex. post-travel.hbs).
  • 0.7.4 about to be released.
  • Experimental work is being put into a new editor.

What is this?

We hold a public development meeting pretty much every Tuesday at 5:30pm London time in the #dev channel on Ghost's slack. In this meeting we discuss progress, important issues, and what is and isn't on the Roadmap. It's a chance for everyone to get involved and have their say about where Ghost goes next.

Hope to see you at next week's meeting: Tuesday 5th January, 5:30pm London time.

Releases

Ghost 0.7.3

Ghost 0.7.3 is now available on GitHub, npm and Ghost.org. This is a maintenance release containing many bug fixes and improvements since 0.7.2.

Highlights

  • [New] permalinks & posts_per_page now available in themes via @blog
  • [New] /shared/ghost-url.js script for accessing the API from external sites
  • [Changed] Now returns 404 for nonexistent pages in pagination & RSS
  • [Fixed] shortcut keys not working in the editor
  • [Fixed] sub-dir being added to navigation urls
  • [Fixed] caret jumping around in published date input
  • [Fixed] checkbox labels being cut off on mobile
  • [Fixed] pagination not working inside the {{#get}} helper
  • [Fixed] issue with some theme helpers causing aSyNcId errors

You can see the full change log for the full details of every change included in this release.

In Detail

Since 0.7.2 there have been numerous refactors both in the Ember admin client and on the server side. Ember & Ember-Data are now at v2.2.0, Ember-cli is at 1.13.13 and ES6 features have been rolled out across the Ember codebase. Meanwhile on the server side, the frontend controller continues to be worked on to move towards dynamic channels.

One significant change to how Ghost works, is that visiting large page numbers which don't exist now always 404, rather than redirecting back to the last available page. This affects both standard pages and the RSS feed. This was changed as redirecting with a 302 error cannot be cached, and is also considered a 'soft-404' crawl error by Google.

Public API Beta Changes

The biggest change to the Public API tools is that the ghost.url.api() utility has been reworked so that it can easily be included and used on an external website. For example, we include it on https://ghost.org so that we can fetch posts from https://blog.ghost.org.

For detailed information on the Public API Beta, please check out the developer guide.

Theme API Changes

The theme API has had a few updates in 0.7.3, including a couple of bug fixes and additions. Most notably, the issue that users were encountering when trying to use certain helpers like {{post_class}} inside the {{#get}} helper and seeing aSyNcId being output on their page has been resolved for most cases.

In addition, the {{tags}} and {{#foreach}} helpers both got a brand new limit attribute and the permalinks and post_per_page settings are now both available to themes via the @blog global data attribute. Update: it is also now possible to specify custom post templates, much like you can for pages, tags & authors already.

See the theme API docs for full details of what changed in Ghost 0.7.3. The theme documentation is frequently updated with more details and better examples. Please also use the suggest edits feature if you see something that is missing.

How to Upgrade

All Ghost(Pro) users are being automatically updated and will be running Ghost 0.7.3 shortly. You're welcome :)

For people running Ghost on their own servers, you can download Ghost 0.7.3 and then check out the upgrade documentation over on our support site.

Note: Having a correctly configured url in config.js is a hard requirement since 0.7.2. If you get the error Access Denied from url whilst trying to login, please see the configuration documentation.

Enjoy!

Credits

This release was lovingly crafted by Hannah Wolfe, Kevin Ansfield, Austin Burdine, Sebastian Gierlinger, Brandon Hops, Gary Cao, Syaiful Bahri, cobbspur, vdemedes, Eric Schultz, John Cruikshank, Kevin P. Kucharczyk, Matthew Beale and StevenMcD.

New

Public API in Labs

Ever wanted a latest posts list? Or a featured posts list? Or a list of your tags? The API makes all of this (and much more) possible...

Since day one, Ghost has been powered by its own JSON API, which provides access to all posts, tags, users and so on. Until very recently, the API was locked down and not accessible to the outside world. We're slowly adding a set of tools to Ghost labs to make it super easy to grab and display your posts and tags however you want.

As a blog owner, this gives you enormous amounts of power and flexibility for how and where you can display your blog posts.

Before: Sidebars like this had to be hard coded or laboriously extracted from RSS feeds.

Now: Themes can easily include lists of recent, featured, or related posts using the get helper, which provides quick access to the API for themes. Tags are also available, so you can even go 90s-style and add a tag cloud to your blog!

If you want to break out from your Ghost blog and display your latest posts on a different website, the API lets you do this with ease. Ghost now has a built-in script that can be included in your site to make fetching your posts via ajax quick and simple.

Display posts on external site

Before: The only way to display data from your Ghost blog was to fetch the latest posts from the RSS feed.

Now: The API lets you quickly fetch and display posts on a different site with ajax.

The possibilities for getting data from the API are practically endless. Posts, tags and users can all be fetched and filtered in various ways. We're also working on enabling write access, so it'll soon be possible to publish posts from 3rd party applications.

These features are currently in Beta. Ghost(Pro) users can get access by enabling this feature in Ghost labs. Users running Ghost on their own servers can get access by upgrading to Ghost 0.7.3.