zai-org / zai-org/feedback

[Feature Request] Model capacity indicator & queue system for chat.z.ai

Open
#191 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Feature Description

Add a real-time capacity indicator to the chat.z.ai web application that shows users whether the AI model is currently at full capacity, and optionally implement an automatic queue system for messages.

Problem Statement

Currently, users have no way of knowing if the model is at maximum capacity before sending a message. The workflow is:

  1. User types a message
  2. User presses Send
  3. User waits (hoping the model isn't overloaded)
  4. Either: Message processes successfully OR user gets an error/timeout

This creates:

  • ⏱️ Wasted time waiting for responses that may never come
  • 😀 Poor UX β€” users feel like they're "gambling" on each message
  • πŸ“‰ Frustration β€” especially for longer prompts where the wait time is significant

Proposed Solution

Part A: Capacity Status Indicator

A visual UI element in the chat interface that shows real-time model capacity status:

Visual Design Options:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 🟒 Model Available    [Send Enabled] β”‚  ← Normal operation
β”‚ 🟑 High Load         [Send Enabled] β”‚  ← Warning: may be slower
β”‚ πŸ”΄ At Capacity       [Send Disabled]β”‚  ← Cannot process now
β”‚ ⚑ Queue: 3 ahead    [Queued]       β”‚  ← In queue (Part B)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Placement Suggestions:
  • Near the input box β€” Bottom of chat window, adjacent to Send button
  • Header area β€” Top of chat interface, always visible
  • Status bar β€” Thin bar above or below input area
Behavior:
  • Green (Available): Model has capacity, normal operation
  • Yellow (High Load): Model busy but accepting requests, expect delays
  • Red (At Capacity):
    • Show warning message
    • Disable Send button (prevent failed submissions)
    • Display estimated wait time if available
  • Polling: Update status every 5-10 seconds via WebSocket or REST ping

Part B: Automatic Queue System (Enhanced)

When the model is at capacity, instead of blocking the user entirely:

How It Works:
  1. User types message and presses Send (or presses "Queue")
  2. If model is at capacity, message enters queue position
  3. UI shows: "You're #3 in queue. Estimated wait: ~2 minutes"
  4. When capacity opens, message automatically submits
  5. User receives notification/response normally
Queue Features:
  • βœ… Position indicator: Shows current queue position
  • ⏱️ ETA display: Estimated time based on average processing
  • ❌ Cancel option: User can remove themselves from queue
  • πŸ”” Notification: Alert when message is being processed
  • πŸ’Ύ Persistence: Queue survives page refreshes (session-based)
Edge Cases:
  • Queue limit: Max 10-20 messages per user/session to prevent abuse
  • Timeout: Auto-remove from queue after 10 minutes if not processed
  • Session expiry: Clear queue when session ends

Technical Implementation Suggestions

Backend Changes:
1. New Endpoint: GET /api/v1/model/status
   Response: {
     "status": "available" | "high_load" | "at_capacity",
     "current_load": 85,
     "max_capacity": 100,
     "queue_position": null | number,
     "estimated_wait_seconds": null | number
   }

2. New Endpoint: POST /api/v1/messages/queue
   Response: {
     "queued": true,
     "position": 3,
     "estimated_wait_seconds": 120,
     "queue_id": "uuid-here"
   }

3. WebSocket Event: model:status:update
   Push real-time capacity changes to connected clients
Frontend Changes:
// Pseudocode for capacity check
const checkCapacity = async () => {
  const status = await fetch(/api/v1/model/status);
  updateUI(status);
  
  if (status.status === at_capacity) {
    disableSendButton();
    showQueueOption();
  }
};

// Poll every 8 seconds
setInterval(checkCapacity, 8000);

User Experience Flow

Before (Current):
User types β†’ Sends β†’ Waits blindly β†’ Error? β†’ Retry? β†’ Frustrated 😩
After (Proposed):
User sees 🟒 β†’ Types β†’ Sends β†’ Works! βœ…
                    ↓
User sees πŸ”΄ β†’ Sees warning β†’ Queues or waits β†’ Auto-sends β†’ Happy 😊

Benefits

Benefit Impact
Reduced frustration Users know what to expect before waiting
Better resource management Server doesn't process doomed requests
Professional feel Competitors like ChatGPT/Claude show status indicators
Trust building Transparency about system status
Lower support load Fewer "is it broken?" complaints

Priority Assessment

  • Effort: Medium (backend endpoint + frontend component)
  • Value: High (affects every user during peak times)
  • Urgency: High (peak-time UX is currently poor)

Reporter Information


This feature request was submitted on behalf of user feedback from Discord.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up β€” it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No repository files, tests, or existing entry points are named. Start by reviewing the proposed model-status and message-queue API contracts and the chat input/send UI scope, then clarify whether both parts are required; done should include an agreed design, implementation scope, and validation for status updates, queue behavior, cancellation, persistence, and failure cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend-api-design, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.