From 8fec4ae091bffc4ee05326de05059e48c307d211 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Sun, 4 Oct 2026 22:53:38 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=B1=20=EC=95=88=20=ED=99=88=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC:=20=EC=9E=91=EC=95=84=EB=8F=84=20=EB=98=90=EB=A0=B7?= =?UTF-8?q?=ED=95=9C=20=EB=85=B8=EB=9E=80=20JJ=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20(=EB=9F=B0=EC=B2=98=20=EC=95=84=EC=9D=B4=EC=BD=98?= =?UTF-8?q?=EA=B3=BC=20=EA=B0=99=EC=9D=80=20=EC=83=89=EA=B0=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- assets/icon/app_button_256.png | Bin 0 -> 22092 bytes lib/ui/app_actions.dart | 2 +- pubspec.yaml | 1 + tool/make_icon.py | 11 +++++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 assets/icon/app_button_256.png diff --git a/assets/icon/app_button_256.png b/assets/icon/app_button_256.png new file mode 100644 index 0000000000000000000000000000000000000000..b025d7209a8eda37cf80cece924220784aed32c5 GIT binary patch literal 22092 zcmV)bK&iipP)!8A4mR!L?E342%x|x`Y88%~Ivt*SDi-_; z!T2h0ei0nzfnyCEwgsF=g_(RJTe-~B^3yz`yqcdWmpn_9*UM4$=jt-FYpmZeu4L?{ zc603z*dt^Wc*zDOP15>%Jh#D^=Y(|-_vsUf#C=^ z_u=3cgyAeab}Lx;D8e-lvd`T(n;G@CZ7$B*!+@P3+kp^cm?(B$w#301wtm9JB?#G$ z9Vx;1w%^@=mVYidei7go0&EK$z8Q|!f#bx5;^N|kg~51%f0%a18T`h66M$CR7)SsR zLPus%xJt?@zZD4pDCLunnZCsW#$)}yI4t71kOM)u0FEcYaUWQCD_ndBLH7>!`P&X; z71~V>ZrT|zW@NIJDF6~}&vx$c)4VtS&Y5sq7a|OP1Hdo9^)|qDVxk8?DE@{VjD@kJ zPR7E(7+X=AKgk~j_)%1USlnhVPpzKK8wV|1(E$oK!?^EFc7L`n~}Fci}i+18^(*+|GN`TDNZXaLIUB1obXaG3+ojoRq;7Qomy z!0`77djG^e|GnK5|F0MUAT|DuPY4u8Bz^OH&jxqj3Ld@%t@a7>#rC@5mmubZNXpvu zeno=c)J8?{n>2cnPp+HHX*s?PvP+9|wxo8WlGr$jagN4_^=U-x9xb?22Bt8MQ92Nmvavy)&6;7)0-~54B zf%CV3hp$Jw-IkyagBbJ>&b@H7N_^@S3VvIkzetl>)kpZ=Mc_9Ao#5>QvzzBXFta?5l4E&iyxey^yE@`*KD#^5Aauaj`Aq-++6>x^O z>mUfa0RI~-I3H*KvZnPd4Bm8TiG2 zlwcWEpH6#YyP+BUMear}u3&I0ND#*TSKCRR)ALHF|FqwrY53B1Rjb6*7b-qLSs-e= zF%~+Wh!N~T7=DUf^MlVWg*C7!0zkgfZQG=;&tLzZGvKyA1F!XJ_|nIZP5pG*j(Xaz zr;X2_r5i;jHNtK~Pim@<0)N`1VUC{ye^E?<^uJBoy1-Z00Y?fU-E2>E;2H9z<%-v$@gV^LxQ@hY0pB`L84x&`>(`2H*5 zb-oYReKopsK6oJJ?Y##4ix}|BzKx0tl??5wAk^D6SrHj94GMlryDRmV238HL6sa*V z8%xRreuIE9xj%FpVxG%G$T=2zK0Nknc zJ`K;iQbzVg&?5@)6%(Y<{N)T&3H-@N)3X-y{A#{2Sg7U|Ecqn?txv;QnClrqqJAif z1tjC5%zm!bM=c>Hz?^Dtt)IHplyjF1vly!25Y~X>xM&M&Ah-s-BOhR2xbMiQU4oHW z0DS9qPlEpqSD%M9>vp2mx)R-m09>xtYrsF~Jby%8t(=x$s^zF>^>!IM7zegh?YlL1A3decVjU-BZVCE(DMU;uSd(fiNEdKcL?y0!V++X z2LFx({8OJp7`O-mv0h&ZRy5$3X*s}8ma_nV(X+YtNieY~sFr?K#!wnmEE8acajAK{ z!0O%t36a?@%>tKeZt5HvFegU}I}3V4VhbkS*jj$b(%A>fP*{C+QxtC}3Ss3$39 zdb-j46!-_#Bqn+qeeF?!-_))t5%rVcEU2FXPG<3v0_+ULTF?}ib1 zCZR?Mlrmw>;K;58K`<&Iz=rbqv*35&$Q^n~Dbv#p_){N}dJ|&+ev{ct`q@PNxu$jC zsDjV1_$Ol?YoN~bh49t&XL94B77QUfuH3T)D+P_K15I%St*+eq0;N7`pMltYC`5tB zTy%R^v1{)9t3hJ|&cHtZwg&vU7p5ojP>l%#zp4N7PfisRS`+2qr)Ct2XkrZR6^+5* zhM2&gNkz+qlV{b6Y&CykI8?C)ak(#e)1);|1xk$Ov&s^V#cBvJ6s@6=*|BNP8z{&MK6Wfxh{SWH6 zG5{v}u8xb`|3IvDAT2J+s^G#B;BXvl``N*F^gXifY=Y=mqu* zE?+DPEu^$9+?%r?q|{IoFfAV>(46vFvbG(HZ=i4ghb5mni_-B zu4a&!*Ja29N?mjVA06i$O!Lo5tZv_GwQqn~`~6qE=eIGn>I+y9EBsK;MLw0=EiwNV z8~hpnQ*T4FL`DUED!)`ynb!3a-;37XOHdn*4^yY^bf3RS3v;#ocwDAAe;x2?Ibs#0 z>Dk=zWYiQU!4tXZPgSTTS)q@P=V8Hr8~fZ{U$lt_6j}h%m$?4=kiY)w=fP`zR!;XZ zbq{~d!LR#}8DD<6!C$mGPBV=M1wRG=f2JQvDmv4`V7ePMq}mUy{v2@P%)9 zThPwK^mG+GSzt(O)xpHQ}!)N(bFMOWFZb>|#*ag_NOGNm@k%fN=*PD^Yai@oK z)(HF=pmW-!mzsxadx^m>d7{GVxT1bi^%v#afS=M{#(q#5QrDtXEQ0`lT29lE=6&fvE3uT+pJaX1fh0v6drXyy zu`xrmzn~sowgy4zPodARwVTTm|1liCQkYi~2ND=v2z^Ysm-4I5dXG3upy(U{Q&o;U zq2!A9oB+4A3l3WcE`o}p`~-nNc_Ah<)wbOtf|GSstefGO^If~;bveXKq%DAL*D=Nz2Xp=et@e5Zesp-DI+qMfkfbKGs#!xKkJ7+ee&&T~ zFD{d%9RscQCncJN&p#I6*G$l%!CzoS7==ZVrWz9bGS5WMGV_>H!36k?nqNz4yrhZ} zDiB6SMQ56t)yt`m7b&`28^RR`(Q?=}XvhZqR^TUTS4K~hdAbPTPpmAxZleWZx%JiLf9KjM`mAK>es-Ei(26N# z`y8*7p~g_vT{2lTrc_|9mB(Y`F@o?|2i*Tml(i#YO{Tf{W)i&VeOtlYf0NUG$2(#E(YD|(H0jm)4CA7v7ps$6wriFShqDB2_H_AtyK%f-BK(PswA61@s&6YcF9y z@RMfapy21r2mZ7QWjv+ekBd^}sQ#p}xH7G2VF~EZnk*(}5u`MNKM^D)PJI!dkc*tu zXD!@~%ox(Ki`lyXZD$H$cx5z?ztz!6CRhCN-@f{I%(1(`*zxgTm98{C|3KhZ553S| zUS;rC+0wg6;7`G+jjIs+`U*l`?It41vr?CPV;Xsu3|XsD*5eHT=o3H${XjcLz@ z4t`V0YyRx7VqHMT-GspXHJKCd7K{YICGi{e!^;uMi#(KP8_iFHNqMR2;w6=CLxW#k z1Z8;9dfin0GMn%pB}hz~WJKVnF6uM}@{}>?W2Bx<`bYs?*O0p3Z>nD=TQ`lW-vo40 zGb_IlUyJAYwLFoE6ppm)Zj3sknj2T`2R5G6OAo zsd}E0U*bCTpS5V$6nL|0*G9_o;p(>nzd`Dkg5N+(>iqd4GgAIEV(=&Bsdh~+Q|UCJ z0;-&VC|UNKsR#Y~GxRWR^VNl^_FKkMQ~H`2gYqmnR+A7Sgr80Q;)7J|d>%eKm;L2E zKNCy-9mMyL1D#($t1}HQ&iR^9@SFOnw@U_mis~<6o>756v--~#{Cx4ipPJDIFsIKI z2&7Sfp8`PceNg7NL2Kr^%84?z;8*))a??t9qHt++!4zpVSCAnTZh$ilC;SDOvwf@M zVArnbX&zqQXO;;Be+JYV15^Fa;B17#C6{LbeqO~qw&_Rmv+2g30<&NDvvu(63~Lje zE?W4am(S6Y61t}PRf|AjeK46q1%7r>{fh;D zy)IL`CI%qOBtL76U3G;FtY1fshaiYCuu1zsTZH zXBkNF>uncA`*YTjNeGsFrUgHT%fyl5hp=YuH1;Qt9*oTY;K;e~T5IL5KkCuU3MY*q zI)T!l81c^3NVXz?vvcICWKN>i+CP2QVA?G$U{;ov1Nh&5 zB0E_S@CvwYbjWbdY_I@Bro$MGhO}wd%Ir7gEg|?-`DNR#I<7?6mC?8m{D%4|pv$CP z+A);o*THIPQ_I)ur$AD)>yE6eim>L|DbH&C7ApuTAymlgB{VXPi&w!C7dHxt7~d;Y z0q`=hX8=q)LS@{+Ut0e%n*GV24C4$4ezFa!+z7xgi&u^I>unIxX}!OhXOoYnX{_W5 zZPT+-EPt=*2 zb)f2^`fsS;GRMEhYHmnHc1WCeb`-!@i+!8)x1 z{-~TIEdZCDgz(_$4jlJ%xUSgz!^d9pTjd+lFlK)uW#zv(FgYrBL-L3L7$oDAfj?oo zBKqjy=Su+oqOlO*&jj8KAT)h0wQ{Kbb7ib0yv_}#dXE1sXJU%RkmPep5m_GInm!lj zhhlF4n}W-P00>_a?fqxr*n?k}l9|8=3i2$#pP7l!XCKPORT2EDFwvQ$4E#lxR;b#l zh@KjlRP%LF!Eeyi6i?(%3R2%!iN>bP_)`jU1tQa=7qAw5+MVJS@Y6^Ek& zf39zO+iJUnS#CTgtVHLBr9MNv(rP{o#MF4-*6@Ix`LxC_Y8<*by+-Hm){5j26 z0G=H9weqTvGJ; z0LUKDptW7H0S@diJZ1N;Qo25mP3*0TN>fS~)X z`nYtH)%e*K{G6`e7W{fKUGt}XvDJnq%c5YMvVN1mF}$xrE5tA*T*->y)fGZj@b||V zEe3M1#VcIAGVb7CaFfOa{drHk6t`(_%i z5&YV3MH*(H!#pq|@N2>(`Ai1n4D=||kT&4wCevD}!)PHCEFsRl8|{J;y^YNGB+qh5 zar$f(izCX91%Sm)BqOt`&m}J}-Wr@p`Gg>uJcanFHYgfYQZO#8zbs0#8qGOstRn=! zzBH74*3j-y;5Y3Z7$x}m@Zi@i3Gz7uJ=8vt^%RYjsDs%Y)@ku>QZ}XD4KdClEwA^j zD9_XeWpNPi%PV~_lSd7P%GZcMz9)lLG=h)_*o?{)Ds0yVI413F(XMZpQ)#~TD8NsGLVLeOZeLaKt2C};_Q#3T!h{kuZ5cLMFeaWGbcJ743^UyY z7zX^M05f!WG0pGNehk`f)u|&bFV%uJ!c@~jRQ)FHWo*M@XBst^ZnQ2I3H+p0M?GH< zjLVG6AS}32znVez#blP3)J67};^7L*hi$=6eU8g{%L;zIo+|lE0)DCu%YK%c?gi}@ zxi7i8Oz+Ed43^2nH8V-3-$ur^1wRG=zxr%Ju&+>SmRJgmsME+Ndb_5&N)&~y!Xf!^ zc<}cHz)IEprj012%#`n^tSRF!mW{*EZbnGJqP_xcDCT=)IL1JC3jDg}HwDIw?GLW` zBN`gOpYEN|+tt9F5wInI;`;ld$0g{;Y?MUNJ7<)oW*BGYxy4;r<{32!#e|up1@Mx; znY_46bR4l>LB7M*`SIF*wJjYu)JwG>NLBDhN3C2VDOeqsZRCHQ$5(@-2rCHJK{{b!OhY9x44^C0^&(=vL$)EBOt z7n#(<^|7hXGlhm+uACLwjxqM5)}_5q9oQ!DkJ{%q?e`#O0dkd54QLJJcuqU>FU=-a zRt*Zy^p7&Lpto1aoEsecArIkrE?mz+ceaZs4$kAyd=DYHT2Jq!UdFq!#1#aor{^(j(k4sMl!yVPi_p*#^ouu$7acQroNK*WoXwM82p1s zt6@M$wOiQV5rbb7FoHpyP76=$KZ>v3^#pEtWIuKvS-=7hr8Zmq#7ci{!@OszI50Euy3S*U?`7cEJ5vSx#&s^)b{T);RefD2GPuwH#|%p;VH z{9EU5#=9>*MFNlU*snEdsw8h9@FyRNz|Y}KIk@qTgZQ)W?8bp!5Yv#wG#rl%6GU^N_Ua6FBMbr#UeJUr!aP?m}sx2xbi}s$BJk@2A}l8I zS>2LS%c%wQJdvv0NFCi8KGMLLS^H5Y;Ub;kHqB&s;&n0H68p9;sDj zU~Qsk2&`ue*Zgn}kL>QjX;W5T!A?(d)t?T2!_0||i<`4J4DHIiQ~)dj_?f}%*Xtwm zmI?gwC(2rhrqWo;#kU{WhX;-w!!&aXqW$BUL~q5N5J$oQU%PuB;5z-a3pPGv=JHM* z{F;S8SPe36)^_mipB=^nN4uDIq62CtkA}dJkmGB2Er`=~qg5b90X~_+(XQ>! zCDaD+i{$lRD$DxI6fg(Y{Dx#(|G?l^#Gxvsb8!HRcH?Spe)IsGf*_wDqvI|=SBC*3 zO={r|2+e!@V@D7!_;8bmTM_v6X)Lu~3jArll9vP-ImgY99Lr8eP8TB7d0Rb_vFmm4NDkAjK!wAI#+u4W!TNjHGqUw*DeBmF$PX92-LDh&vT| z&&T73=ip}7)@2^?IdIgMN3JewS|y{_(dxQPl6$}zb|3BGnb{sTtZ9SG`(P=cE7~m0 zvjIQ#UEE6vIfeH4Grfq01iB`Rh9RDr3$bAh0~Y~7-C;$6PO3Orx`fc=O5u)CCfV&N zVCUCX;htS>OgZr?HYEuQrWb^m?S}{AyYPZBjVla8_=vUA+z3 zy2u|1mNS>B8(9_iTK-j$5;vsXGg>`HP%+;WP%%nj!p$iZI^{{4uRaj$6}B#xC5Z(p zP7mlVlpOIWlg<>n3q}n>I|V1<12uL)K5tSAlTJg#ysqt1BzeiSv1dT=Q^LBUf-N}` ztN?7}&o<|>5goG;I%GL5)=(AvumrzxyhJq&a6KZHu|!D*&^$u^8WW)z5}Hy$RfB(T z4Su4ziKZbV1fkLLrTA;W)3}Tlhu%LTMxZ>aZ3m_vBsyH$F(QAE`i*_FY_~G_DIk>e zWs(!M$tE}br!Y_&1S|r-K@g8M*5npEgMB=Qht`;kDv1v&FrrNexv3eRl8NeU(#+}lDZGWGzr?R;2m$a+**Wgx8Imee5-VlKKaNq(^saW`AnB4H?y6YVap6jBeGK{ISw@Yo5r1 zMF`-UPQ+2aXRL;rT2D!mI2jOx1A~7EMW@y8S(*LGi=@H;HfFhT1)&8&P{HiajbH75 zK`MI@>aNDRF|uS}^_?f*De%J%{Dm_DbxquUKYwP*da=My%sg1#3qW<)%A8+>MLv4{ zBWah&OPF4LF_h4$UDAPWxD=#lrX(kv$e!@@q z)A~vo>N9EjQr1-+5~sss!vvWr@S_U&OX^pWb}`6eo8N0B@mLFzD&PR_c7?_ z(AC*$DoTUg8A)NRfMz2Ezj+p*uoFX=BxFYxAp%PEGsB!F2CpD=Y8$mCXp;sCwRe+S z;io>Ne=f7UCOGkeAYI{ss|8jr87~`+*{||+b}6taAg5~PQUIfx`E3GR4w%$hf+5!z zl#L??kQy>?k;P>My0*wir@3wlCw$=4m4-Z@WeRxPg0m9%3#^C|ciwzEu(bvz@-WJP z-(s&XSjncV;X?}L&oJOe1@I40zm~G= z0I2t!S=puhE!*sn>m20|Y8@Wf6)^Bsq0eb?QjjW*sj*Fbif3>#LS54=Rlu(UUp7$$ zhMFZ-w8uaGEtePPlkTxe(P_`w)}O13IuXdG!bw=(tGBC`Q#UwKTZS`&uBiW$o(Mm^ z@SSPkSB1C@`0JYZ2*9tFvBKE!;4cUQY7cT-4O~!HrgO=UhIIi&nmPGMGMrkpq%XN= zEzJH}^0KmchcaK&q)qiz1%F~S)@?PVNKSlNz%bzFOAmfS5YX;Hx?_4>CW5HUROHWS z_2inj0IhXoG+w-0+N7W ziqxi7_?4N*RXbb){whKzS#g-LR!nQrO=sQN_HV+IQR@@20G)2+yCG%`a__57LSQM) ze!a}_F0^(r2qCo#SNK_;-b=XxMi3Tv*eG;#vp>@}1H%+y#oXR_O0zcyMu))F4mk<1+tP%vQ01{i%eT1fpv0c4>s$G+1K~<&4IO>9RDrEwr z1kI^~K&+MztIri_$QmU!0Ix4I_#**O^m2yLz*d^SD5yyEi)urypBe+1EQMXBeo9+T zdQz?ccPxQVGP+_dVg-U9gMgn9oJ$P;f*|0CHSo|KCfcgn&Q460lS&>zz}7&^xE*v%IM}>?}i4Pg1=am`t}P+t$AV z!EXg%i=dUw^5L8%Rma3DnEge|>X#1uB6-96{HAS)+7?~i9k6xd~r`v&1 z&&2eMlD!hSXKmsvCG`*J;`T2FDeIV3=SBqnk+n;hV5R^Syejdl==KP_G&)M}e_pPT@B z;i(fVq$eK%_($aPC*>_IHE$sB zs|~5oa_UHF^;vCCL0X2$*UPB&n|7Dk1X-y5XUZu;irJp}I^l`B!b_6EGJvYa4%9r# z6|9{F!1J?X1A%`8R&!#870>l82g^~j^l(YTSGSuLg%Ir63lEkV|EsjdNwe%yd zsXo^vNuN9hzwYI2dHoHGy0 zf{zsfjjAPLH1R2->u!!xVJ(Az`WERj@T*pv#Y};DGGZrY;wV`9SJrfpWjN8sHS^Cppoob)e9I)n2;J5Q5_A4 z8l<9Qyp(J^i>~CL%bLp1Nd>>ikIw@rc`*6NsxI;w(oe}H%lu*787i61FPQXX)YPgF zv^~I5pH9}wW%!|{iA@&xqaa`v5b{A5`4HgbqjWb)zFX%}F#?_FH9Zc@Cg4}d#Ke9Q zS&o`Et*IHnCJ+1~#j^m3R#$xT%re^%bU4$IQMnsLo?d^d&D2H5MI)fDjp44$!TL{EuA+;0+$v92I z+Awum2L4=KHP!qmQgVv~evD3$dW#b9GZMv=XQ*evkd# zBix(`0lyLi9H7JMi!55?qnhWbw^1T=GHoh#X7b|tslF8vgi1!s$K)H=EM)?ygMwdY zPK6KZO1CskCiq42`WdRNo2qF=dymlUuhL|CoYrs z2GlL_i3Pt%+U1}I4X^L3PZ}L0NH^?MpITR1j(XOD-)uF%?1#3MxE6^I2z~<{(syQX zEo!-{k}nSUN3BQ=?JmOYzy%#%)PN!euq?EBev<%G%hxVd0DnRo{hbv8Uu~mq;5Vi5 znddKSHx2@h3Y{0`2mb8UV8)IqQck}|unPDqb}U<0nQ5sfB9K`awC>H(-_kq-pffRqWYHLE zmN=a~0pQnG0#-e`+obuc)D=Ido=U8q-mBger2FJU4}OqX1~1oLlf>X<3x6^+r)Z?V z2ZDCQDa@sd0Vj!ujOg!#fM4W$gFa~NF!}OKZ(Lblpw4}&Hw6_&?A5+eV=#@YATJa1 z$o5}!F)U$T$C)q}SC8c+{U)dSL^7SMti7AuoeKR@wWHyLf?rt)m~eg4X!1G9S2Xh= z0Xdrv+Xnos38Ga;#RW_j4e?c!3pmgXxbd2M@kp!90T@r{FFPOw?df4U7usY z7nDLhXy|B`>I8wG2m%rh>K&sxY}+x|cWh|QpUW#~SKaSWAao8dgjnc>r1oO5cwDD|zM_DucBn*9P3pEUbTrvSyZI>5pC0JEH<1D5B_*eKX=d}QA) zxBJ@bN;}1v1mjBWWjY0jVwyBdvk1z-&p9~b5e?@!W<#K(y{3tzArmy5T<~k#frruj z>a(UZ1*y)K)K7lp>3_q_F@GXLA8B((=r=Z`&`|?d(%u6eKioqX9Mg=+cz~Wn)~3y| zgS%YZ8>`XzV-dQkZiqb30oo3eKDqc`!pBK@sn{rYz;?^9b}v9gLx#r>@rZ_CpcL#x z(2zyL^IV|q8C={60KegO-~qr{+OYxi$TlKtQfjc4leJt}{5{|ZrLP|Qnx*41nZC-n zn1i1l=$Q@@lU)#2>&egcAvt@Qd{-&>dceZGzz`iD5q)jB3>}Zd6{=VgHU2$`!22OW zKl+#o0@Z3VS%^jV0s#2w-Y{y4h|^3A4H0FvT|r063SIhLeS>0HITO&vWY#*Ck$eMO z0iMqDCrqN9Ae5nOv@SsWQt)osyD zj$7~R;m1z|c&q!-u(<7I?|Od!cp1q z0boPR#cQ6o8gGBmI;>mmf%n2laImUY2$wB0m*J89J=}M&hbge!JhoueE@#+$f*)zG zWr|))(lMdA7!Dtbn3p<}L%j57<~iPR!%^IOD3COCl{)ynf`$yQc|i+re`yEn);Qn` z3JvuDsz?O^ML{pt0v_2L;=cVMriirwlSD%n3xJt6;Kc~axJ%;>ekE1E9XOY&9^*Aw zo_sM5!~b>jUVP<&!_tRbD@3)_$Xt1pq1)s5(!GbU^U+zn`~2f@+4EL|2@dat2t~{%jV9!w~D4lk@+DcIyTVTh8sGb38|Q2yhZaEp>8%`B?|E zM_FXPQvN?gK$BzNJjYrV#Y=P?cYDB>e$vIx2YtNza2#~vK%4-y&?e$v@?9|J2IgS*tdBqV?q0m> z>rdh4hmXktyB$Xg5?MYB5sCA*ToI@9m8rk##L;h`~{cHM=L9q zDR?E@^?+v%IFf;j7TX9RAl(0m4$x>ASydYxhTTUw{@|N)c-Q}&!_5!$Q;0J)W3V3{Xh#T$-usRm1lT1SvhfI!JB?uJ{egeT??RMZ%nf(qE>D7&O#C}@a?hEMsp{YD?>ZgTOfXL|U>(_L&jPMA{h63IYdAdb<**~|l+ z7VzZ05Fh@>E{^tqX(iq`$utZh;w8}o68miOz#q*5EZMHU!SW=3`60e|*CDhF!6Q?W zMuhOyVrTLv`@8tz{snCM@gbalVh0zWGKF(CwXu1|L%S7E9deHOF2`d>e0=+{1>CUf zDE4(jtfIg#c*OyZ1`f7fattS&=`XA4D!b=`B_J{cPLji91v5$QVBEW~*(2xN*aV>?L2?2k4 zFF@Jmj$Epc&xyekes+HLAmTcy{aX%xx_b`04ld9d*dis*2oQ_^9qV%Z%cHaS#-p<` zj&Ray7spS#QUJ{R9Q)@&?3oR46d_i@F@j%?KnB$~u6V~`EPIMI(c=$!{i(JQr7R5* z(eObZ-+0iMafFlBG8{h>{Wk9d`;T$#ImU4m9IL>L;GaYq^4LY%Bm_Vjv`!wL0Prj2 zy~+>TcDSr#xx9S+vXledxxb5fa2bI&X*6ka7WkJUB@8H(OB6tiT!n{^__+UwpLR(Q zMOYihvB>8)F|O+ZhXM!x;nHJx@v9aP9$rS%HKu_e&?EP^BHy*5u&ho))~Deij{6UB zjfTK+alEBYG~^s|Cga4lG0UlqnXf7x|KD`_=|5njgM?Ufc3`*I2gE6y9g6=l)x1AiIE)k9en8H2k@%j zK8D}`;1H)PE@hIky8}FWe+$pdx^nfStpI3fXiq}{b}VF;8`d5cqVY9rWR#VVNfwR zCbxaM(epb{Ih*{<3|o7I2h$GcS`23cm1f11rfcj*r$euu%@Aq6I)IUBl|fM z1e9;0Ptb7%e{L^8Nu;naf2hG*=GppgV&Ta?VEwZKyyKJ4$f)u+|853fzitM*e$>Hi zz|fMxM4o~+=e;C>pyVh*Ve$pQoB%$6mt8c6_kHppwp`dncwjuhFOrOD_JBLS*NK+( z4lrBN&=93GlpCo4oUy4tW1##Rzl<>kzgBrzI_ehyYx^Y;`|@ToD(~IEXH-p9=8O zi)Zn_z2zug@tRplwP1hL);J_NE!6^!J?-G$JKE^T)sutO)zHu}(op*UTq^Y#wz`B58> z+}pyw-7bzDjpCv04#&*eP##M0oGm_HaQ*_$y0^F6#){4fV}k1%u>qIO)5qcg?fh-IGbxT5)JYDj9@cm?rTrPz19?SD<93x*l7 zK7B|5kfer&`6<8`of7#0VNW>`Xad2Xy&5b%Ay#pI^$ujxs5HN+a|1ZB1xW_~Vmm*a zjR2kGx2HMUGjV&#tmm;vXvi|Gf7Zx2CbtE2_cGk_uhTNVF|77CrIk)Y9{c|noTdei zCKUYH+kw+^+S%~B&o7H;9UGO;pQ%sXWwi*xK<%+`_LU`uG6pD49K!e~d059f;Lh)K z@W3Ojk(mEBX{FJS$@2<;%`?CYH;3{IJ)<-^;8*SisPdpGZ?UD};-#@O=_@4JbqDyy zbu;M6vk>|6^rPl96c)@p2hKY+#HuwM;T*MOd9uJSk~gxBz`qULMi78)f65H-lIMnUtw7cVnoRI#Zw4v_f033?g9CjhekAt=3^xl<=Oi^! z8<>5{!Tvlj|-1h|4lylMRJN)_?2mXy~9-J2o0XI8f@BaQbu#F2Cn_Hb$E22 zhmJvWB{Qn8e~~9|v1#n60cgmhzpsC(m@7;UHmL{r4M9MvficNzl4M*lXZ_RfwDC7z zScA1rNFKT&wLb^WUGLz<&vS89Xs(8S1JUqBn>a2yGnBU#%awmM0e}Bk@Y18Z;|Em{ znb}4cE~4gd^j3!CF5u5G{ORv+K-Z6N_%-l`I7jI%=eOjNW_dYBzSxRO)oBR4<-!1N zODqnm7x;;F0Hz1E8++1Xnm|xHtoKr=T%?1s_Rrvg0tiy2z#!VO+OpV#YXclS@OkU z6B~fX?(y&+Uw0zzf3S_!E|)%X<+GRnxzw;1}&`X9A8%=X9%NB`ix7r{`=0_C4g{|M}>8-1zsa<=%9$MAdY? zmb^Jxkck0*^r|+Va{@yk=KOOJ>-rOOBsBaDAJ5s$5zIz20d)sIu^o5}I=2FtHM198 zXrOh`dG!DE#ToqfPp-$~dptQuEdo`hU=@q0Bm!1{^vf;0{0s-dToL%|X%Y-YLlyyl zE(HGQH9lT`c8K8E$^pOOa?r^H|D+s*A@3m+m&!OX({kX)|2Bos|L1kM<(6r5z$N3F z%+X@^Gyeob6?JQQB{ zp0SN>P-HB_6iMsY*KA2?5TQL8OJ#{r)(m6Il4X#XZ;>rziR@FB83v;)Bh&~nGelX( zJ{aRSec#Xf`Mv+#KhHh)-se2e{oH%bvCJRvG>7O3!mh;EPnXU6UHY>rc))88P^tSE zCBmdN7BgP%xAIN0v#v4Pri&#)P9OxPo)?yO?z~yds$-0<2@;UD*vd;X?B^JYBTl^y z>3b~Cdm>)nOTSyaPi4l`)^lr0-Ws15_q~=b2YsTZNGhJNQ?LD0Vli=Qgb#~DWCFeP%GSjEW;q?v6hfpXK%P?x`Cv}UV{*8)^ZHDUZGx#H_g2v2<~LFRf}m4 zLvicPFWolFH$oDhMwDE3O!GaU@&Y*Y-X&0Sd8u$YShAn#bJtTd@EePK#sDpkYW3#Y9 zjdDFSg_Q)B<&Cf;e~Jt5Sn+2Y5E-PZN3;v%Qb71QV&HjVMr^qrn~C09DVVMDVkE9w zi1`lZSaROU zDBkQ1I^5c@C9eM|yb7K9O{ni!fA>MtBfno~?Kvy${YJkGyA%`WB;#k9DwhA**cJuU zZJ@NdiauT4sfPVjf7TQ}(q5?V2N79PX7?`f8`l;P!Owh6DuGRQK#MsoH`H z`SZ5^<_}G?x^B1mC+ATM^+wv>)Kl`T)oYANlr&P(?r-2L%ShbS!t&Pv((4*}WE%FaK4-Kt;2}x-X@9PtatruuW zfX5%sx|u!rfH3Arr!7K)ZRK3@F-lA&@Es^-;aBk5 z6=*8G!l7?c5l8013Hu8RM|Mcp`p7K_pRgyZ)SE_T3;s$fRC`uR&0*H zkIBDo6Q}#gH9q+@YCCAJ3s6pZhJ7`&ItW^EplUD;V?Vln#TUlOLG^!AyN^KPM08i1 zaDfiPXVORXM)|TRsmc)Z5p^$9KIMs21@hY1G&Q=)o%XB*M|G(ejK5%{w4Py_2S!o( zU^<3f)z^E&C^@kr17KcoIRUY4I@w_dg+u_YA6 z`c4r=G~QN4epCD){z79#_3a-iBsW}2pU3jh)j{$4d8=(@?JFJM%h!KBJ0ZXLX-MR1 z*&tquX($5aCC!|OZDcpc^>l`WpNVyfBo=+&yfdJ20I+5BdF2je`>}F%vvJ)c%_OaG z6$woq?JBN`r?wG2NILN$ccj6fWmtsx%k@8*edREwqKd;IfGZ#SD6)UsT5a5S7HYH| z?Rpb*jPhvAy}BSnHJe4W3QIy?iVB}|TTJObm#+EoD}_n+)L`uh88mMjK*+aMmI|K( zv&T(eOGg+QD#|<_XY7gPvaI6+=ri}u5kDN$ycd?dU!l#IR}o>%Wbp=P^7E*4X!c$z zM%e2HmD`Ea(9?&?s#8bc$cfKR3lL5wW_@Doz(2V2!I>pw-aq3rcy8 zcUrWajJG=qY!!{Tu?V<8S23 zxfEiH#M)~iycY8)Ea~{@ebg8)Z+j?;kUMS8_F5+rL8$T7U>kN*5Heyf{CKXHWmkMf z^xKAWbz^x5bx+of%8JArIU8n2WrfL(L`IGM-R9M8c>mdi$bf<(50|f(1yNI$*H#aX zeN-?kI(s;kJ0)(5tI?p>uZKuzvGH5LC<`jcTzq6Ym!&L&zU3jcvG`+N*D+9^bc!tK zJ5j5LO?CX~PD>{SYj$GG>wxGCi7L)hQI`~JkKnXULCmCZQ~wZwOCwWLnv;|@cr2HI>Pj%gwtF#Pnpl{RQ0SSXE(I9eN@)NG4$a5 zdSBZza1T!=^@w4n=g$fq>8TU_XXIQ;>=k$Z>_7w3$CAem%x1A!FA=qR{YN(e##TGm@P$o~ z+Mg8wEPzoSg6OzqeYR=k_N{8Df8^9x;*q7FFei#5Y-?Hct%;(&5BKqFU^Y7Wd@=OvhNvU2T;$TG8t z+G{Lx-xo}%FEmGJW%}zC!6`VE&i(t1RE2{=Ss9e?1^ye^Ny*>0{am0oO0Wq&@ z?I4t0^JZ!qOb~czYGrfE+0!;(#e}>&l$JRqBW?IYfs)&EhZU#@RE5jQ+wPT;VU*lg z6=hfABTt~Z^m3=%v!-s|P*pQmNz!aOzSObLL$nS#!0hyHqE}Jut|A9Nn51Hfk^vo? zeqB|t%!`)mk9ZbwzWE1(ECKLq8-9k>Cq+LIvc<%N)WD&_Er$me;E5H`6_tV`<|Vup zp4>T-C}HaH=9q*X{_6eyOZLiT%CYLUxid;?;G-6f54?KvOE3Pc^n@Rq>Jy;c)IIh( zQgAf+_ctU-^k}S{s`1V`^O%!V`OAYMTlR#T`;p#i?9m;bmf`%d_wzWfvHOV* zXt>Yz=*AbArhg@0v=3o20(MG@r7%giBJi=I4+hb(rT=f{zL!prN`&|9oGP4Leze4%JN( zHHgeOq_>|vsVo^RKUdYSsyc*IowuvIL-Dg+{2t)Yuvl}U(m1OzY4HJMQwaowJtj;e zwpXITOy#*EZK@A}e45$O5tkHa3K&1=-9g=+Y9l?nl~wTbQ%a)ezia+G@Zyg{y=!ot z=es-fo+tl+4HenoPPbf=xvZe^?e83%i8iS>=JjR>&W)t4`+D^eulH}rI%ZD9h`wsO^9``Xi{ z*PD5(44i1|R~DEl%Ye{MWw6l^CBFWP(IQPNrMCcEX3D?ZLm$dAY%;GDj=qonAYaV! z`k`1KEKDM(GJzF3l2Y5Zosj_{O5qKaT+*(jr21VJRlC`;?vBp;G zI**EtM4)S8WWGI;i`h{9yPjxIc6h5e?CG}miWXP1>;%wQSJ+$-U}PKZqlxBb^RXJ3 zbYEOFT*UPOO(c!R@b>*NIT0e3{qr=rIr9`Z$E%qC^-8L5vdTDP>m)#@c0WFvrSIoW zzjdcDSNc)vCLlMpP3ILJ$gw)deC`sa(@iD`<)TUb_f!Z$U)N@-W^0jPrWQTr#s3=A zd}S=iIO{v`>k0pM(EZKJ{DrcajYQ}DN&LR>kyfRj5$+yNe#%`rzh7+r7b@zyu-Mfd zH`t^LY>92<5)Nt)-d_H$yF>Pgc=55!Z@t$ds1k_g99$nhn2NEBS?p$ElmY3a!aLZ; z7G`jr9|Q`8ArEGq7Q1f8&AzyHNA;oWrt6Qs@Or!I0gS84jAZ`h68Q8|bh{6_{>Mbx|UjFiCXJb0H@uJsY7F*Glk8R zkD*QGFJ8DFfeP^PgP7? z54%3|6q+(!M}(Fp&-@#C_xw@ECE4+eNiMEU$A2~wP~Y@`hh2cEG3~6qzMQQiROC5Q zK*3FdRODOWzLWo*$}KIczgtI-Lb8x%?9Q&-st=+;%i{BF>G@qYuVh3#uLJp)bX(>A z0e@n&ZzufR;)hgc{j8qEH4Y#}YPG2(sc0m0hvozX9SAg5s75t9+C~DzdZPV0wd2A( zC`0^2Org>y$h|s(kM&EXUTs&lkHZl6*4y<>Kq9D3zs(~C$@8^o=o*WYh#S*9*Sc-D3*ru_1R9^CDpjISOi=!fSxeVVGeOk2j4T<(ETfa=$|s*fPh8jvMP|(J30a}b zrA*Qb4w;QX{g+-x$xb}ad?NDH&ma$ow@`{|Po5#GK1`XHVYuGRm%P0F@i*Oi{S$<) zhb3vpe2&e{KOKPs!|A|<9%H>&`A~7waFeAoGcGN@h*@6 z*`kN3J}!8SYx{B|5RDh?dD|=K5U>5{Vt40CJ3Y_2=nWt1zW)XCeD8?bJ!?oRH?mig=c#Gv*kP#pg*H;K7S=AxAfEU`4B-Ji&VB&e(+#!`{p|*Dfn}D#q4o*wI5o>3GW`;{$J33;v!d!>ZhNbv; zL}3Gl|08r9(zXPJ!-g2tslziwq#JD2M}Bw~R?3@tR3O|#U_4C2)ZuyRzLfnN0AANV zRfh_*f8b5PRP&*yS3ozxqQLMZINm>lO4d5-l@3XE#6;k|dt`!_N@z8wXdwDhe(<-v z(K#vg`FH=3`~RSuiz)Bm4_NmF&wPS8!Mf7Q)>xJ&0auS4Hbw@_y!0K}2gki9M)?bj zyJtF?I(q(94lij=aYz5kmKa^^6DxXwyXB$3SMqy+*a@Ss;k56Bmu_!>abbLCX1@)} z@V8$QJL)}e=0PxSHSKHoi4gxjmA~C7st~{Q`7BG4XAJK(iP6%C0$I- zi-SwC`OL>LwU|D`d^%quR`M?3w`{`nY*0>!w(h=t@WPG5@Z-y0K67CeAEU36wWrT;DWgv5qJ>761k~jRUrwB>DNtQjND|UW*5D8#(ui?Bc3p8G(XdwG zgYwl;=p;Dqu22lpLaX&kQZC?**AuiCPlU|TjGRlSqZ)Gqxr#^ef-zO+<9h}I_0v;~ zKwRgn-y@#$W9qGjNNc;aOEcfLAEKktZ2yMPLh+Z{lw^qZkH z9>@v39IIyWBha1ti)fizV;e@-Y}K&}UN7+`dw}C{#kN2rNq~U>)yQ{TFb)m6iHqKo z7kOK6ZW~71;j{cRWs?EOtKeD~{k-wbhE?|By0hnwKf&-& toHome(context), ), diff --git a/pubspec.yaml b/pubspec.yaml index ffe4863..9f7e14c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,6 +94,7 @@ flutter: - assets/tray_icon.ico - assets/l10n/ - assets/icon/app_icon_256.png + - assets/icon/app_button_256.png # To add assets to your application, add an assets section, like this: # assets: diff --git a/tool/make_icon.py b/tool/make_icon.py index a28f971..2fbfc5f 100644 --- a/tool/make_icon.py +++ b/tool/make_icon.py @@ -138,6 +138,17 @@ def main(): master.save(out / 'app_icon_1024.png') master.resize((256, 256), Image.LANCZOS).save(out / 'app_icon_256.png') + # 앱 안 왼쪽 위 홈 버튼 (26px 정도): 바탕 + 큰 노란 JJ 만 (작아도 또렷하게) + button = Image.new('RGBA', (S, S), (0, 0, 0, 0)) + button.paste(gradient(S), (0, 0), rounded_mask(S, int(S * 0.22))) + font = ImageFont.truetype(FONT, int(S * 0.62)) + d = ImageDraw.Draw(button) + stroke = int(S * 0.035) + l, t, r, b = d.textbbox((0, 0), 'JJ', font=font, stroke_width=stroke) + d.text(((S - (r - l)) / 2 - l, (S - (b - t)) / 2 - t), 'JJ', font=font, fill=YELLOW + (255,), + stroke_width=stroke, stroke_fill=OUTLINE + (255,)) + button.resize((256, 256), Image.LANCZOS).save(out / 'app_button_256.png') + # 작은 크기 (16~32px) 는 단순 버전, 큰 크기는 필름 띠 포함 버전 simple = make_master(small=True) simple.resize((256, 256), Image.LANCZOS).save(out / 'app_icon_small_256.png')