cc-switch 0.1.35

Manage multiple Claude / Codex configurations with an optional Rust daemon that transparently proxies traffic to a built-in aggregate dashboard (request inspection, structured conversation view, token stats — a Rust rewrite of ccglass). Zero background processes when the daemon is off. Cross-platform: Linux / macOS / Windows (x86_64 + ARM64).
Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ccs-daemon aggregate</title>
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets@11.11.1/styles/github.min.css">
<script src="https://cdn.jsdelivr.net/npm/vue@3.5.13/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/marked@15.0.7/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.4/dist/purify.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets@11.11.1/highlight.min.js"></script>
</head>
<body>
<header id="header">
  <span class="brand">ccs-daemon</span>
  <span id="meta"></span>
</header>
<main id="main">
  <aside id="sidebar">
    <section id="filter-section">
      <h3>View</h3>
      <div id="view-mode">
        <button class="view-btn active" data-view="requests">Requests</button>
        <button class="view-btn" data-view="sessions">Sessions</button>
      </div>
      <h3>Upstreams</h3>
      <div id="upstream-filters"></div>
      <h3>Time</h3>
      <div id="time-filters">
        <button class="time-btn active" data-window="1h">1h</button>
        <button class="time-btn" data-window="24h">24h</button>
        <button class="time-btn" data-window="7d">7d</button>
        <button class="time-btn" data-window="all">all</button>
      </div>
    </section>
    <section id="stats-section">
      <h3>Stats</h3>
      <div id="stats-cards"></div>
    </section>
  </aside>
  <section id="content">
    <div id="requests-view">
      <table id="request-table">
        <thead>
          <tr>
            <th>Time</th>
            <th>Upstream</th>
            <th>Model</th>
            <th>Tokens</th>
            <th>Status</th>
            <th>Duration</th>
          </tr>
        </thead>
        <tbody id="request-list"></tbody>
      </table>
      <div id="pagination"></div>
    </div>
    <div id="session-view" class="hidden">
      <div id="session-breadcrumb" class="hidden">
        <button id="back-to-sessions">&larr; All Sessions</button>
        <span id="session-title"></span>
      </div>
      <table id="session-table">
        <thead>
          <tr>
            <th>Started</th>
            <th>Session ID</th>
            <th>Upstream</th>
            <th>Alias</th>
            <th>Requests</th>
            <th>Duration</th>
          </tr>
        </thead>
        <tbody id="session-list"></tbody>
      </table>
      <div id="session-pagination"></div>
      <div id="session-requests-view" class="hidden">
        <table id="session-request-table">
          <thead>
            <tr>
              <th>Time</th>
              <th>Upstream</th>
              <th>Model</th>
              <th>Tokens</th>
              <th>Status</th>
              <th>Duration</th>
            </tr>
          </thead>
          <tbody id="session-request-list"></tbody>
        </table>
        <div id="session-request-pagination"></div>
      </div>
    </div>
    <div id="detail-panel" class="hidden">
      <div id="detail-mount"></div>
    </div>
  </section>
</main>
<script src="/app.js"></script>
</body>
</html>