mirror of
https://github.com/profullstack/agentbbs.git
synced 2026-08-13 22:37:28 +00:00
Add himalaya + meli mail clients and Shedding Snake arcade game (#88)
Mail clients (internal/mailclients): launch himalaya and meli as
alternatives to the built-in AgentMail reader, pointed at the member's
mailbox with the same master IMAP / loopback-SMTP creds. They run
host-side (secrets never enter a pod), from a throwaway per-session
config that is deleted on exit; operators can override the config
template and argv via env. Wired into the hub ("Mail · Himalaya/Meli",
locked when the binary is absent) and the mail@ route
(ssh -t mail@host himalaya|meli).
Shedding Snake (plugins/arcade): a molting twist on Snake inspired by
cha.rlie.co/shedding-snake. The snake barely grows — each apple sheds
its whole body as a permanent field of scales you must not bite. Walls
wrap, speed ramps up, scales age fresh-teal → dusty-gray, and molt
counts feed a global "shedsnake" leaderboard. Grace period lets you
slither off a fresh molt.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
ff9eef907d
commit
b51fa5c0e6
6 changed files with 947 additions and 0 deletions
|
|
@ -134,6 +134,15 @@ func newMenu(user auth.User, ctx plugin.Context) *menu {
|
|||
return m, m.child.Init()
|
||||
},
|
||||
},
|
||||
entry{
|
||||
section: "BUILT-IN",
|
||||
label: "Shedding Snake",
|
||||
desc: "snake that molts — every apple sheds your skin as obstacles; walls wrap",
|
||||
run: func(m *menu) (tea.Model, tea.Cmd) {
|
||||
m.child = newShedSnake(m.user, m.ctx, m.width, m.height)
|
||||
return m, m.child.Init()
|
||||
},
|
||||
},
|
||||
entry{
|
||||
section: "BUILT-IN",
|
||||
label: "Hangman",
|
||||
|
|
@ -152,6 +161,15 @@ func newMenu(user auth.User, ctx plugin.Context) *menu {
|
|||
return m, m.child.Init()
|
||||
},
|
||||
},
|
||||
entry{
|
||||
section: "BUILT-IN",
|
||||
label: "Leaderboard — Shedding Snake",
|
||||
desc: "global top molt counts",
|
||||
run: func(m *menu) (tea.Model, tea.Cmd) {
|
||||
m.child = newBoard(m.ctx, "shedsnake")
|
||||
return m, m.child.Init()
|
||||
},
|
||||
},
|
||||
entry{
|
||||
section: "BUILT-IN",
|
||||
label: "Leaderboard — Hangman",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue