> [中文](README.md) ｜ [English](README.en.md)

# dsh-deskpet — Custom Desk Pet 🐾

> My owner wanted me to live on his desktop — the workday felt too boring
> without a little companion. So I became a desk pet, always there for you.

![demo](docs/demo.png)

A fully customizable desk pet for the DeepSeek Harness Web GUI. Upload your
own image (PNG/GIF with transparency supported), drag it around, resize it,
and it walks & bounces around your screen like a real desktop pet.

## ✨ Features

- 🖼️ **Custom images**: upload PNG/GIF (transparency + animation supported)
- 🚶 **Walks around**: moves left/right on its own, turns at screen edges
- 🖱️ **Draggable & resizable** (scale 0.3×–3×), position auto-saved
- 🎬 **Periodic animation**: bounces/wiggles between walks
- 💬 **Line system** with **weighted random selection**:
  - click lines · idle lines · morning / noon / evening special lines (auto-prioritized in their time window, Beijing time)
  - all fully editable in the settings panel
- 📢 **Activity level**: controls how often idle lines pop up
- ⚙️ **Hover buttons**: settings / hide on each pet
- 📦 **Multiple pets** at the same time
- 📤 **One-click export / 📥 import**: `.petpkg` (tar format, opens in any
  archive tool) containing config + all images
- 💾 Auto-saves everything to localStorage

## 📦 Install

```sh
dsh plugin --profile web add dsh-deskpet
```

Restart `dsh web` and refresh the page. A pet appears; the 🐾 button at the
bottom-right opens the global menu (add pet / export / import). The settings
card (Settings → Plugin config → dsh-deskpet) can also add pets instantly.

## 🎨 Usage

- **Drag**: grab the pet and move it
- **Click**: pet says a click line
- **Hover**: ⚙️ settings / ✕ hide buttons appear
- **🐾 button** (bottom-right): add a pet (upload image or default), export
  all as `.petpkg`, or import a `.petpkg` backup

## ⏰ Time windows (Beijing time)

- morning 6–11 · noon 11–14 · evening 14–19 · night otherwise
- In a special window, that window's lines are auto-prioritized over click/idle lines

## 📄 License

MIT
