From 56bf88915d06f7da8c49b5dc0b53f32cced3d846 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 00:16:38 -0400 Subject: [PATCH 001/235] Update contributors list (#3296) docs: update contributors list [skip ci] Co-authored-by: mrubens --- README.md | 8 ++++---- locales/ca/README.md | 8 ++++---- locales/de/README.md | 8 ++++---- locales/es/README.md | 8 ++++---- locales/fr/README.md | 8 ++++---- locales/hi/README.md | 8 ++++---- locales/it/README.md | 8 ++++---- locales/ja/README.md | 8 ++++---- locales/ko/README.md | 8 ++++---- locales/nl/README.md | 8 ++++---- locales/pl/README.md | 8 ++++---- locales/pt-BR/README.md | 8 ++++---- locales/ru/README.md | 8 ++++---- locales/tr/README.md | 8 ++++---- locales/vi/README.md | 8 ++++---- locales/zh-CN/README.md | 8 ++++---- locales/zh-TW/README.md | 8 ++++---- 17 files changed, 68 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index ad195bdebb..256edac7be 100644 --- a/README.md +++ b/README.md @@ -196,10 +196,10 @@ Thanks to all our contributors who have helped make Roo Code better! | teddyOOXX
teddyOOXX
| vagadiya
vagadiya
| vincentsong
vincentsong
| yongjer
yongjer
| ashktn
ashktn
| franekp
franekp
| | yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| axkirillov
axkirillov
| bramburn
bramburn
| snoyiatk
snoyiatk
| | GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| -| napter
napter
| philfung
philfung
| nevermorec
nevermorec
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| -| GOODBOY008
GOODBOY008
| dqroid
dqroid
| dairui1
dairui1
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| student20880
student20880
| +| napter
napter
| philfung
philfung
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| +| kinandan
kinandan
| kohii
kohii
| lightrabbit
lightrabbit
| olup
olup
| mecab
mecab
| GOODBOY008
GOODBOY008
| +| dqroid
dqroid
| dairui1
dairui1
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| +| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yoshino-Yukitaro
Yoshino-Yukitaro
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| student20880
student20880
| | shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| ronyblum
ronyblum
| robertheadley
robertheadley
| | refactorthis
refactorthis
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| | moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| Yikai-Liao
Yikai-Liao
| DeXtroTip
DeXtroTip
| celestial-vault
celestial-vault
| linegel
linegel
| diff --git a/locales/ca/README.md b/locales/ca/README.md index 3a4c2c7af6..8281904835 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -193,10 +193,10 @@ Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/de/README.md b/locales/de/README.md index da99d1e051..a4ef08892b 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -193,10 +193,10 @@ Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/es/README.md b/locales/es/README.md index 76c2208d61..8dc99aef2b 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -193,10 +193,10 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/fr/README.md b/locales/fr/README.md index 703c583dd1..a0e4f58edc 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -193,10 +193,10 @@ Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/hi/README.md b/locales/hi/README.md index d7941f18d0..0f4d134f04 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -193,10 +193,10 @@ Roo Code को बेहतर बनाने में मदद करने |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/it/README.md b/locales/it/README.md index ad76d19626..c756e23def 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -193,10 +193,10 @@ Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/ja/README.md b/locales/ja/README.md index 2d02ae819f..5b2ad5fa4d 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -193,10 +193,10 @@ Roo Codeの改善に貢献してくれたすべての貢献者に感謝します |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/ko/README.md b/locales/ko/README.md index 33f376de62..3d58a2d225 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -193,10 +193,10 @@ Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사 |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/nl/README.md b/locales/nl/README.md index 4a5f10d598..211159ebdf 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -194,10 +194,10 @@ Dank aan alle bijdragers die Roo Code beter hebben gemaakt! |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/pl/README.md b/locales/pl/README.md index 7ff1c41aa3..70766a08f5 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -193,10 +193,10 @@ Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index 82ee866515..ceebc16def 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -193,10 +193,10 @@ Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melho |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/ru/README.md b/locales/ru/README.md index c72efc7a35..5d45ec0c81 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -195,10 +195,10 @@ code --install-extension bin/roo-cline-.vsix |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/tr/README.md b/locales/tr/README.md index e410d63b2b..245b366422 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -193,10 +193,10 @@ Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara te |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/vi/README.md b/locales/vi/README.md index b06f2cbd61..6fd66db101 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -193,10 +193,10 @@ Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo C |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index 5e9c520b7a..b30d4b7c7c 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -193,10 +193,10 @@ code --install-extension bin/roo-cline-.vsix |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index c83b1053d9..401ad38925 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -194,10 +194,10 @@ code --install-extension bin/roo-cline-.vsix |teddyOOXX
teddyOOXX
|vagadiya
vagadiya
|vincentsong
vincentsong
|yongjer
yongjer
|ashktn
ashktn
|franekp
franekp
| |yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|axkirillov
axkirillov
|bramburn
bramburn
|snoyiatk
snoyiatk
| |GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
| -|napter
napter
|philfung
philfung
|nevermorec
nevermorec
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
| -|GOODBOY008
GOODBOY008
|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| +|napter
napter
|philfung
philfung
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|kohii
kohii
|lightrabbit
lightrabbit
|olup
olup
|mecab
mecab
|GOODBOY008
GOODBOY008
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yoshino-Yukitaro
Yoshino-Yukitaro
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|student20880
student20880
| |shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|ronyblum
ronyblum
|robertheadley
robertheadley
| |refactorthis
refactorthis
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| |moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|Yikai-Liao
Yikai-Liao
|DeXtroTip
DeXtroTip
|celestial-vault
celestial-vault
|linegel
linegel
| From 7f9515aa9aca5c3908d190b8ad05f974f971f7bf Mon Sep 17 00:00:00 2001 From: R00-B0T <110429663+R00-B0T@users.noreply.github.com> Date: Wed, 7 May 2025 21:21:51 -0700 Subject: [PATCH 002/235] Changeset version bump (#3300) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: R00-B0T Co-authored-by: Matt Rubens --- .changeset/v3.16.2.md | 6 ------ CHANGELOG.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 .changeset/v3.16.2.md diff --git a/.changeset/v3.16.2.md b/.changeset/v3.16.2.md deleted file mode 100644 index df57ae90f9..0000000000 --- a/.changeset/v3.16.2.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"roo-cline": patch ---- - -- Clarify XML tool use formatting instructions -- Error handling code cleanup (thanks @monkeyDluffy6017!) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c6d24647d..dc1d2edbc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Roo Code Changelog +## [3.16.2] - 2025-05-07 + +- Clarify XML tool use formatting instructions +- Error handling code cleanup (thanks @monkeyDluffy6017!) + ## [3.16.1] - 2025-05-07 - Add LiteLLM provider support diff --git a/package-lock.json b/package-lock.json index 9febf407c2..f614972a51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "roo-cline", - "version": "3.16.1", + "version": "3.16.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "roo-cline", - "version": "3.16.1", + "version": "3.16.2", "dependencies": { "@anthropic-ai/bedrock-sdk": "^0.10.2", "@anthropic-ai/sdk": "^0.37.0", diff --git a/package.json b/package.json index 77c307ad93..bd4c01d1a6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "RooVeterinaryInc", - "version": "3.16.1", + "version": "3.16.2", "icon": "assets/icons/icon.png", "galleryBanner": { "color": "#617A91", From dcc319ecb0fd75bd05b05f38d24ed7dac1e28900 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:22:42 -0700 Subject: [PATCH 003/235] chore(deps): update dependency mocha to v11.2.2 (#3293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- e2e/package-lock.json | 47 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 0851518d20..8cea7abf5a 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -1333,15 +1333,14 @@ } }, "node_modules/mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", - "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.2.2.tgz", + "integrity": "sha512-VlSBxrPYHK4YNOEbFdkCxHQbZMoNzBkoPprqtZRW6311EUF/DlSxoycE2e/2NtRk4WKkIXzyrXDTrlikJMWgbw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", @@ -1352,6 +1351,7 @@ "log-symbols": "^4.1.0", "minimatch": "^5.1.6", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", @@ -1368,6 +1368,22 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/mocha/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -1381,6 +1397,20 @@ "node": ">=10" } }, + "node_modules/mocha/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -1638,6 +1668,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", From 7ed6ccf9b13816022fd5506d872d797f7150381f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:22:50 -0700 Subject: [PATCH 004/235] chore(deps): update dependency prettier to v3.5.3 (#3294) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f614972a51..41dce46108 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17559,10 +17559,11 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, From eb27474aa3eb14540f920db836cdbca12c492781 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:23:35 -0700 Subject: [PATCH 005/235] chore(deps): update dependency @types/node to v20.17.45 (#3302) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41dce46108..96d2f401df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9002,9 +9002,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.44.tgz", - "integrity": "sha512-50sE4Ibb4BgUMxHrcJQSAU0Fu7fLcTdwcXwRzEF7wnVMWvImFLg2Rxc7SW0vpvaJm4wvhoWEZaQiPpBpocZiUA==", + "version": "20.17.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.45.tgz", + "integrity": "sha512-vO9+E1smq+149wsmmLdM8SKVW7gRzLjfo0mU7kiykhV6rL+GEUhUmW7VywJNSxJHQzt9QBIHEo+3SG4MrFTqbA==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" From af1d62f3dc8ed3dba26ed6479bdf3abbfc1293c7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:23:40 -0700 Subject: [PATCH 006/235] chore(deps): update dependency @types/node to v18.19.99 (#3301) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- webview-ui/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webview-ui/package-lock.json b/webview-ui/package-lock.json index ad2dea3540..514169372f 100644 --- a/webview-ui/package-lock.json +++ b/webview-ui/package-lock.json @@ -7323,9 +7323,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.98", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.98.tgz", - "integrity": "sha512-+bP9tunb6pQbV5cV4z9EwCD/811rXGwXXI/cNK+8MIcm7Ufe9GWGoz91ERuC4MAn5Yp/SEWNYulaQdRHFG67iw==", + "version": "18.19.99", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.99.tgz", + "integrity": "sha512-tNGqoGjjI4vY5jfm3lnqgR6yS8wyT76SfsWefLWRyh/cEK4UHmPVyqHZdafI/SNu1PQzfo2JLBWfG8eMmD7KrQ==", "devOptional": true, "license": "MIT", "dependencies": { From bfd15106c9cbc6ea7117b90f81cc3651f575ec8d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:24:02 -0700 Subject: [PATCH 007/235] chore(deps): update dependency lint-staged to v15.5.2 (#3290) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 57 +++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96d2f401df..8340522413 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15426,21 +15426,22 @@ "dev": true }, "node_modules/lint-staged": { - "version": "15.2.11", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.11.tgz", - "integrity": "sha512-Ev6ivCTYRTGs9ychvpVw35m/bcNDuBN+mnTeObCL5h+boS5WzBEC6LHI4I9F/++sZm1m+J2LEiy0gxL/R9TBqQ==", + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.4.0", - "execa": "~8.0.1", - "lilconfig": "~3.1.3", - "listr2": "~8.2.5", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.6.1" + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -15453,10 +15454,11 @@ } }, "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -15465,10 +15467,11 @@ } }, "node_modules/lint-staged/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -15478,6 +15481,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -15501,6 +15505,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -15513,6 +15518,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } @@ -15522,6 +15528,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -15534,6 +15541,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -15546,6 +15554,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -15561,6 +15570,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -15576,6 +15586,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -15588,6 +15599,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -22050,10 +22062,11 @@ "dev": true }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, From abfee46f35a39c356bd0dc841c14919c9ffc4d9c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:24:15 -0700 Subject: [PATCH 008/235] chore(deps): update dependency knip to v5.55.0 (#3289) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 218 +++++++++------------------------------------- 1 file changed, 42 insertions(+), 176 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8340522413..e72d661d76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8803,47 +8803,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, - "node_modules/@snyk/github-codeowners": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@snyk/github-codeowners/-/github-codeowners-1.1.0.tgz", - "integrity": "sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==", - "dev": true, - "dependencies": { - "commander": "^4.1.1", - "ignore": "^5.1.8", - "p-map": "^4.0.0" - }, - "bin": { - "github-codeowners": "dist/cli.js" - }, - "engines": { - "node": ">=8.10" - } - }, - "node_modules/@snyk/github-codeowners/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@snyk/github-codeowners/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -9951,19 +9910,6 @@ "node": ">= 8.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -10889,15 +10835,6 @@ "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -11032,16 +10969,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -11575,19 +11502,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "optional": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -11854,27 +11768,6 @@ "node": ">=6.0.0" } }, - "node_modules/easy-table": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", - "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "optionalDependencies": { - "wcwidth": "^1.0.1" - } - }, - "node_modules/easy-table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -12858,6 +12751,16 @@ "bser": "2.1.1" } }, + "node_modules/fd-package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz", + "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "walk-up-path": "^3.0.1" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -13092,6 +12995,22 @@ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" }, + "node_modules/formatly": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.2.3.tgz", + "integrity": "sha512-WH01vbXEjh9L3bqn5V620xUAWs32CmK4IzWRRY6ep5zpa/mrisL4d9+pRVuETORVDTQw8OycSO1WC68PL51RaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fd-package-json": "^1.2.0" + }, + "bin": { + "formatly": "bin/index.mjs" + }, + "engines": { + "node": ">=18.3.0" + } + }, "node_modules/formdata-node": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", @@ -13793,15 +13712,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -15270,9 +15180,9 @@ } }, "node_modules/knip": { - "version": "5.44.4", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.44.4.tgz", - "integrity": "sha512-Ryn8LwWHLId8jSK1DgtT0hmg5DbzkqAtH+Gg3vZJpmSMgGHMspej9Ag+qKTm8wsPLDjVetuEz/lIsobo0XCMvQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.55.0.tgz", + "integrity": "sha512-PScNN+e7NDdaLlRufDFqOVkngH+F9/IxtCnpQqZ5Ws9xqPhQGRxgIxGTVkR88/re2p1wNXtqCUFP6xfQSnp+Vw==", "dev": true, "funding": [ { @@ -15288,21 +15198,19 @@ "url": "https://polar.sh/webpro-nl" } ], + "license": "ISC", "dependencies": { - "@nodelib/fs.walk": "3.0.1", - "@snyk/github-codeowners": "1.1.0", - "easy-table": "1.2.0", - "enhanced-resolve": "^5.18.0", + "@nodelib/fs.walk": "^1.2.3", + "enhanced-resolve": "^5.18.1", "fast-glob": "^3.3.3", + "formatly": "^0.2.3", "jiti": "^2.4.2", "js-yaml": "^4.1.0", "minimist": "^1.2.8", "picocolors": "^1.1.0", "picomatch": "^4.0.1", - "pretty-ms": "^9.0.0", "smol-toml": "^1.3.1", "strip-json-comments": "5.0.1", - "summary": "2.1.0", "zod": "^3.22.4", "zod-validation-error": "^3.0.3" }, @@ -15318,46 +15226,12 @@ "typescript": ">=5.0.4" } }, - "node_modules/knip/node_modules/@nodelib/fs.scandir": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-4.0.1.tgz", - "integrity": "sha512-vAkI715yhnmiPupY+dq+xenu5Tdf2TBQ66jLvBIcCddtz+5Q8LbMKaf9CIJJreez8fQ8fgaY+RaywQx8RJIWpw==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "4.0.0", - "run-parallel": "^1.2.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/knip/node_modules/@nodelib/fs.stat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-4.0.0.tgz", - "integrity": "sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg==", - "dev": true, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/knip/node_modules/@nodelib/fs.walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-3.0.1.tgz", - "integrity": "sha512-nIh/M6Kh3ZtOmlY00DaUYB4xeeV6F3/ts1l29iwl3/cfyY/OuCfUx+v08zgx8TKPTifXRcjjqVQ4KB2zOYSbyw==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "4.0.1", - "fastq": "^1.15.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, "node_modules/knip/node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -15370,6 +15244,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -19178,12 +19053,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/summary": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/summary/-/summary-2.1.0.tgz", - "integrity": "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==", - "dev": true - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -21608,6 +21477,13 @@ "integrity": "sha512-GsoEEF8Tbb0yUFQ6N6FPvh11kFkL9F95x0FkKlbbfRQN9eFms67h+L3t6b9cUv58dSn2gu8kEhNfoESVCrz4ag==", "license": "MIT" }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, + "license": "ISC" + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -21617,16 +21493,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "optional": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/web-streams-polyfill": { "version": "4.0.0-beta.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", From 9b3d4e7df9b07942a535854a77d42a9a05b2782b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:24:27 -0700 Subject: [PATCH 009/235] chore(deps): update dependency globals to v16.1.0 (#3288) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- evals/pnpm-lock.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/evals/pnpm-lock.yaml b/evals/pnpm-lock.yaml index 2ed8388756..9b6d129176 100644 --- a/evals/pnpm-lock.yaml +++ b/evals/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 9.25.1(jiti@2.4.2) globals: specifier: ^16.0.0 - version: 16.0.0 + version: 16.1.0 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -2970,6 +2970,10 @@ packages: resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} engines: {node: '>=18'} + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -6984,6 +6988,8 @@ snapshots: globals@16.0.0: {} + globals@16.1.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 From 8eb65853c6bd71ea51a9dfe63abd1ecd79e3eb3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 21:24:37 -0700 Subject: [PATCH 010/235] chore(deps): update dependency eslint-plugin-storybook to ^0.12.0 (#3287) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- webview-ui/package-lock.json | 80 ++++++++++++++++++------------------ webview-ui/package.json | 2 +- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/webview-ui/package-lock.json b/webview-ui/package-lock.json index 514169372f..5fd2fd7ce1 100644 --- a/webview-ui/package-lock.json +++ b/webview-ui/package-lock.json @@ -79,7 +79,7 @@ "eslint-config-react-app": "^7.0.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-storybook": "^0.11.2", + "eslint-plugin-storybook": "^0.12.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", @@ -2689,9 +2689,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "dependencies": { @@ -11487,9 +11487,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.2.tgz", - "integrity": "sha512-0Z4DUklJrC+GHjCRXa7PYfPzWC15DaVnwaOYenpgXiCEijXPZkLKCms+rHhtoRcWccP7Z8DpOOaP1gc3P9oOwg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", + "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", "dev": true, "license": "MIT", "dependencies": { @@ -11505,14 +11505,14 @@ } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", - "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", + "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/visitor-keys": "8.22.0" + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11523,9 +11523,9 @@ } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", - "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", + "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", "dev": true, "license": "MIT", "engines": { @@ -11537,20 +11537,20 @@ } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", - "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", + "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/visitor-keys": "8.22.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11560,20 +11560,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.22.0.tgz", - "integrity": "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", + "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.22.0", - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/typescript-estree": "8.22.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11584,17 +11584,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", - "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", + "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", + "@typescript-eslint/types": "8.32.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -11645,9 +11645,9 @@ } }, "node_modules/eslint-plugin-storybook/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -11658,9 +11658,9 @@ } }, "node_modules/eslint-plugin-storybook/node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { diff --git a/webview-ui/package.json b/webview-ui/package.json index a57470cead..3f08744514 100644 --- a/webview-ui/package.json +++ b/webview-ui/package.json @@ -88,7 +88,7 @@ "eslint-config-react-app": "^7.0.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-storybook": "^0.11.2", + "eslint-plugin-storybook": "^0.12.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", From ba465b834e3e8394fd9bc238eda2fa1d0e96b6f2 Mon Sep 17 00:00:00 2001 From: Friedrich Pfitzmann Date: Thu, 8 May 2025 15:13:37 +0200 Subject: [PATCH 011/235] fix: add Elixir (.ex, .exs) file extension support in language parser (#3306) Co-authored-by: Friedrich Pfitzmann --- src/services/tree-sitter/languageParser.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/services/tree-sitter/languageParser.ts b/src/services/tree-sitter/languageParser.ts index 28150addc2..5e75fd3255 100644 --- a/src/services/tree-sitter/languageParser.ts +++ b/src/services/tree-sitter/languageParser.ts @@ -27,6 +27,7 @@ import { zigQuery, embeddedTemplateQuery, elispQuery, + elixirQuery, } from "./queries" export interface LanguageParser { @@ -196,6 +197,11 @@ export async function loadRequiredLanguageParsers(filesToParse: string[]): Promi language = await loadLanguage("elisp") query = language.query(elispQuery) break + case "ex": + case "exs": + language = await loadLanguage("elixir") + query = language.query(elixirQuery) + break default: throw new Error(`Unsupported language: ${ext}`) } From 6d8f903b044a34c18f33539542a1ce792bd2f07f Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 8 May 2025 10:38:29 -0400 Subject: [PATCH 012/235] Revert "Tailwind migration" (#3321) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --- .changeset/wicked-ways-cry.md | 5 + .../src/components/chat/Announcement.tsx | 173 ++++++----- .../src/components/chat/AutoApproveMenu.tsx | 64 +++- .../src/components/chat/BrowserSessionRow.tsx | 198 ++++++++---- webview-ui/src/components/chat/ChatRow.tsx | 283 +++++++++++------ webview-ui/src/components/chat/ChatView.tsx | 14 +- .../components/chat/CommandExecutionError.tsx | 5 +- .../src/components/chat/ContextMenu.tsx | 136 +++++++-- webview-ui/src/components/chat/IconButton.tsx | 4 +- webview-ui/src/components/chat/Markdown.tsx | 42 ++- .../src/components/chat/ProgressIndicator.tsx | 11 +- .../src/components/common/CodeAccordian.tsx | 63 +++- .../src/components/common/CodeBlock.tsx | 286 +++++++++++------- .../src/components/common/MarkdownBlock.tsx | 109 ++++--- .../src/components/common/MermaidBlock.tsx | 128 +++++--- .../src/components/common/TelemetryBanner.tsx | 33 +- .../src/components/common/Thumbnails.tsx | 42 ++- .../components/common/VSCodeButtonLink.tsx | 7 +- .../src/components/history/HistoryPreview.tsx | 4 +- .../src/components/history/HistoryView.tsx | 149 +++++++-- .../src/components/mcp/McpEnabledToggle.tsx | 13 +- .../src/components/mcp/McpResourceRow.tsx | 39 ++- webview-ui/src/components/mcp/McpToolRow.tsx | 66 +++- webview-ui/src/components/mcp/McpView.tsx | 215 +++++++++---- .../src/components/prompts/PromptsView.tsx | 101 ++++--- .../components/settings/ApiConfigManager.tsx | 2 +- .../components/settings/BrowserSettings.tsx | 10 +- .../settings/ModelDescriptionMarkdown.tsx | 25 +- .../src/components/settings/SettingsView.tsx | 2 +- .../components/settings/providers/Bedrock.tsx | 3 +- .../components/settings/providers/Glama.tsx | 2 +- .../settings/providers/LMStudio.tsx | 8 +- .../settings/providers/OpenAICompatible.tsx | 146 +++++---- .../settings/providers/OpenRouter.tsx | 2 +- .../settings/providers/Requesty.tsx | 5 +- webview-ui/src/components/settings/styles.ts | 47 +++ webview-ui/src/components/ui/dialog.tsx | 6 +- .../src/components/ui/markdown/Blockquote.tsx | 2 +- .../src/components/ui/markdown/CodeBlock.tsx | 6 +- webview-ui/src/index.css | 63 ---- 40 files changed, 1679 insertions(+), 840 deletions(-) create mode 100644 .changeset/wicked-ways-cry.md create mode 100644 webview-ui/src/components/settings/styles.ts diff --git a/.changeset/wicked-ways-cry.md b/.changeset/wicked-ways-cry.md new file mode 100644 index 0000000000..c347010a78 --- /dev/null +++ b/.changeset/wicked-ways-cry.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Revert "Tailwind migration" diff --git a/webview-ui/src/components/chat/Announcement.tsx b/webview-ui/src/components/chat/Announcement.tsx index 0d93d9da0c..b3a79cde7c 100644 --- a/webview-ui/src/components/chat/Announcement.tsx +++ b/webview-ui/src/components/chat/Announcement.tsx @@ -1,94 +1,113 @@ -import { useState, memo } from "react" +import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" +import { memo } from "react" +import { useAppTranslation } from "@/i18n/TranslationContext" import { Trans } from "react-i18next" -import { VSCodeLink } from "@vscode/webview-ui-toolkit/react" - -import { useAppTranslation } from "@src/i18n/TranslationContext" -import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@src/components/ui" interface AnnouncementProps { hideAnnouncement: () => void } - -/** - * You must update the `latestAnnouncementId` in ClineProvider for new - * announcements to show to users. This new id will be compared with what's in - * state for the 'last announcement shown', and if it's different then the - * announcement will render. As soon as an announcement is shown, the id will be - * updated in state. This ensures that announcements are not shown more than - * once, even if the user doesn't close it themselves. - */ - +/* +You must update the latestAnnouncementId in ClineProvider for new announcements to show to users. This new id will be compared with whats in state for the 'last announcement shown', and if it's different then the announcement will render. As soon as an announcement is shown, the id will be updated in state. This ensures that announcements are not shown more than once, even if the user doesn't close it themselves. +*/ const Announcement = ({ hideAnnouncement }: AnnouncementProps) => { const { t } = useAppTranslation() - const [open, setOpen] = useState(true) + + const discordLink = ( + { + e.preventDefault() + window.postMessage( + { type: "action", action: "openExternal", data: { url: "https://discord.gg/roocode" } }, + "*", + ) + }}> + Discord + + ) + + const redditLink = ( + { + e.preventDefault() + window.postMessage( + { type: "action", action: "openExternal", data: { url: "https://reddit.com/r/RooCode" } }, + "*", + ) + }}> + Reddit + + ) return ( - { - setOpen(open) +
+
+ + + +

{t("chat:announcement.title")}

- if (!open) { - hideAnnouncement() - } - }}> - - - {t("chat:announcement.title")} - {t("chat:announcement.description")} - -
-

