0.4.1 — Screen Management#
Released
The 0.4.1 release added single-instance screens, screen renaming, and screen attribute editing from the CLI.
Single-Instance Screens#
New
single_instanceboolean field in each screen’sproject.jsonentry (defaultfalse)Screen.__init__reads and exposesscreen.single_instanceWhen
Host.open()is called for a screen withsingle_instance: truethat is already open anywhere (main window or anyDetachedWindow), the existing tab is focused rather than creating a new instance; the(2)/(3)suffix logic is skipped entirelySet via
VIS edit <screenname> single_instance true
VIS rename#
VIS rename <screenname> <newname>
Validates
newnameagainst the same rules asVIS add screen(no reserved words, valid identifier, no conflicts)Renames the screen’s key in
project.jsonRenames the script file on disk if it matches the old name pattern; updates the
scriptfieldRenames
Screens/<oldname>/toScreens/<newname>/Renames
modules/<oldname>/tomodules/<newname>/and renamesm_<oldname>.pytom_<newname>.pyinside itRewrites all
Screens.<oldname>.andmodules.<oldname>.import referencesUpdates
default_screeninproject.jsonif it matches the old nameRuns
stitchautomatically after renamerenameandRenameadded to_RESERVED_VIS_COMMANDS
VIS edit#
VIS edit <screenname> <attribute> <value>
Directly sets any attribute in the screen’s project.json subdictionary.
Editable attributes:
Attribute |
Type |
Notes |
|---|---|---|
|
string |
Rejects the value if the file does not exist in the project root |
|
bool |
|
|
string/none |
|
|
string |
Free-form description |
|
bool |
Whether this screen opens as a Host tab |
|
bool |
Prevent duplicate tabs |
|
string |
Must be valid |
|
string/none |
|
Prints confirmation of old and new value
Rejects unknown attribute names with a clear error
Keeps the in-memory
Screenobject in sync immediatelyeditandEditadded to_RESERVED_VIS_COMMANDS