Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b9cc7aa
Enable parallel integration test slices
ejsmith Apr 17, 2026
8c4808e
Fix Slack service test infrastructure
ejsmith Apr 18, 2026
3b56afc
Optimize CI docker build path
ejsmith Apr 18, 2026
46ea4c1
Fix CI solution selection
ejsmith Apr 18, 2026
a73c3d6
Remove Docker-only solution
ejsmith Apr 18, 2026
c8325f2
Fix app image publish cache reuse
ejsmith Apr 18, 2026
bc96123
Fix Docker compose readiness checks
ejsmith Apr 18, 2026
45d2e8e
Use Aspire CLI for CI services
ejsmith Apr 18, 2026
b5bbc43
Use Aspire CLI for local and CI infrastructure
ejsmith Apr 18, 2026
eb55f4e
Add explicit publish timing job
ejsmith Apr 18, 2026
374df03
Run docker publish in pull requests
ejsmith Apr 18, 2026
5a7517f
Install Aspire extension in devcontainers
ejsmith Apr 18, 2026
6174d9a
Remove redundant Aspire startup from test-api
ejsmith Apr 18, 2026
9d48fbb
Wait for Elasticsearch in test app host
ejsmith Apr 18, 2026
1f80320
Stage docker publish images for pull requests
ejsmith Apr 18, 2026
a2dc84e
Gate docker publish to deploy branches
ejsmith Apr 18, 2026
4198d45
Trigger CI after DEV_DEPLOY_BRANCH update
ejsmith Apr 18, 2026
977149e
Build all-in-one image only for tags
ejsmith Apr 18, 2026
c78dd4a
Scope test-api to backend test project
ejsmith Apr 18, 2026
cf18f2f
Reduce dev environment workflow noise
ejsmith Apr 18, 2026
c922cf9
Schedule dev stop at 5am central
ejsmith Apr 18, 2026
701c88e
Trim onboarding docs
ejsmith Apr 18, 2026
6420a90
Prefer aspire run in docs
ejsmith Apr 18, 2026
9a1dd21
Remove API-only docs section
ejsmith Apr 18, 2026
bc9d4a7
Remove redundant startup warning
ejsmith Apr 18, 2026
292f192
Clarify Angular and Svelte UI docs
ejsmith Apr 18, 2026
9c7c6cb
Fix test baseline normalization and server tracking
ejsmith Apr 18, 2026
ba20162
Merge remote-tracking branch 'origin/main' into parallel-integration-…
ejsmith Apr 25, 2026
13ce8ea
Some updates
ejsmith Apr 25, 2026
2c7f582
Add sample events
ejsmith Apr 25, 2026
37722eb
Fix vite logging and update footer
ejsmith Apr 26, 2026
3588e66
Fix lint
ejsmith Apr 26, 2026
d9571db
Feedback
ejsmith Apr 26, 2026
620b423
Merge branch 'main' into parallel-integration-test-slices
ejsmith Apr 26, 2026
3fde83a
Change ports to a 71XX scheme, fix devcontainers
ejsmith Apr 26, 2026
72281f6
Merge branch 'parallel-integration-test-slices' of https://github.com…
ejsmith Apr 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .agents/skills/backend-architecture/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ description: >

# Backend Architecture

## Quick Start

Run `Exceptionless.AppHost` from your IDE, or start everything from the repo root:

```bash
aspire run --project src/Exceptionless.AppHost
```

## Project Layering

