File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 560560 overflow-y : auto;
561561 }
562562
563+ .retry-error-link ,
564+ .error-card-link {
565+ color : var (--text-strong );
566+ text-decoration : underline;
567+ }
568+
563569 [data-slot = "session-turn-collapsible-content-inner" ] {
564570 width : 100% ;
565571 min-width : 0 ;
Original file line number Diff line number Diff line change @@ -436,6 +436,11 @@ export function SessionTurn(
436436 if ( s . type !== "retry" ) return
437437 return s
438438 } )
439+ const isRetryFreeUsageLimitError = createMemo ( ( ) => {
440+ const r = retry ( )
441+ if ( ! r ) return false
442+ return r . message . includes ( "Free usage exceeded" )
443+ } )
439444
440445 const response = createMemo ( ( ) => lastTextPart ( ) ?. text )
441446 const responsePartId = createMemo ( ( ) => lastTextPart ( ) ?. id )
@@ -691,10 +696,22 @@ export function SessionTurn(
691696 { ( ( ) => {
692697 const r = retry ( )
693698 if ( ! r ) return ""
694- const msg = unwrap ( r . message )
699+ const msg = isRetryFreeUsageLimitError ( )
700+ ? i18n . t ( "ui.sessionTurn.error.freeUsageExceeded" )
701+ : unwrap ( r . message )
695702 return msg . length > 60 ? msg . slice ( 0 , 60 ) + "..." : msg
696703 } ) ( ) }
697704 </ span >
705+ < Show when = { isRetryFreeUsageLimitError ( ) } >
706+ < a
707+ href = "https://opencode.ai/zen"
708+ target = "_blank"
709+ class = "retry-error-link"
710+ rel = "noopener noreferrer"
711+ >
712+ { i18n . t ( "ui.sessionTurn.error.addCredits" ) }
713+ </ a >
714+ </ Show >
698715 < span data-slot = "session-turn-retry-seconds" >
699716 · { i18n . t ( "ui.sessionTurn.retry.retrying" ) }
700717 { store . retrySeconds > 0
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ export const dict = {
2828
2929 "ui.sessionTurn.retry.retrying" : "إعادة المحاولة" ,
3030 "ui.sessionTurn.retry.inSeconds" : "خلال {{seconds}} ثواني" ,
31+ "ui.sessionTurn.error.freeUsageExceeded" : "تم تجاوز حد الاستخدام المجاني" ,
32+ "ui.sessionTurn.error.addCredits" : "إضافة رصيد" ,
3133
3234 "ui.sessionTurn.status.delegating" : "تفويض العمل" ,
3335 "ui.sessionTurn.status.planning" : "تخطيط الخطوات التالية" ,
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ export const dict = {
2828
2929 "ui.sessionTurn.retry.retrying" : "tentando novamente" ,
3030 "ui.sessionTurn.retry.inSeconds" : "em {{seconds}}s" ,
31+ "ui.sessionTurn.error.freeUsageExceeded" : "Limite de uso gratuito excedido" ,
32+ "ui.sessionTurn.error.addCredits" : "Adicionar créditos" ,
3133
3234 "ui.sessionTurn.status.delegating" : "Delegando trabalho" ,
3335 "ui.sessionTurn.status.planning" : "Planejando próximos passos" ,
Original file line number Diff line number Diff line change @@ -32,6 +32,8 @@ export const dict = {
3232
3333 "ui.sessionTurn.retry.retrying" : "ponovni pokušaj" ,
3434 "ui.sessionTurn.retry.inSeconds" : "za {{seconds}}s" ,
35+ "ui.sessionTurn.error.freeUsageExceeded" : "Besplatna upotreba premašena" ,
36+ "ui.sessionTurn.error.addCredits" : "Dodaj kredite" ,
3537
3638 "ui.sessionTurn.status.delegating" : "Delegiranje posla" ,
3739 "ui.sessionTurn.status.planning" : "Planiranje sljedećih koraka" ,
Original file line number Diff line number Diff line change @@ -27,6 +27,8 @@ export const dict = {
2727
2828 "ui.sessionTurn.retry.retrying" : "prøver igen" ,
2929 "ui.sessionTurn.retry.inSeconds" : "om {{seconds}}s" ,
30+ "ui.sessionTurn.error.freeUsageExceeded" : "Gratis forbrug overskredet" ,
31+ "ui.sessionTurn.error.addCredits" : "Tilføj kreditter" ,
3032
3133 "ui.sessionTurn.status.delegating" : "Delegerer arbejde" ,
3234 "ui.sessionTurn.status.planning" : "Planlægger næste trin" ,
Original file line number Diff line number Diff line change @@ -31,6 +31,8 @@ export const dict = {
3131
3232 "ui.sessionTurn.retry.retrying" : "erneuter Versuch" ,
3333 "ui.sessionTurn.retry.inSeconds" : "in {{seconds}}s" ,
34+ "ui.sessionTurn.error.freeUsageExceeded" : "Kostenloses Nutzungslimit überschritten" ,
35+ "ui.sessionTurn.error.addCredits" : "Guthaben aufladen" ,
3436
3537 "ui.sessionTurn.status.delegating" : "Arbeit delegieren" ,
3638 "ui.sessionTurn.status.planning" : "Nächste Schritte planen" ,
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ export const dict = {
2828
2929 "ui.sessionTurn.retry.retrying" : "retrying" ,
3030 "ui.sessionTurn.retry.inSeconds" : "in {{seconds}}s" ,
31+ "ui.sessionTurn.error.freeUsageExceeded" : "Free usage exceeded" ,
32+ "ui.sessionTurn.error.addCredits" : "Add credits" ,
3133
3234 "ui.sessionTurn.status.delegating" : "Delegating work" ,
3335 "ui.sessionTurn.status.planning" : "Planning next steps" ,
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ export const dict = {
2828
2929 "ui.sessionTurn.retry.retrying" : "reintentando" ,
3030 "ui.sessionTurn.retry.inSeconds" : "en {{seconds}}s" ,
31+ "ui.sessionTurn.error.freeUsageExceeded" : "Límite de uso gratuito excedido" ,
32+ "ui.sessionTurn.error.addCredits" : "Añadir créditos" ,
3133
3234 "ui.sessionTurn.status.delegating" : "Delegando trabajo" ,
3335 "ui.sessionTurn.status.planning" : "Planificando siguientes pasos" ,
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ export const dict = {
2828
2929 "ui.sessionTurn.retry.retrying" : "nouvelle tentative" ,
3030 "ui.sessionTurn.retry.inSeconds" : "dans {{seconds}}s" ,
31+ "ui.sessionTurn.error.freeUsageExceeded" : "Limite d'utilisation gratuite dépassée" ,
32+ "ui.sessionTurn.error.addCredits" : "Ajouter des crédits" ,
3133
3234 "ui.sessionTurn.status.delegating" : "Délégation du travail" ,
3335 "ui.sessionTurn.status.planning" : "Planification des prochaines étapes" ,
You can’t perform that action at this time.
0 commit comments