Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
ee79cb9
feat: Next: Stripe billing and plan management
niemyjski Mar 17, 2026
cbbb917
Merge branch 'main' into feature/next-stripe
ejsmith Apr 16, 2026
f410162
Fix build
ejsmith Apr 16, 2026
da19330
Fix deploy not running
ejsmith Apr 16, 2026
189571b
test: trigger build to verify version increment
ejsmith Apr 16, 2026
548ae59
Conditionally add exporter
ejsmith Apr 16, 2026
2afec55
refactor: update OpenTelemetry configuration and remove Prometheus ex…
ejsmith Apr 16, 2026
acf5b09
fix: use PR branch HEAD for version calculation to prevent duplicate …
ejsmith Apr 16, 2026
c1150fc
fix: pass version from CI to Docker build via MinVerVersionOverride
ejsmith Apr 16, 2026
bebc9fb
Merge branch 'main' into feature/next-stripe
niemyjski Apr 18, 2026
da99c03
Upgrade Stripe to v51
niemyjski Apr 19, 2026
abacf70
Added local config override.
niemyjski Apr 19, 2026
de39b10
fix: pass mode to Stripe Elements when clientSecret is absent
niemyjski Apr 19, 2026
f4c5396
fix: Stripe PaymentElement rendering and dialog scrollability
niemyjski Apr 19, 2026
452a93a
build: upgrade Stripe.js to v9 and fix Stripe.net v51 breaking changes
niemyjski Apr 19, 2026
c2f1580
Merge branch 'main' into feature/next-stripe
niemyjski Apr 19, 2026
062eeee
fix: handle 426 Upgrade Required responses with modal dialog
niemyjski Apr 19, 2026
6723fd1
fix: resolve infinite loop in Change Plan dialog with untrack()\n\nUs…
niemyjski Apr 19, 2026
b6d648a
feat: redesign change plan dialog with improved tier grouping and sum…
niemyjski Apr 19, 2026
a826b29
fix: resolve billing plan change failures
niemyjski Apr 20, 2026
46b0a5f
feat: refine Change Plan dialog and add comprehensive Storybook stories
niemyjski Apr 20, 2026
6be51a1
feat: refactor Change Plan dialog to use standard UI components
niemyjski Apr 20, 2026
ff5db7c
feat: add follow-up hook to enforce task summary before completion
niemyjski Apr 20, 2026
6770e76
feat: enhance Change Plan dialog with state overrides and new stories
niemyjski Apr 20, 2026
c324e28
feat: refine Change Plan dialog UI and error display
niemyjski Apr 20, 2026
304912d
fix: handle \-price plans in tier filtering and yearly savings badge
niemyjski Apr 20, 2026
74ebc4e
refactor: remove redundant ex.Message from log templates
niemyjski Apr 20, 2026
bba4e40
docs: add billing & Stripe integration documentation
niemyjski Apr 20, 2026
29b81ef
fix(a11y): fix WCAG AA color contrast on primary buttons and badges
niemyjski Apr 20, 2026
2e1ce7b
fix: address PR review findings
niemyjski Apr 20, 2026
fcbf7d2
Clean up change-plan endpoint: remove dual binding, enforce ProblemDe…
niemyjski Apr 20, 2026
20a5281
fix: use instanceof ProblemDetails instead of isProblemDetails type g…
niemyjski Apr 20, 2026
a1a2a4f
Use proper HTTP status codes for ChangePlan pre-validation errors
niemyjski Apr 20, 2026
ba14c41
Refactor Change Plan dialog UX and optimize server-side Stripe operat…
niemyjski Apr 21, 2026
19fbdbb
Merge branch 'main' into feature/next-stripe
niemyjski Apr 21, 2026
aac0867
Improve UX in change-plan dialog by scrolling to relevant sections
niemyjski Apr 21, 2026
7187572
Fixed linting
niemyjski Apr 21, 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
16 changes: 11 additions & 5 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Build Reason
env:
Expand Down Expand Up @@ -189,22 +190,22 @@ jobs:
- name: Build api docker image
run: |
echo "::remove-matcher owner=csc::"
docker buildx build . --target api --platform linux/amd64 --tag exceptionless/api-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load
docker buildx build . --build-arg MinVerVersionOverride=$VERSION --target api --platform linux/amd64 --tag exceptionless/api-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load

- name: Build job docker image
run: |
echo "::remove-matcher owner=csc::"
docker buildx build . --target job --platform linux/amd64 --tag exceptionless/job-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load
docker buildx build . --build-arg MinVerVersionOverride=$VERSION --target job --platform linux/amd64 --tag exceptionless/job-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load

- name: Build app docker image
run: |
echo "::remove-matcher owner=csc::"
docker buildx build . --target app --platform linux/amd64 --tag exceptionless/app-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load
docker buildx build . --build-arg MinVerVersionOverride=$VERSION --target app --platform linux/amd64 --tag exceptionless/app-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load

- name: Build all-in-one docker image
run: |
echo "::remove-matcher owner=csc::"
docker buildx build . --target exceptionless --platform linux/amd64 --tag exceptionless/exceptionless-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load
docker buildx build . --build-arg MinVerVersionOverride=$VERSION --target exceptionless --platform linux/amd64 --tag exceptionless/exceptionless-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load

- name: Login to GitHub Container Registry
if: "${{ env.DOCKER_USERNAME != '' }}"
Expand Down Expand Up @@ -256,7 +257,12 @@ jobs:
done