```text
Expand Down Expand Up @@ -119,7 +127,7 @@ After any API change (new endpoint, changed status codes, modified request/respo

```bash
# Requires the API to be running (aspire run --project src/Exceptionless.AppHost)
Invoke-WebRequest -Uri "http://localhost:5200/docs/v2/openapi.json" \
Invoke-WebRequest -Uri "http://localhost:7110/docs/v2/openapi.json" \
-OutFile "tests/Exceptionless.Tests/Controllers/Data/openapi.json"
```

Expand Down
12 changes: 9 additions & 3 deletions .agents/skills/frontend-architecture/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
---
name: frontend-architecture
description: >
Use this skill when working on the Svelte SPA's project structure — adding routes, creating
Use this skill when working on the Svelte 5 app in ClientApp — adding routes, creating
feature slices, organizing shared components, or understanding the ClientApp directory layout.
Covers route groups, $lib conventions, barrel exports, API client organization, and vertical
slice architecture. Apply when deciding where to place new files or components.
slice architecture. Apply when deciding where to place new files or components. The legacy
Angular app that still powers most of the site lives beside it in ClientApp.angular.
---

# Frontend Architecture

Located in `src/Exceptionless.Web/ClientApp`. The Svelte SPA is the primary client.
Exceptionless.Web currently has two frontend codebases:

- `src/Exceptionless.Web/ClientApp.angular` is the legacy Angular UI and still powers most of the site. The main folders there are `app/`, `components/`, `less/`, `img/`, `lang/`, and `grunt/`.
- `src/Exceptionless.Web/ClientApp` is the Svelte 5 app that is still under development.

Use this skill for `ClientApp` work.

## Directory Structure

Expand Down
3 changes: 0 additions & 3 deletions .aspire/settings.json

This file was deleted.

8 changes: 2 additions & 6 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
FROM mcr.microsoft.com/devcontainers/dotnet:0-9.0
FROM mcr.microsoft.com/devcontainers/base:ubuntu

RUN apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts

RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends libnss3-tools htop nano curl jq

RUN sudo dotnet dev-certs https \
&& sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM \
&& sudo update-ca-certificates
&& apt-get -y install --no-install-recommends libnss3-tools htop nano curl jq zsh

# Change shell to zsh
RUN chsh -s $(which zsh)
Expand Down
59 changes: 51 additions & 8 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,34 +1,77 @@
{
"name": "C#, Elasticsearch, Kibana, Redis",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"name": "Exceptionless Aspire Dev Container",
"build": {
"dockerfile": "Dockerfile",
"context": ".."
},
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"remoteEnv": {
"PATH": "${containerEnv:PATH}:/home/vscode/.aspire/bin",
"SSL_CERT_DIR": "/home/vscode/.aspnet/dev-certs/trust:/etc/ssl/certs",
"ASPIRE_CLI_NOLOGO": "true"
},
"customizations": {
"vscode": {
"extensions": [
"microsoft-aspire.aspire-vscode",
"ms-dotnettools.csharp",
"ms-dotnettools.csdevkit",
"ms-azuretools.vscode-containers",
"tintoy.msbuild-project-tools",
"streetsidesoftware.code-spell-checker",
"humao.rest-client"
]
}
},
"forwardPorts": [5003, 5100, 5200, 5201, 9200, 5601],
"forwardPorts": [5601, 7101, 7111, 7121, 7131, 8025],
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"portsAttributes": {
"7049": {
"5601": {
"label": "Kibana"
},
"7101": {
"label": "Aspire Dashboard",
"protocol": "https"
},
"5100": {
"7111": {
"label": "API",
"protocol": "https"
},
"7121": {
"label": "OldApp",
"protocol": "https"
},
"7131": {
"label": "App",
"protocol": "https"
},
"8025": {
"label": "Mail UI"
}
},
"hostRequirements": {
"cpus": 4,
"memory": "16gb",
"storage": "32gb"
},
"postCreateCommand": "bash .devcontainer/postCreateCommand.sh",
"features": {
"ghcr.io/devcontainers/features/powershell:1": {},
"ghcr.io/devcontainers/features/dotnet:1": {},
"ghcr.io/devcontainers/features/powershell:1": {
"version": "latest"
},
"ghcr.io/devcontainers/features/dotnet:2": {
"version": "10.0"
},
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": true,
"version": "lts"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"enableNonRootDocker": true,
"moby": true
}
}
}
60 changes: 0 additions & 60 deletions .devcontainer/docker-compose.yml

This file was deleted.

20 changes: 19 additions & 1 deletion .devcontainer/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
#!/bin/bash
set -euo pipefail

export PATH="$HOME/.dotnet/tools:$PATH"

if dotnet tool list --global | grep -Eiq '^aspire\.cli[[:space:]]'; then
dotnet tool update --global Aspire.Cli --version 13.2.4
else
dotnet tool install --global Aspire.Cli --version 13.2.4
fi

export SSL_CERT_DIR="$HOME/.aspnet/dev-certs/trust:/etc/ssl/certs${SSL_CERT_DIR:+:$SSL_CERT_DIR}"
aspire --version
dotnet dev-certs https

if ! dotnet dev-certs https --trust; then
echo "dotnet dev-certs https --trust could not fully configure trust in this devcontainer; continuing."
fi

dotnet dev-certs https --trust
dotnet restore Exceptionless.slnx
npm ci --prefix src/Exceptionless.Web/ClientApp
npm ci --prefix src/Exceptionless.Web/ClientApp.angular
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
* text=auto
*.sh text eol=lf

# Test baselines must use LF on disk so cross-platform string comparisons work
tests/Exceptionless.Tests/Controllers/Data/openapi.json text eol=lf

# Custom for Visual Studio
*.cs diff=csharp
*.slnx merge=union
Expand Down
Loading
Loading