Published User Guide

RiserForge

RiserForge is a browser-based planner for choral riser layouts, roster assignment, and print-ready staging charts. This guide tracks the current app labels and workflows so you can move from a blank layout to a finished chart without guesswork.

Recommended Workflow

You do not need every control on every project. The most reliable path is to establish geometry first, create positions second, then bring in roster data and assignments after the layout is stable.

1

Set the structure

Use the top ribbon’s File and Layout tabs to define the base chart.

  • Add Title and Subtitle if they should appear on the chart or printout.
  • Choose Type: Generic, Floor/Flat, or one of the Wenger presets.
  • For non-Generic layouts, choose an Arrangement such as semicircular, horseshoe, winged, or straight.
2

Dial in rows and sections

Stay in the top ribbon to define how many rows and sections are available before you place people.

  • Adjust Total Rows, Ground Rows, Rows In Use, and Placement Bias.
  • On Generic layouts, the Shape tab controls front width, back width, and side angle.
  • On non-Generic non-flat layouts, the Sections tab controls section counts and section-pattern previews.
3

Create positions

Use the right sidebar shortcut or the Positions tab to generate a starting set of slots.

  • Generate X Positions uses the current roster count immediately.
  • Position Count Source can follow manual input or the live roster count.
  • Balance creates a row distribution, then you can edit each row manually.
4

Import and clean roster data

Open Roster Management from the right sidebar when the chart geometry is ready.

  • Import .csv, .xlsx, or .xls roster files.
  • Edit rows in place, switch height units between in and cm, and watch the warnings panel.
  • Use Group Manager to add, rename, reorder, recolor, or delete groups before applying changes.
5

Assign or disable

The default sidebar mode is assignment. Switch to disable mode only when you need intentionally open slots.

  • Click a sidebar chip or placed person to select them, then click an open position to assign.
  • Drag from the sidebar or chart to place and move singers directly.
  • Use Disable Positions to toggle unusable slots on or off.
6

Finish, print, and save

Once assignments are stable, style the chart, print what you need, and save the session file for reuse.

  • The Appearance tab controls riser display, placed-chip coloring, and counters.
  • Print can output the chart, the assignment list, or both.
  • Download in the File tab saves a full .riserforge.json working session.

Workspace Map

The app is organized into a left toolbar for viewing and output, a top ribbon for chart geometry, a right sidebar for roster work, and the center canvas for direct manipulation.

Left toolbar

Reset returns the session to defaults, Help opens this guide, Zoom and Fit control the view, Piano and Podium toggle stage objects, and Print opens output options.

Top ribbon

The ribbon tabs are File, Layout, Shape, Sections, Appearance, and Positions. Some tabs disable automatically when the selected layout type does not support them.

Right sidebar

This is the roster workspace. It includes Roster Management, the Generate Positions shortcut, roster styling controls, filters, sort tools, the unassigned list, and the assign/disable mode toggle.

Center canvas

The chart updates live as you edit counts and geometry. Assigned singers, disabled slots, layout counters, the piano, and the podium can all be managed directly on the canvas.

Control Reference

These are the controls most users touch during setup. The names below match the current UI so the guide stays aligned with what you see in the app.

File + Headers

The File tab holds chart headers and working-session persistence. Use Upload to load a saved session and Download to save the entire layout, roster, assignments, filters, counters, and stage-object state into a .riserforge.json file.

  • Title and Subtitle appear as chart headers.
  • Unsaved changes becomes a save shortcut whenever the session is dirty.
  • Saved ... shows the most recent successful save time when available.
Layout

The Layout tab establishes the overall row model. This is the right place to decide whether you are working with a freeform Generic geometry, a flat/floor layout, or a Wenger-based preset.

  • Type includes Generic, Floor/Flat, and the current Wenger Signature and Tourmaster variants.
  • Arrangement is available on non-Generic layouts.
  • Total Rows, Ground Rows, and Rows In Use control active depth.
  • Placement Bias decides whether unused rows are trimmed from the front or the back.
Shape + Sections

These tabs depend on the selected layout type. Shape is a Generic-only tool. The Sections tab is available on non-Generic layouts that use section-based arrangements.

  • Shape exposes side/front width, center width, and side-angle controls.
  • Sections lets you adjust section count and inspect the standard/reverse sequence preview.
  • On straight section patterns, the preview can become clickable so you can invert the alternation.
Appearance

The Appearance tab styles the chart itself. These settings affect how the risers and placed position chips appear, not how roster chips look in the sidebar.

  • Fill Color, Riser Tone, and Seam Lines style the platform drawing.
  • Color Source for placed chips can follow the roster chip style or use one static color.
  • Counter toggles control Total Riser Sections, Section Sequence, and Total Positions.
Positions

The Positions tab is where auto-balance and manual row editing meet. This is the core placement workspace once your geometry is roughly settled.

  • Position Count Source can use manual input or the live roster count.
  • Balance distributes counts across rows as a starting point.
  • Generic layouts expose per-row Spacing; non-Generic layouts use global position spacing plus row counts.
  • Edge Inset reserves space near row ends where applicable.
Direct manipulation

