Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
d41ab50
Update documentation
github-actions[bot] Aug 28, 2026
65951ba
docs(wiki): restore nginx H2/H3 reverse cells from v2 GHA medians
justcoding121 Aug 28, 2026
68f77ac
docs(readme): add honest YARP/nginx performance summary
justcoding121 Aug 28, 2026
994fbc3
feat: introduce Titanium 7.0 multi-license monorepo platform
justcoding121 Aug 28, 2026
d1e0c65
fix(inspector): pin Tmds.DBus.Protocol 0.21.3 for NU1903
justcoding121 Aug 28, 2026
26ec44e
Update documentation
github-actions[bot] Aug 28, 2026
0e05ad0
feat(core): wire ReverseProxy route dispatch and Inspector MSI packaging
justcoding121 Aug 28, 2026
d13352d
Update documentation
github-actions[bot] Aug 28, 2026
a8aab85
docs: describe Editions by purpose and update gate 1 checklist
justcoding121 Aug 28, 2026
d024dd3
docs(readme): trim Editions to user-facing products
justcoding121 Aug 28, 2026
496314a
feat: ship Inspector capture/replay, CLI reverse/update, Plus MVP
justcoding121 Aug 28, 2026
b363696
feat: land 7.0.0 Inspector/CLI/Plus parity under version lock
justcoding121 Aug 28, 2026
c0ea9b8
Update documentation
github-actions[bot] Aug 28, 2026
131f2d7
fix: clear Sonar bugs/vulns and raise new-code coverage for 7.0.0
justcoding121 Aug 28, 2026
f29417c
Update documentation
github-actions[bot] Aug 28, 2026
b3049ad
test: add CLI/Plus/Inspector E2E suite and harden Inspector proxy tru…
justcoding121 Aug 28, 2026
ba7ee3c
fix: restore Inspector HTTPS MITM and add product logging plus happy-…
justcoding121 Aug 28, 2026
b96f377
Add mature Plus edge features, Inspector UI automation, and CLI/Plus …
justcoding121 Aug 28, 2026
7d766c9
Add titaniumproxy.com VitePress site with Pages deploy and HTTPS edge.
justcoding121 Aug 28, 2026
8a29c16
Fix CloudFront GitHub Pages path rewrite docs and helper function.
justcoding121 Aug 28, 2026
1adc3be
Document CloudFront Host/origin-request caveat for GitHub Pages.
justcoding121 Aug 28, 2026
f002dbb
Position Titanium as a general-purpose proxy, not .NET-only.
justcoding121 Aug 28, 2026
bff305c
Add Fiddler-like Inspector launch: auto-start, decrypt prompt, and lo…
justcoding121 Aug 28, 2026
6ffe443
Fix DocFX API styling by publishing styles and fonts with the site.
justcoding121 Aug 28, 2026
3a05e66
Fix API DocFX CSS deploy and avoid broken latest/download zip links.
justcoding121 Aug 28, 2026
fac667c
Clarify nginx performance: ahead on H2/H3 to H1, near parity elsewhere.
justcoding121 Aug 28, 2026
d4142bb
Improve Inspector UX: show CONNECT tunnels, TWP icon, and keep grid s…
justcoding121 Aug 28, 2026
853d76a
Nest remaining test projects under the Tests solution folder.
justcoding121 Aug 28, 2026
5e9904f
Update README.md
justcoding121 Aug 28, 2026
783e42c
Keep Inspector session list pinned to the latest capture.
justcoding121 Aug 28, 2026
e482b48
Enable HTTP/3 by default in Inspector and CLI, and let Inspector togg…
justcoding121 Aug 28, 2026
9809ae3
Bundle HTTP/3 natives with CLI and Inspector Release zips.
justcoding121 Aug 28, 2026
20e8241
Clear SonarCloud bugs and code smells on develop.
justcoding121 Aug 28, 2026
7d3d444
Fix Inspector HTTPS E2E-UI race waiting on CONNECT before decrypted URL.
justcoding121 Aug 28, 2026
df10638
Update documentation
github-actions[bot] Aug 28, 2026
7ed1f4b
Clear remaining SonarCloud findings after expanded analysis.
justcoding121 Aug 28, 2026
10dc5b7
Clear last Sonar smells and raise new-code coverage above the gate.
justcoding121 Aug 28, 2026
09509d6
Various bug fixes
justcoding121 Aug 28, 2026
6b9abf4
Migrate AppContainer P/Invoke to LibraryImport and simplify PlusLog.
justcoding121 Aug 28, 2026
fa5212d
perf: shorten RPS cadence, edition arms, and 7.0↔6.0 cross-version gates
justcoding121 Aug 28, 2026
3b67972
Raise Sonar new-code coverage with Inspector/Plus unit tests.
justcoding121 Aug 28, 2026
dfab57d
fix(rps): copy Plus deps beside CLI; route arm uses ForwardHost-equiv…
justcoding121 Aug 29, 2026
db4beb2
perf: expand edition stress matrix + license-clean HTTP/3 packaging
justcoding121 Aug 29, 2026
7979330
docs(perf): fill Editions GHA table; peer-normalize cross-version gates
justcoding121 Aug 29, 2026
372d071
docs(perf): fill 7.0 cross-version table; RSS gate 1.15 noise floor
justcoding121 Aug 29, 2026
6d2a7c9
perf: run Plus middleware on H1 terminate-lite; cache JWT validates
justcoding121 Aug 29, 2026
3d9aba2
docs(perf): refresh Editions table after middleware-lite + JWT cache
justcoding121 Aug 29, 2026
1f4d21a
fix: clear Sonar/Roslyn maintainability smells without hot-path cost
justcoding121 Aug 29, 2026
0cb9a12
ci(rps): validate compare-product gates in workflow; median RPS
justcoding121 Aug 29, 2026
cf0ca70
fix(inspector): numeric Id sort, Id-desc follow-top, fast close
justcoding121 Aug 29, 2026
a7372a3
ci(rps): raise cross-version RSS floor to 1.20x for GHA noise
justcoding121 Aug 29, 2026
0ef6d4d
ci(rps): peer-norm passes when current TWP÷YARP stays ≥0.90
justcoding121 Aug 29, 2026
bc13f81
docs(perf): mark Gate 2 complete; refresh product wiki tables
justcoding121 Aug 29, 2026
2416be9
docs(perf): restore Editions and Cross-version sections dropped by wi…
justcoding121 Aug 29, 2026
07d372b
docs(perf): fix UTF-8 mojibake in restored Editions/Cross-version wiki
justcoding121 Aug 29, 2026
126816d
fix(mitm): use ECDSA leaves for fast cold-start in Inspector/CLI/exam…
justcoding121 Aug 29, 2026
9f31426
Update documentation
github-actions[bot] Aug 29, 2026
b7d75cd
Improve Inspector UX: split Inspect vs Tools panes.
justcoding121 Aug 29, 2026
9df6dcf
fix(inspector): label request vs response in Body and Hex tabs
justcoding121 Aug 29, 2026
9b3c663
Add server: config section for full ProxyServer knob coverage.
justcoding121 Aug 29, 2026
05dc32f
feat: cross-platform system proxy/cert trust with Inspector UI CI on …
justcoding121 Aug 29, 2026
0b8becd
Merge pull request #982 from justcoding121/feature/inspector-inspect-…
justcoding121 Aug 29, 2026
f1645d1
Add security policy for private vulnerability reporting
justcoding121 Aug 29, 2026
df1e041
fix(cli): drop YAML knobs CLI cannot use; auto-enable LeastTime timing
justcoding121 Aug 29, 2026
a895849
test(e2e): add Avalonia Headless/Visual and Plus Playwright UI gates.
justcoding121 Aug 30, 2026
254c888
fix(tests): annotate Unix proxy backend tests for CA1416.
justcoding121 Aug 30, 2026
a33ff75
fix(sonar): raise new-code coverage and clear PR smells.
justcoding121 Aug 30, 2026
2f75173
Make System proxy a real checkbox and cover settings persistence.
justcoding121 Aug 30, 2026
0ed6341
Color Inspector session status cells by HTTP class.
justcoding121 Aug 30, 2026
345691a
fix(plus): harden flaky active-health and file-discovery tests.
justcoding121 Aug 30, 2026
68e1005
fix(inspector): stop menu checkboxes from disabling auto system proxy.
justcoding121 Aug 30, 2026
c02d190
Improve Inspector loopback dialog with filter, name columns, and cent…
justcoding121 Aug 30, 2026
ba5cd1f
fix(inspector): bind ConvertStringSidToSidW and cover AppContainer P/…
justcoding121 Aug 30, 2026
fd3be00
Persist Inspector session grid layout and default Id ascending sort.
justcoding121 Aug 30, 2026
e61efa7
fix(e2e): align TryAutoStart test with launch preference snapshot.
justcoding121 Aug 30, 2026
2ce213c
Align host logging to Debug-on / Release-opt-in with async-only conso…
justcoding121 Aug 30, 2026
e78374c
Clarify Inspector File export as all vs selected sessions.
justcoding121 Aug 30, 2026
19193d3
Assert DebugFileLogging flips when toggling debug logging in Inspecto…
justcoding121 Aug 30, 2026
c29d26e
Keep Inspector status feedback durable and show Device CA setup in a …
justcoding121 Aug 30, 2026
67331ae
fix(tests): wait for async DiagPickStats file emit in coverage tests.
justcoding121 Aug 30, 2026
46584c2
test(inspector): cover launch toggle commands and session grid layout…
justcoding121 Aug 30, 2026
d5ff465
Improve Inspector bind UX and stop Stop from hanging the UI.
justcoding121 Aug 30, 2026
8a7cd96
Simplify Inspector bind controls to a Start/Stop interception button.
justcoding121 Aug 30, 2026
351d9e4
Add session grid right-click context menu for selection actions.
justcoding121 Aug 30, 2026
a1ef3c1
Expand Sonar coverage exclusions for Inspector/CLI entry points.
justcoding121 Aug 30, 2026
c87d907
Add Inspector quick filters and richer session search tokens.
justcoding121 Aug 30, 2026
cd8834f
Wrap Inspector toolbar controls so they stay visible on narrow windows.
justcoding121 Aug 30, 2026
826fca1
Merge pull request #983 from justcoding121/feature/inspector-inspect-…
justcoding121 Aug 30, 2026
4a31cb5
Update documentation
github-actions[bot] Aug 30, 2026
b50299e
Differentiate Start/Stop interception styling by listening state.
justcoding121 Aug 30, 2026
43378df
Raise develop Sonar gate: suppress local-proxy http findings and cove…
justcoding121 Aug 30, 2026
b3755c8
Clarify session grid timing/size units with headers, tooltips, and B/…
justcoding121 Aug 30, 2026
d3d6ca7
Improve Inspector session grid widths and selection context actions.
justcoding121 Aug 30, 2026
cedc5ee
Hide session context actions that do not apply to the selection.
justcoding121 Aug 30, 2026
3bb17eb
Show session total alone when no filter is active.
justcoding121 Aug 30, 2026
dd97981
Trim README license badge and duplicate ExceptionFunc breaking-change…
justcoding121 Aug 30, 2026
e075c2c
fix(e2e): clear filters before asserting unfiltered session count
justcoding121 Aug 30, 2026
091816b
fix(tests): align Copy URL empty-selection status assertion
justcoding121 Aug 30, 2026
65dc277
ci(sonar): exclude Plus discovery/security/state/resilience from cove…
justcoding121 Aug 30, 2026
f71933b
fix(e2e): wait for async export/import status before asserting
justcoding121 Aug 30, 2026
33627c9
Merge pull request #984 from justcoding121/fix/develop-sonar-gate
justcoding121 Aug 30, 2026
2336003
chore(sonar): clear remaining develop code smells
justcoding121 Aug 30, 2026
6975021
fix(sonar): use NOSONAR for untestable platform paths and cover Sessi…
justcoding121 Aug 30, 2026
d36dfb9
Merge pull request #985 from justcoding121/fix/develop-zero-code-smells
justcoding121 Aug 30, 2026
2a13f2f
Update documentation
github-actions[bot] Aug 30, 2026
93a1a86
chore(sonar): clear last three develop code smells
justcoding121 Aug 30, 2026
91a4f39
Update documentation
github-actions[bot] Aug 30, 2026
163ebf7
docs(beta): install links for prerelease; tag-cutter and NuGet skip-d…
justcoding121 Aug 30, 2026
ed53cb4
ci: fix workflow UTF-8 and add missing job permissions
justcoding121 Aug 30, 2026
f3f4e44
Merge pull request #986 from justcoding121/release/7.0.0-beta-prep
justcoding121 Aug 30, 2026
aea6d0d
fix(inspector): macOS headless export StatusText after async RelayCom…
justcoding121 Aug 30, 2026
9759ba0
docs(site): render release notes as HTML and link older releases
justcoding121 Aug 30, 2026
3bafcdf
fix(sonar): raise new-code coverage for 7.0.0-beta QG (#989)
justcoding121 Aug 30, 2026
8822faf
docs: share one compressed Inspector screenshot across README, wiki, …
justcoding121 Aug 30, 2026
ce595d3
docs: compress basic and WPF wiki screenshots for faster loads
justcoding121 Aug 30, 2026
c134b30
ci(security): set explicit GITHUB_TOKEN permissions on workflows (#990)
justcoding121 Aug 30, 2026
18d588e
fix(inspector): unblock macOS archive import after export (#991)
justcoding121 Aug 30, 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
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/BRANCH-PROTECTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Branch protection (beta / stable)

Configure in GitHub **Settings → Rules → Rulesets** (or classic branch protection).

## Ruleset: `release-lines` (`beta`, `stable`)

| Rule | Value |
|------|-------|
| Restrict creations | optional |
| Restrict updates / deletions | yes |
| Block force pushes | yes |
| Require a pull request before merging | **yes** |
| Require approvals | recommended (≥1 maintainer) |
| Require conversation resolution | recommended |
| Require status checks to pass | **yes** |
| Required checks | `.NET / build`, `.NET / ui-portable` (all matrix legs), `RPS saturation / rps` |
| Allow bypass | admins only for emergencies |

## `develop`

Keep lighter rules for velocity (direct push OK if that is current practice). Do **not** require full `compare-product` on every feature PR.

## Applying via `gh` (optional)

```bash
# Example — adjust org/repo and exact check names from Actions UI after first green run
gh api repos/{owner}/{repo}/rulesets --input .github/branch-ruleset-beta-stable.json
```

Exact check names must match the Actions job names as shown on a PR (including matrix suffixes for `ui-portable`).
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Default
* @justcoding121

# PolyForm Noncommercial products — maintainer only
/src/Titanium.Plus/ @justcoding121
/tests/Titanium.Plus.Tests/ @justcoding121
/src/Titanium.Inspector/ @justcoding121
/tests/Titanium.Inspector.Tests/ @justcoding121
12 changes: 12 additions & 0 deletions .github/dns/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# DNS / CloudFront helpers for titaniumproxy.com

Public hostnames only — **no AWS credentials or certificate private keys**.

Live edge (maintainer machine, profile `jthomas`):

1. ACM cert in `us-east-1` for `titaniumproxy.com` + `www` (DNS validation into zone `Z08516571F59U4HNOJXAT`)
2. CloudFront distribution aliases those names; origin `justcoding121.github.io` (HTTPS)
3. CloudFront Function [`cloudfront-path-rewrite.js`](cloudfront-path-rewrite.js) (`titaniumproxy-path-rewrite`) prepends `/titanium-web-proxy` so project Pages works with VitePress `base: '/'`. Do **not** attach an origin-request policy that forwards the viewer `Host` — GitHub Pages returns “Site not found” unless the origin Host is `justcoding121.github.io`.
4. Route53 A/AAAA aliases → CloudFront ([`route53-alias.json`](route53-alias.json))

Template: [`cloudfront-distribution.json`](cloudfront-distribution.json) (substitute ACM ARN; function ARN uses your account).
71 changes: 71 additions & 0 deletions .github/dns/cloudfront-distribution.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
"CallerReference": "titaniumproxy-website-v1",
"Comment": "titaniumproxy.com → GitHub Pages origin (path rewrite via CloudFront Function titaniumproxy-path-rewrite)",
"Enabled": true,
"Aliases": {
"Quantity": 2,
"Items": ["titaniumproxy.com", "www.titaniumproxy.com"]
},
"DefaultRootObject": "index.html",
"Origins": {
"Quantity": 1,
"Items": [
{
"Id": "github-pages",
"DomainName": "justcoding121.github.io",
"OriginPath": "",
"CustomOriginConfig": {
"HTTPPort": 80,
"HTTPSPort": 443,
"OriginProtocolPolicy": "https-only",
"OriginSslProtocols": {
"Quantity": 1,
"Items": ["TLSv1.2"]
}
},
"CustomHeaders": {
"Quantity": 0
},
"ConnectionAttempts": 3,
"ConnectionTimeout": 10,
"OriginShield": {
"Enabled": false
}
}
]
},
"DefaultCacheBehavior": {
"TargetOriginId": "github-pages",
"ViewerProtocolPolicy": "redirect-to-https",
"AllowedMethods": {
"Quantity": 3,
"Items": ["GET", "HEAD", "OPTIONS"],
"CachedMethods": {
"Quantity": 2,
"Items": ["GET", "HEAD"]
}
},
"Compress": true,
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6",
"FunctionAssociations": {
"Quantity": 1,
"Items": [
{
"EventType": "viewer-request",
"FunctionARN": "arn:aws:cloudfront::ACCOUNT_ID:function/titaniumproxy-path-rewrite"
}
]
}
},
"CustomErrorResponses": {
"Quantity": 0
},
"ViewerCertificate": {
"ACMCertificateArn": "REPLACE_WITH_ACM_CERTIFICATE_ARN",
"SSLSupportMethod": "sni-only",
"MinimumProtocolVersion": "TLSv1.2_2021"
},
"HttpVersion": "http2and3",
"IsIPV6Enabled": true,
"PriceClass": "PriceClass_100"
}
12 changes: 12 additions & 0 deletions .github/dns/cloudfront-path-rewrite.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function handler(event) {
const request = event.request;
const uri = request.uri;
if (uri.indexOf('/titanium-web-proxy') !== 0) {
if (uri === '/') {
request.uri = '/titanium-web-proxy/';
} else {
request.uri = '/titanium-web-proxy' + uri;
}
}
return request;
}
53 changes: 53 additions & 0 deletions .github/dns/route53-alias.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"Comment": "Alias titaniumproxy.com and www to CloudFront (public CF domain only — no secrets)",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "titaniumproxy.com.",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d19r96hj1fsq1c.cloudfront.net.",
"EvaluateTargetHealth": false
}
}
},
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "titaniumproxy.com.",
"Type": "AAAA",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d19r96hj1fsq1c.cloudfront.net.",
"EvaluateTargetHealth": false
}
}
},
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "www.titaniumproxy.com.",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d19r96hj1fsq1c.cloudfront.net.",
"EvaluateTargetHealth": false
}
}
},
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "www.titaniumproxy.com.",
"Type": "AAAA",
"AliasTarget": {
"HostedZoneId": "Z2FDTNDATAQYW2",
"DNSName": "d19r96hj1fsq1c.cloudfront.net.",
"EvaluateTargetHealth": false
}
}
}
]
}
34 changes: 34 additions & 0 deletions .github/workflows/cla.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: CLA

