This page demonstrates the <versioned> custom tags that display version-specific content based on the user’s version preference (v1/v2).
orientation="vertical"<setting>, <pin>, etc.{::nomarkdown} directives)To use versioned tags with markdown support, you must wrap the HTML tags with Kramdown’s {::nomarkdown} and {:/nomarkdown} directives:
{::nomarkdown}
<versioned orientation="horizontal">
<v1>
{:/nomarkdown}
V1 content here with **bold** and _italic_ text, lists, etc.
{::nomarkdown}
</v1>
<v2>
{:/nomarkdown}
V2 content here with **bold** and _italic_ text, lists, etc.
{::nomarkdown}
</v2>
</versioned>
{:/nomarkdown}
Important:
{::nomarkdown} before opening HTML tags{:/nomarkdown} after opening tags to re-enable markdown processing{:/nomarkdown} and before {::nomarkdown} for proper markdown parsing<versioned> attributes:
orientation="horizontal" (default) - Side-by-side layoutorientation="vertical" - Stacked layoutWhen using the {::nomarkdown} / {:/nomarkdown} pattern, you can use all standard markdown features:
**bold** → bold_italic_ → italic- or numbered lists with 1.inline code|[text](url)<setting>, <pin>, etc.If you omit the {::nomarkdown} / {:/nomarkdown} wrappers, the content will be treated as raw HTML and markdown syntax will NOT be processed (you’ll see literal **text** instead of bold).
{::nomarkdown}
<versioned orientation="horizontal">
<v1>
{:/nomarkdown}
**V1 Configuration:**
- Setting A: `value1`
- Setting B: `value2`
- Setting C: `value3`
{::nomarkdown}
</v1>
<v2>
{:/nomarkdown}
**V2 Configuration:**
- Setting A: `new_value1`
- Setting B: `new_value2`
- Setting C: `new_value3`
{::nomarkdown}
</v2>
</versioned>
{:/nomarkdown}
{::nomarkdown}
<versioned orientation="vertical">
<v1>
{:/nomarkdown}
**V1 Config File:**
\```
alpha_steps_per_mm 80
alpha_max_rate 30000
alpha_current 1.5
\```
{::nomarkdown}
</v1>
<v2>
{:/nomarkdown}
**V2 Config File:**
\```
[actuator.alpha]
steps_per_mm = 80
max_rate = 30000
current = 1.5
\```
{::nomarkdown}
</v2>
</versioned>
{:/nomarkdown}
{::nomarkdown}
<versioned>
<v1>
{:/nomarkdown}
Configure the thermistor pin: <setting v1="temperature_control.hotend.thermistor_pin" v2="thermistor_pin"></setting>
Use pin <pin>1.24</pin> for the X-axis endstop.
{::nomarkdown}
</v1>
<v2>
{:/nomarkdown}
Configure the thermistor pin: <setting v1="temperature_control.hotend.thermistor_pin" v2="thermistor_pin"></setting>
Use pin <pin>1.24</pin> for the X-axis endstop (same hardware).
{::nomarkdown}
</v2>
</versioned>
{:/nomarkdown}
{::nomarkdown}
<versioned orientation="horizontal">
<v1>
{:/nomarkdown}
| Setting | Value |
|---------|-------|
| Steps | 80 |
| Rate | 30000 |
{::nomarkdown}
</v1>
<v2>
{:/nomarkdown}
| Setting | Value |
|---------|-------|
| Steps | 80 |
| Rate | 30000 |
{::nomarkdown}
</v2>
</versioned>
{:/nomarkdown}
If you have plain text with no markdown formatting, you can omit the Kramdown directives:
<versioned>
<v1>This is plain V1 text with no formatting.</v1>
<v2>This is plain V2 text with no formatting.</v2>
</versioned>
But it’s recommended to always use the {::nomarkdown} pattern for consistency and to enable markdown if you need to add formatting later.
This content is only shown for Smoothieware V1.
V1 uses the old configuration format with simple key-value pairs. For example, to configure a stepper motor, you’d use settings like:
alpha_steps_per_mm: steps per millimeteralpha_max_rate: maximum speedalpha_current: motor currentThis content is only shown for Smoothieware V2.
V2 uses a hierarchical configuration format with INI-style sections. For example, to configure a stepper motor, you’d use settings like:
actuator.alpha.steps_per_mm: steps per millimeteractuator.alpha.max_rate: maximum speedactuator.alpha.current: motor currentIn V1, configure your thermistor pin with
The pin assignment for the X-axis endstop is typically
In V2, configure your thermistor pin with
The pin assignment for the X-axis endstop is typically
V1 Network Configuration:
In Smoothieware V1, network settings are configured in a flat structure:
network.enable true - Enable network interfacenetwork.webserver.enable true - Enable web servernetwork.ip_address 192.168.1.100 - Static IP addressnetwork.ip_mask 255.255.255.0 - Subnet maskAll settings are in the root config file.
V2 Network Configuration:
In Smoothieware V2, network settings use sections:
[network]
enable = true
webserver = true
ip_address = 192.168.1.100
netmask = 255.255.255.0
Configuration is organized hierarchically with INI-style sections.
V1 Endstop Configuration:
Endstops in V1 are configured with settings like:
Simple and flat configuration structure.
V2 Endstop Configuration:
Endstops in V2 use the endstop module with sections:
[endstop.alpha]
limit_min.pin = 1.24
limit_max.pin = 1.25
home_dir = -1
retract = 5
More structured and modular approach with clear hierarchies.
V1 Pin Modifiers:
| Modifier | Meaning |
|---|---|
! |
Inverted (active low) |
o |
Open-drain output |
^ |
Pull-up enabled (default) |
v |
Pull-down enabled |
- |
No pull resistor |
Example:
V2 Pin Modifiers:
| Modifier | Meaning |
|---|---|
! |
Inverted (active low) |
o |
Open-drain output |
^ |
Pull-up enabled (default) |
v |
Pull-down enabled |
- |
No pull resistor |
Same pin modifier syntax as V1. Example:
Pin configuration syntax is compatible between versions!
Try changing the version selector in the header to see how the content changes:
🔶 You are viewing V1 content 🔶
The version selector should be set to “V1” or “Both” to see this content.
If you switch to “V2”, this content will hide and only the V2 content will be visible.
🔷 You are viewing V2 content 🔷
The version selector should be set to “V2” or “Both” to see this content.
If you switch to “V1”, this content will hide and only the V1 content will be visible.
The <versioned> tag supports two orientations:
<versioned> or <versioned orientation="horizontal">
<versioned orientation="vertical">
The visibility is controlled by:
This versioned block has an empty V1 section. This might happen when a feature is V2-only.
This versioned block has an empty V2 section. This might happen when a feature is V1-only and deprecated in V2.
Short V1 text.
Short V2 text.
You can have multiple versioned blocks on the same page:
First block - V1 content about motors.
First block - V2 content about actuators.
Second block - V1 content about temperature control.
Second block - V2 content about thermistor modules.
Third block - V1 content about network settings.
Third block - V2 content about network configuration.
All blocks respond to the version selector simultaneously!
Use the version selector in the header to test the dynamic visibility behavior.