メインコンテンツまでスキップ

Workspaces and Projects

What This Chapter Covers​

This chapter explains how PAIO holds your work: a window opens one folder, and that folder is the project. It covers the window with no project open, creating and opening a project, the project's folders, opening the design editors from the EDITOR view, every operation in the Explorer, the save commands, and the edit History panel. It is written for users starting their first design in PAIO. You need a login and an active license (03. Installation, Login and License); while a license is expired, every create, delete, rename, and save described in this chapter is blocked.


4.1 Concepts​

In PAIO the workspace and the project are the same thing. The folder a window opens is itself the project.

DoorEcu/ ← the folder the window opens = the project
├── DoorEcu.io.prj ← project metadata file (hidden in the Explorer)
├── code/ design/ doc/ export/ import/ workflow/
└── ...
  • One window, one project. The window title shows the project as PAIO [<project>]. To work on another project, open it in another window (PROJECT ▸ New Window, Ctrl+Shift+N).
  • The folder name is the project name. A project consists of a project metadata file (<project>.io.prj) and six fixed folders.
  • Opening a folder makes it a project. If the folder you open has no metadata file, PAIO adds the metadata file, the fixed folders, and the default models without asking. Nothing that already exists is overwritten. Folders below the opened folder are not searched for further projects.
  • Undo/Redo, Save All, and the edit history (4.9) all belong to the one project of the window.

When PAIO starts without arguments, it reopens the last project you had open, as long as its folder still exists. If that project is already open in another window, the new launch opens a window with no project instead of bringing the existing window to the front.


4.2 Opening a Project​

A window with no project open has the title PAIO and shows the Welcome tab.

A window with no project open: (1) the title PAIO, (2) the New Project, Open Project and Connect to… buttons, (3) the Recent list, (4) the EDITOR view with Open Project

  • The Welcome tab reads Welcome to PAIO and offers New Project, Open Project, and Connect to…, followed by a Recent list. Each Recent entry shows the project name and its path.
  • The EDITOR view on the left reads No project open and Open a project to get started, with an Open Project button.

You open an existing project in one of these ways.

WhereEntry
PROJECT menuOpen Project... (Ctrl+O)
PROJECT menuOpen Recent ▸ a recent project path. Clear Recently Opened at the bottom empties the list
Welcome tabOpen Project, or a project in the Recent list
EDITOR view of a window with no projectOpen Project

Open Project opens an OS folder selection dialog. In a window with no project, the folder you pick becomes that window's project. In a window that already has a project, the folder opens in a new window and the current window closes, as with Create (4.3.1). Remote connections (Connect to…) are covered in 17. Remote Development (SSH, vECU Container).

Check your work: the window title changes to PAIO [<project>] and the sidebar shows the EDITOR view with the header EDITOR: <project> (4.5).

  • PAIO watches the project folder, so files added or deleted outside the app are reflected automatically (4.10).
  • A window does not switch to another project in place. Each window keeps its own edit history for its one project (4.9).

4.3 Creating a Project​

4.3.1 Procedure​

  1. On the Welcome tab, click New Project, or run PROJECT ▸ New Project.... There is no shortcut.
  2. The New Project dialog opens. Type the project name into Name (placeholder my-project).
  3. Set Location, the folder the project is created in (placeholder Folder the project is created in). Type the path, or click Browse… and pick a folder. Location is empty the first time; afterwards it is prefilled with the last location you used.
  4. The line below the fields shows where the project goes: The project will be created in <Location>\<Name>.
  5. Click Create. Create stays disabled until Name and Location are set and the name is valid. Cancel closes the dialog without creating anything.

The New Project dialog: (1) Name, (2) Location, (3) Browse…, (4) the line showing where the project will be created, (5) Create

Enter in the dialog works as Create and Escape as Cancel.

Create makes the folder <Location>\<Name> and opens it as a project.

  • In a window with no project, that same window becomes the project.
  • In a window that already has a project, the new project opens in a new window and the current window closes. If the current window has unsaved changes, PAIO asks about them first (4.8).

Check your work: the window title reads PAIO [<Name>] and the sidebar header reads EDITOR: <Name>, with DESIGN and MODULE expanded. No tab is open; the editor area shows Open a file to start editing. Click System under DESIGN to open the System editor of the new, empty system.

