@@ -118,12 +118,12 @@ const (
118118	apiSearchEndpoint      =  "https://api.github.com/search/issues" 
119119	apiPullsEndpoint       =  "https://api.github.com/repos/%s/%s/pulls/%d" 
120120	defaultSprinklerURL    =  "wss://hook.g.robot-army.dev/ws" 
121- 	maxConcurrent          =  20              // Increased for better throughput 
122- 	cacheTTL               =  24  *  time .Hour  // 24 hours  
123- 	prRefreshCooldownSecs  =  1               // Avoid refreshing same PR within 1 second 
124- 	maxOrgNameLength       =  39              // GitHub org name limit 
125- 	minTokenLength         =  10              // Minimum GitHub token length 
126- 	maxIdleConnsPerHost    =  10              // HTTP client setting 
121+ 	maxConcurrent          =  20                    // Increased for better throughput 
122+ 	cacheTTL               =  10   *   24  *  time .Hour  // 10 days  
123+ 	prRefreshCooldownSecs  =  1                     // Avoid refreshing same PR within 1 second 
124+ 	maxOrgNameLength       =  39                    // GitHub org name limit 
125+ 	minTokenLength         =  10                    // Minimum GitHub token length 
126+ 	maxIdleConnsPerHost    =  10                    // HTTP client setting 
127127	idleConnTimeout        =  90  *  time .Second 
128128	minPRURLParts          =  6      // Minimum parts in PR URL 
129129	minOrgURLParts         =  4      // Minimum parts in org URL 
@@ -1228,7 +1228,7 @@ func formatPR(pr *PR, username string) string {
12281228		output .WriteString (lipgloss .NewStyle ().
12291229			Foreground (lipgloss .Color ("#E5484D" )). // Modern red 
12301230			Bold (true ).
1231- 			Render ("‣  " ))
1231+ 			Render ("►  " ))
12321232	} else  if  isBlocking  {
12331233		// Yellow bullet for regular next action 
12341234		output .WriteString (lipgloss .NewStyle ().
@@ -1285,37 +1285,42 @@ func formatPR(pr *PR, username string) string {
12851285
12861286	// Add NextAction kinds if available 
12871287	if  pr .TurnResponse  !=  nil  &&  pr .TurnResponse .Analysis .NextAction  !=  nil  {
1288- 		var  actionKinds  []string 
1289- 		var  userHasAction   bool 
1288+ 		var  userActionKinds  []string 
1289+ 		var  otherCriticalKinds  [] string 
12901290		var  userActionCritical  bool 
1291+ 		seen  :=  make (map [string ]bool )
12911292
1292- 		// Check if  current user has  actions - if so, only show those  
1293+ 		// First, collect  current user's  actions 
12931294		if  userAction , hasUserAction  :=  pr .TurnResponse .Analysis .NextAction [username ]; hasUserAction  {
1294- 			// Only show current user's action 
1295- 			actionKinds  =  append (actionKinds , string (userAction .Kind ))
1296- 			userHasAction  =  true 
1297- 			userActionCritical  =  userAction .Critical 
1298- 		} else  {
1299- 			// Show all unique action kinds from all users 
1300- 			seen  :=  make (map [string ]bool )
1301- 			for  _ , action  :=  range  pr .TurnResponse .Analysis .NextAction  {
1295+ 			kind  :=  string (userAction .Kind )
1296+ 			if  ! seen [kind ] {
1297+ 				userActionKinds  =  append (userActionKinds , kind )
1298+ 				seen [kind ] =  true 
1299+ 				userActionCritical  =  userAction .Critical 
1300+ 			}
1301+ 		}
1302+ 
1303+ 		// Then collect critical actions from other users (avoiding duplicates) 
1304+ 		for  user , action  :=  range  pr .TurnResponse .Analysis .NextAction  {
1305+ 			if  user  !=  username  &&  action .Critical  {
13021306				kind  :=  string (action .Kind )
13031307				if  ! seen [kind ] {
1308+ 					otherCriticalKinds  =  append (otherCriticalKinds , kind )
13041309					seen [kind ] =  true 
1305- 					actionKinds  =  append (actionKinds , kind )
13061310				}
13071311			}
13081312		}
13091313
1310- 		if  len (actionKinds ) >  0  {
1314+ 		// Display actions if any exist 
1315+ 		if  len (userActionKinds ) >  0  ||  len (otherCriticalKinds ) >  0  {
13111316			// Dark grey emdash 
13121317			output .WriteString (lipgloss .NewStyle ().
13131318				Foreground (lipgloss .Color ("#6B6B6B" )). // Dark grey 
13141319				Render (" — " ))
13151320
1316- 			// Color the action based on whether it's the  user's action and its criticality  
1317- 			actionText   :=   strings . Join ( actionKinds ,  " " ) 
1318- 			if   userHasAction  { 
1321+ 			// Display  user's actions first with appropriate color  
1322+ 			if   len ( userActionKinds )  >   0  { 
1323+ 				 actionText   :=   strings . Join ( userActionKinds ,  " " ) 
13191324				if  userActionCritical  {
13201325					// Red for critical user action 
13211326					output .WriteString (lipgloss .NewStyle ().
@@ -1327,8 +1332,14 @@ func formatPR(pr *PR, username string) string {
13271332						Foreground (lipgloss .Color ("#FFB224" )).
13281333						Render (actionText ))
13291334				}
1330- 			} else  {
1331- 				// Dark grey for others' actions 
1335+ 			}
1336+ 
1337+ 			// Display other critical actions in dark grey 
1338+ 			if  len (otherCriticalKinds ) >  0  {
1339+ 				if  len (userActionKinds ) >  0  {
1340+ 					output .WriteString (" " ) // Space between user and other actions 
1341+ 				}
1342+ 				actionText  :=  strings .Join (otherCriticalKinds , " " )
13321343				output .WriteString (lipgloss .NewStyle ().
13331344					Foreground (lipgloss .Color ("#6B6B6B" )).
13341345					Render (actionText ))
0 commit comments