Centralize role emojis: Witness 👁→🦉, Deacon 🦉→🐺
Added centralized emoji constants in internal/constants/constants.go for easy customization. Updated all files that hardcoded role emojis to use the new constants. Changes: - Witness emoji: 👁 (eye) → 🦉 (owl) - less creepy, matches visual identity - Deacon emoji: 🦉 (owl) → 🐺 (wolf) - matches hierarchy prompt (wolf in engine room) - Added RoleEmoji() helper function for string-based lookups - Maintained backwards compatibility with legacy role names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
committed by
Steve Yegge
parent
1e53cd78a6
commit
721b4ec1dd
@@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/steveyegge/gastown/internal/constants"
|
||||
"github.com/steveyegge/gastown/internal/lock"
|
||||
"github.com/steveyegge/gastown/internal/style"
|
||||
"github.com/steveyegge/gastown/internal/tmux"
|
||||
@@ -47,13 +48,14 @@ var AgentTypeColors = map[AgentType]string{
|
||||
}
|
||||
|
||||
// AgentTypeIcons maps agent types to display icons.
|
||||
// Uses centralized emojis from constants package.
|
||||
var AgentTypeIcons = map[AgentType]string{
|
||||
AgentMayor: "🎩",
|
||||
AgentDeacon: "🦉",
|
||||
AgentWitness: "👁",
|
||||
AgentRefinery: "🏭",
|
||||
AgentCrew: "👷",
|
||||
AgentPolecat: "😺",
|
||||
AgentMayor: constants.EmojiMayor,
|
||||
AgentDeacon: constants.EmojiDeacon,
|
||||
AgentWitness: constants.EmojiWitness,
|
||||
AgentRefinery: constants.EmojiRefinery,
|
||||
AgentCrew: constants.EmojiCrew,
|
||||
AgentPolecat: constants.EmojiPolecat,
|
||||
}
|
||||
|
||||
var agentsCmd = &cobra.Command{
|
||||
|
||||
@@ -70,7 +70,7 @@ Event symbols:
|
||||
✓ completed - Issue closed or step completed
|
||||
✗ failed - Step or issue failed
|
||||
⊘ deleted - Issue removed
|
||||
👁 patrol_started - Witness began patrol cycle
|
||||
🦉 patrol_started - Witness began patrol cycle
|
||||
⚡ polecat_nudged - Worker was nudged
|
||||
🎯 sling - Work was slung to worker
|
||||
🤝 handoff - Session handed off
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/steveyegge/gastown/internal/beads"
|
||||
"github.com/steveyegge/gastown/internal/constants"
|
||||
"github.com/steveyegge/gastown/internal/events"
|
||||
"github.com/steveyegge/gastown/internal/lock"
|
||||
"github.com/steveyegge/gastown/internal/style"
|
||||
@@ -871,7 +872,7 @@ func outputWitnessPatrolContext(ctx RoleContext) {
|
||||
PatrolMolName: "mol-witness-patrol",
|
||||
BeadsDir: ctx.WorkDir,
|
||||
Assignee: ctx.Rig + "/witness",
|
||||
HeaderEmoji: "👁",
|
||||
HeaderEmoji: constants.EmojiWitness,
|
||||
HeaderTitle: "Witness Patrol Status",
|
||||
CheckInProgress: true,
|
||||
WorkLoopSteps: []string{
|
||||
|
||||
@@ -316,16 +316,17 @@ func outputStatusText(status TownStatus) error {
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
// Role icons
|
||||
// Role icons - uses centralized emojis from constants package
|
||||
roleIcons := map[string]string{
|
||||
"mayor": "🎩",
|
||||
"coordinator": "🎩",
|
||||
"deacon": "🔔",
|
||||
"health-check": "🔔",
|
||||
"witness": "👁",
|
||||
"refinery": "🏭",
|
||||
"crew": "👷",
|
||||
"polecat": "😺",
|
||||
constants.RoleMayor: constants.EmojiMayor,
|
||||
constants.RoleDeacon: constants.EmojiDeacon,
|
||||
constants.RoleWitness: constants.EmojiWitness,
|
||||
constants.RoleRefinery: constants.EmojiRefinery,
|
||||
constants.RoleCrew: constants.EmojiCrew,
|
||||
constants.RolePolecat: constants.EmojiPolecat,
|
||||
// Legacy names for backwards compatibility
|
||||
"coordinator": constants.EmojiMayor,
|
||||
"health-check": constants.EmojiDeacon,
|
||||
}
|
||||
|
||||
// Global Agents (Mayor, Deacon)
|
||||
|
||||
@@ -125,6 +125,48 @@ const (
|
||||
RoleDeacon = "deacon"
|
||||
)
|
||||
|
||||
// Role emojis - centralized for easy customization.
|
||||
// These match the Gas Town visual identity (see ~/Desktop/Gas Town/ prompts).
|
||||
const (
|
||||
// EmojiMayor is the mayor emoji (fox conductor).
|
||||
EmojiMayor = "🎩"
|
||||
|
||||
// EmojiDeacon is the deacon emoji (wolf in the engine room).
|
||||
EmojiDeacon = "🐺"
|
||||
|
||||
// EmojiWitness is the witness emoji (watchful owl).
|
||||
EmojiWitness = "🦉"
|
||||
|
||||
// EmojiRefinery is the refinery emoji (industrial).
|
||||
EmojiRefinery = "🏭"
|
||||
|
||||
// EmojiCrew is the crew emoji (established worker).
|
||||
EmojiCrew = "👷"
|
||||
|
||||
// EmojiPolecat is the polecat emoji (transient worker).
|
||||
EmojiPolecat = "😺"
|
||||
)
|
||||
|
||||
// RoleEmoji returns the emoji for a given role name.
|
||||
func RoleEmoji(role string) string {
|
||||
switch role {
|
||||
case RoleMayor:
|
||||
return EmojiMayor
|
||||
case RoleDeacon:
|
||||
return EmojiDeacon
|
||||
case RoleWitness:
|
||||
return EmojiWitness
|
||||
case RoleRefinery:
|
||||
return EmojiRefinery
|
||||
case RoleCrew:
|
||||
return EmojiCrew
|
||||
case RolePolecat:
|
||||
return EmojiPolecat
|
||||
default:
|
||||
return "❓"
|
||||
}
|
||||
}
|
||||
|
||||
// SupportedShells lists shell binaries that Gas Town can detect and work with.
|
||||
// Used to identify if a tmux pane is at a shell prompt vs running a command.
|
||||
var SupportedShells = []string{"bash", "zsh", "sh", "fish", "tcsh", "ksh"}
|
||||
|
||||
@@ -581,13 +581,19 @@ func (t *Tmux) ApplyTheme(session string, theme Theme) error {
|
||||
}
|
||||
|
||||
// roleIcons maps role names to display icons for the status bar.
|
||||
// Uses centralized emojis from constants package.
|
||||
// Includes legacy keys ("coordinator", "health-check") for backwards compatibility.
|
||||
var roleIcons = map[string]string{
|
||||
"coordinator": "🎩", // Mayor
|
||||
"health-check": "🦉", // Deacon
|
||||
"witness": "👁",
|
||||
"refinery": "🏭",
|
||||
"crew": "👷",
|
||||
"polecat": "😺",
|
||||
// Standard role names (from constants)
|
||||
constants.RoleMayor: constants.EmojiMayor,
|
||||
constants.RoleDeacon: constants.EmojiDeacon,
|
||||
constants.RoleWitness: constants.EmojiWitness,
|
||||
constants.RoleRefinery: constants.EmojiRefinery,
|
||||
constants.RoleCrew: constants.EmojiCrew,
|
||||
constants.RolePolecat: constants.EmojiPolecat,
|
||||
// Legacy names (for backwards compatibility)
|
||||
"coordinator": constants.EmojiMayor,
|
||||
"health-check": constants.EmojiDeacon,
|
||||
}
|
||||
|
||||
// SetStatusFormat configures the left side of the status bar.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
// Package feed provides a TUI for the Gas Town activity feed.
|
||||
package feed
|
||||
|
||||
import "github.com/charmbracelet/lipgloss"
|
||||
import (
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/steveyegge/gastown/internal/constants"
|
||||
)
|
||||
|
||||
// Color palette
|
||||
var (
|
||||
@@ -96,14 +99,14 @@ var (
|
||||
BorderForeground(colorPrimary).
|
||||
Padding(0, 1)
|
||||
|
||||
// Role icons
|
||||
// Role icons - uses centralized emojis from constants package
|
||||
RoleIcons = map[string]string{
|
||||
"mayor": "🎩",
|
||||
"witness": "👁",
|
||||
"refinery": "🏭",
|
||||
"crew": "👷",
|
||||
"polecat": "😺",
|
||||
"deacon": "🔔",
|
||||
constants.RoleMayor: constants.EmojiMayor,
|
||||
constants.RoleWitness: constants.EmojiWitness,
|
||||
constants.RoleRefinery: constants.EmojiRefinery,
|
||||
constants.RoleCrew: constants.EmojiCrew,
|
||||
constants.RolePolecat: constants.EmojiPolecat,
|
||||
constants.RoleDeacon: constants.EmojiDeacon,
|
||||
}
|
||||
|
||||
// MQ event styles
|
||||
@@ -130,7 +133,7 @@ var (
|
||||
"delete": "⊘",
|
||||
"pin": "📌",
|
||||
// Witness patrol events
|
||||
"patrol_started": "👁",
|
||||
"patrol_started": constants.EmojiWitness,
|
||||
"patrol_complete": "✓",
|
||||
"polecat_checked": "·",
|
||||
"polecat_nudged": "⚡",
|
||||
|
||||
Reference in New Issue
Block a user