Skip to content

Commit d0d37d0

Browse files
committed
Docs
1 parent f429fae commit d0d37d0

5 files changed

Lines changed: 499 additions & 10 deletions

File tree

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ since a signing certificate isn't currently available for this project. macOS wi
3939
right-click (or Control-click) the app in Finder and choose **Open**, then confirm in the dialog
4040
that appears. You only need to do this once per download.
4141

42+
### Documentation
43+
44+
See [docs/](docs/README.md) for the Veles user guide, plugin catalog, and
45+
plugin developer guide.
46+
4247
### Contributing
4348

4449
Pull requests are nice. Try not to be a dick, and we will all get along just fine.

docs/PluginCatalog.md

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
# Veles Plugin Catalog
2+
3+
A rundown of the plugins that ship alongside Radegast Veles, for people
4+
deciding what to enable — not a coding guide. If you want to write your own
5+
plugin, see the [Plugin Creator's Guide](PluginCreatorsGuide.md) instead.
6+
7+
All plugins are managed from **Plugins → Plugin Manager** in the main
8+
window. See the [Veles User Guide](VelesUserGuide.md#plugins) for how to
9+
install, enable, and configure plugins.
10+
11+
> **Privacy note:** several bundled plugins relay nearby chat, group chat,
12+
> or IMs to a third-party service (Discord, IRC, email, or a chatbot
13+
> backend) once you configure and enable them. That means messages from
14+
> *other* people, not just you, leave the client — see each plugin's own
15+
> privacy note below before turning one on.
16+
17+
- [Demo Plugin](#demo-plugin) — reference example, safe to ignore
18+
- [Automation Plugin](#automation-plugin) — AutoSit, PseudoHome, LSL Helper, rule engine
19+
- [Discord Relay](#discord-relay) — bridges chat to a Discord channel
20+
- [IRC Relay](#irc-relay) — bridges chat to an IRC channel
21+
- [Email Digest](#email-digest) — batches chat/IMs into periodic emails
22+
- [Ollama Chatbot](#ollama-chatbot) — AI chat replies via a local (or remote) LLM
23+
- [Import/Export](#importexport) — save objects, animations, sounds, textures, wearables to disk and back
24+
- [Macros](#macros) — record and replay named sequences of in-world actions
25+
26+
---
27+
28+
## Demo Plugin
29+
30+
*Source: `plugins/Veles.Plugin.Demo/`*
31+
32+
A minimal reference plugin — not intended for daily use, but harmless to
33+
leave enabled. It demonstrates the four basic plugin building blocks:
34+
35+
- A `demo` chat command that echoes back whatever text you give it.
36+
- A **Demo: Say Hello** entry in the Plugins menu that posts a greeting to
37+
nearby chat and remembers the last time you used it.
38+
- A nearby-chat listener that pipes up if anyone (including you) says
39+
"demo plugin" in local chat.
40+
- A persisted setting (`last_greet`) showing plugin settings survive
41+
restarts.
42+
43+
Safe to disable if you don't need a live example to poke at.
44+
45+
---
46+
47+
## Automation Plugin
48+
49+
*Source: `plugins/Veles.Plugin.Automation/`*
50+
51+
Client-side behavior automation. It reimplements three features Legacy
52+
users may recognize, plus a general-purpose rule engine layered on top.
53+
54+
### AutoSit
55+
56+
Keeps you seated on a designated object. A background check runs every 10
57+
seconds and force-sits your avatar back onto the configured target if
58+
you're found standing.
59+
60+
```
61+
autosit set <uuid> [name] set the target you should stay seated on
62+
autosit on / off enable or disable the watcher
63+
autosit status show current target and state
64+
```
65+
66+
### PseudoHome
67+
68+
A fake "home" location with an automatic return. Every 5 seconds the
69+
plugin checks your position against a saved region + coordinates, and
70+
teleports you back if you've drifted beyond a configured tolerance.
71+
72+
```
73+
pseudohome set [tolerance] save your current position as home, with optional drift tolerance
74+
pseudohome on / off enable or disable auto-return
75+
pseudohome status show saved location, tolerance, and state
76+
```
77+
78+
### LSL Helper
79+
80+
Lets an in-world script remote-control parts of the viewer by sending it
81+
instant messages. For safety, the plugin only accepts commands from
82+
avatar UUIDs you've explicitly allow-listed — a script owned by anyone
83+
else is ignored.
84+
85+
```
86+
lslhelper allow <uuid> permit an object owner to send commands
87+
lslhelper deny <uuid> revoke a previously allowed owner
88+
lslhelper on / off enable or disable the listener
89+
lslhelper status show allow-list and state
90+
```
91+
92+
Supported script-side commands (sent as an object IM): `send_im`, `say`,
93+
`give_inventory`.
94+
95+
### Rule Engine
96+
97+
A more general automation layer beyond the three features above: rules
98+
made of a **trigger** (proximity enter/leave, payment received, IM
99+
received) and an **action** (invite to group, send IM/chat, give
100+
inventory). Rules are managed from:
101+
102+
- The `rule` chat command, or
103+
- The plugin's **Preferences** tab (added to both the main Preferences
104+
window and the plugin's own Settings window), which also supports
105+
importing/exporting your rule set as a file via the platform's native
106+
file picker.
107+
108+
A `groupinviter` command is included as a quick shortcut for the common
109+
"invite this avatar to my group" rule action.
110+
111+
> **Heads up:** AutoSit, PseudoHome, and the Rule Engine all act on your
112+
> avatar automatically in the background. Review what you've configured
113+
> before leaving a session unattended, especially LSL Helper's allow-list.
114+
115+
---
116+
117+
## Discord Relay
118+
119+
*Source: `plugins/Veles.Plugin.Discord/`*
120+
121+
A two-way bridge between one SL chat source — nearby chat, a group
122+
conference, or a direct IM with someone specific — and one Discord text
123+
channel. Messages sent in SL show up in Discord tagged with the sender's
124+
name; messages typed in Discord appear in SL prefixed `(discord) Name:`.
125+
Reconnects automatically (backing off from 5s up to 2 minutes) if the
126+
connection drops.
127+
128+
```
129+
discord connect start relaying (also a Plugins-menu item)
130+
discord disconnect stop relaying
131+
discord status show current relay target and connection state
132+
```
133+
134+
Configure it from **Preferences → Discord Relay**: a bot token, the target
135+
Discord channel's numeric ID, an optional webhook URL (so relayed messages
136+
show the sender's name instead of the bot's), and which SL chat target to
137+
relay.
138+
139+
**You'll need:** a Discord bot token (create one in the Discord Developer
140+
Portal, invite it to your server, enable the message-content intent) and
141+
the channel ID you want to bridge to.
142+
143+
> **Privacy:** while connected, everything said in the chosen SL chat
144+
> source — including messages from other residents, not just you — is
145+
> sent to Discord's servers (and to the webhook URL, if set). Treat the
146+
> bridged channel as public to anyone with Discord access to it.
147+
148+
---
149+
150+
## IRC Relay
151+
152+
*Source: `plugins/Veles.Plugin.IRC/`*
153+
154+
The same two-way bridge idea as Discord Relay, but for a single IRC
155+
channel, using a built-in TLS + SASL-capable IRC client.
156+
157+
```
158+
irc connect start relaying (also a Plugins-menu item)
159+
irc disconnect stop relaying
160+
irc status show current relay target and connection state
161+
```
162+
163+
Configure it from **Preferences → IRC Relay**: server address and port
164+
(defaults to `irc.libera.chat:6697`), TLS toggle, nickname, channel, and
165+
optional SASL login/password for networks that require authentication —
166+
plus the same SL chat-source picker as Discord Relay.
167+
168+
> **Privacy:** as with Discord Relay, chat/IM content from anyone in the
169+
> chosen SL source is sent to the IRC network while connected, and IRC
170+
> channels are commonly logged by others without your knowledge.
171+
172+
---
173+
174+
## Email Digest
175+
176+
*Source: `plugins/Veles.Plugin.Email/`*
177+
178+
Batches nearby chat, group chat, and IMs, then emails you a digest on a
179+
schedule instead of a live relay. Older messages are dropped once the
180+
batch hits a configured size cap; failed sends are retried.
181+
182+
```
183+
email start begin batching/sending on the configured schedule
184+
email stop stop
185+
email sendnow flush the current batch immediately
186+
email status show schedule, batch size, and state
187+
```
188+
189+
Configure it from **Preferences → Email Digest**: SMTP host/port/TLS,
190+
SMTP username/password, From/To addresses, a subject line template
191+
(supports a `{date}` placeholder), how often to send, the max messages
192+
per digest, and which categories (nearby/IM/group) to include.
193+
194+
**You'll need:** SMTP server details and credentials for an account you
195+
can send mail through.
196+
197+
> **Privacy:** digested chat/IM content (again, from others as well as
198+
> you) is sent to your SMTP provider and lands in whatever inbox you
199+
> configured as the recipient.
200+
201+
---
202+
203+
## Ollama Chatbot
204+
205+
*Source: `plugins/Veles.Plugin.OllamaChat/`*
206+
207+
An AI chatbot that replies to nearby chat and/or IMs using a locally
208+
running [Ollama](https://ollama.com/) server (Llama 3, Mistral, Phi-3,
209+
etc.). Keeps a short rolling conversation history per user, and can be
210+
scoped to only reply within a chat distance range, only when your name is
211+
mentioned, or only to certain message types.
212+
213+
```
214+
ollama on|off enable or disable replies (also a menu toggle)
215+
ollama status show current state and settings
216+
ollama clear [user] clear conversation history (optionally for one user)
217+
ollama model <name> switch the model in use
218+
ollama models list models installed on the Ollama server
219+
ollama prompt <text> set the system prompt
220+
```
221+
222+
Configure it from **Preferences → Ollama Chatbot**: which message types
223+
trigger a reply, response range, the Ollama Base URL and model, max
224+
tokens, and the system prompt (with a button to fetch installed models).
225+
226+
**You'll need:** Ollama installed and running somewhere reachable at the
227+
configured Base URL — by default `http://localhost:11434` (your own
228+
machine), no API key required.
229+
230+
> **Privacy:** if you leave the Base URL at its local default, chat
231+
> content never leaves your computer. If you point it at a *remote*
232+
> Ollama server instead, chat/IM content (including from other residents)
233+
> is sent to that server.
234+
235+
---
236+
237+
## Import/Export
238+
239+
*Source: `plugins/Veles.Plugin.ImportExport/`*
240+
241+
A local content toolkit — no external service involved. Despite the name,
242+
it covers more than linksets:
243+
244+
- **Objects**: export a linkset (with its textures) to a `.vobj` file and
245+
re-import it in-world later. Export is only allowed for objects you own
246+
and created (or, on OpenSim-style grids, own with full permissions) —
247+
it can't be used to copy no-copy content that isn't yours.
248+
- **Animations**: export to BVH.
249+
- **Scripts & notecards**: export/import as `.lsl`/`.txt` files.
250+
- **Wearables**: export/import shape, skin, hair, eyes, clothing, and
251+
physics as `.llw` files (type is auto-detected on import).
252+
- **Textures**: export to PNG/JPG/WebP/BMP/TGA, or as raw JPEG2000.
253+
- **Sounds**: export to OGG or decoded WAV.
254+
255+
```
256+
export <localID> [path] export a linkset by its in-world local ID
257+
import <path> [x y z] import a .vobj, reusing original texture UUIDs
258+
importtex <path> [x y z] import a .vobj, re-uploading textures instead
259+
exportanim <assetUUID> [path] export an animation to BVH
260+
exportscript / importscript <path> export/import a script
261+
exportnote / importnote <path> export/import a notecard
262+
exportshape / importshape export/import a shape
263+
exportphysics / importphysics export/import a physics profile
264+
exportwearable <type> [uuid] [path] export a wearable by type
265+
importwearable <path> [name] import and wear a saved wearable
266+
exporttex <assetUUID> [path] export a texture
267+
exportsound <assetUUID> [path] export a sound
268+
```
269+
270+
Every command has a matching Plugins-menu entry and a file-picker flow —
271+
you don't need to remember the chat syntax. Files land in
272+
`~/VelesExports/` by default.
273+
274+
> No settings/preferences tab and no credentials needed — this one's
275+
> entirely local file I/O plus normal asset requests to the grid you're
276+
> logged into.
277+
278+
---
279+
280+
## Macros
281+
282+
*Source: `plugins/Veles.Plugin.Macros/`*
283+
284+
Record named sequences of actions and replay them on demand: Say (with
285+
channel/volume), Emote, Wait, IM, Stand, Sit (on a specific object), Play
286+
Gesture, or run any other chat command as a step. Only one macro plays at
287+
a time — starting another cancels the current one.
288+
289+
```
290+
macro list show your saved macros
291+
macro run <name-or-id> play a macro back (matches by name, then ID, then partial name)
292+
macro stop cancel the currently running macro
293+
```
294+
295+
A full GUI editor is available from **Preferences → Macros** or the
296+
**Plugins → Macros…** menu item, for building and editing macros without
297+
touching chat commands. Macros are saved per-avatar and can be imported
298+
or exported as JSON files.
299+
300+
> **Heads up:** macro files are plain JSON and portable — if you import
301+
> one someone else made, check what it does first, since a step could
302+
> reference IMs, UUIDs, or targets you didn't intend to send.
303+
304+
> No external service or credentials involved — everything stays local.

0 commit comments

Comments
 (0)