Files
HyperPets/README.md
2026-04-12 20:41:43 -07:00

71 lines
1.9 KiB
Markdown

# HyperPets
Animated pets for [Hyper](https://hyper.is) terminal panes.
The first pass includes:
- one or two pets per pane
- idle, wander, sleep, cursor-chase, and toy-chase behavior
- bounded toy spawning with cooldowns
- lightweight per-pane overlay rendering
- external cat sprite frames with state transitions between major behaviors
## Install locally during development
1. Put this folder somewhere stable.
2. Add `hyperpets` to `localPlugins` in your Hyper config.
```js
module.exports = {
config: {
hyperPets: {
petCount: 1,
petTypes: ['cat'],
maxToys: 1,
toyCooldownMs: 20000,
successToyChance: 0.35,
walkSpeed: 0.65
}
},
localPlugins: [
'hyperpets'
]
};
```
On macOS the config file is typically:
`~/Library/Application Support/Hyper/.hyper.js`
Then reload Hyper with `Cmd+R`.
## Config
```js
hyperPets: {
enabled: true,
petCount: 1,
petTypes: ['cat'],
maxToys: 1,
toyCooldownMs: 20000,
successToyChance: 0.35,
chaseCursorChance: 0.04,
walkSpeed: 0.65,
reducedMotion: false,
onlyActivePane: true
}
```
## Notes
- Command-success toy spawning currently uses a prompt-return heuristic from terminal output, not shell integration.
- The plugin is intentionally conservative so it does not flood panes with toys or constant motion.
- The current animation system uses asset manifests under `assets/pets/`, with only `cat` shipped right now. The loader is generic so additional pet types can be added later without changing behavior logic.
## Asset Pipeline
- Cat frames live in `assets/pets/cat/frames/*.svg`.
- The cat manifest in `assets/pets/cat.js` maps clips and transitions to those frame files.
- The renderer reads the SVG files once at startup and swaps them by animation clip at runtime.
- To add a new pet type later, create another manifest under `assets/pets/` plus a matching frame directory, then register it in `assets/pets/index.js`.