From 2f462f90d4608763e5cb9618ec80d939a679fe2e Mon Sep 17 00:00:00 2001 From: oupala Date: Wed, 1 Jul 2020 11:52:17 +0200 Subject: [PATCH] style: linting markdown files Linting markdown files according to default remark-lint configuration. Files inside the `public` directory were not linted. Signed-off-by: oupala --- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md => CODE-OF-CONDUCT.md | 20 +- CONTRIBUTING.md | 11 +- README.md | 31 +- docs/configuration.md | 47 +- docs/dev/api.md | 53 +- docs/dev/getting-started.md | 17 +- docs/dev/ot.md | 9 +- docs/dev/webpack.md | 11 +- docs/guides/auth/github.md | 36 +- docs/guides/auth/gitlab-self-hosted.md | 8 +- docs/guides/auth/keycloak.md | 15 +- docs/guides/auth/{ldap-AD.md => ldap-ad.md} | 9 +- docs/guides/auth/mattermost-self-hosted.md | 40 +- docs/guides/auth/nextcloud.md | 36 +- docs/guides/auth/oauth.md | 20 +- docs/guides/auth/saml-onelogin.md | 47 +- docs/guides/auth/saml.md | 70 +- docs/guides/auth/twitter.md | 40 +- docs/guides/migrate-etherpad.md | 27 +- .../guides/migrations-and-breaking-changes.md | 9 +- docs/guides/minio-image-upload.md | 7 +- docs/guides/providing-terms.md | 11 +- docs/guides/s3-image-upload.md | 51 +- docs/history.md | 5 +- docs/setup/cloudron.md | 3 +- docs/setup/docker-linuxserver.md | 6 +- docs/setup/docker.md | 9 +- docs/setup/heroku.md | 3 +- docs/setup/kubernetes.md | 3 +- docs/setup/manual-setup.md | 25 +- docs/slide-options.md | 14 +- docs/url-scheme.md | 4 +- public/docs/features.md | 70 +- public/docs/privacy.md.example | 15 +- public/docs/release-notes.md | 1975 +++++++++-------- public/docs/slide-example.md | 6 +- public/docs/yaml-metadata.md | 61 +- 38 files changed, 1468 insertions(+), 1358 deletions(-) rename CODE_OF_CONDUCT.md => CODE-OF-CONDUCT.md (85%) rename docs/guides/auth/{ldap-AD.md => ldap-ad.md} (94%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97224d1ef..a9797043f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,4 +4,4 @@ Please refer to the release notes published under [`public/docs/release-notes.md`](public/docs/release-notes.md). These are also available on each CodiMD instance under -https://[domain-name]/release-notes + diff --git a/CODE_OF_CONDUCT.md b/CODE-OF-CONDUCT.md similarity index 85% rename from CODE_OF_CONDUCT.md rename to CODE-OF-CONDUCT.md index f15b5aff7..266d22a3f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE-OF-CONDUCT.md @@ -1,5 +1,4 @@ -Contributor Code of Conduct -=== +# Contributor Code of Conduct As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, @@ -12,13 +11,18 @@ disability, personal appearance, body size, race, ethnicity, age, religion, or n Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, such as physical or electronic addresses, without explicit +- The use of sexualized language or imagery + +- Personal attacks + +- Trolling or insulting/derogatory comments + +- Public or private harassment + +- Publishing other's private information, such as physical or electronic addresses, without explicit permission -* Other unethical or unprofessional conduct. + +- Other unethical or unprofessional conduct. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 781e0d919..6c39d7e30 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,17 +3,22 @@ When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. -Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please follow it in all your +Please note we have a [code of conduct](CODE-OF-CONDUCT.md), please follow it in all your interactions with the project. ## Pull Request Process + 1. Ensure you signed all your commits with Developer Certificate of Origin (DCO). + 2. Ensure any install or build dependencies are removed before the end of the layer when doing a build. + 3. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. + 4. Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). + 5. You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. @@ -26,9 +31,9 @@ their contribution under the project's license. Please read [docs/legal/developer-certificate-of-origin.txt][dcofile]. If you can certify it, then just add a line to every git commit message: -```` +```git Signed-off-by: Random J Developer -```` +``` Use your real name (sorry, no pseudonyms or anonymous contributions). If you set your `user.name` and `user.email` git configs, you can sign your diff --git a/README.md b/README.md index ea47eea55..3dc6519be 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -CodiMD -=== +# CodiMD [![#CodiMD on matrix.org][matrix.org-image]][matrix.org-url] [![build status][travis-image]][travis-url] @@ -16,7 +15,6 @@ into its own organisation. [A longer writeup can be read in the history doc](doc [![CodiMD 1.3.2 with its feature demonstration page open](docs/images/CodiMD-1.3.2-features.png)][codimd-demo-features] - ## Community and Contributions We welcome contributions! There's a lot to do: If you would like to report bugs, @@ -30,24 +28,22 @@ To stay up to date with our work or get support it's recommended to join our or subscribe to the [release feed][github-release-feed]. We also engage in regular [community calls][codimd-community-calls] ([RSS](https://community.codimd.org/t/codimd-community-call/19.rss)) which you are very welcome to join. - ## Installation / Upgrading You can run CodiMD in a number of ways, and we created setup instructions for all of these: -* [Docker](docs/setup/docker.md) -* [Kubernetes](docs/setup/kubernetes.md) -* [Cloudron](docs/setup/cloudron.md) -* [LinuxServer.io (multi-arch docker)](docs/setup/docker-linuxserver.md) -* [Heroku](docs/setup/heroku.md) -* [Manual setup](docs/setup/manual-setup.md) +- [Docker](docs/setup/docker.md) +- [Kubernetes](docs/setup/kubernetes.md) +- [Cloudron](docs/setup/cloudron.md) +- [LinuxServer.io (multi-arch docker)](docs/setup/docker-linuxserver.md) +- [Heroku](docs/setup/heroku.md) +- [Manual setup](docs/setup/manual-setup.md) If you do not wish to run your own setup, you can find a commercial offering at -https://hackmd.io. This is not the same codebase as this one, but it is a very +. This is not the same codebase as this one, but it is a very similar project. - ## Configuration Theres two main ways to [configure](docs/configuration.md) your CodiMD instance: @@ -55,13 +51,12 @@ config file or environment variables. You can choose what works best for you. CodiMD can integrate with -* facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login** -* imgur, s3, minio, azure **for image/attachment storage** (files can also be local!) -* dropbox **for export and import** +- facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login** +- imgur, s3, minio, azure **for image/attachment storage** (files can also be local!) +- dropbox **for export and import** More info about that can be found in the configuration docs above. - ## Browser support To use CodiMD, your browser should match or exceed these versions: @@ -73,14 +68,12 @@ To use CodiMD, your browser should match or exceed these versions: - ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/opera/opera_24x24.png) Opera >= 34, ![Opera Mini](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/opera-mini/opera-mini_24x24.png) Opera Mini not supported - ![Android Browser](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/android-webview-beta/android-webview-beta_24x24.png) Android Browser >= 4.4 - ## Related Tools Our community has created related tools, we'd like to highlight [codimd-cli](https://github.com/codimd/cli) which lets you use CodiMD from the comfort of your command line. - -# License +## License Licensed under AGPLv3. For our list of contributors, see [AUTHORS](AUTHORS). diff --git a/docs/configuration.md b/docs/configuration.md index aa6b5191e..15335971b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -5,6 +5,7 @@ You can choose to configure CodiMD with either a config file or with environment Environment variables take precedence over configurations from the config files. They generally start with `CMD_` for our own options, but we also list node-specific options you can configure this way. - Environment variables are processed in [`lib/config/environment.js`](../lib/config/environment.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](../lib/config/default.js), in case you wonder if you even need to override it. + - The config file is processed in [`lib/config/index.js`](../lib/config/index.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](../lib/config/default.js), in case you wonder if you even need to override it. To get started, it is a good idea to take the `config.json.example` and copy it to `config.json` before filling in your own details. @@ -69,16 +70,16 @@ these are rarely used for various reasons. ## CSP and HSTS -| config file | environment | example value | description | -| ----------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `hsts` | | `{"enable": true, "maxAgeSeconds": 31536000, "includeSubdomains": true, "preload": true}` | [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) options to use with HTTPS (default is the example value, max age is a year) | -| | `CMD_HSTS_ENABLE` | ` true` | set to enable [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) if HTTPS is also enabled (default is ` true`) | -| | `CMD_HSTS_INCLUDE_SUBDOMAINS` | `true` | set to include subdomains in HSTS (default is `true`) | | -| | `CMD_HSTS_MAX_AGE` | `31536000` | max duration in seconds to tell clients to keep HSTS status (default is a year) | | -| | `CMD_HSTS_PRELOAD` | `true` | whether to allow preloading of the site's HSTS status (e.g. into browsers) | | -| `csp` | | `{"enable": true, "directives": {"scriptSrc": "trustworthy-scripts.example.com"}, "upgradeInsecureRequests": "auto", "addDefaults": true}` | Configures [Content Security Policy](https://helmetjs.github.io/docs/csp/). Directives are passed to Helmet - see [their documentation](https://helmetjs.github.io/docs/csp/) for more information on the format. Some defaults are added to the configured values so that the application doesn't break. To disable this behaviour, set `addDefaults` to `false`. Further, if `usecdn` is on, some CDN locations are allowed too. By default (`auto`), insecure (HTTP) requests are upgraded to HTTPS via CSP if `useSSL` is on. To change this behaviour, set `upgradeInsecureRequests` to either `true` or `false`. | -| | `CMD_CSP_ENABLE` | `true` | whether to enable Content Security Policy (directives cannot be configured with environment variables) | -| | `CMD_CSP_REPORTURI` | `https://.report-uri.com/r/d/csp/enforce` | Allows to add a URL for CSP reports in case of violations | | +| config file | environment | example value | description | +| ----------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `hsts` | | `{"enable": true, "maxAgeSeconds": 31536000, "includeSubdomains": true, "preload": true}` | [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) options to use with HTTPS (default is the example value, max age is a year) | +| | `CMD_HSTS_ENABLE` | ` true` | set to enable [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) if HTTPS is also enabled (default is ` true`) | +| | `CMD_HSTS_INCLUDE_SUBDOMAINS` | `true` | set to include subdomains in HSTS (default is `true`) | +| | `CMD_HSTS_MAX_AGE` | `31536000` | max duration in seconds to tell clients to keep HSTS status (default is a year) | +| | `CMD_HSTS_PRELOAD` | `true` | whether to allow preloading of the site's HSTS status (e.g. into browsers) | +| `csp` | | `{"enable": true, "directives": {"scriptSrc": "trustworthy-scripts.example.com"}, "upgradeInsecureRequests": "auto", "addDefaults": true}` | Configures [Content Security Policy](https://helmetjs.github.io/docs/csp/). Directives are passed to Helmet - see [their documentation](https://helmetjs.github.io/docs/csp/) for more information on the format. Some defaults are added to the configured values so that the application doesn't break. To disable this behaviour, set `addDefaults` to `false`. Further, if `usecdn` is on, some CDN locations are allowed too. By default (`auto`), insecure (HTTP) requests are upgraded to HTTPS via CSP if `useSSL` is on. To change this behaviour, set `upgradeInsecureRequests` to either `true` or `false`. | +| | `CMD_CSP_ENABLE` | `true` | whether to enable Content Security Policy (directives cannot be configured with environment variables) | +| | `CMD_CSP_REPORTURI` | `https://.report-uri.com/r/d/csp/enforce` | Allows to add a URL for CSP reports in case of violations | ## Privacy and External Requests @@ -156,7 +157,7 @@ these are rarely used for various reasons. | config file | environment | example value | description | | ----------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -| `ldap` | | `{providerName: ..., url: ..., bindDn: ..., bindCredentials: ..., searchBase: ..., searchFilter: ..., searchAttributes: ..., usernameField: ..., useridField: ..., tlsca: ...}` | An object detailing the LDAP connection. Refer to the [LDAP-AD guide](guides/auth/ldap-AD.md) for more details! | +| `ldap` | | `{providerName: ..., url: ..., bindDn: ..., bindCredentials: ..., searchBase: ..., searchFilter: ..., searchAttributes: ..., usernameField: ..., useridField: ..., tlsca: ...}` | An object detailing the LDAP connection. Refer to the [LDAP-AD guide](guides/auth/ldap-ad.md) for more details! | | | `CMD_LDAP_URL` | `ldap://example.com` | URL of LDAP server | | | `CMD_LDAP_BINDDN` | no example | bindDn for LDAP access | | | `CMD_LDAP_BINDCREDENTIALS` | no example | bindCredentials for LDAP access | @@ -179,19 +180,19 @@ these are rarely used for various reasons. ### OAuth2 Login -| config file | environment | example value | description | -| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| config file | environment | example value | description | +| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauth2` | | `{baseURL: ..., userProfileURL: ..., userProfileUsernameAttr: ..., userProfileDisplayNameAttr: ..., userProfileEmailAttr: ..., tokenURL: ..., authorizationURL: ..., clientID: ..., clientSecret: ..., scope: ...}` | An object detailing your OAuth2 provider. Refer to the [Mattermost](guides/auth/mattermost-self-hosted.md) or [Nextcloud](guides/auth/nextcloud.md) examples for more details! | -| | `CMD_OAUTH2_USER_PROFILE_URL` | `https://example.com` | Where to retrieve information about a user after successful login. Needs to output JSON. (no default value) Refer to the [Mattermost](guides/auth/mattermost-self-hosted.md) or [Nextcloud](guides/auth/nextcloud.md) examples for more details on all of the `CMD_OAUTH2...` options. | -| | `CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR` | `name` | where to find the username in the JSON from the user profile URL. (no default value) | -| | `CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR` | `display-name` | where to find the display-name in the JSON from the user profile URL. (no default value) | -| | `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | `email` | where to find the email address in the JSON from the user profile URL. (no default value) | -| | `CMD_OAUTH2_TOKEN_URL` | `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) | -| | `CMD_OAUTH2_AUTHORIZATION_URL` | `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) | -| | `CMD_OAUTH2_CLIENT_ID` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | -| | `CMD_OAUTH2_CLIENT_SECRET` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | -| | `CMD_OAUTH2_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider | -| | `CMD_OAUTH2_SCOPE` | `openid email profile` | Scope to request for OIDC (OpenID Connect) providers. | +| | `CMD_OAUTH2_USER_PROFILE_URL` | `https://example.com` | Where to retrieve information about a user after successful login. Needs to output JSON. (no default value) Refer to the [Mattermost](guides/auth/mattermost-self-hosted.md) or [Nextcloud](guides/auth/nextcloud.md) examples for more details on all of the `CMD_OAUTH2...` options. | +| | `CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR` | `name` | where to find the username in the JSON from the user profile URL. (no default value) | +| | `CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR` | `display-name` | where to find the display-name in the JSON from the user profile URL. (no default value) | +| | `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | `email` | where to find the email address in the JSON from the user profile URL. (no default value) | +| | `CMD_OAUTH2_TOKEN_URL` | `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) | +| | `CMD_OAUTH2_AUTHORIZATION_URL` | `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) | +| | `CMD_OAUTH2_CLIENT_ID` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | +| | `CMD_OAUTH2_CLIENT_SECRET` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | +| | `CMD_OAUTH2_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider | +| | `CMD_OAUTH2_SCOPE` | `openid email profile` | Scope to request for OIDC (OpenID Connect) providers. | ### SAML Login diff --git a/docs/dev/api.md b/docs/dev/api.md index 4c1365b5b..fbbdae830 100644 --- a/docs/dev/api.md +++ b/docs/dev/api.md @@ -5,39 +5,38 @@ For code-autogeneration there is an OpenAPIv3-compatible description available [ ## Notes These endpoints create notes, return information about them or export them. -You have to replace _\_ with either the alias or id of a note you want to work on. +You have to replace *\* with either the alias or id of a note you want to work on. -| Endpoint | HTTP-Method | Description | -|---|---|---| -| `/new` | `GET` | **Creates a new note.**
A random id will be assigned and the content will equal to the template (blank by default). After note creation a redirect is issued to the created note. | -| `/new` | `POST` | **Imports some markdown data into a new note.**
A random id will be assigned and the content will equal to the body of the received HTTP-request. The `Content-Type: text/markdown` header should be set on this request. | -| `/new/` | `POST` | **Imports some markdown data into a new note with a given alias.**
This endpoint equals to the above one except that the alias from the url will be assigned to the note if [FreeURL-mode](../configuration-env-vars.md#users-and-privileges) is enabled. | -| `//download` or `/s//download` | `GET` | **Returns the raw markdown content of a note.** | -| `//pdf` | `GET` | **Returns a generated pdf version of the note.**
If pdf-support is disabled, a HTTP 403 will be returned.
_Please note: Currently pdf export is disabled generally because of a security problem with it._ | -| `//publish` | `GET` | **Redirects to the published version of the note.** | -| `//slide` | `GET` | **Redirects to the slide-presentation of the note.**
This is only useful on notes which are designed to be slides. | -| `//info` | `GET` | **Returns metadata about the note.**
This includes the title and description of the note as well as the creation date and viewcount. The data is returned as a JSON object. | -| `//revision` | `GET` | **Returns a list of the available note revisions.**
The list is returned as a JSON object with an array of revision-id and length associations. The revision-id equals to the timestamp when the revision was saved. | -| `//revision/` | `GET` | **Returns the revision of the note with some metadata.**
The revision is returned as a JSON object with the content of the note and the authorship. | -| `//gist` | `GET` | **Creates a new GitHub Gist with the note's content.**
If [GitHub integration](../configuration-env-vars.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created. | +| Endpoint | HTTP-Method | Description | +| ---------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `/new` | `GET` | **Creates a new note.**
A random id will be assigned and the content will equal to the template (blank by default). After note creation a redirect is issued to the created note. | +| `/new` | `POST` | **Imports some markdown data into a new note.**
A random id will be assigned and the content will equal to the body of the received HTTP-request. The `Content-Type: text/markdown` header should be set on this request. | +| `/new/` | `POST` | **Imports some markdown data into a new note with a given alias.**
This endpoint equals to the above one except that the alias from the url will be assigned to the note if [FreeURL-mode](../configuration-env-vars.md#users-and-privileges) is enabled. | +| `//download` or `/s//download` | `GET` | **Returns the raw markdown content of a note.** | +| `//pdf` | `GET` | **Returns a generated pdf version of the note.**
If pdf-support is disabled, a HTTP 403 will be returned.
*Please note: Currently pdf export is disabled generally because of a security problem with it.* | +| `//publish` | `GET` | **Redirects to the published version of the note.** | +| `//slide` | `GET` | **Redirects to the slide-presentation of the note.**
This is only useful on notes which are designed to be slides. | +| `//info` | `GET` | **Returns metadata about the note.**
This includes the title and description of the note as well as the creation date and viewcount. The data is returned as a JSON object. | +| `//revision` | `GET` | **Returns a list of the available note revisions.**
The list is returned as a JSON object with an array of revision-id and length associations. The revision-id equals to the timestamp when the revision was saved. | +| `//revision/` | `GET` | **Returns the revision of the note with some metadata.**
The revision is returned as a JSON object with the content of the note and the authorship. | +| `//gist` | `GET` | **Creates a new GitHub Gist with the note's content.**
If [GitHub integration](../configuration-env-vars.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created. | ## User / History These endpoints return information about the current logged-in user and it's note history. If no user is logged-in, the most of this requests will fail with either a HTTP 403 or a JSON object containing `{"status":"forbidden"}`. -| Endpoint | HTTP-Method | Description | -|---|---|---| -| `/me` | `GET` | **Returns the profile data of the current logged-in user.**
The data is returned as a JSON object containing the user-id, the user's name and a url to the profile picture. | -| `/me/export` | `GET` | **Exports a zip-archive with all notes of the current user.** | -| `/history` | `GET` | **Returns a list of the last viewed notes.**
The list is returned as a JSON object with an array containing for each entry it's id, title, tags, last visit time and pinned status. | -| `/history` | `POST` | **Replace user's history with a new one.**
The body must be form-encoded and contain a field `history` with a JSON-encoded array like its returned from the server when exporting the history. | -| `/history` | `DELETE` | **Deletes the user's history.** | -| `/history/` | `POST` | **Toggles the pinned status in the history for a note.**
The body must be form-encoded and contain a field `pinned` that is either `true` or `false`. -| `/history/` | `DELETE` | **Deletes a note from the user's history.** | - +| Endpoint | HTTP-Method | Description | +| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `/me` | `GET` | **Returns the profile data of the current logged-in user.**
The data is returned as a JSON object containing the user-id, the user's name and a url to the profile picture. | +| `/me/export` | `GET` | **Exports a zip-archive with all notes of the current user.** | +| `/history` | `GET` | **Returns a list of the last viewed notes.**
The list is returned as a JSON object with an array containing for each entry it's id, title, tags, last visit time and pinned status. | +| `/history` | `POST` | **Replace user's history with a new one.**
The body must be form-encoded and contain a field `history` with a JSON-encoded array like its returned from the server when exporting the history. | +| `/history` | `DELETE` | **Deletes the user's history.** | +| `/history/` | `POST` | **Toggles the pinned status in the history for a note.**
The body must be form-encoded and contain a field `pinned` that is either `true` or `false`. | +| `/history/` | `DELETE` | **Deletes a note from the user's history.** | ## CodiMD-server These endpoints return information about the running CodiMD instance. -| Endpoint | HTTP-Method | Description | -|---|---|---| -| `/status` | `GET` | **Returns the current status of the CodiMD instance.**
The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. | +| Endpoint | HTTP-Method | Description | +| --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `/status` | `GET` | **Returns the current status of the CodiMD instance.**
The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. | diff --git a/docs/dev/getting-started.md b/docs/dev/getting-started.md index 9a35b71ab..7ed96944d 100644 --- a/docs/dev/getting-started.md +++ b/docs/dev/getting-started.md @@ -1,5 +1,4 @@ -Developer Notes -=== +# Developer Notes ## Preparing for running the code @@ -7,20 +6,20 @@ Developer Notes 1. Clone the repository with `git clone https://github.com/codimd/server.git codimd-server` (cloning is the preferred way, but you can also download and unzip a release) + 2. Enter the directory and run `bin/setup`, which will install npm dependencies and create configs. The setup script is written in Bash, you would need bash as a prerequisite. + 3. Setup the [config file](../configuration-config-file.md) or set up [environment variables](../configuration-env-vars.md). - ## Running the Code Now that everything is in place, we can start CodiMD: -4. `yarn run build` will build the frontend bundle. It uses webpack to do that. -5. Run the server with `node app.js` - +1. `yarn run build` will build the frontend bundle. It uses webpack to do that. +2. Run the server with `node app.js` ## Running the Code with Auto-Reload @@ -32,11 +31,11 @@ rebuild the frontend or restart the server if necessary. The commands will stay active in your terminal, so you will need multiple tabs to run both at the same time. -4. Use `yarn run dev` if you want webpack to continuously rebuild the frontend +1. Use `yarn run dev` if you want webpack to continuously rebuild the frontend code. -5. To auto-reload the server, the easiest method is to install [nodemon](https://www.npmjs.com/package/nodemon) - and run `nodemon --watch app.js --watch lib --watch locales app.js`. +2. To auto-reload the server, the easiest method is to install [nodemon](https://www.npmjs.com/package/nodemon) + and run `nodemon --watch app.js --watch lib --watch locales app.js`. ## Structure diff --git a/docs/dev/ot.md b/docs/dev/ot.md index 924be693a..a1d0bebe0 100644 --- a/docs/dev/ot.md +++ b/docs/dev/ot.md @@ -1,5 +1,4 @@ -Operational Transformation -=== +# Operational Transformation From 0.3.2, we started supporting operational transformation. It makes concurrent editing safe and will not break up other users' operations. @@ -9,6 +8,6 @@ See more at [https://operational-transformation.github.io/](https://operational- And even more in this 2010 article series: -* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_21.html -* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_22.html -* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html +- +- +- diff --git a/docs/dev/webpack.md b/docs/dev/webpack.md index 3d35b28a0..23bbd7a17 100644 --- a/docs/dev/webpack.md +++ b/docs/dev/webpack.md @@ -1,5 +1,4 @@ -Webpack -=== +# Webpack Webpack is a JavaScript build system for frontend code. You can find out all about it on [the webpack website](https://webpack.js.org/). @@ -15,7 +14,6 @@ The `index` group for example bundles all javascript files and libraries used fo Entrypoints are referenced in the `plugins` section. The `HtmlWebpackPlugin` uses templates in `public/views/includes` to include the path to the generated resources in new templates under `public/views/build`. These templates are then used by the backend to serve HTML to the browser. - **TODO:** Document which entry points are used for what. ## `webpack.htmlexport.js` @@ -24,17 +22,16 @@ Packs all CSS from `public/js/htmlExport.js` to `build/html.min.css`. This file is then downloaded by client-side JS and used to create the HTML. See `exportToHTML()` in `public/js/extra.js`. - ## `webpack.dev.js` The development config uses both common configs, enables development mode and enables "cheap" source maps (lines only). If you need more detailed source maps while developing, you might want to use the `source-maps` option. -See https://webpack.js.org/configuration/devtool/ for details. +See for details. ## `webpack.prod.js` The production config uses both common configs and enables production mode. -This automatically enables various optimizations (e.g. UglifyJS). See https://webpack.js.org/concepts/mode/ for details. +This automatically enables various optimizations (e.g. UglifyJS). See for details. For the global app config, the name of the emitted chunks is changed to include the content hash. -See https://webpack.js.org/guides/caching/ on why this is a good idea. +See on why this is a good idea. For the HTML export config, CSS minification is enabled. diff --git a/docs/guides/auth/github.md b/docs/guides/auth/github.md index d16b486f1..dc46f74c2 100644 --- a/docs/guides/auth/github.md +++ b/docs/guides/auth/github.md @@ -1,10 +1,11 @@ -Authentication guide - GitHub -=== +# Authentication guide - GitHub -**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* +*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! 1. Sign-in or sign-up for a GitHub account + 2. Navigate to developer settings in your GitHub account [here](https://github.com/settings/developers) and select the "OAuth Apps" tab + 3. Click on the **New OAuth App** button, to create a new OAuth App: ![create-oauth-app](../../images/auth/create-oauth-app.png) @@ -17,19 +18,20 @@ Authentication guide - GitHub ![application-page](../../images/auth/application-page.png) 6. Add the Client ID and Client Secret to your config.json file or pass them as environment variables - * `config.json`: - ```js - { - "production": { - "github": { - "clientID": "3747d30eaccXXXXXXXXX", - "clientSecret": "2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX" - } + - `config.json`: + ```js + { + "production": { + "github": { + "clientID": "3747d30eaccXXXXXXXXX", + "clientSecret": "2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX" } } - ``` - * environment variables: - ```sh - CMD_GITHUB_CLIENTID=3747d30eaccXXXXXXXXX - CMD_GITHUB_CLIENTSECRET=2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX - ```` + } + ``` + + - environment variables: + ```sh + CMD_GITHUB_CLIENTID=3747d30eaccXXXXXXXXX + CMD_GITHUB_CLIENTSECRET=2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX + ```` diff --git a/docs/guides/auth/gitlab-self-hosted.md b/docs/guides/auth/gitlab-self-hosted.md index 8b6e6c702..62ce11220 100644 --- a/docs/guides/auth/gitlab-self-hosted.md +++ b/docs/guides/auth/gitlab-self-hosted.md @@ -1,7 +1,6 @@ -GitLab (self-hosted) -=== +# GitLab (self-hosted) -**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* +*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! 1. Sign in to your GitLab 2. Navigate to the application management page at `https://your.gitlab.domain/admin/applications` (admin permissions required) @@ -14,10 +13,9 @@ GitLab (self-hosted) ![Application: HackMD](../../images/auth/gitlab-application-details.png) - 6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:` -``` +```Dockerfile - CMD_DOMAIN=your.codimd.domain - CMD_URL_ADDPORT=true - CMD_PROTOCOL_USESSL=true diff --git a/docs/guides/auth/keycloak.md b/docs/guides/auth/keycloak.md index 437e01bf2..cf667774b 100644 --- a/docs/guides/auth/keycloak.md +++ b/docs/guides/auth/keycloak.md @@ -1,5 +1,4 @@ -Keycloak/Red Hat SSO (self-hosted) -=== +# Keycloak/Red Hat SSO (self-hosted) ## Prerequisites @@ -9,7 +8,7 @@ Where HTTPS is specified throughout, use HTTP instead. You may also have to spec ## Steps -1. Sign in to the administration portal for your Keycloak instance at https://keycloak.example.com/auth/admin/master/console +1. Sign in to the administration portal for your Keycloak instance at You may note that a separate realm is specified throughout this tutorial. It is best practice not to use the master realm, as it normally contains the realm-management client that federates access using the policies and permissions you can create. @@ -20,7 +19,7 @@ You may note that a separate realm is specified throughout this tutorial. It is --- -### Additional steps to circumvent generic OAuth2 issue: +### Additional steps to circumvent generic OAuth2 issue 1. Select Client Scopes from the sidebar, and begin to create a new client scope using the Create button. 2. Ensure that the **Name** field is set to `id`. @@ -29,9 +28,9 @@ You may note that a separate realm is specified throughout this tutorial. It is --- -6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:` +5. In the `docker-compose.yml` add the following environment variables to `app:` `environment:` -``` +```Dockerfile CMD_OAUTH2_USER_PROFILE_URL=https://keycloak.example.com/auth/realms/your-realm/protocol/openid-connect/userinfo CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name @@ -46,5 +45,5 @@ CMD_PROTOCOL_USESSL=true CMD_URL_ADDPORT=false ``` -7. Run `docker-compose up -d` to apply your settings. -8. Sign in to your CodiMD using your Keycloak ID +6. Run `docker-compose up -d` to apply your settings. +7. Sign in to your CodiMD using your Keycloak ID diff --git a/docs/guides/auth/ldap-AD.md b/docs/guides/auth/ldap-ad.md similarity index 94% rename from docs/guides/auth/ldap-AD.md rename to docs/guides/auth/ldap-ad.md index e74121f10..fa41346e8 100644 --- a/docs/guides/auth/ldap-AD.md +++ b/docs/guides/auth/ldap-ad.md @@ -1,9 +1,8 @@ -AD LDAP auth -=== +# AD LDAP auth To setup your CodiMD instance with Active Directory you need the following configs: -``` +```env CMD_LDAP_URL=ldap://internal.example.com CMD_LDAP_BINDDN=cn=binduser,cn=Users,dc=internal,dc=example,dc=com CMD_LDAP_BINDCREDENTIALS= @@ -13,7 +12,6 @@ CMD_LDAP_USERIDFIELD=sAMAccountName CMD_LDAP_PROVIDERNAME=Example Inc AD ``` - `CMD_LDAP_BINDDN` is either the `distinguishedName` or the `userPrincipalName`. *This can cause "username/password is invalid" when either this value or the password from `CMD_LDAP_BINDCREDENTIALS` are incorrect.* `CMD_LDAP_SEARCHFILTER` matches on all users and uses either the email address or the `sAMAccountName` (usually the login name you also use to login to Windows). @@ -24,7 +22,6 @@ CMD_LDAP_PROVIDERNAME=Example Inc AD `CMD_LDAP_PROVIDERNAME` just the name written above the username and password field on the login page. - Same in json: ```json @@ -38,4 +35,4 @@ Same in json: }, ``` -More details and example: https://www.npmjs.com/package/passport-ldapauth +More details and example: diff --git a/docs/guides/auth/mattermost-self-hosted.md b/docs/guides/auth/mattermost-self-hosted.md index d82803998..5085b4e7b 100644 --- a/docs/guides/auth/mattermost-self-hosted.md +++ b/docs/guides/auth/mattermost-self-hosted.md @@ -1,15 +1,16 @@ -Authentication guide - Mattermost (self-hosted) -=== +# Authentication guide - Mattermost (self-hosted) **Note:** *The Mattermost setup portion of this document is just a quick guide. See the [official documentation](https://docs.mattermost.com/developer/oauth-2-0-applications.html) for more details.* This guide uses the generic OAuth2 module for compatibility with Mattermost version 5.0 and above. 1. Sign-in with an administrator account to your Mattermost instance + 2. Make sure **OAuth 2.0 Service Provider** is enabled in the Main Menu (menu button next to your username in the top left corner) --> System Console --> Custom Integrations menu, which you can find at `https://your.mattermost.domain/admin_console/integrations/custom` ![mattermost-enable-oauth2](../../images/auth/mattermost-enable-oauth2.png) 3. Navigate to the OAuth integration settings through Main Menu --> Integrations --> OAuth 2.0 Applications, at `https://your.mattermost.domain/yourteam/integrations/oauth2-apps` + 4. Click on the **Add OAuth 2.0 Application** button to add a new OAuth application ![mattermost-oauth-app-add](../../images/auth/mattermost-oauth-app-add.png) @@ -22,25 +23,26 @@ This guide uses the generic OAuth2 module for compatibility with Mattermost vers ![mattermost-oauth-app-done](../../images/auth/mattermost-oauth-app-done.png) 7. Add the Client ID and Client Secret to your config.json file or pass them as environment variables - * `config.json`: - ```javascript - { - "production": { - "oauth2": { - "baseURL": "https://your.mattermost.domain", - "userProfileURL": "https://your.mattermost.domain/api/v4/users/me", - "userProfileUsernameAttr": "id", - "userProfileDisplayNameAttr": "username", - "userProfileEmailAttr": "email", - "tokenURL": "https://your.mattermost.domain/oauth/access_token", - "authorizationURL": "https://your.mattermost.domain/oauth/authorize", - "clientID": "ii4p1u3jz7dXXXXXXXXXXXXXXX", - "clientSecret": "mqzzx6fydbXXXXXXXXXXXXXXXX" - } + - `config.json`: + ```javascript + { + "production": { + "oauth2": { + "baseURL": "https://your.mattermost.domain", + "userProfileURL": "https://your.mattermost.domain/api/v4/users/me", + "userProfileUsernameAttr": "id", + "userProfileDisplayNameAttr": "username", + "userProfileEmailAttr": "email", + "tokenURL": "https://your.mattermost.domain/oauth/access_token", + "authorizationURL": "https://your.mattermost.domain/oauth/authorize", + "clientID": "ii4p1u3jz7dXXXXXXXXXXXXXXX", + "clientSecret": "mqzzx6fydbXXXXXXXXXXXXXXXX" } } - ``` - * environment variables: + } + ``` + + - environment variables: ```sh CMD_OAUTH2_BASEURL=https://your.mattermost.domain CMD_OAUTH2_USER_PROFILE_URL=https://your.mattermost.domain/api/v4/users/me diff --git a/docs/guides/auth/nextcloud.md b/docs/guides/auth/nextcloud.md index 3bf86d317..8ce90ca97 100644 --- a/docs/guides/auth/nextcloud.md +++ b/docs/guides/auth/nextcloud.md @@ -1,5 +1,4 @@ -Authentication guide - Nextcloud (self-hosted) -=== +# Authentication guide - Nextcloud (self-hosted) *This has been constructed using the [Nextcloud OAuth2 Documentation](https://docs.nextcloud.com/server/14/admin_manual/configuration_server/oauth2.html?highlight=oauth2) combined with [this issue comment on the nextcloud bugtracker](https://github.com/nextcloud/server/issues/5694#issuecomment-314761326).* @@ -22,24 +21,25 @@ This guide uses the generic OAuth2 module for compatibility with Nextcloud 13 an 5. That's it for Nextcloud, the rest is configured in your CodiMD `config.json` or via the `CMD_` environment variables! 6. Add the Client ID and Client Secret to your `config.json` file or pass them as environment variables. Make sure you also replace `` with the right domain name. - * `config.json`: - ```javascript - { - "production": { - "oauth2": { - "clientID": "ii4p1u3jz7dXXXXXXXXXXXXXXX", - "clientSecret": "mqzzx6fydbXXXXXXXXXXXXXXXX", - "authorizationURL": "https:///apps/oauth2/authorize", - "tokenURL": "https:///apps/oauth2/api/v1/token", - "userProfileURL": "https:///ocs/v2.php/cloud/user?format=json", - "userProfileUsernameAttr": "ocs.data.id", - "userProfileDisplayNameAttr": "ocs.data.display-name", - "userProfileEmailAttr": "ocs.data.email" - } + - `config.json`: + ```javascript + { + "production": { + "oauth2": { + "clientID": "ii4p1u3jz7dXXXXXXXXXXXXXXX", + "clientSecret": "mqzzx6fydbXXXXXXXXXXXXXXXX", + "authorizationURL": "https:///apps/oauth2/authorize", + "tokenURL": "https:///apps/oauth2/api/v1/token", + "userProfileURL": "https:///ocs/v2.php/cloud/user?format=json", + "userProfileUsernameAttr": "ocs.data.id", + "userProfileDisplayNameAttr": "ocs.data.display-name", + "userProfileEmailAttr": "ocs.data.email" } } - ``` - * environment variables: + } + ``` + + - environment variables: ```sh CMD_OAUTH2_CLIENT_ID=ii4p1u3jz7dXXXXXXXXXXXXXXX CMD_OAUTH2_CLIENT_SECRET=mqzzx6fydbXXXXXXXXXXXXXXXX diff --git a/docs/guides/auth/oauth.md b/docs/guides/auth/oauth.md index 46314e26f..de2ca20a4 100644 --- a/docs/guides/auth/oauth.md +++ b/docs/guides/auth/oauth.md @@ -1,12 +1,12 @@ # OAuth general information -| service | callback URL (after the server URL) | -| ------- | --------- | -| facebook | `/auth/facebook/callback` | -| twitter | `/auth/twitter/callback` | -| github | `/auth/github/callback` | -| gitlab | `/auth/gitlab/callback` | -| mattermost | `/auth/mattermost/callback` | -| dropbox | `/auth/dropbox/callback` | -| google | `/auth/google/callback` | -| saml | `/auth/saml/callback` | +| service | callback URL (after the server URL) | +| ---------- | ----------------------------------- | +| facebook | `/auth/facebook/callback` | +| twitter | `/auth/twitter/callback` | +| github | `/auth/github/callback` | +| gitlab | `/auth/gitlab/callback` | +| mattermost | `/auth/mattermost/callback` | +| dropbox | `/auth/dropbox/callback` | +| google | `/auth/google/callback` | +| saml | `/auth/saml/callback` | diff --git a/docs/guides/auth/saml-onelogin.md b/docs/guides/auth/saml-onelogin.md index 785e36ba0..46134e60c 100644 --- a/docs/guides/auth/saml-onelogin.md +++ b/docs/guides/auth/saml-onelogin.md @@ -1,10 +1,11 @@ -Authentication guide - SAML (OneLogin) -=== +# Authentication guide - SAML (OneLogin) **Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* 1. Sign-in or sign-up for an OneLogin account. (available free trial for 2 weeks) + 2. Go to the administration page. + 3. Select the **APPS** menu and click on the **Add Apps**. ![onelogin-add-app](../../images/auth/onelogin-add-app.png) @@ -15,34 +16,40 @@ Authentication guide - SAML (OneLogin) ![onelogin-edit-app-name](../../images/auth/onelogin-edit-app-name.png) 6. After that other tabs will appear, click the **Configuration**, and fill out the below items, and click **SAVE**. - * RelayState: The base URL of your CodiMD, which is issuer. (last slash is not needed) - * ACS (Consumer) URL Validator: The callback URL of your CodiMD. (serverurl + /auth/saml/callback) - * ACS (Consumer) URL: same as above. - * Login URL: login URL(SAML requester) of your CopiMD. (serverurl + /auth/saml) - ![onelogin-edit-sp-metadata](../../images/auth/onelogin-edit-sp-metadata.png) + - RelayState: The base URL of your CodiMD, which is issuer. (last slash is not needed) + + - ACS (Consumer) URL Validator: The callback URL of your CodiMD. (serverurl + /auth/saml/callback) + + - ACS (Consumer) URL: same as above. + + - Login URL: login URL(SAML requester) of your CopiMD. (serverurl + /auth/saml) + ![onelogin-edit-sp-metadata](../../images/auth/onelogin-edit-sp-metadata.png) 7. The registration is completed. Next, click **SSO** and copy or download the items below. - * X.509 Certificate: Click **View Details** and **DOWNLOAD** or copy the content of certificate ....(A) - * SAML 2.0 Endpoint (HTTP): Copy the URL ....(B) - ![onelogin-copy-idp-metadata](../../images/auth/onelogin-copy-idp-metadata.png) + - X.509 Certificate: Click **View Details** and **DOWNLOAD** or copy the content of certificate ....(A) + + - SAML 2.0 Endpoint (HTTP): Copy the URL ....(B) + ![onelogin-copy-idp-metadata](../../images/auth/onelogin-copy-idp-metadata.png) 8. In your CodiMD server, create IdP certificate file from (A) 9. Add the IdP URL (B) and the Idp certificate file path to your config.json file or pass them as environment variables. - * `config.json`: - ```javascript - { - "production": { - "saml": { - "idpSsoUrl": "https://*******.onelogin.com/trust/saml2/http-post/sso/******", - "idpCert": "/path/to/idp_cert.pem" - } + - `config.json`: + ```javascript + { + "production": { + "saml": { + "idpSsoUrl": "https://*******.onelogin.com/trust/saml2/http-post/sso/******", + "idpCert": "/path/to/idp_cert.pem" } } - ``` - * environment variables + } + ``` + + - environment variables ```sh CMD_SAML_IDPSSOURL=https://*******.onelogin.com/trust/saml2/http-post/sso/****** CMD_SAML_IDPCERT=/path/to/idp_cert.pem ``` + 10. Try sign-in with SAML from your CodiMD sign-in button or OneLogin dashboard (like the screenshot below). ![onelogin-use-dashboard](../../images/auth/onelogin-use-dashboard.png) diff --git a/docs/guides/auth/saml.md b/docs/guides/auth/saml.md index 3a64f5f7d..3b8291b7b 100644 --- a/docs/guides/auth/saml.md +++ b/docs/guides/auth/saml.md @@ -1,19 +1,21 @@ -Authentication guide - SAML -=== +# Authentication guide - SAML -**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* +*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! The basic procedure is the same as the case of OneLogin which is mentioned in [OneLogin-Guide](./saml-onelogin.md). If you want to match your IdP, you can use more configurations as below. -* If your IdP accepts metadata XML of the service provider to ease configuration, use this url to download metadata XML. - * {{your-serverurl}}/auth/saml/metadata - * _Note: If not accessible from IdP, download to local once and upload to IdP._ -* Change the value of `issuer`, `identifierFormat` to match your IdP. - * `issuer`: A unique id to identify the application to the IdP, which is the base URL of your CodiMD as default - * `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as default. It is recommend that you use as below. - * urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default) - * urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - * `config.json`: +- If your IdP accepts metadata XML of the service provider to ease configuration, use this url to download metadata XML. + - {{your-serverurl}}/auth/saml/metadata + - *Note:* If not accessible from IdP, download to local once and upload to IdP. + +- Change the value of `issuer`, `identifierFormat` to match your IdP. + - `issuer`: A unique id to identify the application to the IdP, which is the base URL of your CodiMD as default + + - `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as default. It is recommend that you use as below. + - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default) + - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + + - `config.json`: ```javascript { "production": { @@ -25,19 +27,24 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O } } ``` - * environment variables - ``` + + - environment variables + ```env CMD_SAML_ISSUER=mycodimd CMD_SAML_IDENTIFIERFORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified ``` -* Change mapping of attribute names to customize the displaying user name and email address to match your IdP. - * `attribute`: A dictionary to map attribute names - * `attribute.id`: A primary key of user table for your CodiMD - * `attribute.username`: Attribute name of displaying user name on CodiMD - * `attribute.email`: Attribute name of email address, which will be also used for Gravatar - * _Note: Default value of all attributes is NameID of SAML response, which is email address if `identifierFormat` is default._ - * `config.json`: +- Change mapping of attribute names to customize the displaying user name and email address to match your IdP. + - `attribute`: A dictionary to map attribute names + + - `attribute.id`: A primary key of user table for your CodiMD + + - `attribute.username`: Attribute name of displaying user name on CodiMD + + - `attribute.email`: Attribute name of email address, which will be also used for Gravatar + - *Note:* Default value of all attributes is NameID of SAML response, which is email address if `identifierFormat` is default. + + - `config.json`: ```javascript { "production": { @@ -52,19 +59,23 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O } } ``` - * environment variables + + - environment variables ```sh CMD_SAML_ATTRIBUTE_ID=sAMAccountName CMD_SAML_ATTRIBUTE_USERNAME=nickName CMD_SAML_ATTRIBUTE_EMAIL=mail ``` -* If you want to control permission by group membership, add group attribute name and required group (allowed) or external group (not allowed). - * `groupAttribute`: An attribute name of group membership - * `requiredGroups`: Group names array for allowed access to CodiMD. Use vertical bar to separate for environment variables. - * `externalGroups`: Group names array for not allowed access to CodiMD. Use vertical bar to separate for environment variables. - * _Note: Evaluates `externalGroups` first_ - * `config.json`: +- If you want to control permission by group membership, add group attribute name and required group (allowed) or external group (not allowed). + - `groupAttribute`: An attribute name of group membership + + - `requiredGroups`: Group names array for allowed access to CodiMD. Use vertical bar to separate for environment variables. + + - `externalGroups`: Group names array for not allowed access to CodiMD. Use vertical bar to separate for environment variables. + - *Note:* Evaluates `externalGroups` first + + - `config.json`: ```javascript { "production": { @@ -77,7 +88,8 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O } } ``` - * environment variables + + - environment variables ```sh CMD_SAML_GROUPATTRIBUTE=memberOf CMD_SAML_REQUIREDGROUPS=codimd-users|board-members diff --git a/docs/guides/auth/twitter.md b/docs/guides/auth/twitter.md index 1973515cb..5e709bb4d 100644 --- a/docs/guides/auth/twitter.md +++ b/docs/guides/auth/twitter.md @@ -1,17 +1,18 @@ -Authentication guide - Twitter -=== +# Authentication guide - Twitter -**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* +*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! 1. Sign-in or sign-up for a Twitter account + 2. Go to the Twitter Application management page [here](https://apps.twitter.com/) + 3. Click on the **Create New App** button to create a new Twitter app: ![create-twitter-app](../../images/auth/create-twitter-app.png) 4. Fill out the create application form, check the developer agreement box, and click **Create Your Twitter Application** ![register-twitter-application](../../images/auth/register-twitter-application.png) - *Note: you may have to register your phone number with Twitter to create a Twitter application* + *Note:* you may have to register your phone number with Twitter to create a Twitter application To do this Click your profile icon --> Settings and privacy --> Mobile --> Select Country/region --> Enter phone number --> Click Continue @@ -21,20 +22,21 @@ Authentication guide - Twitter 6. Obtain your Twitter Consumer Key and Consumer Secret ![twitter-app-keys](../../images/auth/twitter-app-keys.png) -7. Add your Consumer Key and Consumer Secret to your `config.json` file or pass them as environment variables: - * `config.json`: - ```javascript - { - "production": { - "twitter": { - "consumerKey": "esTCJFXXXXXXXXXXXXXXXXXXX", - "consumerSecret": "zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } +7. Add your Consumer Key and Consumer Secret to your `config.json` file or pass them as environment variables: + - `config.json`: + ```javascript + { + "production": { + "twitter": { + "consumerKey": "esTCJFXXXXXXXXXXXXXXXXXXX", + "consumerSecret": "zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" } } - ``` - * environment variables: - ```sh - CMD_TWITTER_CONSUMERKEY=esTCJFXXXXXXXXXXXXXXXXXXX - CMD_TWITTER_CONSUMERSECRET=zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - ``` + } + ``` + + - environment variables: + ```sh + CMD_TWITTER_CONSUMERKEY=esTCJFXXXXXXXXXXXXXXXXXXX + CMD_TWITTER_CONSUMERSECRET=zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + ``` diff --git a/docs/guides/migrate-etherpad.md b/docs/guides/migrate-etherpad.md index 914a240d6..b501d9ac0 100644 --- a/docs/guides/migrate-etherpad.md +++ b/docs/guides/migrate-etherpad.md @@ -1,5 +1,4 @@ -Pad migration guide from etherpad-lite -=== +# Pad migration guide from etherpad-lite The goal of this migration is to do a "dumb" import from all the pads in Etherpad, to notes in CodiMD. In particular, the url locations of the pads in Etherpad will be lost. Furthermore, any @@ -9,19 +8,14 @@ to CodiMD (only the plain text contents). Note that this guide is not really meant as a support guide. I migrated my own Etherpad to CodiMD, and it turned out to be quite easy in my opinion. In this guide I share my experience. Stuff may require some creativity to work properly in your case. When I wrote this guide, I was using -[Etherpad 1.7.0] and [CodiMD 1.2.1]. Good luck! - -[Etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0 -[CodiMD 1.2.1]: https://github.com/codimd/server/tree/1.2.1 +[etherpad 1.7.0][] and [codimd 1.2.1][]. Good luck! ## 0. Requirements - `curl` - running Etherpad server - running CodiMD server -- [codimd-cli] - -[codimd-cli]: https://github.com/codimd/cli/blob/master/bin/codimd +- [codimd-cli][] ## 1. Retrieve the list of pads @@ -32,7 +26,7 @@ database][howtolistallpads]. You will end up with a file containing a pad name on each line: -``` +```bash date-ideas groceries london @@ -40,11 +34,9 @@ weddingchecklist (...) ``` -[howtolistallpads]: https://github.com/ether/etherpad-lite/wiki/How-to-list-all-pads/49701ecdcbe07aea7ad27ffa23aed0d99c2e17db - ## 2. Run the migration -Download [codimd-cli] and put the script in the same directory as the file containing the pad names. +Download [codimd-cli][] and put the script in the same directory as the file containing the pad names. Add to this directory the file listed below, I called it `migrate-etherpad.sh`. Modify at least the configuration settings `ETHERPAD_SERVER` and `CODIMD_SERVER`. @@ -102,7 +94,7 @@ etherpad using a `301 Permanent Redirect` status code (see the next section). I got a `redirects.txt` file that looked a bit like this: -``` +```log date-ideas -> Found. Redirecting to https://codimd.example.com/mPt0KfiKSBOTQ3mNcdfn groceries -> Found. Redirecting to https://codimd.example.com/UukqgwLfhYyUUtARlcJ2_y london -> Found. Redirecting to https://codimd.example.com/_d3wa-BE8t4Swv5w7O2_9R @@ -112,7 +104,7 @@ weddingchecklist -> Found. Redirecting to https://codimd.example.com/XcQGqlBjl0u Using some `sed` magic, I changed it to an nginx config snippet: -``` +```nginx location = /p/date-ideas { return 301 https://codimd.example.com/mPt0M1KfiKSBOTQ3mNcdfn; } @@ -129,3 +121,8 @@ location = /p/weddingchecklist { I put this file into my `etherpad.example.com` nginx config, such that all the users would be redirected accordingly. + +[etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0 +[codimd 1.2.1]: https://github.com/codimd/server/tree/1.2.1 +[codimd-cli]: https://github.com/codimd/cli/blob/master/bin/codimd +[howtolistallpads]: https://github.com/ether/etherpad-lite/wiki/How-to-list-all-pads/49701ecdcbe07aea7ad27ffa23aed0d99c2e17db diff --git a/docs/guides/migrations-and-breaking-changes.md b/docs/guides/migrations-and-breaking-changes.md index ef65db1c5..593af4467 100644 --- a/docs/guides/migrations-and-breaking-changes.md +++ b/docs/guides/migrations-and-breaking-changes.md @@ -1,5 +1,4 @@ -Migrations and Notable Changes -=== +# Migrations and Notable Changes ## Migrating to 1.4.0 @@ -12,11 +11,11 @@ repository, you may need to update a few urls. This is not a breaking change. See more at [issue #10](https://github.com/codimd/server/issues/10) -**Native setup using git:** +### Native setup using git Change the upstream remote using `git remote set-url origin https://github.com/codimd/server.git`. -**Docker:** +### Docker When you use our [container repository](https://github.com/codimd/container) (which was previously `codimd-container`) all you can simply run `git pull` and @@ -25,7 +24,7 @@ your `docker-compose.yml` will be updated. When you setup things yourself, make sure you use the new image: [`quay.io/codimd/server`](https://quay.io/repository/codimd/server?tab=tags). -**Heroku:** +### Heroku All you need to do is [disconnect GitHub](https://devcenter.heroku.com/articles/github-integration#disconnecting-from-github) and [reconnect it](https://devcenter.heroku.com/articles/github-integration#enabling-github-integration) diff --git a/docs/guides/minio-image-upload.md b/docs/guides/minio-image-upload.md index 258b0d907..d20dbf4aa 100644 --- a/docs/guides/minio-image-upload.md +++ b/docs/guides/minio-image-upload.md @@ -1,7 +1,6 @@ -Minio Guide for CodiMD -=== +# Minio Guide for CodiMD -**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* +*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! 1. First of all you need to setup Minio itself. @@ -24,7 +23,7 @@ Minio Guide for CodiMD ![docker logs](../images/minio-image-upload/docker-logs.png) -3. Open http://localhost:9000 and login with the shown credentials. +3. Open and login with the shown credentials. ![minio default view](../images/minio-image-upload/default-view.png) diff --git a/docs/guides/providing-terms.md b/docs/guides/providing-terms.md index 73de2b378..c93307350 100644 --- a/docs/guides/providing-terms.md +++ b/docs/guides/providing-terms.md @@ -1,5 +1,6 @@ -Setup your terms of use -=== +# How to set up your terms of use + +## Setup your terms of use To setup your terms of use, you need to provide a document called `terms-of-use.md` which contains them. Of course written in Markdown. @@ -7,8 +8,7 @@ It has to be provided under `./public/docs/` and will be automatically turned in As soon as the file exists a link will show up in the bottom part along with the release notes and link to them. -Setup your privacy policy -=== +## Setup your privacy policy To add a privacy policy you can use the same technique as for the terms of use. The main difference is that the document is called `privacy.md`. @@ -16,8 +16,7 @@ See our example file `./public/docs/privacy.md.example` container some useful hi As with the terms of use, a link to the privacy notices will show up in the area where the release notes are provided on the index page. -Setup your imprint -=== +## Setup your imprint To add an imprint you can use the same technique as for the terms of use. The main difference is that the document is called `imprint.md`. diff --git a/docs/guides/s3-image-upload.md b/docs/guides/s3-image-upload.md index 7ca8dd12f..cb3ae79f7 100644 --- a/docs/guides/s3-image-upload.md +++ b/docs/guides/s3-image-upload.md @@ -1,19 +1,15 @@ -Guide - Setup CodiMD S3 image upload -=== +# Guide - Setup CodiMD S3 image upload **Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* 1. Go to [AWS S3 console](https://console.aws.amazon.com/s3/home) and create a new bucket. - - ![create-bucket](../images/s3-image-upload/create-bucket.png) + ![create-bucket](../images/s3-image-upload/create-bucket.png) 2. Click on bucket, select **Properties** on the side panel, and find **Permission** section. Click **Edit bucket policy**. - - ![bucket-property](../images/s3-image-upload/bucket-property.png) + ![bucket-property](../images/s3-image-upload/bucket-property.png) 3. Enter the following policy, replace `bucket_name` with your bucket name: - - ![bucket-policy-editor](../images/s3-image-upload/bucket-policy-editor.png) + ![bucket-policy-editor](../images/s3-image-upload/bucket-policy-editor.png) ```json { @@ -32,16 +28,13 @@ Guide - Setup CodiMD S3 image upload 4. Go to IAM console and create a new IAM user. Remember your user credentials(`key`/`access token`) 5. Enter user page, select **Permission** tab, look at **Inline Policies** section, and click **Create User Policy** - - ![iam-user](../images/s3-image-upload/iam-user.png) + ![iam-user](../images/s3-image-upload/iam-user.png) 6. Select **Custom Policy** - - ![custom-policy](../images/s3-image-upload/custom-policy.png) + ![custom-policy](../images/s3-image-upload/custom-policy.png) 7. Enter the following policy, replace `bucket_name` with your bucket name: - - ![review-policy](../images/s3-image-upload/review-policy.png) + ![review-policy](../images/s3-image-upload/review-policy.png) ```json { @@ -62,23 +55,23 @@ Guide - Setup CodiMD S3 image upload 8. Edit `config.json` and set following keys: - ```javascript - { - "production": { - ... - "imageuploadtype": "s3", - "s3": { - "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", - "secretAccessKey": "YOUR_S3_ACCESS_KEY", - "region": "YOUR_S3_REGION" // example: ap-northeast-1 - }, - "s3bucket": "YOUR_S3_BUCKET_NAME" - } - } - ``` + ```javascript + { + "production": { + ... + "imageuploadtype": "s3", + "s3": { + "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", + "secretAccessKey": "YOUR_S3_ACCESS_KEY", + "region": "YOUR_S3_REGION" // example: ap-northeast-1 + }, + "s3bucket": "YOUR_S3_BUCKET_NAME" + } + } + ``` 9. In additional to edit `config.json` directly, you could also try [environment variables](../configuration-env-vars.md). ## Related Tools -* [AWS Policy Generator](http://awspolicygen.s3.amazonaws.com/policygen.html) +- [AWS Policy Generator](http://awspolicygen.s3.amazonaws.com/policygen.html) diff --git a/docs/history.md b/docs/history.md index cd12a3693..7c77987c3 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,4 @@ -History of CodiMD -=== +# History of CodiMD ## It started with HackMD @@ -14,7 +13,6 @@ while referred to as "HackMD community edition". *For more on the splitting of the projects, please refer to [A note to our community (2017-10-11)](https://hackmd.io/c/community-news/https%3A%2F%2Fhackmd.io%2Fs%2Fr1_4j9_hZ).* - ## HackMD CE became CodiMD In June 2018, CodiMD was renamed from its former name "HackMD" and continued to @@ -24,7 +22,6 @@ project), as people mistook it for an open core development model. *For the whole renaming story, see the [issue where the renaming was discussed](https://github.com/hackmdio/hackmd/issues/720).* - ## CodiMD went independent In March 2019, a discussion over licensing, governance and the future of CodiMD diff --git a/docs/setup/cloudron.md b/docs/setup/cloudron.md index a33fd2f1d..f2ba8b976 100644 --- a/docs/setup/cloudron.md +++ b/docs/setup/cloudron.md @@ -1,5 +1,4 @@ -Cloudron -=== +# Cloudron CodiMD is available as a 1-click install on [Cloudron](https://cloudron.io). Cloudron makes it easy to run apps like CodiMD on your server and keep them up-to-date and secure. diff --git a/docs/setup/docker-linuxserver.md b/docs/setup/docker-linuxserver.md index f99176e8e..344bcfab6 100644 --- a/docs/setup/docker-linuxserver.md +++ b/docs/setup/docker-linuxserver.md @@ -1,13 +1,11 @@ -LinuxServer.io CodiMD Image -=== +# LinuxServer.io CodiMD Image + [![LinuxServer.io Discord](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)[![container version badge](https://images.microbadger.com/badges/version/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")[![container image size badge](https://images.microbadger.com/badges/image/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/codimd.svg)![Docker Stars](https://img.shields.io/docker/stars/linuxserver/codimd.svg)[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-codimd/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-codimd/job/master/)[![LinuxServer.io CI summary](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/index.html) [LinuxServer.io](https://linuxserver.io) have created an Ubuntu-based multi-arch container image for x86-64, arm64 and armhf which supports PDF export from all architectures using [PhantomJS](https://phantomjs.org/). - It supports all the environment variables detailed in the [configuration documentation](../configuration-env-vars.md) to modify it according to your needs. - - It gets rebuilt on new releases from CodiMD and also weekly if necessary to update any other package changes in the underlying container, making it easy to keep your CodiMD instance up to date. - - It also details how to easily [utilize Docker networking to reverse proxy](https://github.com/linuxserver/docker-codimd/#application-setup) CodiMD using their [LetsEncrypt docker image](https://github.com/linuxserver/docker-letsencrypt) In order to contribute check the LinuxServer.io [GitHub repository](https://github.com/linuxserver/docker-codimd/) for CodiMD. diff --git a/docs/setup/docker.md b/docs/setup/docker.md index 0268727c1..a9a8b240c 100644 --- a/docs/setup/docker.md +++ b/docs/setup/docker.md @@ -1,15 +1,12 @@ -CodiMD Docker Image -=== +# CodiMD Docker Image [![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://github.com/codimd/container/raw/master/docker-compose.yml&stack_name=codimd) - -**Debian-based version:** +## Debian-based version [![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server) - -**Alpine-based version:** +## Alpine-based version [![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server) diff --git a/docs/setup/heroku.md b/docs/setup/heroku.md index 9dc3bb3ab..9f62e58ca 100644 --- a/docs/setup/heroku.md +++ b/docs/setup/heroku.md @@ -1,5 +1,4 @@ -Heroku Deployment -=== +# Heroku Deployment You can quickly setup a sample Heroku CodiMD application by clicking the button below. diff --git a/docs/setup/kubernetes.md b/docs/setup/kubernetes.md index db596851d..91c571884 100644 --- a/docs/setup/kubernetes.md +++ b/docs/setup/kubernetes.md @@ -1,5 +1,4 @@ -Kubernetes -=== +# Kubernetes To install use `helm install stable/hackmd`. diff --git a/docs/setup/manual-setup.md b/docs/setup/manual-setup.md index 3979cebca..4a2ad9029 100644 --- a/docs/setup/manual-setup.md +++ b/docs/setup/manual-setup.md @@ -1,33 +1,42 @@ -Manual Installation -=== +# Manual Installation ## Requirements on your server - Node.js 8.5 or up + - Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL). Must use charset `utf8`: this is typically the default in PostgreSQL and SQLite, while in MySQL and MariaDB utf8 might need to be set with `alter database character set utf8 collate utf8_bin;` -- npm (and its dependencies, [node-gyp](https://github.com/nodejs/node-gyp#installation)) -- yarn -- Bash (for the setup script) -- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM +- npm (and its dependencies, [node-gyp](https://github.com/nodejs/node-gyp#installation)) + +- yarn + +- Bash (for the setup script) + +- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM ## Instructions 1. Check if you meet the [requirements at the top of this document](#requirements-on-your-server). + 2. Clone this repository (preferred) or download a release and unzip it. + 3. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs. + 4. Modify `config.json` or configure CodiMD through environment variables which will overwrite the configs, see docs [here](https://github.com/codimd/server/blob/master/docs/configuration.md). + 5. Build front-end bundle by `yarn run build` (use `yarn run dev` if you are in development) + 6. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string. For example: - `postgres://username:password@localhost:5432/codimd` - `mysql://username:password@localhost:3306/codimd` - `sqlite://:memory:` -7. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development). -8. Run the server as you like (node, forever, pm2, SystemD, Init-Scripts) +7. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development). + +8. Run the server as you like (node, forever, pm2, SystemD, Init-Scripts) ## How to upgrade your installation diff --git a/docs/slide-options.md b/docs/slide-options.md index d1277831a..ec68f717c 100644 --- a/docs/slide-options.md +++ b/docs/slide-options.md @@ -1,12 +1,12 @@ -Slide Separators -=== +# Slide Separators If you're getting started with reveal.js slides, there are a few things you need to know. There are two types of slides, those that transition horizontally and those that transition vertically (subslides). The following separators are used for each in the CodiMD syntax: -``` + +```markdown # First Slide --- @@ -23,7 +23,7 @@ as you can see, horizontal transitions are separated by `---` and vertical trans It's possible to customise the slide options using the YAML header in the slide markdown. eg: -``` +```yaml --- title: Example Slide tags: presentation @@ -38,7 +38,8 @@ make sure to have two spaces only at the start of the listed slide options. you can comment out options with a `#` ### Some other options -``` + +```markdown # Display controls in the bottom right corner controls: true @@ -151,7 +152,8 @@ display: 'block' ## Customising individual slides custom background image: -``` + +```markdown --- diff --git a/docs/url-scheme.md b/docs/url-scheme.md index 88f34855f..e2f2709ed 100644 --- a/docs/url-scheme.md +++ b/docs/url-scheme.md @@ -9,7 +9,7 @@ When you create a new note by clicking the "New note" button, your note is given | example URL | prefix | mode | content updates | | -------------------------------------- | ------ | ----------------- | --------------- | -| pad.example.com/Ndmv3oCyREKZMjSGR9uhnQ | _none_ | editor | in realtime | +| pad.example.com/Ndmv3oCyREKZMjSGR9uhnQ | *none* | editor | in realtime | | pad.example.com/s/ByXF7k-YI | s/ | read-only version | on reload | | pad.example.com/p/ByXF7k-YI | p/ | presentation mode | on reload | @@ -19,7 +19,7 @@ If the setting `CMD_ALLOW_FREEURL` is enabled, users may create notes with a cus | example URL | prefix | mode | content updates | | --------------------------------- | ------ | ----------------- | --------------- | -| pad.example.com/my-awesome-note | _none_ | editor | in realtime | +| pad.example.com/my-awesome-note | *none* | editor | in realtime | | pad.example.com/s/my-awesome-note | s/ | read-only version | on reload | | pad.example.com/p/my-awesome-note | p/ | presentation mode | on reload | diff --git a/public/docs/features.md b/public/docs/features.md index 888cac103..5f1d84154 100644 --- a/public/docs/features.md +++ b/public/docs/features.md @@ -4,9 +4,9 @@ **CodiMD** is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your **desktop**, **tablet** or even on the **phone**. -You can sign-in via multiple auth providers like **Facebook**, **Twitter**, **GitHub** and many more on the [_homepage_](/). +You can sign-in via multiple auth providers like **Facebook**, **Twitter**, **GitHub** and many more on the [*homepage*](/). -If you experience any _issues_, feel free to report it on [**GitHub**](https://github.com/codimd/server/issues). +If you experience any *issues*, feel free to report it on [**GitHub**](https://github.com/codimd/server/issues). Or meet us on [**Matrix.org**](https://riot.im/app/#/room/#codimd:matrix.org) for dev-talk and interactive help. **Thank you very much!** @@ -50,21 +50,21 @@ Currently, you can save to **Dropbox** (depending ### Import Notes -Similarly to the _save_ feature, you can also import a Markdown file from **Dropbox** (depending on the instance's configuration), or import content from your **clipboard** , which can parse some HTML. :smiley: +Similarly to the *save* feature, you can also import a Markdown file from **Dropbox** (depending on the instance's configuration), or import content from your **clipboard** , which can parse some HTML. :smiley: ### Permissions It is possible to change the access permission of a note through the little button on the top right of the view. There are four possible options: -| |Owner read/write|Signed-in read|Signed-in write|Guest read|Guest write| -|:-----------------------------|:--------------:|:------------:|:-------------:|:--------:|:---------:| -| **Freely**|✔|✔|✔|✔|✔| -| **Editable**|✔|✔|✔|✔|✖| -| **Limited**|✔|✔|✔|✖|✖| -| **Locked**|✔|✔|✖|✔|✖| -| **Protected**|✔|✔|✖|✖|✖| -| **Private**|✔|✖|✖|✖|✖| +| | Owner read/write | Signed-in read | Signed-in write | Guest read | Guest write | +|:------------------------------------------------------------------------------------ |:----------------:|:--------------:|:---------------:|:----------:|:-----------:| +| **Freely** | ✔ | ✔ | ✔ | ✔ | ✔ | +| **Editable** | ✔ | ✔ | ✔ | ✔ | ✖ | +| **Limited** | ✔ | ✔ | ✔ | ✖ | ✖ | +| **Locked** | ✔ | ✔ | ✖ | ✔ | ✖ | +| **Protected** | ✔ | ✔ | ✖ | ✖ | ✖ | +| **Private** | ✔ | ✖ | ✖ | ✖ | ✖ | **Only the owner of the note can change the note's permissions.** @@ -88,8 +88,8 @@ To switch the editor into slide mode, set the [document type](./yaml-metadata#ty ### Autogenerated Table of Contents -You can look at the bottom right section of the view area, there is a _ToC_ button . -Pressing that button will show you a current _Table of Contents_, and will highlight which section you're at. +You can look at the bottom right section of the view area, there is a *ToC* button . +Pressing that button will show you a current *Table of Contents*, and will highlight which section you're at. ToCs support up to **three header levels**. ### Permalink @@ -127,7 +127,7 @@ The first **level 1 heading** (e.g. `# Title`) will be used as the note title. Using tags as follows, the specified tags will show in your **history**. -###### tags: `features` `cool` `updated` +#### tags: `features` `cool` `updated` ### [YAML Metadata](./yaml-metadata) @@ -246,7 +246,7 @@ When you’re a carpenter making a beautiful chest of drawers, you’re not goin #### PDF **Caution: this might be blocked by your browser if not using an `https` URL.** -{%pdf https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf %} +{%pdf %} ### MathJax @@ -492,41 +492,41 @@ console.log(foo(5)); #### Tables -| Option | Description | -| ------ | ----------- | +| Option | Description | +| ------ | ------------------------------------------------------------------------- | | data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | Right aligned columns -| Option | Description | -| ------:| -----------:| -| data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | +| Option | Description | +| ------:| -------------------------------------------------------------------------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | Left aligned columns -| Option | Description | -|:------ |:----------- | +| Option | Description | +|:------ |:------------------------------------------------------------------------- | | data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | Center aligned columns -| Option | Description | -|:------:|:-----------:| -| data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | +| Option | Description | +|:------:|:-------------------------------------------------------------------------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | #### Links [link text](https://demo.codimd.org) [link with title](https://nodeca.github.io/pica/demo/ "title text!") -Autoconverted link https://github.com/nodeca/pica +Autoconverted link #### Images @@ -569,7 +569,7 @@ Term 2 with *inline markup* Third paragraph of definition 2. -_Compact style:_ +*Compact style:* Term 1 ~ Definition 1 diff --git a/public/docs/privacy.md.example b/public/docs/privacy.md.example index 441a993a2..cb9f1122a 100644 --- a/public/docs/privacy.md.example +++ b/public/docs/privacy.md.example @@ -1,14 +1,13 @@ -Privacy -=== +# Privacy We process the following data, for the following purposes: -|your data|our usage| -|---------|---------| -|IP-Address|Used to communicate with your browser and our servers. It's may exposed to third-parties which provide resources for this service. These services are, depending on your login method, the document you visit and the setup of this instance: Google, Disqus, MathJax, GitHub, SlideShare/LinkedIn, yahoo, Libravatar, Imgur, Amazon, and Cloudflare.| -|Usernames and profiles|Your username as well as user profiles that are connected with it are transmitted and stored by us to provide a useful login integration with services like GitHub, Facebook, Twitter, GitLab, Dropbox, Google. Depending on the setup of this CodiMD instance there are maybe other third-parties involved using SAML, LDAP or the integration with a Mattermost instance.| -|Profile pictures| Your profile picture is either loaded from the service you used to login, the CodiMD instance or Libravatar.| -|Uploaded pictures| Pictures that are uploaded for documents are either uploaded to Amazon S3, Imgur, a minio instance or the local filesystem of the CodiMD server.| +| your data | our usage | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| IP-Address | Used to communicate with your browser and our servers. It's may exposed to third-parties which provide resources for this service. These services are, depending on your login method, the document you visit and the setup of this instance: Google, Disqus, MathJax, GitHub, SlideShare/LinkedIn, yahoo, Libravatar, Imgur, Amazon, and Cloudflare. | +| Usernames and profiles | Your username as well as user profiles that are connected with it are transmitted and stored by us to provide a useful login integration with services like GitHub, Facebook, Twitter, GitLab, Dropbox, Google. Depending on the setup of this CodiMD instance there are maybe other third-parties involved using SAML, LDAP or the integration with a Mattermost instance. | +| Profile pictures | Your profile picture is either loaded from the service you used to login, the CodiMD instance or Libravatar. | +| Uploaded pictures | Pictures that are uploaded for documents are either uploaded to Amazon S3, Imgur, a minio instance or the local filesystem of the CodiMD server. | All account data and notes are stored in a mysql/postgres/sqlite database. Besides the user accounts and the document themselves also relationships between the documents and the user accounts are stored. This includes ownership, authorship and revisions of all changes made during the creation of a note. diff --git a/public/docs/release-notes.md b/public/docs/release-notes.md index 72b00cf42..418d24db7 100644 --- a/public/docs/release-notes.md +++ b/public/docs/release-notes.md @@ -1,1209 +1,1318 @@ -Release Notes -=== +# Release Notes - 1.6.0 2020-02-17 ---- +## 1.6.0 2020-02-17 ### Announcements -* After the 1.6 release we will start to develop Version 2.0, which will introduce breaking changes. But we will take care of making your way to 2.0 easy. -* Since Node version 8 is EOL since January 2020, 1.6 will be the last version with support for Node version 8 -* `useCDN` is now `false` by default. This feature is deprecated already and will be removed in 2.0. +- After the 1.6 release we will start to develop Version 2.0, which will introduce breaking changes. But we will take care of making your way to 2.0 easy. +- Since Node version 8 is EOL since January 2020, 1.6 will be the last version with support for Node version 8 +- `useCDN` is now `false` by default. This feature is deprecated already and will be removed in 2.0. ### Enhancements -* Add AWS endpoint configuration options -* Add ability to add an imprint using `./public/docs/imprint.md` -* Improve documentation in various sections -* Add ability to create note based on alias in free-url-mode -* Add security note describing the preferred way for responsible disclosures -* Extend forbiddenNoteIds to prevent conflicts with resource directories -* Add OpenGraph metadata support -* Add slovak language -* Add API documentation -* Allow different reference-url styles -* Add automatic focus username field in login modal -* Add ability to limit google-auth to own domain -* Upgrade revealJS to version 3.9.2 -* Upgrade mermaid to version 8.4.6 -* Update translations (zh-cn, zh-TW, en, de, id, pl, ar, ca, fr, it, sk, sv, ja, nl, pt, ru, es) + +- Add AWS endpoint configuration options +- Add ability to add an imprint using `./public/docs/imprint.md` +- Improve documentation in various sections +- Add ability to create note based on alias in free-url-mode +- Add security note describing the preferred way for responsible disclosures +- Extend forbiddenNoteIds to prevent conflicts with resource directories +- Add OpenGraph metadata support +- Add slovak language +- Add API documentation +- Allow different reference-url styles +- Add automatic focus username field in login modal +- Add ability to limit google-auth to own domain +- Upgrade revealJS to version 3.9.2 +- Upgrade mermaid to version 8.4.6 +- Update translations (zh-cn, zh-TW, en, de, id, pl, ar, ca, fr, it, sk, sv, ja, nl, pt, ru, es) ### Fixes -* Fix docker secrets support -* Fix sequlize-cli dependency location -* Fix crash in lutim integration -* Fix manage_users CLI handling of non-existing user -* Fix ability to serve CodiMD from different urlpath than `/` -* Fix change from gravatar to libravatar in privacy policy example -* Fix missing browser icons in README + +- Fix docker secrets support +- Fix sequlize-cli dependency location +- Fix crash in lutim integration +- Fix manage_users CLI handling of non-existing user +- Fix ability to serve CodiMD from different urlpath than `/` +- Fix change from gravatar to libravatar in privacy policy example +- Fix missing browser icons in README ### Refactors -* Refactor note creation handling -* Improve webpack documentation -* Split note actions into own files -* Refactor returnTo handling for auth + +- Refactor note creation handling +- Improve webpack documentation +- Split note actions into own files +- Refactor returnTo handling for auth ### Removals -* Legacy handling of socket.io connections -* Node 8 CI jobs + +- Legacy handling of socket.io connections +- Node 8 CI jobs ### Contributors -* [Amolith](https://github.com/Amolith) -* Andrea Rossi (translator) -* CasperS (translator) -* Cpp.create (translator) -* [David Mehren](https://github.com/davidmehren) -* Deluxghost (translator) -* em_crx (translator) -* [Enrico Guiraud](https://github.com/bluehood) -* Epson12332 (translator) -* [Erik Michelson](https://github.com/ErikMichelson) -* Fajar Maulana (translator) -* [Fonata](https://github.com/Fonata) -* [foobarable](https://github.com/foobarable) -* [Girish Ramakrishnan](https://github.com/gramakri) -* Grzegorz (translator) -* [hoijui](https://github.com/hoijui) -* [Ian Tsai](https://github.com/b10102016) -* id7xyz (translator) -* [ike](https://github.com/ikewat) -* Info (translator) -* Javier Leandro (translator) -* [Jonas Thelemann](https://github.com/dargmuesli) -* [Jonas Zohren](https://github.com/jfowl) -* kazutomo.waragai (translator) -* [MartinT](https://github.com/MartinTuroci) -* [Mathias Merscher](https://github.com/madddi) -* [Matthias Lindinger](https://github.com/morpheus-87) -* Mdhm (translator) -* Me (translator) -* mondstern (translator) -* Patrick (translator) -* Rafael Gauna Trindade (translator) -* Ramon van Biljouw (translator) -* [RyotaK](https://github.com/Ry0taK) -* [Sandro](https://github.com/SuperSandro2000) -* [Sören Wegener](https://github.com/soerface) -* [Stefan Peters](https://github.com/stefandesu) -* [Yukai Huang](https://github.com/Yukaii) - 1.5.0 2019-08-15 00:00 ---- +- [Amolith](https://github.com/Amolith) +- Andrea Rossi (translator) +- CasperS (translator) +- Cpp.create (translator) +- [David Mehren](https://github.com/davidmehren) +- Deluxghost (translator) +- em_crx (translator) +- [Enrico Guiraud](https://github.com/bluehood) +- Epson12332 (translator) +- [Erik Michelson](https://github.com/ErikMichelson) +- Fajar Maulana (translator) +- [Fonata](https://github.com/Fonata) +- [foobarable](https://github.com/foobarable) +- [Girish Ramakrishnan](https://github.com/gramakri) +- Grzegorz (translator) +- [hoijui](https://github.com/hoijui) +- [Ian Tsai](https://github.com/b10102016) +- id7xyz (translator) +- [ike](https://github.com/ikewat) +- Info (translator) +- Javier Leandro (translator) +- [Jonas Thelemann](https://github.com/dargmuesli) +- [Jonas Zohren](https://github.com/jfowl) +- kazutomo.waragai (translator) +- [MartinT](https://github.com/MartinTuroci) +- [Mathias Merscher](https://github.com/madddi) +- [Matthias Lindinger](https://github.com/morpheus-87) +- Mdhm (translator) +- Me (translator) +- mondstern (translator) +- Patrick (translator) +- Rafael Gauna Trindade (translator) +- Ramon van Biljouw (translator) +- [RyotaK](https://github.com/Ry0taK) +- [Sandro](https://github.com/SuperSandro2000) +- [Sören Wegener](https://github.com/soerface) +- [Stefan Peters](https://github.com/stefandesu) +- [Yukai Huang](https://github.com/Yukaii) + +## 1.5.0 2019-08-15 00:00 ### Announcements -* There is a new docker image available by LinuxServer.io providing an ARM container -* Disabling PDF export due to security problems + +- There is a new docker image available by LinuxServer.io providing an ARM container +- Disabling PDF export due to security problems ### Enhancements -* Add migration guide for Node version 6 -* Add functionality to respect Do-Not-Track header -* Add Arabian translation + +- Add migration guide for Node version 6 +- Add functionality to respect Do-Not-Track header +- Add Arabian translation ### Fixes -* Fix styling in slide preview -* Fix some lint warning -* Upgrade Sequelize to version 5 -* Add Linuxserver.io setup instructions for CodiMD -* Update translations for DE, SV, ID -* Add ability to upload SVGs -* Add `dbURL`config as docker secret -* Upgrade meta-marked - Fixes DOS capability in CodiMD (https://github.com/codimd/server/commit/ba6a24a673c24db25969de2a59b9341247f3f722) -* Fix variable names in docker secrets config library + +- Fix styling in slide preview +- Fix some lint warning +- Upgrade Sequelize to version 5 +- Add Linuxserver.io setup instructions for CodiMD +- Update translations for DE, SV, ID +- Add ability to upload SVGs +- Add `dbURL`config as docker secret +- Upgrade meta-marked - Fixes DOS capability in CodiMD () +- Fix variable names in docker secrets config library ### Refactors -* Refactor debug logging in various places + +- Refactor debug logging in various places ### Deprecations -* `useCDN` will be deprecated and will disappear in favor of locally served resources. (https://community.codimd.org/t/poll-on-cdn-usage/28) + +- `useCDN` will be deprecated and will disappear in favor of locally served resources. () ### Contributors -* [Amolith](https://github.com/Amolith) (social media) -* Aro Row (translator) -* bitinerant (security) -* Butterflyoffire (translator) -* [Claudius Coenen (ccoenen)](https://github.com/ccoenen) -* Erik (translator) -* Fajar Maulana (translator) -* id7xyz (translator) -* joohoi (security) -* [Jonas Thelemann (dargmuesli)](https://github.com/dargmuesli) -* [Lennart Weller (lhw)](https://github.com/lhw) -* [chbmb](https://github.com/CHBMB) -* [Raccoon (a60814billy)](https://github.com/a60814billy) -* RS232 (translator) -* [Toma Tasovac (ttasovac)](https://github.com/ttasovac) +- [Amolith](https://github.com/Amolith) (social media) +- Aro Row (translator) +- bitinerant (security) +- Butterflyoffire (translator) +- [Claudius Coenen (ccoenen)](https://github.com/ccoenen) +- Erik (translator) +- Fajar Maulana (translator) +- id7xyz (translator) +- joohoi (security) +- [Jonas Thelemann (dargmuesli)](https://github.com/dargmuesli) +- [Lennart Weller (lhw)](https://github.com/lhw) +- [chbmb](https://github.com/CHBMB) +- [Raccoon (a60814billy)](https://github.com/a60814billy) +- RS232 (translator) +- [Toma Tasovac (ttasovac)](https://github.com/ttasovac) - 1.4.0 2019-05-31 00:00 ---- +## 1.4.0 2019-05-31 00:00 ### Announcements -* CodiMD now has a [Mastodon account](https://social.codimd.org/mastodon) -* CodiMD now has a [community forum](https://community.codimd.org) -* With CodiMD 1.4.0 we're dropping node 6 support. That version of node.js is discontinued and no longer receives any security updates. We would like to encourage you to upgrade node 8 or later. Node 8 will continue to be supported at least until its end-of-life in January 2020. + +- CodiMD now has a [Mastodon account](https://social.codimd.org/mastodon) +- CodiMD now has a [community forum](https://community.codimd.org) +- With CodiMD 1.4.0 we're dropping node 6 support. That version of node.js is discontinued and no longer receives any security updates. We would like to encourage you to upgrade node 8 or later. Node 8 will continue to be supported at least until its end-of-life in January 2020. ### Enhancements -* Use libravatar instead of Gravatar -* Fix language description capitalization -* Move upload button into the toolbar -* Clean up Heroku configurations -* Add new screenshot to README and index page -* Add link to community call to README -* Update languages (pl, sr, zh-CN, fr, it, ja, zh-TW, de, sv, es) -* Change edit link to `both` view -* Hide minio default ports -* Add missing passport-saml configuration -* Add lutim support -* Update dependencies -* Add documentation for keycloak -* Add tests for user model -* Add Mastodon link -* Add config for toobusy middleware -* Add vietnamese language + +- Use libravatar instead of Gravatar +- Fix language description capitalization +- Move upload button into the toolbar +- Clean up Heroku configurations +- Add new screenshot to README and index page +- Add link to community call to README +- Update languages (pl, sr, zh-CN, fr, it, ja, zh-TW, de, sv, es) +- Change edit link to `both` view +- Hide minio default ports +- Add missing passport-saml configuration +- Add lutim support +- Update dependencies +- Add documentation for keycloak +- Add tests for user model +- Add Mastodon link +- Add config for toobusy middleware +- Add vietnamese language ### Fixes -* Fix missing space in footer -* Fix various possible security vulnerabilities in dependencies -* Fix broken dependency js-sequence-diagrams -* Fix XSS in graphviz error message rendering -* Fix toolbar night mode -* Fix hidden header on scroll -* Fix missing pictures for OpenID -* Fix statusbar hiding text in edit view + +- Fix missing space in footer +- Fix various possible security vulnerabilities in dependencies +- Fix broken dependency js-sequence-diagrams +- Fix XSS in graphviz error message rendering +- Fix toolbar night mode +- Fix hidden header on scroll +- Fix missing pictures for OpenID +- Fix statusbar hiding text in edit view ### Refactors -* Refactor README and documentation -* Integrate the old wiki into documentation section -* Refactor headers on Features page -* Replace js-url with wurl -* Refactor scrypt integration + +- Refactor README and documentation +- Integrate the old wiki into documentation section +- Refactor headers on Features page +- Replace js-url with wurl +- Refactor scrypt integration ### Removals -* Remove sass-loader + +- Remove sass-loader ### Contributors -* [Amolith](https://github.com/Amolith) -* CasperS (translator) -* Cedric.couralet (translator) -* [Claudius Coenen (ccoenen)](https://github.com/ccoenen) -* Daniel (translator) -* Deluxghost (translator) -* [Dylan Dervaux (Dylanderv)](https://github.com/Dylanderv) -* [Emmanuel Ormancey (nopap)](https://github.com/nopap) -* Grzegorz (translator) -* [Henrik Hüttemann (HerHde)](https://github.com/HerHde) -* Hồng (translator) -* [Mauricio Robayo (archemiro)](https://github.com/archemiro) -* [Max Wu (jackycute)](https://github.com/jackycute) -* [naimo](https://github.com/naimo) -* [Pedro Ferreira (pferreir)](https://github.com/pferreir) -* [Simon Fish (boardfish)](https://github.com/boardfish) -* [Stéphane Guillou (stragu)](https://github.com/stragu) -* Sylke Vicious (translator) -* [Thor77](https://github.com/Thor77) -* veracosta (translator) -* Vladan (translator) -* War (translator) -* Zhai233 (translator) +- [Amolith](https://github.com/Amolith) +- CasperS (translator) +- Cedric.couralet (translator) +- [Claudius Coenen (ccoenen)](https://github.com/ccoenen) +- Daniel (translator) +- Deluxghost (translator) +- [Dylan Dervaux (Dylanderv)](https://github.com/Dylanderv) +- [Emmanuel Ormancey (nopap)](https://github.com/nopap) +- Grzegorz (translator) +- [Henrik Hüttemann (HerHde)](https://github.com/HerHde) +- Hồng (translator) +- [Mauricio Robayo (archemiro)](https://github.com/archemiro) +- [Max Wu (jackycute)](https://github.com/jackycute) +- [naimo](https://github.com/naimo) +- [Pedro Ferreira (pferreir)](https://github.com/pferreir) +- [Simon Fish (boardfish)](https://github.com/boardfish) +- [Stéphane Guillou (stragu)](https://github.com/stragu) +- Sylke Vicious (translator) +- [Thor77](https://github.com/Thor77) +- veracosta (translator) +- Vladan (translator) +- War (translator) +- Zhai233 (translator) - 1.3.2 2019-03-28 00:00 ---- +## 1.3.2 2019-03-28 00:00 ### Announcement -* CodiMD is now running in an own organization. [Check out our vision for the future](https://github.com/codimd/server/issues/10) + +- CodiMD is now running in an own organization. [Check out our vision for the future](https://github.com/codimd/server/issues/10) ### Fixes -* Update various links to the new repositories -* Fix background color for mode switching button in night mode - 1.3.1 2019-03-23 00:00 ---- +- Update various links to the new repositories +- Fix background color for mode switching button in night mode + +## 1.3.1 2019-03-23 00:00 ### Enhancements -* Add some missing translations -* Add Serbian language + +- Add some missing translations +- Add Serbian language ### Fixes -* Fix broken redirect for empty `serverURL` -* Fix wrong variable type for HSTS maxAge -* Fix GitLab snippets showing up without being configured -* Fix Google's API after disabling Google+ -* Fix broken PDF export + +- Fix broken redirect for empty `serverURL` +- Fix wrong variable type for HSTS maxAge +- Fix GitLab snippets showing up without being configured +- Fix Google's API after disabling Google+ +- Fix broken PDF export ### Contributors -* atachibana (translator) -* [Aurélien JANVIER](https://github.com/ajanvier) (translator) -* [Daan Sprenkels](https://github.com/dsprenkels) (translator) -* Farizrizaldy (translator) -* [Luclu7](https://github.com/Luclu7) -* Sylke Vicious (translator) -* [toshi0123](https://github.com/toshi0123) & okochi-toshiki -* [Turakar](https://github.com/Turakar) -* [Vladan](https://github.com/cvladan) (translator) - 1.3.0 2019-03-03 00:00 ---- +- atachibana (translator) +- [Aurélien JANVIER](https://github.com/ajanvier) (translator) +- [Daan Sprenkels](https://github.com/dsprenkels) (translator) +- Farizrizaldy (translator) +- [Luclu7](https://github.com/Luclu7) +- Sylke Vicious (translator) +- [toshi0123](https://github.com/toshi0123) & okochi-toshiki +- [Turakar](https://github.com/Turakar) +- [Vladan](https://github.com/cvladan) (translator) + +## 1.3.0 2019-03-03 00:00 ### Enhancements -* Run db migrations on `npm start` -* Add documentation about integration with AD LDAP -* Add `rel="noopener"` to all links -* Add documentation about integration with Nextcloud for authentication -* Update URL on frontpage to point to codimd.org -* Replace Fontawesome with Forkawesome -* Add OpenID support -* Add print icon to slide view -* Add auto-complete for language names that are highlighted in codeblocks -* Improve translations for Chinese, Dutch, French, German, Italien, Korean, Polish, and Russian language -* Add Download action to published document API -* Add reset password feature to `manage_users` script -* Move from own `./tmp` directory to system temp directory -* Add Etherpad migration guide -* Move XSS library to a more native position -* Use full version string to determine changes from the backend -* Update winston (logging library) -* Use slide preview in slide example -* Improve migration handling -* Update reveal.js to version 3.7.0 -* Replace scrypt library with its successor -* Replace `to-markdown` with `turndown` (successor library) -* Update socket.io -* Add warning on missing base URL -* Update bootstrap to version 3.4.0 -* Update handlebar + +- Run db migrations on `npm start` +- Add documentation about integration with AD LDAP +- Add `rel="noopener"` to all links +- Add documentation about integration with Nextcloud for authentication +- Update URL on frontpage to point to codimd.org +- Replace Fontawesome with Forkawesome +- Add OpenID support +- Add print icon to slide view +- Add auto-complete for language names that are highlighted in codeblocks +- Improve translations for Chinese, Dutch, French, German, Italien, Korean, Polish, and Russian language +- Add Download action to published document API +- Add reset password feature to `manage_users` script +- Move from own `./tmp` directory to system temp directory +- Add Etherpad migration guide +- Move XSS library to a more native position +- Use full version string to determine changes from the backend +- Update winston (logging library) +- Use slide preview in slide example +- Improve migration handling +- Update reveal.js to version 3.7.0 +- Replace scrypt library with its successor +- Replace `to-markdown` with `turndown` (successor library) +- Update socket.io +- Add warning on missing base URL +- Update bootstrap to version 3.4.0 +- Update handlebar ### Fixes -* Fix paths in GitLab documentation -* Fix missing `data:` URL in CSP -* Fix oAuth2 name/label field -* Fix GitLab API integration -* Fix auto-completed but not rendered emojis -* Fix menu organization depending on enabled services -* Fix some logging in the OT module -* Fix some unhandled internalOAuthError exception -* Fix unwanted creation of robots.txt document in "freeurl-mode" -* Fix some links on index page to lead to the right sections on feature page -* Fix document breaking, empty headlines -* Fix wrong multiplication for HSTS header seconds -* Fix wrong subdirectories in exported user data -* Fix CSP for speaker notes -* Fix CSP for disqus -* Fix URL API usage -* Fix Gist embedding -* Fix upload provider error message -* Fix unescaped disqus user names -* Fix SAML vulnerability -* Fix link to SAML guide -* Fix deep dependency problem with node 6.x -* Fix broken PDF export by wrong unlink call -* Fix possible XSS attack in MathJax + +- Fix paths in GitLab documentation +- Fix missing `data:` URL in CSP +- Fix oAuth2 name/label field +- Fix GitLab API integration +- Fix auto-completed but not rendered emojis +- Fix menu organization depending on enabled services +- Fix some logging in the OT module +- Fix some unhandled internalOAuthError exception +- Fix unwanted creation of robots.txt document in "freeurl-mode" +- Fix some links on index page to lead to the right sections on feature page +- Fix document breaking, empty headlines +- Fix wrong multiplication for HSTS header seconds +- Fix wrong subdirectories in exported user data +- Fix CSP for speaker notes +- Fix CSP for disqus +- Fix URL API usage +- Fix Gist embedding +- Fix upload provider error message +- Fix unescaped disqus user names +- Fix SAML vulnerability +- Fix link to SAML guide +- Fix deep dependency problem with node 6.x +- Fix broken PDF export by wrong unlink call +- Fix possible XSS attack in MathJax ### Refactors -* Refactor to use `ws` instead of the the no longer supported `uws` -* Refactor frontend build system to use webpack version 4 -* Refactor file path configuration (views, uploads, …) -* Refactor `manage_users` script -* Refactor handling of template variables -* Refactor linting to use eslint + +- Refactor to use `ws` instead of the the no longer supported `uws` +- Refactor frontend build system to use webpack version 4 +- Refactor file path configuration (views, uploads, …) +- Refactor `manage_users` script +- Refactor handling of template variables +- Refactor linting to use eslint ### Removals -* Remove no longer working Octicons -* Remove links to our old Gitter channel -* Remove unused library node-uuid -* Remove unneeded blueimp-md5 dependency -* Remove speakerdeck due to broken implementation + +- Remove no longer working Octicons +- Remove links to our old Gitter channel +- Remove unused library node-uuid +- Remove unneeded blueimp-md5 dependency +- Remove speakerdeck due to broken implementation ### Contributors -* Adam.emts (translator) -* [Alex Garcia](https://github.com/asg017) -* [Cédric Couralet (micedre)](https://github.com/micedre) -* [Claudius Coenen](https://github.com/ccoenen) -* [Daan Sprenkels](https://github.com/dsprenkels) -* [David Mehren](https://github.com/davidmehren) -* [Erona](https://github.com/Eronana) -* [Felix Yan](https://github.com/felixonmars) -* [Jonathan](https://github.com/phrix32) -* Jong-kai Yang (translator) -* [MartB](https://github.com/MartB) -* [Max Wu (jackycute)](https://github.com/jackycute) -* [mcnesium](https://github.com/mcnesium) -* Nullnine (translator) -* RanoIP (translator) -* [SuNbiT](https://github.com/sunbit) -* Sylke Vicious (translator) -* Timothee (translator) -* [WilliButz](https://github.com/WilliButz) -* [Xaver Maierhofer](https://github.com/xf-) -* [云屿](https://github.com/cloudyu) - 1.2.1 2018-09-26 00:00 ---- +- Adam.emts (translator) +- [Alex Garcia](https://github.com/asg017) +- [Cédric Couralet (micedre)](https://github.com/micedre) +- [Claudius Coenen](https://github.com/ccoenen) +- [Daan Sprenkels](https://github.com/dsprenkels) +- [David Mehren](https://github.com/davidmehren) +- [Erona](https://github.com/Eronana) +- [Felix Yan](https://github.com/felixonmars) +- [Jonathan](https://github.com/phrix32) +- Jong-kai Yang (translator) +- [MartB](https://github.com/MartB) +- [Max Wu (jackycute)](https://github.com/jackycute) +- [mcnesium](https://github.com/mcnesium) +- Nullnine (translator) +- RanoIP (translator) +- [SuNbiT](https://github.com/sunbit) +- Sylke Vicious (translator) +- Timothee (translator) +- [WilliButz](https://github.com/WilliButz) +- [Xaver Maierhofer](https://github.com/xf-) +- [云屿](https://github.com/cloudyu) + +## 1.2.1 2018-09-26 00:00 ### Enhancements -* Update Italian translations -* Update Japanese translations -* Update markdown-pdf -* Add support for unix sockets -* Update "follow us" information to Community channel and translation -* Add Cloudron installation method -* Add guide for Mattermost authentication -* Update various packages -* Add Indonesian language as new translation + +- Update Italian translations +- Update Japanese translations +- Update markdown-pdf +- Add support for unix sockets +- Update "follow us" information to Community channel and translation +- Add Cloudron installation method +- Add guide for Mattermost authentication +- Update various packages +- Add Indonesian language as new translation ### Fixes -* Fix content types in status router -* Fix some modal colors in night mode -* Fix CSP to allow usage of speaker notes -* Fix some wrong title attributes in the editor toolbar -* Fix some confusion about the default location of images. It's always the local filesystem now -* Fix object handling in avatar generation code -* Finally fix error handling of LZ-String by using self-maintained version -* Fix migration handling -* Fix gitlab API version -* Fix some server crashes caused by PDF creation -* Fix document length limit on post to `/new` -* Fix broken youtube embedding on `/features` page + +- Fix content types in status router +- Fix some modal colors in night mode +- Fix CSP to allow usage of speaker notes +- Fix some wrong title attributes in the editor toolbar +- Fix some confusion about the default location of images. It's always the local filesystem now +- Fix object handling in avatar generation code +- Finally fix error handling of LZ-String by using self-maintained version +- Fix migration handling +- Fix gitlab API version +- Fix some server crashes caused by PDF creation +- Fix document length limit on post to `/new` +- Fix broken youtube embedding on `/features` page ### Refactors -* Refactor generation of table of contents -* Refactor "copyright"-section to be a "Powered by" + +- Refactor generation of table of contents +- Refactor "copyright"-section to be a "Powered by" ### Removes -* Remove unneeded inline styling + +- Remove unneeded inline styling ### Deprecations -* NodeJS version 6 -* Mattermost login integration (is replaced by [generic oAuth2 module](https://github.com/codimd/server/blob/6ce7b20a7f92ccff2f7f870ff5d116d685310cfd/docs/guides/auth/mattermost-self-hosted.md)) + +- NodeJS version 6 +- Mattermost login integration (is replaced by [generic oAuth2 module](https://github.com/codimd/server/blob/6ce7b20a7f92ccff2f7f870ff5d116d685310cfd/docs/guides/auth/mattermost-self-hosted.md)) ### Honorable mentions -* [Alex Hesse (Pingu501)](https://github.com/Pingu501) -* [Alexander Wellbrock (w4tsn)](https://github.com/w4tsn) -* [Cédric Couralet (micedre)](https://github.com/micedre) -* [Girish Ramakrishnan (gramakri)](https://github.com/gramakri) -* [maahl](https://github.com/maahl) -* [Max Wu (jackycute)](https://github.com/jackycute) -* [Miranda (ahihi)](https://github.com/ahihi) -* [Ondřej Slabý (maxer456)](https://github.com/maxer456) - 1.2.0 2018-06-28 00:00 ---- +- [Alex Hesse (Pingu501)](https://github.com/Pingu501) +- [Alexander Wellbrock (w4tsn)](https://github.com/w4tsn) +- [Cédric Couralet (micedre)](https://github.com/micedre) +- [Girish Ramakrishnan (gramakri)](https://github.com/gramakri) +- [maahl](https://github.com/maahl) +- [Max Wu (jackycute)](https://github.com/jackycute) +- [Miranda (ahihi)](https://github.com/ahihi) +- [Ondřej Slabý (maxer456)](https://github.com/maxer456) + +## 1.2.0 2018-06-28 00:00 ### Announcement -* HackMD CE is renamed to CodiMD to prevent confusion. [For details see here](https://github.com/codimd/server/tree/master/docs/history.md) + +- HackMD CE is renamed to CodiMD to prevent confusion. [For details see here](https://github.com/codimd/server/tree/master/docs/history.md) ### Enhancements -* Show full title by hovering over to table of contents entries -* Add generic OAUTH2 support for authentication -* Redirect unauthenticated user to login page on "forbidden" pages -* Add ability to add ToS and privacy documents without code changes -* Add account deletion as part of user self-management -* Add download of all own notes -* Add privacy policy example (no legal advice) -* Increase checkbox size on slides -* Add support for Azure blob storage for image uploads -* Add Korean translation -* Add note about official K8s chart for deployment -* Add toolbar for markdown shortcuts in editor -* Add ability to disable Gravatar integration -* Add print icon to slide menu which leads to the print view. -* Add sequelize to setup instructions -* Update various packages + +- Show full title by hovering over to table of contents entries +- Add generic OAUTH2 support for authentication +- Redirect unauthenticated user to login page on "forbidden" pages +- Add ability to add ToS and privacy documents without code changes +- Add account deletion as part of user self-management +- Add download of all own notes +- Add privacy policy example (no legal advice) +- Increase checkbox size on slides +- Add support for Azure blob storage for image uploads +- Add Korean translation +- Add note about official K8s chart for deployment +- Add toolbar for markdown shortcuts in editor +- Add ability to disable Gravatar integration +- Add print icon to slide menu which leads to the print view. +- Add sequelize to setup instructions +- Update various packages ### Fixes -* Fix local writes for non-existing translations in production -* Fix wrong documentation about default image upload type -* Fix possible error if CodiMD is started with wrong working directory -* Fix issues caused by cached/cacheeable client config -* Fix issues caused by notes created via curl/API with CRLF line endings -* Fix broken images for downloaded PDFs while using `filesystem` as `imageUploadType` -* Fix Unicode URLs when using `allowFreeURL=true` + +- Fix local writes for non-existing translations in production +- Fix wrong documentation about default image upload type +- Fix possible error if CodiMD is started with wrong working directory +- Fix issues caused by cached/cacheeable client config +- Fix issues caused by notes created via curl/API with CRLF line endings +- Fix broken images for downloaded PDFs while using `filesystem` as `imageUploadType` +- Fix Unicode URLs when using `allowFreeURL=true` ### Refactors -* Split auth documentation into multiple documents + +- Split auth documentation into multiple documents ### Removes -* Remove polyfill for `useCDN=false` setups -* Remove unused and no longer needed symlink from translations + +- Remove polyfill for `useCDN=false` setups +- Remove unused and no longer needed symlink from translations ### Honorable mentions -* [Adam Hoka (ahoka)](https://github.com/ahoka) -* [Edgar Z. Alvarenga (aivuk)](https://github.com/aivuk) -* [Jacob Burden (jekrb)](https://github.com/jekrb) -* [Pedro Ferreira (pferreir)](https://github.com/pferreir) -* [TC Liu (liuderchi)](https://github.com/liuderchi) +- [Adam Hoka (ahoka)](https://github.com/ahoka) +- [Edgar Z. Alvarenga (aivuk)](https://github.com/aivuk) +- [Jacob Burden (jekrb)](https://github.com/jekrb) +- [Pedro Ferreira (pferreir)](https://github.com/pferreir) +- [TC Liu (liuderchi)](https://github.com/liuderchi) - 1.1.1-ce 2018-05-23 12:00 ---- +## 1.1.1-ce 2018-05-23 12:00 ### Security -* Fix Google Drive integration leaked `clientSecret` for Google integration -* Update base64url package + +- Fix Google Drive integration leaked `clientSecret` for Google integration +- Update base64url package ### Fixes -* Fix typos in integrations -* Fix high need of file descriptors during build -* Fix heroku deployment by limiting node version to <10.x + +- Fix typos in integrations +- Fix high need of file descriptors during build +- Fix heroku deployment by limiting node version to <10.x ### Refactors -* Refactor letterAvatars to be compliant with CSP + +- Refactor letterAvatars to be compliant with CSP ### Removes -* Google Drive integration + +- Google Drive integration ### Honorable mentions -* [Max Wu (jackycute)](https://github.com/jackycute) - 1.1.0-ce 2018-04-06 12:00 ---- +- [Max Wu (jackycute)](https://github.com/jackycute) + +## 1.1.0-ce 2018-04-06 12:00 ### Security -* Adding CSP headers -* Prevent data-leak by wrong LDAP config -* Generate dynamic `sessionSecret` if none is specified + +- Adding CSP headers +- Prevent data-leak by wrong LDAP config +- Generate dynamic `sessionSecret` if none is specified ### Enhancements -* Add Minio support -* Allow posting content to new notes by API -* Add anonymous edit function in restricted mode -* Add support for more Mimetypes on S3, Minio and local filesystem uploads -* Add basic CLI tooling for local user management -* Add referrer policy -* Add more usable HTML5 tags -* Add `useridField` in LDAP config -* Add option for ReportURI for CSP violations -* Add persistance for night mode -* Allow setting of `sessionSecret` by environment variable -* Add night mode to features page -* Add Riot / Matrix - Community link to help page + +- Add Minio support +- Allow posting content to new notes by API +- Add anonymous edit function in restricted mode +- Add support for more Mimetypes on S3, Minio and local filesystem uploads +- Add basic CLI tooling for local user management +- Add referrer policy +- Add more usable HTML5 tags +- Add `useridField` in LDAP config +- Add option for ReportURI for CSP violations +- Add persistance for night mode +- Allow setting of `sessionSecret` by environment variable +- Add night mode to features page +- Add Riot / Matrix - Community link to help page ### Fixes -* Fix ToDo-toggle function -* Fix LDAP provider name in front-end -* Fix errors on authenticated sessions for deleted users -* Fix typo in database migration -* Fix possible data truncation of authorship -* Minor fixes in README.md -* Allow usage of ESC-key by codemirror -* Fix array of emails in LDAP -* Fix type errors by environment configs -* Fix error message on some file API errors -* Fix minor CSS issues in night mode + +- Fix ToDo-toggle function +- Fix LDAP provider name in front-end +- Fix errors on authenticated sessions for deleted users +- Fix typo in database migration +- Fix possible data truncation of authorship +- Minor fixes in README.md +- Allow usage of ESC-key by codemirror +- Fix array of emails in LDAP +- Fix type errors by environment configs +- Fix error message on some file API errors +- Fix minor CSS issues in night mode ### Refactors -* Refactor contact -* Refactor social media integration on main page -* Refactor socket.io code to no longer use referrer -* Refactor webpack config to need less dependencies in package.json -* Refactor imageRouter for modularity -* Refactor configs to be camel case + +- Refactor contact +- Refactor social media integration on main page +- Refactor socket.io code to no longer use referrer +- Refactor webpack config to need less dependencies in package.json +- Refactor imageRouter for modularity +- Refactor configs to be camel case ### Removes -* Remove unused `tokenSecret` from LDAP config + +- Remove unused `tokenSecret` from LDAP config ### Deprecations -* All non-camelcase config + +- All non-camelcase config ### Honorable mentions -* [Dario Ernst (Nebukadneza)](https://github.com/Nebukadneza) -* [David Mehren (davidmehren)](https://github.com/davidmehren) -* [Dustin Frisch (fooker)](https://github.com/fooker) -* [Felix Schäfer (thegcat)](https://github.com/thegcat) -* [Literallie (xxyy)](https://github.com/xxyy) -* [Marc Deop (marcdeop)](https://github.com/marcdeop) -* [Max Wu (jackycute)](https://github.com/jackycute) -* [Robin Naundorf (senk)](https://github.com/senk) -* [Stefan Bühler (stbuehler)](https://github.com/stbuehler) -* [Takeaki Matsumoto (takmatsu)](https://github.com/takmatsu) -* [Tang TsungYi (vazontang)](https://github.com/vazontang) -* [Zearin (Zearin)](https://github.com/Zearin) - 1.0.1-ce 2018-01-19 15:00 ---- +- [Dario Ernst (Nebukadneza)](https://github.com/Nebukadneza) +- [David Mehren (davidmehren)](https://github.com/davidmehren) +- [Dustin Frisch (fooker)](https://github.com/fooker) +- [Felix Schäfer (thegcat)](https://github.com/thegcat) +- [Literallie (xxyy)](https://github.com/xxyy) +- [Marc Deop (marcdeop)](https://github.com/marcdeop) +- [Max Wu (jackycute)](https://github.com/jackycute) +- [Robin Naundorf (senk)](https://github.com/senk) +- [Stefan Bühler (stbuehler)](https://github.com/stbuehler) +- [Takeaki Matsumoto (takmatsu)](https://github.com/takmatsu) +- [Tang TsungYi (vazontang)](https://github.com/vazontang) +- [Zearin (Zearin)](https://github.com/Zearin) + +## 1.0.1-ce 2018-01-19 15:00 ### Security -* Fix Dropbox client secret leak + +- Fix Dropbox client secret leak ### Enhancements -* Improve version handling -* It's 2018! + +- Improve version handling +- It's 2018! ### Fixes -* Fix image alt-tag rendering -* Fix Dropbox appkey - 1.0.0-ce 2018-01-18 12:00 ---- +- Fix image alt-tag rendering +- Fix Dropbox appkey + +## 1.0.0-ce 2018-01-18 12:00 + ### License -* Switch from MIT to AGPL + +- Switch from MIT to AGPL ### Enhancements -* Improve language support -* Allow themes for reveal -* Add dark theme for editor and view -* Add danish translation -* Add simplified chinese translation -* Provide new permission table -* Make HSTS configurable -* Make PDF export configurable -* Add Mattermost auth support -* Add SAML support + +- Improve language support +- Allow themes for reveal +- Add dark theme for editor and view +- Add danish translation +- Add simplified chinese translation +- Provide new permission table +- Make HSTS configurable +- Make PDF export configurable +- Add Mattermost auth support +- Add SAML support ### Fixes -* Fix regex for speaker notes -* Fix S3 endpoint support -* Fix German translation -* Fix English translation -* Fix broken profile images -* Fix XSS attacks -* Fix history order -* Fix missing boolean settings -* Fix LDAP auth -* Fix too long notes droping content -* Fix mermaid compatiblity with new version -* Fix SSL CA path parsing + +- Fix regex for speaker notes +- Fix S3 endpoint support +- Fix German translation +- Fix English translation +- Fix broken profile images +- Fix XSS attacks +- Fix history order +- Fix missing boolean settings +- Fix LDAP auth +- Fix too long notes droping content +- Fix mermaid compatiblity with new version +- Fix SSL CA path parsing ### Refactors -* Refactor main page -* Refactor status pages -* Refactor config handling -* Refactor auth backend -* Refactor code styling -* Refactor middleware to modules - 0.5.1 `Doppio` 2017-03-23 00:20 ---- +- Refactor main page +- Refactor status pages +- Refactor config handling +- Refactor auth backend +- Refactor code styling +- Refactor middleware to modules + +## 0.5.1 `Doppio` 2017-03-23 00:20 + ### Enhancements -* Update to indicate version in status API header -* Update to generate front-end constants on server startup -* Update to add gitlab api scope option and auto adapt gitlab snippet feature on it -* Update to add default permission config option -* Update to add basics for secret management by Docker 1.13 -* Update webpack config to use parallel uglify plugin to speed up production build -* Update realtime to use timer to avoid memory leaks on busy tick -* Update to remove history cache to lower application coupling -* Update to add screenshot on index page -* Update index layout to add profile on navbar -* Update to support allow email register option -* Update to support disable anonymous view option -* Update to add limited and protected permission -* Update to allow displaying LDAP provider name on sign-in modal -* Update to show yaml-metadata and diagram parsing error in the view + +- Update to indicate version in status API header +- Update to generate front-end constants on server startup +- Update to add gitlab api scope option and auto adapt gitlab snippet feature on it +- Update to add default permission config option +- Update to add basics for secret management by Docker 1.13 +- Update webpack config to use parallel uglify plugin to speed up production build +- Update realtime to use timer to avoid memory leaks on busy tick +- Update to remove history cache to lower application coupling +- Update to add screenshot on index page +- Update index layout to add profile on navbar +- Update to support allow email register option +- Update to support disable anonymous view option +- Update to add limited and protected permission +- Update to allow displaying LDAP provider name on sign-in modal +- Update to show yaml-metadata and diagram parsing error in the view ### Fixes -* Fix XSS vulnerability in link regex [Security Issue] -* Fix todo list item class might add in wrong element -* Fix pagination error in list.js over v1.5.0 -* Fix update doc from filesystem cause redundant authorship stringify -* Fix export html to replace fallen cdn tortue.me to cdnjs -* Fix rendering might result XSS attribute on self closing tag [Security Issue] -* Fix out of sync when deleting on same cursor position on several clients -* Fix not determine OT have pending operations properly -* Fix to keep selections on save and restore info -* Fix image path problem when using filesystem backend -* Fix meta error not clear on before rendering -* Fix duplicated headers anchor link not been updated properly -* Fix checkLoginStateChanged might fall into infinite loop while calling loginStateChangeEvent -* Fix to workaround text shadow for font antialias might cause cut off in Edge -* Fix and refactor extracting content using metaMarked directly might lead in invalid object + +- Fix XSS vulnerability in link regex [Security Issue] +- Fix todo list item class might add in wrong element +- Fix pagination error in list.js over v1.5.0 +- Fix update doc from filesystem cause redundant authorship stringify +- Fix export html to replace fallen cdn tortue.me to cdnjs +- Fix rendering might result XSS attribute on self closing tag [Security Issue] +- Fix out of sync when deleting on same cursor position on several clients +- Fix not determine OT have pending operations properly +- Fix to keep selections on save and restore info +- Fix image path problem when using filesystem backend +- Fix meta error not clear on before rendering +- Fix duplicated headers anchor link not been updated properly +- Fix checkLoginStateChanged might fall into infinite loop while calling loginStateChangeEvent +- Fix to workaround text shadow for font antialias might cause cut off in Edge +- Fix and refactor extracting content using metaMarked directly might lead in invalid object ### Refactors -* Refactor editor related code -* Refactor code with JavaScript Standard Style -* Refactor templates, partials and rearrange its path -* Refactor front-end code with more modular concepts -* Refactor front-end code using ES6 (also unify configs to `config.json`) + +- Refactor editor related code +- Refactor code with JavaScript Standard Style +- Refactor templates, partials and rearrange its path +- Refactor front-end code with more modular concepts +- Refactor front-end code using ES6 (also unify configs to `config.json`) ### Removes + - Removed UTF-8 BOM in download function - 0.5.0 `Ristretto` 2017-01-02 02:35 ---- +## 0.5.0 `Ristretto` 2017-01-02 02:35 + ### Enhancements -* Update year to 2017 (Happy New Year!) -* Update to improve editor performance by debounce checkEditorScrollbar event -* Refactor data processing to model definition -* Update to remove null byte on editor changes -* Update to remove null byte before saving to DB -* Update to support Esperanto locale -* Little improvements (typos, uppercase + accents, better case) for French locale -* Update features.md publish button name and icon + +- Update year to 2017 (Happy New Year!) +- Update to improve editor performance by debounce checkEditorScrollbar event +- Refactor data processing to model definition +- Update to remove null byte on editor changes +- Update to remove null byte before saving to DB +- Update to support Esperanto locale +- Little improvements (typos, uppercase + accents, better case) for French locale +- Update features.md publish button name and icon ### Fixes -* Fix authorship might losing update event because of throttling -* Fix migration script of revision lacks of definition of primary key -* Fix to not use diff_cleanupSemantic -* Fix URL concatenation when uploading images to local filesystem -* Fix js-url not import correctly -* Fixed typo: anonmyous -* Fix codemirror spell checker not considering abbreviation which contain apostrophe in word -* Fix possible user is undefined in realtime events -* Fix wrong package name reference in webpack config for bootstrap-validator -* Fix email option in config not parse correctly -* Fix mathjax not able to render issue + +- Fix authorship might losing update event because of throttling +- Fix migration script of revision lacks of definition of primary key +- Fix to not use diff_cleanupSemantic +- Fix URL concatenation when uploading images to local filesystem +- Fix js-url not import correctly +- Fixed typo: anonmyous +- Fix codemirror spell checker not considering abbreviation which contain apostrophe in word +- Fix possible user is undefined in realtime events +- Fix wrong package name reference in webpack config for bootstrap-validator +- Fix email option in config not parse correctly +- Fix mathjax not able to render issue ### Removes + - Remove LZString compression for data storage - Remove LZString compression for some socket.io event data - 0.4.6 `Melya` 2016-12-19 17:20 ---- +## 0.4.6 `Melya` 2016-12-19 17:20 + ### Features -+ Add support of allow free url config option -+ Add support of allow anonymous config option -+ Add preferences to editor status bar and add allow override browser keymap option -+ Add support of s3 and local filesystem for image uploading -+ Add of support optional email register and signin -+ Use uWebSocket to improve websocket performance -+ Use CDNJS by default with https and SRI support -+ Use Webpack to bundle frontend code + +- Add support of allow free url config option +- Add support of allow anonymous config option +- Add preferences to editor status bar and add allow override browser keymap option +- Add support of s3 and local filesystem for image uploading +- Add of support optional email register and signin +- Use uWebSocket to improve websocket performance +- Use CDNJS by default with https and SRI support +- Use Webpack to bundle frontend code ### Enhancements -* Update to make TOC syntax be case-insensitive -* Update to handle request with invalid uri -* Update to auto generate meta description based on content in publish note and slide -* Update to support haskell, go, typescript and jsx syntax highlighting in code block -* Update to use workers to leverage intensive work loading -* Update to support summary tag -* Change use cdn config option default to be true -* Update to retry when anytime the socket io disconnect -* Change to raise socket io timeout, heartbeat interval and timeout to lower offline period -* Update emoji parser using markdown-it-emoji instead of emojify -* Optimize finishView selector performance by avoid universal selector -* Config heroku deployment -* Update to support Hindi, Swedish locale -* Update to support wrap syntax for code block -* Update to support pagination for history list + +- Update to make TOC syntax be case-insensitive +- Update to handle request with invalid uri +- Update to auto generate meta description based on content in publish note and slide +- Update to support haskell, go, typescript and jsx syntax highlighting in code block +- Update to use workers to leverage intensive work loading +- Update to support summary tag +- Change use cdn config option default to be true +- Update to retry when anytime the socket io disconnect +- Change to raise socket io timeout, heartbeat interval and timeout to lower offline period +- Update emoji parser using markdown-it-emoji instead of emojify +- Optimize finishView selector performance by avoid universal selector +- Config heroku deployment +- Update to support Hindi, Swedish locale +- Update to support wrap syntax for code block +- Update to support pagination for history list ### Fixes -* Fix slide mode on print pdf not finish view rendering -* Fix when server have heavy loading cache might not update to db properly -* Fix redirection to url without trailing slashes not considering about config urlpath -* Fix header id and text might affects by mathjax tags -* Fix possible meta XSS in history list [Security Issue] -* Fix possible XSS in yaml-metadata and turn using ejs escape syntax than external lib [Security Issue] -* Fix to allow data attribute of section tag in slide -* Fix slide might able to add unsafe attribute on section tag which cause XSS [Security Issue] -* Fix slide might trigger script when processing markdown which cause XSS [Security Issue] -* Fix published note won't scroll to hash on load -* Fix mathjax with blockquote might have race condition -* Fix server reconnect might not resend pending operations -* Fix slide export pdf styles not applied issue -* Fix possible unclose HTML and leaked html tags when fail to parse diagrams -* Fix typos in the `slide-example.md` -* Fix socket io doc event should setDoc when revision mismatch and no outstanding operation -* Fix markdown styles conflicting bootstrap on p and ul under alert area -* Fix finishView mermaid might select and replace whole markdown-body issue -* Fix code block which in deeper level will not be parsed issue -* Fix code block highlighting html not escaped when no languages specified -* Fix client socket on delete event might not delete corresponding history record correctly -* Fix to handle name or color is undefined error -* Fix history item event not bind properly on pagination change -* Fix history time should save in UNIX timestamp to avoid time offset issue + +- Fix slide mode on print pdf not finish view rendering +- Fix when server have heavy loading cache might not update to db properly +- Fix redirection to url without trailing slashes not considering about config urlpath +- Fix header id and text might affects by mathjax tags +- Fix possible meta XSS in history list [Security Issue] +- Fix possible XSS in yaml-metadata and turn using ejs escape syntax than external lib [Security Issue] +- Fix to allow data attribute of section tag in slide +- Fix slide might able to add unsafe attribute on section tag which cause XSS [Security Issue] +- Fix slide might trigger script when processing markdown which cause XSS [Security Issue] +- Fix published note won't scroll to hash on load +- Fix mathjax with blockquote might have race condition +- Fix server reconnect might not resend pending operations +- Fix slide export pdf styles not applied issue +- Fix possible unclose HTML and leaked html tags when fail to parse diagrams +- Fix typos in the `slide-example.md` +- Fix socket io doc event should setDoc when revision mismatch and no outstanding operation +- Fix markdown styles conflicting bootstrap on p and ul under alert area +- Fix finishView mermaid might select and replace whole markdown-body issue +- Fix code block which in deeper level will not be parsed issue +- Fix code block highlighting html not escaped when no languages specified +- Fix client socket on delete event might not delete corresponding history record correctly +- Fix to handle name or color is undefined error +- Fix history item event not bind properly on pagination change +- Fix history time should save in UNIX timestamp to avoid time offset issue ### Removes + - Drop bower the package manager - Remove auto linkify image - 0.4.5 `latte` 2016-10-11 01:22 ---- +## 0.4.5 `latte` 2016-10-11 01:22 + ### Features -+ Add more environment variables for server configuration -+ Add setup script for getting started -+ Add support of deleting note -+ Add support of shortcut keys which can add and remove symbol surround text -+ Add support of shortcut keys for changing mode -+ Add support of i18n (English, Chinese, French, German, Japanese, Spanish, Portuguese, Greek, Italian, Turkish, Russian, Dutch, Croatian, Polish, Ukrainian) -+ Add support of note info API -+ Add support of disqus via yaml-metadata + +- Add more environment variables for server configuration +- Add setup script for getting started +- Add support of deleting note +- Add support of shortcut keys which can add and remove symbol surround text +- Add support of shortcut keys for changing mode +- Add support of i18n (English, Chinese, French, German, Japanese, Spanish, Portuguese, Greek, Italian, Turkish, Russian, Dutch, Croatian, Polish, Ukrainian) +- Add support of note info API +- Add support of disqus via yaml-metadata ### Enhancements -* Optimize png images by using zopflipng -* Update CodeMirror to 5.19.0 and rename jade to pug -* Update to add cache to history and improve its performance -* Update default indent to use spaces instead of tabs -* Improve syntax highlighting performance -* Update to make client handle syncing error better, use delay to avoid wrong document revision -* Update to allow CORS as API on revision actions -* Update to support showing owner on the infobar -* Update to prevent duplicate client push in queue to lower down server loading -* Reduce update view debounce time to make preview refresh quicker -* Update help modal cheatsheet font styles to make it more clear on spaces -* Update to add revision saving policy -* Update to support tiddlywiki and mediawiki syntax highlighting in editor -* Update to support save mode to url and vise versa -* Update edit and publish icon and change toggle icon for UX -* Improve authorship markers update performance -* Update slide mode to show extra info and support url actions -* Change the last change user saving strategy -* Update to support data uri in src attribute of image tag -* Improve index layout and UX with UI adjustments -* Update XSS policy to allow iframe and link with custom protocol -* Update markdown styles to follow github latest layout styles -* Update slide mode, now respect all meta settings and update default styles -* Update to make ToC menu always accessible without scrolling -* Update to make doc only update while filesystem content not match db content + +- Optimize png images by using zopflipng +- Update CodeMirror to 5.19.0 and rename jade to pug +- Update to add cache to history and improve its performance +- Update default indent to use spaces instead of tabs +- Improve syntax highlighting performance +- Update to make client handle syncing error better, use delay to avoid wrong document revision +- Update to allow CORS as API on revision actions +- Update to support showing owner on the infobar +- Update to prevent duplicate client push in queue to lower down server loading +- Reduce update view debounce time to make preview refresh quicker +- Update help modal cheatsheet font styles to make it more clear on spaces +- Update to add revision saving policy +- Update to support tiddlywiki and mediawiki syntax highlighting in editor +- Update to support save mode to url and vise versa +- Update edit and publish icon and change toggle icon for UX +- Improve authorship markers update performance +- Update slide mode to show extra info and support url actions +- Change the last change user saving strategy +- Update to support data uri in src attribute of image tag +- Improve index layout and UX with UI adjustments +- Update XSS policy to allow iframe and link with custom protocol +- Update markdown styles to follow github latest layout styles +- Update slide mode, now respect all meta settings and update default styles +- Update to make ToC menu always accessible without scrolling +- Update to make doc only update while filesystem content not match db content ### Fixes -* Fix README and features document format and grammar issues -* Fix some potential memory leaks bugs -* Fix history storage might not fallback correctly -* Fix to make mathjax expression display in editor correctly (not italic) -* Fix note title might have unstriped html tags -* Fix client reconnect should resend last operation -* Fix a bug when setting both maxAge and expires may cause user can't signin -* Fix text complete extra tags for blockquote and referrals -* Fix bug that when window close will make ajax fail and cause cookies set to wrong state -* Fix markdown render might fall into regex infinite loop -* Fix syntax error caused by element contain special characters -* Fix reference error caused by some scripts loading order -* Fix ToC id naming to avoid possible overlap with user ToC -* Fix header nav bar rwd detect element should use div tag or it might glitch the layout -* Fix textcomplete of extra tags for blockquote not match space character in the between -* Fix text-shadow for text antialiased might cause IE or Edge text cutoff + +- Fix README and features document format and grammar issues +- Fix some potential memory leaks bugs +- Fix history storage might not fallback correctly +- Fix to make mathjax expression display in editor correctly (not italic) +- Fix note title might have unstriped html tags +- Fix client reconnect should resend last operation +- Fix a bug when setting both maxAge and expires may cause user can't signin +- Fix text complete extra tags for blockquote and referrals +- Fix bug that when window close will make ajax fail and cause cookies set to wrong state +- Fix markdown render might fall into regex infinite loop +- Fix syntax error caused by element contain special characters +- Fix reference error caused by some scripts loading order +- Fix ToC id naming to avoid possible overlap with user ToC +- Fix header nav bar rwd detect element should use div tag or it might glitch the layout +- Fix textcomplete of extra tags for blockquote not match space character in the between +- Fix text-shadow for text antialiased might cause IE or Edge text cutoff ### Removes + - Cancel updating history on page unload - 0.4.4 `mocha` 2016-08-02 17:10 ---- +## 0.4.4 `mocha` 2016-08-02 17:10 + ### Features -* Add support of showing authorship in editor -* Add support of saving authorship -* Add support of saving authors -* Add support of slide preview in both mode -* Add support of all extra syntax in slide mode + +- Add support of showing authorship in editor +- Add support of saving authorship +- Add support of saving authors +- Add support of slide preview in both mode +- Add support of all extra syntax in slide mode ### Enhancements -* Update realtime check and refresh event, compress data to minimize network transfer delay -* Update to keep showing second level TOC if there is only one first level TOC -* Update to add expand and collapse toggle for TOC -* Update to make help modal and text complete hint using consistent reminder text -* Update to support slideOptions in the yaml metadata for customize slides -* Update to support redirect back to previous url after signin -* Update to avoid duplicated rendering slides and reduce DOM wrap -* Update CodeMirror to version 5.17.1 -* Update to make random color more discrete -* Update user icon styles to make avatar more obvious -* Update Bootstrap to 3.3.7 and jQuery to 3.1.0 with related patches -* Update spell checker to ignore non-english or numeric alphabets -* Update to auto rolling session for auto extending cookies expiration -* Update some menu items and UIs -* Update to reduce realtime timeout and heartbeat interval to handle stale clients quicker -* Update to force note, publish note, publish slide redirect to their expected url -* Update to change server pre-rendering engine to markdown-it + +- Update realtime check and refresh event, compress data to minimize network transfer delay +- Update to keep showing second level TOC if there is only one first level TOC +- Update to add expand and collapse toggle for TOC +- Update to make help modal and text complete hint using consistent reminder text +- Update to support slideOptions in the yaml metadata for customize slides +- Update to support redirect back to previous url after signin +- Update to avoid duplicated rendering slides and reduce DOM wrap +- Update CodeMirror to version 5.17.1 +- Update to make random color more discrete +- Update user icon styles to make avatar more obvious +- Update Bootstrap to 3.3.7 and jQuery to 3.1.0 with related patches +- Update spell checker to ignore non-english or numeric alphabets +- Update to auto rolling session for auto extending cookies expiration +- Update some menu items and UIs +- Update to reduce realtime timeout and heartbeat interval to handle stale clients quicker +- Update to force note, publish note, publish slide redirect to their expected url +- Update to change server pre-rendering engine to markdown-it ### Fixes -* Workaround vim mode might overwrite copy keyMap on Windows -* Fix TOC might not update after changeMode -* Workaround slide mode gets glitch and blurry text on Firefox 47+ -* Fix idle.js not change isAway property on onAway and onAwayBack events -* Fix http body request entity too large issue -* Fix google-diff-match-patch encodeURI exception issue -* Fix yaml metadata title should pass to generateWebTitle -* Fix spellcheck settings from cookies might not a boolean in string type -* Fix cookies might not in boolean type cause page refresh loop -* Fix the signin and logout redirect url might be empty -* Fix realtime might not clear or remove invalid sockets in queue -* Fix slide not refresh layout on ajax item loaded -* Fix retryOnDisconnect not clean up after reconnected -* Fix some potential memory leaks - 0.4.3 `espresso` 2016-06-28 02:04 ---- +- Workaround vim mode might overwrite copy keyMap on Windows +- Fix TOC might not update after changeMode +- Workaround slide mode gets glitch and blurry text on Firefox 47+ +- Fix idle.js not change isAway property on onAway and onAwayBack events +- Fix http body request entity too large issue +- Fix google-diff-match-patch encodeURI exception issue +- Fix yaml metadata title should pass to generateWebTitle +- Fix spellcheck settings from cookies might not a boolean in string type +- Fix cookies might not in boolean type cause page refresh loop +- Fix the signin and logout redirect url might be empty +- Fix realtime might not clear or remove invalid sockets in queue +- Fix slide not refresh layout on ajax item loaded +- Fix retryOnDisconnect not clean up after reconnected +- Fix some potential memory leaks + +## 0.4.3 `espresso` 2016-06-28 02:04 + ### Features -* Add support of spellcheck -* Add support of light editor theme -* Add support of embed pdf -* Add support of exporting raw html -* Add revision modal with UIs and support marking patch diff texts -* Add support of saving note revision + +- Add support of spellcheck +- Add support of light editor theme +- Add support of embed pdf +- Add support of exporting raw html +- Add revision modal with UIs and support marking patch diff texts +- Add support of saving note revision ### Enhancements -* Update to extend login info cookies to 365 days to reduce reductant page refresh -* Update to support new metadata: title, description, tags and google-analytics -* Prevent crawling editing note to enhance privacy -* Update to remove all data lines attributes to gain better update performance -* Update refresh modal to show more detail informations -* Update to make cursor tag default as hover mode to prevent tag overlay other lines -* Update highlight.js to version 9.4.0 and use bower dependency -* Improve history performance + +- Update to extend login info cookies to 365 days to reduce reductant page refresh +- Update to support new metadata: title, description, tags and google-analytics +- Prevent crawling editing note to enhance privacy +- Update to remove all data lines attributes to gain better update performance +- Update refresh modal to show more detail informations +- Update to make cursor tag default as hover mode to prevent tag overlay other lines +- Update highlight.js to version 9.4.0 and use bower dependency +- Improve history performance ### Fixes -* Fix history filter tags and search keyword might not apply after refresh -* Fix part class in list item might infect buildMap process -* Fix pdf tmp path is missing a folder slash before timestamp -* Fix realtime connection get stock when lots of client try to connect at same moment -* Fix locked or private permission should block any operation if owner is null -* Add back missing support of image size syntax in 0.4.2 -* Fix update permission might cause duplicate view rendering -* Fix on paste long document to editor might cause scroll not syncing -* Workaround CodeMirror won't draw selections outside of the viewport -* Fix to make socket keep retry after disconnect on server maintenance + +- Fix history filter tags and search keyword might not apply after refresh +- Fix part class in list item might infect buildMap process +- Fix pdf tmp path is missing a folder slash before timestamp +- Fix realtime connection get stock when lots of client try to connect at same moment +- Fix locked or private permission should block any operation if owner is null +- Add back missing support of image size syntax in 0.4.2 +- Fix update permission might cause duplicate view rendering +- Fix on paste long document to editor might cause scroll not syncing +- Workaround CodeMirror won't draw selections outside of the viewport +- Fix to make socket keep retry after disconnect on server maintenance ### Removes + - Remove metadata spellcheck support - Remove robot meta on note edit page and html template +## 0.4.2 `cappuccino` 2016-04-22 10:43 - 0.4.2 `cappuccino` 2016-04-22 10:43 ---- ### Features -+ Support sync scrolling to edit area -+ Support import and export with GitLab snippet -+ Support GitLab signin -+ Add cheatsheet and help modal + +- Support sync scrolling to edit area +- Support import and export with GitLab snippet +- Support GitLab signin +- Add cheatsheet and help modal ### Enhancements -* Upgrade CodeMirror to version 5.15.3 -* Support maintenance mode and gracefully exit process on signal -* Update to update doc in db when doc in filesystem have newer modified time -* Update to replace animation acceleration library from gsap to velocity -* Support image syntax with size -* Update textcomplete rules to support more conditions -* Update to use bigger user profile image -* Support showing signin button only when needed + +- Upgrade CodeMirror to version 5.15.3 +- Support maintenance mode and gracefully exit process on signal +- Update to update doc in db when doc in filesystem have newer modified time +- Update to replace animation acceleration library from gsap to velocity +- Support image syntax with size +- Update textcomplete rules to support more conditions +- Update to use bigger user profile image +- Support showing signin button only when needed ### Fixes -* Fix other clients' cursor might disappear or move out of bound -* Fix to handle user profile image not exists -* Fix potential toolbar layout glitch -* Fix imgur uploads should always use https to avoid mix-content warning -* Fix to change fullscreen key to avoid OS key conflicts -* Fix and change ESC key in Vim mode - 0.4.1 2016-04-22 10:43 ---- +- Fix other clients' cursor might disappear or move out of bound +- Fix to handle user profile image not exists +- Fix potential toolbar layout glitch +- Fix imgur uploads should always use https to avoid mix-content warning +- Fix to change fullscreen key to avoid OS key conflicts +- Fix and change ESC key in Vim mode + +## 0.4.1 2016-04-22 10:43 + ### Enhancements -* Support when client domain not provided will use window.location variable -* Support when domain not provided will use relative path -* Support DOMAIN and URL_PATH environment variables +- Support when client domain not provided will use window.location variable +- Support when domain not provided will use relative path +- Support DOMAIN and URL_PATH environment variables + +## 0.4.0 `first-year` 2016-04-20 14:30 - 0.4.0 `first-year` 2016-04-20 14:30 ---- ### Features -+ Support docs -+ Support Ionicons and Octicons -+ Support mermaid diagram -+ Support import and export with Gist -+ Support import and export with Google Drive -+ Support more options in YAML metadata -+ Support change keymap and indentation size/type + +- Support docs +- Support Ionicons and Octicons +- Support mermaid diagram +- Support import and export with Gist +- Support import and export with Google Drive +- Support more options in YAML metadata +- Support change keymap and indentation size/type ### Enhancements -* Change header anchor styles -* Refactor server code and configs -* Support experimental spell checking -* Upgrade CodeMirror to 5.13.5 -* Update to emit info and disconnect clients if updater get errors -* Support to indicate if the note status is created or updated -* Support more DB types -* Server now use ORM for DBs -* Support static file cache -* Support more ssl settings -* Improve server stablilty -* Improve server performance -* Support Ionicons -* Support container syntax and styles -* Improve input performance -* Change markdown engine from remarkable to markdown-it -* Server now support set sub url path -* Support textcomplete in multiple editing -* Update to filter XSS on rendering -* Update to make sync scroll lerp on last line -* Update to make continue list in todo list default as unchecked -* Support auto indent whole line in list or blockquote + +- Change header anchor styles +- Refactor server code and configs +- Support experimental spell checking +- Upgrade CodeMirror to 5.13.5 +- Update to emit info and disconnect clients if updater get errors +- Support to indicate if the note status is created or updated +- Support more DB types +- Server now use ORM for DBs +- Support static file cache +- Support more ssl settings +- Improve server stablilty +- Improve server performance +- Support Ionicons +- Support container syntax and styles +- Improve input performance +- Change markdown engine from remarkable to markdown-it +- Server now support set sub url path +- Support textcomplete in multiple editing +- Update to filter XSS on rendering +- Update to make sync scroll lerp on last line +- Update to make continue list in todo list default as unchecked +- Support auto indent whole line in list or blockquote ### Fixes -* Fix status bar might be inserted before loaded -* Fix mobile layout and focus issues -* Fix editor layout and styles might not handle correctly -* Fix all diagram rendering method and styles to avoid partial update gets wrong -* Fix to ignore process image which already wrapped by link node -* Fix when cut or patse scroll map might get wrong -* Fix to handle more socket error and info status -* Fix textcomplete not matching properly -* Fix and refactor cursor tag and cursor menu -* Fix Japanese, Chinese font styles -* Fix minor bugs of UI and seletor syntaxes - 0.3.4 `techstars` 2016-01-19 00:22 ---- +- Fix status bar might be inserted before loaded +- Fix mobile layout and focus issues +- Fix editor layout and styles might not handle correctly +- Fix all diagram rendering method and styles to avoid partial update gets wrong +- Fix to ignore process image which already wrapped by link node +- Fix when cut or patse scroll map might get wrong +- Fix to handle more socket error and info status +- Fix textcomplete not matching properly +- Fix and refactor cursor tag and cursor menu +- Fix Japanese, Chinese font styles +- Fix minor bugs of UI and seletor syntaxes + +## 0.3.4 `techstars` 2016-01-19 00:22 + ### Features -+ Beta Support slide mode -+ Beta Support export to PDF -+ Support TOC syntax -+ Support embed slideshare and speakerdeck -+ Support Graphviz charts -+ Support YAML metadata -+ Support private permission + +- Beta Support slide mode +- Beta Support export to PDF +- Support TOC syntax +- Support embed slideshare and speakerdeck +- Support Graphviz charts +- Support YAML metadata +- Support private permission ### Enhancements -* Support pin note in history -* Support IE9 and above -* Support specify and continue line number in code block -* Changed all embed layout to 100% width -* Added auto detect default mode -* Support show last change note user -* Upgrade CodeMirror to 5.10.1 with some manual patches -* Improved server performance -* Support autocomplete for code block languages of charts + +- Support pin note in history +- Support IE9 and above +- Support specify and continue line number in code block +- Changed all embed layout to 100% width +- Added auto detect default mode +- Support show last change note user +- Upgrade CodeMirror to 5.10.1 with some manual patches +- Improved server performance +- Support autocomplete for code block languages of charts ### Fixes -* Fixed some server connection issues -* Fixed several issues cause scrollMap incorrect -* Fixed cursor animation should not apply on scroll -* Fixed a possible bug in partial update -* Fixed internal href should not link out -* Fixed dropbox saver url not correct -* Fixed mathjax might not parse properly -* Fixed sequence diagram might render multiple times - 0.3.3 `moon-festival` 2015-09-27 14:00 ---- +- Fixed some server connection issues +- Fixed several issues cause scrollMap incorrect +- Fixed cursor animation should not apply on scroll +- Fixed a possible bug in partial update +- Fixed internal href should not link out +- Fixed dropbox saver url not correct +- Fixed mathjax might not parse properly +- Fixed sequence diagram might render multiple times + +## 0.3.3 `moon-festival` 2015-09-27 14:00 + ### Features -+ Added status bar below editor -+ Added resizable grid in both mode -+ Added title reminder if have unread changes -+ Support todo list change in the view mode -+ Support export to HTML -+ Changed to a new theme, One Dark(modified version) + +- Added status bar below editor +- Added resizable grid in both mode +- Added title reminder if have unread changes +- Support todo list change in the view mode +- Support export to HTML +- Changed to a new theme, One Dark(modified version) ### Enhancements -* Support extra tags in todo list -* Changed overall font styles -* Optimized build sync scroll map, gain lots better performance -* Support and improved print styles -* Support to use CDN -* Image and link will href to new tab ors window -* Support auto scroll to corresponding position when change mode from view to edit -* Minor UI/UX tweaks + +- Support extra tags in todo list +- Changed overall font styles +- Optimized build sync scroll map, gain lots better performance +- Support and improved print styles +- Support to use CDN +- Image and link will href to new tab ors window +- Support auto scroll to corresponding position when change mode from view to edit +- Minor UI/UX tweaks ### Fixes -* Change DB schema to support long title -* Change editable permission icon to avoid misunderstanding -* Fixed some issues in OT and reconnection -* Fixed cursor menu and cursor tag are not calculate doc height properly -* Fixed scroll top might not animate -* Fixed scroll top not save and restore properly -* Fixed history might not delete or clear properly -* Fixed server might not clean client properly - 0.3.2 `typhoon` 2015-07-11 12:30 ---- +- Change DB schema to support long title +- Change editable permission icon to avoid misunderstanding +- Fixed some issues in OT and reconnection +- Fixed cursor menu and cursor tag are not calculate doc height properly +- Fixed scroll top might not animate +- Fixed scroll top not save and restore properly +- Fixed history might not delete or clear properly +- Fixed server might not clean client properly + +## 0.3.2 `typhoon` 2015-07-11 12:30 + ### Features -+ Support operational transformation -+ Support show other user selections -+ Support show user profile image if available + +- Support operational transformation +- Support show other user selections +- Support show user profile image if available ### Enhancements -* Updated editor to 5.4.0 -* Change UI share to publish to avoid misleading -* Added random color in blockquote tag -* Optimized image renderer, avoid duplicated rendering -* Optimized building syncscroll map, make it faster -* Optimized SEO on publish and edit note - 0.3.1 `clearsky` 2015-06-30 16:00 ---- +- Updated editor to 5.4.0 +- Change UI share to publish to avoid misleading +- Added random color in blockquote tag +- Optimized image renderer, avoid duplicated rendering +- Optimized building syncscroll map, make it faster +- Optimized SEO on publish and edit note + +## 0.3.1 `clearsky` 2015-06-30 16:00 + ### Features -+ Added auto table of content -+ Added basic permission control -+ Added view count in share note + +- Added auto table of content +- Added basic permission control +- Added view count in share note ### Enhancements -* Toolbar now will hide in single view -* History time now will auto update -* Smooth scroll on anchor changed -* Updated video style + +- Toolbar now will hide in single view +- History time now will auto update +- Smooth scroll on anchor changed +- Updated video style ### Fixes -* Note might not clear when all users disconnect -* Blockquote tag not parsed properly -* History style not correct - 0.3.0 `sunrise` 2015-06-15 24:00 ---- -### Enhancements -* Used short url in share notes -* Added upload image button on toolbar -* Share notes are now SEO and mobile friendly -* Updated code block style -* Newline now will cause line breaks -* Image now will link out -* Used otk to avoid race condition -* Used hash to avoid data inconsistency -* Optimized server realtime script +- Note might not clear when all users disconnect +- Blockquote tag not parsed properly +- History style not correct -### Fixes -* Composition input might lost or duplicated when other input involved -* Note title might not save properly -* Todo list not render properly - - 0.2.9 `wildfire` 2015-05-30 14:00 ---- -### Features -+ Support text auto complete -+ Support cursor tag and random last name -+ Support online user list -+ Support show user info in blockquote +## 0.3.0 `sunrise` 2015-06-15 24:00 ### Enhancements -* Added more code highlighting support -* Added more continue list support -* Adjust menu and history filter UI for better UX -* Adjust sync scoll animte to gain performance -* Change compression method of dynamic data -* Optimized render script + +- Used short url in share notes +- Added upload image button on toolbar +- Share notes are now SEO and mobile friendly +- Updated code block style +- Newline now will cause line breaks +- Image now will link out +- Used otk to avoid race condition +- Used hash to avoid data inconsistency +- Optimized server realtime script ### Fixes -* Access history fallback might get wrong -* Sync scroll not accurate -* Sync scroll reach bottom range too much -* Detect login state change not accurate -* Detect editor focus not accurate -* Server not handle some editor events - 0.2.8 `flame` 2015-05-15 12:00 ---- +- Composition input might lost or duplicated when other input involved +- Note title might not save properly +- Todo list not render properly + +## 0.2.9 `wildfire` 2015-05-30 14:00 + ### Features -+ Support drag-n-drop(exclude firefox) and paste image inline -+ Support tags filter in history -+ Support sublime-like shortcut keys + +- Support text auto complete +- Support cursor tag and random last name +- Support online user list +- Support show user info in blockquote ### Enhancements -* Adjust index description -* Adjust toolbar ui and view font -* Remove scroll sync delay and gain accuracy + +- Added more code highlighting support +- Added more continue list support +- Adjust menu and history filter UI for better UX +- Adjust sync scoll animte to gain performance +- Change compression method of dynamic data +- Optimized render script ### Fixes -* Partial update in the front and the end might not render properly -* Server not handle some editor events - 0.2.7 `fuel` 2015-05-03 12:00 ---- +- Access history fallback might get wrong +- Sync scroll not accurate +- Sync scroll reach bottom range too much +- Detect login state change not accurate +- Detect editor focus not accurate +- Server not handle some editor events + +## 0.2.8 `flame` 2015-05-15 12:00 + ### Features -+ Support facebook, twitter, github, dropbox login -+ Support own history + +- Support drag-n-drop(exclude firefox) and paste image inline +- Support tags filter in history +- Support sublime-like shortcut keys ### Enhancements -* Adjust history ui -* Upgrade realtime package -* Upgrade editor package, now support composition input better + +- Adjust index description +- Adjust toolbar ui and view font +- Remove scroll sync delay and gain accuracy ### Fixes -* Partial update might not render properly -* Cursor focus might not at correct position - 0.2.6 `zippo` 2015-04-24 16:00 ---- +- Partial update in the front and the end might not render properly +- Server not handle some editor events + +## 0.2.7 `fuel` 2015-05-03 12:00 + ### Features -+ Support sync scroll -+ Support partial update + +- Support facebook, twitter, github, dropbox login +- Support own history ### Enhancements -* Added feedback ui -* Adjust animations and delays -* Adjust editor viewportMargin for performance -* Adjust emit refresh event occasion -* Added editor fallback fonts -* Index page auto focus at history if valid + +- Adjust history ui +- Upgrade realtime package +- Upgrade editor package, now support composition input better ### Fixes -* Server might not disconnect client properly -* Resume connection might restore wrong info - 0.2.5 `lightning` 2015-04-14 21:10 ---- +- Partial update might not render properly +- Cursor focus might not at correct position + +## 0.2.6 `zippo` 2015-04-24 16:00 + ### Features -+ Support import from dropbox and clipboard -+ Support more code highlighting -+ Support mathjax, sequence diagram and flow chart + +- Support sync scroll +- Support partial update ### Enhancements -* Adjust toolbar and layout style -* Adjust mobile layout style -* Adjust history layout style -* Server using heartbeat to gain accuracy of online users + +- Added feedback ui +- Adjust animations and delays +- Adjust editor viewportMargin for performance +- Adjust emit refresh event occasion +- Added editor fallback fonts +- Index page auto focus at history if valid ### Fixes -* Virtual keyboard might broken the navbar -* Adjust editor viewportMargin for preloading content - 0.2.4 `flint` 2015-04-10 12:40 ---- +- Server might not disconnect client properly +- Resume connection might restore wrong info + +## 0.2.5 `lightning` 2015-04-14 21:10 + ### Features -+ Support save to dropbox -+ Show other users' cursor with light color + +- Support import from dropbox and clipboard +- Support more code highlighting +- Support mathjax, sequence diagram and flow chart ### Enhancements -* Adjust toolbar layout style for future -### Fixes -* Title might not render properly -* Code border style might not show properly -* Server might not connect concurrent client properly - 0.2.3 `light` 2015-04-06 20:30 ---- +- Adjust toolbar and layout style +- Adjust mobile layout style +- Adjust history layout style +- Server using heartbeat to gain accuracy of online users + +### Fixes + +- Virtual keyboard might broken the navbar +- Adjust editor viewportMargin for preloading content + +## 0.2.4 `flint` 2015-04-10 12:40 + ### Features -+ Support youtube, vimeo -+ Support gist -+ Added quick link in pretty -+ Added font-smoothing style + +- Support save to dropbox +- Show other users' cursor with light color ### Enhancements -* Change the rendering engine to remarkable -* Adjust view, todo list layout style for UX -+ Added responsive layout check -+ Auto reload if client version mismatch -+ Keep history stack after reconnect if nothing changed -+ Added features page + +- Adjust toolbar layout style for future ### Fixes -* Closetags auto input might not have proper origin -* Autofocus on editor only if it's on desktop -* Prevent using real script and iframe tags -* Sorting in history by time not percise - 0.2.2 `fire` 2015-03-27 21:10 ---- +- Title might not render properly +- Code border style might not show properly +- Server might not connect concurrent client properly + +## 0.2.3 `light` 2015-04-06 20:30 + ### Features -+ Support smartLists, smartypants -+ Support line number on code block -+ Support tags and search or sort history + +- Support youtube, vimeo +- Support gist +- Added quick link in pretty +- Added font-smoothing style ### Enhancements -+ Added delay on socket change -+ Updated markdown-body width to match github style -+ Socket changes now won't add to editor's history -+ Reduce redundant server events + +- Change the rendering engine to remarkable +- Adjust view, todo list layout style for UX +- Added responsive layout check +- Auto reload if client version mismatch +- Keep history stack after reconnect if nothing changed +- Added features page ### Fixes -* Toolbar links might get wrong -* Wrong action redirections - 0.2.1 `spark` 2015-03-17 13:40 ---- +- Closetags auto input might not have proper origin +- Autofocus on editor only if it's on desktop +- Prevent using real script and iframe tags +- Sorting in history by time not percise + +## 0.2.2 `fire` 2015-03-27 21:10 ### Features -+ Support github-like todo-list -+ Support emoji - ### Enhancements -+ Added more effects on transition -+ Reduced rendering delay -+ Auto close and match brackets -+ Auto close and match tags -+ Added code fold and fold gutters -+ Added continue listing of markdown +- Support smartLists, smartypants +- Support line number on code block +- Support tags and search or sort history + +### Enhancements + +- Added delay on socket change +- Updated markdown-body width to match github style +- Socket changes now won't add to editor's history +- Reduce redundant server events + +### Fixes + +- Toolbar links might get wrong +- Wrong action redirections + +## 0.2.1 `spark` 2015-03-17 13:40 - 0.2.0 `launch-day` 2015-03-14 20:20 ---- ### Features -+ Markdown editor -+ Preview html -+ Realtime collaborate -+ Cross-platformed -+ Recently used history +- Support github-like todo-list +- Support emoji + +### Enhancements + +- Added more effects on transition +- Reduced rendering delay +- Auto close and match brackets +- Auto close and match tags +- Added code fold and fold gutters +- Added continue listing of markdown + +## 0.2.0 `launch-day` 2015-03-14 20:20 + +### Features + +- Markdown editor +- Preview html +- Realtime collaborate +- Cross-platformed +- Recently used history diff --git a/public/docs/slide-example.md b/public/docs/slide-example.md index 495036699..38be0ef91 100644 --- a/public/docs/slide-example.md +++ b/public/docs/slide-example.md @@ -9,7 +9,7 @@ slideOptions: This feature still in beta, may have some issues. For details please visit: -https://github.com/hakimel/reveal.js/ + You can use `URL query` or `slideOptions` of the YAML metadata to customize your slides. @@ -29,7 +29,7 @@ Is the divider of slides Is the divider of branches -Use the _Space_ key to navigate through all slides. +Use the *Space* key to navigate through all slides. ---- @@ -254,7 +254,7 @@ You can link between slides internally, [like this](#/1/3). There's a [speaker view](https://github.com/hakimel/reveal.js#speaker-notes). It includes a timer, preview of the upcoming slide as well as your speaker notes. -Press the _S_ key to try it out. +Press the *S* key to try it out. Note: Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit `s` on your keyboard). diff --git a/public/docs/yaml-metadata.md b/public/docs/yaml-metadata.md index f09591bcb..083a0943c 100644 --- a/public/docs/yaml-metadata.md +++ b/public/docs/yaml-metadata.md @@ -5,11 +5,10 @@ dir: ltr breaks: true --- -Supported YAML metadata -=== +# Supported YAML metadata First you need to insert syntax like this at the **start** of the note: -``` +```yaml --- YAML metas --- @@ -18,8 +17,8 @@ YAML metas Replace the "YAML metas" in this section with any YAML options as below. You can also refer to this note's source code. -title ---- +## title + This option will set the note title which prior than content title. > default: not set @@ -29,8 +28,8 @@ This option will set the note title which prior than content title. title: meta title ``` -description ---- +## description + This option will set the note description as a `` tag. This only affects the [Publish](../features#Share-Notes) function. > default: not set @@ -40,8 +39,8 @@ This option will set the note description as a `` tag. description: meta description ``` -tags ---- +## tags + This option will set the tags which prior than content tags. > default: not set @@ -51,8 +50,8 @@ This option will set the tags which prior than content tags. tags: features, cool, updated ``` -robots ---- +## robots + This option will give below meta in the note head meta: ```xml @@ -66,12 +65,12 @@ So you can prevent any search engine index your note by set `noindex, nofollow`. robots: noindex, nofollow ``` -lang ---- +## lang + This option will set the language of the note. Setting the language helps the browser to apply rules such as typography correctly. You can find your the language code in ISO 639-1 standard: -https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + > default: not set (which will be en) @@ -80,12 +79,12 @@ https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes langs: ja-jp ``` -dir ---- +## dir + This option specifies the direction of the text in this note. You can only use whether `rtl` or `ltr`. Look more at here: -http://www.w3.org/International/questions/qa-html-dir + > default: not set (which will be ltr) @@ -94,8 +93,8 @@ http://www.w3.org/International/questions/qa-html-dir dir: rtl ``` -breaks ---- +## breaks + This option means the hardbreaks in the note will be parsed or be ignore. The original markdown syntax breaks only if you put space twice, but CodiMD choose to breaks every time you enter a break. You can only use whether `true` or `false`. @@ -107,8 +106,8 @@ You can only use whether `true` or `false`. breaks: false ``` -GA ---- +## GA + This option allows you to enable Google Analytics with your ID. > default: not set (which won't enable) @@ -118,8 +117,8 @@ This option allows you to enable Google Analytics with your ID. GA: UA-12345667-8 ``` -disqus ---- +## disqus + This option allows you to enable Disqus with your shortname. > default: not set (which won't enable) @@ -129,8 +128,8 @@ This option allows you to enable Disqus with your shortname. disqus: codimd ``` -type ---- +## type + This option allows you to switch the document view to the slide preview, to simplify live editing of presentations. > default: not set @@ -140,14 +139,14 @@ This option allows you to switch the document view to the slide preview, to simp type: slide ``` -slideOptions ---- +## slideOptions + This option allows you to provide custom options to slide mode. Please below document for more details: -https://github.com/hakimel/reveal.js/#configuration + You could also set slide theme which named in below css files: -https://github.com/hakimel/reveal.js/tree/master/css/theme + **Notice: always use two spaces as indention in YAML metadata!** @@ -160,8 +159,8 @@ slideOptions: theme: white ``` -opengraph ---- +## opengraph + This option allows you to override the default generated opengraph metadata. See the [OpenGraph protocol documentation](https://ogp.me) for more information.