master === * Add the option of naming `config.rb` as `middleman.rb`. * Builder extracted from Thor. `after_build` hook now passes an instance of a Builder instead of the Thor CLI. * New FileWatcher API. * Remove the `partials_dir` setting. Partials should live next to content, or be addressed with absolute paths. * Partials must be named with a leading underscore. `_my_snippet.html.erb`, not `my_snippet.html.erb`. * Removed the `proxy` and `ignore` options for the `page` command in `config.rb`. Use the `proxy` and `ignore` commands instead of passing these options to `page`. * The `page` command in `config.rb` can now be used to add data to the page via the `data` argument. It is accessed the same way as frontmatter data, via `current_resource.data`. * Add support for `environments` with the `-e` CLI flag. Loads additional config from `environments/envname.rb`. Removed `development?` helper in favor of `environment?(:development)`. Added `server?` helper to differentiate between build and server mode. * Removed `with_layout`. Use loops of `page` instead. * Removed Queryable Sitemap API * Removed `css_compressor` setting, use `activate :minify_css, :compressor =>` instead. * Removed `js_compressor` setting, use `activate :minify_javascript, :compressor =>` instead. * Removed ability to server folders of content statically (non-Middleman projects). * Prevent local templates being loaded when $HOME is not set * Removed "Implied Extension feature" * Remove 'upgrade' and 'install' CLI commands. * Gemfile may be in a parent directory of your Middleman project root (where 'config.rb' is). * All dependencies for your Middleman project must be expressed in `Gemfile` - Bundler is no longer optional. * Asciidoc information now available with the `asciidoc` local, which is a normal hash. * Remove `page` template local. Use `current_resource` instead. * Dropped support for providing a block to `page` & `proxy`. * Dropped support for instance variables inside templates. * Moved all rendering into `TemplateRenderer` and `FileRenderer` * Placed all template evaluation inside the `TemplateContext` class * Remove deprecated `request` instance * Remove old module-style extension support * Placed all `config.rb` evaluation inside the `ConfigContext` class 3.3.7 === * Update new project template Gemfile to use HTTPS by default. #1372 3.3.6 === * Use full paths instead of relative for `listen` gem. Fixes #1374 * Add force option to "middleman init". #1369 * Configuration addition for compass 1 compatibility. * Catch File read exceptions in frontmatter. * Remove duplicate attr_accessor. Closes #1352 * Update sass dependency to >= 3.4.0. * Update compass dependency to >= 1.0.0, < 2.0.0 * Accept pandoc-style YAML frontmatter. #1350 * Add webp to image type lists. 3.3.5 === * Update Padrino to ~> 0.12.3 (removed breadcrumb helper) * Update compass-import-once to 1.0.5 * Fix issue with Slim partials. #1327 3.3.4 === * Fix `automatic_alt_tags` error. #1341 * `partial` now looks for i18n suffixed filenames. #1333 * Allow excluding paths from `gzip`. #1268 * Let LiveReload work on 404 pages. * Update `listen` dependency. 3.3.3 === * Fix thread-safety issue #501 which could cause excepts when livereloading. * Update to support Hooks 0.4.x dep. * Update to support Padrino 0.12.2+ dep. * Fix `after_render` manipulation of content. #1278 * Fix combo of compass-import-once and sass-globs. middleman/middleman-sprockets#56 3.3.0-3.3.2 === * Update Padrino to 0.12.1. Introduces BREAKING CHANGE for Haml. Helpers which take blocks used to require `-` instead of `=` to work correctly. Now, all helpers which output content should use `=`. See: http://www.padrinorb.com/blog/upgrading-padrino-from-0-11-x-to-0-12-0-guide * Update Haml to 4.x * Disable Webrick reverse DNS lookup, vastly improving performance when accessing from a VM. * Ignore `node_modules` in FileWatcher * Add `tzinfo-data` for Windows users. * Prefer loading layouts from `layouts_dir` * Add `before_build` hook. * Depend on Erubis and remove support for specifying another ERb engine. * Removed the ability to set the `sass_cache_path`. * Improved /__middleman/ meta pages. For example, sitemap view now calls out ignored resources, prints data/options better, and shows which special locals are available on a page. * Bump Uglifier to 2.5.x 3.2.2 === * Specify the full path to the NEWLINE constant * Refactor some internals which were dependent on certain order of operations * Updated i18n dep * Updated Uglifier dep 3.2.1 === * Allow path to be passed to page_classes. #1120 * Parallelize gzip extension using four threads. #1116 * Fix locale issue when using gzip extension * Better handle UTF-8 filenames * Update Padrino to 0.11.4 and Tilt to 1.4.1 3.2.0 === * Dropped support for Ruby 1.8 * Dropped empty "middleman-more" gem * Support the AsciiDoc format * `page_classes` now prefixes class names starting with numbers with an alpha character. "x" by default. * AREL-style sitemap query language no longer mutates on filter * Logging can now be forwarded to a file * Syntax errors in config.rb no longer hang the server * Fixed memory leak when adding blocks to resources. #1020 * Support HEAD requests in the server 3.1.6 === * Magic sitemap-aware links and image references now work when your markdown engine is Kramdown (the default for Middleman). * Having the build directory be a symlink no longer causes the --clean (default) option to wipe out your build. * Fix handling paths and URLs with spaces in them. #961 * Loosen up Kramdown dependency to allow for using version 1.2. * Loosen up Listen dependency so it works with sass betas. * Look for assets using url_for before falling back to the "images" directory. #1017 * Do not cache generated redirect index file. #1019 * Make an effort to handle spaces in filenames in a way that url_for can handle. #961 * Fix localization via filename extension. #1015 3.1.5 === * Escape filenames in regexes. Fixes #942. * Create automated alt tag addition, based on image name. * Add listener latency option. (Aliased to -l) * Add support/tests for Redcarpet 3.0.0 features - :underline - :highlight - :disable_indented_code_blocks * Fix support for - :link_attributes - :filter_html 3.1.4 === * Support kramdown 1.1 * Support redcarpet's :no_links & :no_images. #951 3.1.3 === * Fixed typo in rack extensions block * Add support for nojekyll dotfile 3.1.2 === * Locales regex was broken, selecting .yml files from data folder. * Fix for implied extensions getting a layout. (Mentioned in #901)git pu * Added `redirect` command for generating meta refreshes 3.1.1 === * Check if set is redefining a param at the class level. Fixes #939 * Correctly escape `content_tag` when using a block. Fixes #941 3.1.0 Highlights === * Autoload support (moving away from middleman-more) * New Configuration System * New v4 Extension API * `/__middleman' inspector * Added Ruby 2.0, dropped Ruby 1.9.2 * Fully tested on JRuby 1.9 * Build defaults to --clean 3.1.0.rc.4 === * Blocks with different templating languages than their layout now work as expected. #860 * Ruby 1.8 users will need to add the following to their Gemfiles: platforms :mri_18 do gem "ruby18_source_location" end * The `endpoint` method allows the building of Rack-based files or arbitrary content. 3.1.0.rc.2 === * `layouts_dir` is now configurable * Custom template classes can now override the file used for creating the project Gemfile. * Add an "empty" template that produces the minimum necessary structure for a Middleman project. * Fix ignoring layouts from the sitemap when the source directory has been set to something other than 'source'. #896 * Track test coverage with simplecov * i18n only autodetects languages in the `locales` root * Frontmatter cache fixes solve performance regressions found in 3.1.x * Vendor padrino-* to avoid dep hell * `middleman-more` gem returns, but it's empty for backwards compat * Prefer internal files.exists? over ruby's slow File.exists? 3.1.0.rc.1 === * Move more into core, autoloaded if gems are available. * DataStore may now be accessed like a hash with #[] and #has_key?. #880 * The i18n extension now supports providing localized templates as separate files, like index.es.html.haml. #816, #823 * The list of regular expressions for which files are ignored by the file watcher are now configurable. * Revert to Thor 0.15.x * Revert to padrino-helpers 0.10.x (dependency hell) * Drop i18n dep to match activesupport at 0.6.1 3.1.0.beta.2 === * Extension template uses new class-based Extension * Fix missing children in some sitemap traversal operations. #837 * Add respond_to? to DataStore. #872 * Allow discovery of prerelease gems. #873 * Include middleman-livereload in default Gemfile * Update Rack dependency to 1.5.x * Update to Listen 1.0.x * Update to padrino-helpers 0.11.x * Update uglifier to 2.0.x * Convert all of middleman-more to new class-based Extensions 3.1.0.beta.1 === * Support Slim 2.0 ::Slim::Embedded * "middleman build" will clean out old files from the build directory by default now, without needing to pass "--clean". Pass "--no-clean" to disable. #862 * Allow frontmatter to be side-loaded from a neighboring file with a .frontmatter extension: #855 * Allow frontmatter "renderer_options" key to overwrite renderer options on a per-file basis. #859 * A custom :partials_dir may be configured, and partials will be looked up from it. #854 * The sprockets environment is now available before config.rb is run, so you can mess with it. * Added a "t" helper that delegates to I18n.t, just like Rails. #853. * I18n will fall back to the default locale if a translation in the current locale is not found. You can disable this behavior by passing `:no_fallbacks => true` when activating `:i18n`. More settings documented at https://github.com/svenfuchs/i18n/wiki/Fallbacks . #853 * Switched default Markdown engine to Kramdown. #852 * Overhaul content-type handling, and add a `:content_type` parameter for `page`, `proxy`, and frontmatter that allows for overriding the default content type. #851 * Fixes for upcoming Sass versions. * Fix markdown filters in Haml 4 so that they don't throw errors when generating links/images and so they use our magic image_tag/link_to methods. #662 * Fix a number of bugs with i18n. Add a `:lang` option that can be used with `page` or `proxy` to set the I18n.locale of a page. #845 * Directory names in the data folder are treated as part of the data key. #836 * Properly reload the server when files change in "lib" or "helpers". #835 * Replace Rainpress CSS minifier with the one built into Sass. * Changed 'default' and 'html5' templates to use 'current_page.data.title' instead of 'data.page.title'. #825 * Include file extension in template cache. #798 * Support for Ruby 2.0.0. * "middleman console" will give you a console where you can mess around inside your middleman context. #775 * Add to Compass import paths instead of resetting them. #707 * There are now metadata pages in the preview server at "/__middleman/" that show information about the sitemap and site configuration. #374 and #776 * The sitemap is now queryable with an ARel-like API. #650 * Reorganize SMACSS template. #591 * No longer bundle native file watchers - add an appropriate gem (rb-fsevent for OS X, rb-inotify for Linux, wdm for windows) to your Gemfile. * `activate :asset_host, :host => hostname` can be used to configure `:asset_host`. * Path matchers (for things like ignore and page) correctly work with string matchers. #689 * Configuration has been moved to Middleman::Configuration::ConfigurationManager. This is backwards-compatible, but offers a nicer way of getting and setting configuration for extensions, including documenting those settings and their defaults. #620. 3.0.13 === * Require Tilt 1.3.6 (older versions have errant .csv template type) * Unregister Tilt HTML handler * Fix dynamic multi-byte utf-8 files rebuilding. #806 * Force locale to english for number_to_human_size in the gzip extension. #804 * Don't use the logger from a trap context. Ruby 2.0.0 support. #801. * Serve extensionless files or dotfiles with text/plain MIME type 3.0.12 === * Update to listen 0.7.x. No longer depend on rb-inotify. *nix users should add to Gemfile. * Support Haml 4 * :debug_assets can no longer be turned on in the build environment. * Helpers now work with JS/CSS files with .erb processing. * Provide an informative exception when link_to is used improperly. * Force .svgz files to be treated as binary. * Add a url_for method that performs the link_to magic URL generation without a link. Make form_for use url_for. #739 * Fix issues when combining relative assets and cache buster. * Support the .yaml extension for data files. * Handle non-english default languages in i18n. Fixes #584. #771 * Allow frontmatter to be parsed on templates outside the project root * Improve detection of binary files. #763 * Add before_render and after_render hooks that can be used by extensions to modify templates before they're rendered or modify the rendered output before it's returned. #761 & #774 * Tightened up dependencies * Print the command for running middleman in verbose mode with quotes so Bundler doesn't swallow the verbose flag. #750 3.0.11 ==== * Mitigate major perf regression caused by the Middleman::Util#binary? method 3.0.10 ==== * Avoid looking in binary files for frontmatter. #728 * Allow nested i18n files. #725 * Better adapt to Rack interface. #709 * Add --force-polling flag. #730, #644 3.0.9 ==== * Lock Rack to 1.4.1 until BodyProxy bug is resolved. #709 * Safely de-register Tilt extensions which are missing gems. #713 3.0.8 ==== * Directly send binary files in preview and copy them in build, avoiding reading large binary files into memory for rendering. #643 #699 * Make link_to helper ignore QueryString values when looking up Sitemap resources * Directly copy binary files during build, and stream them during preview, to avoid reading them into memory * Make sure all paths in Sitemap are using Pathname 3.0.7 ==== * Turn html5 boilerplate into a layout * Fix errors when templates have empty YAML * Show the hostname when initializing MM * Fix issues when using Redcarpet inside Slim * Make automatic_image_sizes avoid SVGs 3.0.6 ==== * Make Sitemap more thread-safe. * Asset-hash fixes in conjunction with Sprockets. * Proxy improvements. * Handle directories with a tilde (~) in their path. * Print better error message which port is already in use. * Terminal signal improvements, shutsdown correctly when Terminal closed. * Bundled Normalize.css updated to 2.0.1 * Fixed Encoding extension activation * Reload i18n on file changes (#616) 3.0.5 ==== * Require newer version of listen. * Handful of sitemap speed improvements. * Fix previewing of directories with periods in their name. * Add CLI ability to skip gemfile and bundler init. * Fix asset_hash when used in conjunction with Rack middleware. * Fix LiveReload extension issues. 3.0.3-3.0.4 ==== * Add reload_paths to server CLI to add additional paths to reload MM on change. * Re-organize app reloading code, don't need to restart listen every time. 3.0.2 ==== * Logger has no such method .warning. Closes #582 3.0.1 ==== * HTML5 Boilerplate version 4.0.0 * Use wdm for Windows * Fix buggy color renaming in built-in CSS minifier. #576 * Fix Sass/Scss filter in Slim templates * Added SMACSS template * Give file metadata (such as frontmatter) precedence over path meta. #552 * Add `sass_assets_paths` option for arbitrary sass partial locations. * Don't catch CoffeeScript errors when in build mode. * Extract load_paths so they aren't locked into the binary * Add middleman/rack for better config.ru support * Use centralized Logger and add benchmark methods 3.0.0 ==== * Improve asset methods and link_to by making them more clever and aware of options such as relative_assets and http_prefix * Refer to --verbose, instead of --debug in CLI error message (#505) * Cleanup listener setup and teardown * Update to Padrino 0.10.7 and Thor 0.15 (#495) * Build output correctly shows update and identical, instead of create for all. * automatic_directory_matcher (#491) 3.0.0.rc.2 ==== * Doing a build now shows identical files (#475) * asset_hash, minify_javascript, and minify_css can now accept regexes, globs, and procs (#489, #480) * The `link_to` helper can now accept a sitemap Resource as a URL (#474) * The preview server now correctly listens for changes (#487, #464) * HTMLs are now served with a 'utf-8' charset instead of 'utf8' (#478) * UTF-8 is now the new default encoding for data and templates (#486, #483) * New :encoding setting that allows users to change default encoding * You may now use the `use` method with a block when adding Rack middleware * Middleman now depends on Listen 0.4.5+ and ActiveSupport 3.2.6+ * Attempt to avoid issues with RVM's default Bundler (#466) * Fix issue where Middleman won't start with Compass 0.12.2.rc.1 (#469) 3.0.0.rc.1 ==== * Split into 3 gems (middleman-core, middleman-more and middleman which simply includes both) * Rewritten to work directly with Rack (Sinatra apps can still be mounted) * Sitemap maintains own state * New Extension Registration API * Remove old 1.x mm- binaries and messaging * New default layout functionality: https://github.com/middleman/middleman/issues/165 * Enable chained templates outside of sprockets (file.html.markdown.erb) * Sitemap object representing the known world * FileWatcher proxies file change events * Unified callback solution * Removed Slim from base install. Will need to be installed and required by the user (in - config.rb) * Activate mobile html5boilerplate template * Update to Redcarpet for Markdown (breaks Haml :markdown filter) * Return correct exit codes (0 for success, 1 for failure) from CLI * Yard code docs: http://rubydoc.info/github/middleman/middleman * config.rb and extensions can add command-line commands * Nested layouts using `wrap_layout` helper * Support for placekitten.com * Added MM_ROOT environmental variable * activating extensions can now take an options hash * Don't re-minify files with ".min" in their name * Serve purely static folders directly (without source/ and config.rb) * Set ignored files and disable directory_indexes from YAML frontmatter * Automatically load helper modules in helpers/ directory * Add pid for cleanup * Use guard/listen for file watching * Merge full i18n support * Implied file extensions (style.scss => style.css) * Padrino 0.10.6 * `middleman init` generates a `Gemfile` by default. * Errors stop the build and print a stacktrace rather than silently getting printed into files. * `with_layout` works with globs or regexes. * Setting `directory_index` from `page` with a glob or regex now works. * `:gzip` extension for pre-gzipping files for better compression with no server CPU cost. * `:asset_hash` extension that generates unique-by-content filenames for assets and rewrites references to use those filenames, so you can set far-future expires on your assets. * Removed the `--relative` CLI option. * Properly output Compass-generated sprited images. * Switch built-in CSS compressor to Rainpress. * Automatically load helper modules from `helpers/`, like Rails. * `ignore` and `page` both work with file globs or regexes. * `layout`, `ignore`, and `directory_index` can be set from front matter. * JavaScript and CSS are minified no matter where they are in the site, including in inline code blocks. * Files with just a template extension get output with the correct exension (foo.erb => foo.html) * `link_to` is smart about source paths, and can produce relative URLs with the `:relative` option or the sitewide `:relative_links` setting. * Include vendored assets in sprockets path. * Finally support Compass in Sprockets! Thanks to @xdite and @petebrowne * Moved Sprockets into an extension * Support loading Less @imports 2.0.14 ==== * Minor fix for i18n 2.0.13.2 ==== * Update Windows eventmachine dep 2.0.13.1 ==== * build --clean shouldn't remove dotfiles 2.0.13 ==== * middleman build --clean keeps the build directory clean of leftover files * Padrino 0.10.5 and Rack 1.3.5 2.0.12 ==== * Sinatra 1.3.1 and Padrino 0.10.4 2.0.11 ===== * Lock Padrino and Sinatra versions (for now) 2.0.9 ===== * Added --glob option to build which only builds matching files * Allow data/ files to be in JSON format as well * Enabled Liquid {% include %} tag * RubyInstaller-specific gem * Allow access to data/ in config.rb * Add mobile html5boilerplate template 2.0.8 ===== * Support accessing variables and data objects in ERb Sprockets files (library.js.coffee.erb) * Make :markdown_engine support simple symbol names (:maruku instead of ::Tilt::MarkukuTemplate) * Update Padrino deps to 0.10.2 * Include therubyracer on *nix * Enable frontmatter for Liquid templates 2.0.7 ===== * Updated HTML5 Boilerplate to v2 * Make Rails 3.1 javascript gems available to Sprockets 2.0.6 ===== * Pulled out livereload feature into its own extension, still installed by default. 2.0.5 ===== * Vendored Padrino 0.10.0 2.0.4 ===== * Pulled out undocumented remote data feature into its own extension 2.0.3 ===== * Pulled out undocumented Blog feature into its own extension 2.0.2 ===== * Fixed Sprockets circular error * Added auto-requiring extensions 2.0.0 ===== * Guard-powered auto-reloading of config.rb * Guard LiveReload * Sprockets JS * Refactored Dynamically Reloadable Core * Combine views/ and public/ into a single source/ folder. * Support YAML front-matter * Added callback to run code after Compass is configured * Added support for a compass.config file which is passed directly to Compass * Blog-aware Feature (and project template) * Thor-based, unified `middleman` binary * :directory_indexes feature