daily update

This commit is contained in:
lennlouisgeek
2026-06-28 23:07:10 +08:00
parent b3fa3c8341
commit f74d8e5013
14 changed files with 623 additions and 357 deletions

View File

@@ -0,0 +1,90 @@
# Details
Date : 2026-06-28 22:27:28
Directory d:\\rust-ws\\eskin-player
Total : 75 files, 8653 codes, 180 comments, 1313 blanks, all 10146 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [.openclaw/settings.json](/.openclaw/settings.json) | JSON with Comments | 35 | 0 | 0 | 35 |
| [.scale/assets.json](/.scale/assets.json) | JSON | 4 | 0 | 1 | 5 |
| [.scale/engineering-standards-baseline.json](/.scale/engineering-standards-baseline.json) | JSON | 6 | 0 | 1 | 7 |
| [.scale/engineering-standards.json](/.scale/engineering-standards.json) | JSON | 67 | 0 | 1 | 68 |
| [.scale/frameworks.json](/.scale/frameworks.json) | JSON | 23 | 0 | 1 | 24 |
| [.scale/governance.lock.json](/.scale/governance.lock.json) | JSON | 200 | 0 | 1 | 201 |
| [.scale/output-policy.json](/.scale/output-policy.json) | JSON | 72 | 0 | 1 | 73 |
| [.scale/product-smoke.json](/.scale/product-smoke.json) | JSON | 33 | 0 | 1 | 34 |
| [.scale/quality-contract.json](/.scale/quality-contract.json) | JSON | 70 | 0 | 1 | 71 |
| [.scale/resource-policy.json](/.scale/resource-policy.json) | JSON | 39 | 0 | 1 | 40 |
| [.scale/skills-registry.json](/.scale/skills-registry.json) | JSON | 82 | 0 | 1 | 83 |
| [.scale/skills.json](/.scale/skills.json) | JSON | 630 | 0 | 1 | 631 |
| [.scale/tools.json](/.scale/tools.json) | JSON | 118 | 0 | 1 | 119 |
| [.scale/verification.json](/.scale/verification.json) | JSON | 35 | 0 | 1 | 36 |
| [.scale/workflow.json](/.scale/workflow.json) | JSON | 51 | 0 | 1 | 52 |
| [AGENTS.md](/AGENTS.md) | Markdown | 21 | 0 | 6 | 27 |
| [README.md](/README.md) | Markdown | 33 | 0 | 10 | 43 |
| [TOOLS.md](/TOOLS.md) | Markdown | 56 | 0 | 6 | 62 |
| [build.rs](/build.rs) | Rust | 24 | 0 | 10 | 34 |
| [docs/workflow/QUALITY\_CONTRACT.md](/docs/workflow/QUALITY_CONTRACT.md) | Markdown | 28 | 0 | 8 | 36 |
| [docs/workflow/README.md](/docs/workflow/README.md) | Markdown | 143 | 0 | 45 | 188 |
| [docs/workflow/templates/api-contract.md](/docs/workflow/templates/api-contract.md) | Markdown | 15 | 0 | 15 | 30 |
| [docs/workflow/templates/architecture-review.md](/docs/workflow/templates/architecture-review.md) | Markdown | 15 | 0 | 9 | 24 |
| [docs/workflow/templates/db-change-plan.md](/docs/workflow/templates/db-change-plan.md) | Markdown | 11 | 0 | 10 | 21 |
| [docs/workflow/templates/docs-impact.md](/docs/workflow/templates/docs-impact.md) | Markdown | 9 | 0 | 9 | 18 |
| [docs/workflow/templates/e2e-plan.md](/docs/workflow/templates/e2e-plan.md) | Markdown | 11 | 0 | 10 | 21 |
| [docs/workflow/templates/explore.md](/docs/workflow/templates/explore.md) | Markdown | 11 | 0 | 10 | 21 |
| [docs/workflow/templates/github-actions-scale-preflight.yml](/docs/workflow/templates/github-actions-scale-preflight.yml) | YAML | 27 | 0 | 6 | 33 |
| [docs/workflow/templates/mini-prd.md](/docs/workflow/templates/mini-prd.md) | Markdown | 23 | 0 | 20 | 43 |
| [docs/workflow/templates/plan.md](/docs/workflow/templates/plan.md) | Markdown | 17 | 0 | 12 | 29 |
| [docs/workflow/templates/pre-push-scale-preflight.sh](/docs/workflow/templates/pre-push-scale-preflight.sh) | Shell Script | 6 | 1 | 2 | 9 |
| [docs/workflow/templates/product-smoke.md](/docs/workflow/templates/product-smoke.md) | Markdown | 44 | 0 | 18 | 62 |
| [docs/workflow/templates/reality-check.md](/docs/workflow/templates/reality-check.md) | Markdown | 13 | 0 | 13 | 26 |
| [docs/workflow/templates/resource-cleanup.md](/docs/workflow/templates/resource-cleanup.md) | Markdown | 10 | 0 | 5 | 15 |
| [docs/workflow/templates/resource-impact.md](/docs/workflow/templates/resource-impact.md) | Markdown | 15 | 0 | 11 | 26 |
| [docs/workflow/templates/review.md](/docs/workflow/templates/review.md) | Markdown | 9 | 0 | 8 | 17 |
| [docs/workflow/templates/runtime.md](/docs/workflow/templates/runtime.md) | Markdown | 15 | 0 | 7 | 22 |
| [docs/workflow/templates/security-review.md](/docs/workflow/templates/security-review.md) | Markdown | 15 | 0 | 12 | 27 |
| [docs/workflow/templates/skill-evidence.md](/docs/workflow/templates/skill-evidence.md) | Markdown | 21 | 0 | 13 | 34 |
| [docs/workflow/templates/skill-plan.md](/docs/workflow/templates/skill-plan.md) | Markdown | 25 | 0 | 15 | 40 |
| [docs/workflow/templates/standards-impact.md](/docs/workflow/templates/standards-impact.md) | Markdown | 20 | 0 | 9 | 29 |
| [docs/workflow/templates/summary.md](/docs/workflow/templates/summary.md) | Markdown | 11 | 0 | 9 | 20 |
| [docs/workflow/templates/ui-spec.md](/docs/workflow/templates/ui-spec.md) | Markdown | 17 | 0 | 13 | 30 |
| [docs/workflow/templates/verification.md](/docs/workflow/templates/verification.md) | Markdown | 11 | 0 | 8 | 19 |
| [docs/workflow/templates/visual-review.md](/docs/workflow/templates/visual-review.md) | Markdown | 11 | 0 | 10 | 21 |
| [docs/worklog/metrics.md](/docs/worklog/metrics.md) | Markdown | 15 | 2 | 12 | 29 |
| [render.md](/render.md) | Markdown | 631 | 0 | 236 | 867 |
| [scripts/gates/all.sh](/scripts/gates/all.sh) | Shell Script | 43 | 2 | 10 | 55 |
| [scripts/qa/product-smoke.ps1](/scripts/qa/product-smoke.ps1) | PowerShell | 94 | 1 | 13 | 108 |
| [scripts/qa/product-smoke.sh](/scripts/qa/product-smoke.sh) | Shell Script | 86 | 1 | 12 | 99 |
| [scripts/tests/run.sh](/scripts/tests/run.sh) | Shell Script | 6 | 2 | 1 | 9 |
| [scripts/validate-config.sh](/scripts/validate-config.sh) | Shell Script | 53 | 2 | 11 | 66 |
| [scripts/workflow/verify.sh](/scripts/workflow/verify.sh) | Shell Script | 17 | 6 | 7 | 30 |
| [src/app.rs](/src/app.rs) | Rust | 330 | 12 | 39 | 381 |
| [src/connection.rs](/src/connection.rs) | Rust | 153 | 11 | 26 | 190 |
| [src/main.rs](/src/main.rs) | Rust | 30 | 0 | 4 | 34 |
| [src/matrix.rs](/src/matrix.rs) | Rust | 101 | 0 | 10 | 111 |
| [src/model.rs](/src/model.rs) | Rust | 170 | 7 | 19 | 196 |
| [src/recording.rs](/src/recording.rs) | Rust | 324 | 52 | 69 | 445 |
| [src/render.rs](/src/render.rs) | Rust | 855 | 8 | 61 | 924 |
| [src/resources.rs](/src/resources.rs) | Rust | 937 | 0 | 71 | 1,008 |
| [src/serial\_core/codec.rs](/src/serial_core/codec.rs) | Rust | 6 | 0 | 2 | 8 |
| [src/serial\_core/codecs/mod.rs](/src/serial_core/codecs/mod.rs) | Rust | 1 | 0 | 1 | 2 |
| [src/serial\_core/codecs/tactile\_a.rs](/src/serial_core/codecs/tactile_a.rs) | Rust | 163 | 1 | 21 | 185 |
| [src/serial\_core/error.rs](/src/serial_core/error.rs) | Rust | 45 | 0 | 7 | 52 |
| [src/serial\_core/frame.rs](/src/serial_core/frame.rs) | Rust | 32 | 0 | 5 | 37 |
| [src/serial\_core/mod.rs](/src/serial_core/mod.rs) | Rust | 6 | 0 | 1 | 7 |
| [src/serial\_core/serial.rs](/src/serial_core/serial.rs) | Rust | 78 | 7 | 12 | 97 |
| [src/serial\_core/utils.rs](/src/serial_core/utils.rs) | Rust | 8 | 0 | 3 | 11 |
| [src/style.rs](/src/style.rs) | Rust | 283 | 0 | 37 | 320 |
| [src/texture.rs](/src/texture.rs) | Rust | 231 | 0 | 21 | 252 |
| [src/theme.rs](/src/theme.rs) | Rust | 149 | 1 | 19 | 169 |
| [src/ui.rs](/src/ui.rs) | Rust | 1,088 | 57 | 123 | 1,268 |
| [src/utils.rs](/src/utils.rs) | Rust | 10 | 0 | 2 | 12 |
| [static/wgsl/shader.wgsl](/static/wgsl/shader.wgsl) | WGSL | 556 | 7 | 105 | 668 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,15 @@
# Diff Details
Date : 2026-06-28 22:27:28
Directory d:\\rust-ws\\eskin-player
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@@ -0,0 +1,2 @@
"filename", "language", "", "comment", "blank", "total"
"Total", "-", , 0, 0, 0
1 filename language comment blank total
2 Total - 0 0 0

View File

@@ -0,0 +1,19 @@
# Diff Summary
Date : 2026-06-28 22:27:28
Directory d:\\rust-ws\\eskin-player
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,22 @@
Date : 2026-06-28 22:27:28
Directory : d:\rust-ws\eskin-player
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
+----------+------------+------------+------------+------------+------------+
Directories
+------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------+------------+------------+------------+------------+------------+
+------+------------+------------+------------+------------+------------+
Files
+----------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+----------+----------+------------+------------+------------+------------+
| Total | | 0 | 0 | 0 | 0 |
+----------+----------+------------+------------+------------+------------+

View File

@@ -0,0 +1,77 @@
"filename", "language", "Rust", "Markdown", "JSON", "JSON with Comments", "Shell Script", "WGSL", "PowerShell", "YAML", "comment", "blank", "total"
"d:\rust-ws\eskin-player\.openclaw\settings.json", "JSON with Comments", 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 35
"d:\rust-ws\eskin-player\.scale\assets.json", "JSON", 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 5
"d:\rust-ws\eskin-player\.scale\engineering-standards-baseline.json", "JSON", 0, 0, 6, 0, 0, 0, 0, 0, 0, 1, 7
"d:\rust-ws\eskin-player\.scale\engineering-standards.json", "JSON", 0, 0, 67, 0, 0, 0, 0, 0, 0, 1, 68
"d:\rust-ws\eskin-player\.scale\frameworks.json", "JSON", 0, 0, 23, 0, 0, 0, 0, 0, 0, 1, 24
"d:\rust-ws\eskin-player\.scale\governance.lock.json", "JSON", 0, 0, 200, 0, 0, 0, 0, 0, 0, 1, 201
"d:\rust-ws\eskin-player\.scale\output-policy.json", "JSON", 0, 0, 72, 0, 0, 0, 0, 0, 0, 1, 73
"d:\rust-ws\eskin-player\.scale\product-smoke.json", "JSON", 0, 0, 33, 0, 0, 0, 0, 0, 0, 1, 34
"d:\rust-ws\eskin-player\.scale\quality-contract.json", "JSON", 0, 0, 70, 0, 0, 0, 0, 0, 0, 1, 71
"d:\rust-ws\eskin-player\.scale\resource-policy.json", "JSON", 0, 0, 39, 0, 0, 0, 0, 0, 0, 1, 40
"d:\rust-ws\eskin-player\.scale\skills-registry.json", "JSON", 0, 0, 82, 0, 0, 0, 0, 0, 0, 1, 83
"d:\rust-ws\eskin-player\.scale\skills.json", "JSON", 0, 0, 630, 0, 0, 0, 0, 0, 0, 1, 631
"d:\rust-ws\eskin-player\.scale\tools.json", "JSON", 0, 0, 118, 0, 0, 0, 0, 0, 0, 1, 119
"d:\rust-ws\eskin-player\.scale\verification.json", "JSON", 0, 0, 35, 0, 0, 0, 0, 0, 0, 1, 36
"d:\rust-ws\eskin-player\.scale\workflow.json", "JSON", 0, 0, 51, 0, 0, 0, 0, 0, 0, 1, 52
"d:\rust-ws\eskin-player\AGENTS.md", "Markdown", 0, 21, 0, 0, 0, 0, 0, 0, 0, 6, 27
"d:\rust-ws\eskin-player\README.md", "Markdown", 0, 33, 0, 0, 0, 0, 0, 0, 0, 10, 43
"d:\rust-ws\eskin-player\TOOLS.md", "Markdown", 0, 56, 0, 0, 0, 0, 0, 0, 0, 6, 62
"d:\rust-ws\eskin-player\build.rs", "Rust", 24, 0, 0, 0, 0, 0, 0, 0, 0, 10, 34
"d:\rust-ws\eskin-player\docs\workflow\QUALITY_CONTRACT.md", "Markdown", 0, 28, 0, 0, 0, 0, 0, 0, 0, 8, 36
"d:\rust-ws\eskin-player\docs\workflow\README.md", "Markdown", 0, 143, 0, 0, 0, 0, 0, 0, 0, 45, 188
"d:\rust-ws\eskin-player\docs\workflow\templates\api-contract.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 30
"d:\rust-ws\eskin-player\docs\workflow\templates\architecture-review.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 0, 9, 24
"d:\rust-ws\eskin-player\docs\workflow\templates\db-change-plan.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 10, 21
"d:\rust-ws\eskin-player\docs\workflow\templates\docs-impact.md", "Markdown", 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 18
"d:\rust-ws\eskin-player\docs\workflow\templates\e2e-plan.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 10, 21
"d:\rust-ws\eskin-player\docs\workflow\templates\explore.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 10, 21
"d:\rust-ws\eskin-player\docs\workflow\templates\github-actions-scale-preflight.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 27, 0, 6, 33
"d:\rust-ws\eskin-player\docs\workflow\templates\mini-prd.md", "Markdown", 0, 23, 0, 0, 0, 0, 0, 0, 0, 20, 43
"d:\rust-ws\eskin-player\docs\workflow\templates\plan.md", "Markdown", 0, 17, 0, 0, 0, 0, 0, 0, 0, 12, 29
"d:\rust-ws\eskin-player\docs\workflow\templates\pre-push-scale-preflight.sh", "Shell Script", 0, 0, 0, 0, 6, 0, 0, 0, 1, 2, 9
"d:\rust-ws\eskin-player\docs\workflow\templates\product-smoke.md", "Markdown", 0, 44, 0, 0, 0, 0, 0, 0, 0, 18, 62
"d:\rust-ws\eskin-player\docs\workflow\templates\reality-check.md", "Markdown", 0, 13, 0, 0, 0, 0, 0, 0, 0, 13, 26
"d:\rust-ws\eskin-player\docs\workflow\templates\resource-cleanup.md", "Markdown", 0, 10, 0, 0, 0, 0, 0, 0, 0, 5, 15
"d:\rust-ws\eskin-player\docs\workflow\templates\resource-impact.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 0, 11, 26
"d:\rust-ws\eskin-player\docs\workflow\templates\review.md", "Markdown", 0, 9, 0, 0, 0, 0, 0, 0, 0, 8, 17
"d:\rust-ws\eskin-player\docs\workflow\templates\runtime.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 0, 7, 22
"d:\rust-ws\eskin-player\docs\workflow\templates\security-review.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 0, 12, 27
"d:\rust-ws\eskin-player\docs\workflow\templates\skill-evidence.md", "Markdown", 0, 21, 0, 0, 0, 0, 0, 0, 0, 13, 34
"d:\rust-ws\eskin-player\docs\workflow\templates\skill-plan.md", "Markdown", 0, 25, 0, 0, 0, 0, 0, 0, 0, 15, 40
"d:\rust-ws\eskin-player\docs\workflow\templates\standards-impact.md", "Markdown", 0, 20, 0, 0, 0, 0, 0, 0, 0, 9, 29
"d:\rust-ws\eskin-player\docs\workflow\templates\summary.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 9, 20
"d:\rust-ws\eskin-player\docs\workflow\templates\ui-spec.md", "Markdown", 0, 17, 0, 0, 0, 0, 0, 0, 0, 13, 30
"d:\rust-ws\eskin-player\docs\workflow\templates\verification.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 8, 19
"d:\rust-ws\eskin-player\docs\workflow\templates\visual-review.md", "Markdown", 0, 11, 0, 0, 0, 0, 0, 0, 0, 10, 21
"d:\rust-ws\eskin-player\docs\worklog\metrics.md", "Markdown", 0, 15, 0, 0, 0, 0, 0, 0, 2, 12, 29
"d:\rust-ws\eskin-player\render.md", "Markdown", 0, 631, 0, 0, 0, 0, 0, 0, 0, 236, 867
"d:\rust-ws\eskin-player\scripts\gates\all.sh", "Shell Script", 0, 0, 0, 0, 43, 0, 0, 0, 2, 10, 55
"d:\rust-ws\eskin-player\scripts\qa\product-smoke.ps1", "PowerShell", 0, 0, 0, 0, 0, 0, 94, 0, 1, 13, 108
"d:\rust-ws\eskin-player\scripts\qa\product-smoke.sh", "Shell Script", 0, 0, 0, 0, 86, 0, 0, 0, 1, 12, 99
"d:\rust-ws\eskin-player\scripts\tests\run.sh", "Shell Script", 0, 0, 0, 0, 6, 0, 0, 0, 2, 1, 9
"d:\rust-ws\eskin-player\scripts\validate-config.sh", "Shell Script", 0, 0, 0, 0, 53, 0, 0, 0, 2, 11, 66
"d:\rust-ws\eskin-player\scripts\workflow\verify.sh", "Shell Script", 0, 0, 0, 0, 17, 0, 0, 0, 6, 7, 30
"d:\rust-ws\eskin-player\src\app.rs", "Rust", 330, 0, 0, 0, 0, 0, 0, 0, 12, 39, 381
"d:\rust-ws\eskin-player\src\connection.rs", "Rust", 153, 0, 0, 0, 0, 0, 0, 0, 11, 26, 190
"d:\rust-ws\eskin-player\src\main.rs", "Rust", 30, 0, 0, 0, 0, 0, 0, 0, 0, 4, 34
"d:\rust-ws\eskin-player\src\matrix.rs", "Rust", 101, 0, 0, 0, 0, 0, 0, 0, 0, 10, 111
"d:\rust-ws\eskin-player\src\model.rs", "Rust", 170, 0, 0, 0, 0, 0, 0, 0, 7, 19, 196
"d:\rust-ws\eskin-player\src\recording.rs", "Rust", 324, 0, 0, 0, 0, 0, 0, 0, 52, 69, 445
"d:\rust-ws\eskin-player\src\render.rs", "Rust", 855, 0, 0, 0, 0, 0, 0, 0, 8, 61, 924
"d:\rust-ws\eskin-player\src\resources.rs", "Rust", 937, 0, 0, 0, 0, 0, 0, 0, 0, 71, 1008
"d:\rust-ws\eskin-player\src\serial_core\codec.rs", "Rust", 6, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8
"d:\rust-ws\eskin-player\src\serial_core\codecs\mod.rs", "Rust", 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2
"d:\rust-ws\eskin-player\src\serial_core\codecs\tactile_a.rs", "Rust", 163, 0, 0, 0, 0, 0, 0, 0, 1, 21, 185
"d:\rust-ws\eskin-player\src\serial_core\error.rs", "Rust", 45, 0, 0, 0, 0, 0, 0, 0, 0, 7, 52
"d:\rust-ws\eskin-player\src\serial_core\frame.rs", "Rust", 32, 0, 0, 0, 0, 0, 0, 0, 0, 5, 37
"d:\rust-ws\eskin-player\src\serial_core\mod.rs", "Rust", 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\rust-ws\eskin-player\src\serial_core\serial.rs", "Rust", 78, 0, 0, 0, 0, 0, 0, 0, 7, 12, 97
"d:\rust-ws\eskin-player\src\serial_core\utils.rs", "Rust", 8, 0, 0, 0, 0, 0, 0, 0, 0, 3, 11
"d:\rust-ws\eskin-player\src\style.rs", "Rust", 283, 0, 0, 0, 0, 0, 0, 0, 0, 37, 320
"d:\rust-ws\eskin-player\src\texture.rs", "Rust", 231, 0, 0, 0, 0, 0, 0, 0, 0, 21, 252
"d:\rust-ws\eskin-player\src\theme.rs", "Rust", 149, 0, 0, 0, 0, 0, 0, 0, 1, 19, 169
"d:\rust-ws\eskin-player\src\ui.rs", "Rust", 1088, 0, 0, 0, 0, 0, 0, 0, 57, 123, 1268
"d:\rust-ws\eskin-player\src\utils.rs", "Rust", 10, 0, 0, 0, 0, 0, 0, 0, 0, 2, 12
"d:\rust-ws\eskin-player\static\wgsl\shader.wgsl", "WGSL", 0, 0, 0, 0, 0, 556, 0, 0, 7, 105, 668
"Total", "-", 5024, 1276, 1430, 35, 211, 556, 94, 27, 180, 1313, 10146
1 filename language Rust Markdown JSON JSON with Comments Shell Script WGSL PowerShell YAML comment blank total
2 d:\rust-ws\eskin-player\.openclaw\settings.json JSON with Comments 0 0 0 35 0 0 0 0 0 0 35
3 d:\rust-ws\eskin-player\.scale\assets.json JSON 0 0 4 0 0 0 0 0 0 1 5
4 d:\rust-ws\eskin-player\.scale\engineering-standards-baseline.json JSON 0 0 6 0 0 0 0 0 0 1 7
5 d:\rust-ws\eskin-player\.scale\engineering-standards.json JSON 0 0 67 0 0 0 0 0 0 1 68
6 d:\rust-ws\eskin-player\.scale\frameworks.json JSON 0 0 23 0 0 0 0 0 0 1 24
7 d:\rust-ws\eskin-player\.scale\governance.lock.json JSON 0 0 200 0 0 0 0 0 0 1 201
8 d:\rust-ws\eskin-player\.scale\output-policy.json JSON 0 0 72 0 0 0 0 0 0 1 73
9 d:\rust-ws\eskin-player\.scale\product-smoke.json JSON 0 0 33 0 0 0 0 0 0 1 34
10 d:\rust-ws\eskin-player\.scale\quality-contract.json JSON 0 0 70 0 0 0 0 0 0 1 71
11 d:\rust-ws\eskin-player\.scale\resource-policy.json JSON 0 0 39 0 0 0 0 0 0 1 40
12 d:\rust-ws\eskin-player\.scale\skills-registry.json JSON 0 0 82 0 0 0 0 0 0 1 83
13 d:\rust-ws\eskin-player\.scale\skills.json JSON 0 0 630 0 0 0 0 0 0 1 631
14 d:\rust-ws\eskin-player\.scale\tools.json JSON 0 0 118 0 0 0 0 0 0 1 119
15 d:\rust-ws\eskin-player\.scale\verification.json JSON 0 0 35 0 0 0 0 0 0 1 36
16 d:\rust-ws\eskin-player\.scale\workflow.json JSON 0 0 51 0 0 0 0 0 0 1 52
17 d:\rust-ws\eskin-player\AGENTS.md Markdown 0 21 0 0 0 0 0 0 0 6 27
18 d:\rust-ws\eskin-player\README.md Markdown 0 33 0 0 0 0 0 0 0 10 43
19 d:\rust-ws\eskin-player\TOOLS.md Markdown 0 56 0 0 0 0 0 0 0 6 62
20 d:\rust-ws\eskin-player\build.rs Rust 24 0 0 0 0 0 0 0 0 10 34
21 d:\rust-ws\eskin-player\docs\workflow\QUALITY_CONTRACT.md Markdown 0 28 0 0 0 0 0 0 0 8 36
22 d:\rust-ws\eskin-player\docs\workflow\README.md Markdown 0 143 0 0 0 0 0 0 0 45 188
23 d:\rust-ws\eskin-player\docs\workflow\templates\api-contract.md Markdown 0 15 0 0 0 0 0 0 0 15 30
24 d:\rust-ws\eskin-player\docs\workflow\templates\architecture-review.md Markdown 0 15 0 0 0 0 0 0 0 9 24
25 d:\rust-ws\eskin-player\docs\workflow\templates\db-change-plan.md Markdown 0 11 0 0 0 0 0 0 0 10 21
26 d:\rust-ws\eskin-player\docs\workflow\templates\docs-impact.md Markdown 0 9 0 0 0 0 0 0 0 9 18
27 d:\rust-ws\eskin-player\docs\workflow\templates\e2e-plan.md Markdown 0 11 0 0 0 0 0 0 0 10 21
28 d:\rust-ws\eskin-player\docs\workflow\templates\explore.md Markdown 0 11 0 0 0 0 0 0 0 10 21
29 d:\rust-ws\eskin-player\docs\workflow\templates\github-actions-scale-preflight.yml YAML 0 0 0 0 0 0 0 27 0 6 33
30 d:\rust-ws\eskin-player\docs\workflow\templates\mini-prd.md Markdown 0 23 0 0 0 0 0 0 0 20 43
31 d:\rust-ws\eskin-player\docs\workflow\templates\plan.md Markdown 0 17 0 0 0 0 0 0 0 12 29
32 d:\rust-ws\eskin-player\docs\workflow\templates\pre-push-scale-preflight.sh Shell Script 0 0 0 0 6 0 0 0 1 2 9
33 d:\rust-ws\eskin-player\docs\workflow\templates\product-smoke.md Markdown 0 44 0 0 0 0 0 0 0 18 62
34 d:\rust-ws\eskin-player\docs\workflow\templates\reality-check.md Markdown 0 13 0 0 0 0 0 0 0 13 26
35 d:\rust-ws\eskin-player\docs\workflow\templates\resource-cleanup.md Markdown 0 10 0 0 0 0 0 0 0 5 15
36 d:\rust-ws\eskin-player\docs\workflow\templates\resource-impact.md Markdown 0 15 0 0 0 0 0 0 0 11 26
37 d:\rust-ws\eskin-player\docs\workflow\templates\review.md Markdown 0 9 0 0 0 0 0 0 0 8 17
38 d:\rust-ws\eskin-player\docs\workflow\templates\runtime.md Markdown 0 15 0 0 0 0 0 0 0 7 22
39 d:\rust-ws\eskin-player\docs\workflow\templates\security-review.md Markdown 0 15 0 0 0 0 0 0 0 12 27
40 d:\rust-ws\eskin-player\docs\workflow\templates\skill-evidence.md Markdown 0 21 0 0 0 0 0 0 0 13 34
41 d:\rust-ws\eskin-player\docs\workflow\templates\skill-plan.md Markdown 0 25 0 0 0 0 0 0 0 15 40
42 d:\rust-ws\eskin-player\docs\workflow\templates\standards-impact.md Markdown 0 20 0 0 0 0 0 0 0 9 29
43 d:\rust-ws\eskin-player\docs\workflow\templates\summary.md Markdown 0 11 0 0 0 0 0 0 0 9 20
44 d:\rust-ws\eskin-player\docs\workflow\templates\ui-spec.md Markdown 0 17 0 0 0 0 0 0 0 13 30
45 d:\rust-ws\eskin-player\docs\workflow\templates\verification.md Markdown 0 11 0 0 0 0 0 0 0 8 19
46 d:\rust-ws\eskin-player\docs\workflow\templates\visual-review.md Markdown 0 11 0 0 0 0 0 0 0 10 21
47 d:\rust-ws\eskin-player\docs\worklog\metrics.md Markdown 0 15 0 0 0 0 0 0 2 12 29
48 d:\rust-ws\eskin-player\render.md Markdown 0 631 0 0 0 0 0 0 0 236 867
49 d:\rust-ws\eskin-player\scripts\gates\all.sh Shell Script 0 0 0 0 43 0 0 0 2 10 55
50 d:\rust-ws\eskin-player\scripts\qa\product-smoke.ps1 PowerShell 0 0 0 0 0 0 94 0 1 13 108
51 d:\rust-ws\eskin-player\scripts\qa\product-smoke.sh Shell Script 0 0 0 0 86 0 0 0 1 12 99
52 d:\rust-ws\eskin-player\scripts\tests\run.sh Shell Script 0 0 0 0 6 0 0 0 2 1 9
53 d:\rust-ws\eskin-player\scripts\validate-config.sh Shell Script 0 0 0 0 53 0 0 0 2 11 66
54 d:\rust-ws\eskin-player\scripts\workflow\verify.sh Shell Script 0 0 0 0 17 0 0 0 6 7 30
55 d:\rust-ws\eskin-player\src\app.rs Rust 330 0 0 0 0 0 0 0 12 39 381
56 d:\rust-ws\eskin-player\src\connection.rs Rust 153 0 0 0 0 0 0 0 11 26 190
57 d:\rust-ws\eskin-player\src\main.rs Rust 30 0 0 0 0 0 0 0 0 4 34
58 d:\rust-ws\eskin-player\src\matrix.rs Rust 101 0 0 0 0 0 0 0 0 10 111
59 d:\rust-ws\eskin-player\src\model.rs Rust 170 0 0 0 0 0 0 0 7 19 196
60 d:\rust-ws\eskin-player\src\recording.rs Rust 324 0 0 0 0 0 0 0 52 69 445
61 d:\rust-ws\eskin-player\src\render.rs Rust 855 0 0 0 0 0 0 0 8 61 924
62 d:\rust-ws\eskin-player\src\resources.rs Rust 937 0 0 0 0 0 0 0 0 71 1008
63 d:\rust-ws\eskin-player\src\serial_core\codec.rs Rust 6 0 0 0 0 0 0 0 0 2 8
64 d:\rust-ws\eskin-player\src\serial_core\codecs\mod.rs Rust 1 0 0 0 0 0 0 0 0 1 2
65 d:\rust-ws\eskin-player\src\serial_core\codecs\tactile_a.rs Rust 163 0 0 0 0 0 0 0 1 21 185
66 d:\rust-ws\eskin-player\src\serial_core\error.rs Rust 45 0 0 0 0 0 0 0 0 7 52
67 d:\rust-ws\eskin-player\src\serial_core\frame.rs Rust 32 0 0 0 0 0 0 0 0 5 37
68 d:\rust-ws\eskin-player\src\serial_core\mod.rs Rust 6 0 0 0 0 0 0 0 0 1 7
69 d:\rust-ws\eskin-player\src\serial_core\serial.rs Rust 78 0 0 0 0 0 0 0 7 12 97
70 d:\rust-ws\eskin-player\src\serial_core\utils.rs Rust 8 0 0 0 0 0 0 0 0 3 11
71 d:\rust-ws\eskin-player\src\style.rs Rust 283 0 0 0 0 0 0 0 0 37 320
72 d:\rust-ws\eskin-player\src\texture.rs Rust 231 0 0 0 0 0 0 0 0 21 252
73 d:\rust-ws\eskin-player\src\theme.rs Rust 149 0 0 0 0 0 0 0 1 19 169
74 d:\rust-ws\eskin-player\src\ui.rs Rust 1088 0 0 0 0 0 0 0 57 123 1268
75 d:\rust-ws\eskin-player\src\utils.rs Rust 10 0 0 0 0 0 0 0 0 2 12
76 d:\rust-ws\eskin-player\static\wgsl\shader.wgsl WGSL 0 0 0 0 0 556 0 0 7 105 668
77 Total - 5024 1276 1430 35 211 556 94 27 180 1313 10146

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
# Summary
Date : 2026-06-28 22:27:28
Directory d:\\rust-ws\\eskin-player
Total : 75 files, 8653 codes, 180 comments, 1313 blanks, all 10146 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Rust | 22 | 5,024 | 156 | 563 | 5,743 |
| JSON | 14 | 1,430 | 0 | 14 | 1,444 |
| Markdown | 29 | 1,276 | 2 | 569 | 1,847 |
| WGSL | 1 | 556 | 7 | 105 | 668 |
| Shell Script | 6 | 211 | 14 | 43 | 268 |
| PowerShell | 1 | 94 | 1 | 13 | 108 |
| JSON with Comments | 1 | 35 | 0 | 0 | 35 |
| YAML | 1 | 27 | 0 | 6 | 33 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 75 | 8,653 | 180 | 1,313 | 10,146 |
| . (Files) | 5 | 765 | 0 | 268 | 1,033 |
| .openclaw | 1 | 35 | 0 | 0 | 35 |
| .scale | 14 | 1,430 | 0 | 14 | 1,444 |
| docs | 27 | 568 | 3 | 319 | 890 |
| docs\\workflow | 26 | 553 | 1 | 307 | 861 |
| docs\\workflow (Files) | 2 | 171 | 0 | 53 | 224 |
| docs\\workflow\\templates | 24 | 382 | 1 | 254 | 637 |
| docs\\worklog | 1 | 15 | 2 | 12 | 29 |
| scripts | 6 | 299 | 14 | 54 | 367 |
| scripts (Files) | 1 | 53 | 2 | 11 | 66 |
| scripts\\gates | 1 | 43 | 2 | 10 | 55 |
| scripts\\qa | 2 | 180 | 2 | 25 | 207 |
| scripts\\tests | 1 | 6 | 2 | 1 | 9 |
| scripts\\workflow | 1 | 17 | 6 | 7 | 30 |
| src | 21 | 5,000 | 156 | 553 | 5,709 |
| src (Files) | 13 | 4,661 | 148 | 501 | 5,310 |
| src\\serial_core | 8 | 339 | 8 | 52 | 399 |
| src\\serial_core (Files) | 6 | 175 | 7 | 30 | 212 |
| src\\serial_core\\codecs | 2 | 164 | 1 | 22 | 187 |
| static | 1 | 556 | 7 | 105 | 668 |
| static\\wgsl | 1 | 556 | 7 | 105 | 668 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,127 @@
Date : 2026-06-28 22:27:28
Directory : d:\rust-ws\eskin-player
Total : 75 files, 8653 codes, 180 comments, 1313 blanks, all 10146 lines
Languages
+--------------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+--------------------+------------+------------+------------+------------+------------+
| Rust | 22 | 5,024 | 156 | 563 | 5,743 |
| JSON | 14 | 1,430 | 0 | 14 | 1,444 |
| Markdown | 29 | 1,276 | 2 | 569 | 1,847 |
| WGSL | 1 | 556 | 7 | 105 | 668 |
| Shell Script | 6 | 211 | 14 | 43 | 268 |
| PowerShell | 1 | 94 | 1 | 13 | 108 |
| JSON with Comments | 1 | 35 | 0 | 0 | 35 |
| YAML | 1 | 27 | 0 | 6 | 33 |
+--------------------+------------+------------+------------+------------+------------+
Directories
+------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 75 | 8,653 | 180 | 1,313 | 10,146 |
| . (Files) | 5 | 765 | 0 | 268 | 1,033 |
| .openclaw | 1 | 35 | 0 | 0 | 35 |
| .scale | 14 | 1,430 | 0 | 14 | 1,444 |
| docs | 27 | 568 | 3 | 319 | 890 |
| docs\workflow | 26 | 553 | 1 | 307 | 861 |
| docs\workflow (Files) | 2 | 171 | 0 | 53 | 224 |
| docs\workflow\templates | 24 | 382 | 1 | 254 | 637 |
| docs\worklog | 1 | 15 | 2 | 12 | 29 |
| scripts | 6 | 299 | 14 | 54 | 367 |
| scripts (Files) | 1 | 53 | 2 | 11 | 66 |
| scripts\gates | 1 | 43 | 2 | 10 | 55 |
| scripts\qa | 2 | 180 | 2 | 25 | 207 |
| scripts\tests | 1 | 6 | 2 | 1 | 9 |
| scripts\workflow | 1 | 17 | 6 | 7 | 30 |
| src | 21 | 5,000 | 156 | 553 | 5,709 |
| src (Files) | 13 | 4,661 | 148 | 501 | 5,310 |
| src\serial_core | 8 | 339 | 8 | 52 | 399 |
| src\serial_core (Files) | 6 | 175 | 7 | 30 | 212 |
| src\serial_core\codecs | 2 | 164 | 1 | 22 | 187 |
| static | 1 | 556 | 7 | 105 | 668 |
| static\wgsl | 1 | 556 | 7 | 105 | 668 |
+------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
| d:\rust-ws\eskin-player\.openclaw\settings.json | JSON with Comments | 35 | 0 | 0 | 35 |
| d:\rust-ws\eskin-player\.scale\assets.json | JSON | 4 | 0 | 1 | 5 |
| d:\rust-ws\eskin-player\.scale\engineering-standards-baseline.json | JSON | 6 | 0 | 1 | 7 |
| d:\rust-ws\eskin-player\.scale\engineering-standards.json | JSON | 67 | 0 | 1 | 68 |
| d:\rust-ws\eskin-player\.scale\frameworks.json | JSON | 23 | 0 | 1 | 24 |
| d:\rust-ws\eskin-player\.scale\governance.lock.json | JSON | 200 | 0 | 1 | 201 |
| d:\rust-ws\eskin-player\.scale\output-policy.json | JSON | 72 | 0 | 1 | 73 |
| d:\rust-ws\eskin-player\.scale\product-smoke.json | JSON | 33 | 0 | 1 | 34 |
| d:\rust-ws\eskin-player\.scale\quality-contract.json | JSON | 70 | 0 | 1 | 71 |
| d:\rust-ws\eskin-player\.scale\resource-policy.json | JSON | 39 | 0 | 1 | 40 |
| d:\rust-ws\eskin-player\.scale\skills-registry.json | JSON | 82 | 0 | 1 | 83 |
| d:\rust-ws\eskin-player\.scale\skills.json | JSON | 630 | 0 | 1 | 631 |
| d:\rust-ws\eskin-player\.scale\tools.json | JSON | 118 | 0 | 1 | 119 |
| d:\rust-ws\eskin-player\.scale\verification.json | JSON | 35 | 0 | 1 | 36 |
| d:\rust-ws\eskin-player\.scale\workflow.json | JSON | 51 | 0 | 1 | 52 |
| d:\rust-ws\eskin-player\AGENTS.md | Markdown | 21 | 0 | 6 | 27 |
| d:\rust-ws\eskin-player\README.md | Markdown | 33 | 0 | 10 | 43 |
| d:\rust-ws\eskin-player\TOOLS.md | Markdown | 56 | 0 | 6 | 62 |
| d:\rust-ws\eskin-player\build.rs | Rust | 24 | 0 | 10 | 34 |
| d:\rust-ws\eskin-player\docs\workflow\QUALITY_CONTRACT.md | Markdown | 28 | 0 | 8 | 36 |
| d:\rust-ws\eskin-player\docs\workflow\README.md | Markdown | 143 | 0 | 45 | 188 |
| d:\rust-ws\eskin-player\docs\workflow\templates\api-contract.md | Markdown | 15 | 0 | 15 | 30 |
| d:\rust-ws\eskin-player\docs\workflow\templates\architecture-review.md | Markdown | 15 | 0 | 9 | 24 |
| d:\rust-ws\eskin-player\docs\workflow\templates\db-change-plan.md | Markdown | 11 | 0 | 10 | 21 |
| d:\rust-ws\eskin-player\docs\workflow\templates\docs-impact.md | Markdown | 9 | 0 | 9 | 18 |
| d:\rust-ws\eskin-player\docs\workflow\templates\e2e-plan.md | Markdown | 11 | 0 | 10 | 21 |
| d:\rust-ws\eskin-player\docs\workflow\templates\explore.md | Markdown | 11 | 0 | 10 | 21 |
| d:\rust-ws\eskin-player\docs\workflow\templates\github-actions-scale-preflight.yml | YAML | 27 | 0 | 6 | 33 |
| d:\rust-ws\eskin-player\docs\workflow\templates\mini-prd.md | Markdown | 23 | 0 | 20 | 43 |
| d:\rust-ws\eskin-player\docs\workflow\templates\plan.md | Markdown | 17 | 0 | 12 | 29 |
| d:\rust-ws\eskin-player\docs\workflow\templates\pre-push-scale-preflight.sh | Shell Script | 6 | 1 | 2 | 9 |
| d:\rust-ws\eskin-player\docs\workflow\templates\product-smoke.md | Markdown | 44 | 0 | 18 | 62 |
| d:\rust-ws\eskin-player\docs\workflow\templates\reality-check.md | Markdown | 13 | 0 | 13 | 26 |
| d:\rust-ws\eskin-player\docs\workflow\templates\resource-cleanup.md | Markdown | 10 | 0 | 5 | 15 |
| d:\rust-ws\eskin-player\docs\workflow\templates\resource-impact.md | Markdown | 15 | 0 | 11 | 26 |
| d:\rust-ws\eskin-player\docs\workflow\templates\review.md | Markdown | 9 | 0 | 8 | 17 |
| d:\rust-ws\eskin-player\docs\workflow\templates\runtime.md | Markdown | 15 | 0 | 7 | 22 |
| d:\rust-ws\eskin-player\docs\workflow\templates\security-review.md | Markdown | 15 | 0 | 12 | 27 |
| d:\rust-ws\eskin-player\docs\workflow\templates\skill-evidence.md | Markdown | 21 | 0 | 13 | 34 |
| d:\rust-ws\eskin-player\docs\workflow\templates\skill-plan.md | Markdown | 25 | 0 | 15 | 40 |
| d:\rust-ws\eskin-player\docs\workflow\templates\standards-impact.md | Markdown | 20 | 0 | 9 | 29 |
| d:\rust-ws\eskin-player\docs\workflow\templates\summary.md | Markdown | 11 | 0 | 9 | 20 |
| d:\rust-ws\eskin-player\docs\workflow\templates\ui-spec.md | Markdown | 17 | 0 | 13 | 30 |
| d:\rust-ws\eskin-player\docs\workflow\templates\verification.md | Markdown | 11 | 0 | 8 | 19 |
| d:\rust-ws\eskin-player\docs\workflow\templates\visual-review.md | Markdown | 11 | 0 | 10 | 21 |
| d:\rust-ws\eskin-player\docs\worklog\metrics.md | Markdown | 15 | 2 | 12 | 29 |
| d:\rust-ws\eskin-player\render.md | Markdown | 631 | 0 | 236 | 867 |
| d:\rust-ws\eskin-player\scripts\gates\all.sh | Shell Script | 43 | 2 | 10 | 55 |
| d:\rust-ws\eskin-player\scripts\qa\product-smoke.ps1 | PowerShell | 94 | 1 | 13 | 108 |
| d:\rust-ws\eskin-player\scripts\qa\product-smoke.sh | Shell Script | 86 | 1 | 12 | 99 |
| d:\rust-ws\eskin-player\scripts\tests\run.sh | Shell Script | 6 | 2 | 1 | 9 |
| d:\rust-ws\eskin-player\scripts\validate-config.sh | Shell Script | 53 | 2 | 11 | 66 |
| d:\rust-ws\eskin-player\scripts\workflow\verify.sh | Shell Script | 17 | 6 | 7 | 30 |
| d:\rust-ws\eskin-player\src\app.rs | Rust | 330 | 12 | 39 | 381 |
| d:\rust-ws\eskin-player\src\connection.rs | Rust | 153 | 11 | 26 | 190 |
| d:\rust-ws\eskin-player\src\main.rs | Rust | 30 | 0 | 4 | 34 |
| d:\rust-ws\eskin-player\src\matrix.rs | Rust | 101 | 0 | 10 | 111 |
| d:\rust-ws\eskin-player\src\model.rs | Rust | 170 | 7 | 19 | 196 |
| d:\rust-ws\eskin-player\src\recording.rs | Rust | 324 | 52 | 69 | 445 |
| d:\rust-ws\eskin-player\src\render.rs | Rust | 855 | 8 | 61 | 924 |
| d:\rust-ws\eskin-player\src\resources.rs | Rust | 937 | 0 | 71 | 1,008 |
| d:\rust-ws\eskin-player\src\serial_core\codec.rs | Rust | 6 | 0 | 2 | 8 |
| d:\rust-ws\eskin-player\src\serial_core\codecs\mod.rs | Rust | 1 | 0 | 1 | 2 |
| d:\rust-ws\eskin-player\src\serial_core\codecs\tactile_a.rs | Rust | 163 | 1 | 21 | 185 |
| d:\rust-ws\eskin-player\src\serial_core\error.rs | Rust | 45 | 0 | 7 | 52 |
| d:\rust-ws\eskin-player\src\serial_core\frame.rs | Rust | 32 | 0 | 5 | 37 |
| d:\rust-ws\eskin-player\src\serial_core\mod.rs | Rust | 6 | 0 | 1 | 7 |
| d:\rust-ws\eskin-player\src\serial_core\serial.rs | Rust | 78 | 7 | 12 | 97 |
| d:\rust-ws\eskin-player\src\serial_core\utils.rs | Rust | 8 | 0 | 3 | 11 |
| d:\rust-ws\eskin-player\src\style.rs | Rust | 283 | 0 | 37 | 320 |
| d:\rust-ws\eskin-player\src\texture.rs | Rust | 231 | 0 | 21 | 252 |
| d:\rust-ws\eskin-player\src\theme.rs | Rust | 149 | 1 | 19 | 169 |
| d:\rust-ws\eskin-player\src\ui.rs | Rust | 1,088 | 57 | 123 | 1,268 |
| d:\rust-ws\eskin-player\src\utils.rs | Rust | 10 | 0 | 2 | 12 |
| d:\rust-ws\eskin-player\static\wgsl\shader.wgsl | WGSL | 556 | 7 | 105 | 668 |
| Total | | 8,653 | 180 | 1,313 | 10,146 |
+------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

