From 3a1aac380fc61d83d33b69c8cd8bb25cc69b0799 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Sat, 17 Dec 2022 00:20:38 -1000 Subject: [PATCH 01/26] [BRANDING] add Forgejo logo (cherry picked from commit f42622c7d5a28859f535e0d86ece06101baad1ef) (cherry picked from commit a39e7f2a79f6527d45439f21bd88378264160c3a) (cherry picked from commit afa2a31bb99c0fd9cd25c3c0279e6c49695b1900) (cherry picked from commit 276e8856e594ad7e73414382d34fdf0278cbca6a) (cherry picked from commit 91b948ee18bd8b076dba6f305eb7b0daddabd1b4) (cherry picked from commit 6a2a139c516cb44e7e795709cae397b3ed55ed88) (cherry picked from commit d6de1a009ef737347c2304f3ba4707ab5c1e3123) (cherry picked from commit 278923718d491824669e7661ed49592237c85b8c) (cherry picked from commit a54f6fbf888d6c19c22f57dda3791a0679b77578) (cherry picked from commit 5b82a2d6f0beba058ad47dac046ac980b295d5e8) --- README.md | 2 +- assets/favicon.svg | 56 +++++++++++++++----------------- assets/logo.svg | 56 +++++++++++++++----------------- public/img/apple-touch-icon.png | Bin 3162 -> 2709 bytes public/img/avatar_default.png | Bin 4889 -> 3189 bytes public/img/favicon.png | Bin 4351 -> 2968 bytes public/img/favicon.svg | 2 +- public/img/forgejo.svg | 1 + public/img/gitea-original.svg | 1 + public/img/gitea.svg | 2 +- public/img/logo.png | Bin 14354 -> 6747 bytes public/img/logo.svg | 2 +- 12 files changed, 58 insertions(+), 64 deletions(-) create mode 100644 public/img/forgejo.svg create mode 100644 public/img/gitea-original.svg diff --git a/README.md b/README.md index d61bdd0ec9..fa21427674 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
- +

Welcome to Forgejo

diff --git a/assets/favicon.svg b/assets/favicon.svg index 9df6b83b56..bcacdc0200 100644 --- a/assets/favicon.svg +++ b/assets/favicon.svg @@ -1,31 +1,27 @@ - - - - - - - - - - - + + + + + + + + + diff --git a/assets/logo.svg b/assets/logo.svg index 9df6b83b56..bcacdc0200 100644 --- a/assets/logo.svg +++ b/assets/logo.svg @@ -1,31 +1,27 @@ - - - - - - - - - - - + + + + + + + + + diff --git a/public/img/apple-touch-icon.png b/public/img/apple-touch-icon.png index 0c803d35dc34c01281a52c460cee9e65e29ad60f..1f6c1544f80bcd94adfa05ef4683537266de020c 100644 GIT binary patch delta 2702 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 diff --git a/public/img/avatar_default.png b/public/img/avatar_default.png index 129967112d13ef602f6ec42f28b264c4666be2e0..f335e51dad13df7ceb19701a71f8efe192173286 100644 GIT binary patch literal 3189 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 I1NZ2E0VOn}g8%>k literal 4889 zcmaJ_cQhLgw6<##YSxIYC`GK=M1!{W-qflZsl8XIs9ma6Th$&_BzCP*ds9NhRx8wA z@%nrJzjx2M2v0+M zD)rTS?DH~k5w3=S>hn@iy?C%}4`4Bhh?D=m{I9W0j3IBJ;!52lme4AeXp1+;Q;{tm zy|^uHrVsm#gfz*|LACL+rvp%DSDJ z&g_)Vh9|+VPrj{Emp-LGF(amM%=|`F%GH%k_A{@KE;NA%E6@hV=Rgo4xx4t73%clX zwiVc-i_gCiSvo|XT8|6+JP3?MRoO#hTqyJ3pd{bwR)DR!ImTm|omb3!hO6fiie!e4 z3lM1cw_SUVTG%-JWPhR<$5Gv;5{VV1%tMQA2-&iqgH_vDSXIlj2UFu&gM=e(BMjU9 zp=pQ7Jc0OR9Oa+(y_qoXHhj-=ne8}Fg74+kHKk8LDvgk73V7o*GcydHQ%@z$vAIc1 zoF8|av=jn^(N~@ZwQ=6J9`1~*XVBKBu;k86ekPjMOjBQM1<$ZmKC4yqegog(_&OLL zHLPnHbcGPIWOI{J6ZUsFZUL8zAw`%54F=V-(uIn2F~CmJXRh@>#9b7)4S=-tegbc) z0{SrX5}e&Z%L{X?q9pO0o_9!sAN+c+jLT%cTs-E9x(_=sWy>-&VznQCnTnAlD`GB= zctGU2eKQDv_&HFEYbG6fZw&+9;wjT(<*DwA24XbDHG{)VG^9-8@=dt9e8MWDx-V(i z-efcLDzXo{*)hq{m}++R0{@mFH`L|)T|^W40+|LBaQP?kwuUz!nb&bWP6;34xp<5% z7uv!xlsVv84TcM$6*?Vf_1cdsL`^0yv=1$i_aKzqM4upye9xesXkl=-T+Zoy)=dbn zkB_GxEllBkPs9*;x6Dl{<~)ad?XEe-u-LF8BwpUO1d6_mTjnPjh~%t5eQI1O${`P~ z+3P*=R>h*1x&ScJ(Cfwz)y5#%k25{$$C;qxUZF4K__LaZ9qx71>5oiEE-2C8RTbE> zZX>^}{Y}W+Tb18fVrMf~jY-l;;`chT;G+vo70>Um*$@o3PcPwcNL9acN!`smNzr!4 zIbzu`Y~~1Mo4dPuj~}_bA^&!_`Rt(4<2t#z(E}yjhfqA-`B*t(!k_MIeD3SFbFH*x zZ7Pw!BWdk-DBs0GpoK$on39UNCEJ>@fmU{3)Q_q*1hKXR(pu-go31TL%m0LTReD+y z>&#M#HmhRqEerB)@lGY|OEIZ&)Mc8=cu!p$!08qRfSq} z)+M5>%2$juM`-E)&|{k|y*~TXQarMD3uMwr>IJ8|PiHfJ{#qS6QUG&>#W2V*W;7-U z7!Tv8iC0zxH^N-i0gvPuf2j<%9Z>*jRcK}QfeX;$^8i4N^epD!vyKR!_CfG55xb+M z6|KRGg-?NJ^Xsk$pH({gajK;a$DifWssc_oU)`(gCh2dE&`l;$cS{r{IrVl>BIQ=7 zk`cRqFUYUZpH|&u7a47;qV5W;i^SFCN&fFhC*u0y23*z}qjro}hgVj4*stPo1?QWC z&Yi9SYkY_p*}%^=&P$c^f&fWYkKgq@3V+`rwa@VcbP3uAmSk-a4k$9^^;h}Ojuk@} zs^&@-b

