webui: add ESLint and eslint-typescript

I've historically found this stuff worthwhile, so let's swallow the pill.

Fortunately, sketch was happy to oblige.

- Install ESLint, @eslint/js, and typescript-eslint packages
- Configure eslint.config.mjs with recommended TypeScript ESLint rules
- Add browser globals support for DOM and web APIs
- Integrate ESLint into npm test workflow via package.json scripts
- Update Makefile to run lint checks as part of test suite
- Fix 249+ linting issues including:
  * Remove unused imports and variables (with _ prefix convention)
  * Fix case declaration issues with eslint-disable blocks
  * Remove unnecessary escape characters
  * Address prefer-const violations
  * Handle unused function parameters appropriately
- Configure ignore patterns to exclude dist/ and node_modules/
- Set rules to allow explicit 'any' types temporarily
- Convert warnings for ts-ignore, async promise executors, and unsafe optional chaining

Results:
- ESLint now runs successfully with 0 errors and only 6 warnings
- TypeScript compilation continues to work correctly
- Linting integrated into test workflow for continuous quality enforcement
- Codebase follows consistent ESLint TypeScript recommended practices

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: sd7b538be0a28d294k
diff --git a/webui/src/web-components/sketch-container-status.ts b/webui/src/web-components/sketch-container-status.ts
index 09fe41e..5e276a8 100644
--- a/webui/src/web-components/sketch-container-status.ts
+++ b/webui/src/web-components/sketch-container-status.ts
@@ -270,7 +270,7 @@
       return html``;
     }
 
-    const sshHost = this.getSSHHostname();
+    const _sshHost = this.getSSHHostname();
     const sshConnectionString = this.getSSHConnectionString();
     const sshCommand = `ssh ${sshConnectionString}`;
     const vscodeCommand = `code --remote ssh-remote+${sshConnectionString} /app -n`;
@@ -604,9 +604,9 @@
                       >Total cost:</span
                     >
                     <span id="totalCost" class="text-xs font-semibold break-all"
-                      >$${(this.state?.total_usage?.total_cost_usd).toFixed(
-                        2,
-                      )}</span
+                      >$${(
+                        this.state?.total_usage?.total_cost_usd ?? 0
+                      ).toFixed(2)}</span
                     >
                   </div>
                 `