Skip to content

Latest commit

 

History

History
67 lines (61 loc) · 1.8 KB

File metadata and controls

67 lines (61 loc) · 1.8 KB

Flexure workspace file format

The native extension is .flexure.json. Files are UTF-8 JSON and contain the entire logical workspace, including all windows and tabs. Runtime caches, current NT values, and recording payloads are not embedded.

Version 1 shape

{
  "format": "flexure-workspace",
  "version": 1,
  "id": "workspace-id",
  "name": "Competition",
  "theme": {
    "seed": "#00BAAD",
    "mode": "dark"
  },
  "windows": [
    {
      "id": "window-main",
      "tabs": ["tab-teleop"],
      "activeTabId": "tab-teleop"
    }
  ],
  "tabs": [
    {
      "id": "tab-teleop",
      "name": "Teleop",
      "viewport": { "x": 0, "y": 0, "zoom": 1 },
      "elements": [
        {
          "id": "voltage",
          "kind": "widget",
          "widgetType": "voltage-view",
          "frame": { "x": 0, "y": 0, "width": 256, "height": 128 },
          "z": 0,
          "title": "Voltage",
          "config": {
            "topic": "/SmartDashboard/Voltage",
            "period": 0.06
          }
        }
      ]
    }
  ],
  "recording": {
    "selectionMode": "all",
    "include": [],
    "exclude": []
  },
  "extensions": {}
}

IDs are stable opaque strings. Coordinates are logical CSS pixels in the canvas world and are independent of monitor DPI. extensions and unknown fields are retained across load/save cycles when possible.

Every tab is assigned to exactly one uniquely identified window. Window bounds store normal-position geometry plus maximized/fullscreen flags. Flexure validates these ownership rules on load, preventing a malformed file from duplicating a live tab across windows or leaving a tab inaccessible.

Elastic import is a migration input, never mistaken for a native workspace. The original Elastic object is retained in import metadata until the first successful explicit save.