Keep a guestbook at every landmark #171

Open
opened 2026-10-25 02:38:30 +00:00 by sermuns · 0 comments
Owner

The campus has names everywhere — sculptures, buildings, the tower, the orchard — but they are mute. A guestbook gives each landmark a page: a short note, a name and a time, written when someone interacts with it. Read the page and you see who stood here before you. The newest notes replace the oldest, and the chat sanitizer is the only moderation rule.

How it fits. Landmarks are already baked props with names and positions, and interactions already resolve the prop under the crosshair. The page is server state keyed by a stable landmark identity; the client renders it in an egui panel. Persistence is a flat file snapshot next to the server's config, written on a timer, so a restart does not erase the campus's memory.

Scope.

  • A stable key per landmark (kind, position, name) so the page survives a rebake when the landmark does.
  • Write, read and rate-limit; reuse liuverse-protocol::chat::sanitize.
  • Show the newest notes, capped, with the writer's name and a relative time.
  • Offline, a local page so the feature is visible without a server.
  • Do not turn the guestbook into global chat; it belongs to a place.

Related. #202 (newspaper), #203 (surface notes), #200 (records).

The campus has names everywhere — sculptures, buildings, the tower, the orchard — but they are mute. A guestbook gives each landmark a page: a short note, a name and a time, written when someone interacts with it. Read the page and you see who stood here before you. The newest notes replace the oldest, and the chat sanitizer is the only moderation rule. **How it fits.** Landmarks are already baked props with names and positions, and interactions already resolve the prop under the crosshair. The page is server state keyed by a stable landmark identity; the client renders it in an egui panel. Persistence is a flat file snapshot next to the server's config, written on a timer, so a restart does not erase the campus's memory. **Scope.** - A stable key per landmark (kind, position, name) so the page survives a rebake when the landmark does. - Write, read and rate-limit; reuse `liuverse-protocol::chat::sanitize`. - Show the newest notes, capped, with the writer's name and a relative time. - Offline, a local page so the feature is visible without a server. - Do not turn the guestbook into global chat; it belongs to a place. **Related.** #202 (newspaper), #203 (surface notes), #200 (records).
Sign in to join this conversation.
No description provided.