> For the complete documentation index, see [llms.txt](https://docs.tempoweave.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tempoweave.com/help-by-menu-tabs/design-menu/section-assembly.md).

# Section Assembly

### What It Does

Section Assembly is a hierarchical composition tool that lets you build complex, multi-section designs from the sections you've marked with Section Markers. Instead of manually threading and treadling hundreds or thousands of threads, you organize your sections into a tree structure with repeat counts, and TempoWeave generates the complete expanded draft for you.

Think of it as a recipe builder for your design: "Start with the border (repeat 1), then the pattern (repeat 6), then the center (repeat 1), then the pattern again (repeat 6), then the border (repeat 1)." Section Assembly turns that recipe into a full draft with all the threading, treadling, and colors expanded.

***

### Location

* **Ribbon**: Design tab > Section Assembly group > Section Assembly button (toggle)

The Section Assembly panel opens as a dockable tool window on the side of your workspace.

***

### The Panel

#### Tabs

The panel has tabs for **Warp Assembly**, **Weft Assembly**, and optionally **Color Assembly**.

Each assembly tab has two panes:

#### Available Sections (Top Pane)

A read-only list of all sections you've marked using Section Markers. Each entry shows:

* **Name** — The section name you assigned
* **Range** — The thread/pick range (e.g., "1–24")
* **Threads** — The number of threads in the section

Right-click options:

* **Add to Assembly** — Adds the section to the assembly tree below
* **Rename Section** — Change the section name, range, density override, or notes
* **Delete Section** — Remove the section
* **Duplicate Section…** — Open the Section Editor prefilled from the selected section. Change the starting thread; the ending thread auto-tracks to keep the source's thread count (you can override the end manually). The source's density override and notes are copied to the new section. Faster than copy/paste-ing a range on the canvas when you need a second section of the same length elsewhere.

#### Assembly Tree (Bottom Pane)

The hierarchical tree where you build your design structure. This is where the composition happens. The tree can contain two types of nodes:

**Groups** — Folder-like containers that can hold sections or other groups. Each group has a repeat count — the entire group (all its children) repeats that many times.

**Sections** — References to your available sections, each with its own repeat count and thread range.

Columns shown:

* **Name** — Section or group name. This column auto-sizes to fill the panel so nested group names stay readable; the narrower columns remember any width you set.
* **Use** — A checkbox controlling whether this item is included when you Generate (see *Choosing What Generates* below). Everything starts checked.
* **Repeat** — How many times this node repeats. Click once to edit — the value comes pre-selected, so just type the new number and press Enter.
* **Order** — The node's position among its siblings. Click once, type a number, press Enter — the node moves to that position and the siblings renumber automatically.
* **Location** — Thread range (for sections)
* **Threads** / **Picks** — Total thread count including all repeats. Every group row — including the top-level group — totals its children. (Totals show the full assembly regardless of Use checkboxes.)
* **Width** / **Length** — Finished width or length of the node, computed from its thread count and the project's EPI/PPI.

#### Choosing What Generates (Use Checkboxes)

Every row in the assembly tree has a **Use** checkbox. When you click **Generate**, only the checked items are woven into the result — unchecked items (and everything inside them) are skipped. Since everything starts checked, drafts behave exactly as they always have until you start unchecking.

* **Groups cascade** — Checking or unchecking a group checks or unchecks everything inside it. A group with a mix of checked and unchecked children shows a dash (indeterminate) instead of a checkmark.
* **Select All / Deselect All** — Buttons in the assembly header row set every checkbox at once. Deselect All is the quick way to start composing a fresh combination.
* The checkbox state saves with your file, and older versions of TempoWeave open the file cleanly (they simply generate everything, as before).

This turns one draft into a whole library: keep every border, stripe, and motif assembled in an organized tree, then check off just the ones you want for this project and Generate.

#### Save Checked as Group

Once you've checked a combination you like, keep it: click **Save Checked…** (header row) or right-click > **Save Checked as Group**. TempoWeave copies the checked items — in order, with their repeats, nested groups, and mirror flags — into a new named group under a **Generated Drafts** group at the bottom of the assembly, and prompts you to name it (e.g., "EAT towel for Carol").

* Saved combinations start **unchecked**, so saving never changes what Generate produces.
* To weave a saved combination later: **Deselect All**, check the saved group, **Generate**.
* Saved combinations are independent copies — editing a repeat inside one doesn't change the original rows (both still point at the same threading, so structural edits to the source sections flow through everywhere).
* You can rename or delete "Generated Drafts" and the groups inside it like any other group.

#### Toolbar

* **Add Group** — Create a new group node (prompts for name and repeat count)
* **Add Section** — Add a section from the available list
* **Move Up / Move Down** — Reorder nodes within the tree
* **Del** — Remove the selected entry. The button serves **both lists**: it acts on whichever tree you clicked last — press it after clicking an assembly row and it removes that row; press it after clicking a section under Available Sections and it deletes the section (same as right-click → Delete Section). Every delete asks for confirmation by name first, and deleting an available section that the assembly still references warns you with the use count (the assembly entries keep working — they carry their own copy of the range).
* **Refresh** — Update the display
* **Generate** — Create the expanded draft from the assembly
* **Print** — Print the assembly structure as a report

***

### Building an Assembly

#### Adding Groups

Click **Add Group** to create a container. Give it a name (like "Full Pattern" or "Border Set") and a repeat count. Groups can be nested inside other groups for multi-level organization.

#### Adding Sections

Select a section from Available Sections and click **Add to Assembly** (or use the Add Section toolbar button). Each section added to the tree includes:

* **Name** — From the available section
* **Location** — The thread range to copy from (editable — you can adjust the range)
* **Repeat** — How many times to repeat this section (default 1)

#### Editing Nodes

Right-click any node in the tree (or double-click) to edit:

* **Name** — Change the display name
* **Repeat** — Change the repeat count (1–1,000+)
* **Location** — For sections, change the source thread range

#### Organizing

Use **Move Up** and **Move Down** to reorder nodes, or type a new position in the **Order** column. To copy or rearrange whole groups, right-click a node:

* **Copy** then **Paste** — duplicate a group or section anywhere in the tree. Paste drops *inside* the selected group, or as a sibling of a selected section.
* **Cut** then **Paste** — move a group or section to a new spot (re-parent it).
* **Duplicate** — make an in-place copy of the selected node and everything inside it.

The clipboard carries across all four tabs, so you can copy a group from Warp to Weft (or Warp Color to Weft Color), and pasting a group brings its whole sub-tree along.

#### Multi-Select

You can select several rows at once: **Cmd-click** (Mac) or **Ctrl-click** (Windows) adds rows one at a time, **Shift-click** selects a range. The selected rows must be siblings — items in the same group — for the bulk operations to apply (a message reminds you if the selection spans groups).

Operations that act on the whole selection:

* **Delete** — removes all selected rows
* **Copy / Cut / Paste** — carries the whole run, in order; cut-paste moves them all
* **Duplicate** — copies each selected row
* **Toggle Mirror** — flips every selected row
* **Move Up / Move Down** — moves the selection as one block
* **Insert Mirrored Copy Below** — mirrors the selected *run* (see Mirroring below)

Note that row selection (highlighting) and the **Use** checkboxes are separate things: selection is for editing operations, checkboxes decide what generates.

#### Mirroring

The Assembly tree supports per-reference mirroring so you can collapse symmetric border patterns (Davison's *Squares with Borders* — Norse Kitchen, etc.) to a single source section + a mirrored copy. Right-click any entry to:

* **Toggle Mirror** — Flip the mirror flag on the selected entry in place.
* **Insert Mirrored Copy Below** — Clone the selected entry as the next sibling with the mirror flag forced on. With several sibling rows selected, the mirrored copies insert after the last one in *reverse* order — select A, B, C and you get A, B, C, C′, B′, A′, a full symmetric layout in one action.

A `↔` glyph and a `(mirrored)` suffix on the row name make mirrored entries visible at a glance. The underlying Available Section is unchanged, so the same source can appear forward and mirrored in the same assembly (edit the source once, both copies update).

**Pivot suppression — only at a true fold.** A mirrored leaf that directly follows the forward pass of the *same* section emits its threads in reverse and drops the first reversed thread — the fold-line pivot. Forward + mirror back-to-back produces `1,2,3,4,3,2,1` (pivot 4 appears once at the fold). A mirrored section anywhere *else* — standing alone, or following a different section — is a plain reverse: every thread emits (`1,2,3,4` mirrored alone gives `4,3,2,1`). Only the first repeat of a mirrored entry can be a fold; later repeats emit the full reversed range.

**Group mirror semantics.** When a group is mirrored, the engine walks the children in **reverse order** AND **skips the first one after reversal** — that's the last child in forward order and acts as the group's fold-line pivot. Each surviving child still applies its own mirror flag through XOR with the parent's, so wrapping a group once and dropping it forward + mirrored gives a textbook-correct symmetric layout without duplicating the centerpiece. Worked example for Norse Kitchen:

```
Selvage + Border + Corner Block + Repeat × 10 + mirror( Corner Block + Border + Selvage )
                                                  ↑
                                                  Corner Block is the pivot — skipped
                                                  in the mirrored group, then Border and
                                                  Selvage emit reversed with their own
                                                  pivots dropped.
```

The mirror flag round-trips through TWA save/reload. Older versions of TempoWeave read newer TWAs cleanly — they just ignore the mirror flag and render every entry forward.

> **Mirror works in all three trees** — Warp, Weft, and Color Assembly. Russell hadn't explored Color Assembly yet, but the same per-reference reverse rule applies (the order of color blocks reverses inside a mirrored group).

***

### Color Assembly (Optional)

The Color Assembly tab lets you define a separate color structure that overrides the colors from the source sections during generation. This is useful when you want the same structural sections but with different color arrangements.

* **Add Color** — Pick a color from the palette and set a repeat count
* **Add Color Group** — Create a group for organizing color sequences
* **Copy Structure** — Copies the warp or weft assembly tree structure into the color tree as a starting template

If the Color Assembly is populated, it overrides section colors during generation. If left empty, the source section colors are used as-is.

The color trees have the same **Use** checkboxes, **Select All / Deselect All / Save Checked…** buttons, and multi-select support as the assembly trees — so you can keep several color sequences on hand and check off the one to use.

***

### Generating the Draft

The **Generate** button is where everything comes together. It reads your assembly trees and creates a new expanded draft:

#### What Happens During Generation

1. **Flatten the tree** — Groups are expanded by repeating their children according to repeat counts. Nested groups multiply: a group repeated 3× containing a section repeated 2× produces 6 copies of that section. Items with their **Use** checkbox off are skipped, along with everything inside them.
2. **Build the threading** — For each warp section in the flattened list, the threading from the source range is copied to the output, tiled according to the repeat count.
3. **Build the treadling** — Same process for weft sections — each section's treadling is copied and repeated.
4. **Copy the tie-up** — The tie-up from your current draft is used unchanged.
5. **Apply colors** — Either from the Color Assembly (if populated) or from the source sections.
6. **Create the output** — A new temporary WIF file is created and opened as an unsaved preview. You can review, edit, and save it.
7. **Keep the section names** — The generated draft carries named section markers at their exact output positions. Repeated sections get one marker per repeat ("Body 1/9" through "Body 9/9"), and mirrored occurrences are tagged "(mirrored)" — so the section bands, the Weave Assistant's section list, the Thread Assistant, and printed reports all speak in your plan's names instead of thread numbers. (With very many repeats — more than 85 markers per axis — each entry collapses to a single span like "Body ×60" instead.)

A notification shows the result: "Generated: XXX warp × YYY weft threads."

***

### How to Use It

1. **Mark your sections** using Section Markers (press M)
2. Open **Section Assembly** from the Design tab
3. Switch to the **Warp Assembly** tab
4. Build your warp structure:
   * Add groups for organizational levels
   * Add sections from the Available list
   * Set repeat counts
5. Switch to the **Weft Assembly** tab and build the weft structure
6. (Optional) Set up Color Assembly for custom color overrides
7. Click **Generate**
8. Review the generated draft
9. Save if satisfied

***

### Step-by-Step Example: Assembling a Table Runner

You have a draft with marked sections: "Selvedge" (threads 1–6), "Border" (threads 7–20), "Pattern" (threads 21–40):

**Warp Assembly:**

1. Add Section: "Selvedge" (repeat 1)
2. Add Group: "Body" (repeat 1)
   * Add Section: "Border" (repeat 1)
   * Add Section: "Pattern" (repeat 3)
   * Add Section: "Border" (repeat 1)
3. Add Section: "Selvedge" (repeat 1)

**Weft Assembly:**

1. Add Section: "Header" (repeat 1)
2. Add Group: "Pattern Repeat" (repeat 8)
   * Add Section: "Pattern Unit" (repeat 1)
3. Add Section: "Footer" (repeat 1)

Click **Generate** — the result is a complete table runner draft with the border repeated on both sides of 3 pattern repeats, 8 treadling repeats, and selvedge threads on each edge.

### Step-by-Step Example: Quick Pattern Variations

You want to try different numbers of pattern repeats without re-threading:

1. Set up your assembly with sections and groups
2. Generate with Pattern repeat set to 4 — review the result
3. Go back to the assembly, change Pattern repeat to 6 — generate again
4. Compare the two drafts to decide which proportion looks best
5. Save the version you prefer

***

### Tips

* **Mark sections first** — You must have sections marked before you can assemble them. Plan your section boundaries carefully.
* **Groups multiply** — A group with repeat 3 containing a section with repeat 2 produces 6 total copies. Repeats at every level compound.
* **Edit locations** — You can change a section's thread range in the assembly without changing the original section marker. This lets you reference different portions of the same section.
* **Generate creates a preview** — The generated file opens as unsaved, so you can review before committing. If you don't like the result, just close it and adjust your assembly.
* **Print for documentation** — The Print button creates a readable report of your assembly structure with thread counts — useful for project records.
* **Color Assembly is optional** — Only set up Color Assembly if you need different colors than what's in your source sections. Most of the time, the section colors work fine.
* **Thread limits apply** — The generated draft is subject to the same limits as any draft (3,500 warp threads, 40,000 weft picks). The Threads column in the tree shows running totals so you can plan accordingly.
* **Edits are tracked** — Changes made in Section Assembly mark the draft as modified, so you'll get the usual save prompt before closing instead of losing the work.
* **One draft, many projects** — Keep a "library" draft with all your motifs assembled and organized in groups (an alphabet, a set of borders, icons). For each project: Deselect All, check the pieces you want, Generate, and Save Checked to keep the combination. Great for teaching — share one template file and let each student build their own combinations from it.

***

### Quick Reference

| Action                        | How                                                                                              |
| ----------------------------- | ------------------------------------------------------------------------------------------------ |
| Open panel                    | Design tab > Section Assembly (toggle)                                                           |
| Add Group                     | Toolbar button or right-click                                                                    |
| Add Section                   | Select from Available, add to tree                                                               |
| Edit node                     | Right-click > Edit (or double-click)                                                             |
| Edit Repeat / Order           | Single click the cell, type, Enter                                                               |
| Include/exclude from Generate | Use checkbox (Select All / Deselect All for bulk)                                                |
| Save a checked combination    | Save Checked… button or right-click > Save Checked as Group                                      |
| Select multiple rows          | Cmd/Ctrl-click or Shift-click (siblings)                                                         |
| Reorder                       | Move Up / Move Down (moves a multi-selection as a block), or type a position in the Order column |
| Copy / Cut / Paste            | Right-click > Copy or Cut, select a target, right-click > Paste                                  |
| Duplicate node                | Right-click > Duplicate                                                                          |
| Generate                      | Toolbar Generate button — checked items only                                                     |
| Print                         | Toolbar Print button                                                                             |

| Tree Node Type | Purpose                                                    |
| -------------- | ---------------------------------------------------------- |
| Group          | Container with repeat count — holds sections or sub-groups |
| Section        | Reference to a marked section with repeat count and range  |

| Assembly Tab   | Controls                                |
| -------------- | --------------------------------------- |
| Warp Assembly  | Warp section organization and repeats   |
| Weft Assembly  | Weft section organization and repeats   |
| Color Assembly | Optional color overrides for generation |