Right after Create: (1) the title PAIO [DoorEcu], (2) the Design icon of the rail, (3) the header EDITOR: DoorEcu, (4) the DESIGN header icons, (5) the DESIGN rows, (6) the MODULE rows

4.3.2 Name Rules​

A project name must follow these rules.

RuleWhat happens on violation
Cannot be emptyCreate stays disabled
Letters, digits, hyphens, and underscores onlyWhile you type, the dialog shows Project name can only contain letters, numbers, hyphens, and underscores and Create stays disabled
No Windows reserved names (CON, PRN, AUX, NUL, COM0 – COM9, LPT0 – LPT9, in any letter case)The name is rejected
<Location>\<Name> must not already be a projectCreate leaves the dialog open with Project "<name>" already exists

For example, DoorEcu, body-domain, and door_ecu_01 are accepted, while a name with spaces or a dot, such as Door Ecu or door.ecu, is rejected, and so is any name containing non-ASCII letters.

The duplicate check looks for a metadata file in <Location>\<Name>. A folder of that name without a metadata file is not a duplicate: PAIO completes it into a project (4.3.3). Whether names that differ only in letter case collide depends on the file system of Location.

4.3.3 What Gets Created​

Creating a project produces the following in <Location>\<Name>.

ItemContents
Project metadata file<Name>.io.prj
Six fixed folderscode, design, doc, export, import, workflow
Three default modelsdesign/SYSTEM.io.model, design/VFB.io.model, design/IVC.io.model

The default models start with this content.

  • SYSTEM — both the system name and the root composition name are System. Neither follows the project name, and you can change both freely later.
  • VFB — a single root composition named System, empty inside.
  • IVC — the network model edited in the System editor. ECUs, HPCs, communication clusters, and coupling elements are all empty.

Existing folders and models are never overwritten. If the folder exists but the metadata file is missing, PAIO creates the metadata file and the missing parts, and recovers the folder as a project. If the metadata file exists too, creation stops with Project "<name>" already exists.

4.3.4 Quick Start Projects​

The PROJECT menu no longer has Quick Start. Every project is created with New Project (4.3.1). The QuickStart workflow is not offered in this version either; see 15.5 in 15. AI Assistant.


4.4 Project Folder Structure​

PAIO creates six fixed folders, and the Explorer lists all six.

FolderPurpose
code/C/C++/Rust sources and build files. Also shown in the CODE section of the EDITOR view
design/Model files (*.io.model) and the SWC/ and Module/ subfolders. The design editors are opened from the EDITOR view (4.5)
doc/Documents. Also shown in the DOC section of the EDITOR view
export/Export results. Also shown in the EXPORT section of the EDITOR view
import/A place for import sources
workflow/Files of the Workflow editor (WORKFLOW.io.workflow)
  • PAIO writes nothing into import/. An import reads the source file you selected where it sits; it never copies the file into the project.
  • The Explorer applies no extension filter: every file and folder on disk appears, except the hidden entries described in 4.6.3.
  • code, design, doc, export, and workflow cannot be renamed or deleted; their context menus have no such entries. import has the full folder menu, including Rename and Delete (4.6.5), and a deleted import folder is recreated (4.10).

4.5 The design Folder and the EDITOR View​

The sidebar starts on the EDITOR view (the Design icon at the top of the rail). This is where the design editors open.

SectionRowsWhat a click opens
DESIGNSystem, VFB, Interface, DataType, DiagnosticThe editor of that name
MODULEDefinition, ConfigurationThe ECUC module definition and module configuration editors (12. ECUC)
DOC, CODE, EXPORTThe files of doc, code, and export—

A single click on a DESIGN or MODULE row opens its editor in a tab. The tab title has the form <project>:<row> — for example DoorEcu:System, DoorEcu:VFB, DoorEcu:Interface, DoorEcu:DataType, DoorEcu:Diagnostic, DoorEcu:Definition, or DoorEcu:Configuration. System opens the System editor, which edits the network topology (06. System Editor).

The DESIGN header has four icons: Import, Export, PRTE Code Generation, and PARA Code Generation. The import and export procedures are in 13. Import and Export.

Right-clicking a row shows these menus.

