From 5edee4a4c9c04c28a2ebb5243576c11a31f77a71 Mon Sep 17 00:00:00 2001 From: makermelissa-piclaw <276182804+makermelissa-piclaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 13:45:07 -0700 Subject: [PATCH] Add PWA install support --- index.html | 3 + js/common/pwa.js | 11 ++++ js/script.js | 3 + public/assets/images/pwa-icon-180.png | Bin 0 -> 14656 bytes public/assets/images/pwa-icon-192.png | Bin 0 -> 15920 bytes public/assets/images/pwa-icon-512.png | Bin 0 -> 53360 bytes public/manifest.webmanifest | 29 +++++++++ public/sw.js | 81 ++++++++++++++++++++++++++ 8 files changed, 127 insertions(+) create mode 100644 js/common/pwa.js create mode 100644 public/assets/images/pwa-icon-180.png create mode 100644 public/assets/images/pwa-icon-192.png create mode 100644 public/assets/images/pwa-icon-512.png create mode 100644 public/manifest.webmanifest create mode 100644 public/sw.js diff --git a/index.html b/index.html index 181d434..736f9aa 100644 --- a/index.html +++ b/index.html @@ -4,8 +4,11 @@ + CircuitPython Code Editor + + diff --git a/js/common/pwa.js b/js/common/pwa.js new file mode 100644 index 0000000..22e9e6d --- /dev/null +++ b/js/common/pwa.js @@ -0,0 +1,11 @@ +export function registerPWA() { + if (!import.meta.env.PROD || !("serviceWorker" in navigator)) { + return; + } + + window.addEventListener("load", () => { + navigator.serviceWorker.register("/sw.js").catch((error) => { + console.warn("Unable to register service worker", error); + }); + }); +} diff --git a/js/script.js b/js/script.js index 272e591..8cf6ffd 100644 --- a/js/script.js +++ b/js/script.js @@ -30,6 +30,9 @@ import { CONNTYPE } from './constants.js'; import './layout.js'; // load for side effects only import { setupPlotterChart } from "./common/plotter.js"; import { mainContent, showSerial } from './layout.js'; +import { registerPWA } from "./common/pwa.js"; + +registerPWA(); // Instantiate workflows let workflows = {}; diff --git a/public/assets/images/pwa-icon-180.png b/public/assets/images/pwa-icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfe91f15e9c753b8e8f87c29da768d68a04d551 GIT binary patch literal 14656 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/pwa-icon-192.png b/public/assets/images/pwa-icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..2adfcfbadbdb01c855a80009fa16bc65d958ce12 GIT binary patch literal 15920 zcmc(GWn0`_+ivhdi@QT{cXxMpcZ$0^rMMM$r)Y7CTXA=XLXqO`w&#BKk9e;+CNsx; zSV<1v903gfCNT`87d;fcbAi>+s?iUpR5PXo85Y_NrJL~fDHdxI4 z_~1QUYMZa}t&g^B!`X1?jYo!tV+qg&(RNTiy**mxpIQZFTQr`+_6v3Ra1nIFXNM=- zgBUf$2}!wNkI_wfF49EIgB%l}mvgDqoKZ-s z;{E0wByX))pz>C%{%S1&lwfGG&e<{&Ye$%ksfZ!lNcRTmIlJZ!z19KV>{sOZW*GWe~D+^&!N68 zqK~i?^H1oYL@+=G%pm#D%&%kfZV>a+oyf*4UTYhFRFS;?fs>S!Y-7@WcU?t{L`4Td zkByD_`uY-k{|TAQ=62J`IMe4GXjHS9Oi7-0=MHBn95Sgq(Q&rZK81#PE@cil!s&S& zOrceGHJlOHm(%&$b=i-oUZ&u4*1XK+w8g+Ow>y_z){br3Tf7j4Dh2>4kYb=u1nlDNKd{lqcO%Pzip1no5jR8q!1aRNMu?9<@D-9l}oL4 zJMcwaS#aOA&DC(J^KZjN$lTE__+CMef`$}mwNVW7V}+6XF-3|3&~Wk<4J#oz3}cs; zbdDUlQ)0}j8&ab*SytM!TR+v-U!5yoL|{Ba57jh2@1Qt9je6ZjW$#*_#&jmR+rN(l{;D5%~6OfWz1G z%K(Ohh2?Td-|6jGyNA#HA1bU>*~9VE;PQ=5fe2cGIMl^``C3g*HuL!F>Bsx<@uD%$ z2a4ar`J3=|VBMRJ$yv(JHJA%r^Gq`fp;MoFdQY>Xxl*UjD=AY|uB>r!krXw>`Q%Xx z7F+?3BC3|oZZA#}IKEe3g{zIa@PRo# z#bXJJ#JHE0w^pxJ^E@-|ywp)0FDJLz;=>%r ze}BoAJ1AiAc(DqOZ7AEY;tVRvGVOtcKAMSE|tu zjG~msk}L|*6z09$U@rTWOYWc>?!X=r zK%siku9C$KC8{w~w!d3D2wj{e8_vtiCj(#nQTrVUTL@&4nzjOZ4F9w6*(x zNs8HAo4zMCxH#mdz_p@CV9!UAH1XBTn^8s4Y*(jDC7TNu$_;M4t~x0UAV)h>uQ(Bo zoZy+UPQ6S zn(C)usZ_tx&+ju7{)ccGFQ$!cd;z@wx0i=+5n@KhrkGG8+z>>9zD=d2l4cI$W^mpPqpdk+=sM z=cqN?6-u$E`b;5mduWOmCU_Y-DY9^F?CcDiY)otI=$S{DA$W6@@(!^CYw#PQn*FOu z!p-FB*gX}@&KB>L?~xA&Od?`+GRp%ARWk%v&R7>28h+OK z<`Pnvg*OHe8T4{ZvKRec9dIS(m!t=ts0!NK`F<`hum2UE`LJfUCK3E{SH1=}Z-`_D z@m{p$vAFVv3iD-fYeu@i*(RldHwYjT}4xKu}Ct;*Vo7?hA^4ur4Eq@04xOI0ocWPJ)}6aO?JqB z&mOaYcbM`o9N61mtPQlbM%mHBbb}k&T{0dgzTn2A0i?M~hyQ;#)ajenP0#hAxS$eP zBOO=sic+EVdD8IbhxKF(J3m8b{Mpw{NInJoYt3He%zg^`gNI#fLVQAI#J} z(9i()hVwu)7JaMZ<{J8%x>;>Ae4hRHW&WR)4U@f*`z*@Ta}Z<`>}B@alEM9lJN1Pa z+5I0s$uFu+nbJ=RzY){X(jF-{J6!~PPPu{-TOB&YiyGXJSa8FR22|xN1fO_01ty2K zaC{5Uu9ZZ9x-W~B`LBD_j;$TsF2`L{)_P(cSQKAT^Sm3$L_nqp9F<7-RLWHnQvcj& zXkjYx*?<-M76Way?nEzfowS$pj%j_o5H^McN;9LbSGY1iL}>VZ1;TJEgP-BOtnni$0y>C2MfLa zi!?!CKh`MXE~bYq;u`vLaEe5)+Ly(l`!{sN z1smJ#yK#LG0;u#Z{EJ1Wr?!iWOD#Q>@rV}$vN+AnVcvC@>!u+0z_PW#>!Wf@*EQ8Q zJd6{@dd$qp&l#;Ov81G2Ct}hdh_BPOd-$*rlnZrAi@UqKVj`=c^l!l_lMbUn+q7G3 zn$N9^BV!-=$3aMu723uDnzAos0pZq^QO%Lnk`|NbcI-DO9e+GPLi860xTdEL6&T;t z@YP`<3Mwnx>ktTb*icd9XpcVldQhsRGc<^|4y?sz`A@3G+ zgo?=V?r4Z~$3;Yrr-;u?daq~X%69+u z_{koGc-upxoczKfk?$DXM1~oetv6fYjblG!|6P(Rb#D;nL+muU7o7A z@N_Ho7h5<>mQa9iZ53t0h#v%6W#@dfA=OUA+Re5FZdu8HWwFzrQ0!)*i}FICL6 zv@m(JnXc|?yT?hM?{USp(A)a;^>v^7!|Wfeuw$GzTo7sHZ55@uk&)2~rEr!%PNFA` z$aC^*7HzO_<4cs~>iWg6H}J!^%Tr75DM0?IAcm2-(1KoaCfrI&BbMPyQfliSQJozuPWwB0x;;*71Rj^a`-TkIvD4-SH$(SCs%Yn zS~jkqIoj9&!QuGbJdOO2DQd;6yfm_9PdA5$?ON9{uULt*c#7}qOmrvxHS?R?pOyV-S&z*$^eOXTYitq7@qeY~-%P=!986bC*G zke37$#zZnuq@a{_044_$nO`Rm@=2LtBp_CycOvu#@)Ntc;4-N!n`5Mk4Gj$elN}-q zgtB)^8O}MV3MN3O-QBh?{1N`z6(k;PSTviT(#@BhE4bPlwY0PpKZQb^O(-@iIT4I1 zrfSJT_pp9;Z#kZ}-~Qz~zVkE$0Lb2t<$kk&@0q_pTQ{H0P_Ar%Kaa_lfJ;83OFC4{ zR%ap0Q#QI60fJ`_i}G|B?!h<^LZqTp$zlSBHPkj@E?oc$px3T-=gV!YP4A>IhPmaf z2ZO&bxKFM+)peZx)~%3a;pTGAG@JCYb8F3ZZiZR@dve%`rno;lujS}c>FO7}74~s( zjF-{{7zsvg9gO6Roca@Ws@ z|L&HJ!Qjm;TaKOqS$%%*7}w=EUsN2lQ%49Y^P8}`LFV2_Jek|0eQHO@=IH9`S`}yi za_XjK$xubnZV@aWCfvrF`Ntq~ZtFMg;>bjPvqfJhOdFF*p6lSfh*Qs-r~15Xl-E}8 zqybSW6(pvpL&RDfyr-B9mzv;}74T~(f&k&Pu;?jR@kFPmCLpLv-l5KjyO{Tcrp=L&be$J z7?5N8QCT&6Pj9&^j8YL82fy_#eUdQgnP75O+bV!9D`7N%BQfM54(nw*@RZA|J$Zl&=5E_VhlI&V-AZB!R4C6Ze6hw;C0!j>x- ztbtdJT}!4gbKU*WK1SgNbTU}4jO)L+1?T;UZ;Ila&N5Ux;OOQooq-lVDSGSM%QgDxCy<7)2E348?CkvZQ?-FV zT#iPxu8D398{!#~g1e9O-ePf6kMLo~;B|>HBZ#U$)f~?EX+M2BhgUtUi`%79_zD}+ zhP{x7KRyt(ARPamT8Sdov27pw`)JAu8+d3k$m8?#z^g$V2opi>a{P|bws}IBK3n)W z66A0d<6U<#S_k>@Ti;BF*IUQ zcoJ~_8^?`(?WB-1ZX^P}VWvXfUUaLf9!|Dj*R$Hpq_8w|S!sY0O2^*Ms<8$F4IU_L z$6s%t$T%|2QLLXgh#&sr{s!qsuDjRRDh$|u;2m=q_TVXZnEO#JxRYC9tD%>((@@m8 z#Gp2U5T-#R%sbllv5ZCL9TTNyexeZP6_VF?ihpagg8V}1CfptE7|%#d=&+w`9L`p7#vA-kSL$2AlEGMbCl`2k$13bmF5IPB^mf7j?RU`;Z` zWXQ|-ce6}TWv*!kfm5eT?5&5mxcEiS$GbdpS5v^ty$TI9Ab=e+q28(Xby(vZ)t_o< zjGbJHp)f)!B{mOa`TQEC9x%%O@^B&Szjs-tm`&`nmqgDXKCn+$0RA_e);go$4jj+v z=+WbDpi4-3D9G4qOA!m-E&RlgmzS4obn16sA81R@&d!3K=ktwxk4nYAeX^~L2)UD8 zOl=urv+EM4Il#l1nre@53sM1;Ocb!Uj=s~Kt z!+j!tU25&V+l^rcOEUZI*uo@C^8cIFUgxEtovFFEzfK%_31b$BOH{ze8q0FBWgPGF z+&`cEEKi9LD-R2sXUbTD4l>IcQTXMLLL3M#$G`A(Mlb zQmAnYfy(ys?CA{pcqjRI999;3DxryPs~wpR@fT*chc;a9=;%<+jdkl({c>F&9I;3C^2Y*9)dCPpL9^-_!Nx<^#7VWJ|6QtfEmF+BS39SL&P&e~=6hp=u zI$iz_oyH*TPIk`QGBL3(r)1a>nV}6w;sgM?Lk`Hxn3)5k1o6lW@kubJ)m|&+7gX8C zflvD)sxdeD<`K5=~W3 zmcpXSR*jA=W1R|@U#`nXSvAAMpdhK>WM78tz~&9UNwQ~&A^V+Ntu2TBTyncnVl-vi zwtrzK?jd$vj*dUNb>!$CU_GOt-as)YzjQB-C*e>C|6N=#Gck2l?(ZE9{6zU+nK z%AP#))Yj6P%3w7gip5J!O-;|uyVer{L$NUoWuXw7tP_2~_13lDdVFTX{jT{?ncds^ zE{i`sseP(1W5-xwr4XiZagp06r;WLrhx@TejwISyBOtO=&}CZCzJPI@)>dlj_#r0= zB|t9O2*(yj($wADB6_e|DUyS7FN2dcSY&(Zp(Y9ph}wlon6zU6atzH32h80)g(5n!G?K8TG}%zlm6pDmp$nEYABXCtF8jh4 z9d!Q)QRMg>AHQqVU)NUDN`~V%$zl_ot96(V1; z{sW}5#nOougAZ>#vrOHOGS(9357bl6!A?5|GP>I^kipd_?vLuwqQZ+Av8?x#Xkx6N zaW!Fmq!`$=jbGK(A{QQgah4nLnyviYu0)Eo%GlML)XK!Ts-Q~mHdRI0eWR;!RfH8g z3yC0t5%m9t7M(zl$wetOHDMFTc(q7=dih%(1Qy+ig!~^5g+HDawT*L6q;T_JJuto8 z!SXSD_YZ{QGHL-WgeLkxFb%`coZGi&d}^A7h4_uTheM4SkFVfW6=8qag|Y>Oa~#-E zX8B4BN2vlp7ThRICs&9gmxk~z-mgXfyeHuPl=O_WFXb9aT4%wbMU9uF{o_5n-64OL ztRanWIJDXq2p-HayyW_Y9Z-1uo|@{l3O$`fA^qQ?K`h|SvK+@E^h8gpI1hpmWtl#U ztl^zO{K7_X6$r(@`K|gE67u+vY$%qQRO~iHgBtin$ocy(`-*aQyP8Uk*?QLMZEKHih@ByD;R#1Rmx62Qt|6GF?k{g5X)G()do@+d}A2Ce=D zT0fV?EpUhld9vD|tE$+HWrFm#+8=ljrUL#d&eA$)7Bw%K?fi_Jfvstf+A++K(hwp*hh{lU}HwGQFmTP-=+w&ubq)(Z=p z!*S*wfAHh0!;ogcJq|NU0b$9OY5eiLEc~)M{Te6?WbncbT+0exZLcxGU-8Fz0>9$3 znR0QSzr(2GTh5?z7s9LPoX`KzBYPZ6a!X9C=&E1unBM{wuAT`Dcsl$5s}oBq{&n^L zY9Ex=+4Z=VlJZ_)Fd@p(pv=QWK@mZiGixI=R%d%sZ#wD?2>{RFE^jyU0^b2!B+Mzzw4*X_SqFcEHZJ3MH28S-9uCH+47`cGQe_q2YPL-8hq4&NYVtOmI-_M>Y>3$(vG1M5vcB@ zuaNxosdL>C2?EIK+M9%_8WY3QHfW*7`d;nEx5F7m*3>oe{@Q*7g|6OIyt;l$GLM+R zL4lD32bgftX|mcS-_7;yl^e-HAi=VSH^4%Kt1Q_A!GNW;DIczj%FA3x;oq8`_|5<+ zM}ApI2=rngxK5s-qGh_$Wx_355;XIRD1pfpik+UbvCiL5yEN^Z^aM{341mcJMiC)$ zd0cj_gwdW8AjgNv@e3B)KBvq|+CwKZd3fFMb>xYI&(u@EfB`@bMWnvj3nR4&LK*C6)&0~)j zYs!|Uh)0&9G7z07B@$R$U#Qi{5w=8_9$AYc_@g4^RK$G=`9Jo8UOH**(Xq zh~s;KYx0<_igY(DLG0J&RYpzXilPyLK?gc^H_zA%)BH7PJBScE*YG|OTeaQ4G6Y4k zz)AyH#9`D20P{W9wsPhCZpY1bu()*?Rl)ZFiSTV;72!+MbR#^m+~~hm*uoNKAAFk3 zVJ(gkbn0PwxCm}T5w1i`u;3n2BfR<&^3AOo8EO3slY#*}z6M;dc?8MYD{wi6t4#s` zmkF=YV9h)P>nwJCVzs(+o$QgYXqw9V^U|0p1et_z2Xh*vNig&2MQzin*95ciiU6+6 z1B^{(9Q5=KNBnpK2G1K@#^*2#;8|^H$qH&m zsH;r6^vx>mk|A9UwG@z9`W|-V2%SP@3G?3#8HaVf>_xqD0Q52SThssHi{{#Q3heF2}iY4$s=3ah5t={>-8;Q5t@VgPQ^r_zNnx?h<(a6r0?K zm0DU`gny$cuBD)&06(;t zh#`BE5zXpoMv9BcVv0)q^9i(wp$GjRKw%f4r$zN`IfM9vu_>iRI1qEwcpq}=k%;Us zbU}e3;hACiZIv)qUbamuVxLuwQC*?035HlK{e3L#vyI^B; z*!|&pe&=nn(9rMx{OLNq=k?;_{lfVDI^8W*iSmE9LwhAJ?)OyJ`Y#tE=DdSHyhLlt z+m>oB5*MEGXs^auflobQli?!T>5Hv=D!c6jm&?eK8q z*qQ8Zp1;cGckOEYS)V@3$59(>>}HR%)Tneidv%MHA_{ei4!Ebu9=r@68|uKpG&Z)X z*~amvNB#FY<<&jVaBBR%Z){YF&HruVr5{9==pY>4xzog00TgcOOBaa)mHt1rOvXkBoQ_LXI0~Cc?y=K zxz1pu*n}0nz^kM8gB0|S*~W>Xj%j9(`&4xK&1S41U8{-&3G(fa_Xn@DwL4**9K`Q_ z5UciF6KwEw<%vR7oE*iB8bXPW-_jETYvhf#^UEp%fsE0V2IoE%LFmLGnIQ~UGaCt2 zqe?yOo;eJ)U}Q%+MpTT$K1FQ-(`VslTtX^7Ozb;T() zk%+)F|LHyE4}zuvx<%+*8i6GpScv1#^{9$%^=*Xw!z{l|#pZEGejm_e6{^VL{$|Ud z1_`}GsC@3edv24y=xFy_

