Hmbown/CodeWhale · warning · Error

HTTP ${res.status}

Error message

HTTP ${res.status}

What it means

Startup warning that the theme named in settings could not be resolved/loaded by palette::resolve_theme_setting, so the System theme is used instead (the background_color override is still applied on top). Unknown theme names are normally normalized to "system" by Settings::load, so this fires when a value survives normalization but still fails resolution - typically a custom theme whose definition cannot be loaded or parsed.

Source

Thrown at crates/tui/src/runtime_mobile.html:325

    }

    function headers(extra = {}) {
      const out = Object.assign({ "Content-Type": "application/json" }, extra);
      if (token()) out.Authorization = "Bearer " + token();
      return out;
    }

    async function api(path, options = {}) {
      const res = await fetch(path, Object.assign({}, options, {
        headers: headers(options.headers || {})
      }));
      if (!res.ok) {
        let detail = await res.text();
        try {
          const parsed = JSON.parse(detail);
          detail = parsed.error?.message || detail;
        } catch (_) {}
        throw new Error(detail || ("HTTP " + res.status));
      }
      if (res.status === 204) return null;
      return res.json();
    }

    function escapeHtml(raw) {
      return String(raw).replace(/[&<>"']/g, (char) => ({
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        "\"": "&quot;",
        "'": "&#039;"
      }[char]));
    }

    function eventPayload(data) {
      return data && typeof data === "object" && "payload" in data ? data.payload : data;
    }

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Set theme back to a known value ("system") in settings to confirm the cause
  2. Restore or fix the custom theme definition that the ({error}) names, then relaunch
  3. After upgrading, check the available theme list for renamed/removed themes and update settings.theme accordingly

Example fix

# before (settings.toml)
theme = "custom-ocean"
# after
theme = "system"
Defensive patterns

Strategy: validation

Validate before calling

// Resolve the theme explicitly at startup and fall back on error.
match palette::resolve_theme_setting(&settings.theme, background) {
    Ok(resolved) => use_theme(resolved),
    Err(err) => {
        warn_user(format!("theme '{}' unavailable: {err}", settings.theme));
        use_system_theme_fallback();
    }
}

Prevention

When it happens

Trigger: settings.theme references a custom/registered theme whose files are missing, unreadable, or fail palette parsing; a codewhale upgrade removed or renamed a built-in theme id; the theme-plus-background combination yields an invalid palette.

Common situations: Custom theme directory moved or deleted; broken dotfiles symlink after re-cloning; upgrading codewhale dropped an old theme id that settings still pin.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/f85cf021bae2f68f. Report an issue: GitHub.