Skip to content

Commit f1ab365

Browse files
committed
filled changelogs
1 parent 6dba25d commit f1ab365

4 files changed

Lines changed: 271 additions & 0 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<!-- version-type: patch -->
2+
# common
3+
4+
<!--
5+
FORMATTING GUIDE:
6+
7+
### Detailed Entry (appears first when merging)
8+
9+
Use h3 (###) and below for detailed entries with paragraphs, code examples, and lists.
10+
11+
### Simple List Items
12+
13+
- Simple changes can be added as list items
14+
- They are collected together at the bottom of each section
15+
16+
TIP: When multiple changelog drafts are merged, heading-based entries
17+
appear before simple list items within each section.
18+
-->
19+
20+
## ✨ Features
21+
22+
### Modular REST API Type Definitions
23+
24+
Replaced monolithic `boilerplate-api.ts` and `stack-craft-api.ts` with per-domain API modules for type-safe REST endpoints:
25+
26+
- `ServicesApi` — CRUD, lifecycle actions (start/stop/restart/install/build/pull/setup/update), log retrieval, log clearing, and state history
27+
- `StacksApi` — CRUD, export (strips timestamps for portability), import with config overrides, and stack setup
28+
- `PrerequisitesApi` — CRUD and dependency check actions
29+
- `GithubRepositoriesApi` — CRUD and URL validation
30+
- `TokensApi` — API token management endpoints
31+
- `IdentityApi` — Login, logout, current user, and password reset
32+
- `InstallApi` — First-run installation status and setup
33+
- `SystemApi` — Environment variable availability checks
34+
35+
### Domain Models
36+
37+
Added typed models for all core entities: `StackDefinition`, `StackConfig`, `ServiceDefinition`, `ServiceConfig`, `ServiceStatus`, `ServiceStateHistory`, `ServiceLogEntry`, `GitHubRepository`, `Prerequisite`, `PrerequisiteCheckResult`, `ApiToken`, `PublicApiToken`, `EnvironmentVariableValue`, and `Views`.
38+
39+
### WebSocket Message Types
40+
41+
Added `WebsocketMessage` discriminated union for real-time events: `service-status-changed`, `git-branches-changed`, and `dependency-check-result`.
42+
43+
- `getServiceCwd()` — computes process working directory from stack config, service definition, and optional Git repository URL
44+
- `getRepoNameFromUrl()` — extracts repository folder name from a Git URL
45+
46+
## ♻️ Refactoring
47+
48+
- Switched from a single schema file to per-API JSON schema generation via `create-schemas.ts`, producing separate schema files for each API surface
49+
50+
## 🧪 Tests
51+
52+
- Added unit tests for `getServiceCwd()` and `getRepoNameFromUrl()` in `service-path-utils.spec.ts`
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<!-- version-type: patch -->
2+
# frontend
3+
4+
<!--
5+
FORMATTING GUIDE:
6+
7+
### Detailed Entry (appears first when merging)
8+
9+
Use h3 (###) and below for detailed entries with paragraphs, code examples, and lists.
10+
11+
### Simple List Items
12+
13+
- Simple changes can be added as list items
14+
- They are collected together at the bottom of each section
15+
16+
TIP: When multiple changelog drafts are merged, heading-based entries
17+
appear before simple list items within each section.
18+
-->
19+
20+
## ✨ Features
21+
22+
### Dashboard and Stack Management
23+
24+
- Added dashboard page with stack overview, service status, and quick actions for service lifecycle management
25+
- Added stack creation, editing, and setup pages with service/repository/prerequisite configuration
26+
- Added sidebar navigation with live stack list from entity sync and active route highlighting
27+
28+
### Service Management
29+
30+
- Added service detail page with lifecycle controls (start, stop, restart, install, build, pull, setup, update), environment variable overrides, and state history timeline
31+
- Added service creation page and multi-step create-service wizard with stack selection, repository linking, and environment variable configuration
32+
- Added real-time log viewer with ANSI color rendering, stderr highlighting, and text search filtering
33+
34+
### Repository and Prerequisite Management
35+
36+
- Added GitHub repository create/edit pages with URL validation
37+
- Added prerequisite table with dependency check status and re-check actions
38+
- Added prerequisite list for the installer flow
39+
40+
### User Settings
41+
42+
- Added user settings page with API token management (create, list, revoke), password change form, and theme selector
43+
- Added theme registry with multiple lazy-loaded themes and persistence via local storage
44+
45+
### Import/Export
46+
47+
- Added stack export to portable JSON format
48+
- Added stack import with configurable `mainDirectory`, per-service environment variable overrides, and conflict detection
49+
50+
### Installer Wizard
51+
52+
- Added first-run installer with step-by-step flow: welcome, prerequisite checks, admin account creation, and success confirmation
53+
54+
### Real-Time Updates
55+
56+
- Added WebSocket service with automatic reconnection and exponential backoff for receiving `service-status-changed`, `git-branches-changed`, and `dependency-check-result` events
57+
- Integrated entity sync via WebSocket for live data updates across all views
58+
59+
### UI Components
60+
61+
- Added reusable entity forms for stacks, services, repositories, and prerequisites
62+
- Added environment variables manager with add/edit/delete and masked secret display
63+
- Added service status indicator, status chips, and service/repository/prerequisite tables
64+
- Added wizard step component and log line renderer with ANSI parsing
65+
66+
### API Clients
67+
68+
- Added per-domain API client services: `ServicesApiClient`, `StacksApiClient`, `GithubReposApiClient`, `PrerequisitesApiClient`, `TokensApiClient`, `IdentityApiClient`, `InstallApiClient`, `SystemApiClient`
69+
70+
## 🐛 Bug Fixes
71+
72+
- Fixed GitHub repository in-memory search not matching partial queries
73+
- Fixed navigation not updating correctly on programmatic route changes
74+
- Fixed service form validation and submission errors
75+
- Fixed token list rendering when no tokens exist
76+
77+
## ♻️ Refactoring
78+
79+
- Replaced single `BoilerplateApiClient` / `StackCraftApiClient` with modular per-domain API clients
80+
- Consolidated duplicated form components into shared entity form patterns
81+
- Redesigned login page layout and styling
82+
- Restructured page routing in `Body` component for the new page hierarchy
83+
84+
## 🧪 Tests
85+
86+
- Added unit tests for ANSI escape sequence parsing in `parse-ansi.spec.ts`
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<!-- version-type: patch -->
2+
# service
3+
4+
<!--
5+
FORMATTING GUIDE:
6+
7+
### Detailed Entry (appears first when merging)
8+
9+
Use h3 (###) and below for detailed entries with paragraphs, code examples, and lists.
10+
11+
### Simple List Items
12+
13+
- Simple changes can be added as list items
14+
- They are collected together at the bottom of each section
15+
16+
TIP: When multiple changelog drafts are merged, heading-based entries
17+
appear before simple list items within each section.
18+
-->
19+
20+
## ✨ Features
21+
22+
### REST API Endpoints
23+
24+
Added per-domain REST API modules with full CRUD and custom actions:
25+
26+
- `ServicesApi` — service lifecycle (start/stop/restart/install/build/pull/setup/update), log retrieval and clearing, state history, and file application
27+
- `StacksApi` — stack CRUD, export to portable JSON, import with config overrides, and stack setup orchestration
28+
- `PrerequisitesApi` — prerequisite CRUD and dependency check execution (supports command, package manager, and environment variable checks)
29+
- `GithubRepositoriesApi` — repository CRUD with Git URL validation
30+
- `TokensApi` — API token creation with SHA-256 hashing, listing (public view only), and revocation
31+
- `IdentityApi` — session-based authentication and password reset
32+
- `InstallApi` — first-run service status check and initial admin setup
33+
- `SystemApi` — environment variable availability checks
34+
35+
### Process Manager
36+
37+
Added `ProcessManager` service that orchestrates child process lifecycle for stack services: clone repositories, install dependencies, build projects, and run services. Captures stdout/stderr streams, persists log entries via `LogStorageService`, and broadcasts status changes over WebSocket.
38+
39+
### MCP Server
40+
41+
Added Model Context Protocol server on a dedicated HTTP port (default 9091) with tools for managing stacks, services, repositories, prerequisites, environment variables, service files, and system status — enabling AI assistant integration.
42+
43+
### Git Integration
44+
45+
- Added `GitService` for repository operations: clone, fetch, pull (with update detection), branch listing, current branch, and checkout
46+
- Added `GitWatcher` for periodic polling of branch changes with WebSocket notifications
47+
48+
### Log Storage
49+
50+
Added `LogStorageService` with durable log entry persistence, per-service pruning to cap storage, text search filtering, and batch clearing.
51+
52+
### Bearer Token Authentication
53+
54+
Added `bearer-token-auth` middleware that resolves `Authorization: Bearer <token>` headers by SHA-256 hashing the token, looking up the matching `ApiToken`, and returning the associated user.
55+
56+
### Real-Time Communication
57+
58+
- Added `WebsocketService` for broadcasting typed messages to connected clients
59+
- Added entity sync setup with debounced updates for `ServiceLogEntry` and `ServiceStateHistory`
60+
61+
### Configuration
62+
63+
- Added configurable CORS origins via `CORS_ORIGINS` environment variable (comma-separated list)
64+
- Added `MCP_PORT` environment variable for MCP server port configuration
65+
- Extended `Config` with stack-craft-specific settings (`mainDirectory`, data storage path)
66+
67+
### Data Store
68+
69+
- Added `setup-data-store` with in-memory stores, filesystem persistence, and authorization rules for all entities
70+
- Added `setup-log-store` for service log entries with auto-incrementing IDs
71+
72+
### Utilities
73+
74+
- Added `resolve-service-cwd` for computing service working directories from stack/service/repo config
75+
- Added `apply-service-files` for writing required files into service directories
76+
- Added `resolve-path` for safe path resolution within allowed directories
77+
78+
## 🐛 Bug Fixes
79+
80+
- Fixed detached child processes not being properly terminated on service stop
81+
- Fixed missing entity sync causing stale data in frontend views
82+
- Fixed service installer not correctly reporting installation completion status
83+
84+
## ♻️ Refactoring
85+
86+
- Restructured REST API handlers from a single file into per-domain modules under `app-models/`
87+
- Extracted service lifecycle logic into dedicated action handlers with proper authorization
88+
89+
## 🧪 Tests
90+
91+
- Added unit tests for `ProcessManager` covering spawn, kill, and concurrent process scenarios
92+
- Added unit tests for `check-prerequisite-action` covering command, package manager, and env variable checks
93+
- Added unit tests for `service-lifecycle-action` covering start, stop, and restart flows
94+
- Added unit tests for `setup-tokens-rest-api` covering token creation, listing, and revocation
95+
- Added unit tests for `import-export-actions` covering stack export and import with conflict handling
96+
- Added unit tests for `check-env-availability-action` covering env variable presence detection
97+
- Added unit tests for `bearer-token-auth` covering valid/invalid/missing token scenarios
98+
- Added unit tests for `LogStorageService` covering entry storage, retrieval, pruning, and clearing
99+
- Added unit tests for `GitService` covering clone, pull, branch listing, and checkout
100+
- Added unit tests for `ServiceInstaller` covering installation flow
101+
- Added unit tests for `get-cors-options` and `get-port` configuration helpers
102+
- Added unit tests for `Config` service
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<!-- version-type: patch -->
2+
# stack-craft
3+
4+
<!--
5+
FORMATTING GUIDE:
6+
7+
### Detailed Entry (appears first when merging)
8+
9+
Use h3 (###) and below for detailed entries with paragraphs, code examples, and lists.
10+
11+
### Simple List Items
12+
13+
- Simple changes can be added as list items
14+
- They are collected together at the bottom of each section
15+
16+
TIP: When multiple changelog drafts are merged, heading-based entries
17+
appear before simple list items within each section.
18+
-->
19+
20+
## 📦 Build
21+
22+
- Integrated ESLint into the workspace with `eslint.config.js` and added `lint` script for `*.{ts,tsx}` files
23+
- Added `lint-staged` pre-commit hook running ESLint fix, Prettier write, and git add on staged TypeScript files
24+
25+
## ⬆️ Dependencies
26+
27+
- Upgraded Yarn from 4.12.0 to 4.13.0
28+
29+
## 🔧 Chores
30+
31+
- Updated `.gitignore` to exclude data storage directories and MCP-related files

0 commit comments

Comments
 (0)