diff --git a/gui/app/public/i18n/en/translation.ftl b/gui/app/public/i18n/en/translation.ftl
index 58be90a816..d39f459e0c 100644
--- a/gui/app/public/i18n/en/translation.ftl
+++ b/gui/app/public/i18n/en/translation.ftl
@@ -437,6 +437,17 @@ tracker_selection_menu-LEFT_HAND = { -tracker_selection-part } left hand?
tracker_selection_menu-LEFT_UPPER_LEG = { -tracker_selection-part } left thigh?
tracker_selection_menu-LEFT_LOWER_LEG = { -tracker_selection-part } left ankle?
tracker_selection_menu-LEFT_FOOT = { -tracker_selection-part } left foot?
+tracker_selection_menu-LEFT_BIG_TOE = { -tracker_selection-part } left big toe?
+tracker_selection_menu-LEFT_INDEX_TOE = { -tracker_selection-part } left index toe?
+tracker_selection_menu-LEFT_MIDDLE_TOE = { -tracker_selection-part } left middle toe?
+tracker_selection_menu-LEFT_RING_TOE = { -tracker_selection-part } left ring toe?
+tracker_selection_menu-LEFT_LITTLE_TOE = { -tracker_selection-part } left little toe?
+tracker_selection_menu-RIGHT_BIG_TOE = { -tracker_selection-part } right big toe?
+tracker_selection_menu-RIGHT_INDEX_TOE = { -tracker_selection-part } right index toe?
+tracker_selection_menu-RIGHT_MIDDLE_TOE = { -tracker_selection-part } right middle toe?
+tracker_selection_menu-RIGHT_RING_TOE = { -tracker_selection-part } right ring toe?
+tracker_selection_menu-RIGHT_LITTLE_TOE = { -tracker_selection-part } right little toe?
+
tracker_selection_menu-unassigned = Unassigned Trackers
tracker_selection_menu-assigned = Assigned Trackers
@@ -1193,6 +1204,42 @@ onboarding-assign_trackers-warning-WAIST = Waist is assigned but you need { $una
*[unknown] Unknown unassigned body part
} to also be assigned!
+onboarding-assign_trackers-warning-LEFT_BIG_TOE = Left Big Toe is assigned but you need { $unassigned ->
+ [0] the left foot
+ *[unknown] Unknown unassigned body part
+} to also be assigned!
+onboarding-assign_trackers-warning-LEFT_INDEX_TOE = Left Index Toe is assigned but you need { $unassigned ->
+ [0] the left foot
+ *[unknown] Unknown unassigned body part
+} to also be assigned!
+onboarding-assign_trackers-warning-LEFT_MIDDLE_TOE = Left Middle Toe is assigned but you need { $unassigned ->
+ [0] the left foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+onboarding-assign_trackers-warning-LEFT_RING_TOE = Left Ring Toe is assigned but you need { $unassigned ->
+ [0] the left foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+onboarding-assign_trackers-warning-LEFT_LITTLE_TOE = Left Little Toe is assigned but you need { $unassigned ->
+ [0] the left foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+onboarding-assign_trackers-warning-RIGHT_BIG_TOE = Left Big Toe is assigned but you need { $unassigned ->
+ [0] the right foot
+ *[unknown] Unknown unassigned body part
+} to also be assigned!
+onboarding-assign_trackers-warning-RIGHT_INDEX_TOE = Right Index Toe is assigned but you need { $unassigned ->
+ [0] the right foot
+ *[unknown] Unknown unassigned body part
+} to also be assigned!
+onboarding-assign_trackers-warning-RIGHT_MIDDLE_TOE = Right Middle Toe is assigned but you need { $unassigned ->
+ [0] the right foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+onboarding-assign_trackers-warning-RIGHT_RING_TOE = Right Ring Toe is assigned but you need { $unassigned ->
+ [0] the right foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+onboarding-assign_trackers-warning-RIGHT_LITTLE_TOE = Right Little Toe is assigned but you need { $unassigned ->
+ [0] the right foot
+ *[unknown] Unknown unassigned body part} to also be assigned!
+
+
## Tracker mounting method choose
onboarding-choose_mounting = What mounting calibration method to use?
# Multiline text
@@ -1704,3 +1751,15 @@ toolbar-mounting_calibration-fingers = Fingers
toolbar-drift_reset = Drift Reset
toolbar-assigned_trackers = {$count} trackers assigned
toolbar-unassigned_trackers = {$count} trackers unassigned
+body_part-LEFT_BIG_TOE = Left Big Toe
+body_part-LEFT_INDEX_TOE = Left Index Toe
+body_part-LEFT_MIDDLE_TOE = Left Middle Toe
+body_part-LEFT_RING_TOE = Left Ring Toe
+body_part-LEFT_LITTLE_TOE = Left Little Toe
+
+body_part-RIGHT_TOES = Right Toes
+body_part-RIGHT_BIG_TOE = Right Big Toe
+body_part-RIGHT_INDEX_TOE = Right Index Toe
+body_part-RIGHT_MIDDLE_TOE = Right Middle Toe
+body_part-RIGHT_RING_TOE = Right Ring Toe
+body_part-RIGHT_LITTLE_TOE = Right Little Toe
diff --git a/gui/app/src/components/Toolbar.tsx b/gui/app/src/components/Toolbar.tsx
index 9a5c8813d0..dcae37cd2b 100644
--- a/gui/app/src/components/Toolbar.tsx
+++ b/gui/app/src/components/Toolbar.tsx
@@ -147,7 +147,7 @@ export function Toolbar() {
const { visibleGroups, groupVisibility } = useMemo(() => {
const groupVisibility = Object.keys(BODY_PARTS_GROUPS)
- .filter((k) => ['fingers'].includes(k))
+ .filter((k) => ['fingers', 'toes'].includes(k))
.reduce(
(curr, key) => {
const group = key as MountingResetGroup;
@@ -200,6 +200,13 @@ export function Toolbar() {
group={'feet'}
customName="toolbar-mounting_calibration-feet"
/>
+ {groupVisibility['toes'] && (
+
+ )}
{groupVisibility['fingers'] && (
void;
+ onToesSelected?: (side: 'left' | 'right') => void;
highlightedRoles: BodyPart[];
mirror: boolean;
}) {
@@ -114,7 +116,10 @@ export function BodyInteractions({
...slotPosition,
id: slot.id,
hidden:
- variant === 'tracker-select' && !controlsPosIds.includes(slot.id),
+ variant === 'tracker-select' &&
+ !controlsPosIds.includes(slot.id) &&
+ slot.id !== 'left-toes' &&
+ slot.id !== 'right-toes',
buttonOffset: {
left: canvasBox.left - personBox.left,
top: canvasBox.top - personBox.top,
@@ -211,8 +216,14 @@ export function BodyInteractions({
({ top, left, height, width, id, hidden, buttonOffset }) => (