From 9d18ba236fd05420c185a72a7e5b1a307389e5e2 Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 18 Jun 2026 23:52:52 +0200 Subject: [PATCH] feat(time-tracking): add favicon indicator for active time tracking sessions (#2937) --- .../images/icons/favicon-tracking-32x32.png | Bin 0 -> 2089 bytes frontend/src/App.vue | 2 ++ .../src/composables/useTimeTrackingFavicon.ts | 32 ++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 frontend/public/images/icons/favicon-tracking-32x32.png create mode 100644 frontend/src/composables/useTimeTrackingFavicon.ts diff --git a/frontend/public/images/icons/favicon-tracking-32x32.png b/frontend/public/images/icons/favicon-tracking-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d3867376f0a6999adc2c308a585d6b442df293dc GIT binary patch literal 2089 zcmV+^2-f$BP)T^# z1c{NFDj$d#5=l%zF$Rk~gXK{K5

S!CE?P>0=)EG3TDWmml_>>CAM>PEK;qx##Tl zU;qDlZDGk}!YINHi2!T1TUV>e`bM2=vy3bA3ZHf`f>A@jpowu9czdSJb0?Zw+ zOBw)-nz91}vBj3;8Fb*#MVd}=R`QQ5m6r-EwQA+{r-mQ&n# z3604HhyV5}&lkcUH(bD;J$Fg-Od#Y;#@F6q>)IvTP;M=ZRqM}!dv1k`*TU!{uA{7T+i3WP3Ye0ZB((JFaBGqwjjZYXj4fhFyC5v@MJ`)sO8vMN^_H~SLWodCC_}o;pqe8}R6BV>H?C;NKo=oK z5XaRXb`IZe*DVH-0L&WSYM&S39_QFdAXo$hH_(d=RNGLW#zLgghN6TJA(DW!+DVRD z7LlT0S*4VoE}TWMK#+_JMYw0h_w4dhAiyVGB#zu+>#XGGv&O|xQv`!r2Dz442#7{D zt%X_zhI_%gr2qRzp|2Zye1H%r@st4&RKN%X=h$c^cdz`GeS3U|e88xwX9u=syLE*b zw&A&oK*SJqPFkWRtwU70su^3iB;CEHFg8mdW=a@zMmgyjJ6_>mJJZN_t}fWwFgYSsxZfvE;e7mn4-`jA=|)$H`-oqJ{#CT9kD;k}IM zW@0E>Vgd*vI8(kkQSui=UeGn$tt$#Qi?WJHoS&K^>1L*cLUW{l2=R_+k!YNDg$PK7 z_Vgj@Fk6)ChFTtBB6y!O2>2= zf?+`Jg*8L-ygyZS1OrjTtsMaJhZ197ZY_=1{ol^M0g-p{@`t8eDg?=l1?rS9Ov&(Jz7^I`@TsTgeZYOEyU<`?Bf1W>C$<^?dSdCo-_ZlGGtu^2Fm#Apl+ z^wZPRi}z`xS}r(&_L(FwJg~}RbfM^J`p*IGcwp&n#qbcTMwS!Hf?{eMtc{_ZJu-;q zJt=VQ6nke}f=Z<3mukp!C{wTJ*c7x1pc_O4i-BVLC=(|>q}ga8A}k*+s1B?}eT6c> z_(Tdsm5&Fb1`Uk3_z&Y$r`vx7-aUNkzZe1%3nnI~dE)68Idu3KDv=mU1ej{Vzut#- znfk+$_Kj%JP&39&D3=^fEJgoE)9}O_so`jc6;$b|)fgHaU}VJ*5uJ;+7sue0eJS6U zWFYmz(u{Exog`6^4cJM1H+uNb`AXl%Nbm8 z7V0v_4#D1ii6*y{_lA*5d=upvA0khRa+|6RI|30+YM2qk&E;`B!2gb?;iKXqtJb(+ z<7Pg!{xhH+pH;yE?|=s!N=m!31(eiVH9}mXsLb=;B3R_hpSS_^h_lfgeZ!Ok%J-d$oRd|^bzFG zEqg+#enQdqP6fwg)Wmz{k4OrO*$q=6@2D)D}5EPs+!Hl=-iiz zSa+yL4Vb7<@$>cch|g2CnYa3DFw~R6BN{;z!Qo=b>n7ZF@D@%5 zqnx#FCIKtu)!s|ArC2T@_Em|1b!NN;cr7_#-4)`RL82&Tf(7ygmR}Z6rsGNSNbSda& zIefpoxa85yMp1e8rKbqR4Vdi(X<$sm5FYojV+g-Gv^t=^_KtW zA-m|rwEe)$9t*+7%xuccLg$)l7p<`{(|D{biy!VkY@faUKFd2h3Zr(0$^`!hhMMx4 T8oe2T00000NkvXXu0mjfxNY?I literal 0 HcmV?d00001 diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 08688b1bb..760c18edc 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -61,6 +61,7 @@ import {useAuthStore} from '@/stores/auth' import {useBaseStore} from '@/stores/base' import {useColorScheme} from '@/composables/useColorScheme' +import {useTimeTrackingFavicon} from '@/composables/useTimeTrackingFavicon' import {useBodyClass} from '@/composables/useBodyClass' import QuickAddOverlay from '@/components/quick-actions/QuickAddOverlay.vue' import AddToHomeScreen from '@/components/home/AddToHomeScreen.vue' @@ -107,6 +108,7 @@ watch(accountDeletionConfirm, async (accountDeletionConfirm) => { setLanguage(authStore.settings.language ?? DEFAULT_LANGUAGE) useColorScheme() +useTimeTrackingFavicon()