chore: rename the project to Dotcom Arcade

This commit is contained in:
2026-10-13 19:19:15 -07:00
parent 5fc59f1f80
commit 05db4313ae
16 changed files with 38 additions and 28 deletions
+4 -5
View File
@@ -1,8 +1,8 @@
# Production Dockerfile for Flashpoint Web (single image: API + UI)
# Production Dockerfile for Dotcom Arcade (single image: API + UI)
#
# The backend serves both the REST API / game content and the built React UI,
# so this image runs a single Node process. Build from the repo root:
# docker build -t flashpoint-web .
# docker build -t dotcom-arcade .
# =============================================================================
# Stage 1: Frontend builder - Build the React app
@@ -54,10 +54,9 @@ FROM node:20.18.2-alpine
# Metadata labels
ARG VERSION=dev
LABEL org.opencontainers.image.title="Flashpoint Web"
LABEL org.opencontainers.image.description="Self-hosted web app for Flashpoint Archive (API + UI)"
LABEL org.opencontainers.image.title="Dotcom Arcade"
LABEL org.opencontainers.image.description="Self-hosted Flash-era game portal for Flashpoint Ultimate (API + UI)"
LABEL org.opencontainers.image.version="${VERSION}"
LABEL org.opencontainers.image.source="https://github.com/darkraise/flashpoint-web"
# An ARG does not survive into the running container; the server reads this to
# decide whether it is a released build.
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "flashpoint-web-backend",
"name": "dotcom-arcade-backend",
"version": "1.0.0",
"description": "Backend API for Flashpoint Archive web application",
"main": "dist/server.js",
@@ -0,0 +1,11 @@
-- ===================================
-- Migration 011: Default site name
-- ===================================
-- The project is now Dotcom Arcade. Installs still on the old default take the
-- new one; a name an admin chose is left alone.
UPDATE system_settings
SET
default_value = 'Dotcom Arcade',
value = CASE WHEN value = 'Flashpoint Web' THEN 'Dotcom Arcade' ELSE value END
WHERE key = 'app.site_name';
+1 -1
View File
@@ -61,7 +61,7 @@ const clientErrorLogger = winston.createLogger({
})(),
winston.format.json()
),
defaultMeta: { service: 'flashpoint-web-client' },
defaultMeta: { service: 'dotcom-arcade-client' },
transports: [
new winston.transports.File({
filename: ERROR_LOG_FILE,
+1 -1
View File
@@ -225,7 +225,7 @@ async function startServer() {
// pre-warm can run for minutes, and a closed port shows the user a connection
// error instead of a page that explains itself.
const server = app.listen(config.port, config.host, () => {
logger.info(`🚀 Flashpoint Web API server running on http://${config.host}:${config.port}`);
logger.info(`🚀 Dotcom Arcade server running on http://${config.host}:${config.port}`);
logger.info(`📁 Flashpoint path: ${config.flashpointPath}`);
logger.info(`🎮 Game content: /game-proxy/* and /game-zip/* (integrated)`);
logger.info(`🌍 Environment: ${config.nodeEnv}`);
+2 -2
View File
@@ -17,7 +17,7 @@ import { logger } from '../utils/logger';
* - OTEL_ENABLED: Enable/disable telemetry (true/false)
* - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint (e.g., http://localhost:4318)
* - OTEL_API_KEY: API key for authentication (sent as "Authorization: Api-Key <key>")
* - OTEL_SERVICE_NAME: Service name (default: flashpoint-web-backend)
* - OTEL_SERVICE_NAME: Service name (default: dotcom-arcade-backend)
* - OTEL_TRACES_ENABLED: Enable traces (default: true)
* - OTEL_METRICS_ENABLED: Enable metrics (default: true)
* - OTEL_METRICS_EXPORT_INTERVAL: Metrics export interval in ms (default: 60000)
@@ -40,7 +40,7 @@ function getOtelConfig() {
enabled: process.env.OTEL_ENABLED === 'true',
endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318',
apiKey: process.env.OTEL_API_KEY || '',
serviceName: process.env.OTEL_SERVICE_NAME || 'flashpoint-web-backend',
serviceName: process.env.OTEL_SERVICE_NAME || 'dotcom-arcade-backend',
serviceVersion: process.env.npm_package_version || '1.0.0',
tracesEnabled: process.env.OTEL_TRACES_ENABLED !== 'false',
metricsEnabled: process.env.OTEL_METRICS_ENABLED !== 'false',
+1 -1
View File
@@ -154,7 +154,7 @@ export const logger = winston.createLogger({
otelFormat(),
winston.format.json()
),
defaultMeta: { service: 'flashpoint-web-backend' },
defaultMeta: { service: 'dotcom-arcade-backend' },
transports,
});
+1 -1
View File
@@ -21,7 +21,7 @@
form-action 'self';
"
/>
<title>Flashpoint Archive</title>
<title>Dotcom Arcade</title>
<!-- Blocking script to prevent FOUC (Flash of Unstyled Content) -->
<!-- Applies theme before first paint by reading from localStorage -->
<script>
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "flashpoint-web-frontend",
"name": "dotcom-arcade-frontend",
"private": true,
"version": "1.0.0",
"type": "module",
+1 -1
View File
@@ -32,7 +32,7 @@ export function Header({ hideSidebarToggle = false, hideSearch = false }: Header
const { logout } = useAuth();
const { data: publicSettings } = usePublicSettings();
const siteName = publicSettings?.app?.siteName ?? 'Flashpoint Archive';
const siteName = publicSettings?.app?.siteName ?? 'Dotcom Arcade';
const isMobile = typeof window !== 'undefined' && window.innerWidth < 1024;
const effectiveCollapsed = isMobile ? false : sidebarCollapsed;
@@ -20,7 +20,7 @@ import { useMatureStore } from '@/store/mature';
export const PortalHeader = forwardRef<HTMLInputElement>(function PortalHeader(_props, searchRef) {
const navigate = useNavigate();
const { data: publicSettings } = usePublicSettings();
const siteName = publicSettings?.app?.siteName ?? 'Flashpoint Archive';
const siteName = publicSettings?.app?.siteName ?? 'Dotcom Arcade';
const tagline = publicSettings?.app?.tagline;
const [query, setQuery] = useState('');
@@ -51,14 +51,14 @@ export function AppUpdateCard() {
if (result.lastCheckFailed) {
showToast('Could not reach GitHub to check for updates', 'error');
} else if (result.updateAvailable) {
showToast(`Flashpoint Web ${result.latestVersion} is available`, 'success');
showToast(`Dotcom Arcade ${result.latestVersion} is available`, 'success');
} else if (result.isUnreleasedBuild) {
showToast(
`Update checks are off for this build (latest release: ${result.latestVersion ?? 'unknown'})`,
'info'
);
} else if (versionsMatch(result.currentVersion, result.latestVersion)) {
showToast('Flashpoint Web is up to date', 'success');
showToast('Dotcom Arcade is up to date', 'success');
} else {
showToast(`Latest release: ${result.latestVersion ?? 'unknown'}`, 'info');
}
@@ -84,7 +84,7 @@ export function AppUpdateCard() {
<div className="flex items-center justify-between mb-4">
<div className="flex items-center gap-2">
<Rocket size={24} className="text-primary" aria-hidden="true" />
<h2 className="text-xl font-semibold">Flashpoint Web</h2>
<h2 className="text-xl font-semibold">Dotcom Arcade</h2>
</div>
<Button
variant="outline"
+2 -2
View File
@@ -33,7 +33,7 @@ export interface SaveSyncState {
const STATE_DB = 'flashpoint-save-sync';
const STATE_STORE = 'games';
/** flashpoint-web's own storage, never part of a game's save */
/** The app's own storage, never part of a game's save */
const APP_DATABASES = new Set(['flashpoint-stream-saves', STATE_DB]);
// Unity WebGL's asset cache: large and re-downloadable, not a save
const IGNORED_DATABASES = new Set(['UnityCache']);
@@ -170,7 +170,7 @@ async function gameDatabaseHashes(): Promise<Map<string, string>> {
}
/**
* Notices what a running game changes. Games share flashpoint-web's origin and
* Notices what a running game changes. Games share the app's origin and
* Ruffle saves may use a site-wide path, so storage that changes while a game
* runs is attributed to it rather than guessed from names.
*/
+6 -6
View File
@@ -1,11 +1,11 @@
{
"name": "flashpoint-web-app",
"name": "dotcom-arcade",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "flashpoint-web-app",
"name": "dotcom-arcade",
"version": "1.0.0",
"license": "GPL-3.0",
"workspaces": [
@@ -21,7 +21,7 @@
}
},
"backend": {
"name": "flashpoint-web-backend",
"name": "dotcom-arcade-backend",
"version": "1.0.0",
"license": "GPL-3.0",
"dependencies": {
@@ -2291,7 +2291,7 @@
}
},
"frontend": {
"name": "flashpoint-web-frontend",
"name": "dotcom-arcade-frontend",
"version": "1.0.0",
"dependencies": {
"@fontsource-variable/fredoka": "^5.3.0",
@@ -12087,11 +12087,11 @@
"node": ">= 0.8"
}
},
"node_modules/flashpoint-web-backend": {
"node_modules/dotcom-arcade-backend": {
"resolved": "backend",
"link": true
},
"node_modules/flashpoint-web-frontend": {
"node_modules/dotcom-arcade-frontend": {
"resolved": "frontend",
"link": true
},
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "flashpoint-web-app",
"name": "dotcom-arcade",
"version": "1.0.0",
"description": "Flashpoint Archive web application",
"private": true,
+1 -1
View File
@@ -11,7 +11,7 @@ const STREAM_URL = /^\/stream\/([0-9a-f]{32})(\/.*)$/;
const HEARTBEAT_MS = 25_000;
const MAX_BODY_BYTES = 16 * 1024 * 1024;
/** Internal API for flashpoint-web's backend: reports streamable games and creates sessions. */
/** Internal API for the app's backend: reports streamable games and creates sessions. */
export function createApiServer(sessions: SessionManager, catalog: Pick<GameCatalog, 'streamSize'>, token: string): http.Server {
return http.createServer((req, res) => {
handle(res, async () => {