Skip to content

Component Publishing

Overview

ARD uses an immutable component system with a publishing workflow to ensure data integrity, enable seamless collaboration, and maintain complete version history. This approach means you'll never lose data and teammates can work simultaneously without conflicts.

Component Immutability

Core Principle

Every component in the system is immutable. Once created, a component can never be modified. Any change to a component creates a new version with the changes applied.

Why Immutability?

  • Data Preservation: You never lose previous configurations. Every version is permanently stored.
  • Conflict-Free Collaboration: Multiple users can work on the same component simultaneously without overwriting each other's work.
  • Simulation Reproducibility: If you need to reference a vehicle from a previous simulation, it will always be available exactly as it was.

Cascading Updates

When you edit a component, the immutability principle cascades upward through the component hierarchy:

graph TD
    A[Edit Chassis] --> B[New Chassis Created]
    B --> C[New Vehicle Created]
    C --> D[Vehicle References New Chassis]

    %% Dark-mode friendly styles
    style A fill:#2f5d8a,stroke:#9fbce0,color:#e6eef7
    style B fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2
    style C fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2

Example: If you edit a chassis component: 1. A new chassis component is created with your changes 2. A new vehicle component is automatically created 3. The new vehicle references the new chassis 4. The original chassis and vehicle remain unchanged in the system

This automatic "bubble up" behavior occurs when you click Save.

Publishing Workflow

Published vs Unpublished Components

Due to immutability, you will in turn start to create many components. To help manage all of this, we've come up with the publishing system. The publishing system manages which components appear in your setup selector and helps teams coordinate on stable configurations.

Published Components: - Appear in the component setup selector by default (you can filter to show all unpublished components too) - Signal to your team: "This is a version I'm happy with" - Serve as reference points - Indicated by a green ID badge

Unpublished Components: - Created automatically when you edit a published component - Work-in-progress versions - Not shown in the setup selector by default (but accessible via version history or altering the search filters) - Indicated by an orange ID badge

Reading the ID Badge

The ID badge next to each component name visually encodes three states: color (green = published, orange = unpublished), border style (solid = latest version, dashed = older version), and an "A" suffix for archived components. Hover over any badge for full details.

Publishing Options

When you're ready to publish a component, you have two options:

Publish Options

Option 1: Publish to Same Branch

Publishes your changes under the existing component name.

graph LR
    A[ARB Stiff<br/>PUBLISHED] --> B[Edit]
    B --> C[ARB Stiff<br/>UNPUBLISHED]
    C --> D[Publish to<br/>Same Branch]
    D --> E[ARB Stiff<br/>PUBLISHED<br/>new version]

    style A fill:#2f5d8a,stroke:#9fbce0,color:#e6eef7
    style C fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2
    style E fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2

Result: - Keeps the same component name - Unpublishes the previous published version (still accessible in history) - Your new version becomes the published version

Use when: You're iterating on the same configuration and want to update the team's default version.

Option 2: Create New Branch

Publishes your changes as a new component with a new name.

graph LR
    A[Chassis v1<br/>PUBLISHED] --> B[Edit]
    B --> C[ARB Stiff<br/>UNPUBLISHED]
    C --> D[Publish to<br/>New Branch]
    D --> E[ARB Stiff<br/>PUBLISHED<br/>still published]
    D --> F[ARB Soft<br/>PUBLISHED<br/>new component]

    style A fill:#2f5d8a,stroke:#9fbce0,color:#e6eef7
    style C fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2
    style E fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2
    style F fill:#1f6f5b,stroke:#7fd1bd,color:#e8f6f2

Result: - Creates a new published component in the setup selector - You choose the name for the new branch - Original published component remains published and unchanged

Use when: You're creating a variant configuration that should coexist with the original.

Version History Access

Every published component includes a version history dropdown showing all previous versions (both published and unpublished).

Components are identified by their ID, which is displayed next to each version in the history. If you know you want to return to a specific configuration, remember its ID.

Version History

Collaborative Workflows

Scenario: Two Teammates Editing Simultaneously

If two teammates wish to edit the same vehicle at once, this is totally okay.

Key Points: - Each teammate creates their own unpublished version of the vehicle - No conflicts or overwriting occurs - First to publish updates the main branch - Second person can publish to new branch or choose to publish over the first person's version

Initial Component State

When you load a vehicle from a template: - All components start as published - They appear immediately in the setup selector - Any edits will create new unpublished versions

Best Practices

Organization

  • Use descriptive branch names when creating new branches
  • Remember significant IDs if you frequently reference specific versions
  • Publish regularly to communicate stable configurations to your team

Publishing Strategy

  • Publish to same branch for iterative improvements to a single concept
  • Create new branches for distinct setup philosophies or track-specific configurations
  • Don't over-publish - it's okay to work on unpublished versions until you're confident

Team Coordination

  • Published components signal readiness - treat them as team-approved configurations
  • Communicate before publishing over a teammate's recent work on the same branch
  • Use new branches when exploring different directions to avoid conflicts

Version Management

  • Don't worry about clutter - the system handles all versions efficiently
  • Use version history to compare changes and understand evolution

Common Workflows

Making a Quick Adjustment

  1. Load your vehicle from the setup selector
  2. Edit the component (creates unpublished version)
  3. Test the changes
  4. Publish to same branch when satisfied

Creating a Track-Specific Variant

  1. Load your base vehicle configuration
  2. Edit components for track requirements
  3. Publish to new branch with descriptive name (e.g., "Monza Low Drag")
  4. Both variants now available in setup selector

Recovering a Previous Configuration

  1. Open the component in setup selector
  2. Click the version history dropdown
  3. Find the version by ID or position in history
  4. Load that version
  5. Optionally publish it to make it active again

Next Steps