@Richard Rayburn 
There isn't an equivalent to the Inspector's Storage editor in VS Code yet. That's on our roadmap but we don't have an ETA for it yet due to design challenges. You will have to edit the Storage block directly in the class's text. There is hover documentation and code completion support for Storage blocks in VS Code, which Studio did not have:

I hope you find this helpful.

Thanks for your feedback! In response, I've submitted Pull Request #1311 which removes the comment-continuation feature for ObjectScript comments (it's still enabled for class description /// comments). It also adds auto-closing of C-style block comments (e.g. typing /* automatically adds */ after the cursor). You can try this out by downloading and installing the latest beta version of the vscode-objectscript extension from GitHub, which can be found here.

Hi @Mathew Rimmington, this exact question was asked in a GitHub discussion a few weeks ago. To summarize my answer there, this isn't easy to add because the text that gets added on enter (besides indentation) is static. It acn't be generated from the regular expression used to match the previous line, so I couldn't dynamically add the correct number of dots. My recommendation is to use modern brace syntax instead of legacy dot syntax.

@Joseph Griffen 
ZWrite is going to output the internal format of the %Status value, which isn't that easy to parse visually. $SYSTEM.Status.DisplayError() will output the status text to the current device in a more readable format.

USER>Write ##class(%Atelier.v1.Utils.General).ValidateDocName("project.prj",.sc)
0
USER>ZWrite sc
sc="0 "_$lb($lb(16006,"project.prj",,,,,,,,$lb(,"USER",$lb("e^ValidateDocName+33^%apiSRC^2","e^ValidateDocName+1^%Atelier.v1.Utils.General.1^1","e^^^0"))))/* ERROR #16006: Document 'project.prj' name is invalid [ValidateDocName+33^%apiSRC:USER] */

USER>Do $SYSTEM.Status.DisplayError(sc)

ERROR #16006: Document 'project.prj' name is invalid [ValidateDocName+33^%apiSRC:USER]

If you need to store the status text in a variable you can use $SYSTEM.Status.GetErrorText().

@Mathew Rimmington 
Sorry, I misread the prompt in the screenshot. Can you open the settings.json file that contains the server definition that you're having trouble with and send me that? I'd like to confirm that it has "UnknownUser" as the username and not no username. If so, I can modify the Language Server to handle that case better.

I know what's happening now. You're creating the server definition with no username, and when the server manager extension tries to use it, it assumes that you wanted to store your credentials securely, so it gives you this prompt. When you leave it blank, it inserts "UnknownUser" with no password as your credentials. The Language Server extension needs to handle that case. I will make the fix.

@Kevin Kindschuh 
The VS Code Integrated Terminal is an OS shell, so if you want to open an IRIS terminal you need to use a command like "iris terminal <instance>". If that instance is on another machine, you'll have to use SSH. Starting with IRIS 2023.2, VS Code supports a WebSocket-based terminal so that you can launch a terminal on a remote server without needing SSH. The WebSocket terminal is not a full terminal though.

@Sam Duncan Here's a simple method to export subclasses. It exports all of the classes in a single XML file and prints that to the console. You can easily modify that behavior by changing the $SYSTEM.OBJ.Export() line to whatever export strategy you want.

ClassMethod ExportSubclasses(pSuper As %String) As %Status
{
  #Dim tSC As %Status = $$$OK
  #Dim tEx As %Exception.AbstractException
  #Dim tPc As %ProcedureContext
  #Dim tRs As %SQL.ClassQueryResultSet
  Try {
    #; Build a subscripted array of subclasses
    Set tStmt = ##class(%SQL.Statement).%New()
    Set tSC = tStmt.%PrepareClassQuery("%Dictionary.ClassDefinitionQuery","SubclassOf")
    If $$$ISERR(tSC) Quit
    Set tPc = tStmt.%Execute(pSuper)
    If tPc.%SQLCODE < 0 {
      Throw ##class(%Exception.SQL).CreateFromSQLCODE(tPc.%SQLCODE,tPc.%Message)
    }
    Set tRs = tPc.%NextResult()
    While tRs.%Next(.tSC) {
      Set tSubclasses(tRs.%GetData(1)_".CLS") = ""
    }
    If $$$ISOK(tSC), $DATA(tSubclasses) = 10 {
      #; Export the subclasses
      Set tSC = $SYSTEM.OBJ.Export(.tSubclasses,,"/nodisplay")
    }
  } Catch tEx {
    Set tSC = tEx.AsStatus()
  }
  Quit tSC
}

I believe this is the same problem described here. You need to add the --check-caps false command to the iris container in your docker-compose.yml file, like this:

...
iris:
    command: --check-caps false
    init: true
...

The SAM 1.1 distribution should have this done for you but that change must not have made it in. I think you can still enter the SAM 2.0 EAP if you'd like to start with the upcoming version.