> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invaro.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Staff Logbook

> Track disciplinary actions and log entries across all staff members

The Staff Logbook is a global audit trail for your entire team. From one place you can view, add, and manage disciplinary records and log entries across all staff members, with optional Discord notifications for each action type.

<Info>
  The Staff Logbook requires an **Invaro+** or **Invaro+ Boost** plan.
</Info>

***

## Two Record Types

The logbook has two tabs, each covering a different kind of record:

**Disciplinaries** are formal actions — notices, warnings, strikes, terminations, or any custom type you define. Each has a severity level (Low, Medium, High, Critical) and can be resolved or re-opened.

**Log Entries** are general notes — achievements, promotions, demotions, training records, custom notes. They're informational rather than punitive.

Both record types are visible per-staff-member on their Staff Profile page as well.

***

## Stats

Four stat cards appear at the top of the page:

* **Total Disciplinaries** — all disciplinary records ever created
* **Active Infractions** — open (unresolved) disciplinaries and how many staff they affect
* **Resolved** — disciplinaries that have been marked resolved
* **Log Entries** — total log entries across all staff

A **severity breakdown bar** in the right sidebar shows active infractions split by severity level.

***

## Adding a Disciplinary

Click **Add Disciplinary** in the top-right corner (requires `CanCreate`).

<Steps>
  <Step title="Search for a staff member">
    Type a username in the search box. Members are pulled from your Team Directory. Select the staff member from the results.
  </Step>

  <Step title="Choose a type">
    Pick from your active disciplinary types (e.g. Warning, Strike). The severity auto-fills from the type's default, but can be adjusted.
  </Step>

  <Step title="Set severity">
    Select Low, Medium, High, or Critical.
  </Step>

  <Step title="Fill in details">
    An optional title and a required content field describing the infraction.
  </Step>

  <Step title="Add">
    Click **Add Disciplinary**. If the selected type has a Discord message template configured, a notification is posted automatically. A notice confirms this before you save.
  </Step>
</Steps>

***

## Adding a Log Entry

Click **Add Log** in the top-right corner (requires `CanCreate`).

The flow is the same two-step search-then-form as disciplinaries. Choose a log type (Note, Achievement, Promotion, Demotion, Training, Custom, or any custom type), add an optional title, write the content, and confirm. If the selected type has a Discord template, it fires automatically.

***

## Managing Records

Each disciplinary card shows the type, severity, staff member, content, author, and date. Cards with open infractions have a coloured border. Cards with active Discord templates show a green "Discord" indicator badge.

| Action                      | Permission                                     |
| --------------------------- | ---------------------------------------------- |
| **Mark resolved / Re-open** | `CanEdit`                                      |
| **Edit**                    | `CanEdit` — update severity, title, or content |
| **Delete**                  | `CanDelete`                                    |

Log entries support **Edit** and **Delete** in the same way, but have no resolve/re-open state.

***

## Filtering

For disciplinaries, use the filter pills to narrow by open or resolved status, and by severity (Low, Medium, High, Critical). Multiple filters stack.

For log entries, filter by type using the pill row.

A search bar on both tabs filters by staff username, content, or type. Use the **Clear filters** link to reset all filters at once.

Pagination controls appear when there are more than 25 records.

***

## Logbook Settings

Click **Settings** (requires `CanManage`) to open the Logbook Settings page.

### Default Discord Channel

Select a fallback channel for Discord notifications. This channel is used when a specific type's channel override is not set. Leave blank to disable global posting.

## Types and Message Templates

The main card has two tabs: **Disciplinary Types** and **Log Tags**.

Click any row to expand its configuration. The row header shows the type name, severity (for disciplinaries), whether a Discord message is configured (green "✓ Discord" badge), and a toggle to enable or disable the type.

Disabling a type removes it from the add forms going forward but does not affect existing records.

Custom types have a delete button. Built-in types can only be toggled.

### Disciplinary Types

The Disciplinary Types tab lists all types. Click a type to expand its configuration:

* **Enable / disable** — disabling a type hides it from the form without deleting any existing records
* **Discord message** — toggle whether a Discord notification fires when this type is issued; configure the channel override, message content, and embed
* **Severity** — the default severity assigned when this type is selected in the add form (can still be overridden per record)

Add new types with the form at the bottom — give it a name, pick a colour and severity, and click Add. Custom types can be removed; built-in types can only be toggled.

### Log Tags

The Log Tags tab lists all log entry types. Click a type to expand its Discord message configuration. The structure is the same as disciplinary types: toggle posting on/off, pick a channel override, and configure the message and embed.

Add new log types with the form at the bottom.

#### Discord Variables (Disciplinaries and Log Entries)

Both use the same variable set. Key variables include:

| Variable                             | Output                                  |
| ------------------------------------ | --------------------------------------- |
| `{username}` / `{targetUsername}`    | Roblox username of the staff member     |
| `{executorUsername}`                 | Username of who issued the action       |
| `{executorMention}`                  | Discord mention of the issuer           |
| `{type}`                             | Type label (e.g. Warning)               |
| `{severity}` / `{severityLabel}`     | Severity key or formatted label         |
| `{title}`                            | Optional title                          |
| `{content}`                          | Details / reason                        |
| `{avatarUrl}`                        | Staff member's avatar URL               |
| `{headshotUrl}`                      | Roblox headshot image URL               |
| `{totalWarnings}` / `{totalStrikes}` | Cumulative counts for the user          |
| `{activeInfractions}`                | Current active infractions for the user |
| `{today}`                            | Today's formatted date                  |
| `{timestamp}`                        | ISO timestamp of the action             |

***

## Access Control

`CanView` grants access to the logbook list. `CanCreate` allows adding disciplinaries and log entries. `CanEdit` allows editing and resolving records. `CanDelete` allows deletion. `CanManage` adds access to Logbook Settings and the Settings button.
