splashLines builds the identity block for tea.Println. Below wordmarkWidth the ASCII art soft-wraps into garbage, so collapse to plain text.
()
| 271 | m.renderStatusBar(), |
| 272 | ) |
| 273 | return strings.Join(pieces, "\n") |
| 274 | } |
| 275 | |
| 276 | // splashLines builds the identity block for tea.Println. Below wordmarkWidth |
| 277 | // the ASCII art soft-wraps into garbage, so collapse to plain text. |
| 278 | func (m Model) splashLines() []string { |
| 279 | const wordmarkWidth = 70 // cells needed for CODE+HAMR side-by-side |
| 280 | if m.width >= wordmarkWidth { |
| 281 | lines := []string{""} |
| 282 | for i := range splashCode { |
| 283 | lines = append(lines, " "+styleDim.Render(splashCode[i])+styleHamr.Render(splashHamr[i])) |
| 284 | } |
| 285 | lines = append(lines, |
| 286 | "", styleDim.Render(" It's hamr time!"), |
| 287 | "", styleDim.Render(fmt.Sprintf(" codehamr %s · %s @ %s", |
| 288 | m.Version, m.cfg.ActiveProfile().LLM, m.cfg.Active)), |
| 289 | "", |
| 290 | styleDim.Render(" AI systems can make mistakes. Codehamr executes their commands with full shell and filesystem access."), |
| 291 | styleDim.Render(" Run inside a devcontainer or VM where it cannot cause damage outside the sandbox."), |
| 292 | "", |
| 293 | ) |
| 294 | return lines |
| 295 | } |
| 296 | return []string{ |
| 297 | "", |
| 298 | styleHamr.Render(" codehamr"), |
| 299 | styleDim.Render(fmt.Sprintf(" %s · %s @ %s", |
| 300 | m.Version, m.cfg.ActiveProfile().LLM, m.cfg.Active)), |
| 301 | "", |
| 302 | styleDim.Render(" Sandboxed AI shell - run in a devcontainer or VM."), |
| 303 | "", |
no test coverage detected