| @@ -15,5 +15,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -12,5 +12,4 @@ | |||
| {{ define "footer" }} | |||
| {{ partial "pagination.html" . }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -40,7 +40,6 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ $script := resources.Get "/js/search.js" | resources.ExecuteAsTemplate "search.js" . }} | |||
| <script integrity="{{ printf "%s" ($script | resources.Fingerprint "sha512").Data.Integrity | safeHTML }}"> | |||
| {{- $script.Content | safeJS -}} | |||
| @@ -12,5 +12,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -12,5 +12,4 @@ | |||
| {{ define "footer" }} | |||
| {{ partial "pagination.html" . }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -13,5 +13,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -139,5 +139,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -33,5 +33,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -33,5 +33,4 @@ | |||
| {{ end }} | |||
| {{ define "footer" }} | |||
| {{ partial "powered-by.html" . }} | |||
| {{ partial "cookie-disclaimer.html" . }} | |||
| {{ end }} | |||
| @@ -0,0 +1 @@ | |||
| {{ -}}.hack header figure[itemtype*=ImageObject]{position:relative}.hack header figure[itemtype*=ImageObject] figcaption{position:absolute;bottom:0;right:0;text-align:right;padding:15px;font-style:oblique;font-size:smaller;mix-blend-mode:soft-light}.hack header figure[itemtype*=ImageObject] [itemprop=headline]{font-weight:700} | |||
| @@ -0,0 +1 @@ | |||
| {"Target":"css/conditional/layouts/post/single.min.css","MediaType":"text/css","Data":{}} | |||
| @@ -1 +1,16 @@ | |||
| :root{scroll-behavior:smooth;--screen-size-small: 30em}@keyframes intro{0%{opacity:0}100%{opacity:1}}.blur-up{-webkit-filter:blur(5px);filter:blur(5px);transition:filter 400ms,-webkit-filter 400ms}.blur-up.lazyloaded{-webkit-filter:blur(0);filter:blur(0)}.hack .readmore{margin-bottom:2.2em}.responsive-iframe{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.responsive-iframe iframe{position:absolute;top:0;left:0;width:100%;height:100%}iframe{border:0}main,footer{animation:intro .3s both;animation-delay:.15s}header:first-of-type+details{margin-top:1rem}footer time[datetime$=M]:before{content:"\2013\0020"}body>footer p.muted{margin-bottom:0}@media only screen and (max-width:768px){footer time[datetime$=M]{display:none}}blockquote cite{display:block}blockquote cite::before{content:"\2014\00A0"}:target{filter:brightness(1.2)}:disabled{cursor:not-allowed}#search-app [v-cloak]{display:none}.hack li ul{margin:0}.hack ol li{padding-left:27px}.main{padding:20px 10px}input.form-control{border-radius:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none}input.form-control,textarea.form-control,select.form-control,.help-block{font-size:initial}@media only screen and (max-width:768px){.help-block{font-size:unset}}html{font-size:13px}.hack .form input,.hack .form textarea,.hack .form button,.hack .form label{font-size:1rem}.hack .alert .highlight:first-of-type .chroma,.hack .card .highlight:first-of-type .chroma{margin-top:unset}.hack .alert .highlight:last-of-type .chroma,.hack .card .highlight:last-of-type .chroma{margin-bottom:unset}.hack blockquote,.hack blockquote:after{line-height:1.5}.hack figure{margin:unset}.hack figure a{border-bottom:none}.hack figure a:hover{background-color:inherit}article [itemprop=description]{margin-bottom:20px;margin-top:20px}article header img{width:100%;border-radius:3px}table td,table th{line-height:inherit}table a{border-bottom:unset}img{max-width:100%}@media only screen and (min-width:768px){html{font-size:16px;margin-left:calc(100vw - 100%)}.container{max-width:50rem}} | |||
| /*!* Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>.*/:root{scroll-behavior:smooth;--screen-size-small: 30em}@keyframes intro{0%{opacity:0}100%{opacity:1}}.blur-up.lazyloading{filter:blur(5px);opacity:1;transition:opacity 1s,filter 1.5s}.blur-up.lazyload{opacity:0;filter:blur(10px)}.blur-up.lazyloaded{filter:blur(0);transition:filter 1s}.hack .readmore{margin-bottom:2.2em}.responsive-iframe,.ratio-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.responsive-iframe iframe,.ratio-container>*:not([itemprop=caption]){position:absolute;top:0;left:0;width:100%;height:100%}iframe{border:0}main,footer{animation:intro .3s both;animation-delay:.15s}header:first-of-type+details{margin:20px 0}footer time[datetime$=M]:before{content:"\2013\0020"}body>footer p.muted{margin-bottom:0}@media only screen and (max-width:768px){footer time[datetime$=M]{display:none}}blockquote cite{display:block}blockquote cite::before{content:"\2014\00A0"}:target{filter:brightness(1.2)}:disabled{cursor:not-allowed}.hack li ul{margin:0}.hack ol li{padding-left:27px}.main{padding:20px 10px}input.form-control{border-radius:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none}input.form-control,textarea.form-control,select.form-control,.help-block{font-size:initial}@media only screen and (max-width:768px){.help-block{font-size:unset}}html{font-size:13px}.hack .form input,.hack .form textarea,.hack .form button,.hack .form label{font-size:1rem}.hack .alert .highlight:first-of-type .chroma,.hack .card .highlight:first-of-type .chroma{margin-top:unset}.hack .alert .highlight:last-of-type .chroma,.hack .card .highlight:last-of-type .chroma{margin-bottom:unset}.hack blockquote,.hack blockquote:after{line-height:1.5}.hack figure,.standard figure{margin:unset}.hack figure a{border-bottom:none}.hack figure a:hover{background-color:inherit}article header img{width:100%;border-radius:3px}table td,table th{line-height:inherit}table a{border-bottom:unset}img{max-width:100%}@media only screen and (min-width:768px){html{font-size:16px}.container{max-width:50rem}}@media only screen and (min-width:768px),(-ms-high-contrast:active),(-ms-high-contrast:none){html{margin-left:calc(100vw - 100%)}} | |||
| @@ -1 +1,20 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject(["/js/lazysizes.min.js"]); | |||
| @@ -1 +1 @@ | |||
| {"Target":"baseof.867a3b59e4c87220894a383f9b28f22b7d07624adc182570a388384a951a96faecdebda54bb6cf3484306c2372a4a6e0ec1675b00e00b069e4e86ab834e2a918.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-hno7WeTIciCJSjg/myjyK30HYkrcGCVwo4g4SpUalvrs3r2lS7bPNIQwbCNypKbg7BZ1sA4AsGnk6Gq4NOKpGA=="}} | |||
| {"Target":"baseof.d9796f9f1c1e661687801742a0e2b43e80945a249f2a26dbf9109164d82a2ddbdb9f1d191faec50c6290aa6a6a09eae33096d916fe9fb1781b98938e03d2bea8.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-2XlvnxweZhaHgBdCoOK0PoCUWiSfKibb+RCRZNgqLdvbnx0ZH67FDGKQqmpqCerjMJbZFv6fsXgbmJOOA9K+qA=="}} | |||
| @@ -1 +1,20 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject(["/js/lazysizes.min.js"]); | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject([ | |||
| "/js/vue.min.js", | |||
| "/js/lodash.custom.min.js", | |||
| @@ -12,6 +31,7 @@ fetchInject([ | |||
| ).replace(/\+/g, ' '); | |||
| const queryParam = 's'; | |||
| const hotkeys = ["/","s"]; | |||
| const selectors = { | |||
| appContainer: '#search-app', | |||
| resultContainer: '#search-results', | |||
| @@ -72,8 +92,14 @@ fetchInject([ | |||
| window.onpopstate = (evt) => { | |||
| this.query = evt.state.query; | |||
| }; | |||
| document.onkeyup = function (evt) { | |||
| evt.key === 's' && focusSearchInput(); | |||
| const searchInput = getSearchInput(); | |||
| document.onkeydown = function (evt) { | |||
| if (evt.target === searchInput) return; | |||
| if (hotkeys.includes(evt.key)) { | |||
| evt.preventDefault(); | |||
| focusSearchInput(); | |||
| getSearchInput().select(); | |||
| }; | |||
| } | |||
| focusSearchInput(); | |||
| }, | |||
| @@ -1 +1 @@ | |||
| {"Target":"search.0716f2f738659f865cdad84603513d09d4f8a9c098e764b13bf481c401faa902ba2caebfd601aad71277533d125d3b0f48beaabb37bb6d84141ebf78c494bb8d.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-Bxby9zhln4Zc2thGA1E9CdT4qcCY52SxO/SBxAH6qQK6LK6/1gGq1xJ3Uz0SXTsPSL6quze7bYQUHr94xJS7jQ=="}} | |||
| {"Target":"search.c0b2121b449f96b1a582f1459457c7c1290b06058e980fba2f7b13a2141a1a25198f77d9666b69327d52712524d406ea741991f0f1ab429f57279ca150aa1998.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-wLISG0SflrGlgvFFlFfHwSkLBgWOmA+6L3sTohQaGiUZj3fZZmtpMn1ScSUk1AbqdBmR8PGrQp9XJ5yhUKoZmA=="}} | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject([ | |||
| "/js/vue.min.js", | |||
| "/js/lodash.custom.min.js", | |||
| @@ -12,6 +31,7 @@ fetchInject([ | |||
| ).replace(/\+/g, ' '); | |||
| const queryParam = 's'; | |||
| const hotkeys = ["/","s"]; | |||
| const selectors = { | |||
| appContainer: '#search-app', | |||
| resultContainer: '#search-results', | |||
| @@ -72,8 +92,14 @@ fetchInject([ | |||
| window.onpopstate = (evt) => { | |||
| this.query = evt.state.query; | |||
| }; | |||
| document.onkeyup = function (evt) { | |||
| evt.key === 's' && focusSearchInput(); | |||
| const searchInput = getSearchInput(); | |||
| document.onkeydown = function (evt) { | |||
| if (evt.target === searchInput) return; | |||
| if (hotkeys.includes(evt.key)) { | |||
| evt.preventDefault(); | |||
| focusSearchInput(); | |||
| getSearchInput().select(); | |||
| }; | |||
| } | |||
| focusSearchInput(); | |||
| }, | |||
| @@ -1,2 +1,2 @@ | |||
| /*! Fetch Inject v2.0.2 | Copyright (C) 2017–2018 Josh Habdas <[email protected]> | @license Zlib */ | |||
| /*! Fetch Inject v2.0.4 | Copyright (C) Josh Habdas <[email protected]> (https://habd.as) | @license Zlib */ | |||
| var fetchInject=function(){"use strict";const e=function(e,t,r,n,o,c,i){c=t.createElement(r),i=t.getElementsByTagName(r)[0],c.appendChild(t.createTextNode(n.text)),c.onload=o(n),i?i.parentNode.insertBefore(c,i):t.head.appendChild(c)};return function(t,r){if(!arguments.length)return Promise.reject(new ReferenceError("Failed to execute 'fetchInject': 1 argument required but only 0 present."));if(arguments[0]&&arguments[0].constructor!==Array)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 1 must be of type 'Array'."));if(arguments[1]&&arguments[1].constructor!==Promise)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 2 must be of type 'Promise'."));const n=[],o=r?[].concat(r):[],c=[];return t.forEach(e=>o.push(window.fetch(e).then(e=>[e.clone().text(),e.blob()]).then(e=>Promise.all(e).then(e=>{n.push({text:e[0],blob:e[1]})})))),Promise.all(o).then(()=>(n.forEach(t=>{c.push({then:r=>{t.blob.type.includes("text/css")?e(window,document,"style",t,r):e(window,document,"script",t,r)}})}),Promise.all(c)))}}(); | |||
| @@ -1 +1 @@ | |||
| {"Target":"js/vendor/fetch-inject.min.271fcca93c585aa1dda0e90722d4492590af14384444faf9806e08e444aedd5f81810c8043ac177ddb06ce1ce64f4cb2be4016cf68dbae7f35abdd114494d24e.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-Jx/MqTxYWqHdoOkHItRJJZCvFDhERPr5gG4I5ESu3V+BgQyAQ6wXfdsGzhzmT0yyvkAWz2jbrn81q90RRJTSTg=="}} | |||
| {"Target":"js/vendor/fetch-inject.min.dadd32c8dad476d9fd586228055c6ae6fb6825061fa034036ea44fa4e6fbe5fd6188bdfd0c62dd24a0eb18feb47c18577eb15e2b2561cd626f1ef2e0967fc494.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-2t0yyNrUdtn9WGIoBVxq5vtoJQYfoDQDbqRPpOb75f1hiL39DGLdJKDrGP60fBhXfrFeKyVhzWJvHvLgln/ElA=="}} | |||
| @@ -1,7 +1,411 @@ | |||
| # Change Log | |||
| # Changelog | |||
| All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. | |||
| ## [9.1.0](https://git.habd.as/comfusion/after-dark/compare/v9.0.0...v9.1.0) (2019-08-21) | |||
| ### Bug Fixes | |||
| * **feature/featured-posts:** default featured pages to empty slice when not defined ([785b403](https://git.habd.as/comfusion/after-dark/commit/785b403)), closes [#173](https://git.habd.as/comfusion/after-dark/issues/173) | |||
| ### Build System | |||
| * **docker/hugo:** bump to 0.57.0 ([e090ab2](https://git.habd.as/comfusion/after-dark/commit/e090ab2)) | |||
| ### Features | |||
| * **feature/code-analysis:** add source build of htmltest ([1cd1d6c](https://git.habd.as/comfusion/after-dark/commit/1cd1d6c)), closes [#124](https://git.habd.as/comfusion/after-dark/issues/124) [#165](https://git.habd.as/comfusion/after-dark/issues/165) | |||
| ## [9.0.0](https://git.habd.as/comfusion/after-dark/compare/v8.3.3...v9.0.0) (2019-08-12) | |||
| ### Features | |||
| * **feature/featured-posts:** allow featured items in posts section ([49f5c56](https://git.habd.as/comfusion/after-dark/commit/49f5c56)), closes [#170](https://git.habd.as/comfusion/after-dark/issues/170) [#160](https://git.habd.as/comfusion/after-dark/issues/160) | |||
| ### BREAKING CHANGES | |||
| * **feature/featured-posts:** Hugo minimum required version now 0.51 (was 0.44) | |||
| ### [8.3.4](https://git.habd.as/comfusion/after-dark/compare/v8.3.3...v8.3.4) (2019-08-05) | |||
| Finish documentation TODOs. | |||
| ### [8.3.3](https://git.habd.as/comfusion/after-dark/compare/v8.3.2...v8.3.3) (2019-07-31) | |||
| ### Build System | |||
| * **docker/hugo:** support extended builds of hugo 0.56.0 ([3ee8bea](https://git.habd.as/comfusion/after-dark/commit/3ee8bea)), closes [#161](https://git.habd.as/comfusion/after-dark/issues/161) | |||
| ### [8.3.2](https://git.habd.as/comfusion/after-dark/compare/v8.3.1...v8.3.2) (2019-07-22) | |||
| ### Bug Fixes | |||
| * **feature/post-images:** prevent content from jumping as image loads ([452ce64](https://git.habd.as/comfusion/after-dark/commit/452ce64)), closes [#162](https://git.habd.as/comfusion/after-dark/issues/162) | |||
| ### Build System | |||
| * **npm:** audit and fix dev dependency vulnerabilities ([782506e](https://git.habd.as/comfusion/after-dark/commit/782506e)) | |||
| * **npm:** greenkeep commit helper and changelog generator ([0c571ef](https://git.habd.as/comfusion/after-dark/commit/0c571ef)) | |||
| ### [8.3.1](https://git.habd.as/comfusion/after-dark/compare/v8.3.0...v8.3.1) (2019-07-21) | |||
| ### Bug Fixes | |||
| * **bin/upgrade:** properly detect current theme version, if present ([59cebcb](https://git.habd.as/comfusion/after-dark/commit/59cebcb)) | |||
| ## [8.3.0](https://git.habd.as/comfusion/after-dark/compare/v8.2.0...v8.3.0) (2019-07-21) | |||
| ### Features | |||
| * **shortcode/video:** add video shortcode ([ace4c7c](https://git.habd.as/comfusion/after-dark/commit/ace4c7c)), closes [#20](https://git.habd.as/comfusion/after-dark/issues/20) [#81](https://git.habd.as/comfusion/after-dark/issues/81) | |||
| ## [8.2.0](https://git.habd.as/comfusion/after-dark/compare/v8.1.0...v8.2.0) (2019-07-18) | |||
| ### Bug Fixes | |||
| * **assets/css:** prevent ie10+ scrollbar from causing layout to jump ([105356f](https://git.habd.as/comfusion/after-dark/commit/105356f)), closes [#144](https://git.habd.as/comfusion/after-dark/issues/144) | |||
| * **bin/install:** resolve shellcheck warns for improved portability ([67a080f](https://git.habd.as/comfusion/after-dark/commit/67a080f)), closes [#154](https://git.habd.as/comfusion/after-dark/issues/154) | |||
| ### Features | |||
| * **feature/fuzzy-search:** add app init loading indicator and noscript experience ([da82ae2](https://git.habd.as/comfusion/after-dark/commit/da82ae2)), closes [#143](https://git.habd.as/comfusion/after-dark/issues/143) | |||
| ## [8.1.0](https://git.habd.as/comfusion/after-dark/compare/v8.0.2...v8.1.0) (2019-07-12) | |||
| ### Features | |||
| * **feature/custom-homepage:** add custom homepage and docs in english ([87d2076](https://git.habd.as/comfusion/after-dark/commit/87d2076)), closes [#41](https://git.habd.as/comfusion/after-dark/issues/41) | |||
| * **snippets:** abstract figure shortcode for use in layout ([8ca09f4](https://git.habd.as/comfusion/after-dark/commit/8ca09f4)) | |||
| ### [8.0.2](https://git.habd.as/comfusion/after-dark/compare/v8.0.1...v8.0.2) (2019-07-02) | |||
| ### [8.0.1](https://git.habd.as/comfusion/after-dark/compare/v8.0.0...v8.0.1) (2019-07-01) | |||
| ### Build System | |||
| * **npm/lockfile:** improve sec of dev deps with 1 audit fixed ([d956c71](https://git.habd.as/comfusion/after-dark/commit/d956c71)) | |||
| ## 8.0.0 (2019-05-17) | |||
| Moves After Dark to AGPLv3+. | |||
| ### Bug Fixes | |||
| * **$images:** improve bpg image support ([e8a2e29](https://git.habd.as/comfusion/after-dark/commit/e8a2e29)), closes [#48](https://git.habd.as/comfusion/after-dark/issues/48) | |||
| * **$layouts:** add support for protocol-relative base urls ([bd4db87](https://git.habd.as/comfusion/after-dark/commit/bd4db87)), closes [#37](https://git.habd.as/comfusion/after-dark/issues/37) | |||
| * **$layouts:** disable ua input styling safari mobile ([bffb325](https://git.habd.as/comfusion/after-dark/commit/bffb325)) | |||
| * **$layouts:** fix error calling partial in related content ([ab4a1df](https://git.habd.as/comfusion/after-dark/commit/ab4a1df)), closes [#55](https://git.habd.as/comfusion/after-dark/issues/55) | |||
| * **$layouts:** improve search input focus and usability ([5e2500f](https://git.habd.as/comfusion/after-dark/commit/5e2500f)), closes [#91](https://git.habd.as/comfusion/after-dark/issues/91) | |||
| * **$layouts:** move stylesheets back to partials, reorganize files ([c5871f1](https://git.habd.as/comfusion/after-dark/commit/c5871f1)), closes [#50](https://git.habd.as/comfusion/after-dark/issues/50) | |||
| * **$layouts:** prevent auto-zoom on safari mobile ([60d5b37](https://git.habd.as/comfusion/after-dark/commit/60d5b37)) | |||
| * **$layouts:** prevent js error on search form submit ([96b483c](https://git.habd.as/comfusion/after-dark/commit/96b483c)), closes [#94](https://git.habd.as/comfusion/after-dark/issues/94) | |||
| * **$layouts:** remove iframe borders by default ([aeeafa2](https://git.habd.as/comfusion/after-dark/commit/aeeafa2)) | |||
| * **$layouts:** update powered-by to link to new theme site ([500ccb9](https://git.habd.as/comfusion/after-dark/commit/500ccb9)) | |||
| * **$shortcodes:** fix issue with external link appearance ([f7cd49c](https://git.habd.as/comfusion/after-dark/commit/f7cd49c)) | |||
| * **$style:** add more whitespace on list pages and darken muted text ([8ba617c](https://git.habd.as/comfusion/after-dark/commit/8ba617c)) | |||
| * **$style:** fix a whitespace issue near the readmore link ([82155e9](https://git.habd.as/comfusion/after-dark/commit/82155e9)), closes [#70](https://git.habd.as/comfusion/after-dark/issues/70) | |||
| * **archetypes:** close tag body on last external shortcode ([fd6dd8d](https://git.habd.as/comfusion/after-dark/commit/fd6dd8d)) | |||
| * **archetypes:** default posts to display as published content ([47071fe](https://git.habd.as/comfusion/after-dark/commit/47071fe)) | |||
| * **archetypes:** fix broken links in post archetype ([0d65b6a](https://git.habd.as/comfusion/after-dark/commit/0d65b6a)) | |||
| * **archetypes:** prevent internal links from opening in new window ([c488a12](https://git.habd.as/comfusion/after-dark/commit/c488a12)) | |||
| * **archetypes/validate:** swap string method for sha trim behavior ([feb0150](https://git.habd.as/comfusion/after-dark/commit/feb0150)), closes [#90](https://git.habd.as/comfusion/after-dark/issues/90) | |||
| * **assets:** stop treating all permalinks as external ([7e1d3cc](https://git.habd.as/comfusion/after-dark/commit/7e1d3cc)) | |||
| * **assets/css:** normalize base font-size, large screens ([912ec97](https://git.habd.as/comfusion/after-dark/commit/912ec97)) | |||
| * **assets/css:** normalize samp element font size with pre ([966c767](https://git.habd.as/comfusion/after-dark/commit/966c767)) | |||
| * **assets/css:** normalize size of help text on small viewports ([55ba9e2](https://git.habd.as/comfusion/after-dark/commit/55ba9e2)) | |||
| * **assets/css:** normalize whitespace around toc when post images present ([4acbace](https://git.habd.as/comfusion/after-dark/commit/4acbace)) | |||
| * **assets/css:** unset ua default figure element margin ([7925a94](https://git.habd.as/comfusion/after-dark/commit/7925a94)) | |||
| * **assets/theme:** normalize blockquote line-height with rest of document ([5220b94](https://git.habd.as/comfusion/after-dark/commit/5220b94)) | |||
| * **bin:** remove preview script ([4f7af96](https://git.habd.as/comfusion/after-dark/commit/4f7af96)), closes [#38](https://git.habd.as/comfusion/after-dark/issues/38) | |||
| * **bundle:** add images to npm ignore file ([b7cbe87](https://git.habd.as/comfusion/after-dark/commit/b7cbe87)) | |||
| * **bundle:** remove images folder from npm release ([df9ce55](https://git.habd.as/comfusion/after-dark/commit/df9ce55)) | |||
| * **components:** correct help block class attr behavior ([586a290](https://git.habd.as/comfusion/after-dark/commit/586a290)) | |||
| * **feature/post-images:** fix yandex validation error ([f758c2e](https://git.habd.as/comfusion/after-dark/commit/f758c2e)) | |||
| * **feature/post-images:** zap extra whitespaces ([66c27ec](https://git.habd.as/comfusion/after-dark/commit/66c27ec)) | |||
| * **feature/web-feeds:** output last build date in rfc822 with 4-digit year ([4c86b4a](https://git.habd.as/comfusion/after-dark/commit/4c86b4a)) | |||
| * **fuzzy-search:** handle search layout hotkey assignments properly ([630d3a9](https://git.habd.as/comfusion/after-dark/commit/630d3a9)) | |||
| * **help:** change 404 page to error page and improve script perf ([9749575](https://git.habd.as/comfusion/after-dark/commit/9749575)), closes [#43](https://git.habd.as/comfusion/after-dark/issues/43) | |||
| * **help:** rename 404 to error page ([e158065](https://git.habd.as/comfusion/after-dark/commit/e158065)) | |||
| * **help/home:** add missing query string param to search link ([7c5f35d](https://git.habd.as/comfusion/after-dark/commit/7c5f35d)) | |||
| * **help/home:** add performance info & undocumented features ([a8e18c5](https://git.habd.as/comfusion/after-dark/commit/a8e18c5)) | |||
| * **hugo:** require 0.44 at minimum ([6e2f11e](https://git.habd.as/comfusion/after-dark/commit/6e2f11e)) | |||
| * **install:** add flags for theme setup script ([1282c7c](https://git.habd.as/comfusion/after-dark/commit/1282c7c)) | |||
| * **install:** improve install experience ([52d6236](https://git.habd.as/comfusion/after-dark/commit/52d6236)) | |||
| * **install:** install packages from npm ([1c2df4f](https://git.habd.as/comfusion/after-dark/commit/1c2df4f)) | |||
| * **install:** kill hugo server always ([de3c8a5](https://git.habd.as/comfusion/after-dark/commit/de3c8a5)) | |||
| * **install:** move it back to bin ([ba92ce6](https://git.habd.as/comfusion/after-dark/commit/ba92ce6)) | |||
| * **install:** move kill command to eof ([7075c82](https://git.habd.as/comfusion/after-dark/commit/7075c82)) | |||
| * **install:** move to scripts folder ([30a8b04](https://git.habd.as/comfusion/after-dark/commit/30a8b04)) | |||
| * **install:** remove git cruft & supply actual module name ([7dd0e9e](https://git.habd.as/comfusion/after-dark/commit/7dd0e9e)) | |||
| * **install:** remove unexpected line in theme config ([7e424bd](https://git.habd.as/comfusion/after-dark/commit/7e424bd)) | |||
| * **install:** remove useful snippets content ([0278216](https://git.habd.as/comfusion/after-dark/commit/0278216)) | |||
| * **install:** restore android support ([3218ce2](https://git.habd.as/comfusion/after-dark/commit/3218ce2)), closes [#25](https://git.habd.as/comfusion/after-dark/issues/25) | |||
| * **install:** standardize install script ([9daad48](https://git.habd.as/comfusion/after-dark/commit/9daad48)), closes [#19](https://git.habd.as/comfusion/after-dark/issues/19) | |||
| * **install:** stop copying all archetypes to site ([b7df91a](https://git.habd.as/comfusion/after-dark/commit/b7df91a)), closes [#45](https://git.habd.as/comfusion/after-dark/issues/45) | |||
| * **install:** support both gnu and bsd grep ([0cc315a](https://git.habd.as/comfusion/after-dark/commit/0cc315a)) | |||
| * **install:** update default open graph image ([f476561](https://git.habd.as/comfusion/after-dark/commit/f476561)) | |||
| * **install:** update example base url ([f24a9f9](https://git.habd.as/comfusion/after-dark/commit/f24a9f9)) | |||
| * **install:** use latest version from npm dist tags ([91a3fb1](https://git.habd.as/comfusion/after-dark/commit/91a3fb1)) | |||
| * **install:** wait 1 second before serving help for docs to expire ([9ca3862](https://git.habd.as/comfusion/after-dark/commit/9ca3862)) | |||
| * **layout/default:** workaround hugo bug on eval len(nil) go tmpl ([d8bdcfc](https://git.habd.as/comfusion/after-dark/commit/d8bdcfc)), closes [#135](https://git.habd.as/comfusion/after-dark/issues/135) | |||
| * **layouts:** move inline-level content in navs inside <p> ([42c9004](https://git.habd.as/comfusion/after-dark/commit/42c9004)) | |||
| * **layouts:** output meta description when not explicitly set ([f347138](https://git.habd.as/comfusion/after-dark/commit/f347138)), closes [#21](https://git.habd.as/comfusion/after-dark/issues/21) | |||
| * **layouts:** output urls relative to baseurl ([0205bd1](https://git.habd.as/comfusion/after-dark/commit/0205bd1)), closes [#4](https://git.habd.as/comfusion/after-dark/issues/4) | |||
| * **layouts:** remove navmenu from help layout ([470b452](https://git.habd.as/comfusion/after-dark/commit/470b452)) | |||
| * **layouts:** restore smooth scrolling to toc links ([8db7451](https://git.habd.as/comfusion/after-dark/commit/8db7451)) | |||
| * **layouts:** show sarcastic message when no pages exist ([990f0b6](https://git.habd.as/comfusion/after-dark/commit/990f0b6)) | |||
| * **layouts:** stop outputting trim color if none present ([73e824a](https://git.habd.as/comfusion/after-dark/commit/73e824a)) | |||
| * **layouts:** use relative urls in post byline taxonomy links ([a170089](https://git.habd.as/comfusion/after-dark/commit/a170089)) | |||
| * **layouts/partials:** add main menu display condition ([93ed6cd](https://git.habd.as/comfusion/after-dark/commit/93ed6cd)), closes [#78](https://git.habd.as/comfusion/after-dark/issues/78) | |||
| * **layouts/partials:** move navmenu snippet into theme ([1c0e945](https://git.habd.as/comfusion/after-dark/commit/1c0e945)), closes [#78](https://git.habd.as/comfusion/after-dark/issues/78) | |||
| * **layouts/search:** unblock blocking scripts and add command terminators ([455b6fe](https://git.habd.as/comfusion/after-dark/commit/455b6fe)), closes [#14](https://git.habd.as/comfusion/after-dark/issues/14) | |||
| * **links:** style external links in all browsers ([3e2aa61](https://git.habd.as/comfusion/after-dark/commit/3e2aa61)), closes [#22](https://git.habd.as/comfusion/after-dark/issues/22) | |||
| * **onboarding:** add explicit site port setting in install script ([b851b0b](https://git.habd.as/comfusion/after-dark/commit/b851b0b)) | |||
| * **onboarding:** serve site not help when starting site from installer ([3447556](https://git.habd.as/comfusion/after-dark/commit/3447556)) | |||
| * **partials:** fix markup validation error ([43a9ed0](https://git.habd.as/comfusion/after-dark/commit/43a9ed0)) | |||
| * **partials:** make button onclick handler work as expected ([74ef00a](https://git.habd.as/comfusion/after-dark/commit/74ef00a)) | |||
| * **partials/powered-by:** point to expected directory of refactored file ([d61f131](https://git.habd.as/comfusion/after-dark/commit/d61f131)) | |||
| * **personalization:** rename accent color to trim color ([953c73e](https://git.habd.as/comfusion/after-dark/commit/953c73e)) | |||
| * **scripts:** add || to server shutdown ([f7f2849](https://git.habd.as/comfusion/after-dark/commit/f7f2849)) | |||
| * **scripts:** address error generating docs after upgrade ([f84cd40](https://git.habd.as/comfusion/after-dark/commit/f84cd40)) | |||
| * **scripts:** always regnerate help docs ([082f1be](https://git.habd.as/comfusion/after-dark/commit/082f1be)) | |||
| * **scripts:** automatically stop running help servers on upgrade ([87feadc](https://git.habd.as/comfusion/after-dark/commit/87feadc)) | |||
| * **scripts:** remove help before generating on upgrade ([0049586](https://git.habd.as/comfusion/after-dark/commit/0049586)) | |||
| * **scripts:** resolve help doc path lookups when no custom content dir ([6792cd7](https://git.habd.as/comfusion/after-dark/commit/6792cd7)) | |||
| * **scripts:** resolve syntax bugs in script ([0b349ed](https://git.habd.as/comfusion/after-dark/commit/0b349ed)) | |||
| * **scripts:** resolve tar cd issue ([a573640](https://git.habd.as/comfusion/after-dark/commit/a573640)) | |||
| * **scripts:** update install to place theme metadata in theme data folder ([5e89f6d](https://git.habd.as/comfusion/after-dark/commit/5e89f6d)), closes [#59](https://git.habd.as/comfusion/after-dark/issues/59) | |||
| * **shortcode/hackcss-alert:** restore legacy behavior for shortcode ([975f2b7](https://git.habd.as/comfusion/after-dark/commit/975f2b7)) | |||
| * **shortcode/navmenu:** improve microdata semantics & add test tool to docs ([31992f5](https://git.habd.as/comfusion/after-dark/commit/31992f5)), closes [#100](https://git.habd.as/comfusion/after-dark/issues/100) | |||
| * **shortcodes:** remove insignificant spaces after external links ([1f06f5c](https://git.habd.as/comfusion/after-dark/commit/1f06f5c)) | |||
| * **shortcodes:** remove privacytube and coub shortcodes ([f5ddb1a](https://git.habd.as/comfusion/after-dark/commit/f5ddb1a)), closes [#35](https://git.habd.as/comfusion/after-dark/issues/35) | |||
| * **shortcodes:** remove standard link treatment from figures ([a619320](https://git.habd.as/comfusion/after-dark/commit/a619320)) | |||
| * **shortcodes/button:** allow name attribute & pass id as expected ([c58645a](https://git.habd.as/comfusion/after-dark/commit/c58645a)) | |||
| * **snippets:** add name attribute to form ([78f3482](https://git.habd.as/comfusion/after-dark/commit/78f3482)) | |||
| * **snippets:** reverse logic for external link styling ([2889192](https://git.habd.as/comfusion/after-dark/commit/2889192)) | |||
| * **styles:** leftpad orderd lists ([a944ead](https://git.habd.as/comfusion/after-dark/commit/a944ead)) | |||
| * **theme:** enable white theme variant ([2addeaa](https://git.habd.as/comfusion/after-dark/commit/2addeaa)) | |||
| * **typography:** only justify and hyphenate article bodies ([52f046a](https://git.habd.as/comfusion/after-dark/commit/52f046a)) | |||
| * **typography:** remove text justification and hyphenation ([2bfa8f7](https://git.habd.as/comfusion/after-dark/commit/2bfa8f7)) | |||
| * **typography:** stop justifying and hyphenating text on small viewports ([929ae7e](https://git.habd.as/comfusion/after-dark/commit/929ae7e)) | |||
| * 404 page theme color url ref ([2303007](https://git.habd.as/comfusion/after-dark/commit/2303007)) | |||
| * add add theme color to 404 page ([1379cfc](https://git.habd.as/comfusion/after-dark/commit/1379cfc)) | |||
| ### Build System | |||
| * **npm:** pull unused dev dep ([14bab76](https://git.habd.as/comfusion/after-dark/commit/14bab76)) | |||
| * **npm:** upgrade lockfile to v1 ([25ce8fa](https://git.habd.as/comfusion/after-dark/commit/25ce8fa)) | |||
| * **npm:** upgrade standard-version to latest ([2ecf9de](https://git.habd.as/comfusion/after-dark/commit/2ecf9de)) | |||
| * add sha512 digest to git tags and gpg sign them ([e16ab0b](https://git.habd.as/comfusion/after-dark/commit/e16ab0b)) | |||
| * append sha512 to release tag and self-sign ([f054416](https://git.habd.as/comfusion/after-dark/commit/f054416)), closes [#33](https://git.habd.as/comfusion/after-dark/issues/33) | |||
| * enclose release tag sha512 in delimeters ([38127fc](https://git.habd.as/comfusion/after-dark/commit/38127fc)), closes [#33](https://git.habd.as/comfusion/after-dark/issues/33) | |||
| * **$hugo:** inline css using readFile template function ([37834f9](https://git.habd.as/comfusion/after-dark/commit/37834f9)), closes [#44](https://git.habd.as/comfusion/after-dark/issues/44) | |||
| * **$npm:** patch moderate security vulnerability in dev dep ([6c763c3](https://git.habd.as/comfusion/after-dark/commit/6c763c3)) | |||
| * **$npm:** switch from yarn to npm lockfile ([185ad8f](https://git.habd.as/comfusion/after-dark/commit/185ad8f)) | |||
| * **$yarn:** add yarn and update dev dependencies and scripts ([d115256](https://git.habd.as/comfusion/after-dark/commit/d115256)) | |||
| * **bin:** improve support for linux ([f2c3d0b](https://git.habd.as/comfusion/after-dark/commit/f2c3d0b)) | |||
| * **install:** bail early ([55798c3](https://git.habd.as/comfusion/after-dark/commit/55798c3)) | |||
| * **install:** update install process ([86c69ef](https://git.habd.as/comfusion/after-dark/commit/86c69ef)) | |||
| * **scripts:** remove unused variables from install script ([a1e095a](https://git.habd.as/comfusion/after-dark/commit/a1e095a)) | |||
| ### Features | |||
| * **$archetypes:** turn archetypes into go templates ([1ef09c6](https://git.habd.as/comfusion/after-dark/commit/1ef09c6)) | |||
| * **$archetypes:** turn archetypes into go templates ([56d86d3](https://git.habd.as/comfusion/after-dark/commit/56d86d3)) | |||
| * **$layout:** add base element to base layout ([ddff5a9](https://git.habd.as/comfusion/after-dark/commit/ddff5a9)), closes [#60](https://git.habd.as/comfusion/after-dark/issues/60) | |||
| * **$layout:** Add support for external stylesheets ([917cf91](https://git.habd.as/comfusion/after-dark/commit/917cf91)), closes [#49](https://git.habd.as/comfusion/after-dark/issues/49) | |||
| * **$layout:** add telegram iv support ([d6bf3b6](https://git.habd.as/comfusion/after-dark/commit/d6bf3b6)), closes [#113](https://git.habd.as/comfusion/after-dark/issues/113) | |||
| * **$layouts:** add fuzzy search ([f9a787e](https://git.habd.as/comfusion/after-dark/commit/f9a787e)), closes [#83](https://git.habd.as/comfusion/after-dark/issues/83) | |||
| * **$layouts:** add post images ([b151db3](https://git.habd.as/comfusion/after-dark/commit/b151db3)) | |||
| * **$layouts:** add twitter cards ([a1412a9](https://git.habd.as/comfusion/after-dark/commit/a1412a9)), closes [#76](https://git.habd.as/comfusion/after-dark/issues/76) | |||
| * **$layouts:** allow customization of referrer policy and add privacy-focused default ([7bde6b6](https://git.habd.as/comfusion/after-dark/commit/7bde6b6)), closes [#96](https://git.habd.as/comfusion/after-dark/issues/96) | |||
| * **$layouts:** hide related content reading time on small screen ([7cfa4eb](https://git.habd.as/comfusion/after-dark/commit/7cfa4eb)) | |||
| * **$layouts:** use related content feature introduced in [email protected] ([b408db9](https://git.habd.as/comfusion/after-dark/commit/b408db9)), closes [#54](https://git.habd.as/comfusion/after-dark/issues/54) | |||
| * **$partials:** add pubdate structured data to post byline ([42f34ae](https://git.habd.as/comfusion/after-dark/commit/42f34ae)) | |||
| * **$shortcode:** add coub shortcode for gifs with sound ([df9dae8](https://git.habd.as/comfusion/after-dark/commit/df9dae8)), closes [#63](https://git.habd.as/comfusion/after-dark/issues/63) | |||
| * **$shortcode:** style cite element inside block quotation ([158c0f4](https://git.habd.as/comfusion/after-dark/commit/158c0f4)) | |||
| * **$shortcodes:** add frame targeting to custom figure shortcode ([b802dab](https://git.habd.as/comfusion/after-dark/commit/b802dab)) | |||
| * **$shortcodes:** add youtube without cookies ([f6f837e](https://git.habd.as/comfusion/after-dark/commit/f6f837e)), closes [#62](https://git.habd.as/comfusion/after-dark/issues/62) | |||
| * **$shortcodes:** enable target and method control for button/buttongroup ([c3d1599](https://git.habd.as/comfusion/after-dark/commit/c3d1599)), closes [#56](https://git.habd.as/comfusion/after-dark/issues/56) | |||
| * **$shortcodes:** make button shortcode clickable ([fa24f4a](https://git.habd.as/comfusion/after-dark/commit/fa24f4a)), closes [#40](https://git.habd.as/comfusion/after-dark/issues/40) | |||
| * **$theme:** add support for bpg image format ([3976ec0](https://git.habd.as/comfusion/after-dark/commit/3976ec0)), closes [#45](https://git.habd.as/comfusion/after-dark/issues/45) | |||
| * **bin:** add script to preview site online over https ([730df77](https://git.habd.as/comfusion/after-dark/commit/730df77)), closes [#21](https://git.habd.as/comfusion/after-dark/issues/21) | |||
| * **feature/fuzzy-search:** add aria landmark to search form ([5b26f51](https://git.habd.as/comfusion/after-dark/commit/5b26f51)) | |||
| * **feature/post-images:** add image captions and structured data ([9a5c283](https://git.habd.as/comfusion/after-dark/commit/9a5c283)) | |||
| * **feature/section-menu:** add support for html link decoration ([f02c68f](https://git.habd.as/comfusion/after-dark/commit/f02c68f)) | |||
| * **feature/section-menu:** add support for multiple nav menus ([0c468a5](https://git.habd.as/comfusion/after-dark/commit/0c468a5)) | |||
| * **feature/security:** add content security policy ([7e438ad](https://git.habd.as/comfusion/after-dark/commit/7e438ad)) | |||
| * **feature/table-of-contents:** add native smooth-scroll ([f1606b6](https://git.habd.as/comfusion/after-dark/commit/f1606b6)), closes [#43](https://git.habd.as/comfusion/after-dark/issues/43) | |||
| * **fuzzy-search:** add ability to assign arbitrary hotkeys ([f429c4a](https://git.habd.as/comfusion/after-dark/commit/f429c4a)), closes [#74](https://git.habd.as/comfusion/after-dark/issues/74) | |||
| * **help:** multipage help docs ([ef25e00](https://git.habd.as/comfusion/after-dark/commit/ef25e00)), closes [#61](https://git.habd.as/comfusion/after-dark/issues/61) | |||
| * **help:** update and run help anytime using included script ([fc93864](https://git.habd.as/comfusion/after-dark/commit/fc93864)) | |||
| * **help/homepage:** update security featurette ([c567bd4](https://git.habd.as/comfusion/after-dark/commit/c567bd4)) | |||
| * **highlighting:** add syntax highlighting ([a038ee0](https://git.habd.as/comfusion/after-dark/commit/a038ee0)) | |||
| * **install:** add installation challenge ([9d438fe](https://git.habd.as/comfusion/after-dark/commit/9d438fe)) | |||
| * **install:** faux install validation using npm sha512 digest ([e7625da](https://git.habd.as/comfusion/after-dark/commit/e7625da)), closes [#33](https://git.habd.as/comfusion/after-dark/issues/33) | |||
| * **install:** provide welcome post with online help ([79838ed](https://git.habd.as/comfusion/after-dark/commit/79838ed)) | |||
| * **install:** simplify installation ([da3f66e](https://git.habd.as/comfusion/after-dark/commit/da3f66e)) | |||
| * **install:** streamline installation ([15f61f5](https://git.habd.as/comfusion/after-dark/commit/15f61f5)), closes [#2](https://git.habd.as/comfusion/after-dark/issues/2) | |||
| * **layout,install:** add automatic syntax highlighting ([70d2bfc](https://git.habd.as/comfusion/after-dark/commit/70d2bfc)) | |||
| * **layouts:** add meta keywords to base template ([d5f146f](https://git.habd.as/comfusion/after-dark/commit/d5f146f)), closes [#20](https://git.habd.as/comfusion/after-dark/issues/20) | |||
| * **layouts:** add support for hugo 0.20.2 ([ac42370](https://git.habd.as/comfusion/after-dark/commit/ac42370)) | |||
| * **layouts:** provide form builder snippets ([ada893d](https://git.habd.as/comfusion/after-dark/commit/ada893d)) | |||
| * **layouts/*:** add cookie disclaimer ([446f6f8](https://git.habd.as/comfusion/after-dark/commit/446f6f8)) | |||
| * **layouts/search:** and placeholder and allow basic customization ([7a669ef](https://git.habd.as/comfusion/after-dark/commit/7a669ef)) | |||
| * **layouts/shortcodes:** add grid and cell flexbox shortcode & snippet ([77df2c4](https://git.habd.as/comfusion/after-dark/commit/77df2c4)), closes [#67](https://git.habd.as/comfusion/after-dark/issues/67) | |||
| * **layouts/shortcodes:** add select shortcode, docs and example use ([85eefe5](https://git.habd.as/comfusion/after-dark/commit/85eefe5)) | |||
| * **license:** wtfpl -> agpl-3.0-or-later ([1a7a2a9](https://git.habd.as/comfusion/after-dark/commit/1a7a2a9)), closes [#148](https://git.habd.as/comfusion/after-dark/issues/148) | |||
| * **LICENSE:** you just do what the fuck you want to ([d75ea18](https://git.habd.as/comfusion/after-dark/commit/d75ea18)) | |||
| * **module/toxic-swamp:** integrate module beta ([743ebfc](https://git.habd.as/comfusion/after-dark/commit/743ebfc)) | |||
| * **modules:** add analytics module ([1c5c6bb](https://git.habd.as/comfusion/after-dark/commit/1c5c6bb)), closes [#1](https://git.habd.as/comfusion/after-dark/issues/1) | |||
| * **modules:** add fractal forest module for bpg image format support ([76b9cfd](https://git.habd.as/comfusion/after-dark/commit/76b9cfd)), closes [#8](https://git.habd.as/comfusion/after-dark/issues/8) | |||
| * **modules:** add hall of mirrors ([592b2b2](https://git.habd.as/comfusion/after-dark/commit/592b2b2)), closes [#24](https://git.habd.as/comfusion/after-dark/issues/24) | |||
| * **onboarding:** streamline installation ([34ce45a](https://git.habd.as/comfusion/after-dark/commit/34ce45a)) | |||
| * **personalization:** add customizable accent colors ([be90f47](https://git.habd.as/comfusion/after-dark/commit/be90f47)) | |||
| * select theme variant directly from site config ([81a4663](https://git.habd.as/comfusion/after-dark/commit/81a4663)), closes [#6](https://git.habd.as/comfusion/after-dark/issues/6) | |||
| * **powered-by:** add page generation date ([430a468](https://git.habd.as/comfusion/after-dark/commit/430a468)) | |||
| * **scripts:** add theme upgrade script ([c9a5c3a](https://git.habd.as/comfusion/after-dark/commit/c9a5c3a)), closes [#59](https://git.habd.as/comfusion/after-dark/issues/59) | |||
| * **scripts:** support custom content dirs in config file ([e72e914](https://git.habd.as/comfusion/after-dark/commit/e72e914)), closes [#59](https://git.habd.as/comfusion/after-dark/issues/59) | |||
| * **scripts/upgrade:** prompt for update if metadata cannot be found ([db3216d](https://git.habd.as/comfusion/after-dark/commit/db3216d)) | |||
| * **shortcode:** add trusted custom attr to external ([9b0d5f5](https://git.habd.as/comfusion/after-dark/commit/9b0d5f5)) | |||
| * **shortcodes:** add blockquote shortcode ([d57e535](https://git.habd.as/comfusion/after-dark/commit/d57e535)) | |||
| * **shortcodes:** add figure shortcode ([2c06d76](https://git.habd.as/comfusion/after-dark/commit/2c06d76)) | |||
| * **shortcodes:** add form attr to button ([86d4fee](https://git.habd.as/comfusion/after-dark/commit/86d4fee)) | |||
| * **shortcodes:** add hack progress bar component ([1933b45](https://git.habd.as/comfusion/after-dark/commit/1933b45)) | |||
| * **shortcodes:** add hackcss alert shortcode ([09720f8](https://git.habd.as/comfusion/after-dark/commit/09720f8)) | |||
| * **shortcodes:** add hackcss alert shortcode ([6f20f2d](https://git.habd.as/comfusion/after-dark/commit/6f20f2d)) | |||
| * **shortcodes:** add hackcss button group component ([af226e4](https://git.habd.as/comfusion/after-dark/commit/af226e4)) | |||
| * **shortcodes:** add hackcss button shortcode ([65fd4e3](https://git.habd.as/comfusion/after-dark/commit/65fd4e3)) | |||
| * **shortcodes:** add hackcss card component ([0787170](https://git.habd.as/comfusion/after-dark/commit/0787170)) | |||
| * **shortcodes:** add hackcss loading component ([e0165ed](https://git.habd.as/comfusion/after-dark/commit/e0165ed)) | |||
| * **shortcodes:** add hackcss progress component ([b475a47](https://git.habd.as/comfusion/after-dark/commit/b475a47)) | |||
| * **shortcodes:** add id attribute for forms ([a76dff1](https://git.habd.as/comfusion/after-dark/commit/a76dff1)) | |||
| * **shortcodes:** add navmenu ([87bd381](https://git.habd.as/comfusion/after-dark/commit/87bd381)), closes [#78](https://git.habd.as/comfusion/after-dark/issues/78) | |||
| * **shortcodes:** add navmenu navigational aid ([a333be4](https://git.habd.as/comfusion/after-dark/commit/a333be4)) | |||
| * **shortcodes:** add title attr to external ([9386ef4](https://git.habd.as/comfusion/after-dark/commit/9386ef4)) | |||
| * **shortcodes:** add type attribute for external links ([5c99a96](https://git.habd.as/comfusion/after-dark/commit/5c99a96)) | |||
| * **shortcodes:** add value attr to button ([6d63de4](https://git.habd.as/comfusion/after-dark/commit/6d63de4)) | |||
| * **shortcodes:** allow anonymous blockquotes ([256d15c](https://git.habd.as/comfusion/after-dark/commit/256d15c)) | |||
| * **shortcodes:** allow button disablement ([7bbf79b](https://git.habd.as/comfusion/after-dark/commit/7bbf79b)), closes [#65](https://git.habd.as/comfusion/after-dark/issues/65) | |||
| * **shortcodes:** trim whitespace in id attributes ([a5c5704](https://git.habd.as/comfusion/after-dark/commit/a5c5704)) | |||
| * **shortcodes/button:** add custom class support ([60fb9d2](https://git.habd.as/comfusion/after-dark/commit/60fb9d2)) | |||
| * **shortcodes/external:** add shorthand usage for named anchors ([0aa0585](https://git.habd.as/comfusion/after-dark/commit/0aa0585)) | |||
| * **snippets:** add external link snippet ([848cd33](https://git.habd.as/comfusion/after-dark/commit/848cd33)), closes [#48](https://git.habd.as/comfusion/after-dark/issues/48) | |||
| * **snippets:** alert user on invalid autocomplete value ([cabf33b](https://git.habd.as/comfusion/after-dark/commit/cabf33b)), closes [#46](https://git.habd.as/comfusion/after-dark/issues/46) | |||
| * **typography:** justify text output and hyphenate ([738aaaa](https://git.habd.as/comfusion/after-dark/commit/738aaaa)) | |||
| ### BREAKING CHANGES | |||
| * **license:** relicensing | |||
| * **feature/section-menu:** removes disqus entirely, previously a deprecated feature | |||
| * **shortcodes:** shortcodes removed must now be copied to the theme, if used | |||
| * **modules:** google analytics no longer supported | |||
| * hugo 0.43 and above required. css override file locations have changed | |||
| * **$archetypes:** Minimum Hugo version set 0.24, 0.16 - 0.23 must modify archetypes | |||
| to upgrade add `date` and `title` to custom archetypes. if using a version of hugo prior to 0.24 the custom templates should remove `title` and `date` and not use go templating logic in the archetype files | |||
| * **$archetypes:** Minimum Hugo version set 0.24, 0.16 - 0.23 must modify archetypes | |||
| * **$hugo:** Forks and users who've customized css need adjustment as shown in the commit message. There's not a whole lot to it, but it's breaking nonetheless. | |||
| Using this approach enables the CSS to be moved from the partials directory into the static | |||
| directory where it belonged the whole time. Perfect set-up for those who decide to use http2/h2 | |||
| server push for loading styles more efficiently. | |||
| <a name="7.4.1"></a> | |||
| ## [7.4.1](https://git.habd.as/comfusion/after-dark/compare/v7.4.0...v7.4.1) (2019-04-28) | |||
| ### Bug Fixes | |||
| * **fuzzy-search:** handle search layout hotkey assignments properly ([b2c549e](https://git.habd.as/comfusion/after-dark/commits/b2c549e)) | |||
| <a name="7.4.0"></a> | |||
| # [7.4.0](https://git.habd.as/comfusion/after-dark/compare/v7.2.3...v7.4.0) (2019-04-28) | |||
| ### Features | |||
| * **fuzzy-search:** add ability to assign arbitrary hotkeys ([48a15c4](https://git.habd.as/comfusion/after-dark/commits/48a15c4)), closes [#74](https://git.habd.as/comfusion/after-dark/issues/74) | |||
| * **shortcode:** add trusted custom attr to external ([0c81ba7](https://git.habd.as/comfusion/after-dark/commits/0c81ba7)) | |||
| **Note:** Shortcode update included again in this release with signed commmit | |||
| <a name="7.3.0"></a> | |||
| # [7.3.0](https://git.habd.as/comfusion/after-dark/compare/v7.2.3...v7.3.0) (2019-04-27) | |||
| ### Features | |||
| * **shortcode:** add trusted custom attr to external ([ba1d35e](https://git.habd.as/comfusion/after-dark/commits/ba1d35e)) | |||
| <a name="7.2.4"></a> | |||
| ## [7.2.4](https://git.habd.as/comfusion/after-dark/compare/v7.2.3...v7.2.4) (2019-04-16) | |||
| ### Bug Fixes | |||
| Fix issue to allow docs site to load | |||
| <a name="7.2.3"></a> | |||
| ## [7.2.3](https://git.habd.as/comfusion/after-dark/compare/v7.2.2...v7.2.3) (2019-04-12) | |||
| ### But Fixes | |||
| Fix remaining Hugo warnings masked before last release | |||
| <a name="7.2.2"></a> | |||
| ## [7.2.2](https://git.habd.as/comfusion/after-dark/compare/v7.2.1...v7.2.2) (2019-04-12) | |||
| ### Bug Fixes | |||
| * **feature/web-feeds:** output last build date in rfc822 with 4-digit year ([c735feb](https://git.habd.as/comfusion/after-dark/commits/c735feb)) | |||
| * **shortcode/hackcss-alert:** restore legacy behavior for shortcode ([b127eeb](https://git.habd.as/comfusion/after-dark/commits/b127eeb)) | |||
| <a name="7.2.1"></a> | |||
| ## [7.2.1](https://git.habd.as/comfusion/after-dark/compare/v7.2.0...v7.2.1) (2019-02-22) | |||
| @@ -1,13 +1,661 @@ | |||
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |||
| Version 2, December 2004 | |||
| GNU AFFERO GENERAL PUBLIC LICENSE | |||
| Version 3, 19 November 2007 | |||
| Copyright (C) 2004 Sam Hocevar <[email protected]> | |||
| Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> | |||
| Everyone is permitted to copy and distribute verbatim copies | |||
| of this license document, but changing it is not allowed. | |||
| Everyone is permitted to copy and distribute verbatim or modified | |||
| copies of this license document, and changing it is allowed as long | |||
| as the name is changed. | |||
| Preamble | |||
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |||
| TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |||
| The GNU Affero General Public License is a free, copyleft license for | |||
| software and other kinds of works, specifically designed to ensure | |||
| cooperation with the community in the case of network server software. | |||
| 0. You just DO WHAT THE FUCK YOU WANT TO. | |||
| The licenses for most software and other practical works are designed | |||
| to take away your freedom to share and change the works. By contrast, | |||
| our General Public Licenses are intended to guarantee your freedom to | |||
| share and change all versions of a program--to make sure it remains free | |||
| software for all its users. | |||
| When we speak of free software, we are referring to freedom, not | |||
| price. Our General Public Licenses are designed to make sure that you | |||
| have the freedom to distribute copies of free software (and charge for | |||
| them if you wish), that you receive source code or can get it if you | |||
| want it, that you can change the software or use pieces of it in new | |||
| free programs, and that you know you can do these things. | |||
| Developers that use our General Public Licenses protect your rights | |||
| with two steps: (1) assert copyright on the software, and (2) offer | |||
| you this License which gives you legal permission to copy, distribute | |||
| and/or modify the software. | |||
| A secondary benefit of defending all users' freedom is that | |||
| improvements made in alternate versions of the program, if they | |||
| receive widespread use, become available for other developers to | |||
| incorporate. Many developers of free software are heartened and | |||
| encouraged by the resulting cooperation. However, in the case of | |||
| software used on network servers, this result may fail to come about. | |||
| The GNU General Public License permits making a modified version and | |||
| letting the public access it on a server without ever releasing its | |||
| source code to the public. | |||
| The GNU Affero General Public License is designed specifically to | |||
| ensure that, in such cases, the modified source code becomes available | |||
| to the community. It requires the operator of a network server to | |||
| provide the source code of the modified version running there to the | |||
| users of that server. Therefore, public use of a modified version, on | |||
| a publicly accessible server, gives the public access to the source | |||
| code of the modified version. | |||
| An older license, called the Affero General Public License and | |||
| published by Affero, was designed to accomplish similar goals. This is | |||
| a different license, not a version of the Affero GPL, but Affero has | |||
| released a new version of the Affero GPL which permits relicensing under | |||
| this license. | |||
| The precise terms and conditions for copying, distribution and | |||
| modification follow. | |||
| TERMS AND CONDITIONS | |||
| 0. Definitions. | |||
| "This License" refers to version 3 of the GNU Affero General Public License. | |||
| "Copyright" also means copyright-like laws that apply to other kinds of | |||
| works, such as semiconductor masks. | |||
| "The Program" refers to any copyrightable work licensed under this | |||
| License. Each licensee is addressed as "you". "Licensees" and | |||
| "recipients" may be individuals or organizations. | |||
| To "modify" a work means to copy from or adapt all or part of the work | |||
| in a fashion requiring copyright permission, other than the making of an | |||
| exact copy. The resulting work is called a "modified version" of the | |||
| earlier work or a work "based on" the earlier work. | |||
| A "covered work" means either the unmodified Program or a work based | |||
| on the Program. | |||
| To "propagate" a work means to do anything with it that, without | |||
| permission, would make you directly or secondarily liable for | |||
| infringement under applicable copyright law, except executing it on a | |||
| computer or modifying a private copy. Propagation includes copying, | |||
| distribution (with or without modification), making available to the | |||
| public, and in some countries other activities as well. | |||
| To "convey" a work means any kind of propagation that enables other | |||
| parties to make or receive copies. Mere interaction with a user through | |||
| a computer network, with no transfer of a copy, is not conveying. | |||
| An interactive user interface displays "Appropriate Legal Notices" | |||
| to the extent that it includes a convenient and prominently visible | |||
| feature that (1) displays an appropriate copyright notice, and (2) | |||
| tells the user that there is no warranty for the work (except to the | |||
| extent that warranties are provided), that licensees may convey the | |||
| work under this License, and how to view a copy of this License. If | |||
| the interface presents a list of user commands or options, such as a | |||
| menu, a prominent item in the list meets this criterion. | |||
| 1. Source Code. | |||
| The "source code" for a work means the preferred form of the work | |||
| for making modifications to it. "Object code" means any non-source | |||
| form of a work. | |||
| A "Standard Interface" means an interface that either is an official | |||
| standard defined by a recognized standards body, or, in the case of | |||
| interfaces specified for a particular programming language, one that | |||
| is widely used among developers working in that language. | |||
| The "System Libraries" of an executable work include anything, other | |||
| than the work as a whole, that (a) is included in the normal form of | |||
| packaging a Major Component, but which is not part of that Major | |||
| Component, and (b) serves only to enable use of the work with that | |||
| Major Component, or to implement a Standard Interface for which an | |||
| implementation is available to the public in source code form. A | |||
| "Major Component", in this context, means a major essential component | |||
| (kernel, window system, and so on) of the specific operating system | |||
| (if any) on which the executable work runs, or a compiler used to | |||
| produce the work, or an object code interpreter used to run it. | |||
| The "Corresponding Source" for a work in object code form means all | |||
| the source code needed to generate, install, and (for an executable | |||
| work) run the object code and to modify the work, including scripts to | |||
| control those activities. However, it does not include the work's | |||
| System Libraries, or general-purpose tools or generally available free | |||
| programs which are used unmodified in performing those activities but | |||
| which are not part of the work. For example, Corresponding Source | |||
| includes interface definition files associated with source files for | |||
| the work, and the source code for shared libraries and dynamically | |||
| linked subprograms that the work is specifically designed to require, | |||
| such as by intimate data communication or control flow between those | |||
| subprograms and other parts of the work. | |||
| The Corresponding Source need not include anything that users | |||
| can regenerate automatically from other parts of the Corresponding | |||
| Source. | |||
| The Corresponding Source for a work in source code form is that | |||
| same work. | |||
| 2. Basic Permissions. | |||
| All rights granted under this License are granted for the term of | |||
| copyright on the Program, and are irrevocable provided the stated | |||
| conditions are met. This License explicitly affirms your unlimited | |||
| permission to run the unmodified Program. The output from running a | |||
| covered work is covered by this License only if the output, given its | |||
| content, constitutes a covered work. This License acknowledges your | |||
| rights of fair use or other equivalent, as provided by copyright law. | |||
| You may make, run and propagate covered works that you do not | |||
| convey, without conditions so long as your license otherwise remains | |||
| in force. You may convey covered works to others for the sole purpose | |||
| of having them make modifications exclusively for you, or provide you | |||
| with facilities for running those works, provided that you comply with | |||
| the terms of this License in conveying all material for which you do | |||
| not control copyright. Those thus making or running the covered works | |||
| for you must do so exclusively on your behalf, under your direction | |||
| and control, on terms that prohibit them from making any copies of | |||
| your copyrighted material outside their relationship with you. | |||
| Conveying under any other circumstances is permitted solely under | |||
| the conditions stated below. Sublicensing is not allowed; section 10 | |||
| makes it unnecessary. | |||
| 3. Protecting Users' Legal Rights From Anti-Circumvention Law. | |||
| No covered work shall be deemed part of an effective technological | |||
| measure under any applicable law fulfilling obligations under article | |||
| 11 of the WIPO copyright treaty adopted on 20 December 1996, or | |||
| similar laws prohibiting or restricting circumvention of such | |||
| measures. | |||
| When you convey a covered work, you waive any legal power to forbid | |||
| circumvention of technological measures to the extent such circumvention | |||
| is effected by exercising rights under this License with respect to | |||
| the covered work, and you disclaim any intention to limit operation or | |||
| modification of the work as a means of enforcing, against the work's | |||
| users, your or third parties' legal rights to forbid circumvention of | |||
| technological measures. | |||
| 4. Conveying Verbatim Copies. | |||
| You may convey verbatim copies of the Program's source code as you | |||
| receive it, in any medium, provided that you conspicuously and | |||
| appropriately publish on each copy an appropriate copyright notice; | |||
| keep intact all notices stating that this License and any | |||
| non-permissive terms added in accord with section 7 apply to the code; | |||
| keep intact all notices of the absence of any warranty; and give all | |||
| recipients a copy of this License along with the Program. | |||
| You may charge any price or no price for each copy that you convey, | |||
| and you may offer support or warranty protection for a fee. | |||
| 5. Conveying Modified Source Versions. | |||
| You may convey a work based on the Program, or the modifications to | |||
| produce it from the Program, in the form of source code under the | |||
| terms of section 4, provided that you also meet all of these conditions: | |||
| a) The work must carry prominent notices stating that you modified | |||
| it, and giving a relevant date. | |||
| b) The work must carry prominent notices stating that it is | |||
| released under this License and any conditions added under section | |||
| 7. This requirement modifies the requirement in section 4 to | |||
| "keep intact all notices". | |||
| c) You must license the entire work, as a whole, under this | |||
| License to anyone who comes into possession of a copy. This | |||
| License will therefore apply, along with any applicable section 7 | |||
| additional terms, to the whole of the work, and all its parts, | |||
| regardless of how they are packaged. This License gives no | |||
| permission to license the work in any other way, but it does not | |||
| invalidate such permission if you have separately received it. | |||
| d) If the work has interactive user interfaces, each must display | |||
| Appropriate Legal Notices; however, if the Program has interactive | |||
| interfaces that do not display Appropriate Legal Notices, your | |||
| work need not make them do so. | |||
| A compilation of a covered work with other separate and independent | |||
| works, which are not by their nature extensions of the covered work, | |||
| and which are not combined with it such as to form a larger program, | |||
| in or on a volume of a storage or distribution medium, is called an | |||
| "aggregate" if the compilation and its resulting copyright are not | |||
| used to limit the access or legal rights of the compilation's users | |||
| beyond what the individual works permit. Inclusion of a covered work | |||
| in an aggregate does not cause this License to apply to the other | |||
| parts of the aggregate. | |||
| 6. Conveying Non-Source Forms. | |||
| You may convey a covered work in object code form under the terms | |||
| of sections 4 and 5, provided that you also convey the | |||
| machine-readable Corresponding Source under the terms of this License, | |||
| in one of these ways: | |||
| a) Convey the object code in, or embodied in, a physical product | |||
| (including a physical distribution medium), accompanied by the | |||
| Corresponding Source fixed on a durable physical medium | |||
| customarily used for software interchange. | |||
| b) Convey the object code in, or embodied in, a physical product | |||
| (including a physical distribution medium), accompanied by a | |||
| written offer, valid for at least three years and valid for as | |||
| long as you offer spare parts or customer support for that product | |||
| model, to give anyone who possesses the object code either (1) a | |||
| copy of the Corresponding Source for all the software in the | |||
| product that is covered by this License, on a durable physical | |||
| medium customarily used for software interchange, for a price no | |||
| more than your reasonable cost of physically performing this | |||
| conveying of source, or (2) access to copy the | |||
| Corresponding Source from a network server at no charge. | |||
| c) Convey individual copies of the object code with a copy of the | |||
| written offer to provide the Corresponding Source. This | |||
| alternative is allowed only occasionally and noncommercially, and | |||
| only if you received the object code with such an offer, in accord | |||
| with subsection 6b. | |||
| d) Convey the object code by offering access from a designated | |||
| place (gratis or for a charge), and offer equivalent access to the | |||
| Corresponding Source in the same way through the same place at no | |||
| further charge. You need not require recipients to copy the | |||
| Corresponding Source along with the object code. If the place to | |||
| copy the object code is a network server, the Corresponding Source | |||
| may be on a different server (operated by you or a third party) | |||
| that supports equivalent copying facilities, provided you maintain | |||
| clear directions next to the object code saying where to find the | |||
| Corresponding Source. Regardless of what server hosts the | |||
| Corresponding Source, you remain obligated to ensure that it is | |||
| available for as long as needed to satisfy these requirements. | |||
| e) Convey the object code using peer-to-peer transmission, provided | |||
| you inform other peers where the object code and Corresponding | |||
| Source of the work are being offered to the general public at no | |||
| charge under subsection 6d. | |||
| A separable portion of the object code, whose source code is excluded | |||
| from the Corresponding Source as a System Library, need not be | |||
| included in conveying the object code work. | |||
| A "User Product" is either (1) a "consumer product", which means any | |||
| tangible personal property which is normally used for personal, family, | |||
| or household purposes, or (2) anything designed or sold for incorporation | |||
| into a dwelling. In determining whether a product is a consumer product, | |||
| doubtful cases shall be resolved in favor of coverage. For a particular | |||
| product received by a particular user, "normally used" refers to a | |||
| typical or common use of that class of product, regardless of the status | |||
| of the particular user or of the way in which the particular user | |||
| actually uses, or expects or is expected to use, the product. A product | |||
| is a consumer product regardless of whether the product has substantial | |||
| commercial, industrial or non-consumer uses, unless such uses represent | |||
| the only significant mode of use of the product. | |||
| "Installation Information" for a User Product means any methods, | |||
| procedures, authorization keys, or other information required to install | |||
| and execute modified versions of a covered work in that User Product from | |||
| a modified version of its Corresponding Source. The information must | |||
| suffice to ensure that the continued functioning of the modified object | |||
| code is in no case prevented or interfered with solely because | |||
| modification has been made. | |||
| If you convey an object code work under this section in, or with, or | |||
| specifically for use in, a User Product, and the conveying occurs as | |||
| part of a transaction in which the right of possession and use of the | |||
| User Product is transferred to the recipient in perpetuity or for a | |||
| fixed term (regardless of how the transaction is characterized), the | |||
| Corresponding Source conveyed under this section must be accompanied | |||
| by the Installation Information. But this requirement does not apply | |||
| if neither you nor any third party retains the ability to install | |||
| modified object code on the User Product (for example, the work has | |||
| been installed in ROM). | |||
| The requirement to provide Installation Information does not include a | |||
| requirement to continue to provide support service, warranty, or updates | |||
| for a work that has been modified or installed by the recipient, or for | |||
| the User Product in which it has been modified or installed. Access to a | |||
| network may be denied when the modification itself materially and | |||
| adversely affects the operation of the network or violates the rules and | |||
| protocols for communication across the network. | |||
| Corresponding Source conveyed, and Installation Information provided, | |||
| in accord with this section must be in a format that is publicly | |||
| documented (and with an implementation available to the public in | |||
| source code form), and must require no special password or key for | |||
| unpacking, reading or copying. | |||
| 7. Additional Terms. | |||
| "Additional permissions" are terms that supplement the terms of this | |||
| License by making exceptions from one or more of its conditions. | |||
| Additional permissions that are applicable to the entire Program shall | |||
| be treated as though they were included in this License, to the extent | |||
| that they are valid under applicable law. If additional permissions | |||
| apply only to part of the Program, that part may be used separately | |||
| under those permissions, but the entire Program remains governed by | |||
| this License without regard to the additional permissions. | |||
| When you convey a copy of a covered work, you may at your option | |||
| remove any additional permissions from that copy, or from any part of | |||
| it. (Additional permissions may be written to require their own | |||
| removal in certain cases when you modify the work.) You may place | |||
| additional permissions on material, added by you to a covered work, | |||
| for which you have or can give appropriate copyright permission. | |||
| Notwithstanding any other provision of this License, for material you | |||
| add to a covered work, you may (if authorized by the copyright holders of | |||
| that material) supplement the terms of this License with terms: | |||
| a) Disclaiming warranty or limiting liability differently from the | |||
| terms of sections 15 and 16 of this License; or | |||
| b) Requiring preservation of specified reasonable legal notices or | |||
| author attributions in that material or in the Appropriate Legal | |||
| Notices displayed by works containing it; or | |||
| c) Prohibiting misrepresentation of the origin of that material, or | |||
| requiring that modified versions of such material be marked in | |||
| reasonable ways as different from the original version; or | |||
| d) Limiting the use for publicity purposes of names of licensors or | |||
| authors of the material; or | |||
| e) Declining to grant rights under trademark law for use of some | |||
| trade names, trademarks, or service marks; or | |||
| f) Requiring indemnification of licensors and authors of that | |||
| material by anyone who conveys the material (or modified versions of | |||
| it) with contractual assumptions of liability to the recipient, for | |||
| any liability that these contractual assumptions directly impose on | |||
| those licensors and authors. | |||
| All other non-permissive additional terms are considered "further | |||
| restrictions" within the meaning of section 10. If the Program as you | |||
| received it, or any part of it, contains a notice stating that it is | |||
| governed by this License along with a term that is a further | |||
| restriction, you may remove that term. If a license document contains | |||
| a further restriction but permits relicensing or conveying under this | |||
| License, you may add to a covered work material governed by the terms | |||
| of that license document, provided that the further restriction does | |||
| not survive such relicensing or conveying. | |||
| If you add terms to a covered work in accord with this section, you | |||
| must place, in the relevant source files, a statement of the | |||
| additional terms that apply to those files, or a notice indicating | |||
| where to find the applicable terms. | |||
| Additional terms, permissive or non-permissive, may be stated in the | |||
| form of a separately written license, or stated as exceptions; | |||
| the above requirements apply either way. | |||
| 8. Termination. | |||
| You may not propagate or modify a covered work except as expressly | |||
| provided under this License. Any attempt otherwise to propagate or | |||
| modify it is void, and will automatically terminate your rights under | |||
| this License (including any patent licenses granted under the third | |||
| paragraph of section 11). | |||
| However, if you cease all violation of this License, then your | |||
| license from a particular copyright holder is reinstated (a) | |||
| provisionally, unless and until the copyright holder explicitly and | |||
| finally terminates your license, and (b) permanently, if the copyright | |||
| holder fails to notify you of the violation by some reasonable means | |||
| prior to 60 days after the cessation. | |||
| Moreover, your license from a particular copyright holder is | |||
| reinstated permanently if the copyright holder notifies you of the | |||
| violation by some reasonable means, this is the first time you have | |||
| received notice of violation of this License (for any work) from that | |||
| copyright holder, and you cure the violation prior to 30 days after | |||
| your receipt of the notice. | |||
| Termination of your rights under this section does not terminate the | |||
| licenses of parties who have received copies or rights from you under | |||
| this License. If your rights have been terminated and not permanently | |||
| reinstated, you do not qualify to receive new licenses for the same | |||
| material under section 10. | |||
| 9. Acceptance Not Required for Having Copies. | |||
| You are not required to accept this License in order to receive or | |||
| run a copy of the Program. Ancillary propagation of a covered work | |||
| occurring solely as a consequence of using peer-to-peer transmission | |||
| to receive a copy likewise does not require acceptance. However, | |||
| nothing other than this License grants you permission to propagate or | |||
| modify any covered work. These actions infringe copyright if you do | |||
| not accept this License. Therefore, by modifying or propagating a | |||
| covered work, you indicate your acceptance of this License to do so. | |||
| 10. Automatic Licensing of Downstream Recipients. | |||
| Each time you convey a covered work, the recipient automatically | |||
| receives a license from the original licensors, to run, modify and | |||
| propagate that work, subject to this License. You are not responsible | |||
| for enforcing compliance by third parties with this License. | |||
| An "entity transaction" is a transaction transferring control of an | |||
| organization, or substantially all assets of one, or subdividing an | |||
| organization, or merging organizations. If propagation of a covered | |||
| work results from an entity transaction, each party to that | |||
| transaction who receives a copy of the work also receives whatever | |||
| licenses to the work the party's predecessor in interest had or could | |||
| give under the previous paragraph, plus a right to possession of the | |||
| Corresponding Source of the work from the predecessor in interest, if | |||
| the predecessor has it or can get it with reasonable efforts. | |||
| You may not impose any further restrictions on the exercise of the | |||
| rights granted or affirmed under this License. For example, you may | |||
| not impose a license fee, royalty, or other charge for exercise of | |||
| rights granted under this License, and you may not initiate litigation | |||
| (including a cross-claim or counterclaim in a lawsuit) alleging that | |||
| any patent claim is infringed by making, using, selling, offering for | |||
| sale, or importing the Program or any portion of it. | |||
| 11. Patents. | |||
| A "contributor" is a copyright holder who authorizes use under this | |||
| License of the Program or a work on which the Program is based. The | |||
| work thus licensed is called the contributor's "contributor version". | |||
| A contributor's "essential patent claims" are all patent claims | |||
| owned or controlled by the contributor, whether already acquired or | |||
| hereafter acquired, that would be infringed by some manner, permitted | |||
| by this License, of making, using, or selling its contributor version, | |||
| but do not include claims that would be infringed only as a | |||
| consequence of further modification of the contributor version. For | |||
| purposes of this definition, "control" includes the right to grant | |||
| patent sublicenses in a manner consistent with the requirements of | |||
| this License. | |||
| Each contributor grants you a non-exclusive, worldwide, royalty-free | |||
| patent license under the contributor's essential patent claims, to | |||
| make, use, sell, offer for sale, import and otherwise run, modify and | |||
| propagate the contents of its contributor version. | |||
| In the following three paragraphs, a "patent license" is any express | |||
| agreement or commitment, however denominated, not to enforce a patent | |||
| (such as an express permission to practice a patent or covenant not to | |||
| sue for patent infringement). To "grant" such a patent license to a | |||
| party means to make such an agreement or commitment not to enforce a | |||
| patent against the party. | |||
| If you convey a covered work, knowingly relying on a patent license, | |||
| and the Corresponding Source of the work is not available for anyone | |||
| to copy, free of charge and under the terms of this License, through a | |||
| publicly available network server or other readily accessible means, | |||
| then you must either (1) cause the Corresponding Source to be so | |||
| available, or (2) arrange to deprive yourself of the benefit of the | |||
| patent license for this particular work, or (3) arrange, in a manner | |||
| consistent with the requirements of this License, to extend the patent | |||
| license to downstream recipients. "Knowingly relying" means you have | |||
| actual knowledge that, but for the patent license, your conveying the | |||
| covered work in a country, or your recipient's use of the covered work | |||
| in a country, would infringe one or more identifiable patents in that | |||
| country that you have reason to believe are valid. | |||
| If, pursuant to or in connection with a single transaction or | |||
| arrangement, you convey, or propagate by procuring conveyance of, a | |||
| covered work, and grant a patent license to some of the parties | |||
| receiving the covered work authorizing them to use, propagate, modify | |||
| or convey a specific copy of the covered work, then the patent license | |||
| you grant is automatically extended to all recipients of the covered | |||
| work and works based on it. | |||
| A patent license is "discriminatory" if it does not include within | |||
| the scope of its coverage, prohibits the exercise of, or is | |||
| conditioned on the non-exercise of one or more of the rights that are | |||
| specifically granted under this License. You may not convey a covered | |||
| work if you are a party to an arrangement with a third party that is | |||
| in the business of distributing software, under which you make payment | |||
| to the third party based on the extent of your activity of conveying | |||
| the work, and under which the third party grants, to any of the | |||
| parties who would receive the covered work from you, a discriminatory | |||
| patent license (a) in connection with copies of the covered work | |||
| conveyed by you (or copies made from those copies), or (b) primarily | |||
| for and in connection with specific products or compilations that | |||
| contain the covered work, unless you entered into that arrangement, | |||
| or that patent license was granted, prior to 28 March 2007. | |||
| Nothing in this License shall be construed as excluding or limiting | |||
| any implied license or other defenses to infringement that may | |||
| otherwise be available to you under applicable patent law. | |||
| 12. No Surrender of Others' Freedom. | |||
| If conditions are imposed on you (whether by court order, agreement or | |||
| otherwise) that contradict the conditions of this License, they do not | |||
| excuse you from the conditions of this License. If you cannot convey a | |||
| covered work so as to satisfy simultaneously your obligations under this | |||
| License and any other pertinent obligations, then as a consequence you may | |||
| not convey it at all. For example, if you agree to terms that obligate you | |||
| to collect a royalty for further conveying from those to whom you convey | |||
| the Program, the only way you could satisfy both those terms and this | |||
| License would be to refrain entirely from conveying the Program. | |||
| 13. Remote Network Interaction; Use with the GNU General Public License. | |||
| Notwithstanding any other provision of this License, if you modify the | |||
| Program, your modified version must prominently offer all users | |||
| interacting with it remotely through a computer network (if your version | |||
| supports such interaction) an opportunity to receive the Corresponding | |||
| Source of your version by providing access to the Corresponding Source | |||
| from a network server at no charge, through some standard or customary | |||
| means of facilitating copying of software. This Corresponding Source | |||
| shall include the Corresponding Source for any work covered by version 3 | |||
| of the GNU General Public License that is incorporated pursuant to the | |||
| following paragraph. | |||
| Notwithstanding any other provision of this License, you have | |||
| permission to link or combine any covered work with a work licensed | |||
| under version 3 of the GNU General Public License into a single | |||
| combined work, and to convey the resulting work. The terms of this | |||
| License will continue to apply to the part which is the covered work, | |||
| but the work with which it is combined will remain governed by version | |||
| 3 of the GNU General Public License. | |||
| 14. Revised Versions of this License. | |||
| The Free Software Foundation may publish revised and/or new versions of | |||
| the GNU Affero General Public License from time to time. Such new versions | |||
| will be similar in spirit to the present version, but may differ in detail to | |||
| address new problems or concerns. | |||
| Each version is given a distinguishing version number. If the | |||
| Program specifies that a certain numbered version of the GNU Affero General | |||
| Public License "or any later version" applies to it, you have the | |||
| option of following the terms and conditions either of that numbered | |||
| version or of any later version published by the Free Software | |||
| Foundation. If the Program does not specify a version number of the | |||
| GNU Affero General Public License, you may choose any version ever published | |||
| by the Free Software Foundation. | |||
| If the Program specifies that a proxy can decide which future | |||
| versions of the GNU Affero General Public License can be used, that proxy's | |||
| public statement of acceptance of a version permanently authorizes you | |||
| to choose that version for the Program. | |||
| Later license versions may give you additional or different | |||
| permissions. However, no additional obligations are imposed on any | |||
| author or copyright holder as a result of your choosing to follow a | |||
| later version. | |||
| 15. Disclaimer of Warranty. | |||
| THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | |||
| APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | |||
| HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | |||
| OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | |||
| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |||
| PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | |||
| IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | |||
| ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | |||
| 16. Limitation of Liability. | |||
| IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | |||
| THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | |||
| GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | |||
| USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | |||
| DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | |||
| PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | |||
| EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | |||
| SUCH DAMAGES. | |||
| 17. Interpretation of Sections 15 and 16. | |||
| If the disclaimer of warranty and limitation of liability provided | |||
| above cannot be given local legal effect according to their terms, | |||
| reviewing courts shall apply local law that most closely approximates | |||
| an absolute waiver of all civil liability in connection with the | |||
| Program, unless a warranty or assumption of liability accompanies a | |||
| copy of the Program in return for a fee. | |||
| END OF TERMS AND CONDITIONS | |||
| How to Apply These Terms to Your New Programs | |||
| If you develop a new program, and you want it to be of the greatest | |||
| possible use to the public, the best way to achieve this is to make it | |||
| free software which everyone can redistribute and change under these terms. | |||
| To do so, attach the following notices to the program. It is safest | |||
| to attach them to the start of each source file to most effectively | |||
| state the exclusion of warranty; and each file should have at least | |||
| the "copyright" line and a pointer to where the full notice is found. | |||
| <one line to give the program's name and a brief idea of what it does.> | |||
| Copyright (C) <year> <name of author> | |||
| This program is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| This program is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| Also add information on how to contact you by electronic and paper mail. | |||
| If your software can interact with users remotely through a computer | |||
| network, you should also make sure that it provides a way for users to | |||
| get its source. For example, if your program is a web application, its | |||
| interface could display a "Source" link that leads users to an archive | |||
| of the code. There are many ways you could offer source, and different | |||
| solutions will be better for different programs; see section 13 for the | |||
| specific requirements. | |||
| You should also get your employer (if you work as a programmer) or school, | |||
| if any, to sign a "copyright disclaimer" for the program, if necessary. | |||
| For more information on this, and how to apply and follow the GNU AGPL, see | |||
| <https://www.gnu.org/licenses/>. | |||
| @@ -1,91 +1,75 @@ | |||
| # After Dark | |||
| <img | |||
| alt="After Dark" | |||
| src="https://git.habd.as/comfusion/after-dark/raw/branch/master/static/images/logo-dark.png" | |||
| width="358"> | |||
| > After Dark is free and open-source software you can use to create a website, blog or app. Utilize the world's fastest framework for building websites and design your entire site right inside the terminal. | |||
| **Hugo Dark Theme Site Generator** | |||
| <br>[Docs](https://after-dark.habd.as) • [Releases](https://git.habd.as/comfusion/after-dark/releases) • [Community](https://t.me/afterdarkhugo) | |||
| ## After Dark | |||
| [](https://www.npmjs.com/package/after-dark) | |||
| [](https://www.npmjs.com/package/after-dark) | |||
| [](https://gohugo.io) | |||
| [](https://git.habd.as/comfusion/after-dark/src/branch/master/COPYING) | |||
| [](https://t.me/comfusion) | |||
| [](https://keybase.io/jhabdas) | |||
| [](https://gohugo.io) | |||
| [](https://after-dark.habd.as/#chat) | |||
| [](https://git.habd.as/comfusion/after-dark/src/branch/master/COPYING) | |||
| One command is all you need to start a new website: | |||
| ```sh | |||
| wget -qO - https://go.habd.as/after-dark | sh | |||
| ``` | |||
| **After Dark** is an extensible, robust templating system for [Hugo](https://gohugo.io) written from the ground up for speed, privacy and security. | |||
| ## Features | |||
| - [Streamlined Workflow](https://after-dark.habd.as/#feature-workflow) – cross-platform, 1 dependency, single-codebase | |||
| - [Unparalleled Speed](https://after-dark.habd.as/#feature-speed) – ~0.615s builds, decisecond page loads | |||
| - [Advanced Graphics](https://after-dark.habd.as/#feature-graphics) – responsive post images with lqip | |||
| - [Rewards System](https://after-dark.habd.as/#feature-rewards) – monetize attention and earn borderless income | |||
| - [Fuzzy Search](https://after-dark.habd.as/#feature-search) – automatic indexing and no third-parties | |||
| - [Easily Customized](https://after-dark.habd.as/#feature-customize) – change skins, strip styles, create layouts | |||
| - [Securely Designed](https://after-dark.habd.as/#feature-security) – csp, referrer policy, release hashes | |||
| - [Privacy Focused](https://after-dark.habd.as/#feature-privacy) – no cookies and no external requests, ephemeral ssh hosting | |||
| Click a link below to learn more: | |||
| - **[Developer Focused](https://after-dark.habd.as/#feature-workflow)**: Cross-platform, 1 dependency, single-codebase. | |||
| - **[Incredibly Fast](https://after-dark.habd.as/#feature-speed)**: ~0.615s builds and decisecond page loads. | |||
| - **[Privacy Aware](https://after-dark.habd.as/#feature-privacy)**: No cookies, no external requests, ephemeral hosting. | |||
| - **[Securely Designed](https://after-dark.habd.as/#feature-security)**: Source-level integrity, content security and more. | |||
| - **[Advanced Graphics](https://after-dark.habd.as/#feature-graphics)**: Silky-smooth post and homepage images. | |||
| - **[Easily Customized](https://after-dark.habd.as/#feature-customize)**: Easily modify website look-and-feel. | |||
| - **[Fuzzy Search](https://after-dark.habd.as/#feature-search)**: Offline, automatic and no third-parties. | |||
| - **[Rewards System](https://after-dark.habd.as/#feature-rewards)**: Earn rewards for keeping your software up-to-date. | |||
| - **[Batteries Included](https://after-dark.habd.as/#feature-extras)**: Integrate with Gitea, k8s, Traefik and Fathom. | |||
| - **[Extended Builds](https://after-dark.habd.as/#feature-builds)**: Create high-performance Hugo builds with integrated Sass support. | |||
| ## Screenshot | |||
| [](https://after-dark.habd.as) | |||
| ## Demo | |||
| Click a screenshot to view a live demo of the functionality. | |||
| <table> | |||
| <tr> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/after-dark-v6.15.0-homepage-fs8.png"> | |||
| </a> | |||
| </td> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/feature/svg-favicon/"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/feature-online-help-fs8.png"> | |||
| </a> | |||
| </td> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/404.html"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/feature-error-page-fs8.png"> | |||
| </a> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| <th scope="col"><center>Help Docs</center></th> | |||
| <th scope="col"><center>SVG Favicon</center></th> | |||
| <th scope="col"><center>404 Page</center></th> | |||
| </tr> | |||
| </table> | |||
| <table> | |||
| <tr> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/module/toxic-swamp/"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/module-toxic-swamp-fs8.png"> | |||
| </a> | |||
| </td> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/shortcode/button/"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/shortcode-button-fs8.png"> | |||
| </a> | |||
| </td> | |||
| <td> | |||
| <a href="https://after-dark.habd.as/extra/high-tea/"> | |||
| <img alt src="https://after-dark.habd.as/images/screenshots/extra-high-tea-fs8.png"> | |||
| </a> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| <th scope="col"><center>Add-on Modules</center></th> | |||
| <th scope="col"><center>Form Controls</center></th> | |||
| <th scope="col"><center>IndieWeb Extras</center></th> | |||
| </tr> | |||
| </table> | |||
| Visit the [official docs](https://after-dark.habd.as) for demo and documentation. For an example site see [habd.as](https://habd.as). Additional examples listed in the source repository Wiki. | |||
| ## Getting Started | |||
| Please [Install Hugo](https://gohugo.io/getting-started/installing) `0.44` or greater before getting started. | |||
| [Install Hugo](https://gohugo.io/getting-started/installing) `0.51` or greater on your machine before getting started unless starting with [After Dark K3s](https://after-dark.habd.as/extra/after-dark-k3s) or creating an [Extended Build](https://after-dark.habd.as/#feature-builds). | |||
| ### Installation | |||
| For scripted installation use [Quick Install](https://after-dark.habd.as/feature/quick-install/). Otherwise download a copy and: | |||
| For fastest installation use the provided [Quick Install](https://after-dark.habd.as/feature/quick-install/) script. Quick Install is ideal for first-time users and does not require use of git. Use it to automatically set-up, configure and run a sample After Dark website you may re-purpose as your own. | |||
| By convention After Dark may be used with an existing Hugo site by git cloning to or adding as a submodule of the `themes` directory: | |||
| ```sh | |||
| hugo serve --theme after-dark | |||
| flying-toasters | |||
| ├── static | |||
| └── themes | |||
| └── after-dark # the clone or submodule | |||
| ``` | |||
| See [Install a Single Theme](https://gohugo.io/themes/installing-and-using-themes/#install-a-single-theme) on the Hugo docs site for further instructions. | |||
| After Dark releases are tagged in git and [packaged on NPM](https://www.npmjs.com/package/after-dark). Use the NPM package to integrate After Dark into existing workflows. | |||
| ### Usage | |||
| Review the [Online Help](https://after-dark.habd.as/feature/online-help/) to learn how to set-up and customize After Dark. Docs included with installation and may be served locally. | |||
| ### Upgrading | |||
| Run the [Upgrade Script](https://after-dark.habd.as/feature/upgrade-script/) to check for updates and upgrade automatically: | |||
| @@ -94,20 +78,29 @@ Run the [Upgrade Script](https://after-dark.habd.as/feature/upgrade-script/) to | |||
| ./themes/after-dark/bin/upgrade | |||
| ``` | |||
| ## Verifying | |||
| Upgrading replaces the file contents of the theme as a whole for security reasons. If you wish to modify the source please create a fork. | |||
| ### Verifying | |||
| If installed or upgraded via script you may use the [Release Validator](https://after-dark.habd.as/validate/) to verify you're running a PGP-signed and SHA-verified release. Integrity is checked at the source level and may be performed offline. See [Release Hashes](https://after-dark.habd.as/feature/release-hashes/) for more info. | |||
| ## Usage | |||
| ## Credits | |||
| Special thanks to エゴイスト for [hackcss](https://git.habd.as/jhabdas/hack), Dan Klammer for the [bytesize icons](https://git.habd.as/comfusion/bytesize-icons) and Vincent Prouillet for the [Zola port](https://www.getzola.org/themes/after-dark/). | |||
| Use the included [Online Help](https://after-dark.habd.as/feature/online-help/) to learn how to set-up and use After Dark. Help docs may be served locally and do not require an Internet connection to function. | |||
| ## Rights | |||
| ## Credits | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| Special thanks to エゴイスト for [hackcss](https://git.habd.as/comfusion/hack), Dan Klammer for the [bytesize icons](https://git.habd.as/comfusion/bytesize-icons) and Vincent Prouillet for the [Zola port](https://www.getzola.org/themes/after-dark/). | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published | |||
| by the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| ## License | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| This work is free. You can redistribute it and/or modify it under the | |||
| terms of the Do What The Fuck You Want To Public License, Version 2, | |||
| as published by Sam Hocevar. The full text of the license is included in the file COPYING in the source. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| @@ -1,6 +1,29 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| +++ | |||
| title = "{{ replace .TranslationBaseName "-" " " | title }}" | |||
| date = {{ .Date }} | |||
| description = "This text is displayed in search result listings." | |||
| draft = true | |||
| [[copyright]] | |||
| owner = "{{ .Site.Params.author | default .Site.Title }}" | |||
| date = "{{ now.Format "2006" }}" | |||
| license = "cc-by-nd-4.0" | |||
| +++ | |||
| @@ -1,3 +1,22 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| +++ | |||
| title = "{{ replace .TranslationBaseName "-" " " | title }}" | |||
| date = {{ .Date }} | |||
| @@ -9,6 +28,10 @@ tags = ["after", "dark"] | |||
| images = [ | |||
| "https://source.unsplash.com/collection/983219/1600x900" | |||
| ] # overrides site-wide open graph image | |||
| [[copyright]] | |||
| owner = "{{ .Site.Params.author | default .Site.Title }}" | |||
| date = "{{ now.Format "2006" }}" | |||
| license = "cc-by-nc-sa-4.0" | |||
| +++ | |||
| Before continuing please create a post archetype. Archetypes are located within markdown files in the `archetypes` directory of your site: | |||
| @@ -1,15 +1,35 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| +++ | |||
| title = "Search" # title of the page | |||
| layout = "search" # sets the layout to use | |||
| noindex = true # tell robots not to index | |||
| [form] | |||
| helpblock = "Press <kbd>s</kbd> to focus input anytime." | |||
| helpblock = "Press <kbd>/</kbd> or <kbd>s</kbd> to modify your search." | |||
| hotkeys = ["/", "s"] | |||
| [form.input] | |||
| placeholder = "Enter search query…" | |||
| placeholder = "uzzy searvh" | |||
| disabled = false | |||
| [security.csp.directives] | |||
| scriptSrc = [ | |||
| "'sha512-Bxby9zhln4Zc2thGA1E9CdT4qcCY52SxO/SBxAH6qQK6LK6/1gGq1xJ3Uz0SXTsPSL6quze7bYQUHr94xJS7jQ=='", | |||
| "'sha512-6G7cmlXR4eLBphfUmmEWLEnLWSEtZPdKP2xv7bXZ8D3LReZazwxcwb4tTx2HeCeoAChG5ZCE+UqHmbe3K4xoJg=='", | |||
| "'unsafe-eval'" | |||
| ] | |||
| +++ | |||
| @@ -0,0 +1,46 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| ul.thumbnail.grid { | |||
| margin: 10px -10px; | |||
| } | |||
| ul.thumbnail.grid li { | |||
| padding: 10px; | |||
| margin-bottom: 10px; | |||
| } | |||
| ul.thumbnail.grid li h2 { | |||
| margin-bottom: 1rem; | |||
| } | |||
| ul.thumbnail.grid li a:hover figure { | |||
| filter: brightness(1.1); | |||
| } | |||
| ul.thumbnail.grid li a figure > img { | |||
| border-radius: 2px; | |||
| } | |||
| .hack ul.thumbnail.grid li h2::before { | |||
| content: initial; | |||
| } | |||
| .hack ul.thumbnail.grid li::after { | |||
| content: initial; | |||
| } | |||
| .standard ul.thumbnail.grid { | |||
| padding-left: 0px; | |||
| list-style-type: none; | |||
| display: flex; | |||
| } | |||
| @@ -0,0 +1,35 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| .hack header figure[itemtype*="ImageObject"] { | |||
| position: relative; | |||
| } | |||
| .hack header figure[itemtype*="ImageObject"] figcaption { | |||
| position: absolute; | |||
| bottom: 0; | |||
| right: 0; | |||
| text-align: right; | |||
| padding: 15px; | |||
| font-style: oblique; | |||
| font-size: smaller; | |||
| mix-blend-mode: soft-light; | |||
| } | |||
| .hack header figure[itemtype*="ImageObject"] [itemprop="headline"] { | |||
| font-weight: bold; | |||
| } | |||
| @@ -0,0 +1,25 @@ | |||
| {{/* | |||
| Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| This file is part of After Dark. | |||
| After Dark is free software: you can redistribute it and/or modify | |||
| it under the terms of the GNU Affero General Public License as published by | |||
| the Free Software Foundation, either version 3 of the License, or | |||
| (at your option) any later version. | |||
| After Dark is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Affero General Public License for more details. | |||
| You should have received a copy of the GNU Affero General Public License | |||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ -}} | |||
| [v-cloak] .js-cloaked { | |||
| display: none; | |||
| } | |||
| [v-cloak] .js-initializing::after { | |||
| content: "Initializing search. Please wait..." | |||
| } | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| a[rel*="external"]::after { | |||
| content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23ff9800'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E"); | |||
| } | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| :root { | |||
| scroll-behavior: smooth; | |||
| --screen-size-small: 30em; /* breakpoint reference only */ | |||
| @@ -5,25 +24,31 @@ | |||
| @keyframes intro { | |||
| 0% { opacity: 0 } 100% { opacity: 1 } | |||
| } | |||
| .blur-up { | |||
| -webkit-filter: blur(5px); | |||
| .blur-up.lazyloading { | |||
| filter: blur(5px); | |||
| transition: filter 400ms, -webkit-filter 400ms; | |||
| opacity: 1; | |||
| transition: opacity 1s, filter 1.5s; | |||
| } | |||
| .blur-up.lazyload { | |||
| opacity: 0; | |||
| filter: blur(10px); | |||
| } | |||
| .blur-up.lazyloaded { | |||
| -webkit-filter: blur(0); | |||
| filter: blur(0); | |||
| transition: filter 1s; | |||
| } | |||
| .hack .readmore { | |||
| margin-bottom: 2.2em; | |||
| } | |||
| .responsive-iframe { | |||
| .responsive-iframe, | |||
| .ratio-container { | |||
| position: relative; | |||
| padding-bottom: 56.25%; /* 16:9 */ | |||
| padding-bottom: 56.25%; /* 16:9 = 56.25% = calc(9 / 16 * 100%) */ | |||
| padding-top: 25px; | |||
| height: 0; | |||
| } | |||
| .responsive-iframe iframe { | |||
| .responsive-iframe iframe, | |||
| .ratio-container > *:not([itemprop="caption"]) { | |||
| position: absolute; | |||
| top: 0; | |||
| left: 0; | |||
| @@ -38,7 +63,7 @@ main, footer { | |||
| animation-delay: 0.15s; | |||
| } | |||
| header:first-of-type + details { | |||
| margin-top: 1rem; | |||
| margin: 20px 0; | |||
| } | |||
| footer time[datetime$="M"]:before { | |||
| content: "\2013\0020"; | |||
| @@ -63,9 +88,6 @@ blockquote cite::before { | |||
| :disabled { | |||
| cursor: not-allowed; | |||
| } | |||
| #search-app [v-cloak] { | |||
| display: none; | |||
| } | |||
| /* hack.css overrides and enhancements */ | |||
| .hack li ul { | |||
| margin: 0; | |||
| @@ -115,7 +137,8 @@ html { | |||
| .hack blockquote:after { | |||
| line-height: 1.5; | |||
| } | |||
| .hack figure { | |||
| .hack figure, | |||
| .standard figure { | |||
| margin: unset; | |||
| } | |||
| .hack figure a { | |||
| @@ -124,10 +147,6 @@ html { | |||
| .hack figure a:hover { | |||
| background-color: inherit; | |||
| } | |||
| article [itemprop="description"] { | |||
| margin-bottom: 20px; | |||
| margin-top: 20px; | |||
| } | |||
| article header img { | |||
| width: 100%; | |||
| border-radius: 3px; | |||
| @@ -144,9 +163,14 @@ img { | |||
| @media only screen and (min-width: 768px) { | |||
| html { | |||
| font-size: 16px; | |||
| margin-left: calc(100vw - 100%); | |||
| } | |||
| .container { | |||
| max-width: 50rem; | |||
| } | |||
| } | |||
| @media only screen and (min-width: 768px), (-ms-high-contrast: active), (-ms-high-contrast: none) { | |||
| /* @see http://browserhacks.com/#hack-28f493d247a12ab654f6c3637f6978d5 */ | |||
| html { | |||
| margin-left: calc(100vw - 100%); /* @see https://aykevl.nl/2014/09/fix-jumping-scrollbar */ | |||
| } | |||
| } | |||
| @@ -0,0 +1,21 @@ | |||
| The MIT License (MIT) | |||
| Copyright (c) 2016 EGOIST [email protected] | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in | |||
| all copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
| THE SOFTWARE. | |||
| @@ -1 +1,20 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject(["{{ "/js/lazysizes.min.js" | relURL }}"]); | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| fetchInject([ | |||
| "{{ "/js/vue.min.js" | relURL }}", | |||
| "{{ "/js/lodash.custom.min.js" | relURL }}", | |||
| @@ -12,6 +31,7 @@ fetchInject([ | |||
| ).replace(/\+/g, ' '); | |||
| const queryParam = 's'; | |||
| const hotkeys = {{ (.Params.form.hotkeys | default (slice "/" "s")) | jsonify }}; | |||
| const selectors = { | |||
| appContainer: '#search-app', | |||
| resultContainer: '#search-results', | |||
| @@ -46,7 +66,7 @@ fetchInject([ | |||
| const getUrl = (query) => { | |||
| const encodedQuery = encodeURIComponent(query); | |||
| const url = "{{ .URL }}"; | |||
| const url = "{{ .RelPermalink }}"; | |||
| return (encodedQuery) | |||
| ? `${url}?${queryParam}=${encodedQuery}` | |||
| : url; | |||
| @@ -72,8 +92,14 @@ fetchInject([ | |||
| window.onpopstate = (evt) => { | |||
| this.query = evt.state.query; | |||
| }; | |||
| document.onkeyup = function (evt) { | |||
| evt.key === 's' && focusSearchInput(); | |||
| const searchInput = getSearchInput(); | |||
| document.onkeydown = function (evt) { | |||
| if (evt.target === searchInput) return; | |||
| if (hotkeys.includes(evt.key)) { | |||
| evt.preventDefault(); | |||
| focusSearchInput(); | |||
| getSearchInput().select(); | |||
| }; | |||
| } | |||
| focusSearchInput(); | |||
| }, | |||
| @@ -1,2 +1,2 @@ | |||
| /*! Fetch Inject v2.0.2 | Copyright (C) 2017–2018 Josh Habdas <[email protected]> | @license Zlib */ | |||
| /*! Fetch Inject v2.0.4 | Copyright (C) Josh Habdas <[email protected]> (https://habd.as) | @license Zlib */ | |||
| var fetchInject=function(){"use strict";const e=function(e,t,r,n,o,c,i){c=t.createElement(r),i=t.getElementsByTagName(r)[0],c.appendChild(t.createTextNode(n.text)),c.onload=o(n),i?i.parentNode.insertBefore(c,i):t.head.appendChild(c)};return function(t,r){if(!arguments.length)return Promise.reject(new ReferenceError("Failed to execute 'fetchInject': 1 argument required but only 0 present."));if(arguments[0]&&arguments[0].constructor!==Array)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 1 must be of type 'Array'."));if(arguments[1]&&arguments[1].constructor!==Promise)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 2 must be of type 'Promise'."));const n=[],o=r?[].concat(r):[],c=[];return t.forEach(e=>o.push(window.fetch(e).then(e=>[e.clone().text(),e.blob()]).then(e=>Promise.all(e).then(e=>{n.push({text:e[0],blob:e[1]})})))),Promise.all(o).then(()=>(n.forEach(t=>{c.push({then:r=>{t.blob.type.includes("text/css")?e(window,document,"style",t,r):e(window,document,"script",t,r)}})}),Promise.all(c)))}}(); | |||
| @@ -1,5 +1,24 @@ | |||
| #!/bin/sh | |||
| # | |||
| # Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| # | |||
| # This file is part of After Dark. | |||
| # | |||
| # After Dark is free software: you can redistribute it and/or modify | |||
| # it under the terms of the GNU Affero General Public License as published | |||
| # by the Free Software Foundation, either version 3 of the License, or | |||
| # (at your option) any later version. | |||
| # | |||
| # After Dark is distributed in the hope that it will be useful, | |||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| # GNU Affero General Public License for more details. | |||
| # | |||
| # You should have received a copy of the GNU Affero General Public License | |||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| THEME_PATH=themes/after-dark | |||
| echo "Starting help server ..." | |||
| @@ -1,15 +1,34 @@ | |||
| #!/bin/sh | |||
| # | |||
| # Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| # | |||
| # This file is part of After Dark. | |||
| # | |||
| # After Dark is free software: you can redistribute it and/or modify | |||
| # it under the terms of the GNU Affero General Public License as published | |||
| # by the Free Software Foundation, either version 3 of the License, or | |||
| # (at your option) any later version. | |||
| # | |||
| # After Dark is distributed in the hope that it will be useful, | |||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| # GNU Affero General Public License for more details. | |||
| # | |||
| # You should have received a copy of the GNU Affero General Public License | |||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| validate_hugo () { | |||
| # Exit with error if hugo is not installed | |||
| if ! hash hugo 2>/dev/null ; then | |||
| echo "Error: After Dark requires Hugo version 0.44 or greater" >&2; exit 1 | |||
| echo "Error: After Dark requires Hugo version 0.51 or greater" >&2; exit 1 | |||
| fi | |||
| # Exit with error if not minimum required hugo version | |||
| re="v(0\d*\.([4-9][4-9]|[5-9])|[1-9]).*" | |||
| re="v(0\d*\.([5-9][1-9]|[6-9])|[1-9]).*" | |||
| if ! hugo version | grep -qE "$re" ; then | |||
| echo "Error: After Dark requires Hugo version 0.44 or greater" >&2; exit 1 | |||
| echo "Error: After Dark requires Hugo version 0.51 or greater" >&2; exit 1 | |||
| fi | |||
| } | |||
| @@ -32,7 +51,7 @@ create_site () { | |||
| download_theme () { | |||
| echo "Downloading the latest version of After Dark ..." | |||
| LATEST_META=$(wget -qO - https://registry.npmjs.org/after-dark/latest) | |||
| vers=$(echo "$LATEST_META" | egrep -o "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ') | |||
| vers=$(echo "$LATEST_META" | grep -oE "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ') | |||
| mkdir -p themes/after-dark | |||
| wget -qO - https://registry.npmjs.org/after-dark/-/after-dark-"$vers".tgz | tar --strip-components=1 -xz -C themes/after-dark | |||
| echo "Version $vers downloaded to $SITE_DIR/themes/after-dark" | |||
| @@ -42,7 +61,7 @@ download_module () { | |||
| [ -z "$1" ] && { echo "Error: Attempt to download undefined module" >&2; exit 1; } | |||
| echo "Downloading $1 module for After Dark ..." | |||
| meta=$(wget -qO - https://registry.npmjs.org/"$1"/latest) | |||
| vers=$(echo "$meta" | egrep -o "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ') | |||
| vers=$(echo "$meta" | grep -oE "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ') | |||
| mkdir -p themes/"$1" | |||
| wget -qO - https://registry.npmjs.org/"$1"/-/"$1"-"$vers".tgz | tar --strip-components=1 -xz -C themes/"$1" | |||
| echo "Version $vers downloaded to $SITE_DIR/themes/$1" | |||
| @@ -55,11 +74,12 @@ baseurl = "https://domain.example" # Controls base URL sitewide | |||
| languageCode = "en-US" # Controls site language | |||
| title = "After Dark" # Homepage title and page title suffix | |||
| paginate = 11 # Number of posts to show before paginating | |||
| copyright = "Copyright © Copyright Owner. Licensed under <a target=\"_blank\" rel=\"external noopener license\" href=\"https://creativecommons.org/licenses/by-nd/4.0/\">CC-BY-ND-4.0</a>." # Optional, remove to suppress copyright notices | |||
| # Controls default theme and theme components | |||
| theme = [ | |||
| "fractal-forest", | |||
| "after-dark" | |||
| "fractal-forest", # OBSD | |||
| "after-dark" # AGPL-3.0-or-later | |||
| ] | |||
| disableLiveReload = false # Optional, set true to disable live reload | |||
| @@ -75,7 +95,6 @@ footnoteReturnLinkContents = "↩" # Provides a nicer footnote return link | |||
| description = "" # Suggested, controls default description meta | |||
| author = "" # Optional, controls author name display on posts | |||
| hide_author = false # Optional, set true to hide author name on posts | |||
| has_cookies = false # Optional, set true to disable cookie disclaimer | |||
| disable_csp = false # Optional, set true to disable content security policy | |||
| images = [ | |||
| "https://source.unsplash.com/collection/983219/2000x1322" | |||
| @@ -84,6 +103,9 @@ footnoteReturnLinkContents = "↩" # Provides a nicer footnote return link | |||
| [params.layout.menu.main] | |||
| hidden = true # Optional, set false or remove to show section menu | |||
| [params.layout.footer] | |||
| hidden = false # Optional, set true to hide footer | |||
| [params.modules.fractal_forest] | |||
| enabled = true # Optional, set false to disable module | |||
| decoders = ["bpgdec8a"] # Optional, 8-bit javascript decoder with animation | |||
| @@ -1,8 +1,27 @@ | |||
| #!/bin/sh | |||
| # | |||
| # Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| # | |||
| # This file is part of After Dark. | |||
| # | |||
| # After Dark is free software: you can redistribute it and/or modify | |||
| # it under the terms of the GNU Affero General Public License as published | |||
| # by the Free Software Foundation, either version 3 of the License, or | |||
| # (at your option) any later version. | |||
| # | |||
| # After Dark is distributed in the hope that it will be useful, | |||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| # GNU Affero General Public License for more details. | |||
| # | |||
| # You should have received a copy of the GNU Affero General Public License | |||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| stop_help_server () { | |||
| echo "Stopping help server if running ..." | |||
| kill $(ps aux | awk '/[h]ugo.*1414/ {print $2}') 2>/dev/null || true | |||
| kill "$(ps aux | awk '/[h]ugo.*1414/ {print $2}')" 2>/dev/null || true | |||
| } | |||
| generate_help_docs () { | |||
| @@ -18,14 +37,14 @@ generate_help_docs () { | |||
| update_module () { | |||
| meta_file=themes/"$1"/data/npm/latest.json | |||
| if [ -f "$meta_file" ] ; then | |||
| current_vers=`sed -n 's/.*"version":"\([^"]*\).*/\1/p' < "$meta_file"` | |||
| current_vers=$(sed -n 's/.*"version":"\([^"]*\).*/\1/p' < "$meta_file") | |||
| else | |||
| echo "Cannot detect version. Upgrade $1 anyway (y/n)? \c" | |||
| read answer | |||
| read -r answer | |||
| [ "$answer" = "${answer#[Yy]}" ] && exit 1 | |||
| fi | |||
| LATEST_META=$(wget -qO - https://registry.npmjs.org/"$1"/latest) | |||
| latest_vers=`sed -n 's/.*"version":"\([^"]*\).*/\1/p' <<< "$LATEST_META"` | |||
| latest_vers=$(echo "$LATEST_META" | grep -oE "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ') | |||
| if [ "$current_vers" ] ; then | |||
| if [ "$current_vers" = "$latest_vers" ] ; then | |||
| echo "Did not upgrade $1. Already using latest version." >&1; exit 0 | |||
| @@ -0,0 +1,3 @@ | |||
| title = "GNU Affero General Public License v3.0 (or later version)" | |||
| shorthand = "GNU AGPLv3+" | |||
| link = "https://www.gnu.org/licenses/agpl.html" | |||
| @@ -0,0 +1,3 @@ | |||
| title = "Creative Commons Attribution NonCommercial ShareAlike 4.0 International" | |||
| shorthand = "CC BY-NC-SA 4.0" | |||
| link = "https://creativecommons.org/licenses/by-nc-sa/4.0/" | |||
| @@ -0,0 +1,3 @@ | |||
| title = "Creative Commons Attribution NoDerivatives 4.0 International" | |||
| shorthand = "CC BY-ND 4.0" | |||
| link = "https://creativecommons.org/licenses/by-nd/4.0/" | |||
| @@ -0,0 +1,3 @@ | |||
| title = "Creative Commons Attribution Share Alike 4.0 International" | |||
| shorthand = "CC BY-SA 4.0" | |||
| link = "https://creativecommons.org/licenses/by-sa/4.0/" | |||
| @@ -1 +1 @@ | |||
| {"name":"after-dark","version":"7.2.1","description":"Semantic Design System for Hugo.","author":{"name":"Josh Habdas","email":"[email protected]","url":"https://habd.as"},"keywords":["hugo","hackcss","lazysizes","lodash","vue","fuse.js","mark.js"],"homepage":"https://after-dark.habd.as","repository":{"type":"git","url":"https://git.habd.as/comfusion/after-dark.git"},"standard-version":{"scripts":{"posttag":"git tag --sign $(git describe --tags $(git rev-list --tags --max-count=1)) $(git describe --tags $(git rev-list --tags --max-count=1))^{} -f -m \"$(git log -1 --pretty=%B)\" -m \"-----BEGIN DIST INTEGRITY-----\" -m \"$(npm pack --dry-run --json . | grep integrity | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '\" ')\" -m \"-----END DIST INTEGRITY-----\""}},"scripts":{"update:lazysizes":"npm up lazysizes && cp -i node_modules/lazysizes/lazysizes.min.js static/js","update:lodash:custom":"lodash include=debounce -p -o static/js/lodash.custom.min.js","update:fuse":"npm up fuse.js && cp -i node_modules/fuse.js/dist/fuse.min.js static/js","update:vue":"npm up vue && cp -i node_modules/vue/dist/vue.min.js static/js","update:mark":"npm up mark.js && cp -i node_modules/mark.js/dist/mark.min.js static/js","update:hackcss":"npm up hackcss && cp -ir node_modules/hack/dist/ assets/css/vendor/hack/","test":"while true; do head -n 100 /dev/urandom; sleep 0.1; done | hexdump -C | grep 'ca fe'","integrity":"npm pack --dry-run --json . | grep integrity | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '\" '","release":"standard-version"},"devDependencies":{"atom-one-chroma":"^2.0.0","fetch-inject":"^2.0.2","fuse.js":"^3.3.0","hack":"^0.8.1","lazysizes":"^4.1.4","lodash-cli":"^4.17.5","mark.js":"^8.11.1","standard-version":"^4.4.0","vue":"^2.5.16"},"license":"WTFPL","gitHead":"129ace4157389f06b79884585bf7e35777e5cfb5","_id":"[email protected]","_nodeVersion":"10.4.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-i4QY3BDdVQR3Pvmjc5jupUaPQaB0SXWov57tiNhtVBvq2uRqSd1Zjb2I/VFEqefjt4TKJQ9qPOksUJ6Gs6zzCg==","shasum":"00a7229ae6d8bd7ad4c5421e90421a71981c1533","tarball":"https://registry.npmjs.org/after-dark/-/after-dark-7.2.1.tgz","fileCount":239,"unpackedSize":3958523,"npm-signature":"-----BEGIN PGP SIGNATURE----- Version: OpenPGP.js v3.0.4 Comment: https://openpgpjs.org wsFcBAEBCAAQBQJcb51ECRA9TVsSAnZWagAATJsP/i16WQcPAKzGCFm3Z1je XnO5KvEfhk+y+NgoCpRyjYodDGsxluPzm21RZcUktdWYtxa3BKKJb3PWITyF LDap8g5JHOtaesK4DqdUVSNlNrbc8Bj8UxnckqcZMzEKsHqo1k5hj2tUJkEd R7YPWh6qWSpWk4AyQ2YJBrw3wo/989cDJJI1B8ichAIcmMMQIdzorSyZof8t rT4zBMxN6iBfokNpRO6Hxu/Ljdbtt9x+gM668Z921O+BK6cvAhH3Wq7EdgBC Ix3slR+lrYpCanZOFLKdYHRKdQkSpPUceFCmJmP5R+FQj13vFxpMCbGPhzBd NPhIi9FQlGjcqY1dwxYiC/o4wjpYW/gkOLQD2yaUe1eD0pGYeMw65aSnZguV TEWkDRuQW5rUahKTZoT9qohoq1HbeSzQttHra/H8ZsQ5Q0mX86qbmdJOceC6 8RQW6pauizDxQ5VEBHQNbWTYMMOV17NbRULqEv+cstuhlTKw1VqKXdpArjNr CoW7zQu+tXOv58atvoT+asj5qe9BosxIC8YyCotZ1hEonNMkkz3B2Uw9rbXs NHer1dJOdodQ5y/610w1UHFT+ikEZRQTRqlvJemIXQu5BONOtU25JA9Clksm 9smOfvxIqAMAgcbSNv2N26MU+KPeyhae4n3j0DJoEBCP6t4rH8W2h4LdKsg9 Z4At =rxrw -----END PGP SIGNATURE----- "},"maintainers":[{"name":"jhabdas","email":"[email protected]"}],"_npmUser":{"name":"jhabdas","email":"[email protected]"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/after-dark_7.2.1_1550818627821_0.7526877237318237"},"_hasShrinkwrap":false} | |||
| {"name":"after-dark","version":"9.1.0","description":"Hugo Dark Theme Site Generator","author":{"name":"Josh Habdas","email":"[email protected]","url":"https://habd.as"},"keywords":["hugo","dark","theme","website","blog"],"homepage":"https://after-dark.habd.as","repository":{"type":"git","url":"https://git.habd.as/comfusion/after-dark.git"},"standard-version":{"scripts":{"posttag":"git tag --sign $(git describe --tags $(git rev-list --tags --max-count=1)) $(git describe --tags $(git rev-list --tags --max-count=1))^{} -f -m \"$(git log -1 --pretty=%B)\" -m \"-----BEGIN DIST INTEGRITY-----\" -m \"$(npm pack --dry-run --json . | grep integrity | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '\" ')\" -m \"-----END DIST INTEGRITY-----\""}},"scripts":{"update:lazysizes":"npm up lazysizes && cp -i node_modules/lazysizes/lazysizes.min.js static/js","update:lodash:custom":"lodash include=debounce -p -o static/js/lodash.custom.min.js","update:fuse":"npm up fuse.js && cp -i node_modules/fuse.js/dist/fuse.js static/js/fuse.min.js","update:vue":"npm up vue && cp -i node_modules/vue/dist/vue.min.js static/js","update:mark":"npm up mark.js && cp -i node_modules/mark.js/dist/mark.min.js static/js","update:hackcss":"npm up hackcss && cp -ir node_modules/hack/dist/ assets/css/vendor/hack/","update:fetch-inject":"npm up fetch-inject && cp -i node_modules/fetch-inject/dist/fetch-inject.min.js assets/js/vendor/fetch-inject.min.js","test":"while true; do head -n 100 /dev/urandom; sleep 0.1; done | hexdump -C | grep 'ca fe'","integrity":"npm pack --dry-run --json . | grep integrity | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '\" '","release":"standard-version","commit":"npx git-cz"},"devDependencies":{"atom-one-chroma":"^2.0.0","commitizen":"^4.0.3","cz-conventional-changelog":"^3.0.2","fetch-inject":"^2.0.4","fuse.js":"^3.4.5","hack":"^0.8.1","lazysizes":"^5.1.0","lodash-cli":"^4.17.5","mark.js":"^8.11.1","standard-version":"^6.0.1","vue":"^2.6.10"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"license":"AGPL-3.0-or-later","gitHead":"f19d9289e69f6b3e040076e96de29f9d3c73e9ee","_id":"[email protected]","_nodeVersion":"11.15.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-qIvf65LBxjG3nsLyWoR+Y3fdJx+ZoOuqYUK3NXf6BmKGVWh2IaCRciyrsuDS+54ZaQM6Q+SFWT7n+8mEcNseEQ==","shasum":"e6f542eb006adc99888f4a28b8fc02ade85b64be","tarball":"https://registry.npmjs.org/after-dark/-/after-dark-9.1.0.tgz","fileCount":373,"unpackedSize":4305262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXZreCRA9TVsSAnZWagAAHeIP/iquAFXsUzICdxq2SxgR\ny8sXPBGcxD85faQNwqg1b9G3NVXuh6ZYjNsPTVEMEScLkiN+ibB+NaGxV19Z\nPqeEw2oC5eEzcDDpwfuCmmLKotb7DWjIvlVVj0ZpYwcJooTZmNdpZX2qkal4\n6CQpBpHHtwmM3ZwAhZxYhB8kJALm11XercBKJObcwpAw/tssLIzSLIvepjOo\nFQ5G0Zclyqic7Mkm0RclpvMTDFWm37R0kwkVCYqBexQKtZ62vXhmhi3ZrDbr\nTiyIVYF7FCZMPRwAv/fC6v84psrEMKbIvolZass5m5+FLCmPbwlBqntbI6Sq\nyy3Y6zYdz7iiAx5WA5HeXhFAo5Nn3bYL5gve1SxsjBTDBv+sucZ8u9vZp/yk\nfpoZdvGklOIKT+nnJlMPfGI829nPOVF1FZUtWrJ8ZUFtvPsCL2hrVQ8jnpF2\n98YjPYqsPO2TkAROvVN0fdLJ4W6HAwWNcKqRu2Tgak/NjdHao/Y6yLSSy4CQ\nus8jaPvdDhiFa8ggHBajtkXb3QKTv9FR9EFpYa4xln1K5Y39ptda8fn4wPaw\nFHWHgk2MCyFA6cAzz5Mu7X+dZcJJkU1/VOwWVMU5LIWTJBtQfWELJ41RXsNR\nLueA5jPBLg4JyIv6oYxgyks9ZB9aMGHie6oXHMG+pWdw0mNfC90ZaH8D65QF\nXpt8\r\n=22Bl\r\n-----END PGP SIGNATURE-----\r\n"},"maintainers":[{"name":"jhabdas","email":"[email protected]"}],"_npmUser":{"name":"jhabdas","email":"[email protected]"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/after-dark_9.1.0_1566415581958_0.7192411613979868"},"_hasShrinkwrap":false} | |||
| @@ -0,0 +1 @@ | |||
| article_types = ["Article", "AdvertiserContentArticle", "NewsArticle", "AnalysisNewsArticle", "AskPublicNewsArticle", "BackgroundNewsArticle", "OpinionNewsArticle", "ReportageNewsArticle", "ReviewNewsArticle", "Report", "SatiricalArticle", "ScholarlyArticle", "MedicalScholarlyArticle", "SocialMediaPosting", "BlogPosting", "LiveBlogPosting", "DiscussionForumPosting", "TechArticle", "APIReference"] | |||
| @@ -0,0 +1,48 @@ | |||
| # | |||
| # Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| # | |||
| # This file is part of After Dark. | |||
| # | |||
| # After Dark is free software: you can redistribute it and/or modify | |||
| # it under the terms of the GNU Affero General Public License as published | |||
| # by the Free Software Foundation, either version 3 of the License, or | |||
| # (at your option) any later version. | |||
| # | |||
| # After Dark is distributed in the hope that it will be useful, | |||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| # GNU Affero General Public License for more details. | |||
| # | |||
| # You should have received a copy of the GNU Affero General Public License | |||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| # DOCKER-VERSION 19.03.1-ce, build 74b1e89e8a | |||
| # Specify build image | |||
| ARG GO_VERSION=1.11.4 | |||
| ARG BUILD_TARGET=alpine3.8 | |||
| # Pull builder base image | |||
| FROM golang:${GO_VERSION}-${BUILD_TARGET} AS htmltestbuilder | |||
| # Set build variables | |||
| ARG HTMLTEST_VERSION=0.10.3 | |||
| ENV CGO_ENABLED=0 \ | |||
| GOOS=linux \ | |||
| GO111MODULE=on | |||
| # Build from source using specified version | |||
| RUN \ | |||
| apk add --update --no-cache ca-certificates git musl-dev && \ | |||
| git clone https://github.com/wjdp/htmltest.git $GOPATH/src/github.com/wjdp/htmltest && \ | |||
| cd ${GOPATH:-$HOME/go}/src/github.com/wjdp/htmltest && \ | |||
| git checkout v$HTMLTEST_VERSION && \ | |||
| go mod download && \ | |||
| go install -installsuffix 'static' -ldflags "-X main.date=`date -u +%Y-%m-%dT%H:%M:%SZ` -X main.version=`git describe --tags`" | |||
| # Move compiled binary into own container | |||
| FROM scratch | |||
| COPY --from=htmltestbuilder /go/bin/htmltest /htmltest | |||
| ENTRYPOINT ["/htmltest"] | |||
| CMD ["-h"] | |||
| @@ -1,38 +1,45 @@ | |||
| # | |||
| # Hugo Dockerfile for After Dark | |||
| # Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| # | |||
| # After Dark is free and open source software you can use to create a | |||
| # privacy-aware website, blog or app. | |||
| # This file is part of After Dark. | |||
| # | |||
| # Read the docs (https://after-dark.habd.as/) | |||
| # View the code (https://git.habd.as) | |||
| # After Dark is free software: you can redistribute it and/or modify | |||
| # it under the terms of the GNU Affero General Public License as published | |||
| # by the Free Software Foundation, either version 3 of the License, or | |||
| # (at your option) any later version. | |||
| # | |||
| # Copyright (C) 2018 Josh Habdas <[email protected]> | |||
| # After Dark is distributed in the hope that it will be useful, | |||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| # GNU Affero General Public License for more details. | |||
| # | |||
| # This work is free. You can redistribute it and/or modify it under the | |||
| # terms of the Do What The Fuck You Want To Public License, Version 2, | |||
| # as published by Sam Hocevar. See the COPYING file for more details. | |||
| # You should have received a copy of the GNU Affero General Public License | |||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| # DOCKER-VERSION 17.12.0-ce, build c97c6d6 | |||
| # DOCKER-VERSION 19.03.1-ce, build 74b1e89e8a | |||
| # Pull hugo builder base image | |||
| FROM golang:1.10.3-alpine3.7 AS hugobuilder | |||
| # Specify build image | |||
| ARG GO_VERSION=1.11.4 | |||
| ARG BUILD_TARGET=alpine3.8 | |||
| # Set environment variables for hugo build | |||
| ENV HUGO_VERSION=0.44 \ | |||
| CGO_ENABLED=0 \ | |||
| GOOS=linux | |||
| # Pull builder base image | |||
| FROM golang:${GO_VERSION}-${BUILD_TARGET} AS hugobuilder | |||
| # Build hugo from source using specified version | |||
| # Set environment variables | |||
| ENV HUGO_VERSION=0.57.0 \ | |||
| CGO_ENABLED=1 \ | |||
| GOOS=linux \ | |||
| GO111MODULE=on \ | |||
| BUILD_TAGS="extended" | |||
| # Build from source using specified version | |||
| RUN \ | |||
| apk add --update --no-cache git musl-dev && \ | |||
| apk add --update --no-cache git gcc g++ binutils musl-dev && \ | |||
| git clone https://github.com/gohugoio/hugo.git $GOPATH/src/github.com/gohugoio/hugo && \ | |||
| cd ${GOPATH:-$HOME/go}/src/github.com/gohugoio/hugo && \ | |||
| git checkout v$HUGO_VERSION && \ | |||
| go get github.com/golang/dep/cmd/dep && \ | |||
| dep ensure -vendor-only && \ | |||
| go install -ldflags '-s -w' | |||
| go install -ldflags '-s -w -extldflags "-static"' -tags ${BUILD_TAGS} | |||
| # Move compiled binary into own container | |||
| FROM scratch | |||
| @@ -4,4 +4,8 @@ description = "This text is displayed in search result listings." | |||
| categories = ["features"] | |||
| tags = ["after", "dark"] | |||
| features = [""] | |||
| [[copyright]] | |||
| owner = "Josh Habdas" | |||
| date = "2019" | |||
| license = "agpl-3.0-or-later" | |||
| +++ | |||
| @@ -5,4 +5,8 @@ description = "This text is displayed in search result listings." | |||
| categories = ["addon"] | |||
| tags = ["module"] | |||
| features = [""] | |||
| [[copyright]] | |||
| owner = "Josh Habdas" | |||
| date = "2019" | |||
| license = "agpl-3.0-or-later" | |||
| +++ | |||
| @@ -6,4 +6,8 @@ tags = ["after", "dark"] | |||
| html_attributes = [] | |||
| custom_attributes = [] | |||
| snippets_used = [] | |||
| [[copyright]] | |||
| owner = "Josh Habdas" | |||
| date = "2019" | |||
| license = "agpl-3.0-or-later" | |||
| +++ | |||
| @@ -2,6 +2,10 @@ | |||
| title = "Validate Release" | |||
| description = "Complete the included form to validate the release." | |||
| noindex = true | |||
| [[copyright]] | |||
| owner = "Josh Habdas" | |||
| date = "2019" | |||
| license = "agpl-3.0-or-later" | |||
| +++ | |||
| {{< hackcss-form name="validate" action="/validate/" >}} | |||
| @@ -0,0 +1,187 @@ | |||
| :root { | |||
| --vertical-rhythm: 5rem; | |||
| --logo-animation-filter-start: drop-shadow(0 -25px 45px #ff2e88) brightness(1) drop-shadow(0 -55px 35px #ff2e88) brightness(1) drop-shadow(0 -35px 155px #ff9800) brightness(4); | |||
| --logo-animation-filter-end: drop-shadow(0 -20px 45px #ff2e88) brightness(.1) drop-shadow(0 0 5px #ff2e88) brightness(.7) drop-shadow(0 -20px 135px #ff2e88) brightness(2); | |||
| } | |||
| main, footer, header, caption { | |||
| text-align: center; | |||
| } | |||
| nav[itemtype*="SiteNavigationElement"] { | |||
| opacity: 0; | |||
| transition: opacity 300ms ease; | |||
| } | |||
| nav[itemtype*="SiteNavigationElement"]:focus-within { | |||
| opacity: 1; | |||
| transition: opacity 300ms ease; | |||
| } | |||
| @media screen and (max-width: 768px) { | |||
| nav[itemtype*="SiteNavigationElement"] { | |||
| display: none; | |||
| } | |||
| .hack header h1 { | |||
| margin-top: 2rem !important; | |||
| } | |||
| .grid { | |||
| flex-direction: row; | |||
| } | |||
| .cell { | |||
| flex: 1; | |||
| } | |||
| } | |||
| .shaded { | |||
| filter: var(--logo-animation-filter-start); | |||
| opacity: 0; | |||
| } | |||
| .animated { | |||
| /* FIXME: Animation disabled due to browser conflict with Web Miner */ | |||
| animation: reveal 2s both; | |||
| opacity: 1; /* remove with fix */ | |||
| filter: var(--logo-animation-filter-end); /* remove with fix */ | |||
| } | |||
| @keyframes reveal { | |||
| from { | |||
| filter: var(--logo-animation-filter-start); | |||
| } | |||
| to { | |||
| filter: var(--logo-animation-filter-end); | |||
| opacity: 1; | |||
| } | |||
| } | |||
| .hack .grid { | |||
| justify-content: center; | |||
| } | |||
| .hack header h1:after { | |||
| content: none; | |||
| } | |||
| .hack header h1 { | |||
| font-family: Futura,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif; | |||
| padding: 0; | |||
| margin: 1rem; | |||
| font-size: 3em; | |||
| display: inline-block; | |||
| background-color: #2a3439; | |||
| color: transparent; | |||
| text-shadow: 0 2px 3px rgba(255, 255, 255, 0.1); | |||
| -webkit-background-clip: text; | |||
| -moz-background-clip: text; | |||
| background-clip: text; | |||
| filter: brightness(3); | |||
| } | |||
| .hack header h1 sup { | |||
| font-size: 1rem; | |||
| } | |||
| .hack header h1 sup:before { | |||
| content: " "; | |||
| } | |||
| .hack header h2:before, | |||
| .hack section h2:before { | |||
| content: unset; | |||
| } | |||
| .hack header h2, | |||
| .hack section h2 { | |||
| margin-top: .8rem; | |||
| font-size: 1.2em; | |||
| } | |||
| .hack header h2 { | |||
| margin-top: -1rem; | |||
| } | |||
| .hack .install.cta { | |||
| margin-top: -1rem; | |||
| margin-bottom: 2rem; | |||
| } | |||
| .hack .install.cta form[action*="quick-install"] { | |||
| width: unset; | |||
| } | |||
| .hack .install.cta form[action*="quick-install"] button { | |||
| border-radius: 4px; | |||
| color: #ccc; | |||
| background-color: #ff2e8860; | |||
| transition: all 0.25s ease; | |||
| } | |||
| .hack .install.cta form[action*="quick-install"] button:hover, | |||
| .hack .install.cta form[action*="quick-install"] button:focus { | |||
| background-color: #ff2e8880; | |||
| color: #fff; | |||
| } | |||
| .hack .install.cta form[action*="quick-install"] button svg { | |||
| stroke: #ff9800; | |||
| } | |||
| .hack section:not(.capabilities) { | |||
| margin: var(--vertical-rhythm) 0; | |||
| } | |||
| .hack section.logo a { | |||
| border-bottom: none; | |||
| background-color: inherit; | |||
| } | |||
| .hack section.hero { | |||
| margin-top: -3rem; | |||
| margin-bottom: 0; | |||
| } | |||
| .hack section.hero img { | |||
| pointer-events: none; | |||
| } | |||
| .hack section.feature ul li { | |||
| display: inline; | |||
| padding-left: unset; | |||
| } | |||
| .hack section.feature ul > li::after { | |||
| position: unset; | |||
| content: ""; | |||
| } | |||
| .hack section.feature ul > li:not(:last-of-type)::after { | |||
| content: " | "; | |||
| } | |||
| .hack section.hero figure { | |||
| margin: 0; | |||
| line-height: 0; | |||
| min-height: 266px; | |||
| } | |||
| @media screen and (min-width: 768px) { | |||
| .hack section.hero figure img { | |||
| margin: -3em 0 -2em; | |||
| } | |||
| } | |||
| .hack section.tagline p { | |||
| margin: 0; | |||
| font-size: 1.1rem; | |||
| line-height: 1.6; | |||
| } | |||
| .hack section.capabilities table a { | |||
| display: block; | |||
| } | |||
| .hack footer section.cta { | |||
| margin-top: 6rem; | |||
| } | |||
| .hack footer section.cta a { | |||
| border-bottom: none; | |||
| background-color: inherit; | |||
| color: #ff9800; | |||
| display: inline-block; | |||
| } | |||
| .hack footer section.cta a:hover { | |||
| color: #fff; | |||
| } | |||
| .hack footer section.cta a small { | |||
| display: block; | |||
| } | |||
| .hack.dark table tbody td:first-child { | |||
| color: inherit; | |||
| font-weight: initial; | |||
| } | |||
| .hack.dark table tr th { | |||
| background-color: #1976d220; | |||
| } | |||
| .hack.dark table tr td a { | |||
| border: 1px solid #2196f340; | |||
| padding: 0.25rem; | |||
| } | |||
| .hack.dark table tr td a:hover { | |||
| transition: all 300ms ease; | |||
| background-color: #ff2e8860; | |||
| border-color: #2196f360; | |||
| } | |||
| .hack.dark table tr td a:not(:hover) { | |||
| transition: all 300ms ease; | |||
| background-color: #ff2e8825; | |||
| } | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| a[rel*="external"]::after { | |||
| content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23ff9800'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E"); | |||
| } | |||
| @@ -27,6 +46,9 @@ a[itemprop="url"]:hover { | |||
| .hack.dark table tr:nth-child(odd) td { | |||
| background-color: #1976d220; | |||
| } | |||
| .hack.dark table tr td a { | |||
| display: block; | |||
| } | |||
| caption { | |||
| margin-bottom: 20px; | |||
| text-align: left; | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| (function (window, document, undefined) { | |||
| 'use strict'; | |||
| const form = document.forms.generator; | |||
| @@ -1,3 +1,22 @@ | |||
| /*! | |||
| * Copyright (C) 2019 Josh Habdas <[email protected]> | |||
| * | |||
| * This file is part of After Dark. | |||
| * | |||
| * After Dark is free software: you can redistribute it and/or modify | |||
| * it under the terms of the GNU Affero General Public License as published | |||
| * by the Free Software Foundation, either version 3 of the License, or | |||
| * (at your option) any later version. | |||
| * | |||
| * After Dark is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU Affero General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Affero General Public License | |||
| * along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
| */ | |||
| (function (window, document, undefined) { | |||
| 'use strict'; | |||
| const isOnlineHelp = document.URL.includes('localhost:1414'); | |||
| @@ -0,0 +1,21 @@ | |||
| The MIT License (MIT) | |||
| Copyright (c) 2016 Dan Klammer | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-activity" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M4 16 L11 16 14 29 18 3 21 16 28 16" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-alert" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M16 3 L30 29 2 29 Z M16 11 L16 19 M16 23 L16 25" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-archive" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M4 10 L4 28 28 28 28 10 M2 4 L2 10 30 10 30 4 Z M12 15 L20 15" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-arrow-bottom" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M6 22 L16 30 26 22 M16 30 L16 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-arrow-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M10 6 L2 16 10 26 M2 16 L30 16" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-arrow-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M22 6 L30 16 22 26 M30 16 L2 16" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-arrow-top" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M6 10 L16 2 26 10 M16 2 L16 30" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-backwards" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M16 2 L2 16 16 30 16 16 30 30 30 2 16 16 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-bag" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M5 9 L5 29 27 29 27 9 Z M10 9 C10 9 10 3 16 3 22 3 22 9 22 9" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-ban" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="16" cy="16" r="14" /> | |||
| <path d="M6 6 L26 26" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-bell" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M8 17 C8 12 9 6 16 6 23 6 24 12 24 17 24 22 27 25 27 25 L5 25 C5 25 8 22 8 17 Z M20 25 C20 25 20 29 16 29 12 29 12 25 12 25 M16 3 L16 6" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-book" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M16 7 C16 7 9 1 2 6 L2 28 C9 23 16 28 16 28 16 28 23 23 30 28 L30 6 C23 1 16 7 16 7 Z M16 7 L16 28" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-bookmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M6 2 L26 2 26 30 16 20 6 30 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-calendar" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 6 L2 30 30 30 30 6 Z M2 15 L30 15 M7 3 L7 9 M13 3 L13 9 M19 3 L19 9 M25 3 L25 9" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-camera" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 8 L 9 8 12 4 20 4 23 8 30 8 30 26 2 26 Z" /> | |||
| <circle cx="16" cy="16" r="5" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-caret-bottom" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 10 L16 26 2 10 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-caret-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M22 30 L6 16 22 2 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-caret-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M10 30 L26 16 10 2 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-caret-top" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 22 L16 6 2 22 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,5 @@ | |||
| <svg id="i-cart" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M6 6 L30 6 27 19 9 19 M27 23 L10 23 5 2 2 2" /> | |||
| <circle cx="25" cy="27" r="2" /> | |||
| <circle cx="12" cy="27" r="2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 20 L12 28 30 4" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-chevron-bottom" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 12 L16 24 2 12" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-chevron-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M20 30 L8 16 20 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-chevron-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M12 30 L24 16 12 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-chevron-top" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 20 L16 8 2 20" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-clipboard" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M12 2 L12 6 20 6 20 2 12 2 Z M11 4 L6 4 6 30 26 30 26 4 21 4" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-clock" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="16" cy="16" r="14" /> | |||
| <path d="M16 8 L16 16 20 20" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-close" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 30 L30 2 M30 30 L2 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-code" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M10 9 L3 17 10 25 M22 9 L29 17 22 25 M18 7 L14 27" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-compose" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M27 15 L27 30 2 30 2 5 17 5 M30 6 L26 2 9 19 7 25 13 23 Z M22 6 L26 10 Z M9 19 L13 23 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-creditcard" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 7 L2 25 30 25 30 7 Z M5 18 L9 18 M5 21 L11 21" /> | |||
| <path d="M2 11 L2 13 30 13 30 11 Z" fill="currentColor" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-desktop" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M10 29 C10 29 10 24 16 24 22 24 22 29 22 29 L10 29 Z M2 6 L2 23 30 23 30 6 2 6 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-download" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M9 22 C0 23 1 12 9 13 6 2 23 2 22 10 32 7 32 23 23 22 M11 26 L16 30 21 26 M16 16 L16 30" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-edit" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-eject" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M30 18 L16 5 2 18Z M2 25 L30 25" /> | |||
| </svg> | |||
| @@ -0,0 +1,5 @@ | |||
| <svg id="i-ellipsis-horizontal" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="7" cy="16" r="2" /> | |||
| <circle cx="16" cy="16" r="2" /> | |||
| <circle cx="25" cy="16" r="2" /> | |||
| </svg> | |||
| @@ -0,0 +1,5 @@ | |||
| <svg id="i-ellipsis-vertical" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="16" cy="7" r="2" /> | |||
| <circle cx="16" cy="16" r="2" /> | |||
| <circle cx="16" cy="25" r="2" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-end" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M24 2 L24 16 10 2 10 30 24 16 24 30" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-export" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M28 22 L28 30 4 30 4 22 M16 4 L16 24 M8 12 L16 4 24 12" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-external" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M14 9 L3 9 3 29 23 29 23 18 M18 4 L28 4 28 14 M28 4 L14 18" /> | |||
| </svg> | |||
| @@ -0,0 +1,5 @@ | |||
| <svg id="i-eye" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="17" cy="15" r="1" /> | |||
| <circle cx="16" cy="16" r="6" /> | |||
| <path d="M2 16 C2 16 7 6 16 6 25 6 30 16 30 16 30 16 25 26 16 26 7 26 2 16 2 16 Z" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-feed" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <circle cx="6" cy="26" r="2" fill="currentColor" /> | |||
| <path d="M4 15 C11 15 17 21 17 28 M4 6 C17 6 26 15 26 28" /> | |||
| </svg> | |||
| @@ -0,0 +1,3 @@ | |||
| <svg id="i-file" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M6 2 L6 30 26 30 26 10 18 2 Z M18 2 L18 10 26 10" /> | |||
| </svg> | |||
| @@ -0,0 +1,4 @@ | |||
| <svg id="i-filter" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> | |||
| <path d="M2 5 C2 5 6 3 16 3 26 3 30 5 30 5 L19 18 19 27 13 30 13 18 2 5Z" /> | |||
| </svg> | |||