*GMLYa147!`lcfH+8W#l$Yb&=8ii2!LrBLkho$Cxh5 z>HH-rj77#X1BdN^`GJ5te6*UISCh=-kHf)UzF47w_j@J?mRrC;-9jfZM*Sw7=*$ zrk9>YE^XJh2+bM6m4jX@2^uJC&6G3JhFK#J3ispIugWH2;+vdf0{%~^kTa2D!929B zbP)=Ks;J=T4JvL*lQz%Gp$10U?B~KO@1N$RT?Gj0Xx_cSh9Cb~_ ziqMpJCR{%xMA&{r0Z65>0fIlPbM>|{4E^awAQRmT>p-N84SZpf(IJ3Ra_`TSgsp{m zngaI7T;nFsX!HADX?6f0R`t-jbfnPVvghzRR5_c4z^Eb2luOW z1YsGs*0NXXN_a|tDW>)CpA{%n7_pEn&swKy%hPe&t4AO@g^s)#F}GNW89Ms38&-~V0*d$G?wk|JQ; zKIr2iXnSsM7d2WdW!rIov*Ts!G?qxX?xg2ycUMm-GVQJ{g(y&$Vc@{oEzZvS)!H2v z3b0d&7O`e2OIeg%$~L{MCi9QjwJ2{*^oUmj!ppp*9N&MOJ#Z`bc&W<|s$`kDzcUPH zYFzl0KUu{2J=KGmOxQEb@3CXd?~S5l#UuE9mes`EzEA|70vk=HA}6Cluwg5!-I_Q4 zcDTP4o&7-4rh&;i9CAr4IO!K5_wpn#*#r=1Vu9~B`4<~)>Si_LV~&i?N-%QTY1{jl z@=9MHO8AvJA*r|c2p-(b)vx>V?UD6=Wk`-h+UuEkU_%A}z%8njZ&(r-d>bCbk_uYc z5|p5Bz=q;E(GrFmB0blMn3t7h@d>mz9)a7OjV-`yDH%I~Z3}*iH<3UyLk_iB;)-V> zg}HS^-?VmjT*~&eKZ&-fPdedcn4s6=pZDX8`2~+`1V9&%i4)AHkedLCeU8A0)Q+K? zD@6g=yb*fXa06Jz{Twoz$@uj->eFBbmzC?M&tpk0FZsU_PPcxU3S(f090l z^1mk3;%fK|*lV9~Om3Ybf%_-n|SX z6R&sH<`$jX5(QdJ?m$h6ItL=4l72^k*;|mpA#}x z+Yc9pV2naDk5d{F>%BXH0ur2p3&Z`pwR7_s4)XZuXw-46+KZ9JrA3)RtFZ?mc9a&| zZ9;bZ#0MTb<-FkzPN@sixHw znIIYw;V7uyQsw>Mz3b;(i9L#br!hp0NT zv-7k?L$+fDtfZLj?GS$^>o3?qm&8bMz7XbV;5B{4zIt(D)gg44?9o1Sd8|XB`s<*- zUQB-csT2NMriwT&D`z~fo4@g879CA5boqoXNJ_nfA}%|NyEd0=kc6H@!3qbN?w|Dt zDPZtS(dA17YWq=fc+;efFN8=+KhX-PO2rlqsJW_Pa zndqL9l{6L;u_$Wr@fH&`$*ZKKsH3Gga%sZxfdY(N6(R^T)&x|sU|uN`v}rK1m4UQF zZx9uW{moAP4JJ0Du@6gTR{d<2g8G}M#mxwq3hQp!*%7(%O1)OQkU|&86t_Y*H{@9b zwas5N{$Su54Ms(ncaND(!0mM2>6hOqNY@i-V0iKKgCOm8m1P$881s{6a{mlF(MSbE z&fM|@m4O)e>R=Z$t~$tKaa$|)6rjzvFr`M7Yiac$VO#pk-+aMNmm&FIOf1 zIG-P>Qe7o{x3>z?j8kyh)sVOGGHys!8ThSN-j2=H-iUHPO(-b=jA{7JqgH6pkT;o; zx)e=ea3jW-gaX_IAt-EnjMw0>$E{lP9t-&BG8L#Y8@lV z08KHqF9stx!Us9Z6?RNWp`~lBUYOg_g5|0i@H7(IJw=%pg)+XrNN{G zMA$p?aWHWh1uBRDEiSGN! zpGTcme4;c(ZY^n0#e>u~uzge{z5yBRP6s4Tf{+MEq7pW>&)2VO5=<9uX-0JClg8gajYsS|E9m%*!-`|mxC*3k- zLnQpFCr5W#4qaqIpXaZN!qECtTkseQ1;dVN!Dd^j!?R>~mDQO*IB*!=GFIA zod68GiaO3E{-1Pg%564BNUe%on?$A2z3502Gz6wCu($|N99PkvsDNYJQ`+d>Pti#?T{@zQA6X!CQGrGBWJ!EKG(UIC+z1bN34yoim7BG zev*ypQ6yX>uFFdWkZNx@8~F7Yu+)XM6y}XOn;5IiYZz*T)#DM z$DM5rJ3oad0#%jMXdZ=#tvx0t=07hkhY&FZihl;I8w5U8857TS@XLDB-J=zthdjaS zMO?vsb__FTLy5ZL%dv*VTGF7?LMr2XNUZ%ymP?H!9y_}^F4Lom6}cXIm8a$zI*P?3 zW$(;*ET3~E+jL8%q{(lUu)YE^Ezsan>vLDuehn9P;VXlN2p%+uYO{(qS1NTFl3_ZU zrpj$Z>9%)~(`;vxD=Vi(p&o-nj}@(Y*}XNelU|@hfNi2$3o1T`4hBcun6-zg_oPJB zPs+Ktxt$i`1GROsYj~hS=qrreR<_m6=t*P(&5eV6ddM0TO7#K=J&7s0x+v9Rx^UM1 z*_v38sT7JNW@ktyB_r6Gw>ju(pZ*4?ihj1u{a%$m7v#G~B!f<=lt8hD?21zFib|{7 zD91nst87&hd>+vOEy|VHI!EMg9pp2V5O#b^NZAlK=oY4-d>#k@A1pv=18bgRPQ8eS z>7F@XA7UK7bsGAw)8~d59PKd3l}m$y(A3b_2zb~Oex6M*QhBJcBEV+RT-}GM`cB~K z+1cnnmi#wFH`g>8m1~4fPc?4Sf%4b5&Ch{uR;vz%-X;!SN2}N<7USu$;!Cx}del+QeU_6-s$nH#dQy4rs)Ng5m%{&|l3 zqrVlUwO|9#fer&# zos0Lt!d?7Ze%e&zziW|Wm85}WRl%eQ>fJKVG*#~WZe|q%TC=S@m#=*jJSnuwlU2K$gY9%d1@2Czxd(iWoVANmXP~l4% zV;T`0>74$@Ck~4juHA@ie!3+Jc;j66yfJRAA#RTZ~yBxnRIXfvvUtTeLsHoVYi$jPELIs%}EEu#&9(Nhi!Y3aizG` zX-?_=bE^$}B^&CKMk_2#9e$mFT&PiwDJr?U2Fs_hb4TiwA5wgU5#o3sBJJ!M=dwS@ z784;vq)A;+5-K_u)buU#%y2pduy^cR;-U_1c@L9N5f;-WsygG(O-7I2)iM>7XDjfI z=V+h+%v0Iac^O-l&o&XPbi_CiB@#?zS6dnVYCMWz%2oVEs-Mb4DypjdZfB+c3#j<> zOmU}ou%U{1ZF*>niw`J+0|vs58^1UMkHz0KMk^lJdp52s%a?{q>@@pgq2aIgS9GHc z&n*6xzjixuO;y3$*4jv^xl<9iD@@O-rS{R^oaj~Nbf*bT9{~XBm;aqre`c>qJAca6 z@FJP6vgJ=4+)--Hr;RGp|%0Vu9r!3NCsoMco>vJL! z&=S**ZdQOr-mES|&SAeeWRNw{lzpsRKD~x9p7LBTVaNIG&~m?%hVaCMaUwq{gh2H zoD?hzQQcG*&&OXLzNHmJNMmtxVN1{^))n9Ph6 zL~(c*=@70IxF(xqdQ0c!GL@2S+r$*ZOdE>dQk#*vgBG;r2{@99}qs$fDB{tR}Ex|r3`3RHTXtk}%D7Jp*R-9_&WcRTaCtW7Bi15{y z^9xr*D=b@t(KZp5X24NBSa=xnL6axzh~nJ(uzyk+YJWP|G=+sCezh_Ela~E z#BiX|M=7_GVuKD67=!?#RVK(U@zFE`EXva27Kejr$OEtwJF>U%9{)7?p9as)D-Hm? zh_9iUh)X|>gVr5dIl5|OlI%m&4-Jqopmj-6_G-LbQCz6G z5Xv8O%I4*9ec~mDxn5vxXvK?-3mQNgU(j5xF=)F!$aXU7_HSE0ne^a~RX&F)Iq{|X z9wk)_PE-X11mym&h=_>5rU?`j)Q&Sxs?uy@nhsL+NG4J8=1>Pw(KH$6s(0(}br>l# zv~NN}JpnoHU&H&ZzHpo3`8}W(A5$12s)ztcfPC=&3I^gy5f(8*T^*zU#npGM&#UsN03T=I|sAKtq`e?(E@z0JMb}G??{YcpI)+=!a zRS{Rj6qrcnusoOm_d)#xKb7DHFK}N_`fS_RbPbWpN-FfIYAwhR5#|4tmzS55(?xHu z2qn5KC3>arlx!Q4*;(f@l{fh4nYZc^ zEuJWr&Uf)?5eZp};d0Ouuq*DzGkuOK9Vp~QuB3N?slz4sH_!9UY@95y_tEAexHfC{ z4Rj^s8L;6{=(AiNy?Wf=r~6jC!H& zi^c93>M)29n}@+Uw%06A)SfGsLkdX>mjV{bjMfZ7Ct3%AK@t)sBseNqMuhE8K>ACH zWD%hB^YBE}Vv$BUxIEa_^E!q`MIkoZ)BQ9{-*aBNX8H6Y8BI0BMnk(-rGhCetwauU z6wa3&%Ji+`GUOK_UicoWEXu4zti>*Al?ecFKmb3IM-Q1QepKfy&9H!j4w>xMRt{IZ z+@F<`<$WFf?>idIwfJ&Tz$RfW_+fy93;|bPUmv)Kz*`_sf$IBc3Ai_*mSCvdaaj_n z4#|qe40obF!<==R9K}3Mv>M(;YfP8M4q{58KJ1zShPVzHIv$eB**nW?c!Mo^<~6Mk zOZs(n%C>}jPGhmRAjNa_s)cuOKC8V8Y8G0}a)wP~T!m9|kwa5+25Ux|FST(R2CTe( zZd~8L_U!^ElE8D|-Q68{3;u5ObNNg2!A;3yqpK_o2Uj?%rY4qT)bQUZ33B2DY4W5? z8uBC=2JD#Ozu*ZoRjzdY$epjoHmmlez4i!v3a~`XJ^dCZF?|fft_)!KK^m!5wP@A6 zcIMf-Zm6N5Ver2K$2T=J_O85hl*%b(8M0rZ4n9o2?j-~d4YD8&uy81jdzv&bShHn< zIjRh0!-v&ptb}1p-T2|ZS!IKNUBqPQQo$)M5SijUxYKh*GED)U`7%YVan+tJ6I!%R zhrz0G)vSKy%(H6o3;0K_?17!S^|RIGNvlRukamj-)9-!C0!W{ceeN^nL~TrH4HLEh b`_1deBeJ?aoks;W04`ZcC5c)wlhFSMcsD4_ literal 0 HcmV?d00001 diff --git a/public/assets/images/pwa-icon-512.png b/public/assets/images/pwa-icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d0104b0c638367a47bddee7b1dd30542e2e77c4c GIT binary patch literal 53360 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 literal 0 HcmV?d00001 diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest new file mode 100644 index 0000000..2a16e69 --- /dev/null +++ b/public/manifest.webmanifest @@ -0,0 +1,29 @@ +{ + "name": "CircuitPython Code Editor", + "short_name": "CircuitPython", + "description": "Edit files and use the serial console on CircuitPython devices.", + "start_url": "/", + "scope": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#673ab7", + "icons": [ + { + "src": "/assets/images/pwa-icon-180.png", + "sizes": "180x180", + "type": "image/png" + }, + { + "src": "/assets/images/pwa-icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/assets/images/pwa-icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ] +} diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..d67d9f8 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,81 @@ +const CACHE_VERSION = "circuitpython-web-editor-v1"; +const APP_SHELL = [ + "/", + "/index.html", + "/manifest.webmanifest", + "/assets/index.css", + "/assets/checkmark.svg", + "/assets/ruff_wasm_bg.wasm", + "/assets/js/device.js", + "/assets/js/index.js", + "/assets/fonts/fa-brands-400.woff2", + "/assets/fonts/fa-regular-400.woff2", + "/assets/fonts/fa-solid-900.woff2", + "/assets/fonts/fa-v4compatibility.woff2", + "/assets/images/favicon.ico", + "/assets/images/loading-blinka.gif", + "/assets/images/loading-blinka.webp", + "/assets/images/logo.png", + "/assets/images/logo@2x.png", + "/assets/images/logo@3x.png", + "/assets/images/pwa-icon-180.png", + "/assets/images/pwa-icon-192.png", + "/assets/images/pwa-icon-512.png" +]; + +self.addEventListener("install", (event) => { + event.waitUntil( + caches.open(CACHE_VERSION).then((cache) => cache.addAll(APP_SHELL)), + ); +}); + +self.addEventListener("activate", (event) => { + event.waitUntil( + caches.keys().then((keys) => Promise.all( + keys + .filter((key) => key !== CACHE_VERSION) + .map((key) => caches.delete(key)), + )), + ); +}); + +async function networkFirst(request) { + const cache = await caches.open(CACHE_VERSION); + try { + const response = await fetch(request); + cache.put(request, response.clone()); + return response; + } catch (error) { + const cached = await cache.match(request); + if (cached) { + return cached; + } + throw error; + } +} + +async function cacheFirst(request) { + const cache = await caches.open(CACHE_VERSION); + const cached = await cache.match(request); + if (cached) { + return cached; + } + + const response = await fetch(request); + cache.put(request, response.clone()); + return response; +} + +self.addEventListener("fetch", (event) => { + const requestUrl = new URL(event.request.url); + if (event.request.method !== "GET" || requestUrl.origin !== self.location.origin) { + return; + } + + if (event.request.mode === "navigate") { + event.respondWith(networkFirst(event.request)); + return; + } + + event.respondWith(cacheFirst(event.request)); +});