From 729456b10d811ea7202f3c28c0c6ea1d3ad78807 Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 25 Jun 2025 11:47:15 -0800 Subject: [PATCH 1/2] Release v4.101.2 --- CHANGELOG.md | 8 +++++++- ci/helm-chart/Chart.yaml | 4 ++-- ci/helm-chart/values.yaml | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a16bb9380908..f166196192b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,13 @@ Code v99.99.999 ## Unreleased -Code v1.101.1 +## [4.101.2](https://github.com/coder/code-server/releases/tag/v4.101.2) - 2025-06-25 + +Code v1.101.2 + +### Changed + +- Update to Code 1.101.2. ### Fixed diff --git a/ci/helm-chart/Chart.yaml b/ci/helm-chart/Chart.yaml index 2d03e966d2a0..65bb068fe427 100644 --- a/ci/helm-chart/Chart.yaml +++ b/ci/helm-chart/Chart.yaml @@ -15,9 +15,9 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 3.28.0 +version: 3.28.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 4.101.1 +appVersion: 4.101.2 diff --git a/ci/helm-chart/values.yaml b/ci/helm-chart/values.yaml index 2785e1bbc4f2..d05514135593 100644 --- a/ci/helm-chart/values.yaml +++ b/ci/helm-chart/values.yaml @@ -6,7 +6,7 @@ replicaCount: 1 image: repository: codercom/code-server - tag: '4.101.1' + tag: '4.101.2' pullPolicy: Always # Specifies one or more secrets to be used when pulling images from a From 70be9fe5413b21528cfb01e6b6cf98c9ff60904d Mon Sep 17 00:00:00 2001 From: Asher Date: Mon, 7 Jul 2025 14:20:07 -0800 Subject: [PATCH 2/2] Add non-maskable PWA icons It seems Chromium cannot use maskable icons. It complains that the "purpose" must contain "any", however maskable icons are not suitable for the "any" purpose. So, add pre-masked icons to be used for the "any" purpose. --- ci/dev/gen_icons.sh | 14 +++++++++++-- src/browser/media/pwa-icon-192.png | Bin 1804 -> 3276 bytes src/browser/media/pwa-icon-512.png | Bin 5265 -> 8489 bytes src/browser/media/pwa-icon-maskable-192.png | Bin 0 -> 1804 bytes src/browser/media/pwa-icon-maskable-512.png | Bin 0 -> 5265 bytes src/node/routes/vscode.ts | 22 ++++++++++++++------ 6 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/browser/media/pwa-icon-maskable-192.png create mode 100644 src/browser/media/pwa-icon-maskable-512.png diff --git a/ci/dev/gen_icons.sh b/ci/dev/gen_icons.sh index 049e9eef0864..39d509bc4f4b 100755 --- a/ci/dev/gen_icons.sh +++ b/ci/dev/gen_icons.sh @@ -24,10 +24,20 @@ main() { # Generate PWA icons. There should be enough padding to support masking. convert -quiet -border 60x60 -bordercolor white -background white \ -resize 192x192 -density 192x192 \ - favicon.svg pwa-icon-192.png + favicon.svg pwa-icon-maskable-192.png convert -quiet -border 160x160 -bordercolor white -background white \ -resize 512x512 -density 512x512 \ - favicon.svg pwa-icon-512.png + favicon.svg pwa-icon-maskable-512.png + + # Generate non-maskable PWA icons. + magick pwa-icon-maskable-192.png \ + \( +clone -threshold 101% -fill white -draw "roundRectangle 0,0 %[fx:int(w)],%[fx:int(h)] 50,50" \) \ + -channel-fx "| gray=>alpha" \ + pwa-icon-192.png + magick pwa-icon-maskable-512.png \ + \( +clone -threshold 101% -fill white -draw "roundRectangle 0,0 %[fx:int(w)],%[fx:int(h)] 100,100" \) \ + -channel-fx "| gray=>alpha" \ + pwa-icon-512.png # The following adds dark mode support for the favicon as # favicon-dark-support.svg There is no similar capability for pwas or .ico so diff --git a/src/browser/media/pwa-icon-192.png b/src/browser/media/pwa-icon-192.png index 3f28593b3aee40b52970a062bbce4c0bfbe7fc8e..9f46dd830361677e12f562b94e79375fde91be9b 100644 GIT binary patch delta 3160 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 diff --git a/src/browser/media/pwa-icon-512.png b/src/browser/media/pwa-icon-512.png index 7df85f7665acf9dfa09d1dfbaccd3c0e6a18c7f8..9b899e8d690edaa121b0fde39ddf61827748d9c8 100644 GIT binary patch literal 8489 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 literal 5265 zcmeHL={wW`*Zz%+LQ)K}l|p1<6iW7OFc^FGbu8J9C1W3{ED71ytXZ;-b+Q*R_OYpT%Eu+abjK!;FO(ggsD3rGQ6xv;

