editor workspace foundation

This commit is contained in:
bQUARKz 2026-03-31 00:41:09 +01:00
parent c6286f13a5
commit 868006dd6b
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
10 changed files with 1228 additions and 704 deletions

View File

@ -11,6 +11,7 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.Region; import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.Node;
import p.studio.Container; import p.studio.Container;
import p.studio.utilities.i18n.I18n; import p.studio.utilities.i18n.I18n;
@ -67,12 +68,18 @@ public final class EditorProjectNavigatorPanel extends BorderPane {
protected void updateItem(final EditorProjectNode item, final boolean empty) { protected void updateItem(final EditorProjectNode item, final boolean empty) {
super.updateItem(item, empty); super.updateItem(item, empty);
getStyleClass().remove("editor-workspace-tree-cell-tagged"); getStyleClass().remove("editor-workspace-tree-cell-tagged");
getStyleClass().remove("editor-workspace-tree-cell-root");
if (empty || item == null) { if (empty || item == null) {
setText(null); setText(null);
setGraphic(null);
return; return;
} }
setText(item.taggedSourceRoot() ? item.displayName() + " [src]" : item.displayName()); setText(labelFor(item, getTreeItem()));
if (item.taggedSourceRoot()) { setGraphic(iconFor(item, getTreeItem()));
if (isRoot(getTreeItem())) {
getStyleClass().add("editor-workspace-tree-cell-root");
}
if (item.taggedSourceRoot() || isInsideTaggedSourceRoot(getTreeItem())) {
getStyleClass().add("editor-workspace-tree-cell-tagged"); getStyleClass().add("editor-workspace-tree-cell-tagged");
} }
} }
@ -169,6 +176,54 @@ public final class EditorProjectNavigatorPanel extends BorderPane {
emptyState.setManaged(empty); emptyState.setManaged(empty);
} }
private Node iconFor(final EditorProjectNode node, final TreeItem<EditorProjectNode> treeItem) {
if (node.directory()) {
if (isBuildTone(node)) {
return EditorWorkspaceIcons.folderBuild();
}
if (node.taggedSourceRoot() || isInsideTaggedSourceRoot(treeItem)) {
return EditorWorkspaceIcons.folderSource();
}
return EditorWorkspaceIcons.folderDefault();
}
if ("prometeu.json".equals(node.displayName())) {
return EditorWorkspaceIcons.cog();
}
return EditorWorkspaceIcons.file();
}
private String labelFor(final EditorProjectNode node, final TreeItem<EditorProjectNode> treeItem) {
if (!isRoot(treeItem)) {
return node.displayName();
}
final var directoryName = Optional.ofNullable(node.path().getFileName())
.map(Path::toString)
.filter(name -> !name.isBlank())
.orElse(node.displayName());
return directoryName + " (" + node.displayName() + ")";
}
private boolean isInsideTaggedSourceRoot(final TreeItem<EditorProjectNode> item) {
var current = item == null ? null : item.getParent();
while (current != null && current.getValue() != null) {
if (current.getValue().taggedSourceRoot()) {
return true;
}
current = current.getParent();
}
return false;
}
private boolean isRoot(final TreeItem<EditorProjectNode> item) {
return item != null && item.getParent() == null;
}
private boolean isBuildTone(final EditorProjectNode node) {
return node.directory()
&& ("build".equals(node.displayName()) || "cartridge".equals(node.displayName()));
}
private Label emptyLabel() { private Label emptyLabel() {
final var placeholder = new Label(); final var placeholder = new Label();
placeholder.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_NAVIGATOR_PLACEHOLDER)); placeholder.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_NAVIGATOR_PLACEHOLDER));

View File

