BlueMapWebChat

A BlueMap web chat plugin with real-time chat, replies, custom emojis, media previews, and DiscordSRV support.

File Details

BlueMapWebChat-4.2.0.jar

  • R
  • Jun 28, 2026
  • 12.35 MB
  • 5
  • 26.2+16

File Name

BlueMapWebChat-4.2.0.jar

Supported Versions

  • 26.2
  • 26.1.2
  • 26.1.1
  • 26.1
  • 1.21.5-Snapshot
  • 1.21.11
  • 1.21.10
  • 1.21.9
  • 1.21.8
  • 1.21.7
  • 1.21.6
  • 1.21.5
  • 1.21.4
  • 1.21.3
  • 1.21.2
  • 1.21.1
  • 1.21

## 4.2.0

### SQLite history storage

- Added SQLite chat history storage and made `chat.history-storage: "sqlite"` the recommended/default backend for new configurations.
- Kept `jsonl` and `memory` history-storage modes for compatibility.
- Unified history retention settings so `chat.history-size` and `chat.history-retention-days` are used by `memory`, `jsonl`, and `sqlite`.
- Removed the old `chat.history-persist` and `chat.history-persist-retention-days` settings. Persistence is now selected only by `chat.history-storage`.
- Added `chat.history-sqlite-file` to control the SQLite DB file path. The default is `history.db` in the plugin data folder.
- Added `chat.history-sqlite-migrate-jsonl`; when enabled, an empty SQLite DB imports the existing legacy `chat.history-file` JSONL log once.
- Moved history paging, newer/older history loading, reply-jump lookup, deletion, pinned-message target lookup, retention cleanup, and search lookup to SQLite-backed queries when SQLite storage is enabled.
- Excluded SQLite messages marked as hidden from normal history, around-message lookup, and search results.
- Made SQLite writes asynchronous so web messages are broadcast to connected web clients immediately without waiting for DB insert/prune work.
- Reduced normal-send pruning overhead while keeping retention cleanup active in the background.

Changed history configuration:

```yml
chat:
  # History storage backend.
  # sqlite = recommended persistent storage for long-lived chat history and search.
  # jsonl = legacy single-file persistence using history-file.
  # memory = keep only in-memory history for the current server session.
  history-storage: "sqlite"
  # Shared by memory/jsonl/sqlite. 0 = unlimited by count.
  history-size: 0
  # Shared by memory/jsonl/sqlite. 0 = unlimited by age.
  history-retention-days: 5
  # JSONL history file. Relative paths are stored under the plugin data folder.
  history-file: "history.jsonl"
  # SQLite DB file. Relative paths are stored under the plugin data folder.
  history-sqlite-file: "history.db"
  # Import history-file into SQLite once when the DB is empty.
  history-sqlite-migrate-jsonl: true
```

Removed history configuration:

```yml
chat:
  history-persist: false
  history-persist-retention-days: 5
```

### Message search

- Added the `/history/search` API for searching message text, sender names, and stored display names, with optional date/time, sender, source, and system/event filters.
- Added the in-chat message search UI with an options section for date/time ranges, sender filtering, source filtering, and system/event inclusion, plus result-click jump using the existing history-around navigation.
- Moved the search button out of the crowded message input row and into the floating chat-panel area.
- Enlarged the search modal and added a scrollable results pane for easier review of long result sets.
- Applied chat font and theme variables to the search modal, inputs, buttons, status text, and result items so light/dark chat themes remain readable.
- Isolated search modal keyboard, wheel, touch, and pointer events from the BlueMap map while preserving search, close, and result-click handling.
- Localized i18n-backed system/event messages in search results and included the requested web UI language in search matching, so translated system messages can be found by their displayed text.
- Added `search.enabled` and `search.result-limit` settings for disabling search and controlling the search result count.
- `search.result-limit` is the only search result count limit. There is no separate search-result maximum setting or internal hard-coded maximum. Very large values are accepted but may be expensive.

New search configuration:

```yml
search:
  # Enable the web message search button and /history/search API.
  enabled: true
  # Number of search results returned by the web UI and /history/search API.
  # This is the only search result count limit. There is no separate internal maximum.
  # Setting this to 2000 returns up to 2000 results; setting it to 10 returns up to 10.
  # Very large values such as 10000 or 100000 are accepted, but can make searches slow,
  # increase response size, and add significant CPU, memory, and database load.
  # Recommended: 50-200 for normal use. Raise only when you need large admin searches.
  result-limit: 50
```

### Upgrade notes

- Existing `config.yml` files are not rewritten automatically. To use SQLite/search after upgrading from 4.1.1, add or merge the actual configuration blocks shown above.
- Because 4.2.0 changes history and search configuration significantly, the safest upgrade path is to stop the server, back up the existing `config.yml`, delete `config.yml`, start the server once to regenerate it, and then reapply your custom settings manually.
- Back up `history.jsonl`, `history.db`, `history.db-wal`, and `history.db-shm` before testing migration, changing storage backends, or editing the database manually.