uJ!O>hz>hHOPZzxfwfEpH9 z-L73)nO)1Q!RAn*tx_vXHGdqFT4Dz+^$mmOb~Y+1Du}&EaZ1)9?@JNJ{D3$F;GhAn zfq`&}5Jk|JTwqZfK>v^akD7`67+o<_l~Q}8WXwuq%-X0q(r-9prWV;C6OpjabGj zZxnKC%kD*I*y3H{lCs=9#FLlrY2b6%mic10$*2kPtCLQqXDJ-2Jk$I|#xpUlH5uPU z=E#k&Ur;38p00A-9}KcI=w@RsOBrkQioGVt{x=QnXv8bm`La1W+eOl7^GN(9m0%@N zKGuiMtZqR4N`Zb1yY2+2UL~X*HXeL%^3v1prCr^|+)+BS^&7!i*`?1+?zbY}AwDE> z_A`JqU5u(c3DiGS=MY zNDfr6&*GEvZdVANy$xx9p5X!N#gm7YkrEYTRut(7)_l5}+aiJ_I6}j~;`PgI;~e8= zD!=Mo-OVL`tCaUEJ3;S(BX*3M7e(w^TBCGoPb)chT94GAjp$@+&5)94_m(z3NAqDL zi}_heWee9nz1dqD)Y?_S^G%IAXKPiM%~0$7CV^Y*#rvr@xazIPNrZUIKVLsZDaSO- zs(u?sDTNGp%|ErhHyZ>y_50mI*ZkBU+4rO zGD3JuKQ1d;|EY)B2wsh)-MY_ErvNNS=EyLOduT08V1(t+F2sX8c$Nv|I49+;NMU5JPWo_VR1J>uNN@MlTMpKv5fsCZKH z`#YY3#^MYVf0bFTX1Kj_jDK|9`*^A$sqj*H@^SMdbgGcuI@$ILZtX7y8SW=P@AHLD zH5Bk$krn0q1^1QQqd6elISUFol&v};N)DPPJP43P2u*`0ce_o-9$I8h9yq2nlYa+9 zxPcx=pMCd^5Yv%4;T%H>N7#ev-_@NS?TE*CZBDhNxrIJGpuwG|G!$NHhWKbnIW$st z4HKDne^n-blFng|Rtl9LiZpzdn9P6rv2E|yeF2smm{e2~gzb&p?xVr0A!CvuKY4V*iXj$a>r<1s_49ltfEvA7-gO(6ZsC4aF z!t8(wlfDPBbNkQX2kKIUgN+9x)1Okz0F2oU)`Av}2l(_fw zKEos(P~%RV&f};gPF?=Su{lfBc?PmCJhN-n0wsFx2`zXO9%Q#deGo~Vds(h)`1)W1 ze~7}e-swM~O**okyr94=aYzQHwJS!G^FApUMi|)1EHRI+irtAOmQ>GJ(B!nA3Z{ArC^7LzS6$i)!Hr7{GpPv!RVxg&xZXPXBP>5Temm%lRqxl858 zQg-XOu9#@#!1*RxSkV&!P`t?QWlP8PHdRe<4 zHvM*MS4Zz;hyEwI=XoI^{kZI`<;v}Z~5 z)N$keaJ9nWT8GfTFYp@lSz2x0>jfWY95ChV(;CxcjGW&wc1LYl z{NVfMsZV>|l&Amn16kvFfrs?0p8j_Cy-vPwKKit{=MA_;)pJJG!Q2z^kxK=eHvi9S zq+Y7t$}d^7qu+oE)Po;5N1#A&Q@Uj?DF-hFs7;)R-sEls|E5xB%{2<)Y)=X~+cCI3 z%{8J@z#Z@d|IHpki&IO!B=zS8o%2CW7{Y?G7hmcgIZ(`$bD%iIxVQ?EKsCYlti@Z^ zRrG$t%K?(DR*3%*DV5-5J^k-Srxo&1-^Uz-kmzbVlNO?5q@bvFwPOF0o(Y=`)Cp|F zM?CcHVB4gwNa2B=QkT7Zs0QXw47%(jrmBZ7=cSdQt)ikxq(P%Iij8E=XO2IrSy1-j zs>21CtfKg-vBxUYbwTx!t(5rWp!x>LwC#AS#=BVHK9ecD)4z6@ z*}UE=kXi#s!Ytf1X32?deZXs+R(CRywbf9uHkCGR#3G)0mdMP=>>Z}?ZR z><(VP@}^@6eY}I^Uh1B}N^CmEzA1(*;v9rj$DpFh6S5rAUe+DCR^klTl-uLbJU3&M z+V2eQQ!Jd)H)ofrf%f408`I8gU{4MLwG6p<%|ELz`YtR&4Rr18>MP86S}rW_@8kkK zg!~wlhm@CcTXlgXQE;RrmcT6g)gd{$Ary#DqS&aHky;QMZ5{smNdo5Gh{PQ25Y!0f zdsu7AD@NI3h};1$m);}CSNw{(KvEw5%fUw%GZmrN3ZN1tijSV}yZF0yfIBo+kQGb_ z*RFUo-R{xl7zL0*9y#z?`@#J$%DI4i9FRnF6nwXiaLk#LN^uij0OUO(j&+mjO+pkv zqe{0IXzz#UKxp0zm@FAaKN2KxnRC51Krq5msqK7B^ptsCN<< zOjlLb&(#LBL>r)>7xf<_CAROZa;gY@RNr*5fhO5CwO6lVPfi|kg41)X8CuyzgC`o5?o~#Ik z0Uh1@awQMu_Su5^Jm84)QT~wkUy|}r?Ejpjgs_!4+9s-|0S}ZmUcc8o$DMy>jRL}Xh(kEbK zJ`Z)-`_DN3S@mTjqj>Y`?K~gd^}3CC-AHiWi%zlqTpo;{6I4373Q|Ym?QpT2OE41@ z)adU0qX;TMS_Q zxJCC$QSW;;ebWe++#+b|i9EqWz#?rOTfQE!LXU{@xmis1Hj0VC&uiv)_PGcYod?FY z^{(u9_3)+5$D}lx_2CHoC(7u*c$M;hdM`HgPj(i1TGa_tICepbTHkhp+hVCof8x%3 zzCu4%a#FOuD8Kk=>_1-EO}*l9n-elrrSO@%*rOB9MophYehJck!w}rK+FV zEWI~J(ZPVV2v5dvR_fjg{aG#1U@5$;5vf2gawdqoO7GwHIaw?j#<>pL5B!(T=G2{V z4PAT>YB=|1l=q8aeh^ifjEkd=;AW{ADTg0EVk~6<2SKXKGZutJ+_JN=kx5CvVh&rn zn&*u6&d4Q z-i+_!Ul(Nu5Vp)UE`Gv_Y*0PNX<+>5*~WP|sBonj2zuW8XeJ1&s(FqlupgN|opD-x z5U_(p+(p3T1TBNQT4&YgrE4V9++KOaA5vwKzdx9{RUen#5|+e(Gl_pp$-qIb7sb53 zRc(=Jc3Js;UBb7AxKexB=Q_kB&6?YarqmXKJsgy-#|NjN>Mvh3`x$~4> z_Np`yE7Y^V^@*ICVLvp1M`|OL-2L)kn+KJf!Xu20r=1uA+jL6jpQkq4bj{@F*0xci zm84pdy`UJ*J&;6F3AGC?zo8iL6HNMNMk4Scg6}x&uf%cozjl7u^%(JP-uo=9LH!?Z zxeR^|N0QiIJ?Ff-9nZQs=QX=58&u)GFkG{>DRDXo^*t&5y8ignOU)0;WILUTuz|aS z1=iWtm&CTU&5ItkXt@n`2h<1Rd~4Dv<9;x>V)}-+IsUa>F9f4A9b#|MSDLnZW-wn4 z6?AVtY_xAavb?!ZAs#d4ySvD}l~Oq^h`8!~<8C>2xJ?TRExJ4Pis>So5Hzz0!>_~;taV-8nZb^dC90ZT$A}vm7^tv`VZiP=BDj-l= z;`oXEYPiBk7&2Y7$8BCfQd$via98*N^P+Q!T5qow3j~r3VPRo0H0UfrQNwOtq14me z{GpB*>hCYhWI92XKH!0HV*^44>=_r_Rz+5s30M#$04*~`WnZ71aJ`8;D=itVBZK)^MXDio|j F{|{pp7ykeN diff --git a/src/browser/media/pwa-icon-maskable-192.png b/src/browser/media/pwa-icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..3f28593b3aee40b52970a062bbce4c0bfbe7fc8e GIT binary patch literal 1804 zcmcIl`#;nBAAe752x(m$xwLbLQf|2x9Xqw+4&pJJe1eZ)zk zp_~|vm7bO18c)!dO@2l3RCAC@NvF=$f2bVUNcp}Nhm)<+vpt-Ve!78vE=@HJ(g;6_ ztGG#bK610r=>1B3lbi1NDe6k8KgrE;SQ2<}xb(!DWHyf(8y0#fb#^AdMOhWJ!DMaDDNo_Vz;nQUzk(XoPK@`Shv(tcV+tXAJk z*Yfx3|2Z3Mn(FxQzqMs=9}S7rTdQl1yir7DNK$|Q!as=cXI&3^VS31vWuki6!Mtg< z*$o+KT-aie5zANgSVD)OrsnUuB+QRZ)cVpDKNi?-D)s%wHyqy_%;oO%O3N?l^};6!o%X)?rVtIO!`eO11)5F)~Z%sU_jP%kw&W z5P}-o<=*UlqHLxzw2ISgOj^IUhc=i;E+eY zSz>4({H!AceHG%THIqGRucI(D_=j!JLAR8uCa)A7-W~lB053$VGbT4&2JG!Vo$e%b zAfS;P%WWmuD&A_*HRNIAZa}FUNe{dz+4)o{eBwbn|Aq6@c zanG4t)IKA_N0c%>zoqauDl4I}UVmn#!DN!T#dF3H7bCQd z>d_+NtNm;YGG!hFms+!zW_(eE~kDnL_aBu5H*_kbJ`de>9 z{o`De5X+ugZAyPvsDs1t>O9QwoiT^`aTA@viR>Y)q%FQ7vix`<-069aQ+f*zO7JYs z!Rr}ppk@<7G#>6iJ(xK@8?k+&WR=3}?uxoS`tSiKet^@^zL-Sanx3`t!~3s5=wrrH ziRFXaQPEfbKie5n9lkRDr-dA8Q*Fv@ay`>Mx$)F5yP^V~O`C;%cVovw8%rl-E=;XQ z_szB*+m#5-z1E70FJyJDl_ew=w|nR#r>*J{nUkW~II-pz)?9&&qz-|j@~!!F?t>pX zsD5Rp!3!B@x-H5(k!dQzBMH=7Gd4M67UHb5$J*~cvh_4YrJ>n5pDAscc2ioSER1~+ zyx@ZG&s}UvGASvrI*$-%qN@ni_TSwzuS7HD`m{?1(9y31?wHXyx1h{ud=TYpT%Eu+abjK!;FO(ggsD3rGQ6xv;

uJ!O>hz>hHOPZzxfwfEpH9 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 F{|{pp7ykeN literal 0 HcmV?d00001 diff --git a/src/node/routes/vscode.ts b/src/node/routes/vscode.ts index 62d7c80c4ba0..33d1287a7892 100644 --- a/src/node/routes/vscode.ts +++ b/src/node/routes/vscode.ts @@ -186,12 +186,22 @@ router.get("/manifest.json", async (req, res) => { display: "fullscreen", display_override: ["window-controls-overlay"], description: "Run Code on a remote server.", - icons: [192, 512].map((size) => ({ - src: `{{BASE}}/_static/src/browser/media/pwa-icon-${size}.png`, - type: "image/png", - sizes: `${size}x${size}`, - purpose: "maskable", - })), + icons: [192, 512] + .map((size) => [ + { + src: `{{BASE}}/_static/src/browser/media/pwa-icon-${size}.png`, + type: "image/png", + sizes: `${size}x${size}`, + purpose: "any", + }, + { + src: `{{BASE}}/_static/src/browser/media/pwa-icon-maskable-${size}.png`, + type: "image/png", + sizes: `${size}x${size}`, + purpose: "maskable", + }, + ]) + .flat(), }, null, 2,