{t("chat:announcement.whatsNew")}

-
    -
  • - •{" "} - , code: }} /> -
  • -
  • - •{" "} - , code: }} /> -
  • -
  • - •{" "} - , code: }} /> -
  • -
+

{t("chat:announcement.description")}

+ +

{t("chat:announcement.whatsNew")}

+
    +
  • + •{" "} + , + code: , + }} + /> +
  • +
  • + •{" "} + , + code: , + }} + /> +
  • +
  • + •{" "} + , + code: , + }} + /> +
  • +
+ +

, redditLink: }} + components={{ + discordLink: discordLink, + redditLink: redditLink, + }} /> -

-
-
+

+ + ) } -const DiscordLink = () => ( - { - e.preventDefault() - window.postMessage( - { type: "action", action: "openExternal", data: { url: "https://discord.gg/roocode" } }, - "*", - ) - }}> - Discord - -) - -const RedditLink = () => ( - { - e.preventDefault() - window.postMessage( - { type: "action", action: "openExternal", data: { url: "https://reddit.com/r/RooCode" } }, - "*", - ) - }}> - Reddit - -) - export default memo(Announcement) diff --git a/webview-ui/src/components/chat/AutoApproveMenu.tsx b/webview-ui/src/components/chat/AutoApproveMenu.tsx index 2eb3a0afbf..aaa30a0153 100644 --- a/webview-ui/src/components/chat/AutoApproveMenu.tsx +++ b/webview-ui/src/components/chat/AutoApproveMenu.tsx @@ -2,7 +2,6 @@ import { useCallback, useMemo, useState } from "react" import { Trans } from "react-i18next" import { VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react" -import { cn } from "@/lib/utils" import { vscode } from "@src/utils/vscode" import { useExtensionState } from "@src/context/ExtensionStateContext" import { useAppTranslation } from "@src/i18n/TranslationContext" @@ -119,13 +118,23 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => { return (
+ style={{ + padding: "0 15px", + userSelect: "none", + borderTop: isExpanded + ? `0.5px solid color-mix(in srgb, var(--vscode-titleBar-inactiveForeground) 20%, transparent)` + : "none", + overflowY: "auto", + ...style, + }}>
e.stopPropagation()}> { }} />
-
- {t("chat:autoApprove.title")} - +
+ + {t("chat:autoApprove.title")} + + {enabledActionsList || t("chat:autoApprove.none")}
{isExpanded && (
-
+
{ : displayState.mousePosition || defaultMousePosition const [browserSessionRow, { height: rowHeight }] = useSize( -
-
+
+
{isBrowsing ? ( ) : ( - + )} - + <>{t("chat:browser.rooWantsToUse")}
-
+
{/* URL Bar */}
-
+ style={{ + margin: "5px auto", + width: "calc(100% - 10px)", + boxSizing: "border-box", // includes padding in width calculation + backgroundColor: "var(--vscode-input-background)", + border: "1px solid var(--vscode-input-border)", + borderRadius: "4px", + padding: "3px 5px", + display: "flex", + alignItems: "center", + justifyContent: "center", + color: displayState.url + ? "var(--vscode-input-foreground)" + : "var(--vscode-descriptionForeground)", + fontSize: "12px", + }}> +
{displayState.url || "http"}
@@ -261,15 +287,25 @@ const BrowserSessionRow = memo((props: BrowserSessionRowProps) => { {/* Screenshot Area */}
+ style={{ + width: "100%", + paddingBottom: `${aspectRatio}%`, // height/width ratio + position: "relative", + backgroundColor: "var(--vscode-input-background)", + }}> {displayState.screenshot ? ( {t("chat:browser.screenshot")} vscode.postMessage({ type: "openImage", @@ -278,34 +314,47 @@ const BrowserSessionRow = memo((props: BrowserSessionRowProps) => { } /> ) : ( -
- +
+
)} {displayState.mousePosition && ( )}
-
+
{ setConsoleLogsExpanded(!consoleLogsExpanded) }} - className={`flex items-center gap-1 w-full justify-start cursor-pointer px-2 ${ - consoleLogsExpanded ? "pt-[9px] pb-0" : "py-[9px]" - }`}> + style={{ + display: "flex", + alignItems: "center", + gap: "4px", + width: "100%", + justifyContent: "flex-start", + cursor: "pointer", + padding: `9px 8px ${consoleLogsExpanded ? 0 : 8}px 8px`, + }}> - {t("chat:browser.consoleLogs")} + {t("chat:browser.consoleLogs")}
{consoleLogsExpanded && ( @@ -314,15 +363,23 @@ const BrowserSessionRow = memo((props: BrowserSessionRowProps) => {
{/* Action content with min height */} -
0 && `[min-height:${maxActionHeight}px]`)}>{actionContent}
+
{actionContent}
{/* Pagination moved to bottom */} {pages.length > 1 && ( -
+
{t("chat:browser.navigation.step", { current: currentPageIndex + 1, total: pages.length })}
-
+
setCurrentPageIndex((i) => i - 1)}> @@ -369,7 +426,13 @@ const BrowserSessionRowContent = ({ isStreaming, }: BrowserSessionRowContentProps) => { const { t } = useTranslation() - const headerClassNames = "flex items-center gap-2.5 mb-2.5 break-words" + const headerStyle: React.CSSProperties = { + display: "flex", + alignItems: "center", + gap: "10px", + marginBottom: "10px", + wordBreak: "break-word", + } switch (message.type) { case "say": @@ -377,7 +440,7 @@ const BrowserSessionRowContent = ({ case "api_req_started": case "text": return ( -
+
-
- {t("chat:browser.sessionStarted")} +
+ {t("chat:browser.sessionStarted")}
-
+
@@ -457,11 +526,26 @@ const BrowserActionBox = ({ } } return ( -
-
-
- - {t("chat:browser.actions.title")} +
+
+
+ + {t("chat:browser.actions.title")} {getBrowserActionText(action, coordinate, text)}
@@ -470,12 +554,7 @@ const BrowserActionBox = ({ ) } -interface BrowserCursorProps { - style?: React.CSSProperties - className?: string -} - -const BrowserCursor: React.FC = ({ style, className }) => { +const BrowserCursor: React.FC<{ style?: React.CSSProperties }> = ({ style }) => { const { t } = useTranslation() // (can't use svgs in vsc extensions) const cursorBase64 = @@ -484,16 +563,13 @@ const BrowserCursor: React.FC = ({ style, className }) => { return ( {t("chat:browser.cursor")} ) } diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx index 0aad4d321f..efc720ba76 100644 --- a/webview-ui/src/components/chat/ChatRow.tsx +++ b/webview-ui/src/components/chat/ChatRow.tsx @@ -8,7 +8,6 @@ import { ClineApiReqInfo, ClineAskUseMcpServer, ClineMessage, ClineSayTool } fro import { COMMAND_OUTPUT_STRING } from "@roo/shared/combineCommandSequences" import { safeJsonParse } from "@roo/shared/safeJsonParse" -import { cn } from "@/lib/utils" import { useCopyToClipboard } from "@src/utils/clipboard" import { useExtensionState } from "@src/context/ExtensionStateContext" import { findMatchingResourceOrTemplate } from "@src/utils/mcp" @@ -16,7 +15,7 @@ import { vscode } from "@src/utils/vscode" import { Button } from "@src/components/ui" import CodeAccordian, { removeLeadingNonAlphanumeric } from "../common/CodeAccordian" -import CodeBlock from "../common/CodeBlock" +import CodeBlock, { CODE_BLOCK_BG_COLOR } from "../common/CodeBlock" import MarkdownBlock from "../common/MarkdownBlock" import { ReasoningBlock } from "./ReasoningBlock" import Thumbnails from "../common/Thumbnails" @@ -119,26 +118,37 @@ export const ChatRowContent = ({ const type = message.type === "ask" ? message.ask : message.say - const [icon, title] = useMemo((): [React.ReactNode | null, React.ReactNode | null] => { + const normalColor = "var(--vscode-foreground)" + const errorColor = "var(--vscode-errorForeground)" + const successColor = "var(--vscode-charts-green)" + const cancelledColor = "var(--vscode-descriptionForeground)" + + const [icon, title] = useMemo(() => { switch (type) { case "error": return [ - , - {t("chat:error")}, + , + {t("chat:error")}, ] case "mistake_limit_reached": return [ - , // Self-closing - {t("chat:troubleMessage")}, + , + {t("chat:troubleMessage")}, ] case "command": return [ isCommandExecuting ? ( ) : ( - // Self-closing + ), - {t("chat:runCommand.title")}:, + {t("chat:runCommand.title")}:, ] case "use_mcp_server": const mcpServerUse = safeJsonParse(message.text) @@ -149,9 +159,11 @@ export const ChatRowContent = ({ isMcpServerResponding ? ( ) : ( - // Self-closing + ), - + {mcpServerUse.type === "use_mcp_tool" ? t("chat:mcp.wantsToUseTool", { serverName: mcpServerUse.serverName }) : t("chat:mcp.wantsToAccessResource", { serverName: mcpServerUse.serverName })} @@ -159,59 +171,88 @@ export const ChatRowContent = ({ ] case "completion_result": return [ - , // Self-closing - {t("chat:taskCompleted")}, + , + {t("chat:taskCompleted")}, ] case "api_req_retry_delayed": - return [null, null] // Explicitly return [null, null] for this case + return [] case "api_req_started": - const getIconSpan = (iconName: string, colorClassName: string) => ( -
- + const getIconSpan = (iconName: string, color: string) => ( +
+
) return [ apiReqCancelReason !== null && apiReqCancelReason !== undefined ? ( apiReqCancelReason === "user_cancelled" ? ( - getIconSpan("error", "text-vscode-descriptionForeground") + getIconSpan("error", cancelledColor) ) : ( - getIconSpan("error", "text-vscode-errorForeground") + getIconSpan("error", errorColor) ) ) : cost !== null && cost !== undefined ? ( - getIconSpan("check", "text-vscode-charts-green") + getIconSpan("check", successColor) ) : apiRequestFailedMessage ? ( - getIconSpan("error", "text-vscode-errorForeground") + getIconSpan("error", errorColor) ) : ( ), apiReqCancelReason !== null && apiReqCancelReason !== undefined ? ( apiReqCancelReason === "user_cancelled" ? ( - {t("chat:apiRequest.cancelled")} + + {t("chat:apiRequest.cancelled")} + ) : ( - + {t("chat:apiRequest.streamingFailed")} ) ) : cost !== null && cost !== undefined ? ( - {t("chat:apiRequest.title")} + {t("chat:apiRequest.title")} ) : apiRequestFailedMessage ? ( - {t("chat:apiRequest.failed")} + {t("chat:apiRequest.failed")} ) : ( - {t("chat:apiRequest.streaming")} + {t("chat:apiRequest.streaming")} ), ] case "followup": return [ - , - {t("chat:questions.hasQuestion")}, + , + {t("chat:questions.hasQuestion")}, ] default: - return [null, null] // Explicitly return [null, null] for default case + return [null, null] } }, [type, isCommandExecuting, message, isMcpServerResponding, apiReqCancelReason, cost, apiRequestFailedMessage, t]) - const headerClasses = "flex items-center gap-[10px] mb-[10px] break-words" - const pClasses = "m-0 whitespace-pre-wrap break-words overflow-anywhere" + const headerStyle: React.CSSProperties = { + display: "flex", + alignItems: "center", + gap: "10px", + marginBottom: "10px", + wordBreak: "break-word", + } + + const pStyle: React.CSSProperties = { + margin: 0, + whiteSpace: "pre-wrap", + wordBreak: "break-word", + overflowWrap: "anywhere", + } const tool = useMemo( () => (message.ask === "tool" ? safeJsonParse(message.text) : null), @@ -227,7 +268,9 @@ export const ChatRowContent = ({ if (tool) { const toolIcon = (name: string) => ( - // Converted to Tailwind & self-closing + ) switch (tool.tool) { @@ -235,9 +278,9 @@ export const ChatRowContent = ({ case "appliedDiff": return ( <> -
+
{toolIcon(tool.tool === "appliedDiff" ? "diff" : "edit")} - + {tool.isOutsideWorkspace ? t("chat:fileOperations.wantsToEditOutsideWorkspace") : t("chat:fileOperations.wantsToEdit")} @@ -256,9 +299,9 @@ export const ChatRowContent = ({ case "insertContent": return ( <> -
+
{toolIcon("insert")} - + {tool.isOutsideWorkspace ? t("chat:fileOperations.wantsToEditOutsideWorkspace") : tool.lineNumber === 0 @@ -281,9 +324,9 @@ export const ChatRowContent = ({ case "searchAndReplace": return ( <> -
+
{toolIcon("replace")} - + {message.type === "ask" ? t("chat:fileOperations.wantsToSearchReplace") : t("chat:fileOperations.didSearchReplace")} @@ -302,9 +345,9 @@ export const ChatRowContent = ({ case "newFileCreated": return ( <> -
+
{toolIcon("new-file")} - {t("chat:fileOperations.wantsToCreate")} + {t("chat:fileOperations.wantsToCreate")}
-
+
{toolIcon("file-code")} - + {message.type === "ask" ? tool.isOutsideWorkspace ? t("chat:fileOperations.wantsToReadOutsideWorkspace") @@ -328,19 +371,45 @@ export const ChatRowContent = ({ : t("chat:fileOperations.didRead")}
-
+
{ vscode.postMessage({ type: "openFile", text: tool.content }) }}> {tool.path?.startsWith(".") && .} - + {removeLeadingNonAlphanumeric(tool.path ?? "") + "\u200E"} {tool.reason} -
- +
+
@@ -348,9 +417,9 @@ export const ChatRowContent = ({ case "fetchInstructions": return ( <> -
+
{toolIcon("file-code")} - {t("chat:instructions.wantsToFetch")} + {t("chat:instructions.wantsToFetch")}
-
+
{toolIcon("folder-opened")} - + {message.type === "ask" ? t("chat:directoryOperations.wantsToViewTopLevel") : t("chat:directoryOperations.didViewTopLevel")} @@ -383,9 +452,9 @@ export const ChatRowContent = ({ case "listFilesRecursive": return ( <> -
+
{toolIcon("folder-opened")} - + {message.type === "ask" ? t("chat:directoryOperations.wantsToViewRecursive") : t("chat:directoryOperations.didViewRecursive")} @@ -403,9 +472,9 @@ export const ChatRowContent = ({ case "listCodeDefinitionNames": return ( <> -
+
{toolIcon("file-code")} - + {message.type === "ask" ? t("chat:directoryOperations.wantsToViewDefinitions") : t("chat:directoryOperations.didViewDefinitions")} @@ -422,9 +491,9 @@ export const ChatRowContent = ({ case "searchFiles": return ( <> -
+
{toolIcon("search")} - + {message.type === "ask" ? ( -
+
{toolIcon("symbol-enum")} - + {message.type === "ask" ? ( <> {tool.reason ? ( @@ -495,9 +564,9 @@ export const ChatRowContent = ({ case "newTask": return ( <> -
+
{toolIcon("tasklist")} - + {tool.mode} }} @@ -538,9 +607,9 @@ export const ChatRowContent = ({ case "finishTask": return ( <> -
+
{toolIcon("check-all")} - {t("chat:subtasks.wantsToFinish")} + {t("chat:subtasks.wantsToFinish")}
-
+
{icon} {title} -

+

{apiRequestFailedMessage || apiReqStreamingFailedMessage} {apiRequestFailedMessage?.toLowerCase().includes("powershell") && ( <> @@ -823,22 +898,22 @@ export const ChatRowContent = ({ return ( <> {title && ( -

+
{icon} {title}
)} -

{message.text}

+

{message.text}

) case "completion_result": return ( <> -
+
{icon} {title}
-
+
@@ -848,8 +923,16 @@ export const ChatRowContent = ({ case "mcp_server_response": return ( <> -
-
{t("chat:response")}
+
+
+ {t("chat:response")} +
{title && ( -
+
{icon} {title}
)} -
+
@@ -888,17 +971,17 @@ export const ChatRowContent = ({ case "mistake_limit_reached": return ( <> -
+
{icon} {title}
-

{message.text}

+

{message.text}

) case "command": return ( <> -
+
{icon} {title}
@@ -916,11 +999,17 @@ export const ChatRowContent = ({ return ( <> -
+
{icon} {title}
-
+
{useMcpServer.type === "access_mcp_resource" && (
{useMcpServer.arguments && useMcpServer.arguments !== "{}" && ( -
-
+
+
{t("chat:arguments")}
-
+
{icon} {title}
-
+
@@ -996,15 +1091,15 @@ export const ChatRowContent = ({ return ( <> {title && ( -
+
{icon} {title}
)} -
-

- {message.partial === true ? message?.text : followUpData?.question} -

+
+
)}
0 ? "mt-0" : "", - )}> + className={` w-full flex flex-col gap-4 m-auto ${isExpanded && tasks.length > 0 ? "mt-0" : ""} px-3.5 min-[370px]:px-10 pt-5 transition-all duration-300`}> {telemetrySetting === "unset" && } {/* Show the task history preview if expanded and tasks exist */} @@ -1262,11 +1258,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction + the docs ), @@ -1328,7 +1320,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction
{ scrollToBottomSmooth() disableAutoScrollRef.current = false diff --git a/webview-ui/src/components/chat/CommandExecutionError.tsx b/webview-ui/src/components/chat/CommandExecutionError.tsx index b049877de0..3c8c6273c1 100644 --- a/webview-ui/src/components/chat/CommandExecutionError.tsx +++ b/webview-ui/src/components/chat/CommandExecutionError.tsx @@ -27,7 +27,10 @@ export const CommandExecutionError = () => { }} />
- + {t("chat:shellIntegration.troubleshooting")}
diff --git a/webview-ui/src/components/chat/ContextMenu.tsx b/webview-ui/src/components/chat/ContextMenu.tsx index ddb11ccf0d..27d53803a8 100644 --- a/webview-ui/src/components/chat/ContextMenu.tsx +++ b/webview-ui/src/components/chat/ContextMenu.tsx @@ -68,10 +68,18 @@ const ContextMenu: React.FC = ({ switch (option.type) { case ContextMenuOptionType.Mode: return ( -
- {option.label} +
+ {option.label} {option.description && ( - + {option.description} )} @@ -88,9 +96,17 @@ const ContextMenu: React.FC = ({ case ContextMenuOptionType.Git: if (option.value) { return ( -
- {option.label} - +
+ {option.label} + {option.description}
@@ -108,9 +124,29 @@ const ContextMenu: React.FC = ({ const filename = pathList.at(-1) const folderPath = pathList.slice(0, -1).join("/") return ( -
+
{filename} - + {folderPath}
@@ -161,32 +197,68 @@ const ContextMenu: React.FC = ({ return (
+ style={{ + backgroundColor: "var(--vscode-dropdown-background)", + border: "1px solid var(--vscode-editorGroup-border)", + borderRadius: "3px", + boxShadow: "0 4px 10px rgba(0, 0, 0, 0.25)", + zIndex: 1000, + display: "flex", + flexDirection: "column", + maxHeight: "200px", + overflowY: "auto", + }}> {filteredOptions && filteredOptions.length > 0 ? ( filteredOptions.map((option, index) => (
isOptionSelectable(option) && onSelect(option.type, option.value)} - className={`p-[4px_6px] text-vscode-dropdown-foreground flex items-center justify-between ${ - isOptionSelectable(option) ? "cursor-pointer" : "cursor-default" - } ${ - index === selectedIndex && isOptionSelectable(option) - ? "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground" - : "" - }`} + style={{ + padding: "4px 6px", + cursor: isOptionSelectable(option) ? "pointer" : "default", + color: "var(--vscode-dropdown-foreground)", + display: "flex", + alignItems: "center", + justifyContent: "space-between", + ...(index === selectedIndex && isOptionSelectable(option) + ? { + backgroundColor: "var(--vscode-list-activeSelectionBackground)", + color: "var(--vscode-list-activeSelectionForeground)", + } + : {}), + }} onMouseEnter={() => isOptionSelectable(option) && setSelectedIndex(index)}> -
+
{(option.type === ContextMenuOptionType.File || option.type === ContextMenuOptionType.Folder || option.type === ContextMenuOptionType.OpenedFile) && ( Mode )} {option.type !== ContextMenuOptionType.Mode && @@ -195,9 +267,13 @@ const ContextMenu: React.FC = ({ option.type !== ContextMenuOptionType.OpenedFile && getIconForOption(option) && ( )} {renderOptionContent(option)} @@ -206,12 +282,23 @@ const ContextMenu: React.FC = ({ option.type === ContextMenuOptionType.Folder || option.type === ContextMenuOptionType.Git) && !option.value && ( - + )}
)) ) : ( -
+
No results found
)} @@ -219,4 +306,5 @@ const ContextMenu: React.FC = ({
) } + export default ContextMenu diff --git a/webview-ui/src/components/chat/IconButton.tsx b/webview-ui/src/components/chat/IconButton.tsx index 31f47d844f..80f59ee74b 100644 --- a/webview-ui/src/components/chat/IconButton.tsx +++ b/webview-ui/src/components/chat/IconButton.tsx @@ -38,9 +38,9 @@ export const IconButton: React.FC = ({ diff --git a/webview-ui/src/components/chat/Markdown.tsx b/webview-ui/src/components/chat/Markdown.tsx index a9bb790d88..a209ce8723 100644 --- a/webview-ui/src/components/chat/Markdown.tsx +++ b/webview-ui/src/components/chat/Markdown.tsx @@ -1,14 +1,12 @@ import { memo, useState } from "react" import { VSCodeButton } from "@vscode/webview-ui-toolkit/react" -import { cn } from "@/lib/utils" import { useCopyToClipboard } from "@src/utils/clipboard" import MarkdownBlock from "../common/MarkdownBlock" export const Markdown = memo(({ markdown, partial }: { markdown?: string; partial?: boolean }) => { const [isHovering, setIsHovering] = useState(false) - const [copySuccess, setCopySuccess] = useState(false) // Shorter feedback duration for copy button flash. const { copyWithFeedback } = useCopyToClipboard(200) @@ -18,25 +16,43 @@ export const Markdown = memo(({ markdown, partial }: { markdown?: string; partia } return ( -
setIsHovering(true)} onMouseLeave={() => setIsHovering(false)} className="relative"> -
+
setIsHovering(true)} + onMouseLeave={() => setIsHovering(false)} + style={{ position: "relative" }}> +
{markdown && !partial && isHovering && ( -
+
+ { const success = await copyWithFeedback(markdown) if (success) { - setCopySuccess(true) - setTimeout(() => { - setCopySuccess(false) - }, 200) + const button = document.activeElement as HTMLElement + if (button) { + button.style.background = "var(--vscode-button-background)" + setTimeout(() => { + button.style.background = "" + }, 200) + } } }} title="Copy as markdown"> diff --git a/webview-ui/src/components/chat/ProgressIndicator.tsx b/webview-ui/src/components/chat/ProgressIndicator.tsx index 44d6c9dca1..da35c196e1 100644 --- a/webview-ui/src/components/chat/ProgressIndicator.tsx +++ b/webview-ui/src/components/chat/ProgressIndicator.tsx @@ -1,8 +1,15 @@ import { VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react" export const ProgressIndicator = () => ( -
-
+
+
diff --git a/webview-ui/src/components/common/CodeAccordian.tsx b/webview-ui/src/components/common/CodeAccordian.tsx index 0fe39dd239..e1ea77826e 100644 --- a/webview-ui/src/components/common/CodeAccordian.tsx +++ b/webview-ui/src/components/common/CodeAccordian.tsx @@ -1,7 +1,6 @@ import { memo, useMemo } from "react" import { getLanguageFromPath } from "@src/utils/getLanguageFromPath" -import { cn } from "@/lib/utils" -import CodeBlock from "./CodeBlock" +import CodeBlock, { CODE_BLOCK_BG_COLOR } from "./CodeBlock" import { ToolProgressStatus } from "@roo/shared/ExtensionMessage" import { VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react" @@ -47,31 +46,64 @@ const CodeAccordian = ({ ) return ( -
+
{(path || isFeedback || isConsoleLogs) && (
{isLoading && } {isFeedback || isConsoleLogs ? ( -
- - +
+ + {isFeedback ? "User Edits" : "Console Logs"}
) : ( <> {path?.startsWith(".") && .} - + {removeLeadingNonAlphanumeric(path ?? "") + "\u200E"} )} -
+
{progressStatus && progressStatus.text && ( <> {progressStatus.icon && } @@ -84,7 +116,12 @@ const CodeAccordian = ({
)} {(!(path || isFeedback || isConsoleLogs) || isExpanded) && ( -
+
void } -interface CodeBlockButtonProps extends React.ButtonHTMLAttributes { - children: React.ReactNode -} +const CodeBlockButton = styled.button` + background: transparent; + border: none; + color: var(--vscode-foreground); + cursor: var(--copy-button-cursor, default); + padding: 4px; + margin: 0 0px; + display: flex; + align-items: center; + justify-content: center; + opacity: 0.4; + border-radius: 3px; + pointer-events: var(--copy-button-events, none); + margin-left: 4px; + height: 24px; + width: 24px; -const CodeBlockButton = ({ children, ...props }: CodeBlockButtonProps) => { - return ( - - ) -} + &:hover { + background: var(--vscode-toolbar-hoverBackground); + opacity: 1; + } -interface CodeBlockButtonWrapperProps extends React.HTMLAttributes { - children: React.ReactNode -} + /* Style for Lucide icons to ensure consistent sizing and positioning */ + svg { + display: block; + } +` -const CodeBlockButtonWrapper = React.forwardRef( - ({ children, ...props }, ref) => { - return ( -
- {children} -
- ) - }, -) -CodeBlockButtonWrapper.displayName = "CodeBlockButtonWrapper" +const CodeBlockButtonWrapper = styled.div` + position: fixed; + top: var(--copy-button-top); + right: var(--copy-button-right, 8px); + height: auto; + z-index: 100; + background: ${CODE_BLOCK_BG_COLOR}${WRAPPER_ALPHA}; + overflow: visible; + pointer-events: none; + opacity: var(--copy-button-opacity, 0); + padding: 4px 6px; + border-radius: 3px; + display: inline-flex; + align-items: center; + justify-content: center; -interface CodeBlockContainerProps extends React.HTMLAttributes { - children: React.ReactNode - "data-partially-visible"?: boolean -} + &:hover { + background: var(--vscode-editor-background); + opacity: 1 !important; + } -const CodeBlockContainer = React.forwardRef( - ({ children, "data-partially-visible": partiallyVisible, ...props }, ref) => { - return ( -
- {children} -
- ) - }, -) -CodeBlockContainer.displayName = "CodeBlockContainer" + ${CodeBlockButton} { + position: relative; + top: 0; + right: 0; + } +` -interface StyledPreProps extends React.HTMLAttributes { +const CodeBlockContainer = styled.div` + position: relative; + overflow: hidden; + border-bottom: 4px solid var(--vscode-sideBar-background); + background-color: ${CODE_BLOCK_BG_COLOR}; + + ${CodeBlockButtonWrapper} { + opacity: 0; + pointer-events: none; + transition: opacity 0.2s; /* Keep opacity transition for buttons */ + } + + &[data-partially-visible="true"]:hover ${CodeBlockButtonWrapper} { + opacity: 1; + pointer-events: all; + cursor: pointer; + } +` + +export const StyledPre = styled.div<{ preStyle?: React.CSSProperties wordwrap?: "true" | "false" | undefined windowshade?: "true" | "false" collapsedHeight?: number - children: React.ReactNode -} +}>` + background-color: ${CODE_BLOCK_BG_COLOR}; + max-height: ${({ windowshade, collapsedHeight }) => + windowshade === "true" ? `${collapsedHeight || WINDOW_SHADE_SETTINGS.collapsedHeight}px` : "none"}; + overflow-y: auto; + padding: 10px; + // transition: max-height ${WINDOW_SHADE_SETTINGS.transitionDelayS} ease-out; + border-radius: 5px; + ${({ preStyle }) => preStyle && { ...preStyle }} -export const StyledPre = React.forwardRef( - ({ preStyle, wordwrap, windowshade, collapsedHeight, children, className, ...props }, ref) => { - return ( -
- {children} -
- ) - }, -) -StyledPre.displayName = "StyledPre" + pre { + background-color: ${CODE_BLOCK_BG_COLOR}; + border-radius: 5px; + margin: 0; + padding: 10px; + width: 100%; + box-sizing: border-box; + } -interface LanguageSelectProps extends React.SelectHTMLAttributes { - children: React.ReactNode -} -const LanguageSelect = ({ children, className, ...props }: LanguageSelectProps) => { - return ( - - ) -} + pre, + code { + /* Undefined wordwrap defaults to true (pre-wrap) behavior */ + white-space: ${({ wordwrap }) => (wordwrap === "false" ? "pre" : "pre-wrap")}; + word-break: ${({ wordwrap }) => (wordwrap === "false" ? "normal" : "normal")}; + overflow-wrap: ${({ wordwrap }) => (wordwrap === "false" ? "normal" : "break-word")}; + font-size: var(--vscode-editor-font-size, var(--vscode-font-size, 12px)); + font-family: var(--vscode-editor-font-family); + } + + pre > code { + .hljs-deletion { + background-color: var(--vscode-diffEditor-removedTextBackground); + display: inline-block; + width: 100%; + } + .hljs-addition { + background-color: var(--vscode-diffEditor-insertedTextBackground); + display: inline-block; + width: 100%; + } + } + + .hljs { + color: var(--vscode-editor-foreground, #fff); + background-color: ${CODE_BLOCK_BG_COLOR}; + } +` + +const LanguageSelect = styled.select` + font-size: 12px; + color: var(--vscode-foreground); + opacity: 0.4; + font-family: monospace; + appearance: none; + background: transparent; + border: none; + cursor: pointer; + padding: 4px; + margin: 0; + vertical-align: middle; + height: 24px; + + & option { + background: var(--vscode-editor-background); + color: var(--vscode-foreground); + padding: 0; + margin: 0; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: var(--vscode-scrollbarSlider-background); + } + + &::-webkit-scrollbar-track { + background: var(--vscode-editor-background); + } + + &:hover { + opacity: 1; + background: var(--vscode-toolbar-hoverBackground); + border-radius: 3px; + } + + &:focus { + opacity: 1; + outline: none; + border-radius: 3px; + } +` const CodeBlock = memo( ({ @@ -180,7 +243,7 @@ const CodeBlock = memo( // Syntax highlighting with cached Shiki instance useEffect(() => { - const fallback = `
${source || ""}
` + const fallback = `
${source || ""}
` const highlight = async () => { // Show plain text if language needs to be loaded if (currentLanguage && !isLanguageLoaded(currentLanguage)) { @@ -194,7 +257,7 @@ const CodeBlock = memo( transformers: [ { pre(node) { - node.properties.class = "p-0 m-0" + node.properties.style = "padding: 0; margin: 0;" return node }, code(node) { @@ -557,7 +620,7 @@ const CodeBlock = memo( updateCodeBlockButtonPosition()} - className="gap-0"> + style={{ gap: 0 }}> {language && ( + style={{ fontWeight: "bold", textAlign: "left", fontSize: "1.2em" }}> {normalizeLanguage(language)} ) @@ -595,12 +658,13 @@ const CodeBlock = memo( ) diff --git a/webview-ui/src/components/common/MarkdownBlock.tsx b/webview-ui/src/components/common/MarkdownBlock.tsx index de8e10110a..a9c5ada19a 100644 --- a/webview-ui/src/components/common/MarkdownBlock.tsx +++ b/webview-ui/src/components/common/MarkdownBlock.tsx @@ -1,5 +1,6 @@ -import React, { memo, useEffect, FC, PropsWithChildren } from "react" +import React, { memo, useEffect } from "react" import { useRemark } from "react-remark" +import styled from "styled-components" import { visit } from "unist-util-visit" import { vscode } from "@src/utils/vscode" @@ -54,45 +55,71 @@ const remarkUrlToLink = () => { } } -const StyledMarkdown: FC> = ({ children }) => { - // Note: Tailwind doesn't have a direct equivalent for targeting based on body data attributes like `body[data-vscode-theme-kind="vscode-high-contrast"]`. - // This specific high-contrast styling might need to be handled differently, possibly via a theme-aware context or by adding a class to this component when high contrast is active. - // For now, the general styles are applied. - return ( -
- {children} -
- ) -} +const StyledMarkdown = styled.div` + code:not(pre > code) { + font-family: var(--vscode-editor-font-family, monospace); + filter: saturation(110%) brightness(95%); + color: var(--vscode-textPreformat-foreground) !important; + background-color: var(--vscode-textPreformat-background) !important; + padding: 0px 2px; + white-space: pre-line; + word-break: break-word; + overflow-wrap: anywhere; + } + + /* Target only Dark High Contrast theme using the data attribute VS Code adds to the body */ + body[data-vscode-theme-kind="vscode-high-contrast"] & code:not(pre > code) { + color: var( + --vscode-editorInlayHint-foreground, + var(--vscode-symbolIcon-stringForeground, var(--vscode-charts-orange, #e9a700)) + ); + } + + font-family: + var(--vscode-font-family), + system-ui, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + Oxygen, + Ubuntu, + Cantarell, + "Open Sans", + "Helvetica Neue", + sans-serif; + + font-size: var(--vscode-font-size, 13px); + + p, + li, + ol, + ul { + line-height: 1.25; + } + + ol, + ul { + padding-left: 2.5em; + margin-left: 0; + } + + p { + white-space: pre-wrap; + } + + a { + color: var(--vscode-textLink-foreground); + text-decoration-line: underline; + text-decoration-style: dotted; + text-decoration-color: var(--vscode-textLink-foreground); + &:hover { + color: var(--vscode-textLink-activeForeground); + text-decoration-style: solid; + text-decoration-color: var(--vscode-textLink-activeForeground); + } + } +` const MarkdownBlock = memo(({ markdown }: MarkdownBlockProps) => { const { theme } = useExtensionState() @@ -201,7 +228,7 @@ const MarkdownBlock = memo(({ markdown }: MarkdownBlockProps) => { }, [markdown, setMarkdown, theme]) return ( -
+
{reactContent}
) diff --git a/webview-ui/src/components/common/MermaidBlock.tsx b/webview-ui/src/components/common/MermaidBlock.tsx index 0c93920e62..d44d51b5f9 100644 --- a/webview-ui/src/components/common/MermaidBlock.tsx +++ b/webview-ui/src/components/common/MermaidBlock.tsx @@ -1,11 +1,11 @@ -import React, { useEffect, useRef, useState } from "react" +import { useEffect, useRef, useState } from "react" import mermaid from "mermaid" import { useDebounceEffect } from "@src/utils/useDebounceEffect" +import styled from "styled-components" import { vscode } from "@src/utils/vscode" import { useAppTranslation } from "@src/i18n/TranslationContext" import { useCopyToClipboard } from "@src/utils/clipboard" import CodeBlock from "./CodeBlock" -import { cn } from "@/lib/utils" const MERMAID_THEME = { background: "#1e1e1e", // VS Code dark theme background @@ -152,18 +152,37 @@ export default function MermaidBlock({ code }: MermaidBlockProps) { {isLoading && {t("common:mermaid.loading")}} {error ? ( -
+
setIsErrorExpanded(!isErrorExpanded)}> -
- - {t("common:mermaid.render_error")} +
+ + {t("common:mermaid.render_error")}
-
+
{ e.stopPropagation() @@ -176,14 +195,21 @@ export default function MermaidBlock({ code }: MermaidBlockProps) {
{isErrorExpanded && ( -
-
{error}
+
+
+ {error} +
)}
) : ( - + )} ) @@ -240,40 +266,44 @@ async function svgToPng(svgEl: SVGElement): Promise { }) } -const MermaidBlockContainer: React.FC<{ children: React.ReactNode }> = ({ children }) => { - return
{children}
+const MermaidBlockContainer = styled.div` + position: relative; + margin: 8px 0; +` + +const LoadingMessage = styled.div` + padding: 8px 0; + color: var(--vscode-descriptionForeground); + font-style: italic; + font-size: 0.9em; +` + +const CopyButton = styled.button` + padding: 3px; + height: 24px; + margin-right: 4px; + color: var(--vscode-editor-foreground); + display: flex; + align-items: center; + justify-content: center; + background: transparent; + border: none; + cursor: pointer; + + &:hover { + opacity: 0.8; + } +` + +interface SvgContainerProps { + $isLoading: boolean } -const LoadingMessage: React.FC<{ children: React.ReactNode }> = ({ children }) => { - return
{children}
-} - -const CopyButton: React.FC> = ({ children, ...props }) => { - return ( - - ) -} - -interface SvgContainerProps extends React.HTMLAttributes { - isLoading: boolean - children?: React.ReactNode -} - -const SvgContainer = React.forwardRef(({ isLoading, children, ...props }, ref) => { - return ( -
- {children} -
- ) -}) -SvgContainer.displayName = "SvgContainer" +const SvgContainer = styled.div` + opacity: ${(props) => (props.$isLoading ? 0.3 : 1)}; + min-height: 20px; + transition: opacity 0.2s ease; + cursor: pointer; + display: flex; + justify-content: center; +` diff --git a/webview-ui/src/components/common/TelemetryBanner.tsx b/webview-ui/src/components/common/TelemetryBanner.tsx index 156ec3704c..dac980489c 100644 --- a/webview-ui/src/components/common/TelemetryBanner.tsx +++ b/webview-ui/src/components/common/TelemetryBanner.tsx @@ -1,10 +1,29 @@ import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" import { memo, useState } from "react" +import styled from "styled-components" import { vscode } from "@src/utils/vscode" import { TelemetrySetting } from "@roo/shared/TelemetrySetting" import { useAppTranslation } from "@src/i18n/TranslationContext" import { Trans } from "react-i18next" -import { cn } from "@/lib/utils" + +const BannerContainer = styled.div` + background-color: var(--vscode-banner-background); + padding: 12px 20px; + display: flex; + flex-direction: column; + gap: 10px; + flex-shrink: 0; + margin-bottom: 6px; +` + +const ButtonContainer = styled.div` + display: flex; + gap: 8px; + width: 100%; + & > vscode-button { + flex: 1; + } +` const TelemetryBanner = () => { const { t } = useAppTranslation() @@ -29,7 +48,7 @@ const TelemetryBanner = () => { } return ( -
+
{t("welcome:telemetry.title")}
@@ -45,15 +64,15 @@ const TelemetryBanner = () => {
-
- + + {t("welcome:telemetry.allow")} - + {t("welcome:telemetry.deny")} -
-
+ + ) } diff --git a/webview-ui/src/components/common/Thumbnails.tsx b/webview-ui/src/components/common/Thumbnails.tsx index f3097cc01f..acdf5f4295 100644 --- a/webview-ui/src/components/common/Thumbnails.tsx +++ b/webview-ui/src/components/common/Thumbnails.tsx @@ -37,24 +37,56 @@ const Thumbnails = ({ images, style, setImages, onHeightChange }: ThumbnailsProp } return ( -
+
{images.map((image, index) => (
setHoveredIndex(index)} onMouseLeave={() => setHoveredIndex(null)}> {`Thumbnail handleImageClick(image)} /> {isDeletable && hoveredIndex === index && (
handleDelete(index)} - className="absolute -top-1 -right-1 w-[13px] h-[13px] rounded-full bg-vscode-badge-background flex justify-center items-center cursor-pointer"> - + style={{ + position: "absolute", + top: -4, + right: -4, + width: 13, + height: 13, + borderRadius: "50%", + backgroundColor: "var(--vscode-badge-background)", + display: "flex", + justifyContent: "center", + alignItems: "center", + cursor: "pointer", + }}> +
)}
diff --git a/webview-ui/src/components/common/VSCodeButtonLink.tsx b/webview-ui/src/components/common/VSCodeButtonLink.tsx index 819e8f4065..d0cd6b1c97 100644 --- a/webview-ui/src/components/common/VSCodeButtonLink.tsx +++ b/webview-ui/src/components/common/VSCodeButtonLink.tsx @@ -8,7 +8,12 @@ interface VSCodeButtonLinkProps { } export const VSCodeButtonLink = ({ href, children, ...props }: VSCodeButtonLinkProps) => ( - + {children} ) diff --git a/webview-ui/src/components/history/HistoryPreview.tsx b/webview-ui/src/components/history/HistoryPreview.tsx index f290b1ae58..080cbff3e2 100644 --- a/webview-ui/src/components/history/HistoryPreview.tsx +++ b/webview-ui/src/components/history/HistoryPreview.tsx @@ -29,11 +29,13 @@ const HistoryPreview = () => {
{item.task}
diff --git a/webview-ui/src/components/history/HistoryView.tsx b/webview-ui/src/components/history/HistoryView.tsx index 2950aa8a65..bcb86a8d13 100644 --- a/webview-ui/src/components/history/HistoryView.tsx +++ b/webview-ui/src/components/history/HistoryView.tsx @@ -99,7 +99,7 @@ const HistoryView = ({ onDone }: HistoryViewProps) => {
{ setSortOption("mostRelevant") } }}> -
+
{searchQuery && (
setSearchQuery("")} slot="end" + style={{ + display: "flex", + justifyContent: "center", + alignItems: "center", + height: "100%", + }} /> )} setSortOption((e.target as HTMLInputElement).value as SortOption)}> @@ -142,7 +152,7 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { value="mostRelevant" disabled={!searchQuery} data-testid="radio-most-relevant" - className={searchQuery ? "opacity-100" : "opacity-50"}> + style={{ opacity: searchQuery ? 1 : 0.5 }}> {t("history:mostRelevant")} @@ -187,7 +197,10 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { {
-
+
-
- + style={{ + display: "flex", + justifyContent: "space-between", + alignItems: "center", + }}> +
+ {t("history:tokensLabel")} - + style={{ + display: "flex", + alignItems: "center", + gap: "3px", + color: "var(--vscode-descriptionForeground)", + }}> + {formatLargeNumber(item.tokensIn || 0)} - + style={{ + display: "flex", + alignItems: "center", + gap: "3px", + color: "var(--vscode-descriptionForeground)", + }}> + {formatLargeNumber(item.tokensOut || 0)}
@@ -302,32 +358,75 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { {!!item.cacheWrites && (
- + style={{ + display: "flex", + alignItems: "center", + gap: "4px", + flexWrap: "wrap", + }}> + {t("history:cacheLabel")} - + style={{ + display: "flex", + alignItems: "center", + gap: "3px", + color: "var(--vscode-descriptionForeground)", + }}> + +{formatLargeNumber(item.cacheWrites || 0)} - + style={{ + display: "flex", + alignItems: "center", + gap: "3px", + color: "var(--vscode-descriptionForeground)", + }}> + {formatLargeNumber(item.cacheReads || 0)}
)} {!!item.totalCost && ( -
-
- +
+
+ {t("history:apiCostLabel")} - + ${item.totalCost?.toFixed(4)}
diff --git a/webview-ui/src/components/mcp/McpEnabledToggle.tsx b/webview-ui/src/components/mcp/McpEnabledToggle.tsx index 2aae120377..648cb77142 100644 --- a/webview-ui/src/components/mcp/McpEnabledToggle.tsx +++ b/webview-ui/src/components/mcp/McpEnabledToggle.tsx @@ -16,11 +16,18 @@ const McpEnabledToggle = () => { } return ( -
+
- {t("mcp:enableToggle.title")} + {t("mcp:enableToggle.title")} -

{t("mcp:enableToggle.description")}

+

+ {t("mcp:enableToggle.description")} +

) } diff --git a/webview-ui/src/components/mcp/McpResourceRow.tsx b/webview-ui/src/components/mcp/McpResourceRow.tsx index a28898bef3..b31082dafb 100644 --- a/webview-ui/src/components/mcp/McpResourceRow.tsx +++ b/webview-ui/src/components/mcp/McpResourceRow.tsx @@ -9,12 +9,26 @@ const McpResourceRow = ({ item }: McpResourceRowProps) => { const uri = hasUri ? item.uri : item.uriTemplate return ( -
-
- - {uri} +
+
+ + {uri}
-
+
{item.name && item.description ? `${item.name}: ${item.description}` : !item.name && item.description @@ -23,9 +37,18 @@ const McpResourceRow = ({ item }: McpResourceRowProps) => { ? item.name : "No description"}
-
- Returns - +
+ Returns + {item.mimeType || "Unknown"}
diff --git a/webview-ui/src/components/mcp/McpToolRow.tsx b/webview-ui/src/components/mcp/McpToolRow.tsx index adce4e5324..2cab9b31ee 100644 --- a/webview-ui/src/components/mcp/McpToolRow.tsx +++ b/webview-ui/src/components/mcp/McpToolRow.tsx @@ -24,14 +24,18 @@ const McpToolRow = ({ tool, serverName, serverSource, alwaysAllowMcp }: McpToolR } return ( -
+
e.stopPropagation()}> -
- - {tool.name} +
+ + {tool.name}
{serverName && alwaysAllowMcp && ( @@ -39,12 +43,32 @@ const McpToolRow = ({ tool, serverName, serverSource, alwaysAllowMcp }: McpToolR )}
- {tool.description &&
{tool.description}
} + {tool.description && ( +
+ {tool.description} +
+ )} {tool.inputSchema && "properties" in tool.inputSchema && Object.keys(tool.inputSchema.properties as Record).length > 0 && ( -
-
{t("mcp:tool.parameters")}
+
+
+ {t("mcp:tool.parameters")} +
{Object.entries(tool.inputSchema.properties as Record).map( ([paramName, schema]) => { const isRequired = @@ -54,12 +78,29 @@ const McpToolRow = ({ tool, serverName, serverSource, alwaysAllowMcp }: McpToolR tool.inputSchema.required.includes(paramName) return ( -
- +
+ {paramName} - {isRequired && *} + {isRequired && ( + * + )} - + {schema.description || t("mcp:tool.noDescription")}
@@ -71,4 +112,5 @@ const McpToolRow = ({ tool, serverName, serverSource, alwaysAllowMcp }: McpToolR
) } + export default McpToolRow diff --git a/webview-ui/src/components/mcp/McpView.tsx b/webview-ui/src/components/mcp/McpView.tsx index 87648b61f4..b03be6500b 100644 --- a/webview-ui/src/components/mcp/McpView.tsx +++ b/webview-ui/src/components/mcp/McpView.tsx @@ -23,7 +23,6 @@ import { DialogDescription, DialogFooter, } from "@src/components/ui" -import { cn } from "@/lib/utils" // Import cn utility import { Tab, TabContent, TabHeader } from "../common/Tab" @@ -55,12 +54,20 @@ const McpView = ({ onDone }: McpViewProps) => { -
+
- + Model Context Protocol - + community-made servers @@ -70,23 +77,28 @@ const McpView = ({ onDone }: McpViewProps) => { {mcpEnabled && ( <> -
+
{ setEnableMcpServerCreation(e.target.checked) vscode.postMessage({ type: "enableMcpServerCreation", bool: e.target.checked }) }}> - {t("mcp:enableServerCreation.title")} + {t("mcp:enableServerCreation.title")} -

+

{t("mcp:enableServerCreation.description")}

{/* Server List */} {servers.length > 0 && ( -
+
{servers.map((server) => ( { )} {/* Edit Settings Buttons */} -
+
@@ -145,6 +157,17 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM { value: 3600, label: t("mcp:networkTimeout.options.60minutes") }, ] + const getStatusColor = () => { + switch (server.status) { + case "connected": + return "var(--vscode-testing-iconPassed)" + case "connecting": + return "var(--vscode-charts-yellow)" + case "disconnected": + return "var(--vscode-testing-iconFailed)" + } + } + const handleRowClick = () => { if (server.status === "connected") { setIsExpanded(!isExpanded) @@ -180,48 +203,74 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM } return ( -
+
{server.status === "connected" && ( - + )} - + {server.name} {server.source && ( - + {server.source} )} -
e.stopPropagation()}> -
{ vscode.postMessage({ type: "toggleMcpServer", @@ -242,26 +291,40 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM } }}>
{server.status === "connected" ? ( isExpanded && ( -
- +
+ {t("mcp:tabs.tools")} ({server.tools?.length || 0}) @@ -275,7 +338,8 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM {server.tools && server.tools.length > 0 ? ( -
+
{server.tools.map((tool) => ( ) : ( -
+
{t("mcp:emptyState.noTools")}
)} @@ -296,7 +360,8 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM {(server.resources && server.resources.length > 0) || (server.resourceTemplates && server.resourceTemplates.length > 0) ? ( -
+
{[...(server.resourceTemplates || []), ...(server.resources || [])].map( (item) => ( ) : ( -
+
{t("mcp:emptyState.noResources")}
)} @@ -315,7 +380,8 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM {server.errorHistory && server.errorHistory.length > 0 ? ( -
+
{[...server.errorHistory] .sort((a, b) => b.timestamp - a.timestamp) .map((error, index) => ( @@ -323,7 +389,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM ))}
) : ( -
+
{t("mcp:emptyState.noErrors")}
)} @@ -331,13 +397,28 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM {/* Network Timeout */} -
-
+
+
{t("mcp:networkTimeout.label")}
- + {t("mcp:networkTimeout.description")}
) ) : ( -
-
+
+
{server.error && server.error.split("\n").map((item, index) => ( @@ -366,7 +465,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM appearance="secondary" onClick={handleRestart} disabled={server.status === "connecting"} - className="w-[calc(100%-20px)] mx-[10px] mb-[10px]"> + style={{ width: "calc(100% - 20px)", margin: "0 10px 10px 10px" }}> {server.status === "connecting" ? "Retrying..." : "Retry Connection"}
diff --git a/webview-ui/src/components/prompts/PromptsView.tsx b/webview-ui/src/components/prompts/PromptsView.tsx index 8889591ddd..c494387042 100644 --- a/webview-ui/src/components/prompts/PromptsView.tsx +++ b/webview-ui/src/components/prompts/PromptsView.tsx @@ -434,14 +434,14 @@ const PromptsView = ({ onDone }: PromptsViewProps) => { return ( -

{t("prompts:title")}

+

{t("prompts:title")}

e.stopPropagation()} className="flex justify-between items-center mb-3"> -

{t("prompts:modes.title")}

+

{t("prompts:modes.title")}

)}
-
+
{t("prompts:roleDefinition.description")}