Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
244 commits
Select commit Hold shift + click to select a range
03e6102
refactor: rewriting in go, added data model objects
Framebuffers Feb 8, 2026
09dfcce
add: ported old commands to go
Framebuffers Feb 8, 2026
f1dd979
ADD: Added support for Bun/sqlite
Framebuffers Feb 12, 2026
791c6d3
ADD: compose file for go
Framebuffers Feb 16, 2026
483e467
ADD: path to store encrypted secrets to bladesinger
Framebuffers Feb 16, 2026
395a759
FIX: create dir before adding secrets in dockerfile
Framebuffers Feb 16, 2026
e0e3a98
FIX: crlf issues on Dockerfile
Framebuffers Feb 16, 2026
a0ef9da
ADD: CRUD for DB, CreateCampaign()
Framebuffers Feb 16, 2026
0489deb
ADD: support for DB on commands, methods to get data from DB
Framebuffers Feb 17, 2026
500125f
ADD: testing via discord.
Framebuffers Feb 17, 2026
d9e0ff2
ADD: add stub for interactions not implemented.
Framebuffers Feb 17, 2026
533320b
ADD: messages, handlers, modal changes
Framebuffers Feb 17, 2026
f6429f4
EDIT: moved all string definitions to a separate file, creating a sin…
Framebuffers Feb 17, 2026
1b49412
EDIT: nicer button labels
Framebuffers Feb 17, 2026
79b7baf
FIX: DB not persisting over compose up/down cycles, added search by t…
Framebuffers Feb 17, 2026
3092877
FIX: DB was not adding missing column or migrating to the new DB with…
Framebuffers Feb 17, 2026
0f42c18
ADD: implemented help command, added docs, bug fixes and improvements :3
Framebuffers Feb 21, 2026
750de0f
FIX: whoops forgor to register the command. Also, fixed strings.
Framebuffers Feb 21, 2026
7cf991d
FIX: commands should not be uppercase, whoopsie
Framebuffers Feb 21, 2026
a94a4ad
ADD: models to implement DMs and approval for campaigns
Framebuffers Feb 21, 2026
604aa15
ADD: flow documentation for interactions.
Framebuffers Feb 21, 2026
45f7835
ADD: docs and the process flows of each operation. explaining the who…
Framebuffers Feb 22, 2026
01d16d3
ADD: player options
Framebuffers Mar 8, 2026
e00a114
FIX: ADMIN_ROLE_NAME missing from env
Framebuffers Mar 8, 2026
f1fcfb5
ADD: ban command
Framebuffers Mar 14, 2026
8dd9204
ADD: Initial implementation of Permissions system. Documentation avai…
Framebuffers Mar 14, 2026
ebd6b45
ADD: test suite for DB/permissions model
Framebuffers Mar 15, 2026
bcf30c3
ADD: functionality to avoid ping to join campaign, checked validation…
Framebuffers Mar 15, 2026
3b4b56a
ADD: ban command
Framebuffers Mar 16, 2026
939b24b
ADD: improved docs with Flows for new interactions; stub for Campaign…
Framebuffers Mar 19, 2026
263e7f8
ADD: Campaign-scoped bans, FIX: improved logging syntax (now appends …
Framebuffers Mar 20, 2026
cfec4c6
ADD: sovereignty tests, role creation and assignment.
Framebuffers Mar 20, 2026
474d38b
ADD: awoo now has a counter!
Framebuffers Mar 20, 2026
1f756d8
FIX: database migration not adding models to create campaign, added s…
Framebuffers Mar 20, 2026
b41e06d
FIX: string interpolation issue in id.go
Framebuffers Mar 20, 2026
61cfe16
ADD: ban and unban functionality, along with Audit logging.
Framebuffers Mar 22, 2026
ff50054
FIX: db name mismatch on migration
Framebuffers Mar 22, 2026
cd2f438
FIX: DB migration issues
Framebuffers Mar 22, 2026
cfefb4a
ADD: models for scheduling support
Framebuffers Mar 22, 2026
15e3b03
FIX: close campaign button permissions too broad
Framebuffers Mar 22, 2026
9a50f20
BRANCH: local dev folder has been moved to another computer, to avoid…
Framebuffers Apr 1, 2026
850ceaa
FIX: enforce DM sovereignty over the whole structure. Nobody, not eve…
Framebuffers Apr 1, 2026
d31f53c
FIX: decoupled ban/unban from membership. This is to keep the Campaig…
Framebuffers Apr 2, 2026
6c970e0
ADD: campaign archival schema, guards and triggers
Framebuffers Apr 2, 2026
86651b6
ADD: basic dispatcher for DMs
Framebuffers Apr 3, 2026
71eee8d
ADD: ask mods/admins to approve campaigns. dispatch is now passed as …
Framebuffers Apr 4, 2026
36d8033
ADD: inirial implementation of a apprve/deny button
Framebuffers Apr 4, 2026
f70ca0c
ADD: guardrails, unit tests for data and auth layers.
Framebuffers Apr 4, 2026
3489590
ADD: verbose mode, dead code cleanup
Framebuffers Apr 4, 2026
ea33865
FIX: enable verbose mode
Framebuffers Apr 4, 2026
ffc3aee
ADD: log roles assigned to bot.
Framebuffers Apr 4, 2026
0c9d07f
FIX: added intents to modify user roles
Framebuffers Apr 4, 2026
6d25935
ADD: enable (re)scheduling, debug campaign DB list.
Framebuffers Apr 4, 2026
2e46671
ADD: create guild_db_manager, EDIT: handler resolves the correct guil…
Framebuffers Apr 5, 2026
03e393a
BRANCH: refactoring UI to make more sense to users.
Framebuffers Apr 5, 2026
988ab0e
ADD: foundation utilities to refactor UI, helpers, navigational compo…
Framebuffers Apr 5, 2026
fa31fe5
ADD: /register onboarding and /me hub to contain menus.
Framebuffers Apr 5, 2026
e520b7e
ADD: /campaigns browser, /search campaigns with autocomplete
Framebuffers Apr 5, 2026
7c4ea27
ADD: /myCampaigns now renders a select menu + back button, manage_cam…
Framebuffers Apr 7, 2026
dfad898
ADD: about )/moontracer) and /admin commands
Framebuffers Apr 9, 2026
fa2c2a8
ADD: Archival confirmation button, Link Discord role
Framebuffers Apr 10, 2026
5e90926
Merge pull request #2 from Framebuffers:dev-uirefactor
Framebuffers Apr 10, 2026
d627ac5
ADD: placeholders/scaffolding to add missing stubbed functionality. A…
Framebuffers Apr 10, 2026
858f5b2
FIX: add safe mode by default on
Framebuffers Apr 10, 2026
9632a21
ADD: unit testing for Safe Mode. EDIT: formatting of tests, they now …
Framebuffers Apr 11, 2026
c13b1d4
ADD: GitHub unit testing support
Framebuffers Apr 11, 2026
9b77838
ADD: diagnostics panel for /admin
Framebuffers Apr 11, 2026
8b9b2ad
ADD: waos
Framebuffers Apr 12, 2026
c2cab22
ADD: license
Framebuffers Apr 12, 2026
ad0685e
ADD: docker-compose with .env and .env example
Framebuffers Apr 13, 2026
0b27d8f
FIX: removed DB_PATH from env, since it supports multi-tennant (and i…
Framebuffers Apr 13, 2026
6d3566f
FIX: debug_admin_id works independent of SAFE_MODE, announcements inc…
Framebuffers Apr 13, 2026
4478cec
ADD: support for a specific mod role (similar to the admin role) to s…
Framebuffers Apr 13, 2026
3d6dbc0
FIX: stale menu fix on RenderManageCampaignMenu, confirmation button …
Framebuffers Apr 13, 2026
5f829b4
FIX: deny modal exceeded Discord's 100 char limit fpor IDs, scrubbing…
Framebuffers Apr 13, 2026
e73ab62
ADD: archived campaign hide buttons, new campaign button on /me hub, …
Framebuffers Apr 13, 2026
3aaa3e4
ADD: support for campaign channels and threads. The bot now can add a…
Framebuffers Apr 14, 2026
0b85932
ADD: added player settings model, ui improvements (replaced notificat…
Framebuffers Apr 14, 2026
5d7035b
ADD: view router to add universal back button support on all commands…
Framebuffers Apr 14, 2026
4a02038
ADD: flow explanations for new features
Framebuffers Apr 14, 2026
e4361dd
FIX: back button not working from diagnostics -> /admin. ADD: extra b…
Framebuffers Apr 15, 2026
30648d2
Merge pull request #3 from Framebuffers:dev-ux-improvement
Framebuffers Apr 15, 2026
77511a7
ADD: tests for dev/safe mode split; FIX: guard interactions to a sing…
Framebuffers Apr 15, 2026
4788868
FIX: dev mode will get triggered if the DISCORD_GUILD_ID is set,, rem…
Framebuffers Apr 15, 2026
ffe7014
Merge pull request #4 from Framebuffers:dev-safemodesplit
Framebuffers Apr 15, 2026
7d75a33
ADD: Campaign covers, documentation to create new commands and intera…
Framebuffers Apr 15, 2026
5276577
FIX: deduping commands on DB table, image being too small (changed fr…
Framebuffers Apr 16, 2026
a23628f
FIX: dev mode not being enforced
Framebuffers Apr 16, 2026
5c8c493
ADD: logos
Framebuffers Apr 16, 2026
84cf2fc
Merge pull request #5 from Framebuffers:dev-imagesupport
Framebuffers Apr 16, 2026
2788377
ADD: test fixtures and helpers to cover mod-approves happy path, plai…
Framebuffers Apr 16, 2026
202c908
Merge pull request #6 from Framebuffers:dev-security-backfill
Framebuffers Apr 16, 2026
2fd06e9
ADD: Ban command tests
Framebuffers Apr 16, 2026
3edc2ea
Merge pull request #7 from Framebuffers:dev--invite-flow-tests
Framebuffers Apr 16, 2026
a7a8642
ADD: orphan scrub tests
Framebuffers Apr 16, 2026
8293d37
ADD: version bump
Framebuffers Apr 16, 2026
719ebdf
Merge pull request #8 from Framebuffers:dev-security-backfill
Framebuffers Apr 16, 2026
19d1d3f
FIX: discord not registering global commands
Framebuffers Apr 22, 2026
62df01d
FIX: unlimited campaigns did not let new players in
Framebuffers Apr 22, 2026
2387505
FIX: allow campaigns with one player, removed stale refs and strings
Framebuffers Apr 22, 2026
a3c97e8
FIX: removed secrets from Dockerfile, fixed permissions for data folder.
Framebuffers May 1, 2026
e601e0c
FIX: re-enabled basic westmarch support
Framebuffers May 1, 2026
31b86ce
FIX: lobotomised the poor bot out of the cool engine I was building, …
Framebuffers May 1, 2026
2b908fa
ADD: unit testing for westmarch capacity overflow tripwire
Framebuffers May 1, 2026
11c896d
Merge pull request #9 from Framebuffers:dev-westmarch
Framebuffers May 1, 2026
ed8a023
ADD: admin database handler
Framebuffers May 1, 2026
cbe336c
ADD: strutils + build flags
Framebuffers May 1, 2026
05dbfb6
ADD: extracted one (1) helper respondInteraction to responses.go
Framebuffers May 1, 2026
e51e04d
ADD: splitCustomID helper
Framebuffers May 1, 2026
2aedfce
ADD: helper to load campaigns
Framebuffers May 2, 2026
7a3c89a
ADD: helper and refactor to load campaigns and ask for mutability if …
Framebuffers May 2, 2026
2b9e394
Merge pull request #10 from Framebuffers:dev-helper-extraction
Framebuffers May 2, 2026
7089c72
FIX: missing mutability check in campaign_reschedule.go
Framebuffers May 2, 2026
d6a60b9
ADD: moved loading campaign as moderator to helper method
Framebuffers May 2, 2026
27ac105
Merge pull request #11 from Framebuffers:dev-loadmodcampaign
Framebuffers May 2, 2026
eaf2300
ADD: consolidated responses to interactions, authorizations, document…
Framebuffers May 2, 2026
7c557fb
ADD: moved to helpers: respondInteraction, respondUpdate, respondWith…
Framebuffers May 2, 2026
1b7047f
ADD: adminCampaignSelect, adminSettings stub, adminBroadcast; FIX: typo
Framebuffers May 3, 2026
fddb6be
ADD: datetime, campaign announcements, role mention on broadcast, nex…
Framebuffers May 3, 2026
69642f1
Merge pull request #12 from Framebuffers:dev-helper-consolidation
Framebuffers May 3, 2026
6d947a1
ADD: scheduler for campaign reminders
Framebuffers May 3, 2026
35dae90
ADD: diagnostics UI update
Framebuffers May 3, 2026
063f0cc
ADD: improvements in diagnostics: now shows DB size, moontracer versi…
Framebuffers May 3, 2026
869374e
FIX: Dockerfile not compiling, due to a comment trapped inside the ld…
Framebuffers May 3, 2026
71cd307
Merge pull request #13 from Framebuffers:dev-session-scheduler
Framebuffers May 3, 2026
c62a84e
ADD: configurable timezones
Framebuffers May 3, 2026
71ed9fc
ADD: modal to set date/time, helper for days of week
Framebuffers May 3, 2026
aff0f49
FIX: guard for safe_mode announcements.. ADD: adding campaigns to the…
Framebuffers May 3, 2026
dcb9444
Merge pull request #14 from Framebuffers:dev-timezones
Framebuffers May 3, 2026
6e325db
ADD: support for RSVP for sessions.
Framebuffers May 3, 2026
bee4ddf
FIX: edits
Framebuffers May 3, 2026
c22da3a
Merge pull request #15 from Framebuffers:dev-rsvp
Framebuffers May 3, 2026
d641726
DEL: manage campaigns button from admin panel, database button; ADD: …
Framebuffers May 3, 2026
379e2c4
FIX: home button not appearing,
Framebuffers May 3, 2026
0380ef5
FIX: UI cleanup
Framebuffers May 3, 2026
c7db2ad
FIX: UI changes, cleaned up rows and navigation
Framebuffers May 3, 2026
474105e
Merge pull request #16 from Framebuffers:dev-ui-ux-refinements
Framebuffers May 3, 2026
9db208d
ADD: Media model, DB migrations; DEL: Token model (replcaed by Media)
Framebuffers May 3, 2026
f191de2
ADD: unit testing for new Media models
Framebuffers May 3, 2026
d13b7af
FIX: DB migration from older schema to newer that includes Media model
Framebuffers May 3, 2026
af736a5
ADD: serving media files through Caddy, added server. BUMP: v0.9.2
Framebuffers May 3, 2026
d0cf3c9
ADD: alive probe for server availability
Framebuffers May 3, 2026
10733db
ADD: facilities to use the new file server to upload and serve cover …
Framebuffers May 3, 2026
500727a
DEL: old code related to storing cover art on Discord's CDN
Framebuffers May 4, 2026
f59bff1
Merge pull request #17 from Framebuffers:dev-cover-storage
Framebuffers May 4, 2026
c13a872
ADD: helper.RespondUpdateTerminal to edit messages in place, bulk rep…
Framebuffers May 4, 2026
d02b0d1
Merge pull request #18 from Framebuffers:dev-uiuxrework-phase1
Framebuffers May 4, 2026
9d34201
FIX: cleaned up /me menu
Framebuffers May 4, 2026
844ca5c
FIX: broken links for cover art
Framebuffers May 4, 2026
ad5d54f
FIX: missing env vars
Framebuffers May 4, 2026
3e30347
FIX: chown issue
Framebuffers May 4, 2026
cf300e5
FIX: buttons for hub
Framebuffers May 4, 2026
b994968
FIX: missing registration for views
Framebuffers May 4, 2026
606d39e
ADD: trying new about text
Framebuffers May 5, 2026
068c833
FIX: another about screen
Framebuffers May 5, 2026
7a28aa5
FIX: another attempt
Framebuffers May 5, 2026
4155375
FIX: stars + fixes on about
Framebuffers May 5, 2026
5dcb2b4
FIX: cleanup
Framebuffers May 7, 2026
c72b66c
FIX: home button
Framebuffers May 7, 2026
4463a1c
ADD: home button on all menus; UI complete
Framebuffers May 7, 2026
214fa5f
FIX: back handler
Framebuffers May 7, 2026
bbb98bd
FIX: admin menu cleanup
Framebuffers May 8, 2026
041bf59
FIX: add danger zone to guard against spicy buttons
Framebuffers May 8, 2026
d089e67
ADD: about button on /me menu
Framebuffers May 8, 2026
2e8b83f
Merge pull request #19 from Framebuffers:dev-uiuxrework-phase2
Framebuffers May 8, 2026
3d6debb
ADD: backend for tokens, link reminders for sessions
Framebuffers May 8, 2026
c6650a1
ADD: set VTT links from Announce tab
Framebuffers May 8, 2026
1b309fc
BUMP: v0.11.0
Framebuffers May 8, 2026
12a6f16
FIX: send links to DM
Framebuffers May 8, 2026
9d7fc4a
ADD: modal layer for setting character sheets from players, cleaned u…
Framebuffers May 10, 2026
f34d068
FIX: announce -> new session button, contact DM is green, open/close …
Framebuffers May 10, 2026
e4efdfa
FIX: campaign card now shows token + sheets directly, no subviews. op…
Framebuffers May 10, 2026
f568d5f
BUMP v.0.11.9
Framebuffers May 10, 2026
77a7ad0
FIX: banned members do not appear on campaign cards
Framebuffers May 10, 2026
96caf30
FIX: UX changes, third row for setting a cover and links buttons
Framebuffers May 10, 2026
9746e2a
ADD: name your token functionality
Framebuffers May 10, 2026
6791ac3
FIX: dropped set cover from new campaign flow, exposed a bug taking u…
Framebuffers May 10, 2026
3ad9da6
ADD: /uploadtoken -> /newtoken, asks to assign to a campaign or skip …
Framebuffers May 10, 2026
f4f3607
ADD: added info for new token when choosing one for a campaign
Framebuffers May 10, 2026
0d4f2f6
ADD: download tokens button
Framebuffers May 10, 2026
14031fe
Merge pull request #20 from Framebuffers:dev-tokens-playerresources
Framebuffers May 10, 2026
494582c
FIX: cleaned up messages file
Framebuffers May 10, 2026
5650124
ADD: basic token generation logic
Framebuffers May 10, 2026
fd7ad6d
ADD: wired up logic for token gen
Framebuffers May 10, 2026
f8eb281
ADD: new tokens button on /me, token gallery view, token detail view
Framebuffers May 10, 2026
b4ad007
BUMP: v0.12.1
Framebuffers May 10, 2026
cbd7513
FIX: tokens bleeding outside the frame
Framebuffers May 10, 2026
7b9dfec
BUMP: v0.12.2
Framebuffers May 10, 2026
3b48a0a
ADD: player submenu has new button for tokens under player.
Framebuffers May 10, 2026
002de41
FIX: drop-downs for new campaign no longer delete on refresh!!!!!, li…
Framebuffers May 11, 2026
e869ea8
FIX: emoji not showing
Framebuffers May 11, 2026
1845bae
FIX: improving about screen
Framebuffers May 11, 2026
eec0e94
FIX: more emojis for menus!
Framebuffers May 11, 2026
e5eaa10
FIX: about screen typos and reorder
Framebuffers May 11, 2026
143e320
FIX: duplicate messages on about screen
Framebuffers May 11, 2026
e7a7b43
FIX: add campaign card to new campaign messages
Framebuffers May 11, 2026
3c58faf
FIX: broadcast messages now inform about settings within a DM sent to…
Framebuffers May 11, 2026
4f16c0f
ADD: download button for token
Framebuffers May 11, 2026
8bd007e
BUMP v0.12.6
Framebuffers May 11, 2026
60c6827
ADD: back button to download token screen
Framebuffers May 11, 2026
5595306
Merge pull request #21 from Framebuffers:dev-tokens
Framebuffers May 11, 2026
91ab33d
ADD: flow for PlayerTokens and TokenConfirm
Framebuffers May 11, 2026
9fbcb96
ADD: flows for manage_submenus, manage_setcover, manage_lnks
Framebuffers May 11, 2026
ac87856
ADD: flow documentation for campaign_details and campaigns_browse
Framebuffers May 11, 2026
d11edd2
ADD: flow for me_subviews, player_settings, quick_register
Framebuffers May 11, 2026
d59d8c3
ADD: flow documentation for components and select_handlers
Framebuffers May 11, 2026
0053cee
Merge pull request #22 from Framebuffers:dev-documentation
Framebuffers May 11, 2026
72a1a26
ADD: token upload unit tests.
Framebuffers May 11, 2026
17a4cdd
ADD: security fixes and unit tests for web server and tokens
Framebuffers May 11, 2026
b594fd7
Merge pull request #23 from Framebuffers:dev-tests
Framebuffers May 11, 2026
86da32c
Merge pull request #24 from Framebuffers:dev-documentation
Framebuffers May 11, 2026
9534dc5
FIX: ran static checks, removed old unreacheable code. RELEASE CANDID…
Framebuffers May 11, 2026
92550a2
chore: OSS-release prep: Flip DEV_MODE and VERBOSE defaults to false …
Framebuffers May 12, 2026
ee54615
CLEAN: old notes
Framebuffers May 12, 2026
0d523b0
ADD: parametrized network name
Framebuffers May 12, 2026
8829aac
BUMP to RC2
Framebuffers May 12, 2026
6c86304
ADD: enabling thread creation [note: disable safe mode to trst]
Framebuffers May 12, 2026
0bfdadb
FIX: on approval; creates role, assignes role, finds or creates a sha…
Framebuffers May 12, 2026
4eca2ce
FIX: bot not creating threads due to restrictions
Framebuffers May 13, 2026
646a4cb
FIX: submit validation check, stripping colon when setting channel na…
Framebuffers May 13, 2026
c9b7b22
FIX: potential fatal crash fix, handling exceptions by defering handl…
Framebuffers May 16, 2026
23ee8e8
ADD: /newcampaign wizard, post-join navigation
Framebuffers May 16, 2026
22d1401
ADD: conflict detection, rsvp using buttons on message or dm, migrati…
Framebuffers May 16, 2026
0be0d89
ADD: /managecampaign revamped, easier flows, new Session model, sched…
Framebuffers May 16, 2026
cfbd01e
FIX: check campaign>DungeonMaster directly if the campainPlayer table…
Framebuffers May 16, 2026
1f6d9a9
FIX: ` You must be the DM of this campaign to manage it.` eror when u…
Framebuffers May 16, 2026
b46a6aa
FIX: "Something went wrong" message appearing when `/newsession` is used
Framebuffers May 16, 2026
402c996
FIX: discord sending error messages when an API call takes too long
Framebuffers May 17, 2026
4a96dbd
ADD: welcome channel, changed date format (temp until I do proper for…
Framebuffers May 17, 2026
60d4932
FIX: automatically fix stale commands
Framebuffers May 17, 2026
11861f1
BUMP to v0.13.2
Framebuffers May 17, 2026
5b33e21
ADD: text-complete search for own campaigns, command cleanup
Framebuffers May 17, 2026
de1b5d0
ADD: download button for tokens
Framebuffers May 17, 2026
4bd2fd9
ADD"/tokens command
Framebuffers May 17, 2026
b29cfd5
FIX: raw ID numbers appearing in ban commands
Framebuffers May 17, 2026
cafcb44
FIX: hide exposed URLs from download links.
Framebuffers May 17, 2026
f4d9779
ADD: new readme, changed module name to `github.com/framebuffers/moon…
Framebuffers May 18, 2026
4e79c5d
BUMP: v0.14.0-RC3
Framebuffers May 18, 2026
5f85a09
Merge pull request #25 from Framebuffers:dev-polishing
Framebuffers May 18, 2026
96c2a9d
FIX: bot not showing stacked sessions from the same campaign
Framebuffers May 18, 2026
f4d99a4
ADD: /importchannel command
Framebuffers May 18, 2026
567cd50
Merge pull request #26 from Framebuffers:dev-import-command
Framebuffers May 18, 2026
40f332b
FIX: pinning threads not working on legacy channels
Framebuffers May 18, 2026
fa6a2ac
BUMP to v1.0.0
Framebuffers May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copy to .env and fill in real values. Never commit .env.

DISCORD_BOT_TOKEN=""

VERBOSE=true
# SAFE_MODE blocks Discord side effects (role grants, DMs) while the DB still runs.
SAFE_MODE=true
# DEV_MODE exposes debug surfaces (Diagnostics panel, /campaigndatabase). MUST be false in prod.
DEV_MODE=false

# When set, slash commands register only to this guild (fast dev iteration).
# Leave empty in production to register globally.
DISCORD_GUILD_ID=""
DEBUG_ADMIN_ID=""

MEDIA_BASE_URL=""
MEDIA_PORT=""

ADMIN_ROLE_NAME=""
MOD_ROLE_NAME=""

# Host path mounted at /app/data (SQLite DB + uploaded media).
MOONTRACER_DATA_DIR="./data"

# Docker network the container joins. Leave empty to let compose create an
# isolated network. To attach to an existing reverse-proxy network, set
# MOONTRACER_PROXY_NETWORK to that network's name AND MOONTRACER_PROXY_EXTERNAL=true.
MOONTRACER_PROXY_NETWORK=""
MOONTRACER_PROXY_EXTERNAL=""
19 changes: 19 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: tests

on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.25.6'
cache: true
- run: go build ./...
- run: go test ./... -race -count=1
167 changes: 49 additions & 118 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,118 +1,49 @@
# Dependencies
node_modules/
.pnp
.pnp.js

# Bun
bun.lockb
.bun/

# Testing
coverage/
.nyc_output/
*.lcov

# Next.js
.next/
out/
build/
dist/

# Production
*.tsbuildinfo
next-env.d.ts

# Misc
.DS_Store
*.pem
Thumbs.db

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
lerna-debug.log*

# Local env files
.env
.env.*
!.env.example
!.env.template

# Secrets
# (CRITICAL - never ever ever **ever** commit)
secrets/
*.key
*.pem
*.crt
*.p12
*.pfx

# Vercel
.vercel

# TypeScript
*.tsbuildinfo

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# IDE
.vscode/
!.vscode/extensions.json
!.vscode/settings.json
.idea/
*.swp
*.swo
*~
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
.fleet/

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
desktop.ini

# Docker
.dockerignore

# Old/archived files
.old/
*.old
*~
.backup/
*.backup
*.bak

# Temporary build directories
/tmp/
temp/
.tmp/

# Database
*.db
*.sqlite
*.sqlite3

# Misc
.cache/
.parcel-cache/
.turbo/
*.tar
# Old TypeScript codebase
.old/

# Go
/moontracer
/cmd/moontracer/moontracer
/bin/

# Secrets (CRITICAL - never commit)
secrets/
*.key
*.pem
*.crt
*.p12
*.pfx

# Env
.env
.env.*
!.env.example

# OS
.DS_Store
Thumbs.db

# IDE
.vscode/
!.vscode/extensions.json
!.vscode/settings.json
.idea/
*.swp
*.swo
*~

# Docker
.dockerignore

# Temp
/tmp/
.cache/

# Database
*.db
*.sqlite
*.sqlite3

# Logs
*.log
.claude/
66 changes: 19 additions & 47 deletions Dockerfile
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,47 +1,19 @@
FROM oven/bun:1-alpine AS base

FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN bun run build

FROM base AS runner
WORKDIR /app

ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV PORT=3000
ENV HOSTNAME="0.0.0.0"

# Install runtime dependencies
RUN apk add --no-cache dumb-init su-exec

COPY --from=builder --chown=bun:bun /app/public ./public
COPY --from=builder --chown=bun:bun /app/.next/standalone ./
COPY --from=builder --chown=bun:bun /app/.next/static ./.next/static

# Create entrypoint
COPY <<'EOF' /docker-entrypoint.sh
#!/bin/sh
set -e

if [ -d /run/secrets ]; then
chmod 644 /run/secrets/* 2>/dev/null || true
fi

exec su-exec bun bun server.js "$@"
EOF

RUN chmod +x /docker-entrypoint.sh

EXPOSE 3000

ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/docker-entrypoint.sh"]
FROM golang:1-alpine AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ) && \
CGO_ENABLED=0 go build \
-ldflags "-X moontracer/internal/commands.BuildTime=${BUILD_TIME}" \
-o /moontracer ./cmd/moontracer

FROM alpine:3.21
RUN apk add --no-cache ca-certificates

RUN mkdir -p /app/data
WORKDIR /app

COPY --from=build /moontracer /app/moontracer

ENTRYPOINT ["/app/moontracer"]
Loading
Loading