MemberJunction / MemberJunction/MJ

Realtime surface tabs: 'tab up front' is hardcoded to the whiteboard — it should be the deployment's choice

Open
#3,599 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TSQL
Stars
29
Forks
6
Avg merge
2d 1h
Merged PRs (30d)
323

Description

## What happens

`ShouldRegisterChannelTabUpFront(channelName, hasBeenUsed)` returns `IsWhiteboardChannel(channelName) || hasBeenUsed`, so the whiteboard — and only the whiteboard, matched by name — gets a surface tab at session start before anything has touched it.

The stated reason is good: a user can be the first to draw on a board, whereas every other channel earns its tab on first use. But it is one deployment's answer compiled in, and the predicate's own comment says detection is by name *"so a deployment can't accidentally opt a non-board channel into the immediate-tab behavior"* — which also means a deployment cannot deliberately opt OUT.

## Why it matters

In a voice-first interview the session opens on the agent talking and nobody is going to draw first. A blank board sitting there makes the product read as a tool with a canvas bolted on rather than a conversation that can produce one. The right behaviour there is: no surface until something uses it.

A design-review session wants the opposite, and both are legitimate — which is the argument for configuration rather than a different hardcoded answer.

## Suggested shape

Let the host decide, e.g. a per-channel `TabUpFront` on the channel row (or an overlay input listing channels that tab immediately), defaulting to today's behaviour so nothing changes for existing deployments.

## Note for whoever picks this up

There is a second, easily-missed half: anything tracking surface presence separately must agree with the strip. Claiming a surface is present when no tab exists is how a group gets formed around a pane that is not on screen.

## Environment

MJ 5.51.0, `realtime-surface-tab-style.ts`. Currently patched locally to `return hasBeenUsed` — a reversal, not a fix, which is why this is filed as configuration.

Contributor guide

Open the contributing guide

Research direction

Start with realtime-surface-tab-style.ts and trace ShouldRegisterChannelTabUpFront(channelName, hasBeenUsed), then find the separate surface-presence tracking mentioned in the issue. Define how a deployment or channel row supplies the opt-in setting while preserving today’s default. Done means tab visibility and surface presence agree for configured and unused channels.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.