From 96e3130ba54a8ed7ff90a24e856836b4067d84cc Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Sun, 19 Jan 2020 18:19:34 -0500 Subject: [PATCH] all the favicons :) https://realfavicongenerator.net/ --- .github/workflows/build-and-lint.yml | 15 +++++--------- layouts/index.manifest.json | 29 ++------------------------- layouts/index.redirects | 1 + layouts/partials/head/favicons.html | 2 +- layouts/partials/head/head.html | 2 ++ netlify.toml | 17 +++++++++++++--- static/android-chrome-192x192.png | Bin 0 -> 1795 bytes static/android-chrome-512x512.png | Bin 0 -> 4421 bytes static/apple-touch-icon.png | Bin 2688 -> 1368 bytes static/browserconfig.xml | 10 +++++++++ static/mstile-150x150.png | Bin 0 -> 1425 bytes static/mstile-310x310.png | Bin 0 -> 2236 bytes 12 files changed, 35 insertions(+), 41 deletions(-) create mode 100644 static/android-chrome-192x192.png create mode 100644 static/android-chrome-512x512.png create mode 100644 static/browserconfig.xml create mode 100644 static/mstile-150x150.png create mode 100644 static/mstile-310x310.png diff --git a/.github/workflows/build-and-lint.yml b/.github/workflows/build-and-lint.yml index c3d64d4e..22537daf 100644 --- a/.github/workflows/build-and-lint.yml +++ b/.github/workflows/build-and-lint.yml @@ -31,16 +31,11 @@ jobs: key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - name: Install dependencies - run: yarn install --no-ignore-optional --frozen-lockfile - - name: Hugo version - run: yarn debug:hugo - - name: Build Hugo - run: yarn build:preview - - name: Lint Styles - run: yarn lint:sass - - name: Lint Markdown - run: yarn lint:markdown + - run: yarn install --no-ignore-optional --frozen-lockfile + - run: yarn debug:hugo + - run: yarn build:preview + - run: yarn lint + continue-on-error: true - uses: actions/upload-artifact@v1 if: github.event_name == 'pull_request' with: diff --git a/layouts/index.manifest.json b/layouts/index.manifest.json index 0f12d601..b7ba39b4 100644 --- a/layouts/index.manifest.json +++ b/layouts/index.manifest.json @@ -3,39 +3,14 @@ "short_name": "{{ .Site.Params.domain }}", "icons": [ { - "src": "{{ "favicon-512.png" | absURL }}", + "src": "{{ "android-chrome-512x512.png" | absURL }}", "sizes": "512x512", "type": "image/png" }, { - "src": "{{ "favicon-192.png" | absURL }}", + "src": "{{ "android-chrome-192x192.png" | absURL }}", "sizes": "192x192", "type": "image/png" - }, - { - "src": "{{ "favicon-180.png" | absURL }}", - "sizes": "180x180", - "type": "image/png" - }, - { - "src": "{{ "favicon-152.png" | absURL }}", - "sizes": "152x152", - "type": "image/png" - }, - { - "src": "{{ "favicon-128.png" | absURL }}", - "sizes": "128x128", - "type": "image/png" - }, - { - "src": "{{ "favicon-96.png" | absURL }}", - "sizes": "96x96", - "type": "image/png" - }, - { - "src": "{{ "favicon-64.png" | absURL }}", - "sizes": "64x64", - "type": "image/png" } ], "start_url": "{{ .Site.BaseURL }}", diff --git a/layouts/index.redirects b/layouts/index.redirects index 063f6709..a184d7c9 100644 --- a/layouts/index.redirects +++ b/layouts/index.redirects @@ -11,3 +11,4 @@ # https://github.com/w3c/manifest/issues/689 /manifest.webmanifest /manifest.json 200 +/site.webmanifest /manifest.json 200 diff --git a/layouts/partials/head/favicons.html b/layouts/partials/head/favicons.html index 3afa9e61..5624fea3 100644 --- a/layouts/partials/head/favicons.html +++ b/layouts/partials/head/favicons.html @@ -1,4 +1,4 @@ - + {{ range (split .png_sizes " ") -}} diff --git a/layouts/partials/head/head.html b/layouts/partials/head/head.html index 62f52662..a34d3bee 100644 --- a/layouts/partials/head/head.html +++ b/layouts/partials/head/head.html @@ -4,10 +4,12 @@ + {{ partialCached "head/preload" . -}} {{ partialCached "head/styles" . -}} {{ partialCached "head/favicons" (dict "png_sizes" "192 48 32 16" "ico_sizes" "16 32 48") -}} + diff --git a/netlify.toml b/netlify.toml index a090ede7..538c767b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -43,6 +43,7 @@ X-XSS-Protection = "1; mode=block" # X-XSS-Protection = "1; mode=block; report=https://jarvis.report-uri.com/r/d/xss/enforce" X-Got-Milk = "always" + X-View-Source = "https://go.jarv.is/source" # PGP file: open in browser, download correctly [[headers]] @@ -52,12 +53,17 @@ Content-Type = "text/plain; charset=utf-8" Content-Disposition = "inline; filename=\"jarvis.asc\"" -# Redirect default Netlify subdomain to primary domain: +# Redirect www and Netlify subdomains to primary domain: [[redirects]] from = "https://jakejarvis.netlify.com/*" to = "https://jarv.is/:splat" status = 301 force = true +[[redirects]] + from = "https://www.jarv.is/*" + to = "https://jarv.is/:splat" + status = 301 + force = true # Support ancient RSS subscriptions and links from WordPress era: [[redirects]] @@ -95,11 +101,11 @@ # and keep the main repository squeaky clean: [[redirects]] from = "/y2k/*" - to = "https://jakejarvis.github.io/y2k/:splat" + to = "https://modest-jackson-d5516b.netlify.com/y2k/:splat" status = 200 [[redirects]] from = "/ios-trackers/*" - to = "https://jakejarvis.github.io/ios-trackers/:splat" + to = "https://modest-jackson-d5516b.netlify.com/ios-trackers/:splat" status = 200 [[redirects]] from = "/scrabble/*" @@ -118,6 +124,11 @@ to = "https://modest-jackson-d5516b.netlify.com/awesome/:splat" status = 200 +# More miscellaneous mirrors: +[[redirects]] + from = "/apple-touch-icon-precomposed.png" + to = "/apple-touch-icon.png" + status = 200 [[redirects]] from = "/me_lg.jpg" to = "/me_large.jpg" diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..155f0141a16ff7a234be15e8b8ac5860ccadd908 GIT binary patch literal 1795 zcmYk7do8L4Abb)DQ!IyuUgv{#bQuGD|D20(0a>Hwn()a({@yK zLuzYFOXF2Ktsx#;)T{a$W2P$zEu%!blQPXDn>qW>-gEB#e(qoQobS2!-1EVK{<=gn zA^_+H{Mk1|t)f4YprNjbn7=!#fuP>e3p@r*9dk9>S^b4+CF})cge1 z8y~-ef?m(i_S_gtoqwqZ8E1wBhC)PIrG36oXq3orY#(P$Bp$xvhR2e(^m~&Z-lOr(l1OyPB=2>- z8HZ_A`26*q5ez2Et5=a@wD6Bh#Tkqiit6Z8cyLRfCiO%1oIhpC1mQH4JIgJOxK&-Zg{@KQxlzIH!-3-ZIR#(1HhUs3e>e z!JQ>;PH15o4H*S3(Fpc34V~}85G3K0X2UXCk(g+GzdzFxi?J{InJB3Fki0UZ9CxuV zk`SfQ@zpbhtF!6$MgJj63!Q`B#IKfu7%2BK`R5v&d=x!wTKfK5iMY3~ao@7H`Q!sZ z2q_2o|IA>2r}!!Y&GlW>v+2R)V~1z&#v(Js=`9DDd88W1tF746?~`2zEOJl`Oy2Jg z>*NYGL{@VP;i#ewvOn*5V_!u7-K_Lx1g;|0(?d@Xfgx=#!>-rLp#@vSY!^0RVhAXc z2-tZ2r^Exm5M#VLy=V=10al-yD;Wn=T+(t~e+*C{81uSqK+%f0=L&TYRNP~D5rVNN z8}|ari0;DzVJ(_Us=^2^Fm=#1|LZnT#v}ta?b8+lnx}mOD2@a)3JFIInYhURm-xp& zT8rd87ZIknxz)@8c*~XR_UXX(DNPOz2D2u%-?%sy{F$bJyp*YPXdi5Et3Sr<2L(0S zwO#Nh*jTRE#V?p5wAjc`v*IKOi9S7WoqH88knMS#H3*yJr4GXv@bk!|sYWP*DtwhT zJO%|Xs&({tzCq&{p()Cy_;PYWuD<~|M3}vjj_$@6QNVNNoy&q-=$A=eJN#fv+4!UJ zn8Wc+=4W8i@d(^4GzO%BY{GN5dDxVI^t2rJUK^%&B6e~Ujl6_xTaX0WKq}6)n~X?D zoVriD0XfLcfAxwGw zFHwVWFdb{m(1Rzn3lqIMByD#3*`_cgoBdmPP%JQ%(t?KyX?3_*3-T>@U21*fMyUcp z(6J|tG8QOv4YaW4@TmUwZks5teWJ9vBi2z~&Z0wN3Y}3okP7eT>x=J>~tH zGe5XK({l~aP|UgSmJK=F%7rES)FCeK_U<-#phzA0gX$nawlL&}Q0TMj4P}38Dd%eV z=2gkMxDL9ccL5b~7R*($mu?@&6_U+$)SaVWUOFa>)GOM=W_}nPL#*V z+&ZB+94<~xb!A{MvGJa9zfvWoUP6qB);_ep?y@nvH$&M1LcE~4;&V3FQpk=$uVI3D z&lZJxbFw`$TMSU=dJw|}{{jx(S6~fG)Vl2Akt_7a{>mRTo~qAfwV5m*RQf4TA*g>v zZK~e9l`0FwTv^yw=qJ5F_y?Wd)e0xJEBc0V^@QyC=CW0G_kiWy@W{g4vkCia&L255 z^U8FEZb_+5T(8{*B_8=(Tc5aWQw~GLu9)kwkHheA&`?#R#moGym)n#C=uyZ@=^?O_-R7}u z;o%w7W%S?_bL?-PYO1_kyFR7NfnkSDRk=q_P1^XZE6yWVXve5l^hfUml1g+ruJB;9 z>AvwgLfYI~U0_9A`av9|{1P@zbYAH3N~FD5-Z#$4GA`6K!SA3i$S!nogr>5T_jWs8 zc=!|^C470Zxbo}g_Cbs&s?mVO8H;gJF@Mv5YE*s-Pc@pqqL_)MI*zG^C)Dj13MXSr d!p)u|HT1R>C6vlC1J%z40{jAf?|Cyh{{`DHAEN*O literal 0 HcmV?d00001 diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..a09f36c757b58184623a028e0dd599a1917a5607 GIT binary patch literal 4421 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 literal 0 HcmV?d00001 diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png index 9e1bc270de5e5138712a25f7729be028db042d0a..bef1e4521f4f0c87b52cc0b9e31e6f5599693e73 100644 GIT binary patch delta 1350 zcmV-M1-bfw71#=pBYyw{XF*Lt006O%3;baP00001b5ch_0Itp)=>Px#S5Qn;MgRZ* z`nmvQyjXd^K>(WX0iN8??fL(@005ofZ@o=*tBHucaR2ksD5Sgp@yhe~@BhdxMzD+B zyb+|;kD0wV+V0Z8;<3BDBsH_=|JG*z<(_ZI?xWoF8s)T)0Dk}kJV``BRCwC$-Hmdp zFc5~}NI*!%qEso0_kW#-AFCiqSXv}s&g|ZR&vf3Qs7n-rhlhuUhlhuU$N8LhUzum* z>`N)NE4(rns+--}qcYTEJZYpYqc=t79odJp3#A+AwEHm+2R3a@8U3^&$%V2HU?as& zO%53QOd!LhoqwMKni?tXL!3(@8>f*&9B;lAk^OasLD%e45crgKi;n4yK%{*~$MLsE zX+O|&(#~MeZQ9BU_5eNO@>igs+q9JjX}_YqNPC2?FMrguWr2gHUbSVg-vXg2jnw2Y zghDr$KPy|RV-iLQ7}}b)l*cGcq680ZPP-|iAw#0|X@9pdw`5GT=BBkSBMFnA0Y$&0 z{Sz}ZdU(_Nj2RyNleSdPnDNowO>0}m%V4A9Jcx#6xI||cqWU8ok)5H1NDm&Og}5F( zMAvK|(UWOIqJ{W8c!;()0*e;n;v-t57Z1_Kw6W2Kw9(Pp%O5;iq&}iQ8O>-$Gn&zi zW;CN2&3|Y{Gn&ziX7n<1&b&jPcjOHo6!d+qo5sdK_cqZfi$@UX;aYd$1A4U9J=utJ zwDuW=iAG$bi{I?jxkXzR{%w1gF3}UuD45fBhqga(V{OD4x}dF{XF%v|M_U(_A6p#s zCuuiVs(k{4P6o5(CR&@e?5{CGqQ_|u z*BC+3!-s|XJGs#4XWH#fZZ!3>80h=MLh@xN7am<-{?zMEuIXh{5Og!UQ1iOFmo0J> z^rl9WUbems4^FvP=`k# zM@LB`*Y7D42y~bnCCMyx4?wvG{z5LDbGU&rKY?!}-J*8wI6Pv zYedc{<2@S_Dd}(nl$dGg(HAi@Vy=X6g&uszNc^AuwwUSYMp% zjamDjy?u{Z-h?mHrrrFdE8){z8+7H}FN0n7TfxJ_!^6YF!}DLwKW)S@M-Jt}A^-pY zS9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%36Cgx@G{a;ABePT>%h=S&#LUDT#0SfONT5nC0O}VJbn-$ql>h($07*qo IM6N<$g6?9RiU0rr delta 2680 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 mc*~BQFFb=W#u#IaQ7Z$`m2PUyK^^h{0000 + + + + + + #0e6dc2 + + + diff --git a/static/mstile-150x150.png b/static/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..de277d2a0bd32cefaf98e4460949d82e3d1dc081 GIT binary patch literal 1425 zcmZ`&eKgYx82-5`yFRxjB$IJ&xrx)X!jGfI*yfwabtp0O(G|vs7=5@!_-P7rH_ce5 zSa&7sWkE^$M?CMu`nqp-Vs?mzdR-t)ZYec$Ii=Q+r zH>mW8Oo8&r1640J8dPQ)k#~e=f%11su%3D-8i4p_&;Q_Cmmb|1)X?;^l2k$|Q1U8w z#{t%2dMl379DwC>EN>BXmF7sApVujXy;ZXPNmo^WVJqrwT=k|UuFb9??xiwU2nmn# zPaRzXl7T-NS+Lb}q;mo*Cf9uW9*fX^={83AN_u~(a?qO(hv_a`O?zq#3fGlqc6XT>y zujgWrmHKFBj)BfqgtbmV8N8Y$Sh{^C>Z-X5v5X!&nxj+o8gp8_AjBZh)(Go)+nE4; zWF-P!1>thgPRn4d7>*V|0f?fnNsWB6OEzzND66tvJvYTe@z$z}Ov#>~&v7M=ExZ4O znuNuyjkRX+Xgf@KOIDs{_uG-^KSXR+gPyDwjy{f+&xUYb6@jye!IUxF^%{sI*5qO& z(jlsTxN}uY$#o%gYJwoK#7Z%E$(v$^5ISrzVe05L)>X`?hYs5t4NR`OZ!oH+C#y6s z<})EC+zvI(vLevxcTVNOT~Jq`0T~7sBsT~^k+a{=CuqFaLdDT5R8jLM)j;VLZQB3V zrjgHHx!QB#b&~WaPT+O!GYMhwZr>_0~{u4{sC)t&?Uk)*naR$*tdwrLWx1(7W?%u zCfjw)b@iI3_YXxwVb0S=S_K<#poruV>B#mWY>}+?5LSLqN~{A-xnWIQMkTb~pSZu1O)xK*0Z9csqYED!{;lI3UDu;>WJ{nq~*_z<_0mn4x*4Z0P z`QoJXA)W%ieQj>l4a9!u>Az2J+bDp(gugoz+0iyiRp2H6Uub?|7flip<0E5YDJHbE z1d2&a0*wp+sqE<$O&ImGxp|LwZy#yK4^TDJup(<9&5-W5byblj_{-S#2vxH>f0N!3 lnWUqy!>B{8_cF1<%?gm~BWNp5$BO?ALUQrK3!Khf{Re6Ed9nZi literal 0 HcmV?d00001 diff --git a/static/mstile-310x310.png b/static/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..709be6f9f13d6526728866790036afcda99e804b GIT binary patch literal 2236 zcmbtVc~}$I7LQVk5rmph60Ck=LQpgrMqGFZJRZx0zyzTY5pW6wLEzPm3CN;V#316( z2Z_r7BGiH#?i4JeAcYbQP7p&~P~oAHu(+V0twp1}o7X=7dw+Gl@6NsFcYf!byPSJ& zLD-7G>C4qI%fh7Lh%_a2OMTM$hGm_;lw2d_yhdGW$TY)M%hd6 z6Gx{%`)vX6Fg;DSVkLwBw)TT5WJ1#_i+lTFTV?@+VR<4bz&AYe{`21H5s!oI^7Nnj z4Z0L7$3uVfePzX~Y7uA92M$1|a| zI6Ys=ofe;}>N&FBvt^H9A=k$%LyN>eA(C3)M>dpXQd8aS*D;MJZ1&M|9~6dU#h6Wg zeVnAzXeV7&3Re%f{erNh0CcwYpi1BbBi?;3X-K0iP!ml52nb?DQMzBhkA{8mMRIMs zMmcvOhrRnW*68|=2*_-b8Jlw&lX7d#>g$OWgj30UO2^WT`uGgbr=%6|s@`@%7_`q> zTK~K(8ajfzG)u0XJ@r%!UBF$e2fEAGrWjZdnafnn6m@vmQvo``n{ReL4;13eQuGdz z{e=iGC`ZST<=-CcJZ?|5bqI!$UlZ%Jf^4Xty>9Cz{}4Wha*~#~Rv{4XPzJkaNFbbY zm)C5F72+zi4_W^2LVHSUTmjE%9wiA(JWo22tRk>%XI+z?$Dw*+s;_W50do^<0bGP8 zE)8^ju<>v9lvh!+EB?rRmkK=}XJ|ba!lfD{_@ks;6{;m(uZBz}rHUY&INJx1dJJ=- zUM_CYYLqG~pT%;6-&I6y<-iGo5QLB|D(2GFgcB*r7<$4xWAKX?YS?0^W#ncZ0KdDie+r+>$v9!+wF@>2 z$6K_5f!PZhC3seCB=oV6pz$Z{oD!Va!AePWbPHc$!Dl2^%;*Clf*JW-C%0;zBqy{@EY zf*>UywpGHnx6C)^#@Lmg1}j~(d89r+)fu%S*^Lmt@99lay(RxsK=K<Bfki^yD8q*2PH+O8jciO%o=p?F5w2V>(45Xu)n8GC%&zE{@}HCl*0 z8A-qI?$HcRbt-i$g#1t%0057~mt8x;fDHUV8E^n<3$?kbNo8pgWyJQ6Xw z^(PPS1#x6}*6U;yt;S0SJMBhH@0gTV6x8u^ApMTcq=b$nb7H@ju`e{ii)zenurEgS z6D1Ytb&Wfg=OG5SMJ2--L#A7`W04|flF2#w+Wo`GO|_!^_c^~D-Lb~y;JoWchj)#d)Z3xPV`yazE}mZKTj@U`|% zQG8SwTy#S-ds@2cnDMbjah_Nr;8Y1Pn2pas8<{K12|X*d)oviZuB}m$NHzHTy2^r} zk+5!Jec|@K*(-QFcT`^C_vD=%ES<;^=ifF7du+22YL2vXAe$>RvC0dLnLur zJUHNK2<}9LkPL^!M4Vc&C|X+b8ta++2M-Cp@lh9JRt{Cd-oS6qA=usAHB0(%;CVOH zbr)-EeTZDTp-GlIm7tK=s){|p=Tzk>nXf8{NC_pGz!ybJE=!JMh4!*t9$Q8}I~nt@ zis--oF#dlJadSUd4n0iuL`uZPmQAft?7!MB3eTCw?Tbf29C+c6+#$F!(FHeK7SHcL83 c@?9{*c*2>HHs-hVfO#T8$clioesQ_~0l<^NbpQYW literal 0 HcmV?d00001