RowMenu
System, VFB, Interface, DataType, Diagnostic, DefinitionOpen
ConfigurationOpen, Import ECUC Configuration

Signal has no row. The Signal editor opens from the Signal icon on the System editor canvas (06. System Editor, 07. Signal Editor).

In the Explorer, design is an ordinary folder that holds the model files (IVC.io.model, SYSTEM.io.model, VFB.io.model, and more as the design grows) and the SWC/ and Module/ subfolders. Double-clicking a *.io.model file there opens its content as read-only JSON, not a design editor. For example, design/IVC.io.model opens in the tab <project>:IVC.io.model with a Read-only label. Use the EDITOR view to edit the design.


4.6 Working in the Explorer​

Click the Explorer icon at the bottom of the rail to show the Explorer. The header reads EXPLORER: <project>. The tree lists the contents of the project folder directly, with no project row on top: code, design, doc, export, import, and workflow. The metadata file <project>.io.prj is not listed.

The Explorer: (1) the Explorer icon at the bottom of the rail, (2) the header EXPLORER: PNC, (3) the header buttons, (4) the design folder with its model files

4.6.1 Selecting​

Use these actions to select and open items in the Explorer tree.

ActionResult
ClickSingle selection
Ctrl + clickToggles an individual item (multi-selection)
Shift + clickSelects the range from the last item you picked
Double-clickOpens the file in the editor its file type decides (a *.io.model file opens as read-only JSON)
Right-clickOpens the context menu. If the item you right-clicked is already in the selection, the selection is kept; otherwise it becomes the single selected item

Reopening a file that is already open does not create a new tab; it activates the existing one. At most 20 tabs can be open in total, and open requests beyond that are ignored.

4.6.2 Explorer Keyboard Shortcuts​

These shortcuts work while the tree has focus.

KeyAction
Ctrl+CCopies the selected files and folders
Ctrl+XCuts the selected files and folders
Ctrl+VPastes into the selected location
Ctrl+ASelects every expanded node
DeleteDeletes the selected files and folders (with the same confirmation as right-click ▸ Delete)

Delete, cut, and copy do not apply to the fixed folders code, design, doc, export, and workflow, so they cannot be deleted by accident.

4.6.3 Sidebar Header Buttons​

The Explorer header has three buttons. They appear while the pointer is over the header.

Button (tooltip)Action
Refresh ExplorerReads the disk again. Expansion state is preserved
Collapse AllCollapses everything if any node is expanded, and expands everything if none is (a toggle)
More Actions...Opens a menu with Show Hidden Entries (Hide Hidden Entries while they are shown)

The tooltip of the second button always reads Collapse All, but the action alternates between collapsing and expanding as the table describes.

Hidden entries are the ones PAIO keeps for itself: the project metadata file (*.io.prj) and the .paio, .devcontainer, and .git folders. Show Hidden Entries lists them too; the choice is remembered.

4.6.4 Drag and Drop​

You can drag files and folders into another folder. The drop target is determined by the mouse position.

  1. Hovering over the middle of a folder row means dropping into that folder. Hovering about 0.6 seconds over a collapsed folder expands it automatically.
  2. Hovering over the top or bottom edge of a row means inserting beside that row. In this case the horizontal mouse position decides which parent folder receives the item: the further left you move, the higher the parent folder selected.
  3. Releasing performs the move.

These cases are ignored: dropping an item onto itself, dropping a folder into its own subtree, and dropping an item back into the folder it already belongs to.

If the target folder already contains the same name, PAIO renames the item instead of overwriting (the name-conflict rules in 4.6.8). A failed move raises no separate error dialog.

4.6.5 Context Menus (Right-Click)​

The menu differs by what you right-click. While the clipboard holds something, Paste is added to the menu of the empty area, of doc and code, and of ordinary folders.

Empty area (the project folder itself)

EntryAction
New FileCreates a file at the top of the project folder
New FolderCreates a folder at the top of the project folder
Reveal in File ExplorerOpens the project folder in the OS file manager
Open in Integrated TerminalOpens the bottom terminal panel in the project folder
Copy PathCopies the project folder's path

There is no New Project entry, and there is no project row to right-click.

Fixed folders