@ -1,15 +1,20 @@
package p.studio.workspaces.editor; package p.studio.workspaces.editor;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.Region; import javafx.scene.layout.Region;
import p.studio.Container; import p.studio.Container;
import p.studio.projects.ProjectReference;
import p.studio.utilities.i18n.I18n; import p.studio.utilities.i18n.I18n;
import java.nio.file.Path;
import java.util.Optional;
public final class EditorStatusBar extends HBox { public final class EditorStatusBar extends HBox {
private final Label breadcrumb = new Label(); private final HBox breadcrumb = new HBox(6);
private final Label position = new Label(); private final Label position = new Label();
private final Label lineSeparator = new Label(); private final Label lineSeparator = new Label();
private final Label indentation = new Label(); private final Label indentation = new Label();
@ -18,19 +23,25 @@ public final class EditorStatusBar extends HBox {
public EditorStatusBar() { public EditorStatusBar() {
setAlignment(Pos.CENTER_LEFT); setAlignment(Pos.CENTER_LEFT);
setSpacing(12); setSpacing(8);
getStyleClass().add("editor-workspace-status-bar"); getStyleClass().add("editor-workspace-status-bar");
breadcrumb.getStyleClass().add("editor-workspace-status-breadcrumb"); breadcrumb.getStyleClass().add("editor-workspace-status-breadcrumb");
breadcrumb.setAlignment(Pos.CENTER_LEFT);
final var spacer = new Region(); final var spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS); HBox.setHgrow(spacer, Priority.ALWAYS);
styleChip(position); styleChip(position);
position.getStyleClass().add("editor-workspace-status-chip-position");
styleChip(lineSeparator); styleChip(lineSeparator);
lineSeparator.getStyleClass().add("editor-workspace-status-chip-line-separator");
styleChip(indentation); styleChip(indentation);
indentation.getStyleClass().add("editor-workspace-status-chip-indentation");
styleChip(language); styleChip(language);
language.getStyleClass().add("editor-workspace-status-chip-language");
styleChip(readOnly); styleChip(readOnly);
readOnly.getStyleClass().add("editor-workspace-status-chip-read-only");
getChildren().addAll( getChildren().addAll(
breadcrumb, breadcrumb,
@ -45,8 +56,8 @@ public final class EditorStatusBar extends HBox {
showPlaceholder(); showPlaceholder();
} }
public void showFile(final EditorOpenFileBuffer fileBuffer, final String breadcrumbText) { public void showFile(final ProjectReference projectReference, final EditorOpenFileBuffer fileBuffer) {
setText(breadcrumb, breadcrumbText); showBreadcrumb(projectReference, fileBuffer.path());
bindDefault(position, I18n.CODE_EDITOR_STATUS_POSITION); bindDefault(position, I18n.CODE_EDITOR_STATUS_POSITION);
setText(lineSeparator, fileBuffer.lineSeparator()); setText(lineSeparator, fileBuffer.lineSeparator());
bindDefault(indentation, I18n.CODE_EDITOR_STATUS_INDENTATION); bindDefault(indentation, I18n.CODE_EDITOR_STATUS_INDENTATION);
@ -55,7 +66,7 @@ public final class EditorStatusBar extends HBox {
} }
public void showPlaceholder() { public void showPlaceholder() {
bindText(breadcrumb, I18n.CODE_EDITOR_STATUS_BREADCRUMB); breadcrumb.getChildren().setAll(placeholderLabel());
bindDefault(position, I18n.CODE_EDITOR_STATUS_POSITION); bindDefault(position, I18n.CODE_EDITOR_STATUS_POSITION);
bindDefault(lineSeparator, I18n.CODE_EDITOR_STATUS_LINE_SEPARATOR); bindDefault(lineSeparator, I18n.CODE_EDITOR_STATUS_LINE_SEPARATOR);
bindDefault(indentation, I18n.CODE_EDITOR_STATUS_INDENTATION); bindDefault(indentation, I18n.CODE_EDITOR_STATUS_INDENTATION);
@ -72,6 +83,85 @@ public final class EditorStatusBar extends HBox {
label.textProperty().bind(Container.i18n().bind(key)); label.textProperty().bind(Container.i18n().bind(key));
} }
private Label placeholderLabel() {
final var label = new Label();
label.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_STATUS_BREADCRUMB));
return label;
}
private void showBreadcrumb(final ProjectReference projectReference, final Path filePath) {
breadcrumb.getChildren().clear();
breadcrumb.getChildren().add(segment(
rootLabel(projectReference),
EditorWorkspaceIcons.folderDefault(),
true));
final var relativePath = projectReference.rootPath()
.toAbsolutePath()
.normalize()
.relativize(filePath.toAbsolutePath().normalize());
boolean insideSourceTree = false;
Path accumulated = projectReference.rootPath().toAbsolutePath().normalize();
for (int index = 0; index < relativePath.getNameCount(); index++) {
final var part = relativePath.getName(index).toString();
accumulated = accumulated.resolve(part);
final boolean isLast = index == relativePath.getNameCount() - 1;
if ("src".equals(part)) {
insideSourceTree = true;
}
breadcrumb.getChildren().add(separator());
breadcrumb.getChildren().add(segment(
part,
iconForSegment(part, isLast, insideSourceTree),
false));
}
}
private String rootLabel(final ProjectReference projectReference) {
final var directoryName = Optional.ofNullable(projectReference.rootPath().getFileName())
.map(Path::toString)
.filter(name -> !name.isBlank())
.orElse(projectReference.name());
return directoryName + " (" + projectReference.name() + ")";
}
private HBox segment(final String text, final Node icon, final boolean root) {
final var label = new Label(text);
label.getStyleClass().add("editor-workspace-status-breadcrumb-text");
final var box = new HBox(6, icon, label);
box.setAlignment(Pos.CENTER_LEFT);
box.getStyleClass().add("editor-workspace-status-breadcrumb-segment");
if (root) {
box.getStyleClass().add("editor-workspace-status-breadcrumb-segment-root");
}
return box;
}
private Label separator() {
final var label = new Label(">");
label.getStyleClass().add("editor-workspace-status-breadcrumb-separator");
return label;
}
private Node iconForSegment(final String name, final boolean isFile, final boolean insideSourceTree) {
if (isFile) {
if ("prometeu.json".equals(name)) {
return EditorWorkspaceIcons.cog();
}
return EditorWorkspaceIcons.file();
}
if ("build".equals(name) || "cartridge".equals(name)) {
return EditorWorkspaceIcons.folderBuild();
}
if ("src".equals(name) || insideSourceTree) {
return EditorWorkspaceIcons.folderSource();
}
return EditorWorkspaceIcons.folderDefault();
}
private void setText(final Label label, final String text) { private void setText(final Label label, final String text) {
label.textProperty().unbind(); label.textProperty().unbind();
label.setText(text); label.setText(text);
@ -86,6 +176,8 @@ public final class EditorStatusBar extends HBox {
private String extensionText(final java.nio.file.Path path) { private String extensionText(final java.nio.file.Path path) {
final var fileName = path.getFileName().toString(); final var fileName = path.getFileName().toString();
final var dot = fileName.lastIndexOf('.'); final var dot = fileName.lastIndexOf('.');
return dot >= 0 ? fileName.substring(dot) : fileName; return dot >= 0 && dot < fileName.length() - 1
? fileName.substring(dot + 1)
: fileName;
} }
} }

View File

@ -4,6 +4,7 @@ import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.MenuButton; import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.OverrunStyle;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.Region; import javafx.scene.layout.Region;
@ -17,7 +18,9 @@ import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;
public final class EditorTabStrip extends HBox { public final class EditorTabStrip extends HBox {
private static final double TAB_WIDTH_HINT = 168.0; private static final double TAB_WIDTH_HINT = 176.0;
private static final double TAB_HEIGHT_HINT = 34.0;
private static final double STRIP_HEIGHT_HINT = 50.0;
private static final double OVERFLOW_WIDTH_HINT = 110.0; private static final double OVERFLOW_WIDTH_HINT = 110.0;
private final MenuButton overflowButton = new MenuButton(); private final MenuButton overflowButton = new MenuButton();
@ -30,6 +33,9 @@ public final class EditorTabStrip extends HBox {
setAlignment(Pos.CENTER_LEFT); setAlignment(Pos.CENTER_LEFT);
setSpacing(10); setSpacing(10);
getStyleClass().add("editor-workspace-tab-strip"); getStyleClass().add("editor-workspace-tab-strip");
setMinHeight(STRIP_HEIGHT_HINT);
setPrefHeight(STRIP_HEIGHT_HINT);
setMaxHeight(STRIP_HEIGHT_HINT);
HBox.setHgrow(spacer, Priority.ALWAYS); HBox.setHgrow(spacer, Priority.ALWAYS);
overflowButton.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_TABS_OVERFLOW)); overflowButton.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_TABS_OVERFLOW));
@ -56,12 +62,8 @@ public final class EditorTabStrip extends HBox {
private void rebuild() { private void rebuild() {
getChildren().clear(); getChildren().clear();
if (openFiles.isEmpty()) { if (openFiles.isEmpty()) {
final var placeholderButton = new Button();
placeholderButton.textProperty().bind(Container.i18n().bind(I18n.CODE_EDITOR_TABS_PLACEHOLDER));
placeholderButton.setDisable(true);
placeholderButton.getStyleClass().addAll("studio-button", "studio-button-secondary");
getChildren().addAll(placeholderButton, spacer, overflowButton);
overflowButton.getItems().clear(); overflowButton.getItems().clear();
getChildren().add(spacer);
overflowButton.setVisible(false); overflowButton.setVisible(false);
overflowButton.setManaged(false); overflowButton.setManaged(false);
return; return;
@ -76,7 +78,12 @@ public final class EditorTabStrip extends HBox {
final var fileBuffer = openFiles.get(index); final var fileBuffer = openFiles.get(index);
final var tabButton = new Button(fileBuffer.tabLabel()); final var tabButton = new Button(fileBuffer.tabLabel());
tabButton.setFocusTraversable(false); tabButton.setFocusTraversable(false);
tabButton.getStyleClass().addAll("studio-button", "studio-button-secondary", "editor-workspace-tab-button"); tabButton.getStyleClass().addAll(
"studio-button",
"studio-button-secondary",
"editor-workspace-tab-button",
"editor-workspace-tab-button-read-only");
applyTabMetrics(tabButton);
if (fileBuffer.path().equals(activePath)) { if (fileBuffer.path().equals(activePath)) {
tabButton.getStyleClass().add("editor-workspace-tab-button-active"); tabButton.getStyleClass().add("editor-workspace-tab-button-active");
} }
@ -124,4 +131,15 @@ public final class EditorTabStrip extends HBox {
final double usableWidth = Math.max(availableWidth - OVERFLOW_WIDTH_HINT, TAB_WIDTH_HINT); final double usableWidth = Math.max(availableWidth - OVERFLOW_WIDTH_HINT, TAB_WIDTH_HINT);
return Math.max(1, (int) Math.floor(usableWidth / TAB_WIDTH_HINT)); return Math.max(1, (int) Math.floor(usableWidth / TAB_WIDTH_HINT));
} }
private void applyTabMetrics(final Button button) {
button.setMinWidth(TAB_WIDTH_HINT);
button.setPrefWidth(TAB_WIDTH_HINT);
button.setMaxWidth(TAB_WIDTH_HINT);
button.setMinHeight(TAB_HEIGHT_HINT);
button.setPrefHeight(TAB_HEIGHT_HINT);
button.setMaxHeight(TAB_HEIGHT_HINT);
button.setTextOverrun(OverrunStyle.ELLIPSIS);
button.setMnemonicParsing(false);
}
} }

View File

@ -87,17 +87,7 @@ public final class EditorWorkspace extends Workspace {
final var fileBuffer = activeFile.orElseThrow(); final var fileBuffer = activeFile.orElseThrow();
codeArea.replaceText(fileBuffer.content()); codeArea.replaceText(fileBuffer.content());
statusBar.showFile(fileBuffer, breadcrumb(fileBuffer.path())); statusBar.showFile(projectReference, fileBuffer);
}
private String breadcrumb(final java.nio.file.Path path) {
final var relativePath = projectReference.rootPath()
.toAbsolutePath()
.normalize()
.relativize(path.toAbsolutePath().normalize())
.toString()
.replace('\\', '/');
return projectReference.name() + " > " + relativePath.replace("/", " > ");
} }
private void showUnsupportedFileModal(final java.nio.file.Path path) { private void showUnsupportedFileModal(final java.nio.file.Path path) {
@ -120,7 +110,7 @@ public final class EditorWorkspace extends Workspace {
private VBox buildLayout() { private VBox buildLayout() {
final var content = new SplitPane(buildLeftColumn(), buildCenterColumn()); final var content = new SplitPane(buildLeftColumn(), buildCenterColumn());
content.setDividerPositions(0.27); content.setDividerPositions(0.30);
content.getStyleClass().add("editor-workspace-split"); content.getStyleClass().add("editor-workspace-split");
final var layout = new VBox(12, content, helperPanel, statusBar); final var layout = new VBox(12, content, helperPanel, statusBar);

View File

@ -0,0 +1,44 @@
package p.studio.workspaces.editor;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.SVGPath;
public final class EditorWorkspaceIcons {
private static final String FOLDER_PATH = "M1.5 4.5A1.5 1.5 0 0 1 3 3h3.2l1.1 1.4H13A1.5 1.5 0 0 1 14.5 5.9V12A1.5 1.5 0 0 1 13 13.5H3A1.5 1.5 0 0 1 1.5 12z";
private static final String FILE_PATH = "M4 1.5h5l3 3V13A1.5 1.5 0 0 1 10.5 14.5h-6A1.5 1.5 0 0 1 3 13V3A1.5 1.5 0 0 1 4.5 1.5zm4.7 1.2V5h2.3z";
private static final String COG_PATH = "M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.24-.68-2.64.72-1.96 1.96l.17.31c.446.816.023 1.84-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1c.895.265 1.318 1.289.872 2.105l-.17.31c-.68 1.24.72 2.64 1.96 1.96l.31-.17a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.24.68 2.64-.72 1.96-1.96l-.17-.31a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.68-1.24-.72-2.64-1.96-1.96l-.31.17a1.464 1.464 0 0 1-2.105-.872z";
private EditorWorkspaceIcons() {
}
public static Node folderDefault() {
return icon(FOLDER_PATH, "editor-workspace-icon-folder-default");
}
public static Node folderSource() {
return icon(FOLDER_PATH, "editor-workspace-icon-folder-source");
}
public static Node folderBuild() {
return icon(FOLDER_PATH, "editor-workspace-icon-folder-build");
}
public static Node file() {
return icon(FILE_PATH, "editor-workspace-icon-file");
}
public static Node cog() {
return icon(COG_PATH, "editor-workspace-icon-cog");
}
private static Node icon(final String path, final String toneClass) {
final var shape = new SVGPath();
shape.setContent(path);
shape.getStyleClass().addAll("editor-workspace-icon-shape", toneClass);
final var icon = new StackPane(shape);
icon.getStyleClass().add("editor-workspace-icon");
return icon;
}
}

View File

@ -399,7 +399,8 @@
.editor-workspace-tree .tree-cell { .editor-workspace-tree .tree-cell {
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-text-fill: #d6e0ea; -fx-text-fill: #d6e0ea;
-fx-font-size: 12px; -fx-font-size: 13px;
-fx-padding: 4 6 4 4;
} }
.editor-workspace-tree .tree-cell:selected { .editor-workspace-tree .tree-cell:selected {
@ -411,15 +412,55 @@
-fx-font-weight: bold; -fx-font-weight: bold;
} }
.editor-workspace-tree-cell-root {
-fx-font-weight: bold;
-fx-text-fill: #f4f8fc;
}
.editor-workspace-icon {
-fx-min-width: 14;
-fx-min-height: 14;
-fx-pref-width: 14;
-fx-pref-height: 14;
-fx-max-width: 14;
-fx-max-height: 14;
-fx-alignment: center;
}
.editor-workspace-icon-shape {
-fx-scale-x: 0.88;
-fx-scale-y: 0.88;
}
.editor-workspace-icon-folder-default {
-fx-fill: #8792a1;
}
.editor-workspace-icon-folder-source {
-fx-fill: #4ea0ef;
}
.editor-workspace-icon-folder-build {
-fx-fill: #d88a3d;
}
.editor-workspace-icon-file {
-fx-fill: #b0bac6;
}
.editor-workspace-icon-cog {
-fx-fill: #c6d0da;
}
.editor-workspace-outline-panel { .editor-workspace-outline-panel {
-fx-min-height: 150px; -fx-min-height: 150px;
} }
.editor-workspace-tab-strip { .editor-workspace-tab-strip {
-fx-padding: 10 14 10 14; -fx-padding: 8 12 8 12;
-fx-background-color: #1b1f25; -fx-background-color: #1b1f25;
-fx-background-radius: 12; -fx-background-radius: 0;
-fx-border-radius: 12; -fx-border-radius: 0;
-fx-border-color: #2a313c; -fx-border-color: #2a313c;
} }
@ -444,17 +485,54 @@
} }
.editor-workspace-tab-button { .editor-workspace-tab-button {
-fx-padding: 8 12 8 12; -fx-background-radius: 0;
-fx-border-radius: 0;
-fx-padding: 0 12 0 12;
-fx-alignment: center-left;
-fx-font-size: 12px;
-fx-background-color: #20262f;
-fx-border-color: #343f4d;
-fx-border-width: 1;
-fx-text-fill: #d6dde6;
} }
.editor-workspace-tab-button-active { .editor-workspace-tab-button-active {
-fx-background-color: #24415e; -fx-background-color: #16283d;
-fx-border-color: #4d88bc; -fx-border-color: #8fc4f2 #516579 #516579 #516579;
-fx-border-width: 3 1 1 1;
-fx-text-fill: #ffffff; -fx-text-fill: #ffffff;
-fx-font-weight: bold;
}
.editor-workspace-tab-button-read-only {
-fx-background-color: #252b34;
-fx-border-color: #47515d;
-fx-text-fill: #d9dee5;
}
.editor-workspace-tab-button-read-only:hover {
-fx-background-color: #2b323d;
-fx-border-color: #5b6878;
-fx-text-fill: #eff4fa;
}
.editor-workspace-tab-button-read-only.editor-workspace-tab-button-active {
-fx-background-color: #16283d;
-fx-border-color: #8fc4f2 #516579 #516579 #516579;
-fx-border-width: 3 1 1 1;
-fx-text-fill: #ffffff;
-fx-font-weight: bold;
}
.editor-workspace-tab-button-read-only.editor-workspace-tab-button-active:hover {
-fx-background-color: #1c3148;
-fx-border-color: #a7d7ff #5c738b #5c738b #5c738b;
} }
.editor-workspace-tab-overflow { .editor-workspace-tab-overflow {
-fx-padding: 8 12 8 12; -fx-background-radius: 0;
-fx-border-radius: 0;
-fx-padding: 0 12 0 12;
} }
.editor-workspace-code-area .content { .editor-workspace-code-area .content {
@ -466,7 +544,7 @@
} }
.editor-workspace-status-bar { .editor-workspace-status-bar {
-fx-padding: 10 14 10 14; -fx-padding: 6 12 6 12;
-fx-background-color: #1b1f25; -fx-background-color: #1b1f25;
-fx-background-radius: 12; -fx-background-radius: 12;
-fx-border-radius: 12; -fx-border-radius: 12;
@ -474,18 +552,75 @@
} }
.editor-workspace-status-breadcrumb { .editor-workspace-status-breadcrumb {
-fx-alignment: center-left;
}
.editor-workspace-status-breadcrumb-segment {
-fx-alignment: center-left;
-fx-padding: 0 2 0 0;
}
.editor-workspace-status-breadcrumb-segment-root {
-fx-font-weight: bold;
}
.editor-workspace-status-breadcrumb-text {
-fx-text-fill: #d4dde7; -fx-text-fill: #d4dde7;
-fx-font-size: 12px; -fx-font-size: 12px;
} }
.editor-workspace-status-breadcrumb-segment-root .editor-workspace-status-breadcrumb-text {
-fx-text-fill: #f1f7fd;
-fx-font-weight: bold;
}
.editor-workspace-status-breadcrumb-separator {
-fx-text-fill: #6f7e8e;
-fx-font-size: 12px;
}
.editor-workspace-status-chip { .editor-workspace-status-chip {
-fx-background-color: #11151b; -fx-background-color: #11151b;
-fx-background-radius: 999; -fx-background-radius: 4;
-fx-border-radius: 999; -fx-border-radius: 4;
-fx-border-color: #2a313c; -fx-border-color: #2a313c;
-fx-padding: 4 10 4 10; -fx-padding: 0 8 0 8;
-fx-text-fill: #c5d2de; -fx-text-fill: #c5d2de;
-fx-font-size: 11px; -fx-font-size: 11px;
-fx-alignment: center;
-fx-min-height: 28;
-fx-pref-height: 28;
-fx-max-height: 28;
}
.editor-workspace-status-chip-position {
-fx-min-width: 44;
-fx-pref-width: 44;
-fx-max-width: 44;
}
.editor-workspace-status-chip-line-separator {
-fx-min-width: 44;
-fx-pref-width: 44;
-fx-max-width: 44;
}
.editor-workspace-status-chip-indentation {
-fx-min-width: 84;
-fx-pref-width: 84;
-fx-max-width: 84;
}
.editor-workspace-status-chip-language {
-fx-min-width: 72;
-fx-pref-width: 72;
-fx-max-width: 72;
}
.editor-workspace-status-chip-read-only {
-fx-min-width: 88;
-fx-pref-width: 88;
-fx-max-width: 88;
} }
.assets-workspace-split { .assets-workspace-split {

View File

@ -1,4 +1,194 @@
[ { [ {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project ready",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project loading started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project opened",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project ready",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project loading started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project opened",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "0 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "0 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "0 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "0 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "0 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets", "source" : "Assets",
"message" : "0 assets loaded", "message" : "0 assets loaded",
"severity" : "SUCCESS", "severity" : "SUCCESS",

View File

@ -108,6 +108,346 @@
"message" : "Asset scan started", "message" : "Asset scan started",
"severity" : "INFO", "severity" : "INFO",
"sticky" : false "sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project loading started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Studio",
"message" : "Project opened",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "8 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Zelda",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, { }, {
"source" : "Assets", "source" : "Assets",
"message" : "Asset scan diagnostics updated.", "message" : "Asset scan diagnostics updated.",
@ -2158,344 +2498,4 @@
"message" : "Discovered asset: bbb2", "message" : "Discovered asset: bbb2",
"severity" : "INFO", "severity" : "INFO",
"sticky" : false "sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Excluded asset in build: ui/sound",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Excluded asset in build: ui/one-more-atlas",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Excluded asset in build: bigode",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bla",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: one-more-atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: bbb2",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: ui_atlas",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Discovered asset: Bigode",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan started",
"severity" : "INFO",
"sticky" : false
}, {
"source" : "Assets",
"message" : "7 assets loaded",
"severity" : "SUCCESS",
"sticky" : false
}, {
"source" : "Assets",
"message" : "Asset scan diagnostics updated.",
"severity" : "INFO",
"sticky" : false
} ] } ]

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{ {
"name": "main", "name": "main test project",
"version": "1.0.0", "version": "1.0.0",
"language": "pbs", "language": "pbs",
"stdlib": "1", "stdlib": "1",