Skip to main content

Interface: RoadmapSettings

Guild-specific roadmap configuration settings.

All properties are optional to support incremental updates and default values. The plugin uses a category-based multi-forum structure where each column (Backlog, In Progress, Done) gets its own dedicated forum channel.

Properties

assigneeMapping?

optional assigneeMapping: Record<string, string>;

Map of Jira assignee display names to Discord user IDs.

This mapping allows redacting Jira names from public Discord messages by replacing them with Discord user mentions. Jira names are matched exactly (case-sensitive). If no mapping exists for a Jira assignee, that assignee is hidden from Discord messages entirely.

Example

{
"Alice Jira": "1234567890123456789",
"Bob Jira": "9876543210987654321"
}

authorizedCreatorRoles?

optional authorizedCreatorRoles: string[];

Array of Discord role IDs that are authorized to create roadmap cards.

Users with any of these roles (in addition to administrators) can create new cards using the /roadmap add command or via the API. If empty or undefined, only administrators can create cards.

Example

["1234567890123456789", "9876543210987654321"]

categoryId?

optional categoryId: string;

The Discord category ID containing all roadmap forum channels.

This category organizes all column-specific forum channels in one place and allows for unified permission management across all roadmap forums.


columnMapping?

optional columnMapping: Record<string, null | string>;

Per-guild column mapping overrides.

Maps provider status names to column names (or null for no forum). Overrides provider-level defaults. Keys are matched case-insensitively.

Example

{
"QA": "Development", // Map QA status to Development column
"Blocked": null // Track Blocked status but don't create forum thread
}

customColumns?

optional customColumns: object[];

Custom columns for this guild (overrides provider columns).

If provided, replaces the default column set entirely. Each column can optionally disable forum creation by setting createForum: false.

Example

[
{ id: 'planning', name: 'Planning', order: 0 },
{ id: 'development', name: 'Development', order: 1 },
{ id: 'review', name: 'Review', order: 2, createForum: false }
]

forumChannels?

optional forumChannels: Record<string, string>;

Map of column names to Discord forum channel IDs.

Each column (e.g., 'Backlog', 'In Progress', 'Done') has its own dedicated forum channel where cards in that column are posted.

Example

{
"Backlog": "1234567890123456789",
"In Progress": "9876543210987654321",
"Done": "1111222233334444555"
}

isPublic?

optional isPublic: boolean;

Whether the roadmap forums are publicly accessible or private.

This setting applies to all forum channels within the roadmap category.

  • true: Everyone can view and comment on existing threads, but only admins/mods can create new threads
  • false: Only administrators and moderators can view the forums
  • undefined: Defaults to false (private)

lastSyncTimestamp?

optional lastSyncTimestamp: number;

Unix timestamp in milliseconds of the last successful sync operation.

This timestamp is used to determine when the next sync should occur and for displaying "last synced" information to users.


syncedPosts?

optional syncedPosts: Record<string, string>;

Map of provider card IDs to Discord thread IDs.

This mapping tracks which external cards (e.g., Jira issues) have been synced to which Discord forum posts, enabling updates instead of duplicates. Threads can be in any of the column-specific forum channels.

Example

{
"PROJ-123": "1234567890123456789",
"PROJ-456": "9876543210987654321"
}

threadHistory?

optional threadHistory: Record<string, ThreadHistoryEntry[]>;

Map of provider card IDs to arrays of historical thread entries.

This tracks the history of threads for cards that have moved between columns, enabling linking to previous discussions. Each entry captures the thread's state (ID, column, forum, message count) at the time it was moved to a new forum.

The message count is used to determine if linking is worthwhile (threads with only the starter message are typically not linked) and to provide informative link text like "View 52 messages from In Progress".

Example

{
"PROJ-123": [
{
threadId: "1234567890123456789",
column: "Backlog",
forumId: "9876543210987654321",
movedAt: 1704067200000,
messageCount: 3
},
{
threadId: "1111222233334444555",
column: "In Progress",
forumId: "5555666677778888999",
movedAt: 1704153600000,
messageCount: 52
}
]
}

threadTitleTemplate?

optional threadTitleTemplate: string;

Template string for formatting Discord thread titles.

Supports placeholders: {id} for the card ID and {title} for the card title. If not provided or empty, thread titles will use just the card title. The template is always respected even if it means truncating the title portion to fit Discord's 100 character limit.

Default Value

undefined (uses just the title)

Example

// Default format: "[ROBO-23] Lorem ipsum"
threadTitleTemplate: "[{id}] {title}"

// Alternative format: "ROBO-23 - Lorem ipsum"
threadTitleTemplate: "{id} - {title}"

// Just title (same as undefined/empty)
threadTitleTemplate: "{title}"