Sweep all .cshtml files for encoding corruption; add pre-commit guard
Replace all corruption variants with HTML entities across 226 view files: - 3-char UTF-8-as-Win1252 sequences (ae-corruption) - Standalone smart/curly quotes that break C# Razor expressions - Partially re-corrupted variants where the 3rd byte was normalised to ASCII tools/Fix-Encoding.ps1: re-runnable sweep; uses [char] code points so the script itself never contains a literal non-ASCII character; supports -DryRun .githooks/pre-commit: blocks commits containing the ae-corruption byte signature (xc3xa2xe2x82xac); git core.hooksPath = .githooks so the hook is repo-committed and active for all future work on this machine. Build clean; 225 unit tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -54,7 +54,7 @@
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h6 class="mb-0">Select a Company</h6>
|
||||
<input type="text" id="companySearch" class="form-control form-control-sm w-auto"
|
||||
placeholder="Search…" style="min-width:180px" />
|
||||
placeholder="Search…" style="min-width:180px" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive" style="max-height:520px;overflow-y:auto">
|
||||
@@ -101,7 +101,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Mobile card view — shown on screens < 992px -->
|
||||
<!-- Mobile card view — shown on screens < 992px -->
|
||||
<div class="mobile-card-view">
|
||||
<div class="mobile-card-list">
|
||||
@foreach (var c in Model)
|
||||
@@ -148,7 +148,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Right: export options — always visible *@
|
||||
@* Right: export options — always visible *@
|
||||
<div class="col-lg-5">
|
||||
<div class="card border-0 shadow-sm" style="position:sticky;top:1rem">
|
||||
<div class="card-header bg-primary text-white py-2">
|
||||
@@ -156,14 +156,14 @@
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<!-- Company selection banner — shown/hidden by JS -->
|
||||
<!-- Company selection banner — shown/hidden by JS -->
|
||||
<div id="noCompanyBanner" class="alert alert-light alert-permanent border d-flex align-items-center gap-2 mb-3 small">
|
||||
<i class="bi bi-arrow-left-circle fs-5 text-muted"></i>
|
||||
<span>Select a company from the list to begin.</span>
|
||||
</div>
|
||||
<div id="selectedBanner" class="alert alert-info alert-permanent py-2 mb-3 small" style="display:none">
|
||||
<i class="bi bi-building me-1"></i>
|
||||
Exporting: <strong id="selectedCompanyName">—</strong>
|
||||
Exporting: <strong id="selectedCompanyName">—</strong>
|
||||
</div>
|
||||
|
||||
<form method="post" asp-action="Export" id="exportForm">
|
||||
@@ -266,7 +266,7 @@
|
||||
<input class="form-check-input" type="radio" name="format" id="fmtCsv" value="csv" />
|
||||
<label class="form-check-label" for="fmtCsv">
|
||||
<i class="bi bi-filetype-csv me-1 text-secondary"></i>CSV (.zip)
|
||||
<span class="text-muted small">— one file per sheet</span>
|
||||
<span class="text-muted small">— one file per sheet</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@@ -333,7 +333,7 @@
|
||||
});
|
||||
});
|
||||
|
||||
// ── Format toggle — update button label ──────────────────────────────────
|
||||
// ── Format toggle — update button label ──────────────────────────────────
|
||||
document.querySelectorAll('input[name="format"]').forEach(function (radio) {
|
||||
radio.addEventListener('change', function () {
|
||||
var isCsv = this.value === 'csv';
|
||||
|
||||
Reference in New Issue
Block a user