Not everything lives in a form. The canvas and stage objects support direct editing once the geometry exists.

  • Click or drag placed people to move them.
  • The piano can be shown, selected, moved, rotated, resized, and flipped.
  • The podium can be shown or hidden and repositioned vertically on the chart.
  • Zoom to Fit returns the view to the full drawing bounds.

Roster Tools

Roster work is split between the right sidebar and the full-screen-ish Roster Management dialog. The sidebar is for day-to-day filtering and assignment. The dialog is for bulk edits and imports.

Roster Management dialog

Use Add Row, Clear All Rows, Download Template, Download Current, and Import File to manage roster files and table data.

  • The table supports in-place editing for raw name, split first/last names, height, voice part, and group.
  • The compact toolbar includes quick sorting and a height-unit toggle for in and cm.
  • The warnings panel helps catch rows that need cleanup before you apply them to the live chart.
Group Manager

Groups are optional, but they are useful for sectional color-coding and filtering. Group setup happens in the lower-right area of the roster dialog.

  • Add Group creates a new group row with a default label and color.
  • Drag the grip handle to reorder groups.
  • Click the color swatch to choose a preset group color.
  • Clear Groups removes all groups from the pending roster draft.
Apply behavior

Apply Changes commits the edited roster to the live chart. If the existing chart already has assignments, RiserForge asks how you want to reconcile them.

  • Clear Assignments keeps the new roster and empties all chart placements.
  • Preserve Matches keeps assignments where the incoming roster still matches current people.
  • Close & Discard Changes exits the dialog without applying the draft.
Sidebar style, filter, and sort

The right sidebar affects the unassigned roster list only. This is separate from the Appearance tab, which controls the chart itself.

  • Style Options includes Color Mode, Chip Style, and Name Style.
  • Filter and Sort includes group filters, voice-part filters, sort key, and sort direction.
  • The subtitle under those trays always shows how many unassigned people remain after the current filters.

Assignment And Slot Management

Assignment is intentionally fast. Most day-to-day work happens without reopening the roster dialog once your roster data is in place.

Assign mode

Assign mode is the default sidebar state. It supports both click-based and drag-based placement.

  • Click a sidebar chip or a placed person to select them.
  • Click an open slot to assign the selected person.
  • Click the same placed person again to unassign them.
  • Drag from the sidebar or chart to place or move singers directly.
Disable mode

Switch the sidebar button from Disable Positions to Done Disabling when you need permanently open or blocked slots in the current layout.

  • Click any position chip while disable mode is active to toggle it between open and disabled.
  • Disabled positions are not assignable until reopened.
  • If a slot was assigned when you disable it, that assignment is cleared.
  • Dragging a singer onto a disabled slot reopens the slot and places the singer there.
Clear Assignments

The sidebar’s Clear Assignments button removes chart placements without deleting your roster rows, groups, or layout geometry.

Stage objects and view tools

Use the left toolbar to manage the view and nearby stage references while placing the ensemble.

  • Zoom and Zoom to Fit help when working on dense layouts.
  • Piano and Podium can be toggled independently.
  • Reset restores default session settings and discards unsaved changes after confirmation.

Printing And Output

The print dialog is designed for common rehearsal and performance needs: a visual chart, an assignment list, or both at once.

Print Options

Use the left-toolbar Print button to choose which report types should be printed.

  • Chart prints the current staging graphic.
  • Assigned Positions List prints a table containing position, status, person, voice, height, and group.
  • You can enable both outputs in the same print action.
Scope controls

The dialog includes output filters so the printed report matches what you need to hand out.

  • Disabled Positions on the chart can be Hidden or Shown.
  • The assignment sheet can include All Positions or Only Assigned Positions.
  • The chart and assignment list both use the current session state when you click Print.

Published References

The public docs include more than this guide. Use the pages below when you need release history or manufacturer source material for Wenger-based staging decisions.

Wenger PDF library

The Wenger Reference Library gathers the PDF files stored in this repository so they are easy to reach from GitHub Pages.

  • Signature layouts and technical sheet
  • Tourmaster layout references for multiple sizes
  • Tourmaster technical sheet and brochure material

Important Behavior Notes

A few results in RiserForge are intentionally solver-driven rather than strictly literal. These notes explain the cases that most often surprise first-time users.

Balancing rules
  • Auto-balance favors workable row patterns, not just the exact total you entered.
  • Some totals are mathematically unreachable for a given row structure, so the nearest feasible total may be used.
  • If auto-fit has to tighten spacing, the Positions tab shows a warning with the reduced spacing.
Manual row edits
  • You can still type the row counts you want after balancing.
  • Placement behavior follows geometry and windowing rules, so the drawn result may differ from a naive count expectation.
  • Total Positions reflects the number of slots that are actually rendered on the chart.
Layout-dependent controls
  • Shape is available only for Generic risers.
  • Sections is unavailable for Generic and Floor/Flat layouts.
  • Some riser styling controls, such as seam settings, disable automatically on layouts where they do not apply.
Roster expectations
  • Height units can be displayed and edited in inches or centimeters inside the roster workflow.
  • Filters in the sidebar affect which unassigned chips are shown, not who exists in the roster.
  • Download Current exports the pending roster table as it currently appears in the dialog.