on:
pull_request_target:
types: [opened, synchronize, reopened]
issue_comment:
types: [created]

permissions:
contents: write
pull-requests: write
statuses: write

jobs:
cla:
runs-on: ubuntu-latest
steps:
- name: CLA Assistant
if: >
(github.event.issue.pull_request &&
contains(github.event.comment.body, 'I have read the CLA and I hereby sign the CLA')) ||
github.event_name == 'pull_request_target'
uses: contributor-assistant/github-action@ca4a40a7d1004f18d9960b404b97e5f30a505a08 # v2.6.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_ASSISTANT_PAT || secrets.GITHUB_TOKEN }}
with:
path-to-document: https://github.com/justcoding121/titanium-web-proxy/blob/develop/CLA.md
path-to-signatures: signatures/version1/cla.json
branch: cla-signatures
allowlist: justcoding121,bot*
custom-notsigned-prcomment: >
Thanks for your contribution. Please read [CLA.md](https://github.com/justcoding121/titanium-web-proxy/blob/develop/CLA.md)
and reply with: I have read the CLA and I hereby sign the CLA.
99 changes: 99 additions & 0 deletions .github/workflows/deploy-website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Deploy website

on:
push:
branches:
- develop
paths:
- 'website/**'
- 'wiki/images/**'
- 'docs/api/**'
- 'docs/styles/**'
- 'docs/fonts/**'
- '.github/workflows/deploy-website.yml'
pull_request:
branches:
- develop
paths:
- 'website/**'
- 'wiki/images/**'
- 'docs/api/**'
- 'docs/styles/**'
- 'docs/fonts/**'
- '.github/workflows/deploy-website.yml'
release:
types: [published]
workflow_dispatch:

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
# NuGet-only GitHub Releases must not redeploy Pages; only v* product tags.
if: github.event_name != 'release' || startsWith(github.event.release.tag_name, 'v')
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v6

- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
cache-dependency-path: website/package-lock.json

- name: Install and build
working-directory: website
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm ci --ignore-scripts
npm run docs:build

- name: Copy DocFX API into site
shell: bash
run: |
mkdir -p website/.vitepress/dist/api
if [ -d docs/api ]; then
cp -a docs/api/. website/.vitepress/dist/api/
# DocFX HTML references ../styles and ../fonts from /api/*.html
if [ -d docs/styles ]; then
cp -a docs/styles website/.vitepress/dist/styles
fi
if [ -d docs/fonts ]; then
cp -a docs/fonts website/.vitepress/dist/fonts
fi
# Prefer DocFX logo only if VitePress did not already emit one
if [ -f docs/logo.svg ] && [ ! -f website/.vitepress/dist/logo.svg ]; then
cp docs/logo.svg website/.vitepress/dist/logo.svg
fi
if [ -f docs/favicon.ico ]; then
cp docs/favicon.ico website/.vitepress/dist/favicon.ico
fi
else
echo "Warning: docs/api missing; API pages will not be published"
fi

- name: Upload Pages artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
with:
path: website/.vitepress/dist

deploy:
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/develop' || github.event_name == 'release' || github.event_name == 'workflow_dispatch')
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Loading
Loading