@@ -18,6 +18,7 @@ import { findCliPath, loadEndpoints, saveEndpoint, removeEndpoint, endpointDispl
1818const IS_WINDOWS = process . platform === "win32" ;
1919
2020function backendEmoji ( backend : string , ep ?: EndpointConfig ) : string {
21+ if ( ep ?. emoji ) return ep . emoji ;
2122 const cli = ep ?. cli || backend ;
2223 if ( cli === "claude" || backend === "claude" ) return "⚡" ;
2324 if ( cli === "gemini" || backend === "gemini" ) return "💎" ;
@@ -875,6 +876,46 @@ export function createProxy(config: Config) {
875876 }
876877 }
877878
879+ // /emoji — set custom emoji for current endpoint
880+ const emojiMatch = trimmed . match ( / ^ \/ e m o j i \s * ( .* ) / i) ;
881+ if ( emojiMatch !== null ) {
882+ const emojiArg = emojiMatch [ 1 ] . trim ( ) ;
883+ if ( ! emojiArg ) {
884+ const current = backendEmoji ( config . backend , config . endpointConfig ) ;
885+ sessionClient . send ( `Current emoji for ${ config . backend } : ${ current } \n\nUsage: /emoji <emoji> or /emoji default` ) . catch ( ( ) => { } ) ;
886+ return ;
887+ }
888+ const endpoints = loadEndpoints ( ) ;
889+ const ep = endpoints [ config . backend ] ;
890+ if ( emojiArg . toLowerCase ( ) === "default" ) {
891+ if ( ep ) {
892+ delete ep . emoji ;
893+ saveEndpoint ( config . backend , ep ) ;
894+ }
895+ if ( config . endpointConfig ) delete config . endpointConfig . emoji ;
896+ const def = backendEmoji ( config . backend , config . endpointConfig ) ;
897+ sessionClient . send ( `Reset ${ config . backend } emoji to default: ${ def } ` ) . catch ( ( ) => { } ) ;
898+ } else {
899+ const newEmoji = emojiArg ;
900+ if ( ep ) {
901+ ep . emoji = newEmoji ;
902+ saveEndpoint ( config . backend , ep ) ;
903+ } else {
904+ // Auto-detected endpoint (claude/gemini/codex) — create a config entry to persist the emoji
905+ const cli = config . endpointConfig ?. cli || config . backend ;
906+ saveEndpoint ( config . backend , { type : "cli" , cli, emoji : newEmoji } ) ;
907+ }
908+ if ( config . endpointConfig ) {
909+ config . endpointConfig . emoji = newEmoji ;
910+ } else {
911+ config . endpointConfig = { type : "cli" , cli : config . backend , emoji : newEmoji } ;
912+ }
913+ sessionClient . send ( `Set ${ config . backend } emoji to ${ newEmoji } ` ) . catch ( ( ) => { } ) ;
914+ }
915+ watchLog ( `🎨 Emoji for ${ config . backend } : ${ backendEmoji ( config . backend , config . endpointConfig ) } ` ) ;
916+ return ;
917+ }
918+
878919 // /model — switch model (bypass queue)
879920 const modelMatch = trimmed . match ( / ^ \/ m o d e l \s * ( .* ) / i) ;
880921 if ( modelMatch !== null ) {
0 commit comments