- Resolve gameServerRegistry.json's null deep_link entries against the
live drop-db catalog (WoW, EverQuest, Among Us match real Game rows;
OpenDAoC and the Goldberg relay genuinely have none, left null and
documented why).
- Fix the "0 online now" panel bug: the community landing page's
persistent-world quick-strip was inferring presence from PlaySession
name-matching (presenceService.getServerPresence), which hardcodes
available=true even with zero matches -- always showing a fake "0"
for EQEmu instead of the honest unavailable state. Switched it to the
same probe-backed GameServer feed ServerStatusPanel already uses
(joined by the shared wow/eqemu/daoc slug), so known-zero and
count-unavailable never render the same.
- Header people icon now opens a friends flyout (list, incoming
requests with accept/decline, entry into chat with a friend) instead
of going nowhere, mirroring the existing notifications bell's
Menu/MenuButton/MenuItems pattern; badge shows pending request count.
Mobile sidebar links it straight to /community/friends.
- Community gets a hover submenu in the main nav (desktop) / inline
sublist (mobile) listing Friends, Chat, Devices, Mods, Servers,
Issues, Achievements.
- User dropdown menu gets a "Your profile" entry resolved from the
signed-in user's own username (/community/profile/<username>), not
hardcoded.
GameServer/GameServerStatusHistory/Issue/IssueComment models, a
strategy-per-probe_type ServerProbe (tcp_connect/http_get/presence_inferred,
mirroring script-library's game-server-registry-probe.py including the
integer ConnectTimeout fix), the bundled verified registry seed (WoW, EQEmu,
the Goldberg relay, Impostor, OpenDAoC), and full player+admin UI at
/community/servers and /community/issues. Featured flag pins the
persistent-world servers (WoW/EQEmu/OpenDAoC) to a compact status panel
surfaced on the community landing page. Scheduled sweep respects a
circuit-breaker backoff and never probes on page load; the relay is never
network-probed, only liveness-checked over ssh.
WebSocketHandler throws on the literal "unauthenticated" server response
when no .error() handler is registered, before its listen() callback ever
runs -- and since this composable connects at module scope (Nuxt bundles
auto-imported composables into a shared chunk), that happened on every
signed-out page, /auth/signin included. Found live: a browser check of
/auth/signin hung on an uncaught exception from this exact path.
Friendship (request/accept/decline/remove, self-request and crossing-request
handling, DB-level pair uniqueness via a hand-written expression index),
ChatRoom/ChatMessage/ChatReadState backed by Nitro's built-in websocket
(server/api/v1/community/ws.get.ts) behind a ChatTransport seam
(server/internal/community/chatTransport.ts) with a REST send fallback.
Mid-milestone product redirect: chat's primary job is coordinating the
persistent-world servers (EQEmu/WoW/DAoC), not per-title discussion --
ChatRoomKind gets a first-class `server` case and chatService.ts ships a
static KNOWN_SERVERS registry keyed the same way M4's GameServer will be,
once that lands (gameServerId reserved for that wiring-up pass).
Presence has no new table -- "online" is a live websocket registry
(presenceRuntime.ts), "playing X" reads through an isolated query module
(presenceService.ts) that degrades to an empty, clearly-labeled result if
PlaySession's shape doesn't match what it expects.
Pages: /community/friends, /community/chat, plus a friends/servers strip on
/community itself. Migration 20260803120000_m3_friends_chat.
* Adds new tile on the admin home page with system data. Also fixes the active users bug in the pie chart
* Fixes missing parentheses
* Updates user stats cache when signing in
* Reads active number of users from session provider
* Removes unused variable
* Small improvements
* Removes acl properties from system data websocket and performs initial push of data
* fix: remove acl fetch
---------
Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
* fix: small fixes to request util and version update endpoint
* feat: api token creation and management
* fix: lint
* fix: remove unneeded sidebar component
* feat: small library tweaks + company page
* feat: new store view
* fix: ci merge error
* feat: add genres to store page
* feat: sorting
* feat: lock game/version imports while their tasks are running
* feat: feature games
* feat: tag based filtering
* fix: make tags alphabetical
* refactor: move a bunch of i18n to common
* feat: add localizations for everything
* fix: title description on panel
* fix: feature carousel text
* fix: i18n footer strings
* feat: add tag page
* fix: develop merge
* feat: offline games support (don't error out if provider throws)
* feat: tag management
* feat: show library next to game import + small fixes
* feat: most of the company and tag managers
* feat: company text field editing
* fix: small fixes + tsgo experiemental
* feat: upload icon and banner
* feat: store infinite scrolling and bulk import mode
* fix: lint
* fix: add drop-base to prettier ignore
* chore: update prisma to 6.11
more prisma future proofing due to experimental features
* chore: update dependencies
twemoji - new unicode update
argon2 - bux fixes
vue3-carousel - improve mobile experiance
vue-tsc - more stable
* fix: incorrect prisma version in docker
Also remove default value for BUILD_DROP_VERSION, that is now handled in nuxt config
* fix: no logging in prod
* chore: optimize docker builds even more
* fix: revert adoption of prisma driverAdapters
see: https://github.com/prisma/prisma/issues/27486
* chore: optimize dockerignore some more
* Fix `pino-pretty` not being included in build (#135)
* Remove `pino` from frontend
* Fix for downloads and removing of library source (#136)
* fix: downloads and removing library source
* fix: linting
* Fix max file size of 4GB (update droplet) (#137)
* Fix manual metadata import (#138)
* chore(deps): bump vue-i18n from 10.0.7 to 10.0.8 (#140)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 10.0.7 to 10.0.8.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v10.0.8/packages/vue-i18n)
---
updated-dependencies:
- dependency-name: vue-i18n
dependency-version: 10.0.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump @intlify/core from 10.0.7 to 10.0.8 (#139)
---
updated-dependencies:
- dependency-name: "@intlify/core"
dependency-version: 10.0.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Small fixes (#141)
* fix: save task as Json rather than string
* fix: pull objects before creating game in database
* fix: strips relative dirs from version information
* fix: #132
* fix: lint
* fix: news object ids and small tweaks
* fix: notification styling errors
* fix: lint
* fix: build issues by regenerating lockfile
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ci: pull version from package.json on build
* fix: implicit any type
* feat: inital support for logger
* style: fix lint
* feat: move more logging over to pino
* fix: logging around company importing
The Task API allows for an easy way to create long-lived tasks that
require reporting back to user with progress/logs. It will be used in
the upcoming game importing.
Object storage now works fully, with the permission system. It still
needs additional external endpoints for updating and deleting objects
from the API, but it is otherwise complete. Further tasks include
writing an S3 adapter.