Major Enhancements
- Drop ruby 2.3 (#7454)
- Drop support for Ruby 2.1 and 2.2 (#6560)
- Drop support for older versions of Rouge (#6978)
- Drop support for pygments as syntax-highlighter (#7118)
- Drop support for Redcarpet (#6987)
- Drop support for rdiscount (#6988)
- Drop support for
jekyll-watch-1.4.0
and older (#7287) - Incorporate
relative_url
filter inlink
tag (#6727) - Upgrade kramdown dependency to v2.x (#7492)
- Upgrade jekyll-sass-converter to v2.x - Sassc + sourcemaps (#7778)
- Upgrade i18n to v1.x (#6931)
- Add
Jekyll::Cache
class to handle caching on disk (#7169) - Cache converted markdown (#7159)
- Cache: Do not dump undumpable objects (#7190)
- Cache matched defaults sets for given parameters (#6888)
- Ignore cache directory (#7184)
- Add
Site#in_cache_dir
helper method (#7160) - Remove 'cache_dir' during
jekyll clean
(#7158) - Cache parsed Liquid templates in memory (#7136)
- Only read layouts from source_dir or theme_dir (#6788)
- Allow custom sorting of collection documents (#7427)
- Always exclude certain paths from being processed (#7188)
- Remove Jekyll::Utils#strip_heredoc in favor of a Ruby > 2.3 built in (#7584)
- Incorporate
relative_url
withinpost_url
tag (#7589) - Remove patch to modify config for kramdown (#7699)
Minor Enhancements
- Enhance
--blank
scaffolding (#7310) - Use
jekyll-compose
if installed (#6932) - Disable Liquid via front matter (#6824)
- Configure cache_dir (#7232)
- ISO week date drops (#5981)
- Fix custom 404 page for GitHub pages (#7132)
- Load config file from within current theme-gem (#7304)
- Suggest re-running command with
--trace
on fail (#6551) - Support for binary operators in where_exp filter (#6998)
- Automatically load
_config.toml
(#7299) - Add vendor folder to a newly installed site's .gitignore (#6968)
- Output Jekyll Version while debugging (#7173)
- Memoize computing excerpt's relative_path (#6951)
- Skip processing posts that can not be read (#7302)
- Memoize the return value of Site#documents (#7273)
- Cache globbed paths in front matter defaults (#7345)
- Cache computed item property (#7301)
- Cleanup Markdown converter (#7519)
- Do not process Liquid in post excerpt when disabled in front matter (#7146)
- Liquefied link tag (#6269)
- Update item_property to return numbers as numbers instead of strings (#6608)
- Use
.markdown
extension for page templates (#7126) - Add support for
*.xhtml
files (#6854) - Allow i18n v0.9.5 and higher (#7044)
- Ignore permission error of /proc/version (#7267)
- Strip extra slashes via
Jekyll.sanitized_path
(#7182) - Site template: remove default config for markdown (#7285)
- Add a custom inspect string for StaticFile objects (#7422)
- Remind user to include gem in the Gemfile on error (#7476)
- Search Front matter defaults for Page objects with relative_path (#7261)
- Lock use of
tzinfo
gem to v1.x (#7521, #7562) - Utilize absolute paths of user-provided file paths (#7450)
- Detect
nil
and empty values in objects withwhere
filter (#7580) - Initialize mutations for Drops only if necessary (#7657)
- Reduce Array allocations via Jekyll::Cleaner (#7659)
- Encode and unencode urls only as required (#7654)
- Reduce string allocations with better alternatives (#7643)
- Reduce allocations from Jekyll::Document instances (#7625)
- Add
type
attribute to Document instances (#7406) - Reduce allocations from where-filter (#7653)
- Memoize SiteDrop#documents to reduce allocations (#7697)
- Add PathManager class to cache interim paths (#7732)
- Remove warnings and fixes for deprecated config (#7440)
- Delegate --profile tabulation to
terminal-table
(#7627)
Bug Fixes
- Security: fix
include
bypass ofEntryFilter#filter
symlink check (#7226) - Theme gems: ensure directories aren't symlinks (#7419)
- Add call to unused method
validate_options
incommands/serve.rb
(#7122) - Check if scope applies to type before given path (#7263)
- Document two methods, simplify one of the methods (#7270)
- Check key in collections only if it isn't "posts" (#7277)
- Interpolate Jekyll::Page subclass on inspection (#7203)
- Measure the no. of times a template gets rendered (#7316)
- Reduce array traversal in Jekyll::Reader (#7157)
- Re-implement handling Liquid blocks in excerpts (#7250)
- Documents should be able to render their date (#7404)
- Fix Interpreter warning from Jekyll::Renderer (#7448)
- Loggers should accept both numbers and symbols (#6967)
- Replace regex arg to :gsub with a string arg (#7189)
- Dont write static files from unrendered collection (#7410)
- Excerpt handling of custom and intermediate tags (#7382)
- Change future post loglevel to warn to help user narrow down issues (#7527)
- Handle files with trailing dots in their basename (#7315)
- Fix unnecessary allocations via StaticFileReader (#7572)
- Don't check if site URL is absolute if it is nil (#7498)
- Avoid unnecessary duplication of pages array (#7272)
- Memoize Site#post_attr_hash (#7276)
- Memoize Document#excerpt_separator (#7569)
- Optimize Document::DATE_FILENAME_MATCHER to match valid filenames (#7292)
- Escape valid special chars in a site's path name (#7568)
- Replace
name
in Page#inspect with relative_path (#7434) - Log a warning when the slug is empty (#7357)
- Push Markdown link refs to excerpt only as required (#7577)
- Fix broken include_relative usage in excerpt (#7633)
- Initialize and reset glob_cache only as necessary (#7658)
- Revert memoizing Site#docs_to_write and #documents (#7684)
- Backport #7684 for v3.8.x: Revert memoizing Site#docs_to_write and refactor #documents (#7689)
- Backport #7213 and #7633 for v3.8.x: Fix broken include_relative usage in excerpt (#7690)
- Don't read symlinks in site.include in safe mode (#7711)
- Replace
String#=~
withString#match?
(#7723) - Update log output for an invalid theme directory (#7679)
- Remove configuration of theme sass files from Core (#7290)
- Actually conditionally include liquid-c (#7792)
- Test number_like regex on stringified property (#7788)
Development Fixes
- Upgrade liquid-c to v4.0 (#7375)
- Bump RuboCop to v0.71.0 (#7687)
- Target Ruby 2.4 syntax (#7583)
- Fix: RuboCop offenses (#7769)
- Use communicative method parameters (#7566)
- Scan
assert_equal
methods and rectify any offenses with a custom RuboCop cop (#7130) - CI: Test with Ruby 2.6 (#7438)
- CI: Test with Ruby 2.6 on AppVeyor (#7518)
- CI: Update RuboCop config (#7050)
- CI: Add a script to profile docs (#7540)
- CI(Appveyor): shallow clone with 5 last commits (#7312)
- CI: Test with oldest and latest Ruby only (#7412)
- CI: Update excludes for CodeClimate Analyses (#7365)
- CI: Lock Travis to Bundler-1.16.2 (#7144)
- CI: Bump tested version of JRuby to 9.2.7.0 (#7612)
- CI: Do not install docs on updating gems on Travis (#7706)
- Update gemspec (#7425)
- deps: relax version constraint on classifier-reborn gem (#7471)
- deps: update yajl-ruby (#7278)
- deps: bump yajl-ruby to v1.4.0 (#6976)
- Create symlink only if target is accessible (#7429)
- Switch to
:install_if
for wdm gem (#7372) - Add cucumber feature to test include_relative tag (#7213)
- Small benchmark refactoring (#7211)
- Fix incorrectly passed arguments to assert_equal (#7134)
- fix up refute_equal call (#7133)
- Fix RuboCop offences in test files (#7128)
- Use assert_include (#7093)
- Remember to release docs gem (#7066)
- Useless privates removed (#6768)
- Load Rouge for TestKramdown (#7007)
- Update instructions for releasing docs Gem (#6975)
- We are not using Ruby 2.2 anymore (#6977)
- Remove unnecessary Jekyll::Page constant (#6770)
- Remove unused error class (#6511)
- Add a Cucumber feature for post_url tag (#7586)
- Generate a "TOTAL" row for build-profile table (#7614)
- Refactor Jekyll::Cache (#7532)
- Store list of expected extnames in a constant (#7638)
- Profile allocations from a build session (#7646)
- Update small typo in contributing.md (#7671)
- Remove override to Jekyll::Document#respond_to? (#7695)
- Update TestTags in sync with Rouge v3.4 (#7709)
- Use regexp to filter special entries (#7702)
- Reduce Array objects generated from utility method (#7749)
- Update mime.types (#7756)
- Replace redundant Array#map with Array#each (#7761)
- Reduce allocations by using #each_with_object (#7758)
- Memoize fallback_data for Drop (#7728)
- Use String#end_with? to check if entry is a backup (#7701)
Documentation
- Refactor docs (#7205)
- Add a link to Giraffe Academy's tutorial (#7325)
- Do not advise users to install Jekyll outside of Bundler (#6927)
- Remove documentation for using Redcarpet (#6990)
- Install Docs that Work on MacOS 10.14 (#7561)
- Add Installation Instructions for Ubuntu (#6925)
- Don't prompt for sudo when installing with Ubuntu WSL (#6781)
- Installation instructions for Fedora (#7198)
- Update Windows install docs (#6926)
- List all standard liquid filters (#7333)
- List all static files variables (#7002)
- Improve how to include Rouge stylesheets (#7752)
- Mention CommonMark plugins (#7418)
- Add TSV to list of supported _data files. (#7168)
- How to deploy using pre-push git hook (#7179)
- Hosting with AWS Amplify (#7510)
- CircleCI deployment through CircleCI v2 (#7024)
- GitHub Pages: use themes from other repos (#7112)
- Document page.dir and page.name (#7373)
- Document custom tag blocks (#7359)
- Document converter methods (#7289)
- Document
{{ page.collection }}
(#7430) - Document Jekyll Filters with YAML data (#7335)
- Document where Jekyll looks for layouts in a site (#7564)
- plugin: liquid tag jekyll-flickr (#6946)
- plugin: jekyll-target-blank (#7046)
- plugin: json-get. (#7086)
- plugin:
jekyll-info
(#7091) - plugin: jekyll-xml-source (#7114)
- plugin: jekyll-firstimage filter (#7127)
- plugin: CAT (#7011)
- Resources: Statictastic (#7593)
- Resources: Bonsai Search (#7543)
- Resources: Formspark (#7601)
- Resources: Jekpack(#7598)
- Resources: formX (#7536)
- Resources: 99inbound's Jekyll post (#7348)
- Resources: CloudSh (#7497)
- Community: DEV Community's Jekyll tag (#7139)
- Showcase: developer.spotify.com (#7217)
- Showcase: Isomer (#7300)
- Add version number for group_by_exp doc (#6956)
- Updated nginx configuration for custom-404-page documentation (#6994)
- Clarify definition of 'draft' (#7037)
- _drafts need to be contained within the custom collection directory (#6985)
- Updated to supported version (#7031)
- Add Hints for some Improved Travis Config in Doc (#7049)
- Update travis-ci.md to point out "this is an example Gemfile" (#7089)
- Instructions to view theme’s files under Linux (#7095)
- Use a real theme in the example (#7125)
- Update docs about post creation (#7138)
- Initialize upgrading doc for v4.0 (#7140)
- Add version badge for date filters with ordinal (#7162)
- Corrected sample usage of postfiles (#7181)
- Resolve "Unable to locate package ruby2.4" error (#7196)
- Correct stylesheet url in tutorial step 7 (#7210)
- Removes quotes from markdown for assets (#7223)
- Clarified front matter requirement (#7234)
- Explicit location of where to create blog.html (#7241)
- Reference the build command options that allows multiple config files (#7266)
- Add more issue template(s) and pull request template (#7269)
- Suggest sites use OpenSSL instead of GnuTLS for their site's CI (#7010)
- Fix broken Contributors link in README.markdown (#7200)
- Add title tag to item in RSS template (#7282)
- Add link tag to item in RSS template (#7291)
- Remove redundant instruction comment (#7342)
- Textile is only supported through a converter plugin (#7003)
- Add recursive navigation tutorial (#7720)
- Remove installation instructions with Homebrew (#7381)
- Fix dead link and misleading prose (#7383)
- Fix content management section (#7385)
- Apply ruby official guide documents (#7393)
- Fix group_by_exp filter example (#7394)
- Remove alt attribute from a tags (#7407)
- Fix BASH code-block in ubuntu.md (#7420)
- zlib is missing (#7428)
- Fixed unnecessary aticles and pronouns (#7466)
- Store SSL key and cert in site source (#7473)
- Fix typo in tutorial for converting existing site (#7524)
- Check if var exists before include tag (#7530)
- Clarify docs on collections regarding the need for front matter (#7538)
- Fix incorrect Windows path in themes.md (#7525)
- Addresses bundle not found. (#7351)
- Update the contribution docs for draft pull requests (#7619)
- Data file section adds TSV (#7640)
- Indicate where the _sass folder is by default (#7644)
- Docs: add version tags to new placeholders (#5981) for permalinks (#7647)
- Solve "GitHub Page build failure" in 10-deployment.md (#7648)
- fix link to Site Source config (#7708)
- Introduce frontmatter in step 2 (#7704)
- Add @ashmaroli to Core Team listing (#7398)
- Lnk to Tidelift in site's footer (#7377)
- Link to OpenCollective backing (#7378
- Link to sponsor listing in README (#7405)
- Adjust team page listings (#7395)
- Updates to CODE OF CONDUCT (v1.4.0) (#7105)
- More inclusive writing (#7283)
- Update Ruby version used in Travis-CI example (#7783)
- Documentation for binary operators in where_exp (#7786)
- Adding SmartForms as Forms service (#7794)
Site Enhancements
- Better Performance (#7388)
- Add some minor improvements to image loading in Showcase page (#7214)
- Simplify assigning classname to docs' aside-links (#7609)
- Simplify couple of includes in the docs site (#7607)
- Avoid generating empty classnames (#7610)
- Minimize rendering count (#7343)