diff --git a/CHANGELOG b/CHANGELOG
index aa9ef833b..9a180dae0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,20 +10,26 @@ mkdocs-material-1.0.0-rc.1 (2016-XX-XX)
* Introduced Webpack for more sophisticated JavaScript bundling
* Introduced ESLint and SassLint for code style checks
* Introduced more accurate Material Design colors and shadows
- * Introduced Modular Scales for harmonic font sizing
- * Rewrite of CSS using the BEM methodology and SassDoc styles
+ * Introduced modular scales for harmonic font sizing
+ * Rewrite of CSS using the BEM methodology and SassDoc guidelines
* Rewrite of JavaScript using ES6 and Babel as a transpiler
* Rewrite of Admonition, Permalinks and Codehilite integration
* Rewrite of the complete typographical system
* Removed Bower as a dependency in favor of npm
* Removed custom icon build in favor of the Material Design iconset
* Removed _blank targets on links due to vulnerability: http://bit.ly/1Mk2Rtw
+ * Removed unversioned assets from build directory
+ * Restructured templates into base templates and partials
* Added build and watch scripts in package.json
* Added support for Metadata and Footnotes Markdown extensions
+ * Added support for pymdownx.* Markdown extensions
* Added support for collapsible sections in navigation
* Added support for separate table of contents
* Added support for better accessibility through REM-based layout
+ * Added icons for GitHub, GitLab and BitBucket integrations
* Added more detailed documentation on specimen, extensions etc.
+ * Added a 404.html error page for deployment on GitHub Pages
+ * Fixed live reload chain in watch mode when saving a template
mkdocs-material-0.2.4 (2016-06-26)
diff --git a/Gulpfile.js b/Gulpfile.js
index 9a2e78f70..72c46bc9f 100755
--- a/Gulpfile.js
+++ b/Gulpfile.js
@@ -262,6 +262,7 @@ gulp.task('assets:build:modernizr', [
*/
gulp.task('assets:build:images:svg', function() {
return gulp.src('src/assets/images/**/*.svg')
+ .pipe(gulpif(watch, changed('material/assets/images')))
.pipe(gulpif(args.production, minsvg()))
.pipe(gulpif(args.production, rev()))
.pipe(gulp.dest('material/assets/images'))
@@ -302,7 +303,7 @@ gulp.task('assets:build:views', args.production ? [
'assets:build:images'
] : [], function() {
var metadata = require('./package.json');
- return gulp.src('src/*.html')
+ return gulp.src('src/**/*.html')
.pipe(gulpif(watch, changed('material')))
.pipe(
minhtml({
@@ -354,7 +355,7 @@ gulp.task('assets:watch', function() {
/* Minify views */
gulp.watch([
- 'src/*.html'
+ 'src/**/*.html'
], ['assets:build:views']);
});
@@ -413,7 +414,8 @@ gulp.task('build', [
* Start asset and MkDocs watchdogs.
*/
gulp.task('watch', [
- 'assets:build',
+ 'assets:clean',
+ 'assets:build'
], function() {
return gulp.start([
'assets:watch'
diff --git a/docs/extensions/admonition.md b/docs/extensions/admonition.md
index f7b084bae..10684410c 100644
--- a/docs/extensions/admonition.md
+++ b/docs/extensions/admonition.md
@@ -41,6 +41,9 @@ TODO: NESTED...
!!! hint "hint, note default"
+!!! summary "summary, tldr"
+ This is a very long text, yes. I'm so sorry.
+
!!! tip "tip, idea"
!!! success "success, check, done"
diff --git a/docs/extensions/footnotes.md b/docs/extensions/footnotes.md
index 6b47c0b26..8a18f78b3 100644
--- a/docs/extensions/footnotes.md
+++ b/docs/extensions/footnotes.md
@@ -29,6 +29,8 @@ sem ut cursus. Nullam sit amet tincidunt ipsum, sit amet elementum turpis.
Etiam ipsum quam, mattis in purus vitae, lacinia fermentum enim.
## [Some headline with a link](http://www.google.de)
+### Third level
+#### Fourth level
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nisl ac
urna lobortis consectetur ut vitae urna. Donec eu viverra sapien. Nam
diff --git a/docs/extensions/meta.md b/docs/extensions/meta.md
index e69de29bb..6ff0835d2 100644
--- a/docs/extensions/meta.md
+++ b/docs/extensions/meta.md
@@ -0,0 +1,304 @@
+# Command Line Interface (```CLI```)
+
+Sequelize `2.0.0` introduces a new CLI which is based on [gulp][0] and combines [sequelize-cli][1] and [gulp-sequelize][2]. The CLI ships support for migrations and project bootstrapping. With migrations you can transfer your existing database into another state and vice versa: Those state transitions are saved in migration files, which describe the way how to get to the new state and how to revert the changes in order to get back to the old state.
+
+## The CLI
+
+In order to use the CLI you need to install the respective package:
+
+```bash
+$ npm install --save sequelize-cli
+```
+
+As with any npm package, you can use the global flag (`-g`) to install the CLI globally. If you have installed the CLI without the global flag, use `node_modules/.bin/sequelize [command]` instead of `sequelize [command]`.
+
+The CLI currently supports the following commands:
+
+```bash
+$ sequelize db:migrate # Run pending migrations.
+$ sequelize db:migrate:undo # Revert the last migration run.
+$ sequelize help # Display this help text.
+$ sequelize init # Initializes the project.
+$ sequelize migration:create # Generates a new migration file.
+$ sequelize version # Prints the version number.
+```
+
+Further and more detailed information about the available commands
+can be obtained via the help command:
+
+```bash
+$ sequelize help:init
+$ sequelize help:db:migrate
+$ sequelize help:db:migrate:undo
+# etc
+```
+
+The latter one for example will print out the following output:
+
+```bash
+Sequelize [CLI: v0.0.2, ORM: v1.7.5]
+
+COMMANDS
+ sequelize db:migrate:undo -- Revert the last migration run.
+
+DESCRIPTION
+ Revert the last migration run.
+
+OPTIONS
+ --env The environment to run the command in. Default: development
+ --options-path The path to a JSON file with additional options. Default: none
+ --coffee Enables coffee script support. Default: false
+ --config The path to the config file. Default: config/config.json
+```
+
+## Skeleton
+
+The following skeleton shows a typical migration file. All migrations are expected to be located in a folder called `migrations` at the very top of the project. The sequelize binary can generate a migration skeleton. See the above section for more details.
+
+```js
+module.exports = {
+ up: function(queryInterface, Sequelize) {
+ // logic for transforming into the new state
+ },
+
+ down: function(queryInterface, Sequelize) {
+ // logic for reverting the changes
+ }
+}
+```
+
+The passed `queryInterface` object can be used to modify the database. The `Sequelize` object stores the available data types such as `STRING` or `INTEGER`. Function `up` or `down` should return a `Promise`. Here is some code:
+
+```js
+module.exports = {
+ up: function(queryInterface, Sequelize) {
+ return queryInterface.dropAllTables();
+ }
+}
+```
+
+The available methods of the queryInterface object are the following.
+
+## Functions
+
+Using the `queryInterface` object describe before, you will have access to most of already introduced functions. Furthermore there are some other methods, which are designed to actually change the database schema.
+
+### createTable(tableName, attributes, options)
+
+This method allows creation of new tables. It is allowed to pass simple or complex attribute definitions. You can define the encoding of the table and the table's engine via options
+
+```js
+queryInterface.createTable(
+ 'nameOfTheNewTable',
+ {
+ id: {
+ type: Sequelize.INTEGER,
+ primaryKey: true,
+ autoIncrement: true
+ },
+ createdAt: {
+ type: Sequelize.DATE
+ },
+ updatedAt: {
+ type: Sequelize.DATE
+ },
+ attr1: Sequelize.STRING,
+ attr2: Sequelize.INTEGER,
+ attr3: {
+ type: Sequelize.BOOLEAN,
+ defaultValue: false,
+ allowNull: false
+ },
+ //foreign key usage
+ attr4: {
+ type: Sequelize.INTEGER,
+ references: {
+ model: 'another_table_name',
+ key: 'id'
+ },
+ onUpdate: 'cascade',
+ onDelete: 'cascade'
+ }
+ },
+ {
+ engine: 'MYISAM', // default: 'InnoDB'
+ charset: 'latin1', // default: null
+ schema: 'public' // default: public, PostgreSQL only.
+ }
+)
+```
+
+### ```:::js dropTable(var tableName, options)```
+
+This method allows deletion of an existing table.
+
+```js
+queryInterface.dropTable('nameOfTheExistingTable')
+```
+
+### dropAllTables(options)
+
+This method allows deletion of all existing tables in the database.
+
+```js
+queryInterface.dropAllTables()
+```
+
+### renameTable(before, after, options)
+
+This method allows renaming of an existing table.
+
+```js
+queryInterface.renameTable('Person', 'User')
+```
+
+### showAllTables(options)
+
+This method returns the name of all existing tables in the database.
+
+```js
+queryInterface.showAllTables().then(function(tableNames) {})
+```
+
+### describeTable(tableName, options)
+
+This method returns an array of hashes containing information about all attributes in the table.
+
+```js
+queryInterface.describeTable('Person').then(function(attributes) {
+ /*
+ attributes will be something like:
+
+ {
+ name: {
+ type: 'VARCHAR(255)', // this will be 'CHARACTER VARYING' for pg!
+ allowNull: true,
+ defaultValue: null
+ },
+ isBetaMember: {
+ type: 'TINYINT(1)', // this will be 'BOOLEAN' for pg!
+ allowNull: false,
+ defaultValue: false
+ }
+ }
+ */
+})
+```
+
+### addColumn(tableNameOrOptions, attributeName, dataTypeOrOptions, options)
+
+This method allows adding columns to an existing table. The data type can be simple or complex.
+
+```js
+queryInterface.addColumn(
+ 'nameOfAnExistingTable',
+ 'nameOfTheNewAttribute',
+ Sequelize.STRING
+)
+
+// or
+
+queryInterface.addColumn(
+ 'nameOfAnExistingTable',
+ 'nameOfTheNewAttribute',
+ {
+ type: Sequelize.STRING,
+ allowNull: false
+ }
+)
+
+// or with an explicit schema:
+
+queryInterface.addColumn({
+ tableName: 'Person',
+ schema: 'public'
+ },
+ 'signature',
+ Sequelize.STRING
+)
+
+```
+
+### removeColumn(tableNameOrOptions, attributeName, options)
+
+This method allows deletion of a specific column of an existing table.
+
+```js
+queryInterface.removeColumn('Person', 'signature')
+
+// or with an explicit schema:
+
+queryInterface.removeColumn({
+ tableName: 'Person',
+ schema: 'public'
+}, 'signature');
+```
+
+### changeColumn(tableName, attributeName, dataTypeOrOptions, options)
+
+This method changes the meta data of an attribute. It is possible to change the default value, allowance of null or the data type. Please make sure, that you are completely describing the new data type.
+
+```js
+queryInterface.changeColumn(
+ 'nameOfAnExistingTable',
+ 'nameOfAnExistingAttribute',
+ {
+ type: Sequelize.FLOAT,
+ allowNull: false,
+ defaultValue: 0.0
+ }
+)
+```
+
+### renameColumn(tableName, attrNameBefore, attrNameAfter, options)
+
+This methods allows renaming attributes.
+
+```js
+queryInterface.renameColumn('Person', 'signature', 'sig')
+```
+
+### addIndex(tableName, attributes, options)
+
+This methods creates indexes for specific attributes of a table. The index name will be automatically generated if it is not passed via in the options (see below).
+
+```js
+// This example will create the index person_firstname_lastname
+queryInterface.addIndex('Person', ['firstname', 'lastname'])
+
+// This example will create a unique index with the name SuperDuperIndex using the optional 'options' field.
+// Possible options:
+// - indicesType: UNIQUE|FULLTEXT|SPATIAL
+// - indexName: The name of the index. Default is __
+// - parser: For FULLTEXT columns set your parser
+// - indexType: Set a type for the index, e.g. BTREE. See the documentation of the used dialect
+// - logging: A function that receives the sql query, e.g. console.log
+queryInterface.addIndex(
+ 'Person',
+ ['firstname', 'lastname'],
+ {
+ indexName: 'SuperDuperIndex',
+ indicesType: 'UNIQUE'
+ }
+)
+```
+
+### removeIndex(tableName, indexNameOrAttributes, options)
+
+This method deletes an existing index of a table.
+
+```js
+queryInterface.removeIndex('Person', 'SuperDuperIndex')
+
+// or
+
+queryInterface.removeIndex('Person', ['firstname', 'lastname'])
+```
+
+## Programmatic use
+Sequelize has a [sister library](https://github.com/sequelize/umzug) for programmatically handling execution and logging of migration tasks.
+
+
+[0]: http://gulpjs.com/
+[1]: https://github.com/sequelize/cli
+[2]: https://github.com/sequelize/gulp-sequelize
\ No newline at end of file
diff --git a/docs/specimen.md b/docs/specimen.md
index e920c8c4b..3fa4fb522 100644
--- a/docs/specimen.md
+++ b/docs/specimen.md
@@ -1,4 +1,4 @@
-# Specimen
+# Specimen should get a very long name, so we see how it behaves with the new edit url feature that is awesome
## Typography
@@ -39,6 +39,86 @@ the `` tag directly inside Markdown.
### Unordered lists
+## Checklists
+
+This is inline hilighted text `#!js var test = 0;` that is just awesome LOL
+
+* [ ] foo
+* [x] bar
+* [ ] baz
+ * [ ] foo
+ * [x] bar
+ * [ ] baz
+
+
+
+ This needs to be done
+
+
+ This is done
+
+
+
+ This needs to be done
+
+
+ This is done
+
+
+
+
+
+Another default list:
+
+* No checklist
+* Foobar
+
+ ``` js
+ function() test {
+ var foo = 12;
+ return foo;
+ }
+ ```
+
+Here is some {--*incorrect*--} Markdown. I am adding this {++here.++}. Here is some more {--text
+that I am removing--}text. And here is even more {++text that I
+am ++}adding.{~~
+
+~> ~~}Paragraph was deleted and replaced with some spaces.{~~ ~>
+
+~~}Spaces were removed and a paragraph was added.
+
+And here is a comment on {==some
+==text== ==} asdhsjakh dkah dkash dkjas hdkash dksa sahdka kas dksa hdksah dksa kdsa kdask dask {>>This works quite well. I just wanted to comment on it.<<}. Substitutions {~~is~>are~~} great!
+
+### Test {--headline--} [`with code`](http://google.com) and ==foo== [without](http://google.com)
+
+This is also ==something that is marked (tm)==. Very cool.
+
+Escape \{>>This text is preserved<<}.
+
+General block handling.
+
+{--
+
+* test
+* test
+* test
+ * test
+* test
+
+--}
+
+{++
+
+* test
+* test
+* test
+ * test
+* test
+
+++}
+
## Code
### Listing
@@ -46,7 +126,7 @@ the `` tag directly inside Markdown.
Pre-formatted code blocks can host code examples and use the pygments extension
(if installed and enabled in `mkdocs.yml`) for syntax highlighting:
-``` c
+``` c hl_lines="14 15 20"
/*!
* Scan a buffer for a valid variable-sized integer.
*
diff --git a/material/404.html b/material/404.html
index 2fd9f9570..3bbe15915 100644
--- a/material/404.html
+++ b/material/404.html
@@ -1 +1,4 @@
-TBD
\ No newline at end of file
+{% extends "base.html" %}
+{% block content %}
+