CLI Reference#
The VIS command is available after installing VIStk. All commands are case-insensitive
and accept single-letter abbreviations.
Initialize a project#
VIS new
Run from the folder where you want to create the project. Creates the .VIS/ folder,
copies default templates, generates Host.py, and prompts for:
Project name
Company name
Copyright string (defaults to company name)
Initial version
Default screen name
Add a screen#
VIS add screen <screen_name>
Creates a new screen script from template, registers it in project.json, and creates
the matching Screens/<screen>/ and modules/<screen>/ folders.
The CLI will prompt for:
Script filename
Whether the screen should have its own
.exe(release)Icon name
Description
Whether the screen opens as a tab inside the Host (
tabbed)Whether this screen is the default screen (prompted only if no default is set yet)
Add elements to a screen#
VIS add screen <screen_name> elements <element_name>
VIS add screen <screen_name> elements <e1>-<e2>-<e3>
Creates f_<element>.py in Screens/<screen>/ and a blank m_<element>.py in
modules/<screen>/, then runs stitch to wire them into the screen script. Multiple
elements can be created in one call by separating names with -.
Stitch a screen#
VIS stitch <screen_name>
Scans Screens/<screen>/ and modules/<screen>/ for all f_* and m_* files
and rewrites the import blocks in the screen script to include them all. This is called
automatically when adding elements. Run manually if you add files without using the CLI.
Release the project#
VIS release -f <suffix> -t <type> -n <note>
Builds a PyInstaller spec for all screens marked release: true in project.json,
compiles them to native binaries, bundles required assets (Icons, Images,
.VIS), and creates a standalone installer executable. The binaries land in dist/.
Flag |
Short |
Description |
|---|---|---|
|
|
Suffix appended to the output folder name |
|
|
Version increment type: |
|
|
Release note (informational) |
|
|
Comma-separated group names (from |
|
Comma-separated screen names. Build an installer containing only the
listed screens. May be combined with |
Examples:
VIS release -Groups Core
VIS release -Screens WorderEditor,FloorView
VIS release -Groups Core -Screens DashboardA
Release a single screen#
VIS release Screen <screen_name> -f <suffix>
Temporarily marks all other screens as non-releasing, builds only the named screen, then restores the others.
Launch the Host#
VIS <project_name>
VIS <project_name> <screen_name>
Launches the Host for the current project, or brings an already-running Host to the
foreground. <project_name> must match the project title in project.json
(case-sensitive).
VIS <project_name>— starts the Host if not running, then opens the default screen.VIS <project_name> <screen_name>— starts the Host if not running, then opens the named screen.
Both forms start the Host as a subprocess and communicate via IPC. If the Host is already running, only the IPC message is sent.
Example — if the project is named MyApp:
VIS MyApp # open default screen
VIS MyApp WorkOrders # open a specific screen
Rename a screen#
VIS rename <screen_name> <new_name>
Renames a screen throughout the project:
Renames the key in
project.json → ScreensRenames the script file if it follows the default convention; updates the
scriptfieldRenames
Screens/<oldname>/→Screens/<newname>/Renames
modules/<oldname>/→modules/<newname>/and renamesm_<oldname>.py→m_<newname>.pyRewrites all
Screens.<oldname>.andmodules.<oldname>.import references in the screen scriptUpdates
default_screeninproject.jsonif it points to the old nameRuns
stitchautomatically so import blocks are regenerated
Edit a screen attribute#
VIS edit <screen_name> <attribute> <value>
Directly sets any attribute in a screen’s project.json entry.
Attribute |
Type |
Notes |
|---|---|---|
|
string |
Must point to an existing |
|
bool |
|
|
string / none |
|
|
string |
Free-form description |
|
bool |
Whether this screen opens as a Host tab |
|
bool |
When |
|
string |
Must be |
|
string / none |
|
|
list |
Comma-separated screen names that must be installed alongside this
one. Use |
|
list |
Comma-separated screen names recommended alongside this one. |
|
string / none |
Custom message shown by the installer’s dependency dialog and by the runtime missing-screen banner. |
Examples:
VIS edit WorkOrders single_instance true
VIS edit Dashboard tabbed false
VIS edit Settings version 2.0.0
VIS edit Dashboard requires "WorkOrders,TimeClock"
VIS edit Dashboard warn_message "Dashboard needs the WorkOrders screen to load data."
Manage screen groups#
VIS group add <group_name> [description]
VIS group remove <group_name>
VIS group assign <screen> <group_name> [true|false]
VIS group unassign <screen>
VIS group default <screen> <true|false>
VIS group list
Maintains the release_info.groups block in project.json. Screen
groups bundle related screens under a single checkbox in the installer
GUI; the expand arrow reveals indented sub-checkboxes so end-users can
pick individual members. Each member carries a default flag
controlling whether it is initially checked.
Subcommand |
Description |
|---|---|
|
Creates an empty group with an optional description. The name must be a valid identifier, not clash with any screen name, and not collide with a reserved VIS command. |
|
Removes a group. Member screens themselves are left intact; they simply become ungrouped. |
|
Places a screen in a group. A screen belongs to at most one group;
assigning reassigns and removes the screen from any previous group.
The optional |
|
Removes a screen from whichever group currently contains it. |
|
Flips the |
|
Prints every group with its description and members (including each member’s default flag). |
Examples:
VIS group add Core "Main application screens"
VIS group assign WorkOrders Core
VIS group assign FloorView Core
VIS group assign Diagnostics Core false
VIS group list
Manage documentation URLs#
VIS docs set <screen_name> <url>
VIS docs set --default <url>
VIS docs clear <screen_name>
VIS docs clear --default
VIS docs list
Maintains the per-screen docs field and the project-level
defaults.docs field in project.json. Used by the built-in
VIStk.Objects.open_active_screen_docs() helper to drive a Help
button. URLs are passed verbatim to webbrowser.open() — the
author writes a fully-qualified URL (https://, file:///, etc.).
Resolution order at click-time is: active screen’s docs →
defaults.docs → no-op. --default is the project-wide
fallback.
Examples:
VIS docs set --default https://example.com/docs
VIS docs set Settings https://example.com/docs/settings
VIS docs clear Settings
VIS docs list
Stop the Host#
VIS stop
Sends a quit signal to the running Host via IPC. The Host shuts down gracefully. Prints a message if no Host is running.
Check version#
VIS -v
Prints the installed VIStk version.