View File

@@ -1,347 +0,0 @@
# Blender 5.1.2 MTL File: '未命名.blend'
# www.blender.org
newmtl mat_0
Kd 0.439636 0.439636 0.439636
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_1
Kd 0.450786 0.545725 0.745404
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_10
Kd 0.473532 0.623934 0.545725
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_11
Kd 0.033105 0.033105 0.033105
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_12
Kd 0.022170 0.017642 0.015993
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_13
Kd 0.000000 0.000000 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_14
Kd 0.313971 0.401978 0.428669
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_15
Kd 1.000000 0.318547 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_16
Kd 0.033105 0.132868 0.033105
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_17
Kd 0.623934 0.679542 0.806922
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_18
Kd 0.052861 0.038204 0.031891
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_19
Kd 1.000000 0.679542 0.644453
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_2
Kd 1.000000 0.278894 0.278894
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_20
Kd 1.000000 0.318547 0.033105
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_21
Kd 1.000000 0.396755 1.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_22
Kd 0.930111 0.428669 0.230740
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_3
Kd 0.291771 0.258167 0.127438
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_4
Kd 0.318547 0.318547 0.318547
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_5
Kd 0.564712 0.391552 0.266356
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_6
Kd 0.000000 0.318547 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_7
Kd 1.000000 1.000000 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_8
Kd 0.887891 0.887891 0.887891
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000
newmtl mat_9
Kd 0.527115 0.768151 0.737881
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 3
Pr 1.000000
Pm 1.000000
Ps 0.000000
Pc 0.000000
Pcr 0.030000
aniso 0.000000
anisor 0.000000

