All notable changes to FuncDock will be documented in this file.
-
TypeScript Runtime Support
- Added
tsxfor on-the-fly TypeScript execution without pre-compilation - Added
tsconfig.jsonwith ESM and Node 22 targets - Added TypeScript example function under
functions/ts-example/ - Added
types/funcdock.d.tsfor platform type definitions
- Added
-
MCP (Model Context Protocol) Server
- New
mcp-server.jsexposing every function route as an MCP tool - New
mcp-transport.jssupporting stdio and HTTP transports - Dashboard MCP management page (
dashboard/src/pages/MCP.jsx) - Configurable via
MCP_ENABLED,MCP_HTTP_PORT, andMCP_API_KEY
- New
-
OpenTelemetry Observability
- New
utils/tracer.jswrapping the OpenTelemetry SDK - Function execution auto-wrapped in spans
- Configurable via
OTEL_ENDPOINT
- New
-
FuncDock CLI
- New
bin/funcdock.jsentry point - New
cli/directory with commands:create,deploy,update,test,logs,status - Replaces Makefile-driven workflows for day-to-day operations
- New
-
Security Hardening
- Required env var validation:
JWT_SECRET(min 16 chars),ADMIN_USERNAME,ADMIN_PASSWORD(min 8 chars) orADMIN_PASSWORD_HASH - httpOnly
funcdock-tokencookie authentication (replaces localStorage token storage) - Token blacklist for logout (in-memory Map, Redis-ready)
- Strict input validators for Git URLs, branch names, commit SHAs, function/layer names, and file paths
cookie-parsermiddleware for secure cookie handlingtrust proxyenabled for secure reverse-proxy deployments
- Required env var validation:
-
Dashboard Rewrite (React 19 + Vite)
- Full dashboard rebuild with React 19
- New pages: MCP, Settings, LayerDetail, FunctionDetail (enhanced)
- Theme context with dark/light mode support
- Real-time Socket.IO sync with credentials
- Updated built assets in
public/dashboard/
-
Testing & Quality Tooling
- Expanded test coverage across all example functions (
hello-world,webhook-handler,test-deploy,example-layer-function) - New
test/__mocks__/for Jest mocks - New
jest.config.mjswith ESM and coverage settings - ESLint flat config (
eslint.config.mjs) with React plugin - Prettier (
.prettierrc,.prettierignore) - Husky pre-commit hooks (
.husky/) scripts/prepare.jsfor repo setup automation
- Expanded test coverage across all example functions (
-
CI/CD & Deployment
- New
.github/workflows/ci.yml— lint, format, test, and Docker build on push/PR - New
.github/workflows/auto-deploy-function.yml— automated function deployment - Updated
.github/workflows/deploy-function.yml - Deployment backup and rollback via
utils/deployment-backup.js
- New
-
Agent Skills
- New
skills/funcdock-function-dev/SKILL.md - New
skills/funcdock-layer-dev/SKILL.md - New
skills/funcdock-deployment/SKILL.md
- New
-
Documentation
- New
AGENTS.md— development conventions for AI coding agents - New
ARCHITECTURE.md— system design, data flow, and key decisions - New
CONTRIBUTING.md— contribution guidelines - Overhauled all
docs/*.mdfiles for v2.0 features
- New
-
Docker & Compose
- Added
docker-compose.ymlfor quick local orchestration - Updated
DockerfileandDockerfile.test - Updated
.dockerignore
- Added
-
Core Server (
server.js)- Replaced Express router with a
Map-basedfunctionDispatcherto eliminate middleware stack bloat on hot reload - Refactored authentication to use httpOnly cookies + Bearer header dual support
- Added mutex-based locking for concurrent operations on shared Maps
- Unified CORS origin handling with
DASHBOARD_ORIGINenv var node-fetchremoved; nativefetchused throughout
- Replaced Express router with a
-
Layer Loader (
utils/layer-loader.js)- Lambda-style layer symlinks (
functions/<name>/node_modules/<layer>→layers/<layer>/nodejs/) - Automatic layer dependency installation
- Cross-platform symlink handling (junction fallback on Windows)
- Lambda-style layer symlinks (
-
Logger (
utils/logger.js)- Structured logging with rotation, buffering, and Slack webhook alerts
- Alert-level log routing
-
Example Functions
- All examples updated to v2.0 patterns (ESM,
req.env, single quotes, braced switch cases) - New
users.jsandcron-handler.jspatterns inhello-world webhook-handlerexpanded with generic, GitHub, Slack, and Stripe handler tests
- All examples updated to v2.0 patterns (ESM,
-
License
- Minor attribution update to REAA Technologies
.envfrom version control (replaced by.env.example)ROADMAP.md(superseded by GitHub issues and docs)- Old dashboard assets (rebuilt with new hashes)
node-fetchdependency
- Environment variables: Copy
.env.exampleto.envand setJWT_SECRET,ADMIN_USERNAME, andADMIN_PASSWORD. - Auth tokens: Dashboard now uses httpOnly cookies. Clear any old
localStoragetokens. - CLI: Replace
make deploy-local/make deploy-host-gitwithfuncdock deploy --local/funcdock deploy --git. - Tests: Test files now use
.mjsextension andtest/setup.mjsutilities. - Dashboard build: Run
cd dashboard && npm run buildto regeneratepublic/dashboard/after any dashboard changes.