diff --git a/Cargo.lock b/Cargo.lock
index 79c415b..14fe0ed 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -560,7 +560,7 @@ dependencies = [
[[package]]
name = "ic10emu"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"const-crc32",
"convert_case",
@@ -580,7 +580,7 @@ dependencies = [
[[package]]
name = "ic10emu_wasm"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"console_error_panic_hook",
"ic10emu",
@@ -617,7 +617,7 @@ dependencies = [
[[package]]
name = "ic10lsp_wasm"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"console_error_panic_hook",
"futures",
@@ -1844,7 +1844,7 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
[[package]]
name = "xtask"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap",
"thiserror",
diff --git a/Cargo.toml b/Cargo.toml
index c0d0a8c..42e22c3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["ic10lsp_wasm", "ic10emu_wasm", "ic10emu", "xtask"]
resolver = "2"
[workspace.package]
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
[profile.release]
diff --git a/www/package.json b/www/package.json
index 41a1b26..1f4403e 100644
--- a/www/package.json
+++ b/www/package.json
@@ -1,6 +1,6 @@
{
"name": "ic10emu",
- "version": "0.1.0",
+ "version": "0.2.0",
"description": "an IC10 emulator for IC10 mips from Stationeers",
"main": "index.js",
"scripts": {
@@ -72,6 +72,7 @@
"crypto-browserify": "^3.12.0",
"ic10emu_wasm": "file:../ic10emu_wasm/pkg",
"ic10lsp_wasm": "file:../ic10lsp_wasm/pkg",
+ "idb": "^8.0.0",
"jquery": "^3.7.1",
"lit": "^3.1.3",
"lzma-web": "^3.0.1",
diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml
index 70f45d4..47c5f19 100644
--- a/www/pnpm-lock.yaml
+++ b/www/pnpm-lock.yaml
@@ -41,6 +41,9 @@ dependencies:
ic10lsp_wasm:
specifier: file:../ic10lsp_wasm/pkg
version: file:../ic10lsp_wasm/pkg
+ idb:
+ specifier: ^8.0.0
+ version: 8.0.0
jquery:
specifier: ^3.7.1
version: 3.7.1
@@ -4012,6 +4015,10 @@ packages:
postcss: 8.4.38
dev: true
+ /idb@8.0.0:
+ resolution: {integrity: sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==}
+ dev: false
+
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
diff --git a/www/src/ts/app/app.ts b/www/src/ts/app/app.ts
index 94c610d..0f35f58 100644
--- a/www/src/ts/app/app.ts
+++ b/www/src/ts/app/app.ts
@@ -19,6 +19,15 @@ import { VirtualMachine } from "../virtual_machine";
import { openFile, saveFile } from "../utils";
import "../virtual_machine/ui";
+import "./save";
+import { SaveDialog } from "./save";
+
+declare global {
+ const __COMMIT_HASH__: string;
+ const __BUILD_DATE__: string;
+}
+
+import packageJson from "../../../package.json"
@customElement("ic10emu-app")
export class App extends BaseElement {
@@ -43,10 +52,15 @@ export class App extends BaseElement {
`,
];
+ version = packageJson.version;
+ gitVer = __COMMIT_HASH__;
+ buildDate = __BUILD_DATE__;
+
editorSettings: { fontSize: number; relativeLineNumbers: boolean };
- @query("ace-ic10") accessor editor: IC10Editor;
- @query("session-share-dialog") accessor shareDialog: ShareSessionDialog;
+ @query("ace-ic10") editor: IC10Editor;
+ @query("session-share-dialog") shareDialog: ShareSessionDialog;
+ @query("save-dialog") saveDialog: SaveDialog;
// get editor() {
// return this.renderRoot.querySelector("ace-ic10") as IC10Editor;
@@ -67,6 +81,7 @@ export class App extends BaseElement {
root.addEventListener("app-share-session", this._handleShare.bind(this));
root.addEventListener("app-open-file", this._handleOpenFile.bind(this));
root.addEventListener("app-save-as", this._handleSaveAs.bind(this));
+ root.addEventListener("app-save", this._handleSave.bind(this));
return root;
}
@@ -86,6 +101,7 @@ export class App extends BaseElement {
+
`;
}
@@ -102,6 +118,9 @@ export class App extends BaseElement {
saveFile(window.Editor.editorValue);
}
+ _handleSave(_e: Event) {
+ this.saveDialog.show("save");
+ }
_handleOpenFile(_e: Event) {
openFile(window.Editor.editor);
}
diff --git a/www/src/ts/app/index.ts b/www/src/ts/app/index.ts
index fa6f33c..ec08af3 100644
--- a/www/src/ts/app/index.ts
+++ b/www/src/ts/app/index.ts
@@ -1,5 +1,6 @@
import { App } from "./app";
import { Nav } from "./nav";
+import { SaveDialog } from "./save";
import { ShareSessionDialog } from "./share";
import "./icons";
export { App, Nav, ShareSessionDialog }
diff --git a/www/src/ts/app/nav.ts b/www/src/ts/app/nav.ts
index 1fbe901..9d83572 100644
--- a/www/src/ts/app/nav.ts
+++ b/www/src/ts/app/nav.ts
@@ -107,6 +107,7 @@ export class Nav extends BaseElement {