From 8c3f5e73725a2fb8c535ef6539fcfce837e96829 Mon Sep 17 00:00:00 2001 From: Joko Saptono <88311778+josapton@users.noreply.github.com> Date: Sat, 6 Jun 2026 16:22:39 +0700 Subject: [PATCH 1/3] fix: resolve PWA manifest icon size mismatch by generating correct scaled icons --- public/icon-192x192.png | Bin 0 -> 11153 bytes public/icon-512x512.png | Bin 0 -> 21684 bytes vite.config.js | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 public/icon-192x192.png create mode 100644 public/icon-512x512.png diff --git a/public/icon-192x192.png b/public/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..18fe358180aa62a7d9da52246afac4a3e9ab95b6 GIT binary patch literal 11153 zcmY*f1z1z>+h)KR(ji@=OIkW7Jt>irMi7+lj?rMz-2##lBGNE=NQ(-H^ynTrB)<9c z|9#)@zxO(Oced;7yywaLe%>cuPe+}YfSv#g3yWA&Lq#7m!~Y!kc$jznU(O)R1n|;V ze}Gjp#<+z!!F7OWL$I*w69}(tfSB_;?ix?Lu&_va{~Ulpw{klyEPgIc6^Mbq<=(uX zx52Y%;9)GA#sRov9L)3XKH*C?3q6%=YrtIyu5&xz*CejIiJ&AlRqQ+BtV$FdMKNq( z0S(QA4(`QPZZBUQK}z^}W5`&;^yPJtroC&xnfr!ODI>>es^fFv+c0&VkkV}YNTT*! zqBm)L10!Ko$G7)dvCh?KmaI~_)A(%bc-H!=q3AnLBo?Z}^@}snr#CM3eBZxYKia0H z97ft)S(n!unAwMt=5>i+u1gSvcL@`x21YzdYqhnt^dNPrEqbe8nu)%?>FR&?P2b)j z^wy!3D9pZD4eOb{^w6CQyWI*hx_!tzmF5XXqc?~i3VrY zTXV`;PGes|*c7d`h8<(OKLiyUqVksX6Q;vQned?xGbwV8@+8iLV7-@ zz8|z@xYQ-t;mWnzp}oF!DQj!!*kYZ3R!#7rf*=hcV=UCnoDCcl!cCN|f3mdVMf{RV zK+TZ{xPC5nUvK+~eZFPhE$cs`hljr-ba(RxF!C6czWr%!GffG-%cpgQwv2sDqr5z5 zp_t-j{LXrMau^<@uuX{SxCd>aADKEe9<2PPv78S;%w5K;JR1(rS+ww!7bea*t>Z%3Ma|_GE6Ay#XJK36}~dfrz()FdU4Uj9=5#{c0Qp zH4!OyGOE|$*+(3AuGXC&2CTGC)6@W;b*r;?vPP$3AAf25uw*$R*AZr44K=L4LoRIL z<3d2ggYV=U*ju_tF{IlTVm)5uRrh=8$;x(;?Z!=tJ10*{`BgIGIhkLArfbD+MvN5CNdpoBr` z#6|L&Si2+}EA0r--qF&IGx0k5g8ixCwm|pQ!V}J@_X1`~!`*asvFnmKRrMim&Kq-2 zxJdaTx>simJrP1!j%mDv;%`VfrcSoxAKa>X13cdmF2OKTkH<)Tpz<3BfG~yBKTR-^ z#hj!dvS1vK%yM$}HC2I&Bqje`|Mgw}ysJ0OfffRwE$to>a{6E_-c3-&I-x4C!Z;;Gcq=mQ1Lp2VGl z^8)b3HKp~h-84AOEJFVA`z<#I;qltHyscQRSR_mqSQc2ZTJoja^t&Itl^^8@4UEFP zBv-7*A&M(|G+06HLXqRq)*rv0N?mORVoS7LP#iR{3cJ1GKLoHG!)ZFjGdFh5)fUHgN~Az4Q4-9_~Z3SFG+#4m+hl3?tD*|((ta05HM=EMzk zKa28&lB1bab-Gk5YB5UvUav|6mc^`#-U7C}i7oZK8hYB4L`cj>#iJ4GeN87fj@wf) zJX!L%$r8RXNc(==QpYv=edNIwzx(*&B4jE}oS z25X}M@UoC|78!!jmOMN&^H8q2^IVvfTUqx^)%NRVv%4Ab$_zQHkSmuV=AoV{|BXN6xh#sH`pmogP)&1ONg>^e|H&bFd z-oQB8#xdsx&M$MHgUoJ)t=O3jVm}g9uVNX+4l2)dd4C4m}IQd*CjYPM+HUa{tz$=6Kem(R;ASu~0Y!D*yOOh(v#EEZq3r0qf=eNk-3zmrJgU7x_y?r1rV8 zcw<16~*NGlXpX1jQCyXN%PR9T#smI0&PGrPn=N5hEa(Kg7B$|@wPX%6htN!qSI z^g!XplNNDkZ)4&vg$TZ0qd`K3RcOEoo7fmb_x`KDvwUZs19^04ZN3T@8yh2Yt#L{- zaW-kaSO?gp`^Cqr548~aci{U{aU~pO5%+L5Vzn6{3*tRv01?{*JqG)HD|YHqdyyN4 zmW`^=egZOTCe4+n6iW8Px@MYp(nueaF_Xz5)+XmzotAkwZ&l2`Hf}h9DJf{v1$ge- zr3+f=Ac3;$-EI>>;ix!4m>^79okocUUUUq{KH1l_V`J|rf^=lt-Nt&chW>ceEbc)X zpSuP`B~^OSjB$zr{32jpSKoLOK_R>H2FkgMcIOZ1>UU_`!q7bw%F~}+V3<1*h;}Rl zyz;J@#QjKJ5Lsm#$~HZ)2df5_*;p5UMxHKMK-4;GJI<||mO-8c^Mxlc%45+9Oi=i< z4BJk^lMdjfsvTQT@6u6VW89qjF{{nlxciF}iR3kJ>{f#if`$FXSOh}5@LQ@k1vNch zI+O|~X{N;=Lb!@{E;sP7zqDXGzk1CmPawtGZ3BKhY?}Al`3LdG^xR0N)!c(5g>jmN z@~McE-DxH}e<3}M#Cp0^ZTszSyegsPnd_tTi9sKB!2b%IZw)I#But*KMUU3uh?7_I)2hNFH`B$2ED_tEmC%KIIsJXqP(r>`yFe)}t|b&CW6 z6G79yExWin_JMD0xkHK!mLDK@Gj_nJ-|X%oxnfB`je-M03r9(Ix6=R|yNe}b0~I2~ z;bnjpZ{o4TBgcH!bJJ7%}a!r9V)U4%Ipm*YyTyszpHzt-$CqIG_+$oygsZR+Tl%S z_tVcsx6{9s!A?L9$9V8Y#Z`Nr^vT1k!Xx(5q2J1vkwjKxY+^S#wJ^8zXUr4W@?0n9 zcj3nqtaTa7R$(OL)U|5K4ne(d;%nTUeujEpSA8Hm>X0=M(u*1~y-#X~?Fu5#y58T1 zZwO^=#ER=}OGgHD?999)Ow^`taGNoAe- z2@E5IZ;$fuB-|EoMOWXy=6v%|4(~~oP2@F5u*>iSV&(;6k{jk7 zdd6sCaKd7b~DE|fAy+ByQU4pdW)pJI@oSgjk=V+?-Z!l0D@Oxrw$U#ywQUN=4B z9?2vT9iFab)2{px*+&<J0WdRlavBGYMSd4hh)U*snVi#w zR<>88<{02k$(%7MH!G4eFn);$sOM>Xoi*L`2jR_PGO!$m%89iIqXj3g15a_YECk0& zG*4UILpB|ye!AW}+La;K=~5v6^)poUi#!USQDGZ+hUz6%ghvus8&<{=?-73#xz(xB zE-W2R$Kn=~r`#6*+>I`m}`TQ5H(=s;q5=UR3@~k73jpvTvkXr{$PZ7yt z1m;Qv<}-xSkfgP1{te=gt`Ki*7wr|kF>8IWKXaPq*fX;8g!{j;E^+Gim=;bPVlF0E zCV)Vyk^V=xW@8)tbU_EHw;|$w^=8QZX7ou(b|CIgzdbBox-Av^)dAweLhSo`j+v0L zs&)_R+k82i=RMze;hL{?BcP|1-C>TOSa0OlyO+mom!D_EBlVl;^n|QLE<%@`*=!F0 zta-AZV^=VAIF$H98Xp1~yz`6uAFt1Q52bpx4s={nK8u;ORm0hM6YACtdS=!$xl);zTF2u9J31KRwha~8 zc2erAAR{gaA{dz7*K$3{CS}eWgjcvu#pw=u=&7wmj>eA0*mT;8)6QR$}fZQb8u5cPu2Iy|#6i@Sa2iB9?b5Y*M zCHS9QXYiZxISG-mwVhXt+0*4}`(DOTUU;wc8L|v3PO-1^gZF0&yIBBiW5CMAPvpU7 zZR|$}YqXfy)@xe(PBZP^G?;M7(9%}Bd~PpHGcfNmZh zG^EcTFzn(iOXT)+SaIBcCb_XCP}gH6{sJv*j@XBLkb4i6e(!FpRyo_{N0wR`_Q z=^~ROackjJoXu}4yKEjleY3q2b_@Fp-7s#SltuFiVk!60v)_|#K;0;7rQar~ffZ@W z!W|djCUEsF5H~3@aQ*cgxb&VM#X?{ML#ogTeo~mw_%1Tm%9y(HPB29C4y5x(|0|k! zt%B}@9>ky}>k}5~-cf~DV4o%XuNqY0f*}i7I)Q|hKUYV*DPkLVeuID@L7=;2z zGwb-)Tq2_d&+$+Fi}{l(oa^Dg*Ydfh7czl!rbN-TmF+6XLZ|6VZFjG>2dFQzgd0OE zKpkQCB`kmRT8753LpJhxc5z6oZ^`eR+FlUOZ)JZCo;w6YQPiUa*bB$^%YRKBdNfiW zDpwUn9n{#ko3@heJ{#D50v|?pp)HRWll{`ls|x1r$n>FVgSR& zEZ89`i0iVJqp1jecdI;;)}-~Rz#&1kMYGiXfJ%{1doy_^!^RPV&~%Ki7$tQGDkLW5 zw2J|)o9(1_}b;?U3?2Dfzf{lUvgZB1^v!*kaA&OlI^LWRFSNwnE=sphj%fvQGGj+AiuQNwlk_6~& z*bK$m4vVp)i^x64p{u6iMWJ~zcI%%iz+N-Q_|hKx_o4<>01l(u;$YCjCW+dV4`xE} zRzpGea~}st^rkUn3g`2ASpgxC#t}A7yOD^ z8e;0n*Qe5-eDdl3=ES}s&+q3p`iUVDNJ-+=*!}rRjGU zX~CN-igoExcF@@#prvEn&!f{9Es8;|ksW=igUU~Xv6JYIh6drPv( zSAlEBp8Q~}n)zmujj>!VZrxm1By%i$@SIlKV;i^He2ai-&YK;D^G)u8_zx}38r&?P z{}Yq`4v-*Rei49ltrP8kne@=u4SsM(A}36JWi=Tr!S}Xrkm~`4N*+empdq9&6HCHN z7gk+(ZayKz(6oCx$n%IAi_7kGfx)2}xAflXt(|2=(PIuiHa>NKj!aN%c)>$^;oFgW za`z*m?w}6PBDL*|L@ieA5r}78ib|qiMKz)N^d)7_dU^*oHmTfay_mAagR_wydG+;k z-f7)(g0~<4MhCzJ8|aljKugD(E{A$_4n8!+O2%k?CB~4RM(gJ6YL^nkDC+$6@ngsh zC5yjgCPEwQ7+eTp&kR#jq=|fB|9yK+h2)TVelcpZTthVUmkH0MMkr6J&|J9uJ~$;Q z{Q>f1SQJ%AMEu1j|4cFW(LMW{tgMbj%CK?C2`E$p))(b(()Bg1+Hx6qy>NSX-!D>N zE_UxR-f{EQ@VkG^`d|w~Krs|l10Y3Rnl36G9vo9BH+MK|n4{T;UDP>&ah?Ak-Wl^+sqI!BM=Q1d^@t2bK~9@q8Lv= z8oe3!9HBAFMhZ2B;vwYKiXb)|wU|2TAu8z2UFu}*8^snH#6DKjx#j2cq65Ou^6D{B z&CSk7nsv{LC9BO29xkw401?02*FBPm3jn(=%&}pZQU|7d_aBQk0qQ~5Y>i6C2-f4r zeFVpkKgcAv=(JgnR`%9C?i|1U+r0gS11GWVpF4!c$GyaA=}<&XEvu+? zQop1j!#<;+VH-?c(|+I^L2?=f5DK#Rf|r*= zUVutJIT_4$KLTO)Zm~gbOUYd41%_ZP{}@#gbv^N1Lm_pLf}V&~<>A#Cg>5P~<$o zYoX!f;)_vR@f*Kzi>!bc*JN0S&L_@I+nnhpsfO3A3t9(;vK9u*^UXE)@39^mhA|Avi-V~Zj< zvnN32B?bV7LJ5}P!@For_5EPhTP4(qm1`cP*7s$- zLpW>e#nSI%>CF4S^3s8Ql*pGXGq)kh#!uOc5m6qtkell=b_G^Z)CygG_cOw#URWpP zQrl70(3SL9o%dv@Nz=fa3ubvjRMG4U-XWEIevYGsnvy=;L#a(XWd&v}zEnYA+RM8U zolHL|kNwGgX_1d5Mr{w>-u&SYe@8Jj43jelGco)RDBHMgbAF&QhLI;s)`NU--$lyHZ{#noQZ@=#xD$ zTqKrdQy^7RQW*pH05@e8F~bi)*VurM69lhJ9z@p$Z9rRf0msFibO_3^CrXvwGDU5u zp0pyEj0Akbb0l3;ejQ{TGsSl~4ejLat?lQv2|Lel!;hzny@H-U`pg(dI$=9fX+UNF z*99=Zz7^}e8N-6u<{H=7rY2>#rG83Ew@U$OmYgf_o>e=`dmU4CwNM3y2)3y=>hJ-9^Yg75Bxk9R!Fj}tEYAlZnBdu_*H}~K>B^EiZ!eM75Cc+NfN7u8Yc6Ajz zP@4rU(ULN|h>;}rSk2C0^ztJ^vh4H^Dq5>Uk1rhVLjK9{f3iG$lEC^=Wlp!;65S%v zRtG64LMyP+LqyBe$lLqgJ&QW3PKLH@=lNa2gEMAqs^L`j!H^IzyF8^-LstQjCqqcm zl&j~j4T_TY92g!%p9G36>AR5f+?xiQbUdZ`#2iPTLCD~rx zUWYw#^3&WHCw58(N?nXjh^M$~fYW(pL&xKdIMTEdZkD=s$QIET6(bYw?%9)K6hP=TNhih ze?j$rRMT+(xb3?YSW0#_5tD2qFmzngHUl=bJMX@I5x~~vhuFzMN3LXeO)D{L{A!xZ z@n=Cr9&cb5zG$G)$m&roR7DTM2F*iC7i`x>F3Z&ZsAw6ZqHTUIkU|Q-Q*E0p#=ONb zZV|4<)P-m6TM)bcrhpSA-gNK_kekb(w06UtY1}$eNQ#HmwVoV3R_Ag3i1xSuXtyvz zywrI>`>Q$d6+*lD8G$_A$Ysw9tbSR!_8U)+an_*_K3D8zeC~6aS9KQQwQPgu}JESz)(z zqmRz<49!xv*vIc{*-_U8<@$tu&1T&rtEZ%xoyq?l#nfR$#4Br5tHQLU>HVM>1W+z?mu;qH4|le1jBf)jGd}5T>n6wYhwn|iR`wN>GulJU{j%$p1aV&b zxJ7Vleh-KC_jfJ#?8c;#oCd1(kr9#A-vV~~yG+6^D>9qcKdh6j)*>AZ`MTYjTq&}e zo24#-ku)XFMGy3kKhSk)0=V>W%2^l?TpBj5vj^c4 zm(J@O9EfPNbm7U=P1?7Rc~F%;8cvfqbrk^arLigD;Owb#vBYcnxSJ(xBbOu{j393H z+tYyF6~sb~7#;7>A*aaqt`#f%C)E*$MJ(ZR4CyJ!$rz;B2sjSfcs84DXf4EVd@r)~ zd!_9rFJ^B)lEK%zlcku?E#&pBSm2us2mbZt0 zo&TQzU<$Z^1|O>kGvhOanvkBMX1SG@lhg^6l$5ZB_?7WU**u@M?ky7LYA$MHquWOL z(z%Jhq~ZnCP*~*zuMH5_Wn45%B|7B0E;i?n6e!S9kK_U#4}?7AN*Jnt)*Bd?kiaf_ z$729c;(W#Q#pl2>@z}V>e(ej@;dOI8yvw*n>xqVjP7J9cqXyEc^TyP{eW5kY{O~xk z!C?&kZHO}N>bFR7CjgVnz==mvNCspaV@nk05%Io`T zo3_}A937(RkReiNI>W*7+=!D;_m<3(2m3j&6i-%cn1hcB`}+GR10b6C@(bb&4jcRP z;EjZ?$TxJd)SZ{kxQE?CKRKcBTulAO%He0~0o)SV@mTEZYn+@}DejOEC7pt~n`;an z!@-a!*i@aR_Vej-@;HyC#Q$Ro>~GCse#9TK8lwlqE0Z>xr8IQ3qCb7R|Fvw;>`)~V z4+Ec6Flb(BAv?hf-9wc~I5QgndQu-uhbU+&H_P}GwhZL?a5r_RAORN-6qy@(9L!0KU`ORYoJDWC<~gd2 zYa^8N)!~-(_n%{>@u#w*=xmPa*JA7sxQjFjjdQwviT!x z!#2qNbc>=FALzjY^H1%Wi^Ci-jVMHF7FdJ4N=&6tIy(Tz0^wwh1&fsb1sCJYs=ATj zJTPTYAXd}XD6s|eD3{`(r9(*A*Gg5{M4a8G97#?6r+ioWhqEtH1CQ3b{c3l)jp?O& zK_OU1Ra7#c-PG+?p00K;^w#cCvyRD4G&cE-$=zf8x#~}q` z34Vz`+|8ec$Gj-~MQ%w8*$O2pH5&qCk}6>F@+7Q`1#yU0Tt9CUdW4tH zC9Ugex<|Yuy{HSae9x{}Ku}a9l9-;Xf%>v#yMXL_q+6GPh~vo=cfq8c?pV2N6|uT= zCiuH=cJ|CUVVZwp&+eZR76yNi6C6hAr(x<=SX{$!KEhIGdc#`c+NK>67y2gf8>b%t z>6zKh$zmlgF3}i7nji=vA31m*wvT?oY}aiUL(Bj*l?cJJYwzfY%cUWelw1M@ARBkm zNISF2Hu4KLvdeNUD$RwT{N$gm1z6=ce=ui}aF)BnFul*t?5eO7wkI+3&|BpmqoQxP z)~zdNwdo4pu<<^Z;ls2TOg{jRlKTIx7X!yd|7pKUm2nZyfE{t^GZnSNV|NACs(R{J z7b9vDScW=a#ohb)IUr(pkE2m}#Wn}nvkX2=2`HJ8VtMlF<-I5E_`7R)oo>qP59OES zHkC~B_azG+_-k+=+AmSVD%9Q+Fd^$bdZCZbM*x#fxxts5HFot=z9ye1=+?((pc2*R z5!z-UOVJy1$xuwU0uhsB=HSxezbYo`0Hil*E09UB{% zg9q0ixUq1YgyZ1zL62YY?nFxLNQ7m)bu`K3Q4Y7#DFGgEjA|E4)S zl${2$nS5s_#Y5|DAJ#eB6p@2#!`8xi+zi>m z#^PVS1)=LmLjA?9=A06jr{49xkd-%6@#pAMQKif$Rrb`UIBcBC+NuDvs8KL5sJo&U z!;eFa;TxOcADuQhF`&kKX%EE~5ll133@JoCD=Ta>`$0X)5 zVZh*od`{3Ab0pK8oXu1q=||T+8i7DkSpkgKUH@Xmc|HeZn9bhtYUnfkbzt}b5U=yhBvgG# zR)&H8N9ap$r#TQFDJ_t4K!E)r%|XOyPKR~VFt6vtH8!JcAhFKHC1sab)1FKS3QwB- zA`b<+LEo`jZTuL()QQjR>M&%PL0M<}d%P|nMe<480FIHMSEMT8d7^Z~=Uyc5&a$G_ zI4jE;0|ArOHm(n!As5Qtv>k(1KtiKCn_*Ed!JS9h0qs{ie=Gz1H!DgR0PL8JE6E%9 zd?p6k6PcmJ3@teys`WbUUg#GaJn?T04Dnwca?s47X?sxi_5hw!8>X?aBgTk#_M0(= zgjrXOC0*mgvHJQ-$_uvdL~!y|_^Q{AS_?Em87h?^3Ty zg}40quhxN2S{w>{%{A7R0}|?Vi}yy?DI*OlbfZ~&cJKmZIs)XR%>P6%Z>?pJ$IQgC z8|FuOiFGQJ9zB(i4swri&GMzA1gc&$;f@@PBa|l^l0W<9%boQC`Pc0WuZ9Ya?+?Gy zKw8otqx@+xdw2Dh&<+RTTA@5esa7m$RG<*1dD8<^14Eu#Vj86wJ0Tem1ra?t*)Ph? z0>2s}n23ZxEy3?aJPxK!N7{FNZUB?Oi`p&hD~5N3hgMTS_fH5f&1$HR_~FaXADn-R zJBUqKKXN3-h*0P7Hny47+zwL(q{sAKkv-2RzHRk#^k&91cUoXE{p*!=izD``((V1z TrcO*7EtaOLj!Mk~>xlmW+dePE literal 0 HcmV?d00001 diff --git a/public/icon-512x512.png b/public/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd1d7cc569c7d33f7d4a63e6a4dbc6da5fde314 GIT binary patch literal 21684 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 RXfgVJV*}HD*?W&){9hWD6d3>j literal 0 HcmV?d00001 diff --git a/vite.config.js b/vite.config.js index b24f93c..fd97d6f 100644 --- a/vite.config.js +++ b/vite.config.js @@ -23,13 +23,13 @@ export default defineConfig({ purpose: 'any maskable' }, { - src: 'favicon.png', + src: 'icon-192x192.png', sizes: '192x192', type: 'image/png', purpose: 'any maskable' }, { - src: 'favicon.png', + src: 'icon-512x512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' From a868f114b0c490a142125401cde5f50deb77e2c9 Mon Sep 17 00:00:00 2001 From: Joko Saptono <88311778+josapton@users.noreply.github.com> Date: Sat, 6 Jun 2026 16:23:03 +0700 Subject: [PATCH 2/3] seo: add /about page to sitemap for search engine indexing --- public/sitemap.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/sitemap.xml b/public/sitemap.xml index 9511789..e1138c1 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -8,6 +8,10 @@ https://josapton.github.io/portfolio 0.8 + + https://josapton.github.io/about + 0.8 + https://josapton.github.io/contact 0.7 From bdd4615a0a63588ed03cfefdfd6b2f59a5f65d3c Mon Sep 17 00:00:00 2001 From: Joko Saptono <88311778+josapton@users.noreply.github.com> Date: Sat, 6 Jun 2026 16:23:32 +0700 Subject: [PATCH 3/3] docs: update readme to reflect new ci/cd stats pipeline --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7ce31b1..eea4bf0 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Live at: [https://josapton.github.io](https://josapton.github.io) - **System Robustness**: Implemented a global React `ErrorBoundary` (Kernel Panic UI), an `OfflineBanner` for PWA state awareness, and strict `Content-Security-Policy` headers. - **Command Palette**: Press `Ctrl/Cmd + K` for a quick navigation and action menu (with clipboard integration). - **Theme Manager**: 3-state Context-based Theme Manager (Dark, Light, System Preference). -- **Real-Time GitHub Stats**: Fetches live repository and star counts from the GitHub API with local caching. +- **Dynamic GitHub Stats via CI/CD**: Uses a custom GitHub Actions pipeline to fetch deep metrics and language breakdowns at build-time, injecting them statically without exposing API tokens or hitting rate limits on the client side. - **Bilingual (i18n)**: Full English (EN) and Indonesian (ID) support with seamless context-based switching. - **Optimized PWA & SEO**: Structured JSON-LD data, Apple web app meta tags, robust accessibility (ARIA roles), and Service Worker caching. - **Dynamic Routing**: Built with `react-router-dom` using `BrowserRouter` and GitHub Pages SPA fallback.