From 8636cca52e1d54dcd1450898d659bac0176285dc Mon Sep 17 00:00:00 2001 From: indifferentketchup <159190319+indifferentketchup@users.noreply.github.com> Date: Tue, 7 Apr 2026 01:56:01 -0500 Subject: [PATCH] test --- FEATURES.md | 7 ++++--- README.md | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/FEATURES.md b/FEATURES.md index aa1b4c6..81637a8 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -75,11 +75,12 @@ Broccolini Bot is a Discord support bot that turns Gmail emails and Discord mess --- -## Logging, API & Configuration +## Settings UI, Logging, API & Configuration -**Summary:** Centralizes configuration in environment variables and exposes optional integrations. +**Summary:** Provides a web UI plus environment-based configuration and optional integrations. -- All behavior configured via `.env` and `config.js` (messages, colors, timeouts, limits) +- Optional Broccolini settings web UI (`settings-site/`) to edit Discord channels, categories, Gmail credentials, ticket behavior, surge alerts, pattern thresholds, appearance, and advanced options without touching `.env` +- All behavior still backed by `.env` and `config.js` (messages, colors, timeouts, limits) - Dedicated Discord channels for transcripts, logs, security, automation, and Gmail polling - Optional HTTP API under `/api` with token-based auth - Healthcheck endpoint (`GET /`) for Docker and load balancers diff --git a/README.md b/README.md index 890ea00..1766ed7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A **Node.js** Discord bot that unifies **Gmail**, **Discord**, and **MongoDB** f Built for game-server hosting support (Indifferent Broccoli), with game detection from email content, tiered escalation, optional **per-staff notification channels** (reply alerts with cooldown + unclaimed-ticket digests), saved responses, `/tag` categorization, claimer emoji in channel names (`STAFF_EMOJIS`), and automation (auto-close, reminders, auto-unclaim, claim timeout). -**Jump to:** [Features](#features) · [Quick start](#quick-start) · [Configuration](#configuration) · [Staff notifications](#staff-notification-channels--reply-alerts) · [Commands](#discord-commands) · [Project layout](#project-structure) +**Jump to:** [Features](#features) · [Quick start](#quick-start) · [Configuration](#configuration) · [Staff notifications](#staff-notification-channels--reply-alerts) · [Broccolini settings page](#broccolini-settings-page) · [Commands](#discord-commands) · [Project layout](#project-structure) --- @@ -17,6 +17,7 @@ Built for game-server hosting support (Indifferent Broccoli), with game detectio - [Installation](#installation) - [Configuration](#configuration) - [Staff notification channels & reply alerts](#staff-notification-channels--reply-alerts) +- [Broccolini settings page](#broccolini-settings-page) - [Running the bot (test and Docker)](#running-the-bot-test-and-docker) - [Discord commands](#discord-commands) - [Ticket UI (buttons & modals)](#ticket-ui-buttons--modals) @@ -288,9 +289,21 @@ When `STAFF_NOTIFICATION_CATEGORY_ID` is set: 5. **Every 30 minutes**, **`notifyAllStaffUnclaimed`** evaluates open tickets with `claimedBy: null` against `UNCLAIMED_REMINDER_THRESHOLDS` and posts to all configured notification channels (tracks sent thresholds on the ticket in `unclaimedReminderssent`). **`/notifydm`** toggles **`StaffSettings.notifyDm`** for the invoking user; when enabled, claimers can also receive a **DM** on customer reply (in addition to any notification channel). - + --- - + +## Broccolini settings page + +The repo includes an optional **Broccolini settings** web UI under `settings-site/` for configuring the bot without editing `.env` directly. + +- Runs as a small Express app (`settings-site/server.js`) on `SETTINGS_PORT` and talks to the bot’s internal API on `INTERNAL_API_PORT` using `INTERNAL_API_SECRET`. +- Serves a password-protected dashboard (`SETTINGS_ADMIN_PASSWORD`) where you can adjust Discord channels, categories, Gmail credentials, ticket behavior, surge alerts, pattern thresholds, appearance, staff options, and advanced settings. +- Changes are sent to the bot’s internal `/internal/config` endpoints and can be saved as pending, applied immediately, or saved and paired with an immediate or scheduled restart. + +To use it, run `node settings-site/server.js` alongside the bot (or via Docker), set the `SETTINGS_*` and `INTERNAL_API_*` variables as in `.env.example`, and put it behind HTTPS with your preferred reverse proxy. + +--- + ## Running the bot (test and Docker) ```bash