Introduce structured security headers support (CSP, HSTS, X-Frame-Options, COOP/COEP/CORP, Permissions-Policy, Referrer-Policy, X-XSS-Protection, etc.) and apply them to responses and OPTIONS preflight. Expose configuration via the server API and document usage. Also update UtilityWebsiteServer defaults (SPA fallback enabled by default) and related docs.
48 KiB
Changelog
2025-12-05 - 7.9.0 - feat(typedserver)
Add configurable security headers and default SPA behavior
Introduce structured security headers support (CSP, HSTS, X-Frame-Options, COOP/COEP/CORP, Permissions-Policy, Referrer-Policy, X-XSS-Protection, etc.) and apply them to responses and OPTIONS preflight. Expose configuration via the server API and document usage. Also update UtilityWebsiteServer defaults (SPA fallback enabled by default) and related docs.
- Add ISecurityHeaders and IContentSecurityPolicy TypeScript interfaces to configure CSP, HSTS and other security-related headers.
- Implement buildCspHeader to serialize CSP config and applyResponseHeaders to add CORS and all configured security headers to outgoing responses.
- Apply security headers to OPTIONS preflight responses and all other responses by default when securityHeaders option is provided.
- Add securityHeaders option to IServerOptions and wire it through TypedServer and UtilityWebsiteServer constructors.
- Update UtilityWebsiteServer: renamed template to UtilityWebsiteServer, enable SPA fallback by default, expose options (cors, spaFallback, securityHeaders, forceSsl, port, feedMetadata, etc.) and forward them into the TypedServer instance.
- Documentation: add Security Headers section and example usage to readme.md; document the UtilityWebsiteServer defaults and example.
- Ensure CORS headers are only added when cors option is enabled.
2025-12-05 - 7.8.18 - fix(readme)
Update README to reflect new features and updated examples (SPA/PWA/Edge/ServiceWorker) and clarify API usage
- Rewrite project introduction and features list to highlight Service Worker, Edge Workers, SPA support, and PWA readiness
- Replace and expand example sections: Basic Server, Full Configuration, TypedRequest handlers, WebSocket usage, Edge Worker entrypoint, and Service Worker client usage
- Update configuration reference: remove legacy compression flags, add spaFallback, defaultAnswer, feedMetadata, and blockWaybackMachine options
- Document package exports and add examples for utility servers (WebsiteServer, ServiceServer)
- Clarify TypedRequest/TypedSocket usage by showing server.typedrouter and service worker client initializer (getServiceworkerClient)
2025-12-04 - 7.8.11 - fix(web_inject)
Improve logging in web injection (TypedRequest) and update dees-comms dependency
- Add debug logging to ts_web_inject to explicitly filter serviceworker_* methods and avoid infinite loops
- Log incoming TypedRequest methods for better visibility during debugging
- Bump dependency @design.estate/dees-comms from ^1.0.27 to ^1.0.28
2025-12-04 - 7.8.0 - feat(serviceworker)
Add TypedRequest traffic monitoring and SW dashboard 'Requests' panel
- Add TypedRequest traffic monitoring interfaces and shared SW dashboard HTML (SW_DASH_HTML) to ts_interfaces/serviceworker.ts.
- Introduce RequestLogStore (ts_web_serviceworker/classes.requestlogstore.ts) to collect, persist in-memory, and compute stats for TypedRequest traffic (logs, counts, methods, averages).
- Add service worker backend handlers to receive and broadcast TypedRequest logs and to expose endpoints: serviceworker_typedRequestLog, serviceworker_getTypedRequestLogs, serviceworker_getTypedRequestStats, serviceworker_clearTypedRequestLogs.
- Expose HTTP routes and fallback behaviors in the server built-in controller to serve the SW dashboard (GET /sw-dash and /sw-dash/bundle.js) and to return sensible 503 placeholders when the SW is not active.
- Extend the service worker CacheManager and DashboardGenerator to serve TypedRequest-related endpoints (/sw-dash/requests, /sw-dash/requests/stats, /sw-dash/requests/methods) and to integrate RequestLogStore data into the dashboard APIs.
- Add a Lit-based dashboard component sw-dash-requests (ts_swdash/sw-dash-requests.ts) and integrate it into the main sw-dash-app UI to display live TypedRequest traffic with filtering, payload toggles, pagination and clear logs action.
- Enable client-side traffic logging from the injected reload checker (ts_web_inject/index.ts) by setting global TypedRouter hooks that send log entries to the service worker, with safeguards to avoid logging the logging requests themselves.
- Add action manager utilities (ts_web_serviceworker_client/classes.actionmanager.ts) to log TypedRequest entries to the SW, query logs and stats, clear logs, and subscribe to real-time TypedRequest broadcasts.
- Refactor Dashboard HTML generation to use the shared SW_DASH_HTML constant so server and service worker serve the same UI shell.
- Integrate broadcasting of TypedRequest log events from service worker backend to connected clients so the SW dashboard updates in real time.
2025-12-04 - 7.7.1 - fix(web_serviceworker)
Standardize DeesComms message format in service worker backend
- Add createMessage helper to generate consistent TypedRequest-shaped messages (includes messageId and correlation.id/phase).
- Replace inline postMessage payloads with createMessage(...) calls across ServiceworkerBackend (status updates, new-version broadcasts, alerts, event pushes, metrics updates, resource-cached notifications).
- Improves message consistency and enables easier correlation/tracing of DeesComms messages; behavior should remain backward-compatible.
2025-12-04 - 7.7.0 - feat(typedserver)
Add SPA fallback support to TypedServer
- Introduce new IServerOptions.spaFallback boolean to enable SPA routing fallback.
- When enabled, GET requests for paths without a file extension will serve serveDir/index.html.
- Preserves existing HTML injection behavior: injectReload still injects devtools script and typedserver metadata into <head> when enabled.
- Responses from SPA fallback include Cache-Control: no-cache and appHash header for cache-busting; falls through to 404 on errors.
- Non-file routes that contain a dot (.) are not considered for SPA fallback to avoid interfering with asset requests.
2025-12-04 - 7.6.0 - feat(typedserver)
Remove legacy Express-based servertools, drop express deps, and refactor TypedServer to SmartServe + typedrouter with CORS support
- Remove legacy ts/servertools module and many Express-based helpers (classes.server, handler, handlerstatic, handlerproxy, compressor, sitemap, feed, tools.*). The servertools compatibility layer is no longer available.
- Drop express-related dependencies from package.json (@types/express, express, body-parser, cors, express-force-ssl).
- Refactor core API: ts/index.ts no longer exports servertools and ts/plugins.ts no longer re-exports Express middleware — consumers must migrate to SmartServe/typedrequest/typedsocket primitives.
- TypedServer rewritten: integrates with @push.rocks/smartserve ControllerRegistry, adds custom route parsing, CORS header helper and OPTIONS preflight handling, improved static file handling with optional reload injection, file watching, typedrouter and typedsocket integration.
- UtilityWebsiteServer now registers the serviceworker versionInfo handler on typedrouter instead of using the removed servertools.serviceworker helper.
- This is a breaking change — public APIs and dependency surface changed; bump major version.
2025-12-04 - 7.5.0 - feat(serviceworker)
Add real-time service worker push updates and DeesComms integration (metrics, events, resource caching)
- Integrate DeesComms push channel for real-time SW → client communication and export/consume deesComms in relevant plugin modules.
- Add typed push message interfaces for events, metrics snapshots and resource-cached notifications in serviceworker interfaces.
- Implement backend push methods: pushEvent, pushMetricsUpdate (with 500ms throttle) and pushResourceCached in ServiceworkerBackend.
- Trigger push updates from MetricsCollector and PersistentStore so metrics and logged events are broadcast to connected clients.
- Add client-side DeesComms handlers in sw-dash app: receive metrics, event logs and resource notifications; add heartbeat and initial HTTP seed to maintain SW health state.
- Add event push listener and cleanup in sw-dash-events component to prepend incoming events and avoid leaks.
- Expose getServiceWorkerBackend() from SW init for internal modules to call push methods.
- Misc: implement request deduplication and various robustness improvements (throttling, heartbeat, safer polling, removed noisy debug logs).
2025-12-04 - 7.4.1 - fix(web_serviceworker)
Improve service worker persistence, metrics and caching robustness
- Ensure persistent store is initialized before use in dashboard handlers and service worker activation/handlers (calls to persistentStore.init())
- Make serveCumulativeMetrics async and align fetchEvent.respondWith usage (remove unnecessary Promise.resolve)
- Change persistent WebStore database name to 'losslessServiceworkerPersistent' to separate durable store from runtime store
- Make PersistentStore.init() more resilient: add detailed logging, avoid throwing on init failure, mark initialized to prevent retry loops, and start periodic save only after load
- Ensure logEvent awaits initialization and adds defensive logging around reading/writing the event log
- Add request deduplication logic and improved cache handling in CacheManager (fetchWithDeduplication usage and safer respondWith)
2025-12-04 - 7.4.0 - feat(serviceworker)
Add persistent event store, cumulative metrics and dashboard events UI for service worker observability
- Add PersistentStore (ts_web_serviceworker/classes.persistentstore.ts) to persist event log and cumulative metrics with retention policy and periodic saving.
- Introduce persistent event types and interfaces for event log and cumulative metrics (ts_interfaces/serviceworker.ts).
- Log lifecycle, update, network and speedtest events to the persistent store (install, activate, update available/applied/error, network online/offline, speedtest started/completed/failed, cache invalidation).
- Expose persistent-store APIs via typed handlers in the service worker backend: serviceworker_getEventLog, serviceworker_getCumulativeMetrics, serviceworker_clearEventLog, serviceworker_getEventCount.
- Serve new dashboard endpoints from the service worker: /sw-dash/events (GET), /sw-dash/events/count (GET), /sw-dash/cumulative-metrics (GET) and DELETE /sw-dash/events to clear the log (handled in classes.cachemanager and classes.dashboard).
- Add sw-dash events panel component (ts_swdash/sw-dash-events.ts) and integrate an Events tab into the dashboard UI (ts_swdash/sw-dash-app.ts, sw-dash-overview.ts shows 1h event count).
- Reset cumulative metrics on cache invalidation and increment swRestartCount on PersistentStore.init().
- Record speedtest lifecycle events (started/completed/failed) and include details in the event log.
2025-12-04 - 7.3.0 - feat(serviceworker)
Modernize SW dashboard UI and improve service worker backend and server tooling
- Revamped sw-dash UI: new header/logo, uptime badge, live auto-refresh indicator, reorganized panels and improved speedtest UI and controls
- Shared styles overhaul: new theming variables, spacing scale, badges, refined progress/pulse animations and cleaner typography
- Dashboard internals: metrics endpoint and SPA shell updated; Lit bundle loading and table sort icon changed to ↑/↓
- Service worker: added request deduplication (in-flight request coalescing), safer caching logic, consistent CORS/caching headers, and cache revalidation
- Metrics: richer MetricsCollector with per-resource tracking, domain/content-type stats, speedtest metrics and better summary/stat helpers
- Update & network managers: rate-limited update checks, debounced update/revalidation tasks, online/offline checks and improved retry/backoff logic
- TypedServer & tooling: addRoute API for custom routes, improved HTML reload script injection, TypedSocket integration and a backend speedtest handler
- servertools: improved static/proxy handlers (more robust path extraction, compression handling) and deprecation notice for addTypedSocket()
2025-12-04 - 7.2.0 - feat(serviceworker)
Add service worker status updates, EventBus and UI status pill for realtime observability
- Introduce a status update protocol for service worker <-> clients (IStatusUpdate, IMessage_Serviceworker_StatusUpdate, IRequest_Serviceworker_GetStatus).
- Add typedserver-statuspill Lit component to display backend/serviceworker/network status in the UI, with expand/collapse details and persistent/error states.
- Wire ReloadChecker to use the new status pill: show network/backend/serviceworker status, handle online/offline events, and subscribe to service worker status broadcasts.
- Extend ActionManager (client) with subscribeToStatusUpdates and getServiceWorkerStatus helpers; forward serviceworker_statusUpdate broadcasts to registered callbacks.
- Serviceworker backend: add serviceworker_getStatus handler and broadcastStatusUpdate API; subscribe to EventBus lifecycle/network/update events to broadcast status changes to clients.
- Add EventBus for decoupled service worker internal events (ServiceWorkerEvent enum, pub/sub API, history and convenience emitters).
- Ensure proper subscribe/unsubscribe lifecycle (ReloadChecker stops SW subscription on stop).
- Improve cache/connection status reporting integration so status updates include details like cacheHitRate, resourceCount and connected clients.
2025-12-04 - 7.1.0 - feat(swdash)
Add live speedtest progress UI to service worker dashboard
- Introduce reactive speedtest state (phase, progress, elapsed) in sw-dash-overview component
- Start a progress interval to animate overall test progress and estimate phases (latency, download, upload)
- Dispatch 'speedtest-complete' event and show a brief complete state before resetting UI
- Add helper methods for phase labels and elapsed time formatting
- Add CSS for progress bar, shimmer animation and phase pulse to sw-dash-styles
2025-12-04 - 7.0.0 - BREAKING CHANGE(serviceworker)
Move serviceworker speedtest to time-based chunked transfers and update dashboard/server contract
- Change speedtest protocol to time-based chunk transfers: new request types 'download_chunk' and 'upload_chunk' plus 'latency'. Clients should call chunk requests in a loop for the desired test duration.
- IRequest_Serviceworker_Speedtest interface updated: request fields renamed/changed (chunkSizeKB, payload) and response no longer includes durationMs or speedMbps — server now returns bytesTransferred, timestamp, and optional payload.
- TypedServer speedtest handler updated to support 'download_chunk' and 'upload_chunk' semantics and to return bytesTransferred/timestamp/payload only (removed server-side duration/speed calculation).
- Dashboard runSpeedtest now performs time-based tests (TEST_DURATION_MS = 5000, CHUNK_SIZE_KB = 64) by repeatedly requesting chunks and computing throughput on the client side.
- Documentation/comments updated to clarify new speedtest behavior and default chunk sizes.
2025-12-04 - 6.8.1 - fix(web_serviceworker)
Move service worker initialization to init.ts and remove exports from service worker entrypoint to avoid ESM bundle output
- Remove exports from ts_web_serviceworker/index.ts so the service worker entrypoint does not export symbols (prevents tsbundle from producing ESM output).
- Add ts_web_serviceworker/init.ts which initializes the ServiceWorker instance and exports getServiceWorkerInstance() for internal imports.
- Update ts_web_serviceworker/classes.dashboard.ts to import getServiceWorkerInstance from init.ts instead of index.ts.
2025-12-04 - 6.8.0 - feat(swdash)
Add SW-Dash (Lit-based service worker dashboard), bundle & serve it; improve servertools and static handlers
- Add a new sw-dash frontend (ts_swdash) implemented with Lit: sw-dash-app, sw-dash-overview, sw-dash-urls, sw-dash-domains, sw-dash-types, sw-dash-table, shared styles and plugin shims.
- Wire sw-dash into build pipeline and packaging: add ts_swdash bundle to npm build script and include ts_swdash in package files.
- Serve the dashboard bundle: add paths (swdashBundleDir / swdashBundlePath) and a built-in route (/sw-dash/bundle.js) in BuiltInRoutesController.
- Simplify service-worker dashboard HTML output to a minimal shell that mounts and loads the module /sw-dash/bundle.js (reduces inline HTML/CSS/JS duplication).
- Lazy-load service worker bundle and source map in servertools.tools.serviceworker and expose /sw-typedrequest endpoints for SW typed requests (including speedtest handler).
- Enhance compression utilities and static serving: Compressor now caches compressed results, prioritizes preferred compression methods, provides safer zlib calls, and exposes createCompressionStream; HandlerStatic gained improved path resolution, Express 5 wildcard handling and optional compression flow.
- Improve proxy/static handler path handling to be compatible with Express 5 wildcard parameters and more robust fallback logic.
- Deprecate Server.addTypedSocket (no-op) and document recommended SmartServe/TypedServer integration for WebSocket support.
- Various minor packaging/path updates (paths.ts, plugins exports) to support the new dashboard and bundles.
2025-12-04 - 6.7.0 - feat(web_serviceworker)
Add per-resource metrics and request deduplication to service worker cache manager
- Introduce per-resource tracking in metrics: ICachedResource, IDomainStats, IContentTypeStats and a resourceStats map.
- Add MetricsCollector.recordResourceAccess(...) to record hits/misses, content-type and size; provide getters: getCachedResources, getDomainStats, getContentTypeStats and getResourceCount.
- Reset resourceStats when metrics are reset and limit resource entries via cleanupResourceStats to avoid memory bloat.
- Add request deduplication in CacheManager (fetchWithDeduplication) to coalesce identical concurrent fetches and a periodic safety cleanup for in-flight requests.
- Record resource accesses on cache hit and when storing new cache entries (captures content-type and body size).
- Expose a dashboard resources endpoint (/sw-dash/resources) served by the SW dashboard to return detailed resource data for SPA views.
2025-12-04 - 6.6.0 - feat(web_serviceworker)
Enable service worker dashboard speedtests via TypedSocket, expose ServiceWorker instance to dashboard, and add server-side speedtest handler
- Add
serviceworker_speedtesttyped handler in TypedServer to support download/upload/latency tests from service workers - Export
getServiceWorkerInstancefrom the web_serviceworker entrypoint so other modules (dashboard) can access the running ServiceWorker instance - Make ServiceWorker.typedsocket and ServiceWorker.typedrouter public to allow the dashboard to create and fire TypedSocket requests
- Update dashboard to run latency, download and upload tests over TypedSocket instead of POSTing to /sw-typedrequest
- Deprecate legacy servertools.Server.addTypedSocket (now a no-op) and recommend using TypedServer with SmartServe integration for WebSocket support
2025-12-04 - 6.5.0 - feat(serviceworker)
Add server-driven service worker cache invalidation and TypedSocket integration
- TypedServer: push cache invalidation messages to service worker clients (tagged 'serviceworker') before notifying frontend clients on reload
- Service Worker: connect to TypedServer via TypedSocket; handle 'serviceworker_cacheInvalidate' typed request to clean caches and trigger client reloads
- Web inject: add fallback to clear caches via the Cache API when global service worker helper is not available
- Interfaces: add IRequest_Serviceworker_CacheInvalidate typedrequest interface
- Plugins: export typedsocket in web_serviceworker plugin surface
- Service worker connection: retry logic and improved logging for TypedSocket connection attempts
2025-12-04 - 6.4.0 - feat(serviceworker)
Add speedtest support to service worker and dashboard
- Add serviceworker_speedtest typed request handler to measure download, upload and latency
- Expose dashboard speedtest endpoint (/sw-dash/speedtest) and integrate runSpeedtest flow
- Dashboard UI: add speedtest panel, run button, visual speed bars and online indicator
- Metrics: introduce ISpeedtestMetrics and methods (recordSpeedtest, setOnlineStatus, getSpeedtestMetrics) and include speedtest data in metrics output
- Server/tools: add typedrequest handling for speedtest in sw-typedrequest and route service worker dashboard path in CacheManager
2025-12-04 - 6.3.0 - feat(web_serviceworker)
Add advanced service worker subsystems: cache deduplication, metrics, update & network managers, event bus and dashboard
- CacheManager: request deduplication for concurrent fetches, safer caching (preserve CORS headers), periodic in-flight cleanup and full cache cleaning API
- Fetch handling: improved handling for same-origin vs cross-origin requests, more robust 500 debug responses when upstream fetch fails
- UpdateManager: rate-limited update checks, offline grace period, debounced update and cache revalidation tasks, forceUpdate logic and persisted version/cache timestamps
- NetworkManager: online/offline detection, retry/backoff, request timeouts and more resilient makeRequest implementation
- EventBus: singleton pub/sub with history, once/onMany/onAll helpers and convenience emitters for cache/network/update events
- MetricsCollector: comprehensive metrics for cache, network, updates and connections with helper methods and JSON/HTML dashboard endpoints (/sw-dash, /sw-dash/metrics)
- ErrorHandler & ServiceWorkerError: structured error types, severity, context, history and helper APIs for consistent error reporting
- ServiceWorker & backend: improved install/activate flows, clients.claim(), cache cleaning on activation, backend APIs to purge cache and trigger reloads/notifications
- TypedServer / servertools: addRoute path pattern parsing (named params & wildcards), safer HTML injection for reload script, TypedRequest controller and service worker route helpers
- Various safety and compatibility improvements (response cloning, header normalization, cache-control decisions, and fallback behaviors)
2025-12-04 - 6.2.0 - feat(web_serviceworker)
Add service-worker dashboard and request deduplication; improve caching, metrics and error handling
- Add DashboardGenerator to serve an interactive terminal-style dashboard at /sw-dash and a metrics JSON endpoint at /sw-dash/metrics
- Introduce request deduplication in CacheManager to coalesce concurrent network fetches and avoid duplicate requests
- Add periodic cleanup for in-flight request tracking to prevent unbounded memory growth
- Improve caching flow: preserve response headers (excluding cache-control headers), ensure CORS headers and Cross-Origin-Resource-Policy, and store response bodies as blobs to avoid locked stream issues
- Provide clearer 500 error HTML responses for failed fetches to aid debugging
- Integrate metrics and event emissions for network and cache operations (record request success/failure, cache hits/misses, and emit corresponding events)
2025-12-04 - 6.1.0 - feat(web_serviceworker)
Enhance service worker subsystem: add metrics, event bus, error handling, config and caching/update improvements; make client connection & polling robust
- Introduce MetricsCollector (cache, network, update, connection) for runtime observability and APIs to retrieve metrics
- Add EventBus singleton to emit/subscribe to internal SW events (cache hits/misses, network events, update lifecycle, connection events)
- Add ErrorHandler and ServiceWorkerError types for consistent error classification and tracking
- Add ServiceWorkerConfig with defaults and WebStore persistence to centralize SW settings (cache, update, network, blocked/cacheable domains)
- CacheManager: implement request deduplication (in-flight request coalescing), periodic in-flight cleanup, record cache hit/miss metrics and safer cache storing (headers/body handling)
- UpdateManager: rate-limited and concurrency-safe update checks, improved stale-cache handling, event emissions, debounced update and revalidation tasks, and metrics recording
- NetworkManager: enhanced online/offline detection and robust request retries/timeouts/backoff handling
- ServiceworkerBackend: improved client reload logic and notification handling via DeesComms and clients API
- Serviceworker client-side: ActionManager.waitForServiceWorkerConnection now returns a structured result with timeout/retries/backoff; ServiceworkerClient gains controllable polling (AbortController), visibility-based pause/resume, manual trigger and lifecycle cleanup
- Expose serviceworker bundle routes at both nested and root paths (/serviceworker/*splat and /serviceworker.bundle.js(.map)) in servertools
- Add/extend typed interfaces for serviceworker metrics and connection results
2025-12-04 - 6.0.1 - fix(web_inject)
Use TypedSocket status API in web_inject and bump dependencies
- ts_web_inject: switch from typedsocket.addTag + eventSubject to await typedsocket.setTag + statusSubject; update logging and handle 'reconnecting' status as backend connection loss
- Await setTag call to ensure tag is applied before relying on socket state
- Bump dependencies: @api.global/typedrequest -> ^3.1.11, @api.global/typedsocket -> ^4.1.0, @push.rocks/smartserve -> ^1.1.2
2025-12-03 - 6.0.0 - BREAKING CHANGE(servertools.Server.addTypedSocket)
Deprecate Server.addTypedSocket and upgrade typedsocket to v4; make addTypedSocket a no-op and log a deprecation warning. Bump tsbundle devDependency.
- Upgrade dependency @api.global/typedsocket to ^4.0.0. TypedSocket v4 no longer supports attaching to an existing Express server.
- Deprecate servertools.Server.addTypedSocket(): the method is now a no-op and emits a console.warn directing users to use TypedServer with SmartServe integration for WebSocket support.
- Bump devDependency @git.zone/tsbundle to ^2.6.3.
- Breaking change: any consumer code that relied on addTypedSocket to attach a WebSocket server to an existing Express instance will need to migrate to the new SmartServe/TypedServer integration.
2025-12-02 - 5.0.0 - BREAKING CHANGE(devtools)
Switch /reloadcheck endpoint from GET to POST in DevToolsController
- Updated ts/controllers/controller.devtools.ts: decorator changed from @plugins.smartserve.Get('/reloadcheck') to @plugins.smartserve.Post('/reloadcheck').
- Clients that previously performed GET requests against /reloadcheck must be updated to use POST. This is a breaking API change.
- Bump major version to reflect the change in the public HTTP API.
2025-12-02 - 4.1.1 - fix(classes.typedserver)
Instantiate and register DevToolsController only when injectReload is enabled; compile ControllerRegistry routes after registration
- DevToolsController is now created and registered only if options.injectReload is true to avoid unnecessary/invalid registrations when live reload is disabled.
- ControllerRegistry.compileRoutes() is invoked after registering controllers to precompile decorated routes for faster route matching.
2025-12-02 - 4.1.0 - feat(TypedServer)
Integrate SmartServe controller routing; add built-in routes controller and refactor TypedServer to use controllers and FileServer
- Add BuiltInRoutesController exposing /robots.txt, /manifest.json, /sitemap, /sitemap-news, /feed and /appversion
- Refactor TypedRequestHandler into a SmartServe-decorated TypedRequestController and register it with ControllerRegistry
- Refactor TypedServer to use SmartServe: register controller instances, use ControllerRegistry matching, and delegate WebSocket integration to SmartServe
- Introduce FileServer-based static serving with HTML reload script injection and improved default root handling
- Expand supported HTTP methods to include HEAD and OPTIONS
- Remove legacy FeedHelper and consolidate sitemap/feed handling into controllers and helpers
- Enhance servertools legacy Express utilities: improved HandlerProxy, HandlerStatic, Compressor with caching and preferred compression support
- Service worker subsystem improvements: CacheManager, NetworkManager, UpdateManager and backend enhancements for robust caching, revalidation and client reloads
- Web-inject LitElement properties switched from private fields to accessor syntax (typedserver_web.infoscreen)
2025-12-02 - 4.0.0 - BREAKING CHANGE(typedserver)
Migrate to new push.rocks packages and async smartfs API; replace smartchok with smartwatch; update deps and service worker handling
- Major dependency updates: @push.rocks packages upgraded (smartfile -> v13, smartfs added v1.2.0, smartenv v6, smartrequest v5, smartwatch v5, webrequest v4), Express and dev-tooling bumped.
- Replace sync smartfile APIs with async SmartFs instance (plugins.fsInstance). All file reads now use async smartfs calls.
- smartfile v13 migration: removed sync fs helpers; added plugins.fsInstance (SmartFs + Node provider).
- Renamed file watcher usage: Smartchok -> Smartwatch and property names updated (smartwatchInstance).
- WebRequest class rename handled: WebRequest -> WebrequestClient (webrequest v4).
- Service worker bundle is lazy-loaded (avoid startup sync file reads) and added routes for bundle and source map.
- Service worker & SW-related improvements: more robust caching, enhanced cache headers, offline handling, revalidation, and update forcing logic.
- createServeDirHash now uses smartfs.directory().recursive().treeHash() and truncates hash to 12 chars; fallback hash logic retained.
- HandlerStatic, HandlerProxy and route handling hardened for Express 5 wildcard params (array/various shapes supported).
- Various runtime improvements: safer start/stop handling, improved error logging, and non-blocking initialization of optional features (file watcher, TypedSocket).
- Updated tooling/dev deps: @git.zone/tsbuild/tsbundle/tstest and @types/node updated.
2025-11-19 - 3.0.80 - fix(dependencies)
Bump dependencies and devDependencies to updated versions
- Upgrade @push.rocks/smartfeed: ^1.0.11 → ^1.4.0
- Upgrade @push.rocks/smartfile: ^11.2.5 → ^11.2.7
- Upgrade @push.rocks/smartjson: ^5.0.20 → ^5.2.0
- Upgrade @push.rocks/smartlog: ^3.1.8 → ^3.1.10
- Upgrade @push.rocks/smartsitemap: ^2.0.3 → ^2.0.4
- Upgrade @push.rocks/taskbuffer: ^3.1.7 → ^3.4.0
- Upgrade @tsclass/tsclass: ^9.2.0 → ^9.3.0
- Upgrade @types/express: ^5.0.3 → ^5.0.5
- Dev: Upgrade @git.zone/tsbuild: ^2.6.4 → ^3.1.0
- Dev: Upgrade @git.zone/tsbundle: ^2.5.1 → ^2.5.2
- Dev: Upgrade @git.zone/tsrun: ^1.3.3 → ^2.0.0
- Dev: Upgrade @git.zone/tstest: ^2.3.4 → ^2.8.2
2025-09-03 - 3.0.79 - fix(servertools)
Normalize Express wildcard parameter notation to /{*splat} across server routes and handlers; add local Claude settings
- Replaced route pattern '/*splat' with '/{*splat}' in ts/classes.typedserver.ts and ts/servertools/tools.sslredirect.ts
- Updated Express options route to use '/{*splat}' in ts/servertools/classes.server.ts
- Clarified wildcard handling comments and array-join logic for splat params in ts/servertools/classes.handlerproxy.ts and ts/servertools/classes.handlerstatic.ts
- Added .claude/settings.local.json containing local tool permissions for Claude/dev onboarding
- No functional API changes — routing pattern normalization and comment/handler improvements only
2025-09-03 - 3.0.78 - fix(servertools)
Fix wildcard path extraction for static/proxy handlers, correct serviceworker route, add local settings and test typo fix
- Make HandlerProxy and HandlerStatic robust to Express 5 wildcard param shapes (handle req.params.splat, numeric params, req.baseUrl and root routes) to correctly compute relative paths
- Change serviceworker route registration to use '/serviceworker/*splat' (instead of previous pattern) for consistent wildcard handling
- Fix test wording typo in test/test.server.ts ('exposer' -> 'expose')
- Add .claude/settings.local.json with local tool permissions and add .serena/.gitignore to ignore /cache
2025-08-17 - 3.0.77 - fix(servertools)
Adjust route wildcard patterns and CORS handling; update serviceworker and SSL redirect patterns; bump express dependency; add local Claude settings
- Normalize route wildcard patterns to use splat tokens (e.g. '/someroute/*' -> '/someroute/splat', '/' -> '/*splat') for consistent route matching
- Update serviceworker route registration to '/serviceworker{.*}' and adjust related handler
- Change SSL redirect route from '*' to '/*splat'
- Adjust CORS preflight options path to '/*splat' and update tests to reflect new route patterns
- Bump express dependency from ^4.21.2 to ^5.1.0
- Add .claude/settings.local.json for local Claude tool permissions
2025-08-16 - 3.0.76 - fix(handlerproxy)
Use SmartRequest API and improve proxy/asset response handling; update tests and bump dependencies; add local project configuration files
- Replace deprecated smartrequest.request usage with SmartRequest fluent API in ts/servertools/classes.handlerproxy.ts and add explicit handling for GET/POST/PUT/DELETE/PATCH methods.
- Normalize proxied response body handling by using arrayBuffer()/text() and converting to Buffer to avoid body type inconsistencies.
- Switch asset fetching in ts/utilityservers/classes.websiteserver.ts to SmartRequest + arrayBuffer for reliable binary handling.
- Update tests (test/test.server.ts) to use SmartRequest.create() and to read response bodies via response.text(), matching the updated request API.
- Bump dependencies: @push.rocks/smartrequest -> ^4.2.1 and body-parser -> ^2.2.0.
- Add local project configuration files: .claude/settings.local.json and .serena/project.yml.
2025-08-16 - 3.0.75 - fix(deps)
Update dependencies, test tooling and test imports; enhance npm test script
- Bump multiple runtime dependencies to newer patch/minor versions (notable updates: @cloudflare/workers-types, @push.rocks/* packages such as smartchok, smartfile, smartlog, smartpath, smartrx, and others, @tsclass/tsclass, @types/express, lit).
- Upgrade dev tooling versions: @git.zone/tsbuild and @git.zone/tsbundle; update @git.zone/tstest to v2.3.4.
- Improve npm test script by adding --verbose, --logfile and increased --timeout.
- Fix test imports to use @git.zone/tstest/tapbundle in test/test.reload.ts and test/test.server.ts.
2025-04-12 - 3.0.74 - fix(commit-info)
chore: update commit metadata (no source code changes)
- Uncommitted diff shows no changes in source files; the commit updates internal commit info only.
2025-04-11 - 3.0.73 - fix(metadata)
Update repository URLs and metadata to reflect the new organization scope
- Changed gitscope from 'pushrocks' to 'api.global' in npmextra.json
- Updated repository URL, bugs URL, and homepage in package.json to use code.foss.global/api.global/typedserver
2025-04-11 - 3.0.72 - fix(project)
chore: no changes - commit metadata update
2025-04-11 - 3.0.71 - fix(serviceworker)
Improve error handling and logging in service worker backend and network manager; update multiple dependency versions and packageManager settings.
- Upgrade dependency versions in package.json (e.g. @cloudflare/workers-types, @push.rocks/smartfile, @push.rocks/smartpromise, @push.rocks/smartrequest, @tsclass/tsclass, and @types/express)
- Add packageManager field to package.json
- Enhance error handling in ServiceworkerBackend (using try/catch and detailed logging) during client reload, notification display, and alert message sending
- Improve network request handling by clearing timeouts and converting errors reliably in NetworkManager
- Wrap service worker install and activate event handlers with try/catch to log errors appropriately
2025-03-16 - 3.0.70 - fix(TypedServer)
Improve error handling in server startup and response buffering. Validate configuration for reload injections, wrap file watching and TypedSocket initialization in try/catch blocks, enhance client notification and stop procedures, and ensure proper Buffer conversion in the proxy handler.
- Add validation to throw error if reload script is enabled without a serve directory
- Wrap file watching and TypedSocket initialization in try/catch to prevent crashes during startup
- Update the reload function to safely notify clients and handle notification errors
- Enhance the stop procedure to aggregate cleanup tasks with error handling
- Ensure consistent conversion of response bodies to Buffer in HandlerProxy with fallback when undefined
- Include fallback hash generation in createServeDirHash for error resilience
2025-03-16 - 3.0.69 - fix(servertools)
Fix compression stream creation returns, handler proxy buffer conversion, and sitemap URL concatenation
- Return compression stream immediately in createCompressionStream for each case instead of using break statements
- Convert proxied response to a Buffer in handler proxy rather than throwing an error when it isn't a string
- Fix addUrls method in sitemap to correctly concatenate new URLs without duplicating existing entries
2025-02-07 - 3.0.68 - fix(cache-manager)
Simplify cache control headers in cache manager
- Removed unnecessary cache control headers while setting modern Cache-Control.
2025-02-06 - 3.0.67 - fix(serviceworker)
Enhance header security for cached resources in service worker
- Added Cross-Origin-Resource-Policy header management for service worker cached resources.
2025-02-06 - 3.0.66 - fix(serviceworker)
Improve error handling and logging in cache manager and update manager.
- Enhanced error handling and logging in cache management functions.
- Corrected network request handling in update manager.
- Added missing error handling for fetch events.
2025-02-04 - 3.0.65 - fix(readme)
Update documentation with advanced usage and examples
- Added section on advanced usage including service worker and edge worker setup
- Detailed integration examples for type-safe API requests and WebSocket communication
- Expanded configuration options and cache strategies
2025-02-04 - 3.0.64 - fix(serviceworker)
Improve cache handling and response header management in service worker.
- Addressed issue preventing caching of certain responses due to missing CORS headers.
- Added 'Vary: Origin' header to ensure proper response handling.
- Included 'Access-Control-Expose-Headers' for better CORS support.
2025-02-04 - 3.0.63 - fix(core)
Refactored caching strategy for service worker to improve compatibility and performance.
- Removed hard and soft caching distinctions.
- Simplified cache setup process.
- Improved browser caching control headers.
2025-02-04 - 3.0.62 - fix(Service Worker)
Refactor and clean up the cache logic in the Service Worker to improve maintainability and handle Safari-specific cache behavior.
- Refactored logic for determining cached domains, enhancing the readability and maintainability of the code.
- Improved handling of CORS settings in caching requests, notably bypassing caching for soft cached domains in Safari to avoid CORS issues.
- Enhanced error response creation for failed resource fetching, maintaining clarity on why and how certain resources were not fetched or cached.
- Revised the structure of the caching logic to ensure consistent behavior across all supported browsers.
2025-02-04 - 3.0.61 - fix(ServiceWorkerCacheManager)
Fixed caching mechanism to better support Safari's handling of soft-cached domains.
- Added logic to differentiate between hard and soft cached domains.
- Implemented special handling for soft cached domains on Safari by bypassing caching.
- Ensured appropriate CORS headers are present in cached responses.
- Improved error handling with informative 500 error responses.
- Optimized caching logic to prevent redundant caching and potential issues with locked streams on Safari.
2025-02-04 - 3.0.61 - fix(ServiceWorkerCacheManager)
Fixed caching mechanism to better support Safari's handling of soft-cached domains.
- Added logic to differentiate between hard and soft cached domains.
- Implemented special handling for soft cached domains on Safari by bypassing caching.
- Ensured appropriate CORS headers are present in cached responses.
- Improved error handling with informative 500 error responses.
- Optimized caching logic to prevent redundant caching and potential issues with locked streams on Safari.
2025-02-04 - 3.0.61 - fix(ServiceWorkerCacheManager)
Fixed caching mechanism to better support Safari's handling of soft-cached domains.
- Added logic to differentiate between hard and soft cached domains.
- Implemented special handling for soft cached domains on Safari by bypassing caching.
- Ensured appropriate CORS headers are present in cached responses.
- Improved error handling with informative 500 error responses.
- Optimized caching logic to prevent redundant caching and potential issues with locked streams on Safari.
2025-02-04 - 3.0.60 - fix(cachemanager)
Improve cache management and error handling
- Updated comments for clarity and consistency.
- Enhanced error handling in
fetchevent listener. - Optimized cache key management and cleanup process.
- Ensured CORS headers are set for cached responses.
- Improved logging for caching operations.
2025-02-03 - 3.0.59 - fix(serviceworker)
Fixed CORS and Cache Control handling for Service Worker
- Improved handling of CORS settings for external requests.
- Preserved important headers while excluding caching headers.
- Ensured the presence of CORS headers in cached responses.
- Adjusted Cache-Control headers to prevent browser caching but allow service worker caching.
2025-02-03 - 3.0.58 - fix(network-manager)
Refined network management logic for better offline handling.
- Improved logic to handle missing connections more gracefully.
- Added detailed online/offline connection status logging.
- Implemented a check for stale cache with a grace period for offline scenarios.
- Network requests now use optimized retries and timeouts.
2025-02-03 - 3.0.57 - fix(updateManager)
Refine cache management for service worker updates.
- Ensured cache is forcibly updated if older than defined maximum age.
- Implemented interval checks and forced updates for cache staleness.
- Updated version information and cache timestamps upon forced updates or validations.
2025-02-03 - 3.0.56 - fix(cachemanager)
Adjust cache control headers and fix redundant code
- Remove duplicate assetbroker URLs in the cache evaluation logic.
- Update cache control headers to improve caching behavior.
- Increase the timeout for fetch operations to improve compatibility.
2025-01-28 - 3.0.55 - fix(server)
Fix response content manipulation for HTML files with injectReload
- Moved fileString declaration inside HTML file handling block to prevent unnecessary string conversion for non-HTML files.
- Corrected responseContent assignment to ensure modified HTML strings are converted back to Buffer format.
2025-01-28 - 3.0.54 - fix(servertools)
Fixed an issue with compression results handling in HandlerStatic where content was always being written even if not compressed.
- Corrected the double writing of response in HandlerStatic.
- Ensured that file buffers are only conditionally written based on compression availability.
2024-12-26 - 3.0.53 - fix(infohtml)
Remove Sentry script and logo from HTML template
- Removed Sentry script from the HTML template.
- Removed Lossless GmbH logo and contact info.
- Updated footer link to point to foss.global.
2024-12-25 - 3.0.52 - fix(dependencies)
Bump package versions in dependencies and exports.
- Updated package dependencies to their latest versions.
- Added './infohtml' in package exports.
2024-08-27 - 3.0.51 - fix(core)
Update dependencies and fix service worker cache manager and task manager functionalities
- Updated dependencies in package.json to their latest versions
- Enhanced service worker cache manager to include additional scoped URLs
- Fixed task manager to start the task manager and added update task functionality
- Removed .gitlab-ci.yml from the repository as part of the cleanup
2024-05-25 - 3.0.43 to 3.0.50 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.43 to 3.0.50
2024-05-23 - 3.0.37 to 3.0.42 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.37 to 3.0.42
2024-05-17 - 3.0.37 - Core
Routine update and bug fix
- Updated core functionalities
2024-05-14 - 3.0.33 to 3.0.36 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.33 to 3.0.36
2024-05-13 - 3.0.31 to 3.0.32 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.31 to 3.0.32
2024-05-11 - 3.0.29 to 3.0.31 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.29 to 3.0.31
2024-04-19 - 3.0.27 to 3.0.28 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.27 to 3.0.28
2024-04-14 - 3.0.27 - Documentation
Updated Documentation
- Improved and updated documentation
2024-03-01 - 3.0.25 to 3.0.26 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.25 to 3.0.26
2024-02-21 - 3.0.20 to 3.0.24 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.20 to 3.0.24
2024-01-19 - 3.0.19 to 3.0.20 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.19 to 3.0.20
2024-01-09 - 3.0.14 to 3.0.18 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.14 to 3.0.18
2024-01-08 - 3.0.11 to 3.0.13 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.11 to 3.0.13
2024-01-07 - 3.0.9 to 3.0.10 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.9 to 3.0.10
2023-11-06 - 3.0.8 to 3.0.9 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.8 to 3.0.9
2023-10-23 - 3.0.6 to 3.0.7 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.6 to 3.0.7
2023-10-20 - 3.0.5 to 3.0.6 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.5 to 3.0.6
2023-09-21 - 3.0.4 to 3.0.5 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.4 to 3.0.5
2023-08-06 - 3.0.2 to 3.0.3 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.2 to 3.0.3
2023-08-03 - 3.0.1 to 3.0.0 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.1 to 3.0.0
2023-08-03 - 2.0.65 - Core
Breaking change in core update
- Introduced breaking changes updating core functionalities
2023-07-02 - 2.0.59 to 2.0.64 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.59 to 2.0.64
2023-07-01 - 2.0.54 to 2.0.58 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.54 to 2.0.58
2023-06-12 - 2.0.53 - Core
Routine update and bug fix
- Updated core functionalities
2023-04-10 - 2.0.52 to 2.0.53 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.52 to 2.0.53
2023-04-04 - 2.0.49 to 2.0.51 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.49 to 2.0.51
2023-03-31 - 2.0.45 to 2.0.48 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.45 to 2.0.48
2023-03-30 - 2.0.37 to 2.0.44 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.37 to 2.0.44
2023-03-29 - 2.0.33 to 2.0.36 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.33 to 2.0.36