diff --git a/locales/ca/README.md b/locales/ca/README.md index c653f54fbbb..871c295cacb 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -196,25 +196,25 @@ Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Llicència diff --git a/locales/de/README.md b/locales/de/README.md index 24f1e4d69e5..c5b19d46af7 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -196,25 +196,25 @@ Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Lizenz diff --git a/locales/es/README.md b/locales/es/README.md index adeca0a876c..efd25ae17d7 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -196,25 +196,25 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licencia diff --git a/locales/fr/README.md b/locales/fr/README.md index 80140b85fb1..893e73cfa07 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -196,25 +196,25 @@ Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licence diff --git a/locales/hi/README.md b/locales/hi/README.md index 9f20242d899..3b99b0d1bd8 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -196,25 +196,25 @@ Roo Code को बेहतर बनाने में मदद करने |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## लाइसेंस diff --git a/locales/id/README.md b/locales/id/README.md index 3381b865b01..dc370288844 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -190,25 +190,25 @@ Terima kasih kepada semua kontributor kami yang telah membantu membuat Roo Code |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## License diff --git a/locales/it/README.md b/locales/it/README.md index 964db4ff347..e69005f1ca0 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -196,25 +196,25 @@ Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licenza diff --git a/locales/ja/README.md b/locales/ja/README.md index 90c32409fcc..4cabfc4a377 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -196,25 +196,25 @@ Roo Codeの改善に貢献してくれたすべての貢献者に感謝します |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## ライセンス diff --git a/locales/ko/README.md b/locales/ko/README.md index dce892ffb9e..c86eb7d3cb9 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -196,25 +196,25 @@ Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사 |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 라이선스 diff --git a/locales/nl/README.md b/locales/nl/README.md index 7ca8251e73f..0ccca95cebf 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -196,25 +196,25 @@ Dank aan alle bijdragers die Roo Code beter hebben gemaakt! |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licentie diff --git a/locales/pl/README.md b/locales/pl/README.md index 351d755a295..608fd861700 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -196,25 +196,25 @@ Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licencja diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index d773d8fcca5..e75746682a9 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -196,25 +196,25 @@ Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melho |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licença diff --git a/locales/ru/README.md b/locales/ru/README.md index 368a70a9865..fba6d2193a2 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -196,25 +196,25 @@ code --install-extension bin/roo-cline-.vsix |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Лицензия diff --git a/locales/tr/README.md b/locales/tr/README.md index 6a039e79b11..a9cb0b5153e 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -196,25 +196,25 @@ Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara te |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Lisans diff --git a/locales/vi/README.md b/locales/vi/README.md index 2e59bb759f7..dceb7c4de18 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -196,25 +196,25 @@ Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo C |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Giấy Phép diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index dc8b3389418..d2303ef31ec 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -196,25 +196,25 @@ code --install-extension bin/roo-cline-.vsix |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 许可证 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 85dfce876b5..8e709bacb23 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -197,25 +197,25 @@ code --install-extension bin/roo-cline-.vsix |Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| |taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| |teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| -|yt3trees
yt3trees
|benzntech
benzntech
|axkirillov
axkirillov
|anton-otee
anton-otee
|bramburn
bramburn
|olearycrew
olearycrew
| -|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|SplittyDev
SplittyDev
| -|mdp
mdp
|napter
napter
|ross
ross
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
| -|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
| -|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
| -|tgfjt
tgfjt
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
| -|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
| -|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|kohii
kohii
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
| -|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
|thecolorblue
thecolorblue
| -|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| -|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| -|AMHesch
AMHesch
|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| |SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| -|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| -|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| -|celestial-vault
celestial-vault
| | | | | | +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 授權 diff --git a/packages/telemetry/src/TelemetryService.ts b/packages/telemetry/src/TelemetryService.ts index 728809f8bdc..7a11e3d3885 100644 --- a/packages/telemetry/src/TelemetryService.ts +++ b/packages/telemetry/src/TelemetryService.ts @@ -152,6 +152,31 @@ export class TelemetryService { this.captureEvent(TelemetryEventName.CONSECUTIVE_MISTAKE_ERROR, { taskId }) } + /** + * Captures when a tab is shown due to user action + * @param tab The tab that was shown + */ + public captureTabShown(tab: string): void { + this.captureEvent(TelemetryEventName.TAB_SHOWN, { tab }) + } + + /** + * Captures when a setting is changed in ModesView + * @param settingName The name of the setting that was changed + */ + public captureModeSettingChanged(settingName: string): void { + this.captureEvent(TelemetryEventName.MODE_SETTINGS_CHANGED, { settingName }) + } + + /** + * Captures when a user creates a new custom mode + * @param modeSlug The slug of the custom mode + * @param modeName The name of the custom mode + */ + public captureCustomModeCreated(modeSlug: string, modeName: string): void { + this.captureEvent(TelemetryEventName.CUSTOM_MODE_CREATED, { modeSlug, modeName }) + } + /** * Captures a marketplace item installation event * @param itemId The unique identifier of the marketplace item diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index bfd071a7555..e713cafa4c7 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -104,6 +104,7 @@ export const globalSettingsSchema = z.object({ enhancementApiConfigId: z.string().optional(), historyPreviewCollapsed: z.boolean().optional(), profileThresholds: z.record(z.string(), z.number()).optional(), + hasOpenedModeSelector: z.boolean().optional(), }) export type GlobalSettings = z.infer diff --git a/packages/types/src/mode.ts b/packages/types/src/mode.ts index dfe95f8d7ef..175ec095fc2 100644 --- a/packages/types/src/mode.ts +++ b/packages/types/src/mode.ts @@ -66,6 +66,7 @@ export const modeConfigSchema = z.object({ name: z.string().min(1, "Name is required"), roleDefinition: z.string().min(1, "Role definition is required"), whenToUse: z.string().optional(), + description: z.string().optional(), customInstructions: z.string().optional(), groups: groupEntryArraySchema, source: z.enum(["global", "project"]).optional(), @@ -106,6 +107,7 @@ export type CustomModesSettings = z.infer export const promptComponentSchema = z.object({ roleDefinition: z.string().optional(), whenToUse: z.string().optional(), + description: z.string().optional(), customInstructions: z.string().optional(), }) diff --git a/packages/types/src/telemetry.ts b/packages/types/src/telemetry.ts index 7ac38cdd863..231bf11e3f0 100644 --- a/packages/types/src/telemetry.ts +++ b/packages/types/src/telemetry.ts @@ -31,6 +31,10 @@ export enum TelemetryEventName { CHECKPOINT_RESTORED = "Checkpoint Restored", CHECKPOINT_DIFFED = "Checkpoint Diffed", + TAB_SHOWN = "Tab Shown", + MODE_SETTINGS_CHANGED = "Mode Setting Changed", + CUSTOM_MODE_CREATED = "Custom Mode Created", + CONTEXT_CONDENSED = "Context Condensed", SLIDING_WINDOW_TRUNCATION = "Sliding Window Truncation", @@ -119,6 +123,9 @@ export const rooCodeTelemetryEventSchema = z.discriminatedUnion("type", [ TelemetryEventName.CONSECUTIVE_MISTAKE_ERROR, TelemetryEventName.CONTEXT_CONDENSED, TelemetryEventName.SLIDING_WINDOW_TRUNCATION, + TelemetryEventName.TAB_SHOWN, + TelemetryEventName.MODE_SETTINGS_CHANGED, + TelemetryEventName.CUSTOM_MODE_CREATED, ]), properties: telemetryPropertiesSchema, }), diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index dff2263a062..f6590fd421f 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1485,6 +1485,7 @@ export class ClineProvider }, mdmCompliant: this.checkMdmCompliance(), profileThresholds: profileThresholds ?? {}, + hasOpenedModeSelector: this.getGlobalState("hasOpenedModeSelector") ?? false, } } diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index fabb0aae60b..6ac5c1464a2 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -523,6 +523,7 @@ describe("ClineProvider", () => { cloudIsAuthenticated: false, sharingEnabled: false, profileThresholds: {}, + hasOpenedModeSelector: false, } const message: ExtensionMessage = { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index f689196d793..0c622eacc09 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -942,8 +942,27 @@ export const webviewMessageHandler = async ( const updatedPrompts = { ...existingPrompts, [message.promptMode]: message.customPrompt } await updateGlobalState("customModePrompts", updatedPrompts) const currentState = await provider.getStateToPostToWebview() - const stateWithPrompts = { ...currentState, customModePrompts: updatedPrompts } + const stateWithPrompts = { + ...currentState, + customModePrompts: updatedPrompts, + hasOpenedModeSelector: currentState.hasOpenedModeSelector ?? false, + } provider.postMessageToWebview({ type: "state", state: stateWithPrompts }) + + if (TelemetryService.hasInstance()) { + // Determine which setting was changed by comparing objects + const oldPrompt = existingPrompts[message.promptMode] || {} + const newPrompt = message.customPrompt + const changedSettings = Object.keys(newPrompt).filter( + (key) => + JSON.stringify((oldPrompt as Record)[key]) !== + JSON.stringify((newPrompt as Record)[key]), + ) + + if (changedSettings.length > 0) { + TelemetryService.instance.captureModeSettingChanged(changedSettings[0]) + } + } } break case "deleteMessage": { @@ -1079,6 +1098,10 @@ export const webviewMessageHandler = async ( await updateGlobalState("showRooIgnoredFiles", message.bool ?? true) await provider.postStateToWebview() break + case "hasOpenedModeSelector": + await updateGlobalState("hasOpenedModeSelector", message.bool ?? true) + await provider.postStateToWebview() + break case "maxReadFileLine": await updateGlobalState("maxReadFileLine", message.value) await provider.postStateToWebview() @@ -1408,12 +1431,41 @@ export const webviewMessageHandler = async ( break case "updateCustomMode": if (message.modeConfig) { + // Check if this is a new mode or an update to an existing mode + const existingModes = await provider.customModesManager.getCustomModes() + const isNewMode = !existingModes.some((mode) => mode.slug === message.modeConfig?.slug) + await provider.customModesManager.updateCustomMode(message.modeConfig.slug, message.modeConfig) // Update state after saving the mode const customModes = await provider.customModesManager.getCustomModes() await updateGlobalState("customModes", customModes) await updateGlobalState("mode", message.modeConfig.slug) await provider.postStateToWebview() + + // Track telemetry for custom mode creation or update + if (TelemetryService.hasInstance()) { + if (isNewMode) { + // This is a new custom mode + TelemetryService.instance.captureCustomModeCreated( + message.modeConfig.slug, + message.modeConfig.name, + ) + } else { + // Determine which setting was changed by comparing objects + const existingMode = existingModes.find((mode) => mode.slug === message.modeConfig?.slug) + const changedSettings = existingMode + ? Object.keys(message.modeConfig).filter( + (key) => + JSON.stringify((existingMode as Record)[key]) !== + JSON.stringify((message.modeConfig as Record)[key]), + ) + : [] + + if (changedSettings.length > 0) { + TelemetryService.instance.captureModeSettingChanged(changedSettings[0]) + } + } + } } break case "deleteCustomMode": @@ -1598,6 +1650,7 @@ export const webviewMessageHandler = async ( ) await provider.postStateToWebview() console.log(`Marketplace item installed and config file opened: ${configFilePath}`) + // Send success message to webview provider.postMessageToWebview({ type: "marketplaceInstallResult", @@ -1650,7 +1703,11 @@ export const webviewMessageHandler = async ( case "switchTab": { if (message.tab) { - // Send a message to the webview to switch to the specified tab + // Capture tab shown event for all switchTab messages (which are user-initiated) + if (TelemetryService.hasInstance()) { + TelemetryService.instance.captureTabShown(message.tab) + } + await provider.postMessageToWebview({ type: "action", action: "switchTab", tab: message.tab }) } break diff --git a/src/package.json b/src/package.json index bb4a784173b..2e2de2daa9c 100644 --- a/src/package.json +++ b/src/package.json @@ -80,11 +80,6 @@ "title": "%command.mcpServers.title%", "icon": "$(server)" }, - { - "command": "roo-cline.promptsButtonClicked", - "title": "%command.prompts.title%", - "icon": "$(organization)" - }, { "command": "roo-cline.historyButtonClicked", "title": "%command.history.title%", @@ -219,39 +214,34 @@ "group": "navigation@1", "when": "view == roo-cline.SidebarProvider" }, - { - "command": "roo-cline.promptsButtonClicked", - "group": "navigation@2", - "when": "view == roo-cline.SidebarProvider" - }, { "command": "roo-cline.mcpButtonClicked", - "group": "navigation@3", + "group": "navigation@2", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.historyButtonClicked", - "group": "navigation@5", + "group": "navigation@4", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.popoutButtonClicked", - "group": "navigation@6", + "group": "navigation@5", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.accountButtonClicked", - "group": "navigation@7", + "group": "navigation@6", "when": "view == roo-cline.SidebarProvider && config.roo-cline.rooCodeCloudEnabled" }, { "command": "roo-cline.settingsButtonClicked", - "group": "navigation@8", + "group": "navigation@7", "when": "view == roo-cline.SidebarProvider" } ], @@ -261,34 +251,29 @@ "group": "navigation@1", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, - { - "command": "roo-cline.promptsButtonClicked", - "group": "navigation@2", - "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" - }, { "command": "roo-cline.mcpButtonClicked", - "group": "navigation@3", + "group": "navigation@2", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.historyButtonClicked", - "group": "navigation@5", + "group": "navigation@4", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.accountButtonClicked", - "group": "navigation@6", + "group": "navigation@5", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider && config.roo-cline.rooCodeCloudEnabled" }, { "command": "roo-cline.settingsButtonClicked", - "group": "navigation@7", + "group": "navigation@6", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" } ] diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 9a2c9230bd7..b6b7a02f91b 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -261,6 +261,7 @@ export type ExtensionState = Pick< marketplaceItems?: MarketplaceItem[] marketplaceInstalledMetadata?: { project: Record; global: Record } profileThresholds: Record + hasOpenedModeSelector: boolean } export interface ClineSayTool { diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index dcded2a69d9..b475f3a014e 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -148,6 +148,7 @@ export interface WebviewMessage { | "searchFiles" | "toggleApiConfigPin" | "setHistoryPreviewCollapsed" + | "hasOpenedModeSelector" | "accountButtonClicked" | "rooCloudSignIn" | "rooCloudSignOut" diff --git a/src/shared/modes.ts b/src/shared/modes.ts index 56d41f3c730..53bc2369db5 100644 --- a/src/shared/modes.ts +++ b/src/shared/modes.ts @@ -68,6 +68,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.", whenToUse: "Use this mode when you need to write, modify, or refactor code. Ideal for implementing features, fixing bugs, creating new files, or making code improvements across any programming language or framework.", + description: "Write, modify, and refactor code", groups: ["read", "edit", "browser", "command", "mcp"], }, { @@ -77,6 +78,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, an experienced technical leader who is inquisitive and an excellent planner. Your goal is to gather information and get context to create a detailed plan for accomplishing the user's task, which the user will review and approve before they switch into another mode to implement the solution.", whenToUse: "Use this mode when you need to plan, design, or strategize before implementation. Perfect for breaking down complex problems, creating technical specifications, designing system architecture, or brainstorming solutions before coding.", + description: "Plan and design before implementation", groups: ["read", ["edit", { fileRegex: "\\.md$", description: "Markdown files only" }], "browser", "mcp"], customInstructions: "1. Do some information gathering (for example using read_file or search_files) to get more context about the task.\n\n2. You should also ask the user clarifying questions to get a better understanding of the task.\n\n3. Once you've gained more context about the user's request, you should create a detailed plan for how to accomplish the task. Include Mermaid diagrams if they help make your plan clearer.\n\n4. Ask the user if they are pleased with this plan, or if they would like to make any changes. Think of this as a brainstorming session where you can discuss the task and plan the best way to accomplish it.\n\n5. Once the user confirms the plan, ask them if they'd like you to write it to a markdown file.\n\n6. Use the switch_mode tool to request that the user switch to another mode to implement the solution.", @@ -88,6 +90,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a knowledgeable technical assistant focused on answering questions and providing information about software development, technology, and related topics.", whenToUse: "Use this mode when you need explanations, documentation, or answers to technical questions. Best for understanding concepts, analyzing existing code, getting recommendations, or learning about technologies without making changes.", + description: "Get answers and explanations", groups: ["read", "browser", "mcp"], customInstructions: "You can analyze code, explain concepts, and access external resources. Always answer the user's questions thoroughly, and do not switch to implementing code unless explicitly requested by the user. Include Mermaid diagrams when they clarify your response.", @@ -99,6 +102,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, an expert software debugger specializing in systematic problem diagnosis and resolution.", whenToUse: "Use this mode when you're troubleshooting issues, investigating errors, or diagnosing problems. Specialized in systematic debugging, adding logging, analyzing stack traces, and identifying root causes before applying fixes.", + description: "Diagnose and fix software issues", groups: ["read", "edit", "browser", "command", "mcp"], customInstructions: "Reflect on 5-7 different possible sources of the problem, distill those down to 1-2 most likely sources, and then add logs to validate your assumptions. Explicitly ask the user to confirm the diagnosis before fixing the problem.", @@ -110,6 +114,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized modes. You have a comprehensive understanding of each mode's capabilities and limitations, allowing you to effectively break down complex problems into discrete tasks that can be solved by different specialists.", whenToUse: "Use this mode for complex, multi-step projects that require coordination across different specialties. Ideal when you need to break down large tasks into subtasks, manage workflows, or coordinate work that spans multiple domains or expertise areas.", + description: "Coordinate tasks across multiple modes", groups: [], customInstructions: "Your role is to coordinate complex workflows by delegating tasks to specialized modes. As an orchestrator, you should:\n\n1. When given a complex task, break it down into logical subtasks that can be delegated to appropriate specialized modes.\n\n2. For each subtask, use the `new_task` tool to delegate. Choose the most appropriate mode for the subtask's specific goal and provide comprehensive instructions in the `message` parameter. These instructions must include:\n * All necessary context from the parent task or previous subtasks required to complete the work.\n * A clearly defined scope, specifying exactly what the subtask should accomplish.\n * An explicit statement that the subtask should *only* perform the work outlined in these instructions and not deviate.\n * An instruction for the subtask to signal completion by using the `attempt_completion` tool, providing a concise yet thorough summary of the outcome in the `result` parameter, keeping in mind that this summary will be the source of truth used to keep track of what was completed on this project.\n * A statement that these specific instructions supersede any conflicting general instructions the subtask's mode might have.\n\n3. Track and manage the progress of all subtasks. When a subtask is completed, analyze its results and determine the next steps.\n\n4. Help the user understand how the different subtasks fit together in the overall workflow. Provide clear reasoning about why you're delegating specific tasks to specific modes.\n\n5. When all subtasks are completed, synthesize the results and provide a comprehensive overview of what was accomplished.\n\n6. Ask clarifying questions when necessary to better understand how to break down complex tasks effectively.\n\n7. Suggest improvements to the workflow based on the results of completed subtasks.\n\nUse subtasks to maintain clarity. If a request significantly shifts focus or requires a different expertise (mode), consider creating a subtask rather than overloading the current one.", @@ -188,10 +193,12 @@ export function getModeSelection(mode: string, promptComponent?: PromptComponent const roleDefinition = modeToUse?.roleDefinition || "" const baseInstructions = modeToUse?.customInstructions || "" + const description = (customMode || builtInMode)?.description || "" return { roleDefinition, baseInstructions, + description, } } @@ -282,6 +289,7 @@ export const defaultPrompts: Readonly = Object.freeze( roleDefinition: mode.roleDefinition, whenToUse: mode.whenToUse, customInstructions: mode.customInstructions, + description: mode.description, }, ]), ), @@ -298,6 +306,7 @@ export async function getAllModesWithPrompts(context: vscode.ExtensionContext): roleDefinition: customModePrompts[mode.slug]?.roleDefinition ?? mode.roleDefinition, whenToUse: customModePrompts[mode.slug]?.whenToUse ?? mode.whenToUse, customInstructions: customModePrompts[mode.slug]?.customInstructions ?? mode.customInstructions, + // description is not overridable via customModePrompts, so we keep the original })) } @@ -321,6 +330,7 @@ export async function getFullModeDetails( // Get the base custom instructions const baseCustomInstructions = promptComponent?.customInstructions || baseMode.customInstructions || "" const baseWhenToUse = promptComponent?.whenToUse || baseMode.whenToUse || "" + const baseDescription = promptComponent?.description || baseMode.description || "" // If we have cwd, load and combine all custom instructions let fullCustomInstructions = baseCustomInstructions @@ -339,6 +349,7 @@ export async function getFullModeDetails( ...baseMode, roleDefinition: promptComponent?.roleDefinition || baseMode.roleDefinition, whenToUse: baseWhenToUse, + description: baseDescription, customInstructions: fullCustomInstructions, } } @@ -353,6 +364,16 @@ export function getRoleDefinition(modeSlug: string, customModes?: ModeConfig[]): return mode.roleDefinition } +// Helper function to safely get description +export function getDescription(modeSlug: string, customModes?: ModeConfig[]): string { + const mode = getModeBySlug(modeSlug, customModes) + if (!mode) { + console.warn(`No mode found for slug: ${modeSlug}`) + return "" + } + return mode.description ?? "" +} + // Helper function to safely get whenToUse export function getWhenToUse(modeSlug: string, customModes?: ModeConfig[]): string { const mode = getModeBySlug(modeSlug, customModes) diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx index e63d8d0f4f9..b122198f631 100644 --- a/webview-ui/src/App.tsx +++ b/webview-ui/src/App.tsx @@ -74,6 +74,7 @@ const App = () => { } setCurrentSection(undefined) + setCurrentMarketplaceTab(undefined) if (settingsRef.current?.checkUnsaveChanges) { settingsRef.current.checkUnsaveChanges(() => setTab(newTab)) @@ -85,6 +86,7 @@ const App = () => { ) const [currentSection, setCurrentSection] = useState(undefined) + const [currentMarketplaceTab, setCurrentMarketplaceTab] = useState(undefined) const onMessage = useCallback( (e: MessageEvent) => { @@ -96,14 +98,17 @@ const App = () => { const targetTab = message.tab as Tab switchTab(targetTab) setCurrentSection(undefined) + setCurrentMarketplaceTab(undefined) } else { // Handle other actions using the mapping const newTab = tabsByMessageAction[message.action] const section = message.values?.section as string | undefined + const marketplaceTab = message.values?.marketplaceTab as string | undefined if (newTab) { switchTab(newTab) setCurrentSection(section) + setCurrentMarketplaceTab(marketplaceTab) } } } @@ -171,7 +176,11 @@ const App = () => { setTab("chat")} targetSection={currentSection} /> )} {tab === "marketplace" && ( - switchTab("chat")} /> + switchTab("chat")} + targetTab={currentMarketplaceTab as "mcp" | "mode" | undefined} + /> )} {tab === "account" && ( ( currentApiConfigName, listApiConfigMeta, customModes, + customModePrompts, cwd, pinnedApiConfigs, togglePinnedApiConfig, @@ -193,6 +195,8 @@ const ChatTextArea = forwardRef( } }, [inputValue, sendingDisabled, setInputValue, t]) + const allModes = useMemo(() => getAllModes(customModes), [customModes]) + const queryItems = useMemo(() => { return [ { type: ContextMenuOptionType.Problems, value: "problems" }, @@ -322,7 +326,7 @@ const ChatTextArea = forwardRef( selectedType, queryItems, fileSearchResults, - getAllModes(customModes), + allModes, ) const optionsLength = options.length @@ -359,7 +363,7 @@ const ChatTextArea = forwardRef( selectedType, queryItems, fileSearchResults, - getAllModes(customModes), + allModes, )[selectedMenuIndex] if ( selectedOption && @@ -446,7 +450,7 @@ const ChatTextArea = forwardRef( setInputValue, justDeletedSpaceAfterMention, queryItems, - customModes, + allModes, fileSearchResults, handleHistoryNavigation, resetHistoryNavigation, @@ -845,7 +849,7 @@ const ChatTextArea = forwardRef( setSelectedIndex={setSelectedMenuIndex} selectedType={selectedType} queryItems={queryItems} - modes={getAllModes(customModes)} + modes={allModes} loading={searchLoading} dynamicSearchResults={fileSearchResults} /> @@ -997,38 +1001,17 @@ const ChatTextArea = forwardRef(
- ({ - value: mode.slug, - label: mode.name, - type: DropdownOptionType.ITEM, - })), - { - value: "sep-1", - label: t("chat:separator"), - type: DropdownOptionType.SEPARATOR, - }, - { - value: "promptsButtonClicked", - label: t("chat:edit"), - type: DropdownOptionType.ACTION, - }, - ]} onChange={(value) => { - setMode(value as Mode) + setMode(value) vscode.postMessage({ type: "mode", text: value }) }} - shortcutText={modeShortcutText} triggerClassName="w-full" + modeShortcutText={modeShortcutText} + customModes={customModes} + customModePrompts={customModePrompts} />
@@ -1037,6 +1020,7 @@ const ChatTextArea = forwardRef( value={currentConfigId} disabled={selectApiConfigDisabled} title={t("chat:selectApiConfig")} + disableSearch={false} placeholder={displayName} options={[ // Pinned items first. diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx new file mode 100644 index 00000000000..f066dabfa62 --- /dev/null +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -0,0 +1,171 @@ +import React from "react" +import { ChevronUp, Check } from "lucide-react" +import { cn } from "@/lib/utils" +import { useRooPortal } from "@/components/ui/hooks/useRooPortal" +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" +import { IconButton } from "./IconButton" +import { vscode } from "@/utils/vscode" +import { useExtensionState } from "@/context/ExtensionStateContext" +import { useAppTranslation } from "@/i18n/TranslationContext" +import { Mode, getAllModes } from "@roo/modes" +import { ModeConfig, CustomModePrompts } from "@roo-code/types" + +interface ModeSelectorProps { + value: Mode + onChange: (value: Mode) => void + disabled?: boolean + title?: string + triggerClassName?: string + modeShortcutText: string + customModes?: ModeConfig[] + customModePrompts?: CustomModePrompts +} + +export const ModeSelector = ({ + value, + onChange, + disabled = false, + title = "", + triggerClassName = "", + modeShortcutText, + customModes, + customModePrompts, +}: ModeSelectorProps) => { + const [open, setOpen] = React.useState(false) + const portalContainer = useRooPortal("roo-portal") + const { hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() + const { t } = useAppTranslation() + + const trackModeSelectorOpened = () => { + if (!hasOpenedModeSelector) { + setHasOpenedModeSelector(true) + vscode.postMessage({ type: "hasOpenedModeSelector", bool: true }) + } + } + + // Get all modes including custom modes and merge custom prompt descriptions + const modes = React.useMemo(() => { + const allModes = getAllModes(customModes) + return allModes.map((mode) => ({ + ...mode, + description: customModePrompts?.[mode.slug]?.description ?? mode.description, + })) + }, [customModes, customModePrompts]) + + // Find the selected mode + const selectedMode = React.useMemo(() => modes.find((mode) => mode.slug === value), [modes, value]) + + return ( + { + if (isOpen) trackModeSelectorOpened() + setOpen(isOpen) + }} + data-testid="mode-selector-root"> + + + {selectedMode?.name || ""} + + + +
+
+
+

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

+
+ { + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mode" }, + }, + "*", + ) + + setOpen(false) + }} + /> + { + vscode.postMessage({ + type: "switchTab", + tab: "modes", + }) + setOpen(false) + }} + /> +
+
+

+ {t("chat:modeSelector.description")} +
+ {modeShortcutText} +

+
+ + {/* Mode List */} +
+ {modes.map((mode) => ( +
{ + onChange(mode.slug as Mode) + setOpen(false) + }} + data-testid="mode-selector-item"> +
+

{mode.name}

+ {mode.description && ( +

+ {mode.description} +

+ )} +
+ {mode.slug === value ? ( + + ) : ( +
+ )} +
+ ))} +
+
+ + + ) +} + +export default ModeSelector diff --git a/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx new file mode 100644 index 00000000000..4d07a6de463 --- /dev/null +++ b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx @@ -0,0 +1,58 @@ +import React from "react" +import { render, screen } from "@testing-library/react" +import { describe, test, expect, vi } from "vitest" +import ModeSelector from "../ModeSelector" +import { Mode } from "@roo/modes" + +// Mock the dependencies +vi.mock("@/utils/vscode", () => ({ + vscode: { + postMessage: vi.fn(), + }, +})) + +vi.mock("@/context/ExtensionStateContext", () => ({ + useExtensionState: () => ({ + hasOpenedModeSelector: false, + setHasOpenedModeSelector: vi.fn(), + }), +})) + +vi.mock("@/i18n/TranslationContext", () => ({ + useAppTranslation: () => ({ + t: (key: string) => key, + }), +})) + +vi.mock("@/components/ui/hooks/useRooPortal", () => ({ + useRooPortal: () => document.body, +})) + +describe("ModeSelector", () => { + test("shows custom description from customModePrompts", () => { + const customModePrompts = { + code: { + description: "Custom code mode description", + }, + } + + render( + , + ) + + // The component should be rendered + expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() + }) + + test("falls back to default description when no custom prompt", () => { + render() + + // The component should be rendered + expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() + }) +}) diff --git a/webview-ui/src/components/marketplace/MarketplaceView.tsx b/webview-ui/src/components/marketplace/MarketplaceView.tsx index e74e5bba1b3..b469e886eaf 100644 --- a/webview-ui/src/components/marketplace/MarketplaceView.tsx +++ b/webview-ui/src/components/marketplace/MarketplaceView.tsx @@ -12,8 +12,9 @@ import { TooltipProvider } from "@/components/ui/tooltip" interface MarketplaceViewProps { onDone?: () => void stateManager: MarketplaceViewStateManager + targetTab?: "mcp" | "mode" } -export function MarketplaceView({ stateManager, onDone }: MarketplaceViewProps) { +export function MarketplaceView({ stateManager, onDone, targetTab }: MarketplaceViewProps) { const { t } = useAppTranslation() const [state, manager] = useStateManager(stateManager) const [hasReceivedInitialState, setHasReceivedInitialState] = useState(false) @@ -26,6 +27,12 @@ export function MarketplaceView({ stateManager, onDone }: MarketplaceViewProps) } }, [state.allItems, hasReceivedInitialState]) + useEffect(() => { + if (targetTab && (targetTab === "mcp" || targetTab === "mode")) { + manager.transition({ type: "SET_ACTIVE_TAB", payload: { tab: targetTab } }) + } + }, [targetTab, manager]) + // Ensure marketplace state manager processes messages when component mounts useEffect(() => { // When the marketplace view first mounts, we need to trigger a state update diff --git a/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts b/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts index 372c89a12ba..7498ebfc591 100644 --- a/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts +++ b/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts @@ -370,6 +370,18 @@ export class MarketplaceViewStateManager { // Error case void this.transition({ type: "FETCH_ERROR" }) } else { + // Check if a specific tab is requested + if ( + message.values?.marketplaceTab && + (message.values.marketplaceTab === "mcp" || message.values.marketplaceTab === "mode") + ) { + // Set the active tab + void this.transition({ + type: "SET_ACTIVE_TAB", + payload: { tab: message.values.marketplaceTab }, + }) + } + // Refresh request void this.transition({ type: "FETCH_ITEMS" }) } diff --git a/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx b/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx index 876f5f3f86d..b7e9951b0fa 100644 --- a/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx +++ b/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx @@ -195,8 +195,25 @@ export const MarketplaceInstallModal: React.FC = ( } const handlePostInstallAction = (tab: "mcp" | "modes") => { - // Send message to switch to the appropriate tab - vscode.postMessage({ type: "switchTab", tab }) + if (tab === "mcp") { + // Navigate to MCP tab + window.postMessage( + { + type: "action", + action: "mcpButtonClicked", + }, + "*", + ) + } else { + // Navigate to Modes tab + window.postMessage( + { + type: "action", + action: "promptsButtonClicked", + }, + "*", + ) + } // Close the modal onClose() } diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 18f4bdf3d2d..42069de8f8b 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -5,9 +5,10 @@ import { VSCodeRadio, VSCodeTextArea, VSCodeLink, + VSCodeTextField, } from "@vscode/webview-ui-toolkit/react" import { Trans } from "react-i18next" -import { ChevronsUpDown, X } from "lucide-react" +import { ChevronDown, X } from "lucide-react" import { ModeConfig, GroupEntry, PromptComponent, ToolGroup, modeConfigSchema } from "@roo-code/types" @@ -15,6 +16,7 @@ import { Mode, getRoleDefinition, getWhenToUse, + getDescription, getCustomInstructions, getAllModes, findModeBySlug as findCustomModeBySlug, @@ -105,6 +107,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { if (updatedPrompt.roleDefinition === getRoleDefinition(mode)) { delete updatedPrompt.roleDefinition } + if (updatedPrompt.description === getDescription(mode)) { + delete updatedPrompt.description + } if (updatedPrompt.whenToUse === getWhenToUse(mode)) { delete updatedPrompt.whenToUse } @@ -120,6 +125,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { const updateCustomMode = useCallback((slug: string, modeConfig: ModeConfig) => { const source = modeConfig.source || "global" + vscode.postMessage({ type: "updateCustomMode", slug, @@ -194,6 +200,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // State for create mode dialog const [newModeName, setNewModeName] = useState("") const [newModeSlug, setNewModeSlug] = useState("") + const [newModeDescription, setNewModeDescription] = useState("") const [newModeRoleDefinition, setNewModeRoleDefinition] = useState("") const [newModeWhenToUse, setNewModeWhenToUse] = useState("") const [newModeCustomInstructions, setNewModeCustomInstructions] = useState("") @@ -203,6 +210,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Field-specific error states const [nameError, setNameError] = useState("") const [slugError, setSlugError] = useState("") + const [descriptionError, setDescriptionError] = useState("") const [roleDefinitionError, setRoleDefinitionError] = useState("") const [groupsError, setGroupsError] = useState("") @@ -211,6 +219,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Reset form fields setNewModeName("") setNewModeSlug("") + setNewModeDescription("") setNewModeGroups(availableGroups) setNewModeRoleDefinition("") setNewModeWhenToUse("") @@ -219,6 +228,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Reset error states setNameError("") setSlugError("") + setDescriptionError("") setRoleDefinitionError("") setGroupsError("") }, []) @@ -252,6 +262,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Clear previous errors setNameError("") setSlugError("") + setDescriptionError("") setRoleDefinitionError("") setGroupsError("") @@ -259,6 +270,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { const newMode: ModeConfig = { slug: newModeSlug, name: newModeName, + description: newModeDescription.trim() || undefined, roleDefinition: newModeRoleDefinition.trim(), whenToUse: newModeWhenToUse.trim() || undefined, customInstructions: newModeCustomInstructions.trim() || undefined, @@ -282,6 +294,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { case "slug": setSlugError(message) break + case "description": + setDescriptionError(message) + break case "roleDefinition": setRoleDefinitionError(message) break @@ -301,6 +316,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { }, [ newModeName, newModeSlug, + newModeDescription, newModeRoleDefinition, newModeWhenToUse, // Add whenToUse dependency newModeCustomInstructions, @@ -348,6 +364,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } if (customMode) { const source = customMode.source || "global" + updateCustomMode(customMode.slug, { ...customMode, groups: newGroups, @@ -386,7 +403,10 @@ const ModesView = ({ onDone }: ModesViewProps) => { return () => window.removeEventListener("message", handler) }, []) - const handleAgentReset = (modeSlug: string, type: "roleDefinition" | "whenToUse" | "customInstructions") => { + const handleAgentReset = ( + modeSlug: string, + type: "roleDefinition" | "description" | "whenToUse" | "customInstructions", + ) => { // Only reset for built-in modes const existingPrompt = customModePrompts?.[modeSlug] as PromptComponent const updatedPrompt = { ...existingPrompt } @@ -493,10 +513,10 @@ const ModesView = ({ onDone }: ModesViewProps) => { variant="combobox" role="combobox" aria-expanded={open} - className="grow justify-between" + className="justify-between w-60" data-testid="mode-select-trigger">
{getCurrentMode()?.name || t("prompts:modes.selectMode")}
- + @@ -582,6 +602,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { {/* API Configuration - Moved Here */}
{t("prompts:apiConfiguration.title")}
+
+ {t("prompts:apiConfiguration.select")} +
-
- {t("prompts:apiConfiguration.select")} -
+ {/* Name section */}
{/* Only show name and delete for custom modes */} {visualMode && findModeBySlug(visualMode, customModes) && ( @@ -647,6 +668,8 @@ const ModesView = ({ onDone }: ModesViewProps) => {
)} + + {/* Role Definition section */}
{t("prompts:roleDefinition.title")}
@@ -700,11 +723,64 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={4} + rows={5} data-testid={`${getCurrentMode()?.slug || "code"}-prompt-textarea`} />
+ {/* Description section */} +
+
+
{t("prompts:description.title")}
+ {!findModeBySlug(visualMode, customModes) && ( + + )} +
+
+ {t("prompts:description.description")} +
+ { + const customMode = findModeBySlug(visualMode, customModes) + const prompt = customModePrompts?.[visualMode] as PromptComponent + return customMode?.description ?? prompt?.description ?? getDescription(visualMode) + })()} + onChange={(e) => { + const value = + (e as unknown as CustomEvent)?.detail?.target?.value || + ((e as any).target as HTMLTextAreaElement).value + const customMode = findModeBySlug(visualMode, customModes) + if (customMode) { + // For custom modes, update the JSON file + updateCustomMode(visualMode, { + ...customMode, + description: value.trim() || undefined, + source: customMode.source || "global", + }) + } else { + // For built-in modes, update the prompts + updateAgentPrompt(visualMode, { + description: value.trim() || undefined, + }) + } + }} + className="w-full" + data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} + /> +
+ {/* When to Use section */}
@@ -755,7 +831,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={3} + rows={4} data-testid={`${getCurrentMode()?.slug || "code"}-when-to-use-textarea`} />
@@ -912,7 +988,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { }) } }} - rows={4} + rows={10} className="w-full" data-testid={`${getCurrentMode()?.slug || "code"}-custom-instructions-textarea`} /> @@ -1189,6 +1265,23 @@ const ModesView = ({ onDone }: ModesViewProps) => { )}
+
+
{t("prompts:createModeDialog.description.label")}
+
+ {t("prompts:createModeDialog.description.description")} +
+ { + setNewModeDescription((e.target as HTMLInputElement).value) + }} + className="w-full" + /> + {descriptionError && ( +
{descriptionError}
+ )} +
+
{t("prompts:createModeDialog.whenToUse.label")}
diff --git a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx index 47ff05613cb..4ff7f4cf87b 100644 --- a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx +++ b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx @@ -138,10 +138,13 @@ describe("PromptsView", () => { await fireEvent.click(resetButton) // Verify it only resets role definition + // When resetting a built-in mode's role definition, the field should be removed entirely + // from the customPrompt object, not set to undefined. + // This allows the default role definition from the built-in mode to be used instead. expect(vscode.postMessage).toHaveBeenCalledWith({ type: "updatePrompt", promptMode: "code", - customPrompt: { roleDefinition: undefined }, + customPrompt: {}, // Empty object because the role definition field is removed entirely }) // Cleanup before testing custom mode @@ -159,6 +162,46 @@ describe("PromptsView", () => { expect(screen.queryByTestId("role-definition-reset")).not.toBeInTheDocument() }) + it("description section behavior for different mode types", async () => { + const customMode = { + slug: "custom-mode", + name: "Custom Mode", + roleDefinition: "Custom role", + description: "Custom description", + groups: [], + } + + // Test with built-in mode (code) - description section should be shown with reset button + const { unmount } = render( + + + , + ) + + // Verify description reset button IS present for built-in modes + // because built-in modes can have their descriptions customized and reset + expect(screen.queryByTestId("description-reset")).toBeInTheDocument() + + // Cleanup before testing custom mode + unmount() + + // Test with custom mode - description section should be shown + render( + + + , + ) + + // Verify description section is present for custom modes + // but reset button is NOT present (since custom modes manage their own descriptions) + expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() + + // Verify the description text field is present for custom modes + expect(screen.getByTestId("custom-mode-description-textfield")).toBeInTheDocument() + }) + it("handles clearing custom instructions correctly", async () => { const setCustomInstructions = vitest.fn() renderPromptsView({ diff --git a/webview-ui/src/components/ui/select-dropdown.tsx b/webview-ui/src/components/ui/select-dropdown.tsx index 3f1906b81e9..7fcc6884b72 100644 --- a/webview-ui/src/components/ui/select-dropdown.tsx +++ b/webview-ui/src/components/ui/select-dropdown.tsx @@ -37,6 +37,7 @@ export interface SelectDropdownProps { placeholder?: string shortcutText?: string renderItem?: (option: DropdownOption) => React.ReactNode + disableSearch?: boolean } export const SelectDropdown = React.memo( @@ -56,6 +57,7 @@ export const SelectDropdown = React.memo( placeholder = "", shortcutText = "", renderItem, + disableSearch = false, }, ref, ) => { @@ -117,8 +119,8 @@ export const SelectDropdown = React.memo( // Filter options based on search value using memoized Fzf instance const filteredOptions = React.useMemo(() => { - // If no search value, return all options without filtering - if (!searchValue) return options + // If search is disabled or no search value, return all options without filtering + if (disableSearch || !searchValue) return options // Get fuzzy matching items - only perform search if we have a search value const matchingItems = fzfInstance.find(searchValue).map((result) => result.item.original) @@ -132,7 +134,7 @@ export const SelectDropdown = React.memo( // Include if it's in the matching items return matchingItems.some((item) => item.value === option.value) }) - }, [options, searchValue, fzfInstance]) + }, [options, searchValue, fzfInstance, disableSearch]) // Group options by type and handle separators const groupedOptions = React.useMemo(() => { @@ -209,24 +211,26 @@ export const SelectDropdown = React.memo( className={cn("p-0 overflow-hidden", contentClassName)}>
{/* Search input */} -
- setSearchValue(e.target.value)} - placeholder={t("common:ui.search_placeholder")} - className="w-full h-8 px-2 py-1 text-xs bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border rounded focus:outline-0" - /> - {searchValue.length > 0 && ( -
- -
- )} -
+ {!disableSearch && ( +
+ setSearchValue(e.target.value)} + placeholder={t("common:ui.search_placeholder")} + className="w-full h-8 px-2 py-1 text-xs bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border rounded focus:outline-0" + /> + {searchValue.length > 0 && ( +
+ +
+ )} +
+ )} {/* Dropdown items - Use windowing for large lists */}
diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 313c5170a0f..c87ccdb6e92 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -38,6 +38,8 @@ export interface ExtensionStateContextType extends ExtensionState { sharingEnabled: boolean maxConcurrentFileReads?: number mdmCompliant?: boolean + hasOpenedModeSelector: boolean // New property to track if user has opened mode selector + setHasOpenedModeSelector: (value: boolean) => void // Setter for the new property condensingApiConfigId?: string setCondensingApiConfigId: (value: string) => void customCondensingPrompt?: string @@ -180,6 +182,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode enhancementApiConfigId: "", condensingApiConfigId: "", // Default empty string for condensing API config ID customCondensingPrompt: "", // Default empty string for custom condensing prompt + hasOpenedModeSelector: false, // Default to false (not opened yet) autoApprovalEnabled: false, customModes: [], maxOpenTabsContext: 20, @@ -427,6 +430,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode }), setHistoryPreviewCollapsed: (value) => setState((prevState) => ({ ...prevState, historyPreviewCollapsed: value })), + setHasOpenedModeSelector: (value) => setState((prevState) => ({ ...prevState, hasOpenedModeSelector: value })), setAutoCondenseContext: (value) => setState((prevState) => ({ ...prevState, autoCondenseContext: value })), setAutoCondenseContextPercent: (value) => setState((prevState) => ({ ...prevState, autoCondenseContextPercent: value })), diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index 56dd2ef426b..085cd5da71c 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -208,6 +208,7 @@ describe("mergeExtensionState", () => { cloudIsAuthenticated: false, sharingEnabled: false, profileThresholds: {}, + hasOpenedModeSelector: false, // Add the new required property } const prevState: ExtensionState = { diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 1c5ff13e887..1076b3d6a2c 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -106,6 +106,12 @@ "dragFiles": "manté premut shift per arrossegar fitxers", "dragFilesImages": "manté premut shift per arrossegar fitxers/imatges", "enhancePromptDescription": "El botó 'Millora la sol·licitud' ajuda a millorar la teva sol·licitud proporcionant context addicional, aclariments o reformulacions. Prova d'escriure una sol·licitud aquí i fes clic al botó de nou per veure com funciona.", + "modeSelector": { + "title": "Modes", + "marketplace": "Marketplace de Modes", + "settings": "Configuració de Modes", + "description": "Personalitats especialitzades que adapten el comportament de Roo." + }, "errorReadingFile": "Error en llegir el fitxer:", "noValidImages": "No s'ha processat cap imatge vàlida", "separator": "Separador", diff --git a/webview-ui/src/i18n/locales/ca/marketplace.json b/webview-ui/src/i18n/locales/ca/marketplace.json index 8653762d4f3..5af3d1eee6e 100644 --- a/webview-ui/src/i18n/locales/ca/marketplace.json +++ b/webview-ui/src/i18n/locales/ca/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ara pots utilitzar aquest mode. Feu clic a la icona Modes de la barra lateral per canviar de pestanya.", "done": "Fet", "goToMcp": "Anar a la pestanya MCP", - "goToModes": "Anar a la pestanya Modes", + "goToModes": "Anar a la configuració de Modes", "moreInfoMcp": "Veure documentació MCP de {{name}}", "validationRequired": "Si us plau, proporciona un valor per a {{paramName}}", "prerequisites": "Prerequisits" diff --git a/webview-ui/src/i18n/locales/ca/prompts.json b/webview-ui/src/i18n/locales/ca/prompts.json index c9a2be41fb9..04359f996a5 100644 --- a/webview-ui/src/i18n/locales/ca/prompts.json +++ b/webview-ui/src/i18n/locales/ca/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restablir a valors predeterminats", "description": "Definiu l'experiència i personalitat de Roo per a aquest mode. Aquesta descripció determina com Roo es presenta i aborda les tasques." }, + "description": { + "title": "Descripció curta (per a humans)", + "resetToDefault": "Restablir a la descripció predeterminada", + "description": "Una breu descripció que es mostra al desplegable del selector de mode." + }, "whenToUse": { "title": "Quan utilitzar (opcional)", "description": "Descriviu quan s'hauria d'utilitzar aquest mode. Això ajuda l'Orchestrator a escollir el mode correcte per a una tasca.", @@ -145,6 +150,10 @@ "label": "Eines disponibles", "description": "Seleccioneu quines eines pot utilitzar aquest mode." }, + "description": { + "label": "Descripció curta (per a humans)", + "description": "Una breu descripció que es mostra al desplegable del selector de mode." + }, "customInstructions": { "label": "Instruccions personalitzades (opcional)", "description": "Afegiu directrius de comportament específiques per a aquest mode." diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 99717acb8e4..07cc70a9e6f 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -106,6 +106,12 @@ "dragFiles": "Shift halten, um Dateien einzufügen", "dragFilesImages": "Shift halten, um Dateien/Bilder einzufügen", "enhancePromptDescription": "Die Schaltfläche 'Prompt verbessern' hilft, deine Anfrage durch zusätzlichen Kontext, Klarstellungen oder Umformulierungen zu verbessern. Versuche, hier eine Anfrage einzugeben und klicke erneut auf die Schaltfläche, um zu sehen, wie es funktioniert.", + "modeSelector": { + "title": "Modi", + "marketplace": "Modus-Marketplace", + "settings": "Modus-Einstellungen", + "description": "Spezialisierte Personas, die Roos Verhalten anpassen." + }, "errorReadingFile": "Fehler beim Lesen der Datei:", "noValidImages": "Keine gültigen Bilder wurden verarbeitet", "separator": "Trennlinie", diff --git a/webview-ui/src/i18n/locales/de/marketplace.json b/webview-ui/src/i18n/locales/de/marketplace.json index c9bc9f9c434..4632ce5fea1 100644 --- a/webview-ui/src/i18n/locales/de/marketplace.json +++ b/webview-ui/src/i18n/locales/de/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Du kannst diesen Modus jetzt verwenden. Klicke auf das Modi-Symbol in der Seitenleiste, um die Tabs zu wechseln.", "done": "Fertig", "goToMcp": "Zum MCP-Tab gehen", - "goToModes": "Zum Modi-Tab gehen", + "goToModes": "Zu den Modi-Einstellungen gehen", "moreInfoMcp": "{{name}} MCP-Dokumentation anzeigen", "validationRequired": "Bitte gib einen Wert für {{paramName}} an", "prerequisites": "Voraussetzungen" diff --git a/webview-ui/src/i18n/locales/de/prompts.json b/webview-ui/src/i18n/locales/de/prompts.json index bab48f876f0..6e9fd0f47b1 100644 --- a/webview-ui/src/i18n/locales/de/prompts.json +++ b/webview-ui/src/i18n/locales/de/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Auf Standardwerte zurücksetzen", "description": "Definiere Roos Expertise und Persönlichkeit für diesen Modus. Diese Beschreibung prägt, wie Roo sich präsentiert und an Aufgaben herangeht." }, + "description": { + "title": "Kurzbeschreibung (für Menschen)", + "resetToDefault": "Auf Standardbeschreibung zurücksetzen", + "description": "Eine kurze Beschreibung, die im Dropdown-Menü der Modusauswahl angezeigt wird." + }, "whenToUse": { "title": "Wann zu verwenden (optional)", "description": "Beschreibe, wann dieser Modus verwendet werden sollte. Dies hilft dem Orchestrator, den richtigen Modus für eine Aufgabe auszuwählen.", @@ -145,6 +150,10 @@ "label": "Verfügbare Werkzeuge", "description": "Wähle, welche Werkzeuge dieser Modus verwenden kann." }, + "description": { + "label": "Kurzbeschreibung (für Menschen)", + "description": "Eine kurze Beschreibung, die im Dropdown-Menü der Modusauswahl angezeigt wird." + }, "customInstructions": { "label": "Benutzerdefinierte Anweisungen (optional)", "description": "Fügen Sie verhaltensspezifische Richtlinien für diesen Modus hinzu." diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 9ecfdde1ff6..6232952251f 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -106,6 +106,12 @@ "selectMode": "Select mode for interaction", "selectApiConfig": "Select API configuration", "enhancePrompt": "Enhance prompt with additional context", + "modeSelector": { + "title": "Modes", + "marketplace": "Mode Marketplace", + "settings": "Mode Settings", + "description": "Specialized personas that tailor Roo's behavior." + }, "enhancePromptDescription": "The 'Enhance Prompt' button helps improve your prompt by providing additional context, clarification, or rephrasing. Try typing a prompt in here and clicking the button again to see how it works.", "addImages": "Add images to message", "sendMessage": "Send message", diff --git a/webview-ui/src/i18n/locales/en/marketplace.json b/webview-ui/src/i18n/locales/en/marketplace.json index 6a5e877b2ac..c8c9a2f11a7 100644 --- a/webview-ui/src/i18n/locales/en/marketplace.json +++ b/webview-ui/src/i18n/locales/en/marketplace.json @@ -92,7 +92,7 @@ "whatNextMode": "You can now use this mode. Click the Modes icon in the sidebar to switch tabs.", "done": "Done", "goToMcp": "Go to MCP Tab", - "goToModes": "Go to Modes Tab", + "goToModes": "Go to Modes Settings", "moreInfoMcp": "View {{name}} MCP documentation", "validationRequired": "Please provide a value for {{paramName}}" }, diff --git a/webview-ui/src/i18n/locales/en/prompts.json b/webview-ui/src/i18n/locales/en/prompts.json index f03d48ca92b..3614d79872a 100644 --- a/webview-ui/src/i18n/locales/en/prompts.json +++ b/webview-ui/src/i18n/locales/en/prompts.json @@ -34,9 +34,14 @@ "resetToDefault": "Reset to default", "description": "Define Roo's expertise and personality for this mode. This description shapes how Roo presents itself and approaches tasks." }, + "description": { + "title": "Short description (for humans)", + "resetToDefault": "Reset to default description", + "description": "A brief description shown in the mode selector dropdown." + }, "whenToUse": { "title": "When to Use (optional)", - "description": "Describe when this mode should be used. This helps the Orchestrator choose the right mode for a task.", + "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task.", "resetToDefault": "Reset to default 'When to Use' description" }, "customInstructions": { @@ -137,9 +142,13 @@ "label": "Role Definition", "description": "Define Roo's expertise and personality for this mode." }, + "description": { + "label": "Short description (for humans)", + "description": "A brief description shown in the mode selector dropdown." + }, "whenToUse": { "label": "When to Use (optional)", - "description": "Provide a clear description of when this mode is most effective and what types of tasks it excels at." + "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task." }, "tools": { "label": "Available Tools", diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 433cab868a9..a66e041d342 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -106,6 +106,12 @@ "dragFiles": "mantén shift para arrastrar archivos", "dragFilesImages": "mantén shift para arrastrar archivos/imágenes", "enhancePromptDescription": "El botón 'Mejorar el mensaje' ayuda a mejorar tu petición proporcionando contexto adicional, aclaraciones o reformulaciones. Intenta escribir una petición aquí y haz clic en el botón nuevamente para ver cómo funciona.", + "modeSelector": { + "title": "Modos", + "marketplace": "Marketplace de Modos", + "settings": "Configuración de Modos", + "description": "Personalidades especializadas que adaptan el comportamiento de Roo." + }, "errorReadingFile": "Error al leer el archivo:", "noValidImages": "No se procesaron imágenes válidas", "separator": "Separador", diff --git a/webview-ui/src/i18n/locales/es/marketplace.json b/webview-ui/src/i18n/locales/es/marketplace.json index 38056f32eac..918d10ef8de 100644 --- a/webview-ui/src/i18n/locales/es/marketplace.json +++ b/webview-ui/src/i18n/locales/es/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ahora puedes usar este modo. Haz clic en el icono Modos en la barra lateral para cambiar de pestaña.", "done": "Hecho", "goToMcp": "Ir a la pestaña MCP", - "goToModes": "Ir a la pestaña Modos", + "goToModes": "Ir a la configuración de Modos", "moreInfoMcp": "Ver documentación MCP de {{name}}", "validationRequired": "Por favor proporciona un valor para {{paramName}}", "prerequisites": "Requisitos previos" diff --git a/webview-ui/src/i18n/locales/es/prompts.json b/webview-ui/src/i18n/locales/es/prompts.json index c96fc5a602d..54b5c1bd2db 100644 --- a/webview-ui/src/i18n/locales/es/prompts.json +++ b/webview-ui/src/i18n/locales/es/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restablecer a valores predeterminados", "description": "Define la experiencia y personalidad de Roo para este modo. Esta descripción determina cómo Roo se presenta y aborda las tareas." }, + "description": { + "title": "Descripción breve (para humanos)", + "resetToDefault": "Restablecer a la descripción predeterminada", + "description": "Una breve descripción que se muestra en el menú desplegable del selector de modo." + }, "whenToUse": { "title": "Cuándo usar (opcional)", "description": "Describe cuándo se debe usar este modo. Esto ayuda al Orchestrator a elegir el modo correcto para una tarea.", @@ -145,6 +150,10 @@ "label": "Herramientas disponibles", "description": "Selecciona qué herramientas puede usar este modo." }, + "description": { + "label": "Descripción breve (para humanos)", + "description": "Una breve descripción que se muestra en el menú desplegable del selector de modo." + }, "customInstructions": { "label": "Instrucciones personalizadas (opcional)", "description": "Agrega directrices de comportamiento específicas para este modo." diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index a8691f2550b..dbca652bbda 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -106,6 +106,12 @@ "dragFiles": "maintenir Maj pour glisser des fichiers", "dragFilesImages": "maintenir Maj pour glisser des fichiers/images", "enhancePromptDescription": "Le bouton 'Améliorer la requête' aide à améliorer votre demande en fournissant un contexte supplémentaire, des clarifications ou des reformulations. Essayez de taper une demande ici et cliquez à nouveau sur le bouton pour voir comment cela fonctionne.", + "modeSelector": { + "title": "Modes", + "marketplace": "Marketplace de Modes", + "settings": "Paramètres des Modes", + "description": "Personas spécialisés qui adaptent le comportement de Roo." + }, "errorReadingFile": "Erreur lors de la lecture du fichier :", "noValidImages": "Aucune image valide n'a été traitée", "separator": "Séparateur", diff --git a/webview-ui/src/i18n/locales/fr/marketplace.json b/webview-ui/src/i18n/locales/fr/marketplace.json index cabac260eff..942d06aa49f 100644 --- a/webview-ui/src/i18n/locales/fr/marketplace.json +++ b/webview-ui/src/i18n/locales/fr/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Vous pouvez maintenant utiliser ce mode. Cliquez sur l'icône Modes dans la barre latérale pour changer d'onglet.", "done": "Terminé", "goToMcp": "Aller à l'onglet MCP", - "goToModes": "Aller à l'onglet Modes", + "goToModes": "Aller aux paramètres des Modes", "moreInfoMcp": "Voir la documentation MCP de {{name}}", "validationRequired": "Veuillez fournir une valeur pour {{paramName}}", "prerequisites": "Prérequis" diff --git a/webview-ui/src/i18n/locales/fr/prompts.json b/webview-ui/src/i18n/locales/fr/prompts.json index ea9fdd5f3a9..39bc67e482c 100644 --- a/webview-ui/src/i18n/locales/fr/prompts.json +++ b/webview-ui/src/i18n/locales/fr/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Réinitialiser aux valeurs par défaut", "description": "Définissez l'expertise et la personnalité de Roo pour ce mode. Cette description façonne la manière dont Roo se présente et aborde les tâches." }, + "description": { + "title": "Description courte (pour humains)", + "resetToDefault": "Réinitialiser à la description par défaut", + "description": "Une brève description affichée dans le menu déroulant du sélecteur de mode." + }, "whenToUse": { "title": "Quand utiliser (optionnel)", "description": "Décrivez quand ce mode doit être utilisé. Cela aide l'Orchestrateur à choisir le mode approprié pour une tâche.", @@ -145,6 +150,10 @@ "label": "Outils disponibles", "description": "Sélectionnez quels outils ce mode peut utiliser." }, + "description": { + "label": "Description courte (pour humains)", + "description": "Une brève description affichée dans le menu déroulant du sélecteur de mode." + }, "customInstructions": { "label": "Instructions personnalisées (optionnel)", "description": "Ajoutez des directives comportementales spécifiques à ce mode." diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 34f06b375c8..015b534b411 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -106,6 +106,12 @@ "dragFiles": "फ़ाइलें खींचने के लिए shift दबाकर रखें", "dragFilesImages": "फ़ाइलें/चित्र खींचने के लिए shift दबाकर रखें", "enhancePromptDescription": "'प्रॉम्प्ट बढ़ाएँ' बटन अतिरिक्त संदर्भ, स्पष्टीकरण या पुनर्विचार प्रदान करके आपके अनुरोध को बेहतर बनाने में मदद करता है। यहां अनुरोध लिखकर देखें और यह कैसे काम करता है यह देखने के लिए बटन पर फिर से क्लिक करें।", + "modeSelector": { + "title": "मोड्स", + "marketplace": "मोड मार्केटप्लेस", + "settings": "मोड सेटिंग्स", + "description": "विशेष व्यक्तित्व जो Roo के व्यवहार को अनुकूलित करते हैं।" + }, "errorReadingFile": "फ़ाइल पढ़ने में त्रुटि:", "noValidImages": "कोई मान्य चित्र प्रोसेस नहीं किया गया", "separator": "विभाजक", diff --git a/webview-ui/src/i18n/locales/hi/marketplace.json b/webview-ui/src/i18n/locales/hi/marketplace.json index 34924d3686d..b9c9857b541 100644 --- a/webview-ui/src/i18n/locales/hi/marketplace.json +++ b/webview-ui/src/i18n/locales/hi/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "अब आप इस मोड का उपयोग कर सकते हैं। टैब स्विच करने के लिए साइडबार में मोड आइकन पर क्लिक करें।", "done": "पूर्ण", "goToMcp": "MCP टैब पर जाएं", - "goToModes": "मोड टैब पर जाएं", + "goToModes": "मोड सेटिंग्स पर जाएं", "moreInfoMcp": "{{name}} MCP दस्तावेज़ देखें", "validationRequired": "कृपया {{paramName}} के लिए एक मान प्रदान करें", "prerequisites": "आवश्यकताएं" diff --git a/webview-ui/src/i18n/locales/hi/prompts.json b/webview-ui/src/i18n/locales/hi/prompts.json index e4f939562e6..9633b029538 100644 --- a/webview-ui/src/i18n/locales/hi/prompts.json +++ b/webview-ui/src/i18n/locales/hi/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "डिफ़ॉल्ट पर रीसेट करें", "description": "इस मोड के लिए Roo की विशेषज्ञता और व्यक्तित्व परिभाषित करें। यह विवरण Roo के स्वयं को प्रस्तुत करने और कार्यों से निपटने के तरीके को आकार देता है।" }, + "description": { + "title": "संक्षिप्त विवरण (मनुष्यों के लिए)", + "resetToDefault": "डिफ़ॉल्ट विवरण पर रीसेट करें", + "description": "मोड सेलेक्टर ड्रॉपडाउन में दिखाया गया संक्षिप्त विवरण।" + }, "whenToUse": { "title": "कब उपयोग करें (वैकल्पिक)", "description": "बताएं कि इस मोड का उपयोग कब किया जाना चाहिए। यह Orchestrator को किसी कार्य के लिए सही मोड चुनने में मदद करता है।", @@ -145,6 +150,10 @@ "label": "उपलब्ध टूल्स", "description": "चुनें कि यह मोड कौन से टूल्स उपयोग कर सकता है।" }, + "description": { + "label": "संक्षिप्त विवरण (मनुष्यों के लिए)", + "description": "मोड सेलेक्टर ड्रॉपडाउन में दिखाया गया संक्षिप्त विवरण।" + }, "customInstructions": { "label": "कस्टम निर्देश (वैकल्पिक)", "description": "इस मोड के लिए विशिष्ट व्यवहार दिशानिर्देश जोड़ें।" diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index add1d8a694a..65011462371 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -113,6 +113,12 @@ "selectApiConfig": "Pilih konfigurasi API", "enhancePrompt": "Tingkatkan prompt dengan konteks tambahan", "enhancePromptDescription": "Tombol 'Tingkatkan Prompt' membantu memperbaiki prompt kamu dengan memberikan konteks tambahan, klarifikasi, atau penyusunan ulang. Coba ketik prompt di sini dan klik tombol lagi untuk melihat cara kerjanya.", + "modeSelector": { + "title": "Mode", + "marketplace": "Marketplace Mode", + "settings": "Pengaturan Mode", + "description": "Persona khusus yang menyesuaikan perilaku Roo." + }, "addImages": "Tambahkan gambar ke pesan", "sendMessage": "Kirim pesan", "typeMessage": "Ketik pesan...", diff --git a/webview-ui/src/i18n/locales/id/marketplace.json b/webview-ui/src/i18n/locales/id/marketplace.json index 9d80ebe3264..153747fdf8c 100644 --- a/webview-ui/src/i18n/locales/id/marketplace.json +++ b/webview-ui/src/i18n/locales/id/marketplace.json @@ -92,7 +92,7 @@ "whatNextMode": "Anda sekarang dapat menggunakan mode ini. Klik ikon Mode di sidebar untuk beralih tab.", "done": "Selesai", "goToMcp": "Ke Tab MCP", - "goToModes": "Ke Tab Mode", + "goToModes": "Ke Pengaturan Mode", "moreInfoMcp": "Lihat dokumentasi MCP {{name}}", "validationRequired": "Silakan berikan nilai untuk {{paramName}}" }, diff --git a/webview-ui/src/i18n/locales/id/prompts.json b/webview-ui/src/i18n/locales/id/prompts.json index d94c85a8a4a..a77a6e5376e 100644 --- a/webview-ui/src/i18n/locales/id/prompts.json +++ b/webview-ui/src/i18n/locales/id/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Reset ke default", "description": "Tentukan keahlian dan kepribadian Roo untuk mode ini. Deskripsi ini membentuk bagaimana Roo mempresentasikan dirinya dan mendekati tugas." }, + "description": { + "title": "Deskripsi singkat (untuk manusia)", + "resetToDefault": "Setel ulang ke deskripsi default", + "description": "Deskripsi singkat yang ditampilkan di dropdown pemilih mode." + }, "whenToUse": { "title": "Kapan Menggunakan (opsional)", "description": "Jelaskan kapan mode ini harus digunakan. Ini membantu Orchestrator memilih mode yang tepat untuk suatu tugas.", @@ -145,6 +150,10 @@ "label": "Tools yang Tersedia", "description": "Pilih tools mana yang dapat digunakan mode ini." }, + "description": { + "label": "Deskripsi singkat (untuk manusia)", + "description": "Deskripsi singkat yang ditampilkan di dropdown pemilih mode." + }, "customInstructions": { "label": "Instruksi Kustom (opsional)", "description": "Tambahkan panduan perilaku khusus untuk mode ini." diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 36d79324e1a..ac5058cf018 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -106,6 +106,12 @@ "dragFiles": "tieni premuto shift per trascinare file", "dragFilesImages": "tieni premuto shift per trascinare file/immagini", "enhancePromptDescription": "Il pulsante 'Migliora prompt' aiuta a migliorare la tua richiesta fornendo contesto aggiuntivo, chiarimenti o riformulazioni. Prova a digitare una richiesta qui e fai di nuovo clic sul pulsante per vedere come funziona.", + "modeSelector": { + "title": "Modalità", + "marketplace": "Marketplace delle Modalità", + "settings": "Impostazioni Modalità", + "description": "Personalità specializzate che adattano il comportamento di Roo." + }, "errorReadingFile": "Errore nella lettura del file:", "noValidImages": "Nessuna immagine valida è stata elaborata", "separator": "Separatore", diff --git a/webview-ui/src/i18n/locales/it/marketplace.json b/webview-ui/src/i18n/locales/it/marketplace.json index 875db2685c5..ea9845277b6 100644 --- a/webview-ui/src/i18n/locales/it/marketplace.json +++ b/webview-ui/src/i18n/locales/it/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ora puoi utilizzare questa modalità. Clicca sull'icona delle modalità nella barra laterale per cambiare scheda.", "done": "Fatto", "goToMcp": "Vai alla scheda MCP", - "goToModes": "Vai alla scheda Modalità", + "goToModes": "Vai alle impostazioni Modalità", "moreInfoMcp": "Visualizza documentazione MCP {{name}}", "validationRequired": "Fornisci un valore per {{paramName}}", "prerequisites": "Prerequisiti" diff --git a/webview-ui/src/i18n/locales/it/prompts.json b/webview-ui/src/i18n/locales/it/prompts.json index 2ac95bf8e2e..c556a18aacd 100644 --- a/webview-ui/src/i18n/locales/it/prompts.json +++ b/webview-ui/src/i18n/locales/it/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Ripristina predefiniti", "description": "Definisci l'esperienza e la personalità di Roo per questa modalità. Questa descrizione modella come Roo si presenta e affronta i compiti." }, + "description": { + "title": "Descrizione breve (per umani)", + "resetToDefault": "Ripristina alla descrizione predefinita", + "description": "Una breve descrizione mostrata nel menu a discesa del selettore di modalità." + }, "whenToUse": { "title": "Quando utilizzare (opzionale)", "description": "Descrivi quando questa modalità dovrebbe essere utilizzata. Questo aiuta l'Orchestrator a scegliere la modalità giusta per un compito.", @@ -137,6 +142,10 @@ "label": "Definizione del ruolo", "description": "Definisci l'esperienza e la personalità di Roo per questa modalità." }, + "description": { + "label": "Descrizione breve (per umani)", + "description": "Una breve descrizione mostrata nel menu a discesa del selettore di modalità." + }, "whenToUse": { "label": "Quando utilizzare (opzionale)", "description": "Fornisci una chiara descrizione di quando questa modalità è più efficace e per quali tipi di compiti eccelle." diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 42923a6a1d8..e0031969831 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -106,6 +106,12 @@ "dragFiles": "ファイルをドラッグするにはShiftキーを押したまま", "dragFilesImages": "ファイル/画像をドラッグするにはShiftキーを押したまま", "enhancePromptDescription": "「プロンプトを強化」ボタンは、追加コンテキスト、説明、または言い換えを提供することで、リクエストを改善します。ここにリクエストを入力し、ボタンを再度クリックして動作を確認してください。", + "modeSelector": { + "title": "モード", + "marketplace": "モードマーケットプレイス", + "settings": "モード設定", + "description": "Rooの動作をカスタマイズする専門的なペルソナ。" + }, "errorReadingFile": "ファイル読み込みエラー:", "noValidImages": "有効な画像が処理されませんでした", "separator": "区切り", diff --git a/webview-ui/src/i18n/locales/ja/marketplace.json b/webview-ui/src/i18n/locales/ja/marketplace.json index c8fe42d8cfc..d3343eee224 100644 --- a/webview-ui/src/i18n/locales/ja/marketplace.json +++ b/webview-ui/src/i18n/locales/ja/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "このモードを使用できるようになりました。サイドバーのモードアイコンをクリックしてタブを切り替えてください。", "done": "完了", "goToMcp": "MCPタブに移動", - "goToModes": "モードタブに移動", + "goToModes": "モード設定に移動", "moreInfoMcp": "{{name}} MCPドキュメントを表示", "validationRequired": "{{paramName}}の値を入力してください", "prerequisites": "前提条件" diff --git a/webview-ui/src/i18n/locales/ja/prompts.json b/webview-ui/src/i18n/locales/ja/prompts.json index 4af25fa11d0..8049a82d31e 100644 --- a/webview-ui/src/i18n/locales/ja/prompts.json +++ b/webview-ui/src/i18n/locales/ja/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "デフォルトにリセット", "description": "このモードのRooの専門知識と個性を定義します。この説明は、Rooが自身をどのように表現し、タスクにどのように取り組むかを形作ります。" }, + "description": { + "title": "短い説明(人間向け)", + "resetToDefault": "デフォルトの説明にリセット", + "description": "モードセレクタのドロップダウンに表示される簡単な説明。" + }, "whenToUse": { "title": "使用タイミング(オプション)", "description": "このモードをいつ使用すべきかを説明します。これはOrchestratorがタスクに適切なモードを選択するのに役立ちます。", @@ -145,6 +150,10 @@ "label": "利用可能なツール", "description": "このモードが使用できるツールを選択します。" }, + "description": { + "label": "短い説明(人間向け)", + "description": "モードセレクタのドロップダウンに表示される簡単な説明。" + }, "customInstructions": { "label": "カスタム指示(オプション)", "description": "このモードに特化した行動ガイドラインを追加します。" diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 0330e5088ae..599e776d1bd 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -106,6 +106,12 @@ "dragFiles": "파일을 드래그하려면 shift 키 누르기", "dragFilesImages": "파일/이미지를 드래그하려면 shift 키 누르기", "enhancePromptDescription": "'프롬프트 향상' 버튼은 추가 컨텍스트, 명확화 또는 재구성을 제공하여 요청을 개선합니다. 여기에 요청을 입력한 다음 버튼을 다시 클릭하여 작동 방식을 확인해보세요.", + "modeSelector": { + "title": "모드", + "marketplace": "모드 마켓플레이스", + "settings": "모드 설정", + "description": "Roo의 행동을 맞춤화하는 전문화된 페르소나." + }, "errorReadingFile": "파일 읽기 오류:", "noValidImages": "처리된 유효한 이미지가 없습니다", "separator": "구분자", diff --git a/webview-ui/src/i18n/locales/ko/marketplace.json b/webview-ui/src/i18n/locales/ko/marketplace.json index 004b90cb31a..b4a0b649806 100644 --- a/webview-ui/src/i18n/locales/ko/marketplace.json +++ b/webview-ui/src/i18n/locales/ko/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "이제 이 모드를 사용할 수 있습니다. 사이드바의 모드 아이콘을 클릭하여 탭을 전환하세요.", "done": "완료", "goToMcp": "MCP 탭으로 이동", - "goToModes": "모드 탭으로 이동", + "goToModes": "모드 설정으로 이동", "moreInfoMcp": "{{name}} MCP 문서 보기", "validationRequired": "{{paramName}}에 대한 값을 입력해주세요", "prerequisites": "전제 조건" diff --git a/webview-ui/src/i18n/locales/ko/prompts.json b/webview-ui/src/i18n/locales/ko/prompts.json index 6e4eb12c8b7..990ee67f03b 100644 --- a/webview-ui/src/i18n/locales/ko/prompts.json +++ b/webview-ui/src/i18n/locales/ko/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "기본값으로 재설정", "description": "이 모드에 대한 Roo의 전문성과 성격을 정의하세요. 이 설명은 Roo가 자신을 어떻게 표현하고 작업에 접근하는지 형성합니다." }, + "description": { + "title": "짧은 설명 (사람용)", + "resetToDefault": "기본 설명으로 재설정", + "description": "모드 선택기 드롭다운에 표시되는 간단한 설명입니다." + }, "whenToUse": { "title": "사용 시기 (선택 사항)", "description": "이 모드를 언제 사용해야 하는지 설명합니다. 이는 Orchestrator가 작업에 적합한 모드를 선택하는 데 도움이 됩니다.", @@ -145,6 +150,10 @@ "label": "사용 가능한 도구", "description": "이 모드가 사용할 수 있는 도구를 선택하세요." }, + "description": { + "label": "짧은 설명 (사람용)", + "description": "모드 선택기 드롭다운에 표시되는 간단한 설명입니다." + }, "customInstructions": { "label": "사용자 지정 지침 (선택 사항)", "description": "이 모드에 대한 특정 행동 지침을 추가하세요." diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index 8be76bf55e2..a2845054035 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -99,6 +99,12 @@ "selectApiConfig": "Selecteer API-configuratie", "enhancePrompt": "Prompt verbeteren met extra context", "enhancePromptDescription": "De knop 'Prompt verbeteren' helpt je prompt te verbeteren door extra context, verduidelijking of herformulering te bieden. Probeer hier een prompt te typen en klik opnieuw op de knop om te zien hoe het werkt.", + "modeSelector": { + "title": "Modi", + "marketplace": "Modus Marktplaats", + "settings": "Modus Instellingen", + "description": "Gespecialiseerde persona's die het gedrag van Roo aanpassen." + }, "addImages": "Afbeeldingen toevoegen aan bericht", "sendMessage": "Bericht verzenden", "typeMessage": "Typ een bericht...", diff --git a/webview-ui/src/i18n/locales/nl/marketplace.json b/webview-ui/src/i18n/locales/nl/marketplace.json index b9effed30f8..c2fe7cd610d 100644 --- a/webview-ui/src/i18n/locales/nl/marketplace.json +++ b/webview-ui/src/i18n/locales/nl/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Je kunt deze modus nu gebruiken. Klik op het modi-pictogram in de zijbalk om van tabblad te wisselen.", "done": "Gereed", "goToMcp": "Ga naar MCP-tabblad", - "goToModes": "Ga naar Modi-tabblad", + "goToModes": "Ga naar Modi-instellingen", "moreInfoMcp": "{{name}} MCP-documentatie bekijken", "validationRequired": "Geef een waarde op voor {{paramName}}", "prerequisites": "Vereisten" diff --git a/webview-ui/src/i18n/locales/nl/prompts.json b/webview-ui/src/i18n/locales/nl/prompts.json index e275f1a5a0a..2aa09a5a156 100644 --- a/webview-ui/src/i18n/locales/nl/prompts.json +++ b/webview-ui/src/i18n/locales/nl/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Terugzetten naar standaard", "description": "Definieer Roo's expertise en persoonlijkheid voor deze modus. Deze beschrijving bepaalt hoe Roo zich presenteert en taken benadert." }, + "description": { + "title": "Korte beschrijving (voor mensen)", + "resetToDefault": "Terugzetten naar standaardbeschrijving", + "description": "Een korte beschrijving die wordt getoond in de modusselectie dropdown." + }, "whenToUse": { "title": "Wanneer te gebruiken (optioneel)", "description": "Beschrijf wanneer deze modus gebruikt moet worden. Dit helpt de Orchestrator om de juiste modus voor een taak te kiezen.", @@ -145,6 +150,10 @@ "label": "Beschikbare tools", "description": "Selecteer welke tools deze modus kan gebruiken." }, + "description": { + "label": "Korte beschrijving (voor mensen)", + "description": "Een korte beschrijving die wordt getoond in de modusselectie dropdown." + }, "customInstructions": { "label": "Aangepaste instructies (optioneel)", "description": "Voeg gedragsrichtlijnen toe die specifiek zijn voor deze modus." diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 435c003179c..3ca46551dd9 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -106,6 +106,12 @@ "dragFiles": "przytrzymaj shift, aby przeciągnąć pliki", "dragFilesImages": "przytrzymaj shift, aby przeciągnąć pliki/obrazy", "enhancePromptDescription": "Przycisk 'Ulepsz podpowiedź' pomaga ulepszyć Twoją prośbę, dostarczając dodatkowy kontekst, wyjaśnienia lub przeformułowania. Spróbuj wpisać prośbę tutaj i kliknij przycisk ponownie, aby zobaczyć, jak to działa.", + "modeSelector": { + "title": "Tryby", + "marketplace": "Marketplace Trybów", + "settings": "Ustawienia Trybów", + "description": "Wyspecjalizowane persony, które dostosowują zachowanie Roo." + }, "errorReadingFile": "Błąd odczytu pliku:", "noValidImages": "Nie przetworzono żadnych prawidłowych obrazów", "separator": "Separator", diff --git a/webview-ui/src/i18n/locales/pl/marketplace.json b/webview-ui/src/i18n/locales/pl/marketplace.json index fe663c7e31b..9acb67ed037 100644 --- a/webview-ui/src/i18n/locales/pl/marketplace.json +++ b/webview-ui/src/i18n/locales/pl/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Możesz teraz używać tego trybu. Kliknij ikonę Tryby na pasku bocznym, aby przełączyć zakładki.", "done": "Gotowe", "goToMcp": "Przejdź do zakładki MCP", - "goToModes": "Przejdź do zakładki Tryby", + "goToModes": "Przejdź do ustawień Trybów", "moreInfoMcp": "Zobacz dokumentację MCP {{name}}", "validationRequired": "Podaj wartość dla {{paramName}}", "prerequisites": "Wymagania wstępne" diff --git a/webview-ui/src/i18n/locales/pl/prompts.json b/webview-ui/src/i18n/locales/pl/prompts.json index 0cd4f665f79..b4a1bdcc50e 100644 --- a/webview-ui/src/i18n/locales/pl/prompts.json +++ b/webview-ui/src/i18n/locales/pl/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Przywróć domyślne", "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Roo dla tego trybu. Ten opis kształtuje, jak Roo prezentuje się i podchodzi do zadań." }, + "description": { + "title": "Krótki opis (dla ludzi)", + "resetToDefault": "Przywróć domyślny opis", + "description": "Krótki opis wyświetlany w rozwijanej liście wyboru trybu." + }, "whenToUse": { "title": "Kiedy używać (opcjonalne)", "description": "Opisz, kiedy ten tryb powinien być używany. Pomaga to Orchestratorowi wybrać odpowiedni tryb dla zadania.", @@ -145,6 +150,10 @@ "label": "Dostępne narzędzia", "description": "Wybierz, których narzędzi może używać ten tryb." }, + "description": { + "label": "Krótki opis (dla ludzi)", + "description": "Krótki opis wyświetlany w rozwijanej liście wyboru trybu." + }, "customInstructions": { "label": "Niestandardowe instrukcje (opcjonalne)", "description": "Dodaj wytyczne dotyczące zachowania specyficzne dla tego trybu." diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index ada704ac04c..c8bb40736e9 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -106,6 +106,12 @@ "dragFiles": "segure shift para arrastar arquivos", "dragFilesImages": "segure shift para arrastar arquivos/imagens", "enhancePromptDescription": "O botão 'Aprimorar prompt' ajuda a melhorar seu pedido fornecendo contexto adicional, esclarecimentos ou reformulações. Tente digitar um pedido aqui e clique no botão novamente para ver como funciona.", + "modeSelector": { + "title": "Modos", + "marketplace": "Marketplace de Modos", + "settings": "Configurações de Modos", + "description": "Personas especializadas que adaptam o comportamento do Roo." + }, "errorReadingFile": "Erro ao ler arquivo:", "noValidImages": "Nenhuma imagem válida foi processada", "separator": "Separador", diff --git a/webview-ui/src/i18n/locales/pt-BR/marketplace.json b/webview-ui/src/i18n/locales/pt-BR/marketplace.json index 088adc850a7..b634291eebd 100644 --- a/webview-ui/src/i18n/locales/pt-BR/marketplace.json +++ b/webview-ui/src/i18n/locales/pt-BR/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Agora você pode usar este modo. Clique no ícone Modos na barra lateral para trocar de aba.", "done": "Concluído", "goToMcp": "Ir para aba MCP", - "goToModes": "Ir para aba Modos", + "goToModes": "Ir para configurações de Modos", "moreInfoMcp": "Ver documentação MCP do {{name}}", "validationRequired": "Por favor, forneça um valor para {{paramName}}", "prerequisites": "Pré-requisitos" diff --git a/webview-ui/src/i18n/locales/pt-BR/prompts.json b/webview-ui/src/i18n/locales/pt-BR/prompts.json index e6abbb6bf69..c2a88d4eaaa 100644 --- a/webview-ui/src/i18n/locales/pt-BR/prompts.json +++ b/webview-ui/src/i18n/locales/pt-BR/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restaurar para padrão", "description": "Defina a expertise e personalidade do Roo para este modo. Esta descrição molda como o Roo se apresenta e aborda tarefas." }, + "description": { + "title": "Descrição curta (para humanos)", + "resetToDefault": "Redefinir para descrição padrão", + "description": "Uma breve descrição exibida no menu suspenso do seletor de modo." + }, "whenToUse": { "title": "Quando usar (opcional)", "description": "Descreva quando este modo deve ser usado. Isso ajuda o Orchestrator a escolher o modo certo para uma tarefa.", @@ -145,6 +150,10 @@ "label": "Ferramentas disponíveis", "description": "Selecione quais ferramentas este modo pode usar." }, + "description": { + "label": "Descrição curta (para humanos)", + "description": "Uma breve descrição exibida no menu suspenso do seletor de modo." + }, "customInstructions": { "label": "Instruções personalizadas (opcional)", "description": "Adicione diretrizes comportamentais específicas para este modo." diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index c30e0103c9a..af2315bcc0d 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -99,6 +99,12 @@ "selectApiConfig": "Выберите конфигурацию API", "enhancePrompt": "Улучшить запрос с дополнительным контекстом", "enhancePromptDescription": "Кнопка 'Улучшить запрос' помогает сделать ваш запрос лучше, предоставляя дополнительный контекст, уточнения или переформулировку. Попробуйте ввести запрос и снова нажать кнопку, чтобы увидеть, как это работает.", + "modeSelector": { + "title": "Режимы", + "marketplace": "Маркетплейс режимов", + "settings": "Настройки режимов", + "description": "Специализированные персоны, которые настраивают поведение Roo." + }, "addImages": "Добавить изображения к сообщению", "sendMessage": "Отправить сообщение", "typeMessage": "Введите сообщение...", diff --git a/webview-ui/src/i18n/locales/ru/marketplace.json b/webview-ui/src/i18n/locales/ru/marketplace.json index 4f87737722d..7a33014cf58 100644 --- a/webview-ui/src/i18n/locales/ru/marketplace.json +++ b/webview-ui/src/i18n/locales/ru/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Теперь вы можете использовать этот режим. Нажмите на иконку Режимы в боковой панели для переключения вкладок.", "done": "Готово", "goToMcp": "Перейти во вкладку MCP", - "goToModes": "Перейти во вкладку Режимы", + "goToModes": "Перейти в настройки Режимов", "moreInfoMcp": "Просмотреть документацию MCP {{name}}", "validationRequired": "Пожалуйста, укажите значение для {{paramName}}", "prerequisites": "Предварительные требования" diff --git a/webview-ui/src/i18n/locales/ru/prompts.json b/webview-ui/src/i18n/locales/ru/prompts.json index 2254f03979e..07e9f91db82 100644 --- a/webview-ui/src/i18n/locales/ru/prompts.json +++ b/webview-ui/src/i18n/locales/ru/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Сбросить по умолчанию", "description": "Определите экспертность и личность Roo для этого режима. Это описание формирует, как Roo будет себя вести и выполнять задачи." }, + "description": { + "title": "Краткое описание (для людей)", + "resetToDefault": "Сбросить до описания по умолчанию", + "description": "Краткое описание, отображаемое в выпадающем списке выбора режима." + }, "whenToUse": { "title": "Когда использовать (необязательно)", "description": "Опишите, когда следует использовать этот режим. Это помогает Orchestrator выбрать правильный режим для задачи.", @@ -145,6 +150,10 @@ "label": "Доступные инструменты", "description": "Выберите, какие инструменты может использовать этот режим." }, + "description": { + "label": "Краткое описание (для людей)", + "description": "Краткое описание, отображаемое в выпадающем списке выбора режима." + }, "customInstructions": { "label": "Пользовательские инструкции (необязательно)", "description": "Добавьте рекомендации по поведению, специфичные для этого режима." diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 0082501eafb..5af66d42499 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -106,6 +106,12 @@ "dragFiles": "dosyaları sürüklemek için shift tuşuna basılı tutun", "dragFilesImages": "dosyaları/resimleri sürüklemek için shift tuşuna basılı tutun", "enhancePromptDescription": "'İstemi geliştir' düğmesi, ek bağlam, açıklama veya yeniden ifade sağlayarak isteğinizi iyileştirmeye yardımcı olur. Buraya bir istek yazıp düğmeye tekrar tıklayarak nasıl çalıştığını görebilirsiniz.", + "modeSelector": { + "title": "Modlar", + "marketplace": "Mod Pazaryeri", + "settings": "Mod Ayarları", + "description": "Roo'nun davranışını özelleştiren uzmanlaşmış kişilikler." + }, "errorReadingFile": "Dosya okuma hatası:", "noValidImages": "Hiçbir geçerli resim işlenmedi", "separator": "Ayırıcı", diff --git a/webview-ui/src/i18n/locales/tr/marketplace.json b/webview-ui/src/i18n/locales/tr/marketplace.json index a034f7876fc..6c3f857a5f1 100644 --- a/webview-ui/src/i18n/locales/tr/marketplace.json +++ b/webview-ui/src/i18n/locales/tr/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Artık bu modu kullanabilirsiniz. Sekmeleri değiştirmek için kenar çubuğundaki Modlar simgesine tıklayın.", "done": "Tamamlandı", "goToMcp": "MCP Sekmesine Git", - "goToModes": "Modlar Sekmesine Git", + "goToModes": "Modlar Ayarlarına Git", "moreInfoMcp": "{{name}} MCP belgelerini görüntüle", "validationRequired": "Lütfen {{paramName}} için bir değer sağlayın", "prerequisites": "Ön koşullar" diff --git a/webview-ui/src/i18n/locales/tr/prompts.json b/webview-ui/src/i18n/locales/tr/prompts.json index e90aa25f650..d091456e437 100644 --- a/webview-ui/src/i18n/locales/tr/prompts.json +++ b/webview-ui/src/i18n/locales/tr/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Varsayılana sıfırla", "description": "Bu mod için Roo'nun uzmanlığını ve kişiliğini tanımlayın. Bu açıklama, Roo'nun kendini nasıl sunduğunu ve görevlere nasıl yaklaştığını şekillendirir." }, + "description": { + "title": "Kısa açıklama (insanlar için)", + "resetToDefault": "Varsayılan açıklamaya sıfırla", + "description": "Mod seçici açılır menüsünde gösterilen kısa bir açıklama." + }, "whenToUse": { "title": "Ne zaman kullanılmalı (isteğe bağlı)", "description": "Bu modun ne zaman kullanılması gerektiğini açıklayın. Bu, Orchestrator'ın bir görev için doğru modu seçmesine yardımcı olur.", @@ -145,6 +150,10 @@ "label": "Kullanılabilir Araçlar", "description": "Bu modun hangi araçları kullanabileceğini seçin." }, + "description": { + "label": "Kısa açıklama (insanlar için)", + "description": "Mod seçici açılır menüsünde gösterilen kısa bir açıklama." + }, "customInstructions": { "label": "Özel Talimatlar (isteğe bağlı)", "description": "Bu mod için özel davranış yönergeleri ekleyin." diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 3e0fa241a2a..ffa198419e4 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -106,6 +106,12 @@ "dragFiles": "giữ shift để kéo tệp", "dragFilesImages": "giữ shift để kéo tệp/hình ảnh", "enhancePromptDescription": "Nút 'Nâng cao yêu cầu' giúp cải thiện yêu cầu của bạn bằng cách cung cấp ngữ cảnh bổ sung, làm rõ hoặc diễn đạt lại. Hãy thử nhập yêu cầu tại đây và nhấp vào nút một lần nữa để xem cách thức hoạt động.", + "modeSelector": { + "title": "Chế độ", + "marketplace": "Chợ Chế độ", + "settings": "Cài đặt Chế độ", + "description": "Các nhân cách chuyên biệt điều chỉnh hành vi của Roo." + }, "errorReadingFile": "Lỗi khi đọc tệp:", "noValidImages": "Không có hình ảnh hợp lệ nào được xử lý", "separator": "Dấu phân cách", diff --git a/webview-ui/src/i18n/locales/vi/marketplace.json b/webview-ui/src/i18n/locales/vi/marketplace.json index 6539177161a..d84f2d0e1f2 100644 --- a/webview-ui/src/i18n/locales/vi/marketplace.json +++ b/webview-ui/src/i18n/locales/vi/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Bây giờ bạn có thể sử dụng chế độ này. Nhấp vào biểu tượng Chế độ trong thanh bên để chuyển tab.", "done": "Hoàn thành", "goToMcp": "Đi đến Tab MCP", - "goToModes": "Đi đến Tab Chế độ", + "goToModes": "Đi đến Cài đặt Chế độ", "moreInfoMcp": "Xem tài liệu MCP {{name}}", "validationRequired": "Vui lòng cung cấp giá trị cho {{paramName}}", "prerequisites": "Điều kiện tiên quyết" diff --git a/webview-ui/src/i18n/locales/vi/prompts.json b/webview-ui/src/i18n/locales/vi/prompts.json index e2573711fa5..7a0b311a020 100644 --- a/webview-ui/src/i18n/locales/vi/prompts.json +++ b/webview-ui/src/i18n/locales/vi/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Đặt lại về mặc định", "description": "Xác định chuyên môn và tính cách của Roo cho chế độ này. Mô tả này định hình cách Roo giới thiệu bản thân và tiếp cận nhiệm vụ." }, + "description": { + "title": "Mô tả ngắn (cho con người)", + "resetToDefault": "Đặt lại về mô tả mặc định", + "description": "Mô tả ngắn gọn hiển thị trong menu thả xuống bộ chọn chế độ." + }, "whenToUse": { "title": "Khi nào nên sử dụng (tùy chọn)", "description": "Mô tả khi nào nên sử dụng chế độ này. Điều này giúp Orchestrator chọn chế độ phù hợp cho một nhiệm vụ.", @@ -145,6 +150,10 @@ "label": "Công cụ có sẵn", "description": "Chọn công cụ nào chế độ này có thể sử dụng." }, + "description": { + "label": "Mô tả ngắn (cho con người)", + "description": "Mô tả ngắn gọn hiển thị trong menu thả xuống bộ chọn chế độ." + }, "customInstructions": { "label": "Hướng dẫn tùy chỉnh (tùy chọn)", "description": "Thêm hướng dẫn hành vi dành riêng cho chế độ này." diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index a65a7ed4dad..ea0e04b5e0d 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -106,6 +106,12 @@ "dragFiles": "Shift+拖拽文件", "dragFilesImages": "Shift+拖拽文件/图片", "enhancePromptDescription": "'增强提示'按钮通过提供额外上下文、澄清或重新表述来帮助改进您的请求。尝试在此处输入请求,然后再次点击按钮查看其工作原理。", + "modeSelector": { + "title": "模式", + "marketplace": "模式市场", + "settings": "模式设置", + "description": "专门定制Roo行为的角色。" + }, "errorReadingFile": "读取文件时出错:", "noValidImages": "没有处理有效图片", "separator": "分隔符", diff --git a/webview-ui/src/i18n/locales/zh-CN/marketplace.json b/webview-ui/src/i18n/locales/zh-CN/marketplace.json index ccf1873ca6d..ff94aaabcc1 100644 --- a/webview-ui/src/i18n/locales/zh-CN/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-CN/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "现在您可以使用此模式。点击侧边栏中的模式图标切换标签页。", "done": "完成", "goToMcp": "转到 MCP 标签页", - "goToModes": "转到模式标签页", + "goToModes": "转到模式设置", "moreInfoMcp": "查看 {{name}} MCP 文档", "validationRequired": "请为 {{paramName}} 提供值", "prerequisites": "前置条件" diff --git a/webview-ui/src/i18n/locales/zh-CN/prompts.json b/webview-ui/src/i18n/locales/zh-CN/prompts.json index 2ebc57855da..2abf922b14f 100644 --- a/webview-ui/src/i18n/locales/zh-CN/prompts.json +++ b/webview-ui/src/i18n/locales/zh-CN/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "重置为默认值", "description": "设定专业领域和应答风格" }, + "description": { + "title": "简短描述(给人看的)", + "resetToDefault": "重置为默认描述", + "description": "在模式选择下拉菜单中显示的简短描述。" + }, "whenToUse": { "title": "使用场景(可选)", "description": "描述何时应该使用此模式。这有助于 Orchestrator 为任务选择合适的模式。", @@ -145,6 +150,10 @@ "label": "可用工具", "description": "选择可用工具" }, + "description": { + "label": "简短描述(给人看的)", + "description": "在模式选择下拉菜单中显示的简短描述。" + }, "customInstructions": { "label": "自定义指令(可选)", "description": "设置专属规则" diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 44742d44607..2b120c5c7e3 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -106,6 +106,12 @@ "dragFiles": "按住 Shift 鍵拖曳檔案", "dragFilesImages": "按住 Shift 鍵拖曳檔案/圖片", "enhancePromptDescription": "「增強提示」按鈕透過提供額外內容、說明或重新表述來幫助改進您的請求。嘗試在此處輸入請求,然後再次點選按鈕以了解其運作方式。", + "modeSelector": { + "title": "模式", + "marketplace": "模式市集", + "settings": "模式設定", + "description": "專門定制Roo行為的角色。" + }, "errorReadingFile": "讀取檔案時發生錯誤:", "noValidImages": "未處理到任何有效圖片", "separator": "分隔符號", diff --git a/webview-ui/src/i18n/locales/zh-TW/marketplace.json b/webview-ui/src/i18n/locales/zh-TW/marketplace.json index 201d3b2bb09..3ca00585ca1 100644 --- a/webview-ui/src/i18n/locales/zh-TW/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-TW/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "現在您可以使用此模式。點擊側邊欄中的模式圖示以切換標籤頁。", "done": "完成", "goToMcp": "前往 MCP 標籤頁", - "goToModes": "前往模式標籤頁", + "goToModes": "前往模式設定", "moreInfoMcp": "檢視 {{name}} MCP 文件", "validationRequired": "請為 {{paramName}} 提供值", "prerequisites": "前置條件" diff --git a/webview-ui/src/i18n/locales/zh-TW/prompts.json b/webview-ui/src/i18n/locales/zh-TW/prompts.json index 2620af2cafe..e853a5d91d5 100644 --- a/webview-ui/src/i18n/locales/zh-TW/prompts.json +++ b/webview-ui/src/i18n/locales/zh-TW/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "重設為預設值", "description": "定義此模式下 Roo 的專業知識和個性。此描述會形塑 Roo 如何展現自己並處理工作。" }, + "description": { + "title": "簡短描述(給人看的)", + "resetToDefault": "重置為預設描述", + "description": "在模式選擇下拉選單中顯示的簡短描述。" + }, "whenToUse": { "title": "使用時機(選用)", "description": "描述何時應使用此模式。這有助於 Orchestrator 為任務選擇適當的模式。", @@ -145,6 +150,10 @@ "label": "可用工具", "description": "選擇此模式可使用的工具。" }, + "description": { + "label": "簡短描述(給人看的)", + "description": "在模式選擇下拉選單中顯示的簡短描述。" + }, "customInstructions": { "label": "自訂指令(選用)", "description": "為此模式新增特定的行為指南。" diff --git a/webview-ui/src/utils/context-mentions.ts b/webview-ui/src/utils/context-mentions.ts index 5df3404b23d..3299bc4e08f 100644 --- a/webview-ui/src/utils/context-mentions.ts +++ b/webview-ui/src/utils/context-mentions.ts @@ -143,7 +143,7 @@ export function getContextMenuOptions( type: ContextMenuOptionType.Mode, value: mode.slug, label: mode.name, - description: (mode.whenToUse || mode.roleDefinition).split("\n")[0], + description: (mode.description || mode.whenToUse || mode.roleDefinition).split("\n")[0], })) return matchingModes.length > 0 ? matchingModes : [{ type: ContextMenuOptionType.NoResults }]