FolderMenu
designImport, Export, Code Generation ▸ (PRTE, PARA), New File, New Folder
doc, code, workflow, exportNew File, New Folder
importNew File, New Folder, Reveal in File Explorer, Open in Integrated Terminal, Cut, Copy, Copy Path, Copy Relative Path, Rename, Delete

The context menu of the design folder: (1) the design folder, (2) Code Generation, (3) its submenu with PRTE and PARA

Import and Export on design are the same as the Import and Export icons on the DESIGN header of the EDITOR view (4.5). The detailed procedures are in 13. Import and Export.

Ordinary folders (for example a folder you created under doc)

New File, New Folder, Reveal in File Explorer, Open in Integrated Terminal, Cut, Copy, Copy Path, Copy Relative Path, Rename, Delete. For a multi-selection, Delete acts on every selected item.

Files

Open, Open to the Side, Reveal in File Explorer, Open in Integrated Terminal, Cut, Copy, Copy Path, Copy Relative Path, Rename, Delete. A file has no Paste; to paste next to a file, select it and press Ctrl+V, and the item is pasted into the folder that contains it.

4.6.6 Creating Files and Folders​

Right-click a folder and choose New File.

  1. The New File dialog opens. In doc it asks Enter a file name with extension (e.g., document.md):.
  2. Enter the name and click Create (or press Enter). An empty file is created and opens immediately in an editor tab.

In doc and code (and their subfolders) only certain extensions can be created.

FolderAllowed extensions
doc.md, .markdown
code.c .h .cpp .hpp .cc .cxx .hh .hxx .rs

A name that breaks the rule keeps the dialog open with a message; in doc, for example, a.txt shows Only Markdown files (.md) are allowed in doc folder. In the other folders, New File accepts any extension.

The name must not be empty, must not contain < > : " / \ | ? *, and must not match an existing file in the folder.

The doc folder can hold any file, but Markdown is the only thing you can create there with New File. Copy images and other files in with the OS file manager (Reveal in File Explorer) and they appear in the tree.

New Folder opens the New Folder dialog, which asks Enter a name for the new folder:. The name must not be empty and must not contain the characters above. Outside doc and code, a new file or folder name also must not end with a dot or a space, and must not be a Windows reserved name.

4.6.7 Renaming and Deleting​

Renaming a file — right-click and choose Rename.

  1. Only the name without its extension is edited; the extension is preserved. Renaming main.c to driver, for example, produces driver.c.
  2. If the file is open with unsaved changes and its editor cannot follow the new path on its own, PAIO asks about the unsaved changes first. Canceling cancels the rename itself. An editor that can follow the new path keeps the unsaved content without asking.
  3. Once the name changes, the open tab and the edit history follow the new path.

Renaming a folder — use Rename in the same menu. If unsaved tabs exist under the folder, PAIO handles them without asking. An editor that can follow the new path carries its unsaved content to the new path, and an editor that cannot is saved automatically before the rename. The old path disappears the moment the folder name changes, leaving nowhere to save, so skipping the question is intended behavior.

Deleting — right-click and choose Delete, or press the Delete key. A confirmation dialog appears first, one for a single item and one for a multi-selection. Deletion cannot be undone.

Tabs showing a deleted file, or a file below a deleted folder, close with it. A failed deletion raises no separate error dialog.

4.6.8 Cut, Copy, and Paste​

  • Cut and Copy put every selected file and folder on the clipboard.
  • Paste pastes into the folder you selected, or into the parent folder if you selected a file.
  • Pasting a folder onto itself redirects the target to the parent folder, and you cannot paste a folder into its own subtree.
  • The clipboard is cleared once at least one cut-and-paste succeeds. Copy-and-paste keeps the clipboard, so you can paste repeatedly in several places.

Name-conflict rules — when a copy, move, or drag would paste onto an existing name, PAIO renames the item instead of overwriting. Pasting main.c into the same folder, for example, produces main_copy.c, and if that name is taken too, the numbers continue with main_copy2.c, main_copy3.c, and so on. Folders follow the same rule.


4.7 Renaming and Deleting a Project​

The Explorer has no project row, so PAIO offers no command to rename or delete the project open in a window. The project is its folder, and you rename or delete it as a folder.