View File

@@ -40,6 +40,43 @@ pub struct HandGatewayMode {
pub range: Range<u32>,
}
const HAND_TIP_MATRICES: [HandTipMatrix; 5] = [
HandTipMatrix {
center_px: [260.0, 490.0],
size_px: [70.0, 120.0],
angle_rad: -0.45,
},
HandTipMatrix {
center_px: [360.0, 255.0],
size_px: [70.0, 120.0],
angle_rad: -0.05,
},
HandTipMatrix {
center_px: [485.0, 225.0],
size_px: [70.0, 120.0],
angle_rad: 0.0,
},
HandTipMatrix {
center_px: [595.0, 260.0],
size_px: [70.0, 120.0],
angle_rad: 0.12,
},
HandTipMatrix {
center_px: [705.0, 385.0],
size_px: [70.0, 120.0],
angle_rad: 0.28,
},
];
// Each entry pins one miniature matrix to a fingertip in hand.png.
// Coordinates are authored in source-image pixels so they are easy to tune by eye.
// size_px keeps the same 7:12 aspect as the Finger-mode 7 columns x 12 rows matrix.
struct HandTipMatrix {
center_px: [f32; 2],
size_px: [f32; 2],
angle_rad: f32,
}
impl egui_wgpu::CallbackTrait for WgpuBackgroundCallback {
fn prepare(
&self,
@@ -78,12 +115,15 @@ pub struct BackgroundRenderResources {
hand_image_pipeline: wgpu::RenderPipeline,
glyph_pipeline: wgpu::RenderPipeline,
dot_pipeline: wgpu::RenderPipeline,
hand_dot_pipeline: wgpu::RenderPipeline,
hand_image_bind_group: wgpu::BindGroup,
hand_image_texture: texture::Texture,
glyph_vertex_buffer: wgpu::Buffer,
glyph_instance_buffer: wgpu::Buffer,
glyph_instances: Vec<GlyphInstance>,
hand_dot_instance_buffer: wgpu::Buffer,
hand_dot_instances: Vec<GlyphInstance>,
render_options: RenderOptions,
}
@@ -405,6 +445,8 @@ impl BackgroundRenderResources {
let glyph_pipeline =
create_glyph_pipeline(device, target_format, &shader, &pipeline_layout);
let dot_pipeline = create_dot_pipeline(device, target_format, &shader, &pipeline_layout);
let hand_dot_pipeline =
create_hand_dot_pipeline(device, target_format, &shader, &pipeline_layout);
let _model_pipelines =
create_model_pipelines(device, target_format, &shader, &model_pipeline_layout);
@@ -432,6 +474,19 @@ impl BackgroundRenderResources {
contents: bytemuck::cast_slice(&glyph_instances),
usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
});
let hand_dot_instances = build_hand_dot_instances(
rows,
cols,
hand_image_texture.width as f32,
hand_image_texture.height as f32,
&[[0.0, 0.0]; PRESSURE_CELL_COUNT],
);
let hand_dot_instance_buffer =
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Hand Fingertip Dot Matrix Instance Buffer"),
contents: bytemuck::cast_slice(&hand_dot_instances),
usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
});
Self {
layout,
@@ -445,11 +500,14 @@ impl BackgroundRenderResources {
hand_image_pipeline,
glyph_pipeline,
dot_pipeline,
hand_dot_pipeline,
hand_image_bind_group,
hand_image_texture,
glyph_vertex_buffer,
glyph_instance_buffer,
glyph_instances,
hand_dot_instance_buffer,
hand_dot_instances,
render_options,
}
}
@@ -485,6 +543,21 @@ impl BackgroundRenderResources {
0,
bytemuck::cast_slice(&self.glyph_instances),
);
// Hand mode uses five UV-anchored fingertip matrices over hand.png.
// Rebuild their instance positions here so pressure colors update every frame.
self.hand_dot_instances = build_hand_dot_instances(
self.rows,
self.cols,
self.hand_image_texture.width as f32,
self.hand_image_texture.height as f32,
pressure,
);
queue.write_buffer(
&self.hand_dot_instance_buffer,
0,
bytemuck::cast_slice(&self.hand_dot_instances),
);
}
fn paint(&self, render_pass: &mut wgpu::RenderPass<'_>, active_mode: &ActiveMode) {
@@ -493,13 +566,14 @@ impl BackgroundRenderResources {
render_pass.set_pipeline(&self.background_pipeline);
render_pass.draw(0..3, 0..1);
match active_mode {
ActiveMode::Finger(mode) => self.paint_finger(render_pass, mode),
ActiveMode::Hand(mode) => {
render_pass.set_pipeline(&self.hand_image_pipeline);
render_pass.set_bind_group(1, &self.hand_image_bind_group, &[]);
render_pass.draw(0..6, 0..1);
match active_mode {
ActiveMode::Finger(mode) => self.paint_finger(render_pass, mode),
ActiveMode::Hand(mode) => self.paint_hand(render_pass, mode),
self.paint_hand(render_pass, mode);
}
}
}
@@ -520,7 +594,12 @@ impl BackgroundRenderResources {
fn paint_hand(&self, render_pass: &mut wgpu::RenderPass<'_>, mode: &HandGatewayMode) {
let _range = mode.range.clone();
let _ = render_pass;
// Draw the five fingertip dot matrices after hand.png, so they sit on top of the texture.
render_pass.set_pipeline(&self.hand_dot_pipeline);
render_pass.set_vertex_buffer(0, self.glyph_vertex_buffer.slice(..));
render_pass.set_vertex_buffer(1, self.hand_dot_instance_buffer.slice(..));
render_pass.draw(0..6, 0..self.hand_dot_instances.len() as u32);
}
fn visible_instance_count(&self, rows: u32, cols: u32) -> u32 {
@@ -788,6 +867,80 @@ fn create_dot_pipeline(
})
}
fn create_hand_dot_pipeline(
device: &wgpu::Device,
target_format: &wgpu::TextureFormat,
shader: &wgpu::ShaderModule,
layout: &wgpu::PipelineLayout,
) -> wgpu::RenderPipeline {
device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
label: Some("Hand Fingertip Dot Matrix Pipeline"),
layout: Some(layout),
vertex: wgpu::VertexState {
module: shader,
entry_point: Some("vs_hand_dot"),
compilation_options: Default::default(),
buffers: &[GlyphVertex::desc(), GlyphInstance::desc()],
},
fragment: Some(wgpu::FragmentState {
module: shader,
entry_point: Some("fs_hand_dot"),
compilation_options: Default::default(),
targets: &[Some(wgpu::ColorTargetState {
format: *target_format,
blend: Some(wgpu::BlendState::ALPHA_BLENDING),
write_mask: wgpu::ColorWrites::ALL,
})],
}),
primitive: wgpu::PrimitiveState::default(),
depth_stencil: None,
multisample: wgpu::MultisampleState::default(),
multiview_mask: None,
cache: None,
})
}
fn build_hand_dot_instances(
rows: u32,
cols: u32,
image_width: f32,
image_height: f32,
pressure: &PressureFrame,
) -> Vec<GlyphInstance> {
let mut instances = Vec::with_capacity(HAND_TIP_MATRICES.len() * rows as usize * cols as usize);
for tip in HAND_TIP_MATRICES {
let cos = tip.angle_rad.cos();
let sin = tip.angle_rad.sin();
for row in 0..rows {
for col in 0..cols {
let index = (row * cols + col) as usize;
let [normalized, display_value] =
pressure.get(index).copied().unwrap_or([0.0, 0.0]);
// Lay out a rows x cols matrix in fingertip-local pixel space.
let local_x = (col as f32 - cols as f32 / 2.0 + 0.5) / cols as f32 * tip.size_px[0];
let local_y = (row as f32 - rows as f32 / 2.0 + 0.5) / rows as f32 * tip.size_px[1];
// Rotate the local matrix so it follows the direction of the finger.
let x = tip.center_px[0] + local_x * cos - local_y * sin;
let y = tip.center_px[1] + local_x * sin + local_y * cos;
let uv_x = x / image_width.max(1.0);
let uv_y = y / image_height.max(1.0);
instances.push(GlyphInstance {
world_position: [uv_x, uv_y, 0.0, 1.0],
style: [normalized, display_value, 0.0, 0.0],
});
}
}
}
instances
}
fn build_glyph_instances(
rows: u32,
cols: u32,

View File

@@ -336,7 +336,6 @@ fn fs_glyph(in: GlyphVertexOutput) -> @location(0) vec4f {
return output_color(color, alpha);
}
// dot
struct DotVertexInput {
@location(0) local: vec2f,
@@ -358,12 +357,71 @@ fn circle_alpha(local: vec2f, radius: f32, softness: f32) -> f32 {
return 1.0 - smoothstep(radius, radius + softness, dist);
}
// Convert a point authored in hand.png UV space into clip space.
// This mirrors fs_hand_image's aspect-fit math, so fingertip dots stay attached
// to the same image pixels when the app window changes shape.
fn hand_image_uv_to_clip(image_uv: vec2f) -> vec2f {
let viewport_aspect = u.viewport.x / max(u.viewport.y, 1.0);
let image_aspect = u.image.x / max(u.image.y, 1.0);
var screen_uv = image_uv;
if (viewport_aspect > image_aspect) {
let image_width = image_aspect / viewport_aspect;
screen_uv.x = image_uv.x * image_width + (1.0 - image_width) * 0.5;
} else {
let image_height = viewport_aspect / image_aspect;
screen_uv.y = image_uv.y * image_height + (1.0 - image_height) * 0.5;
}
return vec2f(screen_uv.x * 2.0 - 1.0, 1.0 - screen_uv.y * 2.0);
}
@vertex
fn vs_hand_dot(vertex: DotVertexInput, instance: DotInstanceInput) -> DotVertexOutput {
let intensity = saturate(instance.style.x);
let shaped = smoothstep(0.0, 1.0, intensity);
// Hand instances store hand.png UV in world_position.xy instead of 3D world space.
let center = hand_image_uv_to_clip(instance.world_position.xy);
// Hand fingertip matrices are much smaller than the full Finger view.
// Keep each bead below the local cell spacing so the 12x7 matrix remains visibly separated.
let pixel_size = u.glyph.x * mix(0.38, 0.56, shaped);
let ndc_offset = vertex.local * vec2f(pixel_size / u.viewport.x, pixel_size / u.viewport.y) * 2.0;
var out: DotVertexOutput;
out.clip_position = vec4f(center + ndc_offset, 0.0, 1.0);
out.local = vertex.local;
out.intensity = intensity;
return out;
}
@fragment
fn fs_hand_dot(in: DotVertexOutput) -> @location(0) vec4f {
let intensity = saturate(in.intensity);
// Use a compact round bead instead of the larger Finger-mode glow marker.
let core = circle_alpha(in.local, 0.56, 0.08);
let halo = circle_alpha(in.local, 0.78, 0.14) * 0.16;
// Keep the fingertip matrix visually close to JE-Skin's cyan model dots,
// while still letting pressure brighten the bead a little.
let cyan = vec3f(0.34, 0.86, 1.0);
let hot = sample_range_color(intensity);
let color = mix(cyan, hot, 0.22) * mix(0.88, 1.18, intensity);
return output_color(color, max(core, halo));
}
@vertex
fn vs_dot(vertex: DotVertexInput, instance: DotInstanceInput) -> DotVertexOutput {
let center = u.view_proj * vec4f(instance.world_position.xyz, 1.0);
let intensity = saturate(instance.style.x);
let shaped = pow(intensity, 0.9);
let pixel_size = u.glyph.x * mix(0.72, 1.85, shaped);
let shaped = smoothstep(0.0, 1.0, intensity);
let pixel_size = u.glyph.x * mix(1.07, 2.23, shaped);
let ndc_offset = vertex.local * vec2f(pixel_size / u.viewport.x, pixel_size / u.viewport.y) * 2.0;
var out: DotVertexOutput;
out.clip_position = vec4f(center.xy + ndc_offset * center.w, center.z, center.w);
@@ -379,7 +437,7 @@ fn fs_dot(in: DotVertexOutput) -> @location(0) vec4f {
let core = circle_alpha(in.local, 0.42, 0.055);
let glow = circle_alpha(in.local, 0.78, 0.18) * intensity * 0.45;
let glow = circle_alpha(in.local, 0.92, 0.20) * intensity * 0.32;
let highlight_pos = in.local - vec2f(-0.18, 0.20);