9N^|!jAXDgxr$}e965C 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 BTF?Lh diff --git a/public/img/favicon.png b/public/img/favicon.png index dcd4edb1a30bf93049fd24c31317e3344e08d95b..eda0347effabb1b681c3816cfd3580b82227c063 100644 GIT binary patch literal 2968 zcmZ`*dpy&N8~z@0zYXEY{ZcUzAxxB*F_#>S$fYJ?HMu4ZQNuKmA{nhPw@vEM;!t!# zP9cotGS^TIiL#Dz+wZHDbNPIJ`@DPiywCeQ&))C;+GQ7KgqZLSVE_Qc?Coq^!B5)e zTaXv*!qR_%ooC&}(H)KmbL1EToB)6m^rHd+4p>{`$!}XOv(^6tK=G*`7H|cofi4hm zW!xz42=+7Il-w2Q0zt?>m_Xn$@FVJ|8GhxCM?}9vpkV9mCaZk^gjoc*_m~t`Y?OKk!!OmJB=wB)P_|EeJXRp!?se^?<*_ zSG<8y+3y#Ab_50mflmmaf7@ox!Xe-l&!%$DcvJAweeKY_FIM~}*xu5@u!N5frI{@1zGD%Ul zaD%nj;abx2{f4&pLAjJ6L(a0WSS!*e{xI4#0*UdC%dUok=d`~;}sOaewD`;3?$uj{{(nk3< zJYSHOf2MF7ZcBSy{-PD;eCQNj{ z)}W34zPAxG&u+yEZ%>|sBv)bM+<3B`gwGZF&FEQBlf5+f3|&Ic=K9UIyjSg6ttgly zpTg@qluQU>s#JRM;(20jJ^ZCe@0mZtx9?ir-fCT%ja=!IAWKyTz#UvzMtDmSsiiRQ zl89E0rPa8H8q&0ELTdKb^rFD^d&zyb3M&-abNrSNp`jn^IvM-~VZ);KQNF~Ax1Y40 zJlMIuk#9Ti@@6)bz{oj#gSUa+V_@-V@yq?)4F*Ce=a#6RIz@aw2FZ94@AkJ3?i6h?Tp$Li0XNc~ zyM(+9PT~W|G0PNqs=A@4i?*RneY*Mi8q1?Hu_Mp@NQ&urj8{&FS8|iGR`dbEgensk zsQiw(a>i#fqy0{ly}^6p9ErZHyZNq$JzmNCGa(l539olY--fwnkoGm6gRsQ2<9bqxX0=+PD)STA38(q$a}!0eyl;&hJN0a1=1x-b zh{SwCHIYb^f7$6MLlocXZqA4)Jj<83&&I|(&Nj&7oO7t(1uHetI94KTLF2KEPJj>k zlJ^*(Rq}3H6ciR(xL^99j3N~v! zB)SCMxX8js)32&-tIYSqU_Rcd?1LZ7fXvQRsp;))sJ?8O{|sJ7>-B7)vG%W=#wKRb zA1alSHujz;^g{80Dc)?n_g(+C) z>o;@YfAQgi3vj z%H#70mi0KHA?uXIngytI<=}Do^rpAf1p=?hcT+F3Wqv9vzP}KtPPAA=MdRY!LiDBQ z8_7$`2#87Km$ROTDSf%d*uB!GC)D!n=%yre`UCxvu1LiAVZpj1Cp{PUmM^tUCcR)~ zKdSIlwlYOM3n(4#zdIZwAZ$pFq1;r$@4>JwFc1BbM_3{Zh13a_M8!k;b;WhHXmOw9 z36N_~nr7h`)iLRr8)>kY5T!;OtPYOwFYGe4L8z210KQou0U^lZED!xe;dma;HcZI*DK%_Vps+jGd&#A$b14 zB|=2nH7EEk#Sb)L5_(Akbs0M_ zlkQDdJxVw;UX~F>wae!C>a2JCrO5kRVv^R?BXs|r$zI_}7uqUSU&gMai5*cP<3_0Bcs!w=a*ZOUhs?NOz|6u_3aA%u)hmT+SAL8p<4gdfE literal 4351 zcmVqr#8cWU;qFB0000000000000000000000000000000M*$m2N=9!C<=ED zhhX;BGuyU<*?YbHXWI;BySKA#JDe5FTQJ)S|J}|pW}M`EwR>Le>>Qb_&s~c+S1-eQ z4l&kR#!kc7CwY59npiI&j~T{c47pqbE$fcf=@y1{J(`CKF^58J=H<%Pa!!F%qeiKO z>SyV{{)-l6O=+FB#$%;n+#p8$dt(?cB)lbDAdh3g9Kje8pD*z#5+6kleJrD$n5GFi zUBj|2WnIp^5ogaFjG^Kxf%+->e;?Y-%bAfFxyhqM%%i%TM?>QfNxDn;fk`-y7_)@M z!iJCMdE7G2f4oCagty_WBaa5^N2~jcoXND%gjXY)o3lu44zjoAJn4c#I&iTh>JQYYQI!*i`L~;wElpTY zn|V5qnU}j*j8Xp6<+CnV>#%;qxdsqpq-8zcGFbAK5$9STE+9D^A;wwZns8ru`J>Lw zdJI-SLLE4J3StZq?tC8bKTm~69}o7DaPreD68LEPwbo%xxD;RUj=gJua;#~h{oA%R zNp?Qlwrvd8#%J5caBbVRZQEme`tN(r>SdG6>+bh5{W5j;)baMq^s98Lt8U%;1SeIn zeLJ;7H_rJ7r OqaJ!4A=;_`A74VOd)$sc@Azql&vEQC?G%#&2H3V=e zXtU^q_JV=$!y+LetC>FvskwY%n}jV-&I~L(7N^(Bu0sw@hO#^h2M~6^XK*-IxCbn| z#Ed{{a%S8G4-Y-_hb#n+m1Mcq$le+KC^>WlgI}?55b3$69dhC_aq@ndlpS}OT~?b? zHiaCT96BrTWO#l?rf;hzt+Pg4Ccgy(jY$Fo8~JCFLz6@M9%P{aeyZl;dqFv5iU2i{ zUJyC7JeAaUSGb@2Wf~{*vV?D%{Z5bc6nH4q+T_rWkV8i>aJE@6KvvgSbUC^bm?l&{ z135HV$f!WX&YvqTco^+94mJyLGID4s%krHUD%{wnxZr)vL5THoWu8wCO?FxW0zG7k z-;7zzVW3q>;xmv#lhvcH;Y^u3!+(e44xJeoV0{kR+oK+y71p823PX{QdMPZl(*=DD zbi}+&FNqx5t|3$o6}PUDU(EM8a{*|Xw?2pLt&tCh2sy42?~L{aJfPFK8z@uDhZ}Ks zGiRU?&yz!w1%|Uzfs~udLJ8^qzcCkp?gO!Y)hW*+haUCNEOO|u#H5eesXz`-h5E@{ zgjjzAy)1HQI|gkSYjrL&aJ|Apo0y9bWRqbhpGEfO$OkFp2xl3A+t{gq@SQ@sZmzp0 zwC^o?S>(`mEF~=v2o5=t6c(DqTm(cP>1B~a+ps#pA^LH!^R$SrrWj>9+V#GOe>1HE zAF$vZo;Ix$e{Rst4aCq7QVbp1b~)9dvYfdH6l^qQXqH9Qt&F>~W}4^TP^@ZD#HQ-77O=Y4hQzTMjMb4WXdyC?CA&1KvtF z|MCCZb-=at^S6xTwRJV*&{lh&1p{nWFMx(&FFPha1USJhOILx=13PRNM6Tyeo>%oeD7<->6ayk7iML0MH1?>Xlc5w4tb zV!e)iFXwH0UldAaf_TuW-Q)kI`0aRzxd4sNWvuNuvYPAQlL;wU2Tsjf_c)I-KgXM~ zgEJfexTHvb$UC(EP3AJhbB=g@<3FB|%yob-LvSoUX2rL>OaE({x>K)-#6jNU8o6Hs zu^{2Q`QTEngU=?lu&mdA!P^`_reyw>QT&C$w=~fTp+75<<4jdpw5sj5Xa3yf6Z$1D zZ~FUVpX55&owFYF$df9Y*=O+Fk^}ry)Ya9(vH6QbZfj~GN6SbK{i&j2%_Gc3q+|px z^75vy-#4G@;LFLaE$j83`zjBI`uaM)YWEEO#)$iyghOKxE3-hq{0$osg#ybFk22)A z22g0RoX#m(@%%{9Zf*w~_Ae06e>j#o&}9+R#u&1wxOhc!&$vIh9Cq~e;-=%Y)WO$N z+gsM_KI;W8i?w^_Lb)^+!;N`%NcE~yKVM=l0z!OV+wfP1-=maw#zk-So|%07sthh> zqgzhrLj^mzDz+Y4&Oe{jDwf)=-eIAkeKF*i!;I7)a|!qbu%;Ewx1~EKaY-QFM)fb` zdg;@6<-g(=aZJjRzLl)rjV9W82}CXf`lkI@d0mXaDC< z;y+buJg_(^v)S1$IrO^*Z!|c|$Wm}w9LV1$l|4aK5WfO$p{P8UzdYLRJMLO1B)Oh&;lu3|5(SB>{Evj}z&WOD@~CBBI(qSXeZ+mTrz<*Q&<$=` z2fc@dWjR~}2ycv1=?8(%DV@0viG8Q8>tk6jZF*;}3S@1}ab_1fqi~7}hs%l5AFvtYE-)b= z+`RC_%((yIi_n;oUPa|OTouTQbm()LWzEIg$8#MZAMHe`9M#S){jWBvI@mJvuRmo@ zLsb7RL20`Y{-FKBMhSaEoXn4-@B{i_V~&4=$Rgm>35W()Yr0MUg#KuJ5?8_8&BIMg z*9~HBAvrs61KO@k_(L0OY(?|#XCY?giZ~|Yb){v^1zSgRO`!Oq&CUal+raMe`##cU9zAH{nF4og4>&r8bes%_+=1N02De^ zOx*KtSYzVpzUTZ*^cB7;^3^4==+L{4u9GG1BSZ7jTc|ivo)2p~78U5>QAr zZok3!WG+IkjVsHS9!t|;al*=C_NF0jcXH!2wyXy&JdKdWBwNjlfwe#J4Pm(+cW6l1 zx*|=GF{7JC?_Z8Z)gQL$z!EMA2+tTOmFw%kOa-cXBF)zdQ}ey*&@(m+kdB@0h`2mE z=ti!JVM{&I3rm5sn<&yL0g2uX@_SHPpztu}&B zZQvjv{}ARyfbfK$7R;JMtCqanzn?({=BVbN`YngZf0J` z!$aBk64K+&7sUVe$6CJ@o0Kg9*BE(Z383`ckl-N16P0=p!PL_Ui2$@}8F+YXLYp0n zMc@wuP4w7s{g;HJe=E|0V}-3i**yyMQQiD5IMd;r83cT(RxQNLL5>VVDP1<7jRKL8 zvR~lDv!)DOI9q1=f1i@(|L?Jm@Jcr~eDsQMq)GS?KL2ps)94Nd%MNiX3K>$_j7UmG zm^v$qteMZ6csdv2eKLYVr@DrHJ*6GbD>=xc1;p8rK2NKj=SlSsLJq;i(-}=2j1aPu zr8XL@JDhT;%DIW0;{A3mZZhGErFv%^Rv@IK-wp2gr)3w;ULdxkd`zqmJ0J% zP%6h~HqfC*vCtr3+*h6uQZ^1 zdKGju6xK1r#Nl%zBiNco(9?t$_U@R+v}P7oR+ojHHQ28A#kRgQ(5Y*leWr=?y5};2 zJwS9F6GyReUU%%;x*9asqUR5aM*R7~H-iCaxBDE8y{3+5yMhty1MOj^y~Njs--|hh z5(OG9AZHHg1vAz72^tEjW*O+7NXtphG}LGUFwJUl&tU|4Ko`wqCg00L?{sYt5VWMx z1YjO#!KOnEW}b&@al|1L2J~*mqH>a{pzL zC1?3xWQ6Ew@rf?;mE?4;=A7r@GR~p{LQ0RoU&W^HBjn4PI`Kk}G|@74iO4U1@^t$D{>TWi0}N9a zxz=Ryk|#BR3S$vO=0&6Nlce3;M7m&-Gvdy`kjPjwG(%7tj$j7<-yR$Y000000QtW* tf~u;js;a80s;a80s;a80s;a80ssb%lrjbZuCPV-L002ovPDHLkV1hglVSfMs diff --git a/public/img/favicon.svg b/public/img/favicon.svg index afeeacb77c..804b05e284 100644 --- a/public/img/favicon.svg +++ b/public/img/favicon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/img/forgejo.svg b/public/img/forgejo.svg new file mode 100644 index 0000000000..804b05e284 --- /dev/null +++ b/public/img/forgejo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/gitea-original.svg b/public/img/gitea-original.svg new file mode 100644 index 0000000000..dca9b4f4db --- /dev/null +++ b/public/img/gitea-original.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/gitea.svg b/public/img/gitea.svg index dca9b4f4db..804b05e284 100644 --- a/public/img/gitea.svg +++ b/public/img/gitea.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/img/logo.png b/public/img/logo.png index c7971f91835e889ed15a0e5252734400c5c65cae..1b2d9b4023427395448912e39a9883c279dc1618 100644 GIT binary patch literal 6747 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 \ No newline at end of file + \ No newline at end of file From ba0e28c0e2729af483cc7673b2d75a6d07b43bf7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 18 Dec 2022 19:03:34 +0000 Subject: [PATCH 02/26] [BRANDING] Rebrand systemd service (#137) - We can rebrand this quite safely, as only new installations would likely look into this file and configure the correct folders(to use forgejo instead of gitea). Co-authored-by: Gusted Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/137 (cherry picked from commit fa78e52b5d25556b4a4313c4ac78edf6306c5bbe) (cherry picked from commit e36d649989a69a1761c3d7cc709f97f80c8d378a) (cherry picked from commit 37e15a2f4108c4b7e082a69fb8cb77068fa6dc15) (cherry picked from commit a09a4b3ce0b6f63ac44bf4ea0f4ba275a9915598) (cherry picked from commit 10615fca8ed15734dbcc4b1473c19b0061413810) (cherry picked from commit f765a10fd310daf568971cad6e0b99615e96548f) (cherry picked from commit 2b1b539d2c2fa9415509dd3dbf31677b1df55b07) (cherry picked from commit df4250b6a849308e95ed1ba18e98db6bf452c228) (cherry picked from commit ba499fc09216d4ed93955d1cf54427b6d51bcdfc) (cherry picked from commit 4abc3eea906e1783f6ddc2e8309618a5375f6a80) --- .../{gitea.service => forgejo.service} | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) rename contrib/systemd/{gitea.service => forgejo.service} (59%) diff --git a/contrib/systemd/gitea.service b/contrib/systemd/forgejo.service similarity index 59% rename from contrib/systemd/gitea.service rename to contrib/systemd/forgejo.service index d205c6ee8b..04ef69adc0 100644 --- a/contrib/systemd/gitea.service +++ b/contrib/systemd/forgejo.service @@ -1,5 +1,5 @@ [Unit] -Description=Gitea (Git with a cup of tea) +Description=Forgejo (Beyond coding. We forge.) After=syslog.target After=network.target ### @@ -25,21 +25,21 @@ After=network.target # If using socket activation for main http/s ### # -#After=gitea.main.socket -#Requires=gitea.main.socket +#After=forgejo.main.socket +#Requires=forgejo.main.socket # ### -# (You can also provide gitea an http fallback and/or ssh socket too) +# (You can also provide forgejo an http fallback and/or ssh socket too) # -# An example of /etc/systemd/system/gitea.main.socket +# An example of /etc/systemd/system/forgejo.main.socket ### ## ## [Unit] -## Description=Gitea Web Socket -## PartOf=gitea.service +## Description=Forgejo Web Socket +## PartOf=forgejo.service ## ## [Socket] -## Service=gitea.service +## Service=forgejo.service ## ListenStream= ## NoDelay=true ## @@ -55,28 +55,28 @@ RestartSec=2s Type=simple User=git Group=git -WorkingDirectory=/var/lib/gitea/ -# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file -# (manually creating /run/gitea doesn't work, because it would not persist across reboots) -#RuntimeDirectory=gitea -ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini +WorkingDirectory=/var/lib/forgejo/ +# If using Unix socket: tells systemd to create the /run/forgejo folder, which will contain the forgejo.sock file +# (manually creating /run/forgejo doesn't work, because it would not persist across reboots) +#RuntimeDirectory=forgejo +ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini Restart=always -Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea +Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo # If you install Git to directory prefix other than default PATH (which happens # for example if you install other versions of Git side-to-side with # distribution version), uncomment below line and add that prefix to PATH # Don't forget to place git-lfs binary on the PATH below if you want to enable # Git LFS support #Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin -# If you want to bind Gitea to a port below 1024, uncomment -# the two values below, or use socket activation to pass Gitea its ports as above +# If you want to bind Forgejo to a port below 1024, uncomment +# the two values below, or use socket activation to pass Forgejo its ports as above ### #CapabilityBoundingSet=CAP_NET_BIND_SERVICE #AmbientCapabilities=CAP_NET_BIND_SERVICE ### # In some cases, when using CapabilityBoundingSet and AmbientCapabilities option, you may want to -# set the following value to false to allow capabilities to be applied on gitea process. The following -# value if set to true sandboxes gitea service and prevent any processes from running with privileges +# set the following value to false to allow capabilities to be applied on Forgejo process. The following +# value if set to true sandboxes Forgejo service and prevent any processes from running with privileges # in the host user namespace. ### #PrivateUsers=false From a821e904ddb60c09f09dcf96455ab7f172eca968 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Mon, 19 Dec 2022 00:05:51 -1000 Subject: [PATCH 03/26] [BRANDING] Add `forgejo` emoji (cherry picked from commit ade55ad308ea0ac6bb36903e3a69b02d18228adb) (cherry picked from commit 107f7266183584b51299351961b73ab2b185f24b) (cherry picked from commit f29cf9cfc107692cd79a4ba4062a66f90813bc4e) (cherry picked from commit 0761a41eee30a32c822834ca2b989ad6343ed1e0) (cherry picked from commit 992a270199cdfad532f735deba5d38e796ce62e9) (cherry picked from commit 8f090487605b4a7af348a6a52ea7e0d63dad7a0a) (cherry picked from commit 2e3f7ea046b6a09e83e001caa174e240d734349c) (cherry picked from commit 1fb671816b914c444c4f98fe805bba4785fb94b3) (cherry picked from commit ee80643dabdc1a61b1f2cb7ea9541590e75c99e7) (cherry picked from commit d63169653ab339fd4c1c21ebc3470fd9c0227376) --- modules/setting/ui.go | 4 ++-- public/img/emoji/forgejo.png | Bin 0 -> 3189 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 public/img/emoji/forgejo.png diff --git a/modules/setting/ui.go b/modules/setting/ui.go index bf2b2d4bb7..c98acc1663 100644 --- a/modules/setting/ui.go +++ b/modules/setting/ui.go @@ -82,8 +82,8 @@ var UI = struct { DefaultTheme: `auto`, Themes: []string{`auto`, `gitea`, `arc-green`}, Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`}, - CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`}, - CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:"}, + CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`, `forgejo`}, + CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:", "forgejo": ":forgejo:"}, Notification: struct { MinTimeout time.Duration TimeoutStep time.Duration diff --git a/public/img/emoji/forgejo.png b/public/img/emoji/forgejo.png new file mode 100644 index 0000000000000000000000000000000000000000..f335e51dad13df7ceb19701a71f8efe192173286 GIT binary patch literal 3189 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 I1NZ2E0VOn}g8%>k literal 0 HcmV?d00001 From e5ad8fb32cf60f9f1520dc48978d647b53e9e9d1 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Mon, 19 Dec 2022 20:01:46 +0000 Subject: [PATCH 04/26] [BRANDING] Rebrand default config settings for new installs (#140) Replaces `Gitea` with `Forgejo` in the default config settings for new installs. This will not affect existing installs. Co-authored-by: Caesar Schinas Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/140 Co-authored-by: Caesar Schinas Co-committed-by: Caesar Schinas (cherry picked from commit ca1319aa16128516e50dabdc8e8cadc23eb71d2f) (cherry picked from commit 52a4d238a0b5bbea28b28e55e35f28c51ecbb2de) (cherry picked from commit f63536538cfe4b010ebb5a6323f4b5e5b6ec7232) Conflicts: web_src/js/features/install.js (cherry picked from commit 861cc434e129f3fbd932ee36067c560e754dab9a) (cherry picked from commit 78482c3f78f253ce3c041430e69267e72a70ef30) (cherry picked from commit dd491a44a776f57fb759705e85e5395f7b83d15c) (cherry picked from commit f56b7c4550ca699c5228d44a30ae1a57e3a7b1ef) (cherry picked from commit 0be7abc8da734901d9482960949bdcf450273b69) (cherry picked from commit cfc94327f87a58b8ba7e27f35622d72ae1271ddf) (cherry picked from commit 1cd12e8722c60e4ca60d0f0d6fee64be5aba5beb) --- custom/conf/app.example.ini | 2 +- modules/setting/database.go | 2 +- modules/setting/repository.go | 2 +- modules/setting/server.go | 2 +- routers/install/install.go | 2 +- web_src/js/features/install.js | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index b0700da991..2438135bc1 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -365,7 +365,7 @@ USER = root ;; SQLite Configuration ;; ;DB_TYPE = sqlite3 -;PATH= ; defaults to data/gitea.db +;PATH= ; defaults to data/forgejo.db ;SQLITE_TIMEOUT = ; Query timeout defaults to: 500 ;SQLITE_JOURNAL_MODE = ; defaults to sqlite database default (often DELETE), can be used to enable WAL mode. https://www.sqlite.org/pragma.html#pragma_journal_mode ;; diff --git a/modules/setting/database.go b/modules/setting/database.go index d7a5078fe9..f173f3392e 100644 --- a/modules/setting/database.go +++ b/modules/setting/database.go @@ -75,7 +75,7 @@ func LoadDBSetting() { log.Error("Deprecated database mysql charset utf8 support, please use utf8mb4 or convert utf8 to utf8mb4.") } - Database.Path = sec.Key("PATH").MustString(filepath.Join(AppDataPath, "gitea.db")) + Database.Path = sec.Key("PATH").MustString(filepath.Join(AppDataPath, "forgejo.db")) Database.Timeout = sec.Key("SQLITE_TIMEOUT").MustInt(500) Database.SQLiteJournalMode = sec.Key("SQLITE_JOURNAL_MODE").MustString("") diff --git a/modules/setting/repository.go b/modules/setting/repository.go index ca09a528f6..bb133f21ac 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -278,7 +278,7 @@ func loadRepositoryFrom(rootCfg ConfigProvider) { Repository.UseCompatSSHURI = sec.Key("USE_COMPAT_SSH_URI").MustBool() Repository.MaxCreationLimit = sec.Key("MAX_CREATION_LIMIT").MustInt(-1) Repository.DefaultBranch = sec.Key("DEFAULT_BRANCH").MustString(Repository.DefaultBranch) - RepoRootPath = sec.Key("ROOT").MustString(path.Join(AppDataPath, "gitea-repositories")) + RepoRootPath = sec.Key("ROOT").MustString(path.Join(AppDataPath, "forgejo-repositories")) forcePathSeparator(RepoRootPath) if !filepath.IsAbs(RepoRootPath) { RepoRootPath = filepath.Join(AppWorkPath, RepoRootPath) diff --git a/modules/setting/server.go b/modules/setting/server.go index 1839062685..aff0cfba33 100644 --- a/modules/setting/server.go +++ b/modules/setting/server.go @@ -167,7 +167,7 @@ func MakeAbsoluteAssetURL(appURL, staticURLPrefix string) string { func loadServerFrom(rootCfg ConfigProvider) { sec := rootCfg.Section("server") - AppName = rootCfg.Section("").Key("APP_NAME").MustString("Gitea: Git with a cup of tea") + AppName = rootCfg.Section("").Key("APP_NAME").MustString("Forgejo: Beyond coding. We Forge.") Domain = sec.Key("DOMAIN").MustString("localhost") HTTPAddr = sec.Key("HTTP_ADDR").MustString("0.0.0.0") diff --git a/routers/install/install.go b/routers/install/install.go index 8e2d19c732..f70cdfa135 100644 --- a/routers/install/install.go +++ b/routers/install/install.go @@ -185,7 +185,7 @@ func checkDatabase(ctx *context.Context, form *forms.InstallForm) bool { if err = db.InitEngine(ctx); err != nil { if strings.Contains(err.Error(), `Unknown database type: sqlite3`) { ctx.Data["Err_DbType"] = true - ctx.RenderWithErr(ctx.Tr("install.sqlite3_not_available", "https://docs.gitea.io/en-us/install-from-binary/"), tplInstall, form) + ctx.RenderWithErr(ctx.Tr("install.sqlite3_not_available", "https://forgejo.org/download#installation-from-binary"), tplInstall, form) } else { ctx.Data["Err_DbSetting"] = true ctx.RenderWithErr(ctx.Tr("install.invalid_db_setting", err), tplInstall, form) diff --git a/web_src/js/features/install.js b/web_src/js/features/install.js index 23122ca4c3..32381a7b37 100644 --- a/web_src/js/features/install.js +++ b/web_src/js/features/install.js @@ -14,8 +14,8 @@ export function initInstall() { } function initPreInstall() { - const defaultDbUser = 'gitea'; - const defaultDbName = 'gitea'; + const defaultDbUser = 'forgejo'; + const defaultDbName = 'forgejo'; const defaultDbHosts = { mysql: '127.0.0.1:3306', From 3edf2412e69843fb6a6c27ecf1bfc8d766c8dc71 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Sun, 25 Dec 2022 02:35:04 -1000 Subject: [PATCH 05/26] [BRANDING] Custom loading animation for Forgejo (cherry picked from commit a3b3b8a2dfb31f3b8000f1bfeae63ef3190c211f) (cherry picked from commit de0fd2d2e459aec24dae1293cc1f8f04069dedac) (cherry picked from commit e1bf4de211a92a2f4645b3f34039749456a10ea3) (cherry picked from commit 60ffc88a47a158fe4920f05875ea8d156eecaa70) (cherry picked from commit f62a7e4975979c53e97f1fff5f657f03d3ab5489) (cherry picked from commit fdadfb478a7e8e6393f23b0f74ea9bc5903d52d5) (cherry picked from commit ed68e8622c78118e656145d63530f75b432cb94a) (cherry picked from commit 34ebbc500d5ed278f6b74fb92cc97902240cbd7b) (cherry picked from commit 873be0b63c95e0c94ea49947775da0c8a47dbc65) (cherry picked from commit 5d5b1e5ca496f816f75e4971727f711225d6944a) --- public/img/failed.png | Bin 11009 -> 0 bytes public/img/forgejo-loading.svg | 14 ++++++++++++++ public/img/loading.png | Bin 12629 -> 0 bytes templates/install.tmpl | 2 +- templates/post-install.tmpl | 2 +- templates/repo/migrate/migrating.tmpl | 4 ++-- 6 files changed, 18 insertions(+), 4 deletions(-) delete mode 100644 public/img/failed.png create mode 100644 public/img/forgejo-loading.svg delete mode 100644 public/img/loading.png diff --git a/public/img/failed.png b/public/img/failed.png deleted file mode 100644 index b37545f90ca3b304357516661efb9e1431fa96aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11009 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