4.7.1 Rename Project​

  1. Close the PAIO window that has the project open.
  2. Rename the project folder with the OS file manager. The new name must follow the rules in 4.3.2.
  3. Open the renamed folder in PAIO (PROJECT ▸ Open Project...).

The folder name is the project name. When the folder opens, PAIO renames the metadata file and the name recorded in it to match the folder.

4.7.2 Delete Project​

  1. Close the PAIO window that has the project open.
  2. Delete the project folder with the OS file manager.

An entry for a deleted project can stay in the Recent list. Remove it with PROJECT ▸ Open Recent ▸ Clear Recently Opened.


4.8 Saving​

The PROJECT menu has two save commands.

CommandLocationAction
SavePROJECT ▸ Save (Ctrl+S)Saves the active editor
Save AllPROJECT ▸ Save AllSaves every changed file of the window's project
  • There is no Save As.... Ctrl+Shift+S in the System editor and the DataType editor saves just like Ctrl+S.
  • Changes in the SYSTEM panel are written to disk as you make them. They leave no unsaved mark on any tab and need no save.
  • Closing the window while a tab has unsaved changes shows the Unsaved Changes dialog: Do you want to save the changes to <project>:<file>? with Save, Don't Save, and Cancel. Cancel keeps the window open.
  • Ctrl+S saves through the same path as the Save menu entry even when pressed outside an editor — for instance right after clicking a menu, when focus has left the editor. A Ctrl+S already handled elsewhere is not run twice.

Saving can also be unavailable. While the license is expired or read-only, the save commands are replaced by an upgrade dialog (see 03. Installation, Login and License, 3.4).


4.9 Edit History (History)​

The History tab in the bottom utility panel shows the project's edit timeline. This timeline is called the edit history, and each window has one for its project. Toggle the panel with the panel button at the left of the status bar (tooltip Toggle Panel (History / Problems)). The panel has two tabs, History and Problems. The Ctrl+J key toggles the terminal panel, not this panel.

  • The newest entry is at the top. Relative to the Current state marker, entries above are Redo targets (dimmed) and entries below are Undo targets. The bottom entry is Initial state.
  • Each row shows a description of the action, a tag for the target, and the time. For example, typing into the SYSTEM panel's DESCRIPTION adds one Edit System description row per typed character.
  • A single click selects the row; a double-click jumps to that point in one step (time travel). Double-clicking Initial state jumps to the state with every edit in this project undone.
  • While a jump is in progress the list is locked and accepts no further operations.
  • Before any edit, the list reads No edits yet.
  • A project keeps up to 25 entries, of which bulk operations (AI generation, import) keep at most 10. Whenever either limit is exceeded, the oldest entries are cleaned up. Bulk operations never push out your own direct edits.

Model validation results do not appear in the Problems tab; they appear in the separate VALIDATION panel (14. Validation, 05. UI Layout and Navigation).


4.10 Watching External Changes and Automatic Recovery​

The app watches the project folder the window has open.

  • The watch depth is 10 levels. Files and folders whose names start with a dot (.), and node_modules, are not watched.
  • After a write finishes, PAIO waits about 0.2 seconds for things to settle before handling the event, so the tree does not flicker while a large file is being copied.
  • A fixed folder deleted externally is recreated automatically. All six fixed folders are covered, import included. Recovery is skipped, however, once the folder is no longer recognized as a project because its metadata file is gone.

When a file with an open editor changes externally, PAIO does not reload the disk content if that editor has unsaved changes. A reload would silently discard your unsaved edits. In this case the model on screen is kept, a notice that the reload was skipped appears once, and saving overwrites the disk with what is on screen. If there are no unsaved changes, the external change is applied as is.

4.11 Editing Files Directly​

A project's models are stored as text JSON, so you can put them under configuration management (diff/merge) as they are. Editing them outside PAIO is not recommended, but if you must, keep the following in mind. For how the app handles external changes, see 4.10.

  • Hand-editing name references that span several files can break consistency. Renaming is safer in the editor, which updates the references with it.
  • The editor cannot reject a value that breaks the name rules — an empty string, whitespace, a name starting with a digit — if you enter it by hand. Names are identifiers, so references can break.
  • To check for problems after editing, use the validation panel (14. Validation).