Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
e089d1b
In progress refactor - restart development initial commit
tsmarvin Mar 2, 2026
b66f47e
refactor: Attempt to improve documentation and formatting.
tsmarvin Mar 5, 2026
991db0c
Apply suggestions from code review
tsmarvin Mar 5, 2026
c4c6c8c
Initial plan
Copilot Mar 5, 2026
156e0da
refactor: fix formatting issues flagged in PR review
Copilot Mar 5, 2026
bff6e66
Merge pull request #4 from DarkgreyDevelopment/copilot/sub-pr-3
tsmarvin Mar 5, 2026
6dd33e6
Update src/Test/Werkr.Tests.Server/Identity/JwtTokenServiceTests.cs
tsmarvin Mar 5, 2026
6167a4d
Initial plan
Copilot Mar 5, 2026
c7c8c4e
fix: qualify unresolved cref references in XML doc comments
Copilot Mar 5, 2026
f911150
Merge pull request #5 from DarkgreyDevelopment/copilot/sub-pr-3
tsmarvin Mar 5, 2026
8804117
Merge pull request #3 from DarkgreyDevelopment/refactor/improve-docum…
tsmarvin Mar 6, 2026
fb938fc
- Format files & run visual studio code cleanup.
tsmarvin Mar 8, 2026
b67ea43
Minor UI improvements
tsmarvin Mar 8, 2026
2c9b344
feat: unified execution data model and UI
tsmarvin Mar 9, 2026
f054800
Merge pull request #6 from DarkgreyDevelopment/refactor/centralize-ex…
tsmarvin Mar 9, 2026
2d58298
Address CI lock differences by allowing regeneration and update of sp…
tsmarvin Mar 9, 2026
e22affc
Skip windows only packages in linux CI
tsmarvin Mar 9, 2026
e1071bd
Workflow Variables, No-Code Actions, and UI Improvements (#7)
tsmarvin Mar 16, 2026
3adf36c
Add initial design specification document for external review.
tsmarvin Mar 17, 2026
e704d25
Unreviewed first pass at doc updates
tsmarvin Mar 19, 2026
a44b974
feat!: implement Project SpecGap 1.1 — Workflow Engine & State Model …
tsmarvin Mar 19, 2026
8187e9a
feat!: implement Project SpecGap 1.2–1.4 — Task Engine, Security & Ag…
tsmarvin Mar 19, 2026
e919ed7
feat!: implement Project SpecGap 1.5 — REST API & Infrastructure Comp…
tsmarvin Mar 19, 2026
e2e36a4
feat: implement Project SpecGap 1.6 — UI Compliance
tsmarvin Mar 19, 2026
90ae694
feat: implement Project SpecGap 1.7 - Documentation Refresh
tsmarvin Mar 19, 2026
104d8e7
feat!: implement Project 1.8 — Demo Sprint (ForEach composite node, f…
tsmarvin Mar 19, 2026
f47423c
Remove unused CSS, JS, bmp and fonts.
tsmarvin Mar 20, 2026
0564142
feat: Add validation and packaging for Werkr Server and Agent
tsmarvin Mar 20, 2026
b58a07b
feat: Add pkg installation and uninstallation scripts for Werkr Agent…
tsmarvin Mar 20, 2026
68b9f89
fix: Fix issues with workflow editor and general UI issues.
tsmarvin Mar 20, 2026
78f6824
WIP Documentation improvements
tsmarvin Mar 20, 2026
cf0d7af
WIP PR Fixes
tsmarvin Mar 20, 2026
7752001
feat(audit): Implement comprehensive audit logging across various com…
tsmarvin Mar 21, 2026
30b30a5
Refactor API calls to use ApiServiceAccessor for improved token manag…
tsmarvin Mar 21, 2026
29e5db3
Make Tasks, Workflows, and Triggers immutable.
tsmarvin Mar 21, 2026
a2ba10f
Configuration & Credential Management
tsmarvin Mar 21, 2026
e377f31
Bump Google.Protobuf from 3.34.0 to 3.34.1
tsmarvin Mar 21, 2026
d69b408
Add dotnet-ef to configured tools list. Bump gitversion tool version
tsmarvin Mar 21, 2026
f98641d
Update agent <-> API communication strategies and implement the outbo…
tsmarvin Mar 22, 2026
52c548a
- Update packages
tsmarvin Mar 22, 2026
b361be6
feat: Notification infrastructure — channels, templates, subscription…
tsmarvin Mar 23, 2026
7f9568f
Merge pull request #13 from DarkgreyDevelopment/refactor/spec-gap
tsmarvin Mar 23, 2026
46360ea
Merge pull request #11 from DarkgreyDevelopment/doc/create-official-d…
tsmarvin Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .aspire/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"appHostPath": "..\\src\\Werkr.AppHost\\Werkr.AppHost.csproj"
}
20 changes: 20 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"version": 1,
"isRoot": true,
"tools": {
"gitversion.tool": {
"version": "6.6.2",
"commands": [
"dotnet-gitversion"
],
"rollForward": false
},
"dotnet-ef": {
"version": "10.0.5",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}
25 changes: 25 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
**/bin/
**/bin\\Debug/
**/obj/
**/.vs/
**/node_modules/
**/.git/
**/logs/
**/TestResults/
**/*.user
**/*.suo
**/wwwroot/lib/bootstrap/dist/js/*.map
src/Test/
src/Werkr.AppHost/
docs/
*.md
.editorconfig
.gitignore
scripts/
.github/
.docker-cache/
.gitversion-cache/

# Allow Publish/ through for .deb build mode
!Publish/
.config/
395 changes: 395 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

151 changes: 46 additions & 105 deletions .github/workflows/DocFX_gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,116 +3,57 @@ on:
push:
branches:
- main
paths:
- 'docs/**'
- 'src/**/*.csproj'
- '.github/workflows/DocFX_gh-pages.yml'

permissions:
contents: write

jobs:
document:
runs-on: windows-latest
env:
DOTNET_NOLOGO: true
DOCFX_SOURCE_BRANCH_NAME: ${{ github.ref }}
strategy:
matrix:
dotnet-version: [ '7.0.x' ]
steps:
- name: Check out repository code
uses: actions/checkout@v2
- name: Check out Werkr.Common
uses: actions/checkout@v2
with:
repository: DarkgreyDevelopment/Werkr.Common
path: src/Werkr.Common
token: ${{ secrets.CI_TOKEN }}
- name: Check out Werkr.Common.Configuration
uses: actions/checkout@v2
with:
repository: DarkgreyDevelopment/Werkr.Common.Configuration
path: src/Werkr.Common.Configuration
token: ${{ secrets.CI_TOKEN }}
- name: Check out Werkr.Installers
uses: actions/checkout@v2
with:
repository: DarkgreyDevelopment/Werkr.Installers
path: src/Werkr.Installers
token: ${{ secrets.CI_TOKEN }}
- name: Check out Werkr.Server
uses: actions/checkout@v2
with:
repository: DarkgreyDevelopment/Werkr.Server
path: src/Werkr.Server
token: ${{ secrets.CI_TOKEN }}
- name: Check out Werkr.Agent
uses: actions/checkout@v2
with:
repository: DarkgreyDevelopment/Werkr.Agent
path: src/Werkr.Agent
token: ${{ secrets.CI_TOKEN }}
- name: Get DocFX
shell: pwsh
run: |
$IWRParams = @{
Uri = "https://github.com/dotnet/docfx/releases/download/v2.59.4/docfx.zip"
OutFile = '${{ github.workspace }}/docfx.zip'
Method = 'Get'
}
Invoke-WebRequest @IWRParams
Expand-Archive -Path '${{ github.workspace }}/docfx.zip' -DestinationPath '${{ github.workspace }}/docfx'
- name: Custom File processing.
shell: pwsh
run: |
$DocsPath = '${{ github.workspace }}/docs'
$CopyParams = @{
Verbose = $true
Force = $true
}
copy-item -Path '${{ github.workspace }}/LICENSE' -Destination "$DocsPath/LICENSE.md" @CopyParams
copy-item -Path '${{ github.workspace }}/README.md' -Destination "$DocsPath/index.md" @CopyParams
copy-Item -Path '${{ github.workspace }}/docs/docfx/*' -Destination $DocsPath -Exclude README.md -Verbose -Recurse
- name: Generate Documentation and build site.
shell: pwsh
run: |
Write-Host "`nGenerating API documentation:"
& '${{ github.workspace }}/docfx/docfx.exe' metadata '${{ github.workspace }}/docs/docfx.json'
Write-Host "`nCreating docfx site:"
& '${{ github.workspace }}/docfx/docfx.exe' '${{ github.workspace }}/docs/docfx.json'
- name: Compress Site for upload as Artifact.
shell: pwsh
run: |
$CopyToSiteParams = @{
Destination = '${{ github.workspace }}/docs/_site'
Verbose = $true
}
copy-item -Path '${{ github.workspace }}/docs/CNAME' @CopyToSiteParams
copy-item -Path '${{ github.workspace }}/docs/_config.yml' @CopyToSiteParams
Write-Host "`nCompressing Site for Artifact Upload"
Compress-Archive -Path '${{ github.workspace }}/docs/_site' -DestinationPath '${{ github.workspace }}/docs/_site.zip'
- name: Upload Artifacts
uses: actions/upload-artifact@v1
with:
name: site
path: ${{ github.workspace }}/docs/_site.zip
publish:
needs: document
build-and-publish:
runs-on: ubuntu-latest
env:
DOTNET_NOLOGO: true
DOCFX_SOURCE_BRANCH_NAME: ${{ github.ref }}
strategy:
matrix:
dotnet-version: [ '7.0.x' ]
DOTNET_CLI_TELEMETRY_OPTOUT: true
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download Artifacts
uses: actions/download-artifact@v1
with:
name: site
path: ${{ github.workspace }}/download
- name: Verify WorkSpace Contents
shell: pwsh
- name: Check out repository
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json

- name: Install DocFX
run: dotnet tool install -g docfx --version 2.78.3

- name: Prepare documentation sources
run: |
cp LICENSE docs/LICENSE.md
cp README.md docs/index.md
cp -r docs/docfx/* docs/ 2>/dev/null || true

- name: Generate API metadata
run: docfx metadata docs/docfx.json

- name: Build documentation site
run: docfx docs/docfx.json

- name: Copy CNAME and config
run: |
Write-Host "`Extracting Site."
Expand-Archive -Path '${{ github.workspace }}/download/_site.zip' -DestinationPath '${{ github.workspace }}'
- name: Publish Site Content
cp docs/CNAME docs/_site/ 2>/dev/null || true
cp docs/_config.yml docs/_site/ 2>/dev/null || true

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: docfx-site
path: docs/_site

- name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4
with:
BRANCH: gh-pages
FOLDER: ${{ github.workspace }}/_site
branch: gh-pages
folder: docs/_site
98 changes: 98 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: CI

on:
pull_request:
branches: [main, develop]
push:
branches: [main, develop]

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-test:
name: Build & Test
runs-on: ubuntu-latest
env:
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup .NET 10
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'

- name: Restore tools
run: dotnet tool restore

- name: Determine version
id: version
run: |
VERSION_JSON=$(dotnet gitversion /output json)
echo "semVer=$(echo $VERSION_JSON | jq -r '.SemVer')" >> $GITHUB_OUTPUT
echo "assemblySemVer=$(echo $VERSION_JSON | jq -r '.AssemblySemVer')" >> $GITHUB_OUTPUT
echo "assemblySemFileVer=$(echo $VERSION_JSON | jq -r '.AssemblySemFileVer')" >> $GITHUB_OUTPUT
echo "informationalVersion=$(echo $VERSION_JSON | jq -r '.InformationalVersion')" >> $GITHUB_OUTPUT

- name: Setup Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: src/Werkr.Server/graph-ui/package-lock.json

- name: Install graph-ui dependencies
run: npm ci --prefix src/Werkr.Server/graph-ui

- name: Run JS tests
run: npm test --prefix src/Werkr.Server/graph-ui

- name: Build JS bundles (production)
run: npm run build:prod --prefix src/Werkr.Server/graph-ui

- name: Check bundle sizes
run: node src/Werkr.Server/graph-ui/scripts/check-bundle-size.mjs

- name: Restore dependencies
run: |
# Backup lock files before restore
find . -name "packages.lock.json" -exec cp {} {}.backup \;

# Restore with force-evaluate for linux-x64
dotnet restore Werkr.slnx --force-evaluate

# Validate lock file changes (skip Windows-only Installer projects)
for lockfile in $(find . -name "packages.lock.json" ! -name "*.backup" ! -path "*/Installer/*"); do
backup="${lockfile}.backup"
if [ -f "$backup" ]; then
pwsh scripts/Test-LockFileChanges.ps1 -BackupPath "$backup" -CurrentPath "$lockfile" -ToPlatform "linux-x64"
rm -f "$backup"
fi
done

- name: Build
run: >
dotnet build Werkr.slnx -c Release --no-restore
/p:Version=${{ steps.version.outputs.semVer }}
/p:AssemblyVersion=${{ steps.version.outputs.assemblySemVer }}
/p:FileVersion=${{ steps.version.outputs.assemblySemFileVer }}
/p:InformationalVersion="${{ steps.version.outputs.informationalVersion }}"

- name: Test
run: >
dotnet test --solution Werkr.slnx -c Release --no-build
--logger "trx;LogFileName=results.trx"
--results-directory TestResults

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: TestResults/**/*.trx
Loading
Loading