deploy:
if: "${{ (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) && github.event_name != 'pull_request' }}"
if: >-
${{
(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))
&& github.event_name != 'pull_request'
|| (github.event_name == 'pull_request' && github.head_ref == vars.DEV_DEPLOY_BRANCH && vars.DEV_DEPLOY_BRANCH != 'main' && vars.DEV_DEPLOY_BRANCH != '')
}}
needs: [version, build-and-push-docker]
runs-on: ubuntu-latest
timeout-minutes: 30
Expand Down
4 changes: 2 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
},
"editor.formatOnSave": true,
"editor.formatOnSave": false,
"eslint.validate": [
"javascript",
"svelte"
Expand All @@ -111,7 +111,7 @@
"tailwindCSS.includeLanguages": {
"svelte": "html"
},
"typescript.tsdk": "\\src\\Exceptionless.Web\\ClientApp\\node_modules\\typescript\\lib",
"js/ts.tsdk.path": "src/Exceptionless.Web/ClientApp/node_modules/typescript/lib",
Comment thread
niemyjski marked this conversation as resolved.
Outdated
"workbench.editor.customLabels.patterns": {
"**/lib/**/*.ts": "${dirname}/${filename}.${extname}",
"**/routes/**/+page.svelte": "${dirname(1)}/${dirname}",
Expand Down
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
ARG MinVerVersionOverride
WORKDIR /app

COPY ./*.slnx ./NuGet.Config ./
Expand All @@ -18,7 +19,7 @@ RUN dotnet restore

# Copy everything else and build app
COPY . .
RUN dotnet build -c Release
RUN dotnet build -c Release /p:MinVerVersionOverride=${MinVerVersionOverride}

# testrunner

Expand Down
11 changes: 7 additions & 4 deletions src/Exceptionless.Core/Exceptionless.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,13 @@
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.6" />
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="10.0.6" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.6" />
<PackageReference Include="Stripe.net" Version="47.4.0" />
<PackageReference Include="Stripe.net" Version="50.4.1" />
<PackageReference Include="System.DirectoryServices" Version="10.0.6" />
<PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Foundatio.Repositories.Elasticsearch" Version="7.18.0-beta6" Condition="'$(ReferenceFoundatioRepositoriesSource)' == '' OR '$(ReferenceFoundatioRepositoriesSource)' == 'false'" />
<ProjectReference Include="..\..\..\..\Foundatio\Foundatio.Repositories\src\Foundatio.Repositories.Elasticsearch\Foundatio.Repositories.Elasticsearch.csproj" Condition="'$(ReferenceFoundatioRepositoriesSource)' == 'true'" />
<PackageReference Include="Foundatio.Repositories.Elasticsearch" Version="7.18.0-beta6"
Condition="'$(ReferenceFoundatioRepositoriesSource)' == '' OR '$(ReferenceFoundatioRepositoriesSource)' == 'false'" />
<ProjectReference
Include="..\..\..\..\Foundatio\Foundatio.Repositories\src\Foundatio.Repositories.Elasticsearch\Foundatio.Repositories.Elasticsearch.csproj"
Condition="'$(ReferenceFoundatioRepositoriesSource)' == 'true'" />
</ItemGroup>
</Project>
</Project>
12 changes: 7 additions & 5 deletions src/Exceptionless.Job/Exceptionless.Job.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,24 @@

<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.15.2-beta.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="1.15.0-beta.1" />
</ItemGroup>

<ItemGroup>
<Content Update="appsettings.yml" CopyToOutputDirectory="Always" />
<Content Update="appsettings.*.yml" DependentUpon="appsettings.yml" CopyToOutputDirectory="Always" />
<Content Update="appsettings.*.yml" DependentUpon="appsettings.yml"
CopyToOutputDirectory="Always" />
</ItemGroup>

<ItemGroup>
<Compile Include="..\Exceptionless.Web\ApmExtensions.cs" Link="ApmExtensions.cs" />
</ItemGroup>
</Project>
</Project>
2 changes: 0 additions & 2 deletions src/Exceptionless.Job/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,6 @@ public static IHostBuilder CreateHostBuilder(string[] args)
if (!String.IsNullOrEmpty(options.ExceptionlessApiKey) && !String.IsNullOrEmpty(options.ExceptionlessServerUrl))
app.UseExceptionless(ExceptionlessClient.Default);

app.UseOpenTelemetryPrometheusScrapingEndpoint();

app.UseHealthChecks("/health", new HealthCheckOptions
{
Predicate = hcr => !String.IsNullOrEmpty(jobOptions.JobName) ? hcr.Tags.Contains(jobOptions.JobName) : hcr.Tags.Contains("AllJobs")
Comment thread
niemyjski marked this conversation as resolved.
Outdated
Expand Down
2 changes: 0 additions & 2 deletions src/Exceptionless.Web/ApmExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,6 @@ public static IHostBuilder AddApm(this IHostBuilder builder, ApmConfig config)
metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 10000;
});

b.AddPrometheusExporter();

if (config.EnableExporter)
b.AddOtlpExporter();
});
Comment thread
niemyjski marked this conversation as resolved.
Comment thread
niemyjski marked this conversation as resolved.
Expand Down
21 changes: 21 additions & 0 deletions src/Exceptionless.Web/ClientApp/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/Exceptionless.Web/ClientApp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
"@exceptionless/fetchclient": "^0.44.0",
"@internationalized/date": "^3.12.0",
"@lucide/svelte": "^0.577.0",
"@stripe/stripe-js": "^8.10.0",
"@tanstack/svelte-form": "^1.29.0",
"@tanstack/svelte-query": "^6.1.16",
"@tanstack/svelte-query-devtools": "^6.1.16",
Expand All @@ -90,6 +91,7 @@
"shiki": "^4.0.2",
"svelte-intercom": "^0.0.35",
"svelte-sonner": "^1.1.0",
"svelte-stripe": "^2.0.0",
"svelte-time": "^2.1.0",
"tailwind-merge": "^3.5.0",
"tailwind-variants": "^3.2.2",
Expand Down
Loading
Loading