Problem: When requestNewAttempt() fails, only console.error runs. UI may leave a stale attempt token or show a misleading empty state. Users have no visible signal of the problem and no retry affordance.
Fix: Set submissionStatusSignal (or equivalent UI state) to a recoverable error state from the catch block; surface a retry button or toast.
Acceptance criteria:
Network failure during requestNewAttempt shows error to user
User can retry without page refresh
No silent state corruption
**Severity:** High (UX)
**File:** `spikersoft-angular/libraries/tools/src/components/language-runner/language-runner.ts` (~1135-1138)
**Problem:** When `requestNewAttempt()` fails, only `console.error` runs. UI may leave a stale attempt token or show a misleading empty state. Users have no visible signal of the problem and no retry affordance.
**Fix:** Set `submissionStatusSignal` (or equivalent UI state) to a recoverable error state from the catch block; surface a retry button or toast.
**Acceptance criteria:**
- [ ] Network failure during requestNewAttempt shows error to user
- [ ] User can retry without page refresh
- [ ] No silent state corruption
Added attemptErrorSignal to LanguageRunner. requestNewAttempt clears it on entry and sets it to a human-readable message in the catch block. Added retryAttempt() method bound to a new error banner in the template that renders an inline alert with a Retry button when the signal is set. Styled in csharp-runner.scss with .attempt-error (themed via existing CSS variables).
**Resolved.**
Added `attemptErrorSignal` to `LanguageRunner`. `requestNewAttempt` clears it on entry and sets it to a human-readable message in the catch block. Added `retryAttempt()` method bound to a new error banner in the template that renders an inline alert with a Retry button when the signal is set. Styled in `csharp-runner.scss` with `.attempt-error` (themed via existing CSS variables).
Files changed:
- `spikersoft-angular/libraries/tools/src/components/language-runner/language-runner.ts`
- `spikersoft-angular/libraries/tools/src/components/language-runner/language-runner.html`
- `spikersoft-angular/libraries/tools/src/components/csharp-runner/csharp-runner.scss`
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity: High (UX)
File:
spikersoft-angular/libraries/tools/src/components/language-runner/language-runner.ts(~1135-1138)Problem: When
requestNewAttempt()fails, onlyconsole.errorruns. UI may leave a stale attempt token or show a misleading empty state. Users have no visible signal of the problem and no retry affordance.Fix: Set
submissionStatusSignal(or equivalent UI state) to a recoverable error state from the catch block; surface a retry button or toast.Acceptance criteria:
Resolved.
Added
attemptErrorSignaltoLanguageRunner.requestNewAttemptclears it on entry and sets it to a human-readable message in the catch block. AddedretryAttempt()method bound to a new error banner in the template that renders an inline alert with a Retry button when the signal is set. Styled incsharp-runner.scsswith.attempt-error(themed via existing CSS variables).Files changed:
spikersoft-angular/libraries/tools/src/components/language-runner/language-runner.tsspikersoft-angular/libraries/tools/src/components/language-runner/language-runner.htmlspikersoft-angular/libraries/tools/src/components/csharp-runner/csharp-runner.scss