bqyxEqHyXI1@uH4vv_6MQBRYVgsQGS-vpm|a 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 diff --git a/public/img/forgejo-loading.svg b/public/img/forgejo-loading.svg new file mode 100644 index 0000000000..919552ebb5 --- /dev/null +++ b/public/img/forgejo-loading.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/public/img/loading.png b/public/img/loading.png deleted file mode 100644 index c5ba3d9cd79960a3990d5c61fa68c98c632a1a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12629 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 M1x@*SxepQl5Au-}zW@LL diff --git a/templates/install.tmpl b/templates/install.tmpl index 2e10b006b2..7d78882b8a 100644 --- a/templates/install.tmpl +++ b/templates/install.tmpl @@ -346,5 +346,5 @@ - + {{template "base/footer" .}} diff --git a/templates/post-install.tmpl b/templates/post-install.tmpl index f237a6e01b..a1cd4dcd87 100644 --- a/templates/post-install.tmpl +++ b/templates/post-install.tmpl @@ -7,7 +7,7 @@

- +
diff --git a/templates/repo/migrate/migrating.tmpl b/templates/repo/migrate/migrating.tmpl index a3552610c4..e108ecc097 100644 --- a/templates/repo/migrate/migrating.tmpl +++ b/templates/repo/migrate/migrating.tmpl @@ -9,12 +9,12 @@
- +
- + {{svg "octicon-git-pull-request-closed" 256 "ui red icon"}}
From 114957e30bfb72a97916e48fc62248a048f62ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Dachary?= Date: Sun, 25 Dec 2022 16:25:25 +0100 Subject: [PATCH 06/26] [BRANDING] container images: set APP_NAME (cherry picked from commit 12d7bc447edb272327200389c73bb04bb5fccc14) (cherry picked from commit 1335b17fc35b8b873b94435fddcc23c5cdf0117e) (cherry picked from commit 0d7da06c47ac3a7278602871b95234f823e11f1d) (cherry picked from commit 095c1ab679bce39dbaa89e8a86eaeab8a9b823ad) (cherry picked from commit c3674375511f65f303d8cdefa4f6448cde43a38a) (cherry picked from commit 07b65b958f097dc24fe628ed688c7c1ed221c7ea) (cherry picked from commit c923912f5b6cc5746acb1e8351fa7813d6e2e56d) (cherry picked from commit 718188d2b5f022ad12f93b19f3689db342ddcbf1) (cherry picked from commit e534230657327dc5f97f122b0db15e548b00d806) (cherry picked from commit c599a6e312dba73e49cea9f7d238ad5f9bdffa3f) --- docker/root/etc/s6/gitea/setup | 2 +- docker/rootless/usr/local/bin/docker-setup.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/root/etc/s6/gitea/setup b/docker/root/etc/s6/gitea/setup index d8f6a3b319..958d50a798 100755 --- a/docker/root/etc/s6/gitea/setup +++ b/docker/root/etc/s6/gitea/setup @@ -24,7 +24,7 @@ if [ ! -f ${GITEA_CUSTOM}/conf/app.ini ]; then fi # Substitute the environment variables in the template - APP_NAME=${APP_NAME:-"Gitea: Git with a cup of tea"} \ + APP_NAME=${APP_NAME:-"Forgejo: Beyond coding. We forge."} \ RUN_MODE=${RUN_MODE:-"prod"} \ DOMAIN=${DOMAIN:-"localhost"} \ SSH_DOMAIN=${SSH_DOMAIN:-"localhost"} \ diff --git a/docker/rootless/usr/local/bin/docker-setup.sh b/docker/rootless/usr/local/bin/docker-setup.sh index feab02a379..b480685863 100755 --- a/docker/rootless/usr/local/bin/docker-setup.sh +++ b/docker/rootless/usr/local/bin/docker-setup.sh @@ -26,7 +26,7 @@ if [ ! -f ${GITEA_APP_INI} ]; then fi # Substitute the environment variables in the template - APP_NAME=${APP_NAME:-"Gitea: Git with a cup of tea"} \ + APP_NAME=${APP_NAME:-"Forgejo: Beyond coding. We forge."} \ RUN_MODE=${RUN_MODE:-"prod"} \ RUN_USER=${USER:-"git"} \ SSH_DOMAIN=${SSH_DOMAIN:-"localhost"} \ From 20f3c03b47e2c16e002b70a7c9839ae24f5efd00 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Sun, 25 Dec 2022 01:44:04 -1000 Subject: [PATCH 07/26] [BRANDING] Add Forgejo light, dark, and auto themes (cherry picked from commit faab0c670e22588bc643d71b650560c2ccca2c8e) (cherry picked from commit b6d59493c7fa0bfa62095abb99c5c5a29bcf1659) (cherry picked from commit 837da0c1f41b40853eb4aebc40af16433cf7a9c2) (cherry picked from commit 71ad245e1d6f7f5b002c1c5e9831e872d157f906) (cherry picked from commit 85a7032f1b1c0d80e3d3960e9d902e9e66e687a5) Conflicts: web_src/css/themes/theme-forgejo-auto.less web_src/css/themes/theme-forgejo-dark.less web_src/css/themes/theme-forgejo-light.less web_src/less/_home.less see https://codeberg.org/forgejo/forgejo/pulls/552 (cherry picked from commit c8cc9d61a626c2ec72c56815cb263b2a8938c7e5) (cherry picked from commit 840ee6c18f8c501ad7af671af9252408d65de918) (cherry picked from commit b71b10ed6d3ebee3a9715a8b89255b2ffeb6b0a4) (cherry picked from commit 0942d87d9c202577714eb0e1a08361088cbe5abb) (cherry picked from commit 537d27428779b14dc2f416600942f7828966ff91) (cherry picked from commit 5f34b6f4fd7c1d8ac4cfc8aed0c5e1eadbd69d89) --- modules/setting/ui.go | 4 +- web_src/css/home.css | 4 +- web_src/css/themes/theme-forgejo-auto.css | 4 + web_src/css/themes/theme-forgejo-dark.css | 279 +++++++++++++++++++++ web_src/css/themes/theme-forgejo-light.css | 251 ++++++++++++++++++ 5 files changed, 538 insertions(+), 4 deletions(-) create mode 100644 web_src/css/themes/theme-forgejo-auto.css create mode 100644 web_src/css/themes/theme-forgejo-dark.css create mode 100644 web_src/css/themes/theme-forgejo-light.css diff --git a/modules/setting/ui.go b/modules/setting/ui.go index c98acc1663..c108ff85f6 100644 --- a/modules/setting/ui.go +++ b/modules/setting/ui.go @@ -79,8 +79,8 @@ var UI = struct { ReactionMaxUserNum: 10, ThemeColorMetaTag: ``, MaxDisplayFileSize: 8388608, - DefaultTheme: `auto`, - Themes: []string{`auto`, `gitea`, `arc-green`}, + DefaultTheme: `forgejo-auto`, + Themes: []string{`forgejo-auto`, `forgejo-light`, `forgejo-dark`, `auto`, `gitea`, `arc-green`}, Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`}, CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`, `forgejo`}, CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:", "forgejo": ":forgejo:"}, diff --git a/web_src/css/home.css b/web_src/css/home.css index f5d6813c4a..6d09f6d5c5 100644 --- a/web_src/css/home.css +++ b/web_src/css/home.css @@ -21,7 +21,7 @@ } .home .hero .svg { - color: var(--color-green); + color: var(--color-primary); height: 40px; width: 50px; vertical-align: bottom; @@ -40,7 +40,7 @@ } .home a { - color: var(--color-green); + color: var(--color-primary); } footer { diff --git a/web_src/css/themes/theme-forgejo-auto.css b/web_src/css/themes/theme-forgejo-auto.css new file mode 100644 index 0000000000..49c9a7fc18 --- /dev/null +++ b/web_src/css/themes/theme-forgejo-auto.css @@ -0,0 +1,4 @@ +@import "theme-forgejo-light.css"; +@media (prefers-color-scheme: dark) { + @import "theme-forgejo-dark.css"; +} diff --git a/web_src/css/themes/theme-forgejo-dark.css b/web_src/css/themes/theme-forgejo-dark.css new file mode 100644 index 0000000000..727c9fe9b4 --- /dev/null +++ b/web_src/css/themes/theme-forgejo-dark.css @@ -0,0 +1,279 @@ +@import "../chroma/dark.css"; +@import "../codemirror/dark.css"; +:root { + --steel-900: #10161D; + --steel-850: #131A21; + --steel-800: #171E26; + --steel-750: #1D262F; + --steel-700: #242D38; + --steel-650: #2B3642; + --steel-600: #374351; + --steel-550: #445161; + --steel-500: #515F70; + --steel-450: #5F6E80; + --steel-400: #6D7D8F; + --steel-350: #7C8C9F; + --steel-300: #8C9CAF; + --steel-250: #9DADC0; + --steel-200: #AEBED0; + --steel-150: #C0CFE0; + --steel-100: #D2E0F0; + --is-dark-theme: true; + --color-primary: #fb923c; + --color-primary-contrast: #000; + --color-primary-dark-1: #fdba74; + --color-primary-dark-2: #fdba74; + --color-primary-dark-3: #fed7aa; + --color-primary-dark-4: #fed7aa; + --color-primary-dark-5: #ffedd5; + --color-primary-dark-6: #ffedd5; + --color-primary-dark-7: #fff7ed; + --color-primary-light-1: #f97316; + --color-primary-light-2: #ea580c; + --color-primary-light-3: #c2410c; + --color-primary-light-4: #9a3412; + --color-primary-light-5: #9a3412; + --color-primary-light-6: #7c2d12; + --color-primary-light-7: #7c2d12; + --color-primary-alpha-10: #ea580c19; + --color-primary-alpha-20: #ea580c33; + --color-primary-alpha-30: #ea580c4b; + --color-primary-alpha-40: #ea580c66; + --color-primary-alpha-50: #ea580c80; + --color-primary-alpha-60: #ea580c99; + --color-primary-alpha-70: #ea580cb3; + --color-primary-alpha-80: #ea580ccc; + --color-primary-alpha-90: #ea580ce1; + --color-secondary: var(--steel-700); + --color-secondary-dark-1: var(--steel-550); + --color-secondary-dark-2: var(--steel-500); + --color-secondary-dark-3: var(--steel-450); + --color-secondary-dark-4: var(--steel-400); + --color-secondary-dark-5: var(--steel-350); + --color-secondary-dark-6: var(--steel-300); + --color-secondary-dark-7: var(--steel-250); + --color-secondary-dark-8: var(--steel-200); + --color-secondary-dark-9: var(--steel-150); + --color-secondary-dark-10: var(--steel-100); + --color-secondary-dark-11: var(--steel-100); + --color-secondary-dark-12: var(--steel-100); + --color-secondary-dark-13: var(--steel-100); + --color-secondary-light-1: var(--steel-650); + --color-secondary-light-2: var(--steel-700); + --color-secondary-light-3: var(--steel-750); + --color-secondary-light-4: var(--steel-800); + --color-secondary-alpha-10: #2B364219; + --color-secondary-alpha-20: #2B364233; + --color-secondary-alpha-30: #2B36424b; + --color-secondary-alpha-40: #2B364266; + --color-secondary-alpha-50: #2B364280; + --color-secondary-alpha-60: #2B364299; + --color-secondary-alpha-70: #2B3642b3; + --color-secondary-alpha-80: #2B3642cc; + --color-secondary-alpha-90: #2B3642e1; + /* colors */ + --color-red: #b91c1c; + --color-orange: #ea580c; + --color-yellow: #ca8a04; + --color-olive: #91a313; + --color-green: #15803d; + --color-teal: #0d9488; + --color-blue: #2563eb; + --color-violet: #7c3aed; + --color-purple: #9333ea; + --color-pink: #db2777; + --color-brown: #a47252; + --color-grey: var(--steel-500); + --color-black: #111827; + /* light variants */ + --color-red-light: #dc2626; + --color-orange-light: #f97316; + --color-yellow-light: #eab308; + --color-olive-light: #839311; + --color-green-light: #16a34a; + --color-teal-light: #14b8a6; + --color-blue-light: #3b82f6; + --color-violet-light: #8b5cf6; + --color-purple-light: #a855f7; + --color-pink-light: #ec4899; + --color-brown-light: #94674a; + --color-grey-light: var(--steel-300); + --color-black-light: #1f2937; + /* other colors */ + --color-gold: #b1983b; + --color-white: #ffffff; + --color-diff-removed-word-bg: #783030; + --color-diff-added-word-bg: #255C39; + --color-diff-removed-row-bg: #432121; + --color-diff-moved-row-bg: #825718; + --color-diff-added-row-bg: #1B3625; + --color-diff-removed-row-border: #783030; + --color-diff-moved-row-border: #A67A1D; + --color-diff-added-row-border: #255C39; + --color-diff-inactive: var(--steel-650); + --color-error-border: #783030; + --color-error-bg: #5F2525; + --color-error-bg-active: #783030; + --color-error-bg-hover: #783030; + --color-error-text: #fef2f2; + --color-success-border: #1F6E3C; + --color-success-bg: #1D462C; + --color-success-text: #f0fdf4; + --color-warning-border: #A67A1D; + --color-warning-bg: #644821; + --color-warning-text: #fefce8; + --color-info-border: #2E50B0; + --color-info-bg: #2A396B; + --color-info-text: var(--steel-100); + --color-red-badge: #B91C1C; + --color-red-badge-bg: #B91C1C22; + --color-red-badge-hover-bg: #B91C1C44; + --color-green-badge: #16a34a; + --color-green-badge-bg: #16a34a22; + --color-green-badge-hover-bg: #16a34a44; + --color-yellow-badge: #ca8a04; + --color-yellow-badge-bg: #ca8a0422; + --color-yellow-badge-hover-bg: #ca8a0444; + --color-orange-badge: #ea580c; + --color-orange-badge-bg: #ea580c22; + --color-orange-badge-hover-bg: #ea580c44; + --color-git: #f05133; + /* target-based colors */ + --color-body: var(--steel-800); + --color-box-header: var(--steel-700); + --color-box-body: var(--steel-750); + --color-box-body-highlight: var(--steel-650); + --color-text-dark: #fff; + --color-text: var(--steel-100); + --color-text-light: var(--steel-150); + --color-text-light-1: var(--steel-150); + --color-text-light-2: var(--steel-200); + --color-text-light-3: var(--steel-200); + --color-footer: var(--steel-900); + --color-timeline: var(--steel-650); + --color-input-text: var(--steel-100); + --color-input-background: var(--steel-650); + --color-input-toggle-background: var(--steel-650); + --color-input-border: var(--steel-550); + --color-input-border-hover: var(--steel-450); + --color-navbar: var(--steel-850); + --color-navbar-transparent: #242D3800; + --color-light: #00000028; + --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled))); + --color-light-border: #ffffff28; + --color-hover: var(--steel-600); + --color-active: var(--steel-650); + --color-menu: var(--steel-700); + --color-card: var(--steel-700); + --color-markup-table-row: #ffffff06; + --color-markup-code-block: var(--steel-800); + --color-button: var(--steel-600); + --color-code-bg: var(--steel-750); + --color-code-sidebar-bg: var(--steel-600); + --color-shadow: #00000060; + --color-secondary-bg: var(--steel-700); + --color-text-focus: #fff; + --color-expand-button: #3c404d; + --color-placeholder-text: var(--steel-450); + --color-editor-line-highlight: var(--steel-700); + --color-project-board-bg: var(--color-secondary-light-3); + --color-project-board-dark-label: var(--color-text-light-3); + --color-caret: var(--color-text); + /* should ideally be --color-text-dark, see #15651 */ + --color-reaction-bg: #ffffff12; + --color-reaction-active-bg: var(--color-primary-alpha-30); + --color-header-bar: var(--steel-900); + --color-label-active-bg: #4c525e; + --color-accent: var(--color-primary-light-1); + --color-small-accent: var(--color-primary-light-5); + --color-active-line: #534d1b; + accent-color: var(--color-accent); + color-scheme: dark; +} +/* invert emojis that are hard to read otherwise */ +.emoji[aria-label="check mark"], +.emoji[aria-label="currency exchange"], +.emoji[aria-label="TOP arrow"], +.emoji[aria-label="END arrow"], +.emoji[aria-label="ON! arrow"], +.emoji[aria-label="SOON arrow"], +.emoji[aria-label="heavy dollar sign"], +.emoji[aria-label="copyright"], +.emoji[aria-label="registered"], +.emoji[aria-label="trade mark"], +.emoji[aria-label="multiply"], +.emoji[aria-label="plus"], +.emoji[aria-label="minus"], +.emoji[aria-label="divide"], +.emoji[aria-label="curly loop"], +.emoji[aria-label="double curly loop"], +.emoji[aria-label="wavy dash"], +.emoji[aria-label="paw prints"], +.emoji[aria-label="musical note"], +.emoji[aria-label="musical notes"] { + filter: invert(100%) hue-rotate(180deg); +} +.following.bar.light { + border-bottom-color: #ffffff11 !important; +} +.text.green.svg { + color: #16a34a !important; +} +i.grey.icon.icon.icon.icon { + color: var(--steel-350) !important; +} +.ui.red.button, +.ui.negative.button { + background-color: #7f1d1d !important; + color: #fff !important; + border-color: var(--color-light-border) !important; +} +.ui.red.button:hover, +.ui.negative.button:hover { + background-color: #991b1b !important; +} +.ui.secondary.vertical.menu { + border-radius: 0.28571429rem !important; + overflow: hidden; +} +.ui.secondary.vertical.menu > .item { + border-radius: 0 !important; +} +.ui.basic.primary.button.item { + background-color: var(--color-active) !important; + color: var(--color-text) !important; + box-shadow: none !important; +} +.ui.red.label.notification_count, +.ui.primary.label, +.ui.primary.labels .label { + background-color: var(--color-primary-light-3) !important; +} +.repository.view.issue .comment-list .code-comment + .code-comment { + margin: 1.25rem 0 !important; + padding-top: 1.25rem !important; + border-top-color: var(--steel-650) !important; +} +.ui.labeled.icon.buttons > .button > .icon, +.ui.labeled.icon.button > .icon { + background-color: rgba(0, 0, 0, 0.05) !important; +} +#review-box .review-comments-counter { + background-color: #00000088 !important; + color: #fff !important; + margin-left: 0.5em; +} +.ui.tabs .ui.primary.label, +.ui.menu .ui.primary.label { + background-color: rgba(192, 192, 255, 0.2) !important; + color: var(--color-text-dark) !important; +} +.ui.basic.yellow.label.pending-label { + background: var(--color-light) !important; +} +.ui.tertiary.button { + color: #fff9; +} +.ui.tertiary.button:hover { + color: #ccc; +} diff --git a/web_src/css/themes/theme-forgejo-light.css b/web_src/css/themes/theme-forgejo-light.css new file mode 100644 index 0000000000..664dadfdfd --- /dev/null +++ b/web_src/css/themes/theme-forgejo-light.css @@ -0,0 +1,251 @@ +:root { + --steel-900: #10161D; + --steel-850: #131A21; + --steel-800: #171E26; + --steel-750: #1D262F; + --steel-700: #242D38; + --steel-650: #2B3642; + --steel-600: #374351; + --steel-550: #445161; + --steel-500: #515F70; + --steel-450: #5F6E80; + --steel-400: #6D7D8F; + --steel-350: #7C8C9F; + --steel-300: #8C9CAF; + --steel-250: #9DADC0; + --steel-200: #AEBED0; + --steel-150: #C0CFE0; + --steel-100: #D2E0F0; + --zinc-50: #FAFAFA; + --zinc-100: #F4F4F5; + --zinc-150: #ECECEE; + --zinc-200: #E4E4E7; + --zinc-250: #DCDCE0; + --zinc-300: #D4D4D8; + --zinc-350: #BABAC1; + --zinc-400: #A1A1AA; + --zinc-450: #898992; + --zinc-500: #71717A; + --zinc-550: #61616A; + --zinc-600: #52525B; + --zinc-650: #484850; + --zinc-700: #3F3F46; + --zinc-750: #333338; + --zinc-800: #27272A; + --zinc-850: #1F1F23; + --zinc-900: #18181B; + --color-primary: #c2410c; + --color-primary-contrast: #ffffff; + --color-primary-dark-1: #c2410c; + --color-primary-dark-2: #9a3412; + --color-primary-dark-3: #9a3412; + --color-primary-dark-4: #7c2d12; + --color-primary-dark-5: #7c2d12; + --color-primary-dark-6: #7c2d12; + --color-primary-dark-7: #7c2d12; + --color-primary-light-1: #ea580c; + --color-primary-light-2: #f97316; + --color-primary-light-3: #fb923c; + --color-primary-light-4: #fdba74; + --color-primary-light-5: #fed7aa; + --color-primary-light-6: #ffedd5; + --color-primary-light-7: #fff7ed; + --color-primary-alpha-10: #c2410c19; + --color-primary-alpha-20: #c2410c33; + --color-primary-alpha-30: #c2410c4b; + --color-primary-alpha-40: #c2410c66; + --color-primary-alpha-50: #c2410c80; + --color-primary-alpha-60: #c2410c99; + --color-primary-alpha-70: #c2410cb3; + --color-primary-alpha-80: #c2410ccc; + --color-primary-alpha-90: #c2410ce1; + --color-secondary: var(--zinc-200); + --color-secondary-dark-1: var(--zinc-200); + --color-secondary-dark-2: var(--zinc-300); + --color-secondary-dark-3: var(--zinc-300); + --color-secondary-dark-4: var(--zinc-400); + --color-secondary-dark-5: var(--zinc-400); + --color-secondary-dark-6: var(--zinc-500); + --color-secondary-dark-7: var(--zinc-500); + --color-secondary-dark-8: var(--zinc-600); + --color-secondary-dark-9: var(--zinc-600); + --color-secondary-dark-10: var(--zinc-700); + --color-secondary-dark-11: var(--zinc-700); + --color-secondary-dark-12: var(--zinc-800); + --color-secondary-dark-13: var(--zinc-800); + --color-secondary-light-1: var(--zinc-200); + --color-secondary-light-2: var(--zinc-100); + --color-secondary-light-3: var(--zinc-100); + --color-secondary-light-4: var(--zinc-50); + --color-secondary-alpha-10: #d4d4d819; + --color-secondary-alpha-20: #d4d4d833; + --color-secondary-alpha-30: #d4d4d84b; + --color-secondary-alpha-40: #d4d4d866; + --color-secondary-alpha-50: #d4d4d880; + --color-secondary-alpha-60: #d4d4d899; + --color-secondary-alpha-70: #d4d4d8b3; + --color-secondary-alpha-80: #d4d4d8cc; + --color-secondary-alpha-90: #d4d4d8e1; + /* colors */ + --color-red: #dc2626; + --color-orange: #ea580c; + --color-yellow: #ca8a04; + --color-olive: #91a313; + --color-green: #15803d; + --color-teal: #0d9488; + --color-blue: #2563eb; + --color-violet: #7c3aed; + --color-purple: #9333ea; + --color-pink: #db2777; + --color-brown: #a47252; + --color-grey: #4b5563; + --color-black: #000000; + /* light variants */ + --color-red-light: #ef4444; + --color-orange-light: #f97316; + --color-yellow-light: #eab308; + --color-olive-light: #839311; + --color-green-light: #16a34a; + --color-teal-light: #14b8a6; + --color-blue-light: #3b82f6; + --color-violet-light: #8b5cf6; + --color-purple-light: #a855f7; + --color-pink-light: #ec4899; + --color-brown-light: #94674a; + --color-grey-light: #6b7280; + --color-black-light: #181818; + /* other colors */ + --color-gold: #b1983b; + --color-white: #ffffff; + --color-diff-removed-word-bg: #fca5a5; + --color-diff-added-word-bg: #86efac; + --color-diff-removed-row-bg: #fee2e2; + --color-diff-moved-row-bg: #fef9c3; + --color-diff-added-row-bg: #dcfce7; + --color-diff-removed-row-border: #fca5a5; + --color-diff-moved-row-border: #fde047; + --color-diff-added-row-border: #86efac; + --color-diff-inactive: var(--zinc-100); + --color-error-border: #fecaca; + --color-error-bg: #fee2e2; + --color-error-bg-active: #fca5a5; + --color-error-bg-hover: #fecaca; + --color-error-text: #7f1d1d; + --color-success-border: #bbf7d0; + --color-success-bg: #dcfce7; + --color-success-text: #14532d; + --color-warning-border: #fde047; + --color-warning-bg: #fef3c7; + --color-warning-text: #78350f; + --color-info-border: #bae6fd; + --color-info-bg: #e0f2fe; + --color-info-text: #0c4a6e; + --color-red-badge: #B91C1C; + --color-red-badge-bg: #B91C1C22; + --color-red-badge-hover-bg: #B91C1C44; + --color-green-badge: #16a34a; + --color-green-badge-bg: #16a34a22; + --color-green-badge-hover-bg: #16a34a44; + --color-yellow-badge: #ca8a04; + --color-yellow-badge-bg: #ca8a0422; + --color-yellow-badge-hover-bg: #ca8a0444; + --color-orange-badge: #ea580c; + --color-orange-badge-bg: #ea580c22; + --color-orange-badge-hover-bg: #ea580c44; + --color-git: #f05133; + /* target-based colors */ + --color-body: #fff; + --color-box-header: var(--zinc-100); + --color-box-body: var(--zinc-50); + --color-box-body-highlight: var(--zinc-200); + --color-text-dark: #000; + --color-text: var(--zinc-900); + --color-text-light: var(--zinc-700); + --color-text-light-1: var(--zinc-650); + --color-text-light-2: var(--zinc-600); + --color-text-light-3: var(--zinc-550); + --color-footer: var(--zinc-100); + --color-timeline: var(--zinc-200); + --color-input-text: var(--zinc-800); + --color-input-background: #fff; + --color-input-toggle-background: #fff; + --color-input-border: var(--zinc-300); + --color-input-border-hover: var(--zinc-400); + --color-navbar: var(--zinc-50); + --color-navbar-transparent: #D2E0F000; + --color-light: #ffffffcc; + --color-light-mimic-enabled: rgba(0, 0, 0, calc(6 / 255 * 222 / 255 / var(--opacity-disabled))); + --color-light-border: #0000001d; + --color-hover: #e4e4e4aa; + --color-active: #d4d4d8aa; + --color-menu: var(--zinc-100); + --color-card: var(--zinc-50); + --color-markup-table-row: #ffffff06; + --color-markup-code-block: var(--zinc-150); + --color-button: var(--zinc-150); + --color-code-bg: var(--zinc-50); + --color-code-sidebar-bg: var(--zinc-100); + --color-shadow: #00000060; + --color-secondary-bg: var(--zinc-100); + --color-text-focus: #fff; + --color-expand-button: var(--zinc-200); + --color-placeholder-text: var(--zinc-400); + --color-editor-line-highlight: var(--zinc-100); + --color-project-board-bg: var(--color-secondary-light-2); + --color-project-board-dark-label: var(--color-text-light-3); + --color-caret: var(--color-text); + /* should ideally be --color-text-dark, see #15651 */ + --color-reaction-bg: #0000000a; + --color-reaction-active-bg: var(--color-primary-alpha-20); + --color-header-bar: var(--zinc-100); + --color-label-active-bg: #4c525e; + --color-accent: var(--color-primary-light-1); + --color-small-accent: var(--color-primary-light-5); + --color-active-line: #534d1b; + accent-color: var(--color-accent); + color-scheme: light; +} +.text.green.svg { + color: #16a34a !important; +} +.ui.secondary.vertical.menu { + border-radius: 0.28571429rem !important; + overflow: hidden; +} +.ui.secondary.vertical.menu > .item { + border-radius: 0 !important; +} +.ui.basic.primary.button.item { + background-color: var(--color-active) !important; + color: var(--color-text) !important; + box-shadow: none !important; +} +.ui.red.label.notification_count, +.ui.primary.label, +.ui.primary.labels .label { + background-color: var(--color-primary-dark-1) !important; +} +.repository.view.issue .comment-list .code-comment + .code-comment { + margin: 1.25rem 0 !important; + padding-top: 1.25rem !important; + border-top-color: var(--zinc-250) !important; +} +.ui.labeled.icon.buttons > .button > .icon, +.ui.labeled.icon.button > .icon { + background-color: rgba(0, 0, 0, 0.05) !important; +} +#review-box .review-comments-counter { + background-color: #ffffffaa !important; + color: #000 !important; + margin-left: 0.5em; +} +.ui.tabs .ui.primary.label, +.ui.menu .ui.primary.label { + background-color: rgba(0, 0, 0, 0.15) !important; + color: var(--color-text-dark) !important; +} +.ui.basic.yellow.label.pending-label { + background: var(--color-warning-bg) !important; + color: var(--color-warning-text) !important; + border-color: #eab308 !important; +} From feaa85384f06b4e8ffed0cffc618448209264766 Mon Sep 17 00:00:00 2001 From: Caesar Schinas Date: Wed, 28 Dec 2022 00:28:39 -1000 Subject: [PATCH 08/26] [BRANDING] Rebrand default meta tags (cherry picked from commit b1a792b63547df1471a125c2384a9623ffae409e) (cherry picked from commit ba71acccdb8eb4d1c87b50708fe3b03a3324dd9c) (cherry picked from commit ef58efb8e0c48a782e01aac8d754e70b7611a2c8) (cherry picked from commit 6a1b08241ebb862bdd39c708852e3e23c4d96c9d) (cherry picked from commit 86562d54713d745881405b4bc88ef0c2758d3acb) (cherry picked from commit bb7078c177221139c53b80e0d9b863085a6dc265) (cherry picked from commit 2e520c991a2f7b1d89dce5f8480fb0a4e8a0a871) (cherry picked from commit bdabb71f96a0e92a1a14ef71403f4b8d279c7a4d) (cherry picked from commit 438d32ee08479f1f35410e6ddad99a87a1750996) (cherry picked from commit c7bb560d98997367ff172f11fe97589b9ce71349) --- modules/setting/ui.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/setting/ui.go b/modules/setting/ui.go index c108ff85f6..294fc96452 100644 --- a/modules/setting/ui.go +++ b/modules/setting/ui.go @@ -126,9 +126,9 @@ var UI = struct { Description string Keywords string }{ - Author: "Gitea - Git with a cup of tea", - Description: "Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go", - Keywords: "go,git,self-hosted,gitea", + Author: "Forgejo – Beyond coding. We forge.", + Description: "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.", + Keywords: "git,forge,forgejo", }, } From 4fce61a0d5c1c0057938d94b4a38be5e71397230 Mon Sep 17 00:00:00 2001 From: TomZ Date: Mon, 9 Jan 2023 14:01:00 +0100 Subject: [PATCH 09/26] [BRANDING] cosmetic s/Gitea/Forgejo/ in logs, messages, etc. As the docs of codeberg refer to the strings printed by the Forgejo ssh servers, this is user-facing and is nice to update to the new product name. (cherry picked from commit 103991d73f0f78f31a5f1dae47824c2fe481bcc6) (cherry picked from commit 2a0d3f85f199d28a4180becdebcb90af0d6f3504) (cherry picked from commit eb2b4ce388810dc145dd90d3358d4d4373e31b80) (cherry picked from commit 0998b51716ef5d3c25e139886aa8b7bfde703b20) [BRANDING] forgejo log message (cherry picked from commit d51a046ebe774236f8b902c45486dc8cbd041e0e) (cherry picked from commit 921994bad3055ab1fe8473270c9666bfa3d59091) (cherry picked from commit bb3048cdb2c32d708cbb640ec2570cdd478eb752) (cherry picked from commit b736d42075931f378a621727ebc20c892351b71e) (cherry picked from commit 97b637f01f3487cbbe0565b6af3b4fe97a954752) (cherry picked from commit 56bf8082fa72df65aacc87f974295c2496c70d26) (cherry picked from commit 577f91084bc347a6980de423e619d00472db27ff) --- cmd/serv.go | 8 ++++---- modules/setting/log.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmd/serv.go b/cmd/serv.go index d7510845a5..12f056d91a 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -150,13 +150,13 @@ func runServ(c *cli.Context) error { } switch key.Type { case asymkey_model.KeyTypeDeploy: - println("Hi there! You've successfully authenticated with the deploy key named " + key.Name + ", but Gitea does not provide shell access.") + println("Hi there! You've successfully authenticated with the deploy key named " + key.Name + ", but Forgejo does not provide shell access.") case asymkey_model.KeyTypePrincipal: - println("Hi there! You've successfully authenticated with the principal " + key.Content + ", but Gitea does not provide shell access.") + println("Hi there! You've successfully authenticated with the principal " + key.Content + ", but Forgejo does not provide shell access.") default: - println("Hi there, " + user.Name + "! You've successfully authenticated with the key named " + key.Name + ", but Gitea does not provide shell access.") + println("Hi there, " + user.Name + "! You've successfully authenticated with the key named " + key.Name + ", but Forgejo does not provide shell access.") } - println("If this is unexpected, please log in with password and setup Gitea under another user.") + println("If this is unexpected, please log in with password and setup Forgejo under another user.") return nil } else if c.Bool("debug") { log.Debug("SSH_ORIGINAL_COMMAND: %s", os.Getenv("SSH_ORIGINAL_COMMAND")) diff --git a/modules/setting/log.go b/modules/setting/log.go index 5448650aad..563ac56a4e 100644 --- a/modules/setting/log.go +++ b/modules/setting/log.go @@ -238,7 +238,7 @@ func generateLogConfig(sec *ini.Section, name string, defaults defaultLogOptions sendTos[i] = strings.TrimSpace(address) } logConfig["sendTos"] = sendTos - logConfig["subject"] = sec.Key("SUBJECT").MustString("Diagnostic message from Gitea") + logConfig["subject"] = sec.Key("SUBJECT").MustString("Diagnostic message from Forgejo") } logConfig["colorize"] = sec.Key("COLORIZE").MustBool(false) @@ -328,7 +328,7 @@ func initLogFrom(rootCfg ConfigProvider) { Provider: provider, Config: config, }) - log.Info("Gitea Log Mode: %s(%s:%s)", util.ToTitleCase(name), util.ToTitleCase(provider), levelName) + log.Info("Forgejo Log Mode: %s(%s:%s)", util.ToTitleCase(name), util.ToTitleCase(provider), levelName) } AddLogDescription(log.DEFAULT, &description) From b75235db70d61d4873de008f71fa8790cdfa4253 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 9 Jan 2023 22:28:04 +0100 Subject: [PATCH 10/26] [BRANDING] Replace branding in Swagger - "Gitea" is automatically being determined in Swagger and cannot be overridden, therefor we override it after `swagger generate spec` is run. - Resolves https://codeberg.org/forgejo/forgejo/issues/226 (cherry picked from commit 0b453807656b6fbe54284d865e59880460f3d253) [BRANDING] Change Swagger title to Forgejo API (cherry picked from commit 79f6a70b53421be9984a9ad96ebd0d06ab5af02e) (cherry picked from commit 6cd47afe3366a615d40655a435275d5543910065) (cherry picked from commit a7ae2e4c09431cd7a1f18c5b87b9dd87981b538d) (cherry picked from commit 59f837e4661233dafc202ded9ad907dbdf7e3e69) (cherry picked from commit 9fefe3dc6aa8bba1b6f9f609b42cb58c2109c4f8) (cherry picked from commit 1e88465eeda4d1696e79302a23b28cebf2b4a350) (cherry picked from commit 5ba2f6e3a1fb13fe141e15f2fa28f916aba566a1) (cherry picked from commit dbdd396315da9b7809f20a0370a41faf71927466) (cherry picked from commit b9f3d3a97d03fe7eb47615d827c6eb24ae39fda1) (cherry picked from commit e5694402f133c2fc696dd73a2d959d674571006b) --- Makefile | 2 ++ templates/swagger/ui.tmpl | 2 +- templates/swagger/v1_json.tmpl | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c3861be60a..a4ff34980b 100644 --- a/Makefile +++ b/Makefile @@ -164,6 +164,7 @@ SWAGGER_SPEC_S_TMPL := s|"basePath": *"/api/v1"|"basePath": "{{AppSubUrl \| JSEs SWAGGER_SPEC_S_JSON := s|"basePath": *"{{AppSubUrl \| JSEscape \| Safe}}/api/v1"|"basePath": "/api/v1"|g SWAGGER_EXCLUDE := code.gitea.io/sdk SWAGGER_NEWLINE_COMMAND := -e '$$a\' +SWAGGER_SPEC_BRANDING := s|Gitea API|Forgejo API|g TEST_MYSQL_HOST ?= mysql:3306 TEST_MYSQL_DBNAME ?= testgitea @@ -338,6 +339,7 @@ $(SWAGGER_SPEC): $(GO_SOURCES_NO_BINDATA) $(GO) run $(SWAGGER_PACKAGE) generate spec -x "$(SWAGGER_EXCLUDE)" -o './$(SWAGGER_SPEC)' $(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)' $(SED_INPLACE) $(SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)' + $(SED_INPLACE) '$(SWAGGER_SPEC_BRANDING)' './$(SWAGGER_SPEC)' .PHONY: swagger-check swagger-check: generate-swagger diff --git a/templates/swagger/ui.tmpl b/templates/swagger/ui.tmpl index 57b560bc15..56346e8fec 100644 --- a/templates/swagger/ui.tmpl +++ b/templates/swagger/ui.tmpl @@ -2,7 +2,7 @@ - Gitea API + Forgejo API diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 50a969cd17..d64381a1b3 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -13,8 +13,8 @@ ], "swagger": "2.0", "info": { - "description": "This documentation describes the Gitea API.", - "title": "Gitea API.", + "description": "This documentation describes the Forgejo API.", + "title": "Forgejo API.", "license": { "name": "MIT", "url": "http://opensource.org/licenses/MIT" From c147a1894d0f9428ce1e5ea87ed83f09a7614e9b Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 12 Jan 2023 22:56:56 +0100 Subject: [PATCH 11/26] [BRANDING] parse FORGEJO__* in the container environment Add the FORGEJO__ prefix as equivalent to GITEA__ when interpreted by environment-to-ini. It is used when running the Forgejo container like so: docker run --name forgejo -e FORGEJO__security__INSTALL_LOCK=true \ -d codeberg.org/forgejo/forgejo:1.18 Signed-off-by: Earl Warren (cherry picked from commit 6cd61e2ab701ae9236ff9a68520ee1e2d03e6193) (cherry picked from commit 62cae8cc6a6ddc9e5bb066c81834b75cef3be29f) (cherry picked from commit aee1afc5097531b2740b2aa8ef4aef745e7a1be0) (cherry picked from commit 6ba563cd9b09d012a804f3f438c5ae4e38ca6ced) (cherry picked from commit d887235e081844e80c74979938c669fd68ed04a2) (cherry picked from commit c9a0a44e28237a0b1ff3c65abc5b078383cdf4ac) (cherry picked from commit 2cae2fca8e9889278aaf98a710cf062a596c9984) (cherry picked from commit c457919a2aa2af821741efc3298a9a1d8d05688e) (cherry picked from commit 57709acf6514925f68645b4c7741bd74eca75240) (cherry picked from commit 5bad53d6fcc174330791bd19e9e1d12827efd8fe) --- .woodpecker/testing-amd64.yml | 8 ++++ .../environment-to-ini/environment-to-ini.go | 48 ++++++++++--------- .../environment-to-ini_test.go | 21 ++++++++ 3 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 contrib/environment-to-ini/environment-to-ini_test.go diff --git a/.woodpecker/testing-amd64.yml b/.woodpecker/testing-amd64.yml index 28be98c706..949b8781fe 100644 --- a/.woodpecker/testing-amd64.yml +++ b/.woodpecker/testing-amd64.yml @@ -75,6 +75,14 @@ pipeline: commands: - ./build/test-env-prepare.sh + environment-to-ini: + image: *golang_image + environment: + GOPROXY_OVERRIDE: *goproxy_override + commands: + - *goproxy_setup + - go test contrib/environment-to-ini/environment-to-ini.go contrib/environment-to-ini/environment-to-ini_test.go + build: image: *test_image environment: diff --git a/contrib/environment-to-ini/environment-to-ini.go b/contrib/environment-to-ini/environment-to-ini.go index b502c15cec..1b8b63faaa 100644 --- a/contrib/environment-to-ini/environment-to-ini.go +++ b/contrib/environment-to-ini/environment-to-ini.go @@ -1,3 +1,4 @@ +// Copyright 2023 The Forgejo Authors. All rights reserved. // Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT @@ -18,17 +19,17 @@ import ( ) // EnvironmentPrefix environment variables prefixed with this represent ini values to write -const EnvironmentPrefix = "GITEA" +const prefixRegexpString = "^(FORGEJO|GITEA)" func main() { app := cli.NewApp() app.Name = "environment-to-ini" app.Usage = "Use provided environment to update configuration ini" - app.Description = `As a helper to allow docker users to update the gitea configuration + app.Description = `As a helper to allow docker users to update the forgejo configuration through the environment, this command allows environment variables to be mapped to values in the ini. - Environment variables of the form "GITEA__SECTION_NAME__KEY_NAME" + Environment variables of the form "FORGEJO__SECTION_NAME__KEY_NAME" will be mapped to the ini section "[section_name]" and the key "KEY_NAME" with the value as provided. @@ -46,9 +47,8 @@ func main() { ... """ - You would set the environment variables: "GITEA__LOG_0x2E_CONSOLE__COLORIZE=false" - and "GITEA__LOG_0x2E_CONSOLE__STDERR=false". Other examples can be found - on the configuration cheat sheet.` + You would set the environment variables: "FORGEJO__LOG_0x2E_CONSOLE__COLORIZE=false" + and "FORGEJO__LOG_0x2E_CONSOLE__STDERR=false".` app.Flags = []cli.Flag{ cli.StringFlag{ Name: "custom-path, C", @@ -76,7 +76,7 @@ func main() { }, cli.StringFlag{ Name: "prefix, p", - Value: EnvironmentPrefix, + Value: prefixRegexpString, Usage: "Environment prefix to look for - will be suffixed by __ (2 underscores)", }, } @@ -89,6 +89,19 @@ func main() { } } +func splitEnvironmentVariable(prefixRegexp *regexp.Regexp, kv string) (string, string) { + idx := strings.IndexByte(kv, '=') + if idx < 0 { + return "", "" + } + k := kv[:idx] + loc := prefixRegexp.FindStringIndex(k) + if loc == nil { + return "", "" + } + return k[loc[1]:], kv[idx+1:] +} + func runEnvironmentToIni(c *cli.Context) error { providedCustom := c.String("custom-path") providedConf := c.String("config") @@ -111,19 +124,13 @@ func runEnvironmentToIni(c *cli.Context) error { changed := false - prefix := c.String("prefix") + "__" + prefixRegexp := regexp.MustCompile(c.String("prefix") + "__") for _, kv := range os.Environ() { - idx := strings.IndexByte(kv, '=') - if idx < 0 { + eKey, value := splitEnvironmentVariable(prefixRegexp, kv) + if eKey == "" { continue } - eKey := kv[:idx] - value := kv[idx+1:] - if !strings.HasPrefix(eKey, prefix) { - continue - } - eKey = eKey[len(prefix):] sectionName, keyName := DecodeSectionKey(eKey) if len(keyName) == 0 { continue @@ -163,14 +170,11 @@ func runEnvironmentToIni(c *cli.Context) error { } if c.Bool("clear") { for _, kv := range os.Environ() { - idx := strings.IndexByte(kv, '=') - if idx < 0 { + eKey, _ := splitEnvironmentVariable(prefixRegexp, kv) + if eKey == "" { continue } - eKey := kv[:idx] - if strings.HasPrefix(eKey, prefix) { - _ = os.Unsetenv(eKey) - } + _ = os.Unsetenv(eKey) } } return nil diff --git a/contrib/environment-to-ini/environment-to-ini_test.go b/contrib/environment-to-ini/environment-to-ini_test.go new file mode 100644 index 0000000000..6abbb67eff --- /dev/null +++ b/contrib/environment-to-ini/environment-to-ini_test.go @@ -0,0 +1,21 @@ +// Copyright 2023 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package main + +import ( + "regexp" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_splitEnvironmentVariable(t *testing.T) { + prefixRegexp := regexp.MustCompile(prefixRegexpString + "__") + k, v := splitEnvironmentVariable(prefixRegexp, "FORGEJO__KEY=VALUE") + assert.Equal(t, k, "KEY") + assert.Equal(t, v, "VALUE") + k, v = splitEnvironmentVariable(prefixRegexp, "nothing=interesting") + assert.Equal(t, k, "") + assert.Equal(t, v, "") +} From ac0f33925dd575551d48644c8a8676a46bdfccfd Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 14 Jan 2023 08:16:30 +0100 Subject: [PATCH 12/26] [BRANDING] add X-Forgejo-* headers (cherry picked from commit 0a3388f93f53f53cce79ebcc194d67979cbe61cc) (cherry picked from commit 7eba0a440a3138443d0b7461560f9f6f1c46b256) (cherry picked from commit eb9646c7ef0b1a9e73bf22806acbc2caeaee7ff3) (cherry picked from commit f1972578f5cb72ad9e1ef1ded9aa324b1d669864) Conflicts: (cherry picked from commit 3d72f6b3ac6019db1a44bf6517e4fec4775c367b) (cherry picked from commit 6a94f830c0ddaa4e1c59f689d3bb6b59186d55b3) (cherry picked from commit 522a09dbc186e72250fe233bdf4b25e07eee51db) (cherry picked from commit 471ad9f728fe897c5f295088c97950246a00a3bc) (cherry picked from commit a27221e653141fb2bf5989b8f31cdca8b5b27ddc) (cherry picked from commit 747f423125647ed4c7ba4d40d2c79a5780bc7a08) --- modules/httpcache/httpcache.go | 1 + modules/httpcache/httpcache_test.go | 3 +++ routers/api/v1/api.go | 2 +- routers/api/v1/repo/file.go | 7 ++++++- services/mailer/mail.go | 10 ++++++++++ services/webhook/deliver.go | 4 ++++ 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/modules/httpcache/httpcache.go b/modules/httpcache/httpcache.go index 46e0152ef4..ee83706d37 100644 --- a/modules/httpcache/httpcache.go +++ b/modules/httpcache/httpcache.go @@ -32,6 +32,7 @@ func SetCacheControlInHeader(h http.Header, maxAge time.Duration, additionalDire // to remind users they are using non-prod setting. h.Set("X-Gitea-Debug", "RUN_MODE="+setting.RunMode) + h.Set("X-Forgejo-Debug", "RUN_MODE="+setting.RunMode) } h.Set("Cache-Control", strings.Join(append(directives, additionalDirectives...), ", ")) diff --git a/modules/httpcache/httpcache_test.go b/modules/httpcache/httpcache_test.go index 624d2f4d4b..dac1a63793 100644 --- a/modules/httpcache/httpcache_test.go +++ b/modules/httpcache/httpcache_test.go @@ -29,6 +29,9 @@ func countFormalHeaders(h http.Header) (c int) { if strings.HasPrefix(k, "X-Gitea-") { continue } + if strings.HasPrefix(k, "X-Forgejo-") { + continue + } c++ } return c diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 386c3508d8..b30c231f2e 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -675,7 +675,7 @@ func Routes(ctx gocontext.Context) *web.Route { // setting.CORSConfig.AllowSubdomain // FIXME: the cors middleware needs allowSubdomain option AllowedMethods: setting.CORSConfig.Methods, AllowCredentials: setting.CORSConfig.AllowCredentials, - AllowedHeaders: append([]string{"Authorization", "X-Gitea-OTP"}, setting.CORSConfig.Headers...), + AllowedHeaders: append([]string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"}, setting.CORSConfig.Headers...), MaxAge: int(setting.CORSConfig.MaxAge.Seconds()), })) } diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go index d5e8924f5d..c76a25f71f 100644 --- a/routers/api/v1/repo/file.go +++ b/routers/api/v1/repo/file.go @@ -32,7 +32,10 @@ import ( files_service "code.gitea.io/gitea/services/repository/files" ) -const giteaObjectTypeHeader = "X-Gitea-Object-Type" +const ( + giteaObjectTypeHeader = "X-Gitea-Object-Type" + forgejoObjectTypeHeader = "X-Forgejo-Object-Type" +) // GetRawFile get a file by path on a repository func GetRawFile(ctx *context.APIContext) { @@ -79,6 +82,7 @@ func GetRawFile(ctx *context.APIContext) { } ctx.RespHeader().Set(giteaObjectTypeHeader, string(files_service.GetObjectTypeFromTreeEntry(entry))) + ctx.RespHeader().Set(forgejoObjectTypeHeader, string(files_service.GetObjectTypeFromTreeEntry(entry))) if err := common.ServeBlob(ctx.Context, blob, lastModified); err != nil { ctx.Error(http.StatusInternalServerError, "ServeBlob", err) @@ -128,6 +132,7 @@ func GetRawFileOrLFS(ctx *context.APIContext) { } ctx.RespHeader().Set(giteaObjectTypeHeader, string(files_service.GetObjectTypeFromTreeEntry(entry))) + ctx.RespHeader().Set(forgejoObjectTypeHeader, string(files_service.GetObjectTypeFromTreeEntry(entry))) // LFS Pointer files are at most 1024 bytes - so any blob greater than 1024 bytes cannot be an LFS file if blob.Size() > 1024 { diff --git a/services/mailer/mail.go b/services/mailer/mail.go index 351b79b5df..030491a467 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -415,6 +415,16 @@ func generateAdditionalHeaders(ctx *mailCommentContext, reason string, recipient "X-Gitea-Issue-ID": strconv.FormatInt(ctx.Issue.Index, 10), "X-Gitea-Issue-Link": ctx.Issue.HTMLURL(), + "X-Forgejo-Reason": reason, + "X-Forgejo-Sender": ctx.Doer.DisplayName(), + "X-Forgejo-Recipient": recipient.DisplayName(), + "X-Forgejo-Recipient-Address": recipient.Email, + "X-Forgejo-Repository": repo.Name, + "X-Forgejo-Repository-Path": repo.FullName(), + "X-Forgejo-Repository-Link": repo.HTMLURL(), + "X-Forgejo-Issue-ID": strconv.FormatInt(ctx.Issue.Index, 10), + "X-Forgejo-Issue-Link": ctx.Issue.HTMLURL(), + "X-GitHub-Reason": reason, "X-GitHub-Sender": ctx.Doer.DisplayName(), "X-GitHub-Recipient": recipient.DisplayName(), diff --git a/services/webhook/deliver.go b/services/webhook/deliver.go index effbe45e56..e8fd664ec8 100644 --- a/services/webhook/deliver.go +++ b/services/webhook/deliver.go @@ -122,6 +122,10 @@ func Deliver(ctx context.Context, t *webhook_model.HookTask) error { event := t.EventType.Event() eventType := string(t.EventType) + req.Header.Add("X-Forgejo-Delivery", t.UUID) + req.Header.Add("X-Forgejo-Event", event) + req.Header.Add("X-Forgejo-Event-Type", eventType) + req.Header.Add("X-Forgejo-Signature", signatureSHA256) req.Header.Add("X-Gitea-Delivery", t.UUID) req.Header.Add("X-Gitea-Event", event) req.Header.Add("X-Gitea-Event-Type", eventType) From 4b4aeff24b0e2af7f5079f0439ac6dedc11dfff2 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 14 Jan 2023 10:07:01 +0100 Subject: [PATCH 13/26] [BRANDING] define the forgejo webhook type templates/swagger/v1_json.tmpl updated with `make generate-swagger` (cherry picked from commit 88899c492efeedd138ba088a36b9c0bc733ead7b) (cherry picked from commit 7171bd9617c32c4911e3bdbc23c02a19e80d2465) (cherry picked from commit 1a742446c17aef9ca62fe75bfc0a388d40138154) (cherry picked from commit 132342ae8d2015726c2e21d0d34a3b0bf41ab6f7) (cherry picked from commit b47b815fbec083a67068654c13a0046e250e34af) (cherry picked from commit 2dbb52c8ec99f5febf91ed4084905997ba293ee9) (cherry picked from commit c846de432281e0800defc51450433852cf52ea3f) (cherry picked from commit c3d1ad7bbc8cf375630b7fb188f6a06b0c9c5819) (cherry picked from commit 972c772c0e6d29c04b4e2564417a2b0a46e5a858) --- modules/setting/webhook.go | 2 +- modules/structs/hook.go | 2 +- modules/webhook/type.go | 1 + routers/web/repo/webhook.go | 28 +++++++++++++ routers/web/web.go | 6 +++ services/webhook/webhook.go | 4 +- templates/admin/hook_new.tmpl | 7 +++- templates/org/settings/hook_new.tmpl | 6 ++- .../repo/settings/webhook/base_list.tmpl | 5 ++- templates/repo/settings/webhook/forgejo.tmpl | 40 +++++++++++++++++++ templates/repo/settings/webhook/new.tmpl | 7 +++- templates/swagger/v1_json.tmpl | 1 + tests/integration/links_test.go | 38 ++++++++++++++++++ 13 files changed, 136 insertions(+), 11 deletions(-) create mode 100644 templates/repo/settings/webhook/forgejo.tmpl diff --git a/modules/setting/webhook.go b/modules/setting/webhook.go index c01261dbbd..b56c55c439 100644 --- a/modules/setting/webhook.go +++ b/modules/setting/webhook.go @@ -35,7 +35,7 @@ func loadWebhookFrom(rootCfg ConfigProvider) { Webhook.DeliverTimeout = sec.Key("DELIVER_TIMEOUT").MustInt(5) Webhook.SkipTLSVerify = sec.Key("SKIP_TLS_VERIFY").MustBool() Webhook.AllowedHostList = sec.Key("ALLOWED_HOST_LIST").MustString("") - Webhook.Types = []string{"gitea", "gogs", "slack", "discord", "dingtalk", "telegram", "msteams", "feishu", "matrix", "wechatwork", "packagist"} + Webhook.Types = []string{"forgejo", "gitea", "gogs", "slack", "discord", "dingtalk", "telegram", "msteams", "feishu", "matrix", "wechatwork", "packagist"} Webhook.PagingNum = sec.Key("PAGING_NUM").MustInt(10) Webhook.ProxyURL = sec.Key("PROXY_URL").MustString("") if Webhook.ProxyURL != "" { diff --git a/modules/structs/hook.go b/modules/structs/hook.go index df5da6790f..5055561a4b 100644 --- a/modules/structs/hook.go +++ b/modules/structs/hook.go @@ -40,7 +40,7 @@ type CreateHookOptionConfig map[string]string // CreateHookOption options when create a hook type CreateHookOption struct { // required: true - // enum: dingtalk,discord,gitea,gogs,msteams,slack,telegram,feishu,wechatwork,packagist + // enum: forgejo,dingtalk,discord,gitea,gogs,msteams,slack,telegram,feishu,wechatwork,packagist Type string `json:"type" binding:"Required"` // required: true Config CreateHookOptionConfig `json:"config" binding:"Required"` diff --git a/modules/webhook/type.go b/modules/webhook/type.go index db4ab17931..fac5590e21 100644 --- a/modules/webhook/type.go +++ b/modules/webhook/type.go @@ -71,6 +71,7 @@ type HookType = string // Types of webhooks const ( + FORGEJO HookType = "forgejo" GITEA HookType = "gitea" GOGS HookType = "gogs" SLACK HookType = "slack" diff --git a/routers/web/repo/webhook.go b/routers/web/repo/webhook.go index d27d0f1bf0..15a1691e5c 100644 --- a/routers/web/repo/webhook.go +++ b/routers/web/repo/webhook.go @@ -308,6 +308,34 @@ func editWebhook(ctx *context.Context, params webhookParams) { ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID)) } +// ForgejoHooksNewPost response for creating Forgejo webhook +func ForgejoHooksNewPost(ctx *context.Context) { + createWebhook(ctx, forgejoHookParams(ctx)) +} + +// ForgejoHooksEditPost response for editing Forgejo webhook +func ForgejoHooksEditPost(ctx *context.Context) { + editWebhook(ctx, forgejoHookParams(ctx)) +} + +func forgejoHookParams(ctx *context.Context) webhookParams { + form := web.GetForm(ctx).(*forms.NewWebhookForm) + + contentType := webhook.ContentTypeJSON + if webhook.HookContentType(form.ContentType) == webhook.ContentTypeForm { + contentType = webhook.ContentTypeForm + } + + return webhookParams{ + Type: webhook_module.FORGEJO, + URL: form.PayloadURL, + ContentType: contentType, + Secret: form.Secret, + HTTPMethod: form.HTTPMethod, + WebhookForm: form.WebhookForm, + } +} + // GiteaHooksNewPost response for creating Gitea webhook func GiteaHooksNewPost(ctx *context.Context) { createWebhook(ctx, giteaHookParams(ctx)) diff --git a/routers/web/web.go b/routers/web/web.go index 0639c95caf..6e1fd2adae 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -577,6 +577,7 @@ func RegisterRoutes(m *web.Route) { m.Get("", repo.WebHooksEdit) m.Post("/replay/{uuid}", repo.ReplayWebhook) }) + m.Post("/forgejo/{id}", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksEditPost) m.Post("/gitea/{id}", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksEditPost) m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksEditPost) m.Post("/slack/{id}", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksEditPost) @@ -592,6 +593,7 @@ func RegisterRoutes(m *web.Route) { m.Group("/{configType:default-hooks|system-hooks}", func() { m.Get("/{type}/new", repo.WebhooksNew) + m.Post("/forgejo/new", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksNewPost) m.Post("/gitea/new", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksNewPost) m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksNewPost) m.Post("/slack/new", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksNewPost) @@ -808,6 +810,7 @@ func RegisterRoutes(m *web.Route) { m.Get("", org.Webhooks) m.Post("/delete", org.DeleteWebhook) m.Get("/{type}/new", repo.WebhooksNew) + m.Post("/forgejo/new", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksNewPost) m.Post("/gitea/new", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksNewPost) m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksNewPost) m.Post("/slack/new", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksNewPost) @@ -822,6 +825,7 @@ func RegisterRoutes(m *web.Route) { m.Get("", repo.WebHooksEdit) m.Post("/replay/{uuid}", repo.ReplayWebhook) }) + m.Post("/forgejo/{id}", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksEditPost) m.Post("/gitea/{id}", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksEditPost) m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksEditPost) m.Post("/slack/{id}", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksEditPost) @@ -1006,6 +1010,7 @@ func RegisterRoutes(m *web.Route) { m.Get("", repo.Webhooks) m.Post("/delete", repo.DeleteWebhook) m.Get("/{type}/new", repo.WebhooksNew) + m.Post("/forgejo/new", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksNewPost) m.Post("/gitea/new", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksNewPost) m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksNewPost) m.Post("/slack/new", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksNewPost) @@ -1022,6 +1027,7 @@ func RegisterRoutes(m *web.Route) { m.Post("/test", repo.TestWebhook) m.Post("/replay/{uuid}", repo.ReplayWebhook) }) + m.Post("/forgejo/{id}", web.Bind(forms.NewWebhookForm{}), repo.ForgejoHooksEditPost) m.Post("/gitea/{id}", web.Bind(forms.NewWebhookForm{}), repo.GiteaHooksEditPost) m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo.GogsHooksEditPost) m.Post("/slack/{id}", web.Bind(forms.NewSlackHookForm{}), repo.SlackHooksEditPost) diff --git a/services/webhook/webhook.go b/services/webhook/webhook.go index afd8e3c105..b2c622e3d2 100644 --- a/services/webhook/webhook.go +++ b/services/webhook/webhook.go @@ -69,7 +69,7 @@ var webhooks = map[webhook_module.HookType]*webhook{ // IsValidHookTaskType returns true if a webhook registered func IsValidHookTaskType(name string) bool { - if name == webhook_module.GITEA || name == webhook_module.GOGS { + if name == webhook_module.FORGEJO || name == webhook_module.GITEA || name == webhook_module.GOGS { return true } _, ok := webhooks[name] @@ -172,7 +172,7 @@ func PrepareWebhook(ctx context.Context, w *webhook_model.Webhook, event webhook // Avoid sending "0 new commits" to non-integration relevant webhooks (e.g. slack, discord, etc.). // Integration webhooks (e.g. drone) still receive the required data. if pushEvent, ok := p.(*api.PushPayload); ok && - w.Type != webhook_module.GITEA && w.Type != webhook_module.GOGS && + w.Type != webhook_module.FORGEJO && w.Type != webhook_module.GITEA && w.Type != webhook_module.GOGS && len(pushEvent.Commits) == 0 { return nil } diff --git a/templates/admin/hook_new.tmpl b/templates/admin/hook_new.tmpl index 0c018ff293..f15a1c20f4 100644 --- a/templates/admin/hook_new.tmpl +++ b/templates/admin/hook_new.tmpl @@ -14,8 +14,10 @@ {{.locale.Tr "admin.defaulthooks.update_webhook"}} {{end}}
- {{if eq .HookType "gitea"}} - + {{if eq .HookType "forgejo"}} + + {{else if eq .HookType "gitea"}} + {{else if eq .HookType "gogs"}} {{else if eq .HookType "slack"}} @@ -40,6 +42,7 @@
+ {{template "repo/settings/webhook/forgejo" .}} {{template "repo/settings/webhook/gitea" .}} {{template "repo/settings/webhook/gogs" .}} {{template "repo/settings/webhook/slack" .}} diff --git a/templates/org/settings/hook_new.tmpl b/templates/org/settings/hook_new.tmpl index 4685225f4c..35c26c4465 100644 --- a/templates/org/settings/hook_new.tmpl +++ b/templates/org/settings/hook_new.tmpl @@ -9,8 +9,10 @@

{{if .PageIsSettingsHooksNew}}{{.locale.Tr "repo.settings.add_webhook"}}{{else}}{{.locale.Tr "repo.settings.update_webhook"}}{{end}}
- {{if eq .HookType "gitea"}} - + {{if eq .HookType "forgejo"}} + + {{else if eq .HookType "gitea"}} + {{else if eq .HookType "gogs"}} {{else if eq .HookType "slack"}} diff --git a/templates/repo/settings/webhook/base_list.tmpl b/templates/repo/settings/webhook/base_list.tmpl index 61c5799513..6c69e3a2a0 100644 --- a/templates/repo/settings/webhook/base_list.tmpl +++ b/templates/repo/settings/webhook/base_list.tmpl @@ -4,8 +4,11 @@