closes#321, closes#323
- use `requestAnimationFrame` and related techniques to minimise scroll processing
- add an `isLoading` guard to ensure we don't try to process anything until the next page has been loaded+inserted
- check for a 404 as an indication we've loaded as many pages as possible at which point the scroll behaviour is removed
- sanitize `window.location.pathname` to remove hash params and any double-slashes that may result
- add a 100px buffer from the bottom of the screen so that it's not necessary to exactly hit the bottom before infinite loading is triggered
refs TryGhost/Ghost#2597
Make Casper work without old body classes `.archive-template`, `.page` and use `.page-template` *only* for pages, as `.post-template` will not be available for pages anymore.
no issue
- Our new marketplace (gpm) will make heavy use of package.json files
- Full details, spec, and validator are coming soon. In the meantime here's the basics:
- `name` must be lowercase and hypenated
- `version` must be semver compliant
- `homepage` should be a valid URL (GitHub URL is ok)
- `demo` should be a working Ghost install that uses your theme
- `engines` should contain a Ghost key indicating which version of Ghost the theme is compatible with
- `license` is required, we recommend `MIT`
- `screenshots` should provide a relative path or absolute URL to both `desktop` & `mobile` screenshots
- `author` should be an object. It must contain an email, and can also include a name and url.
- the `gpm` object should:
- indicate the package type (`theme` for now, later `app` or `adapter` etc)
- list out at most 2 marketplace categories for inclusion. Categories can be found in https://gist.github.com/ErisDS/d0674f57eaa087c9f92cbfc8e984d2d6 but are subject to change.
- other fields can be included as per a normal npm package, we recommend including the repostory & keywords with `ghost` & `theme` listed.