NanamiAdmin and Claude Code
cb2df5076d
refactor(config): publish config singletons through atomic pointers
...
The three configuration singletons (C_globalConfig, C_botUserConfig,
C_botNodeConfig) were plain variables: LoadGlobalConfig and friends assigned
them from the goroutine handling a settings update, while bot pipes, the node
tracker and the HTTP handlers read them from their own goroutines. That is an
unsynchronized read of a concurrently written variable — a data race the race
detector reports, and one that already existed before any hot-reload work
because /api/webhook/add reloads the configuration while the bots run.
Replace them with atomic.Pointer values behind Current(), BotUsers() and
BotNodes(). Each reload builds a fresh value and publishes it atomically, so a
reader either sees the previous configuration or the new one, never a partial
one. Callers read through the accessor on every use instead of caching it.
Two spots that read several fields of one guard now snapshot once per call, so
a reload cannot split a combined check mid-flight:
- qq_napcat.handleNapcatEvent, which evaluates the debug guards per event
- the komari task-echo guard, now behind taskEchoEnabled()
The NapCat HTTP methods keep logging on showNapcatAction alone (without
requiring debugMode), matching their existing behaviour; that inconsistency
with the WebSocket path is preserved, not introduced, and is called out in
actionLogEnabled.
Also adds TestConcurrentReloadAndRead, which drives every accessor from four
reader goroutines while two writers reload the configuration, and sanitises the
member IDs used as test fixtures in config/settings_test.go.
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 22:47:37 +08:00
NanamiAdmin
2d5cf39151
fix(changelog): update version format to include commit hash for pre-release
2026-09-24 15:32:36 +08:00
NanamiAdmin
05dcc3769d
feat(changelog): add webhook API settings and configuration feature
2026-09-24 15:03:57 +08:00
NanamiAdmin
f36f17bd2a
feat(frontend): enhance webhook functionality and UI
...
- Updated incoming webhook API endpoint to use `/api/webhook/post/<name>` for better namespace management.
- Added a new WebHooks page in the admin UI for managing webhook endpoints.
- Introduced a ConfigSection component to streamline the rendering and saving of configuration fields.
- Enhanced Settings.vue to reference the new WebHooks page and updated the configuration structure.
- Implemented a new webhook API in the frontend to handle listing, adding, modifying, and removing webhook endpoints.
- Improved the sidebar to include a link to the WebHooks page.
- Added functionality to generate tokens for new webhook endpoints and manage notification channels.
2026-09-24 15:02:52 +08:00
NanamiAdmin
3877c6d128
feat(webhook): implement management API for incoming webhook endpoints
2026-09-24 12:32:22 +08:00
NanamiAdmin
3ce42b3cca
docs(changelog): add incoming webhook API feature to version 0.2.0.5
2026-09-24 11:24:13 +08:00
NanamiAdmin
057d7d584d
feat: add incoming webhook API support with configurable endpoints
...
- Implemented the incoming webhook API to handle alerts from external applications.
- Added configuration options for webhook listening address, port, and endpoints in config.go.
- Created WebhookReceiverConfig and WebhookEndpointConfig structures to manage webhook settings.
- Developed WebhookHandler to process incoming requests, validate tokens, and deliver alerts to specified channels.
- Enhanced existing controller interfaces to support alert delivery.
- Updated message rendering to respect Markdown settings for different channels.
- Added tests for webhook functionality and ensured proper error handling.
2026-09-24 11:21:38 +08:00
NanamiAdmin
90ca08066b
feat(release): update version to 0.2.0 and enhance changelog with new features
2026-09-23 11:22:46 +08:00
NanamiAdmin
d481f13d1d
feat(auth): implement WebSocket authentication for admin access to logs
2026-09-23 11:20:52 +08:00
NanamiAdmin
7ecf51eba5
docs(changelog): add Ver.0.1.2.4-59c0f5d.pre-release change log
2026-09-23 11:01:47 +08:00
NanamiAdmin
59c0f5d5d8
fix(variables): update version and build number in SoftwareInfo
2026-09-22 22:58:43 +08:00
NanamiAdmin
16455027ec
fix(changelog): add missing URL for frontend build integration entry
2026-09-22 22:57:30 +08:00
NanamiAdmin
4be6d2add0
feat(build): integrate frontend build into backend binary and update scripts
2026-09-22 22:57:08 +08:00
NanamiAdmin
15144fb9d4
docs(changelog): add initial changelog entries for version 0.1.2.3
2026-09-22 22:11:04 +08:00
NanamiAdmin
a89ad8143a
fix(build): correct build script paths for Windows and Linux
2026-09-22 21:00:15 +08:00
NanamiAdmin
fb5b46a548
chore(go.mod): update Go version to 1.27.1
2026-09-22 20:59:46 +08:00
NanamiAdmin
f6092cd178
docs(readme): add frontend development instructions and update requirements
2026-09-10 21:02:43 +08:00
NanamiAdmin
3cba5df5c7
docs(readme): update build instructions
2026-09-10 21:01:13 +08:00
NanamiAdmin
b2566d45f8
feat(build): add scripts for building frontend and backend for Linux and Windows
2026-09-10 20:59:21 +08:00
NanamiAdmin
8b88377d4f
chore(web): directly read frontend/dist folder but not read it from web folder
2026-09-10 20:51:11 +08:00
NanamiAdmin
f6af57cf58
feat(web): add static file serving for the frontend
2026-09-10 20:43:46 +08:00
NanamiAdmin
160918a93e
fix(frontend): adjust the first node card height to avoid higher a little then others
2026-09-10 20:15:26 +08:00
NanamiAdmin
f622baadbd
fix(frontend/settings): fix json marshal fault, now the settings page could be loaded correctly
2026-09-10 20:12:21 +08:00
NanamiAdmin
78284ed816
feat(frontend): add debugMode global variable to store debug mode state
2026-09-10 19:36:29 +08:00
NanamiAdmin
d96b90b5bf
feat: update API response structure to nest payloads under a single "data" key
2026-09-09 16:15:33 +08:00
NanamiAdmin
c0eada9bcc
remove claude skills file
2026-09-08 23:18:31 +08:00
NanamiAdmin
378727ac57
feat(frontend): implement basic frontend interface
2026-09-08 23:15:50 +08:00
NanamiAdmin
8b43e8b2ea
feat(config): make resolver support null value to delete a
...
key.
2026-09-08 23:10:26 +08:00
NanamiAdmin
786f364743
feat(user): implement registration for the first user with concurrency handling
2026-09-08 22:53:02 +08:00
NanamiAdmin
a0e2df615c
feat: add /api/server/getInfo to handle frontend get server info.
...
chore: rebuild `/api/server/getStatus` to the same logic as `getInfo`.
2026-09-08 22:28:49 +08:00
NanamiAdmin
4eb9abff49
feat: add /api/settings/get, /api/settings/set to modify config in frontend
2026-09-08 22:13:30 +08:00
NanamiAdmin
15f1ee38db
feat(variables): update software version to 0.1.1 and change build type to pre-release
2026-09-06 22:05:56 +08:00
NanamiAdmin
ec1cf20347
feat(config): implement loading and saving of bot node configuration with default notification settings
2026-09-06 14:00:45 +08:00
NanamiAdmin
6a0c2d1fc4
feat(controller): add per-node notify switch controller
2026-09-06 10:48:38 +08:00
NanamiAdmin
5bc85effa7
feat(komari): add bot_node_config.json to restore single node configurarion
2026-09-06 10:33:58 +08:00
NanamiAdmin
13a670eadd
style(config): add structured config paths for global and bot configurations
2026-09-06 10:19:28 +08:00
NanamiAdmin
0cedb51e50
doc(readme): update readme to justify latest codebase
2026-09-03 15:34:32 +08:00
NanamiAdmin
6c819f8c52
feat(controller): enhance message handling and user options for automatic notifications
2026-09-03 11:57:20 +08:00
NanamiAdmin
2a1f5e11f8
feat(controller): update notification logic to respect event_status_notify settings for trusted groups and admins
2026-09-02 21:35:07 +08:00
NanamiAdmin
16341972af
style: replace GetConfig() with variable C_globalConfig
2026-09-02 21:24:27 +08:00
NanamiAdmin
bf4cdf0d88
chore(config): move admins && trustedGroups to a new config bot_user_config.json.
...
feat(config): add load bot_user_config endpoint
style(config): rename `LoadConfig` to `LoadGlobalConfig`.
2026-09-02 21:19:50 +08:00
NanamiAdmin
0b7fcd6c48
chore(telegram): rebuild telegram module with go-telegram/bot
...
fix(telegram): fix bot cannot send message in groups
2026-09-02 20:47:25 +08:00
NanamiAdmin
935ea24d54
feat(controller): enhance command handlers to accept source parameter for improved message formatting
2026-08-19 20:02:18 +08:00
NanamiAdmin
5689c942d2
feat(controller): add /getip command to retrieve server IP information
2026-08-19 14:39:41 +08:00
NanamiAdmin
bd2bccd8ef
feat(komari): update FetchNodes to use JSON-RPC2 for node retrieval
2026-08-19 14:21:25 +08:00
NanamiAdmin
f2cc16177c
feat(controller): add source for command handling.
...
feat(telegram): switch message type to markdown
feat(controller): add welcome message for telegram bot.
2026-08-13 17:07:55 +08:00
NanamiAdmin
8589654ba4
feat(internal/controller/pipes/telegram): make basic telegram communication functional
2026-08-12 23:57:16 +08:00
NanamiAdmin
56cc3485a7
feat(netproxy): add network proxy module to provide unified network proxy connection.
...
feat(internal/controller): make email, ntft, webhook, qq_napcat able to use network proxy.
2026-08-12 22:53:23 +08:00
NanamiAdmin
105fa47811
feat(debug): make komari task echo log to debug level and selectable
...
feat(internal/controller/qq_napcat): add trigger log display and detailed to chatID and senderID
2026-08-12 22:29:57 +08:00
NanamiAdmin
8cd7cfd6e7
feat(controller): add help command with message template for bot commands
2026-08-07 22:39:57 +08:00
NanamiAdmin
ebbbe7ba1d
feat(node): add Info structure to save every nodes system information
...
feat(processor): add /info <uuid> command to show basic system info for specific node
2026-08-07 22:31:02 +08:00
NanamiAdmin
56ed32ac0c
feat(controller): add init message for bot pipes
...
chore: move softwareInfo from main package to a individual global package
2026-08-07 22:13:15 +08:00
NanamiAdmin
d8a192e4e5
feat(build): add build scripts for Linux and Windows with commit hash and build time
2026-08-07 20:45:05 +08:00
NanamiAdmin
fcb0751267
refactor(internal/komari/ws): streamline status request logic and enhance read loop handling
...
refactor(internal/node/tracker): improve initial refresh gating and snapshot handling
2026-08-07 18:33:34 +08:00
NanamiAdmin
58b600baf6
feat(node/tracker): implement initial refresh gate and bootstrap completion logic
2026-08-07 18:03:16 +08:00
NanamiAdmin
f342ef5b34
fix(internal/controller/pipes/qq_napcat): remove debug msg echo, now it can process commands
2026-08-06 18:52:36 +08:00
NanamiAdmin
30ed0bd9ec
chore(internal/controller): split command processor from pipes as an individual module
2026-08-06 17:53:53 +08:00
NanamiAdmin
10c3727b01
feat(internal/controller): split trigger from controller.go as a seperate module.
...
feat(internal/controller/pipes/qq_napcat): add message receive debug output.
2026-08-06 17:17:01 +08:00
NanamiAdmin
1d09765a4a
chore(qq_napcat): rewrite all napcat_bridge logic into this project to replace adapt into napcat_bridge
2026-08-05 17:07:29 +08:00
NanamiAdmin
dc30675e0f
style(controller): re-organize controller project structure: split controller and pipes
2026-08-05 14:27:22 +08:00
NanamiAdmin
6e93a9bd2f
fix(internal\komari\ws): add websocket origin header to prevent 403; replace with json-rpc 2.0.
2026-08-05 14:12:16 +08:00
NanamiAdmin
814fbe0dae
fix(database): fix sqlite init error in smb workspace
...
fix(postLog/database): change journal mode from WAL to DELETE
2026-08-05 13:31:25 +08:00
NanamiAdmin
c25b267334
fix: resolve merge conflict in README.md
2026-08-03 22:18:00 +08:00
NanamiAdmin
86a6736a48
Merge branch 'main' of https://gitea.nanami.tech/Nukumizu/numumizu-backend
2026-08-03 22:17:11 +08:00
NanamiAdmin
19b69acc29
feat: finish project basic structure and core functions
2026-08-03 22:15:53 +08:00
NanamiAdmin
b3a5a5bad1
Update README.md
2026-08-03 13:40:17 +08:00
NanamiAdmin
3ab175b595
Initial commit
2026-08-03 13:39:23 +08:00