Skip to content

Let candidates save and switch between named session setups #591

Open

Description

@domin67

Problem

CodeTrial currently remembers only the most recently used session settings.

Try Again can restore the settings from one past attempt, but neither behavior
allows candidates to keep multiple reusable configurations.

Candidates who practice under different interview scenarios must repeatedly
reconfigure the lobby whenever they switch between them.

For example, a candidate may regularly use:

  • a 30-minute coding-only session using the editor;
  • a 60-minute coding-and-behavioral session using the whiteboard; and
  • a 45-minute coding-and-behavioral session using the editor, with code
    execution and syntax highlighting disabled.

Recreating these combinations requires changing Session length, Interview
format, and several Editor options each time.

Desired outcome

Allow candidates to save the current session configuration under a name.

For example, a candidate could save:

  • Quick coding
  • Full mock
  • Whiteboard practice

Candidates can switch between saved setups by selecting a different name from
the list. The corresponding session settings should update immediately.

Proposed first scope

Add a browser-local Saved setups control to the "Set up your session" panel.

A saved setup would include only controls already shown in that panel:

  • session duration;
  • coding-only or coding-and-behavioral loop;
  • editor or whiteboard mode;
  • example drawing and candidate-led coding;
  • editor options.

Candidates should be able to save, switch between, update, and delete saved
setups. Selecting a different setup name should immediately restore its
settings.

The UI should clearly state that saved setups are kept only in the current
browser.

Prototype

A local prototype demonstrates the proposed interaction.

The Presets control opens the Saved setups dialog. Candidates can save the
current settings under a name, select a saved name to immediately restore its
settings, or delete a saved setup.

Lobby

Image

Saved setups

Image

Acceptance criteria

  • Candidates can save multiple session configurations under different names.
  • Selecting a saved setup immediately restores its Session length, Interview
    format, and Editor options.
  • Saving with an existing name updates that setup instead of creating a
    duplicate.
  • Switching setups does not change the selected problem, difficulty filters,
    or optional interview context.
  • Saved setups remain available after reloading the lobby.
  • Existing last-used-setting and Try Again behavior remains unchanged.

Relationship to existing work

This is a follow-up to issue #207 and PR #269, not a replacement for them.
Those changes remember the latest lobby settings and restore settings from a
past attempt. This proposal adds multiple user-named configurations.

If this scope fits the project's lobby workflow direction, please assign the
issue to me. I will wait for scope confirmation before opening a pull request.

Activity

  1. jserv commented on Nov 5, 2026

    @jserv
    Contributor

    @domin67 The scope fits: a browser-local list of named setups over the controls the "Set up your session" panel already shows, with last-used settings and Try Again unchanged.

    Keep each setup as one record under a single storage key and reuse selectedEditorOptions in web/app.js and saveEditorOptions in web/editor-options.js, so the option list is not copied. Two open PRs touch the same panel: #590 adds an Indentation select with its own stored value, and #584 changes how the session length is preselected. Include whichever has merged when you open yours, and say in the PR how a saved setup treats a control that did not exist when it was saved (keep the current value).

    Tests: save, update under an existing name, delete, reload, and switching leaves the problem, filters and interview context untouched. Open the pull request with Closes #591.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions