Krystie
8ecae81703
frontend: gate routine console.log behind window.DASHCADDY_DEBUG
...
Suppress noisy module-load and initialization logs in production.
Logs still appear when window.DASHCADDY_DEBUG is set (e.g. during dev).
2026-05-14 00:13:50 -07:00
Krystie
a216dd882d
Add dashboard version button and self-update UI wiring
2026-05-05 17:52:05 -07:00
Krystie
95b137bf17
Fix DNS2 self-updater path and sync live dashboard version UI
2026-05-05 17:26:42 -07:00
Krystie
f5fe32b999
feat(update): add release policy checks and dashboard version verification
2026-05-04 18:05:00 -07:00
Krystie
0c658a26a8
fix(routes): complete post-refactor dependency wiring cleanup
2026-05-04 16:44:18 -07:00
Krystie
4eebb3ce7a
fix(test): remove stale jest setupFilesAfterEnv entry
2026-05-04 16:36:09 -07:00
Krystie
55c405082a
fix: use TIMEOUTS constants instead of magic numbers in health and services routes
...
- health.js: replace magic number 5000 with TIMEOUTS.HTTP_DEFAULT (twice)
- services.js: replace magic number 5000 with TIMEOUTS.HTTP_DEFAULT
Both files already import TIMEOUTS from constants but weren't using it.
2026-05-01 02:36:31 -07:00
Krystie
2f1e2107bc
fix: replace console.log/console.error with proper logging in monitoring and themes routes
...
- monitoring.js: Added log dependency, replaced console.log with log.warn
- themes.js: Added log dependency, replaced console.error with log.error
- src/app.js: Pass log to monitoringRoutes and themesRoutes
This fixes error messages being lost to stdout instead of proper log files.
2026-05-01 02:24:59 -07:00
Krystie
9d00035128
Merge Phase 2.1: Server.js refactor (88% reduction, modular structure)
2026-03-30 00:31:40 -07:00
Krystie
ae6f2d9df1
fix(routes): Pass full deps to config/backup and create ctx shim
2026-03-30 00:24:47 -07:00
Krystie
a2ee590897
fix(routes): Pass licenseManager and other deps to auth/sso-gate
2026-03-30 00:23:12 -07:00
Krystie
e4b5a0a645
fix(routes): Add missing ctx shim to auth/sso-gate.js
2026-03-30 00:22:19 -07:00
Krystie
564c442ea4
fix(routes): Correct require paths for errors.js in subdirectory routes
2026-03-30 00:21:25 -07:00
Krystie
2929e52b14
fix(docker): Copy src/ directory in Dockerfile for Phase 2.1 refactor
2026-03-30 00:20:28 -07:00
Krystie
a86546181e
fix(lint): Add ctx shim to routes/auth/totp
...
- Add credentialManager, totpConfig, saveTotpConfig, session to deps
- Create ctx shim for backward compatibility
- Fix hasOwnProperty anti-pattern (use Object.prototype.hasOwnProperty.call)
Result: 54 errors → 0 errors
2026-03-29 22:37:21 -07:00
Krystie
5baa97bbf9
fix(lint): Add ctx shim to routes/apps and routes/arr
...
- routes/apps/deploy.js: Add ctx shim with APP_TEMPLATES, siteConfig, buildDomain, buildServiceUrl, addServiceToConfig, dns, notification, safeErrorMessage
- routes/apps/index.js: Extract additional ctx properties for sub-routes
- routes/arr/config.js: Add ctx shim with notification, safeErrorMessage + logError import
- routes/arr/index.js: Extract notification, safeErrorMessage for sub-routes
Result: Fixed ~30 no-undef errors (deploy.js 0 errors, arr/config.js 0 errors)
2026-03-29 22:35:13 -07:00
Krystie
3de65dbf81
Refactor recipes routes: explicit dependency injection
...
- Updated all recipes route modules to use destructured dependencies
- Added JSDoc comments for factory functions
- Replaced ctx. references with direct parameter access
- All files pass syntax validation
Files refactored:
- routes/recipes/deploy.js
- routes/recipes/manage.js
- routes/recipes/index.js (orchestrator)
2026-03-29 21:45:28 -07:00
Krystie
77ae8171b8
Refactor config routes: explicit dependency injection
...
- Updated all config route modules to use destructured dependencies
- Added JSDoc comments for factory functions
- Replaced ctx. references with direct parameter access
- All files pass syntax validation
Files refactored:
- routes/config/assets.js
- routes/config/backup.js
- routes/config/settings.js
- routes/config/index.js (orchestrator)
2026-03-29 21:43:29 -07:00
Krystie
df3e8efdd0
Refactor auth routes: explicit dependency injection
...
- Updated all auth route modules to use destructured dependencies
- Added JSDoc comments for factory functions
- Replaced ctx. references with direct parameter access
- Updated auth/index.js to extract and pass explicit dependencies
- sso-gate.js maintains session helper exports from session-handlers
- All files pass syntax validation
Files refactored:
- routes/auth/keys.js
- routes/auth/session-handlers.js
- routes/auth/sso-gate.js
- routes/auth/totp.js
- routes/auth/index.js (orchestrator)
2026-03-29 21:42:30 -07:00
Krystie
a4788c3f28
Refactor apps routes: explicit dependency injection
...
- Updated all apps route modules to use destructured dependencies
- Added JSDoc comments for factory functions
- Replaced ctx. references with direct parameter access
- Updated apps/index.js to extract and pass explicit dependencies
- All files pass syntax validation
Files refactored:
- routes/apps/deploy.js (18k lines)
- routes/apps/helpers.js (17k lines)
- routes/apps/removal.js
- routes/apps/restore.js
- routes/apps/templates.js
- routes/apps/index.js (orchestrator)
2026-03-29 21:36:15 -07:00
Krystie
6bde2eb62e
Refactor arr routes: explicit dependency injection
...
- Updated all arr route modules to use destructured dependencies
- Added JSDoc comments for factory functions
- Replaced ctx. references with direct parameter access
- Updated arr/index.js to extract and pass explicit dependencies
- Maintained backward compatibility with context pattern
- All files pass syntax validation
Files refactored:
- routes/arr/detect.js
- routes/arr/credentials.js
- routes/arr/config.js (579 lines)
- routes/arr/smart-connect.js
- routes/arr/plex.js
- routes/arr/helpers.js
- routes/arr/index.js (orchestrator)
2026-03-29 21:30:41 -07:00
Krystie
ac23b2e093
refactor(routes): Phase 3.6 - standardize sites.js
2026-03-29 20:16:08 -07:00
Krystie
cabcbcf98a
refactor(routes): Phase 3.5 - standardize logs.js
2026-03-29 20:14:33 -07:00
Krystie
8b1492142f
refactor(routes): Phase 3.4 - standardize browse.js
2026-03-29 20:13:25 -07:00
Krystie
e6e788fdce
refactor(routes): Phase 3.3 - standardize notifications.js (explicit deps)
2026-03-29 20:06:36 -07:00
Krystie
f6b103aed7
refactor(routes): Phase 3.2 - standardize tailscale.js (explicit deps + throw-based errors)
2026-03-29 20:06:13 -07:00
Krystie
4e96c62708
refactor(routes): Phase 3.1 - standardize updates.js (explicit deps)
2026-03-29 20:05:06 -07:00
Krystie
5da1e572a1
refactor(server): Complete Phase 2.1 - Split monolithic server.js
...
MASSIVE REFACTOR:
- Created src/app.js (17KB) - Express setup, middleware, routes
- Slimmed server.js from 1997 lines → 230 lines (88% reduction!)
- Backed up original as server-old.js for reference
NEW STRUCTURE:
src/
├── app.js (Express application factory)
├── config/ (paths, site config, constants)
├── context/ (DI container, domain modules)
└── utils/ (http, logging, responses, async-handler)
STATS:
- Old server.js: 1997 lines (monolith)
- New server.js: 230 lines (entry point only)
- Modular code: 1729 lines across 14 files in src/
- Total reduction: 88% in main file
server.js now ONLY handles:
- App creation
- License loading
- HTTP server startup
- Feature module initialization
- Graceful shutdown
All business logic moved to src/ modules. Clean, testable, maintainable.
Phase 2.1 COMPLETE ✅
2026-03-29 19:46:41 -07:00
Krystie
fa7a78388a
refactor(utils): Extract utilities from server.js
...
- Create src/utils/http.js - fetchT and HTTP helpers
- Create src/utils/logging.js - Structured logging and error logging
- Create src/utils/responses.js - Standard API responses
- Create src/utils/async-handler.js - Async wrapper with error handling
- Create src/utils/index.js - Consolidated exports
Removes scattered helper functions from server.js
2026-03-29 19:40:18 -07:00
Krystie
173dafa2f3
refactor(context): Extract context modules from god object
...
- Create src/context/docker.js - Docker operations
- Create src/context/caddy.js - Caddyfile manipulation
- Create src/context/dns.js - DNS token management and API calls
- Create src/context/session.js - Session wrapper
- Create src/context/index.js - Context assembly (DI container)
Breaks up the 50+ property ctx god object into domain-specific modules
2026-03-29 19:39:17 -07:00
Krystie
6c3d2baede
refactor(config): Extract configuration into src/config/ module
...
- Create src/config/paths.js for all file paths and env vars
- Create src/config/site.js for site configuration loading
- Create src/config/index.js as unified config export
- Prepare for server.js modularization (Phase 2.1)
Part of deslopification roadmap: break 1997-line server.js into layers
2026-03-29 19:36:43 -07:00
Krystie
ecedf0c132
Document error handling migration completion
2026-03-29 18:53:51 -07:00
Krystie
b172a21b63
Migrate 25 route files to throw-based error handling
...
Converted routes:
- All auth routes (totp.js, keys.js, sso-gate.js)
- Recipe deployment routes (deploy.js, manage.js, index.js)
- App deployment routes
- Config routes (assets, backup, settings)
- ARR routes (config, credentials)
- Infrastructure routes (dns, services, sites, logs)
- Additional routes (browse, ca, health, license, notifications, tailscale, updates)
Changes:
- Replaced ctx.errorResponse() with throw statements
- Replaced errorResponse() with throw statements
- Added proper error imports to each file
- 400 errors → ValidationError
- 401 errors → AuthenticationError
- 403 errors → ForbiddenError
- 404 errors → NotFoundError
- 409 errors → ConflictError
- 500 errors → Handled by middleware
Result: 25 files migrated, ~150 error responses standardized
2026-03-29 18:53:03 -07:00
Krystie
64a0018d00
Unified error handling system
...
- Consolidated all error classes into single errors.js
- Removed duplicate error definitions (NotFoundError, etc.)
- Added standard DC-XXX error codes for all error types
- Unified error middleware with automatic request logging
- Migrated routes/themes.js to throw-based error pattern
- Updated routes/services.js to use ConflictError
- Cleaner server.js error handler registration
- 40% less error handling boilerplate in routes
- Consistent error response format across all endpoints
2026-03-29 18:46:02 -07:00
Krystie
51d6c37e4a
refactor(routes): Phase 3.6-10 - standardize 5 utility routes
...
- credentials.js (2 deps: credentialManager, asyncHandler)
- backups.js (2 deps: backupManager, asyncHandler)
- license.js (2 deps: licenseManager, asyncHandler)
- errorlogs.js (3 deps: ERROR_LOG_FILE, auditLogger, asyncHandler)
- themes.js (0 deps! Standalone route)
Total: 9 routes refactored so far
2026-03-28 19:32:01 -07:00
Krystie
f095ef24aa
refactor(routes): Phase 3.5 - standardize monitoring.js (only 3 deps!)
2026-03-28 19:30:03 -07:00
Krystie
970e862533
refactor(routes): Phase 3.4 - standardize dns.js with explicit dependencies
...
- Replaced god object ctx with explicit dependency injection
- Added JSDoc documenting required dependencies (7 deps vs 50+)
- Updated response calls to use response-helpers (success/error)
- Dependencies: dns, siteConfig, asyncHandler, log, safeErrorMessage, fetchT, credentialManager
- DNS record management, Technitium proxy, credential storage all preserved
- 632 lines, now self-documenting and testable
2026-03-28 19:28:17 -07:00
Krystie
eac4ede21e
refactor(routes): Phase 3.3 - standardize health.js with explicit dependencies
...
- Replaced god object ctx with explicit dependency injection
- Added JSDoc documenting required dependencies (8 deps vs 50+)
- Updated response calls to use response-helpers (success/error)
- Self-documenting: you can see exactly what this route needs
- Health checks, pylon relay, CA cert validation all preserved
2026-03-28 19:25:06 -07:00
Krystie
4e2bec2ef0
refactor(routes): Phase 3.2 - standardize containers.js with explicit dependencies
...
- Replaced god object ctx with explicit dependency injection
- Added JSDoc documenting required dependencies (only 3!)
- Updated response calls to use response-helpers (success)
- Dependencies: docker, log, asyncHandler (vs 50+ ctx properties)
- Self-documenting and testable
2026-03-28 19:23:39 -07:00
Krystie
13d612df5d
refactor(routes): Phase 3.1 - standardize services.js with explicit dependencies
...
- Replaced god object ctx with explicit dependency injection
- Added JSDoc documenting all required dependencies
- Updated response calls to use response-helpers (success/error)
- Maintained all existing functionality
- Self-documenting: you can see exactly what this route needs
- Easier testing: mock only what's actually used (14 deps vs 50+ ctx properties)
2026-03-28 19:22:42 -07:00
Krystie
d76644d948
Sync DNS2 production changes - removed obsolete test suite and refactored structure
2026-03-23 10:47:15 +01:00
Krystie
1ac50918ab
Add package-lock and deployment script updates
2026-03-23 10:35:29 +01:00
Krystie
024be9c929
Build frontend bundles with CSRF token support
2026-03-23 10:34:57 +01:00
Krystie
883cce27df
Phase 3 (WIP): Refactor license, credentials, backups routes
...
- All use explicit deps instead of ctx
- Pattern consistent across all refactored routes
2026-03-22 11:09:55 +01:00
Krystie
81f778df72
Phase 3 (WIP): Refactor containers & monitoring routes
...
- routes/containers.js: Explicit deps (docker, asyncHandler, log)
- routes/monitoring.js: Explicit deps (docker, resourceMonitor)
- Pattern established: factory function with destructured deps
2026-03-22 11:09:16 +01:00
Krystie
3efa5dc3f4
Phase 2 (WIP): Extract context modules (caddy, dns)
...
- src/context/caddy.js: Caddyfile manipulation, reload, config generation
- src/context/dns.js: DNS API wrapper with token management
- All context modules use factory pattern with explicit dependencies
2026-03-22 11:08:05 +01:00
Krystie
efa9c7ba6b
Phase 2 (WIP): Add caddy context module
...
- src/context/caddy.js: Caddyfile manipulation, reload, config generation
- Uses dependency injection (init() pattern) for siteConfig, log, fetchT
- Atomic mutex-based modifications with rollback on failure
- All Caddy operations now in one module
2026-03-22 11:07:03 +01:00
Krystie
6771e4775e
Phase 2 (WIP): Add logger and docker context modules
...
- src/utils/logger.js: Structured JSON logging
- src/context/docker.js: Docker API wrapper (pull, findContainer, getUsedPorts)
- All modules can now be imported directly instead of via ctx
2026-03-22 11:05:50 +01:00
Krystie
d5a6789366
Phase 2 (WIP): Extract config and utils modules
...
- Created src/config/ (env.js, site-config.js)
- Created src/utils/ (async-handler.js, responses.js, safe-error.js)
- server.js not yet modified (backward-compatible extraction)
2026-03-22 11:04:04 +01:00
Krystie
039d3d07e2
Phase 1: Add dependency analysis documentation
2026-03-22 11:01:40 +01:00
Krystie
e2c67a8fe8
Phase 1: Add ESLint/Prettier config + baseline auto-fixes
2026-03-22 11:00:25 +01:00
Krystie
df0daaad46
Add full cross-platform path support
...
- Added automatic volume path translation in deployment (deploy.js)
- Updated FileBrowser template to use /opt/ instead of hard-coded E:/
- Migrated self-updater.js to use centralized platformPaths module
- Updated UI placeholders to use platform-neutral paths (/media/)
- All paths now automatically adapt to Windows or Linux at runtime via process.platform detection
2026-03-14 06:52:18 +01:00