diff --git a/Cargo.lock b/Cargo.lock
index 03dd9b0d5..a25761b6f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -92,6 +92,12 @@ version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+[[package]]
+name = "ascii"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"
+
[[package]]
name = "async-broadcast"
version = "0.5.1"
@@ -2379,6 +2385,15 @@ version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "0.4.8"
@@ -2732,6 +2747,29 @@ dependencies = [
"windows-sys 0.52.0",
]
+[[package]]
+name = "native-dialog"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84e7038885d2aeab236bd60da9e159a5967b47cde3292da3b15ff1bec27c039f"
+dependencies = [
+ "ascii",
+ "block",
+ "cocoa 0.25.0",
+ "core-foundation",
+ "dirs-next",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "once_cell",
+ "raw-window-handle",
+ "thiserror",
+ "versions",
+ "wfd",
+ "which",
+ "winapi",
+]
+
[[package]]
name = "ndk"
version = "0.6.0"
@@ -5072,7 +5110,7 @@ dependencies = [
[[package]]
name = "theseus"
-version = "0.8.2"
+version = "0.8.3-1"
dependencies = [
"async-recursion",
"async-tungstenite",
@@ -5124,7 +5162,7 @@ dependencies = [
[[package]]
name = "theseus_gui"
-version = "0.8.2"
+version = "0.8.3-1"
dependencies = [
"chrono",
"cocoa 0.25.0",
@@ -5133,6 +5171,7 @@ dependencies = [
"dirs",
"futures",
"lazy_static",
+ "native-dialog",
"objc",
"once_cell",
"opener",
@@ -5665,6 +5704,16 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+[[package]]
+name = "versions"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd"
+dependencies = [
+ "itertools",
+ "nom",
+]
+
[[package]]
name = "void"
version = "1.0.2"
@@ -5935,6 +5984,28 @@ dependencies = [
"windows-metadata",
]
+[[package]]
+name = "wfd"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "which"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix 0.38.34",
+]
+
[[package]]
name = "whoami"
version = "1.5.1"
diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json
index f107d06b7..3d1187dc4 100644
--- a/apps/app-frontend/package.json
+++ b/apps/app-frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "@modrinth/app-frontend",
"private": true,
- "version": "0.8.2",
+ "version": "0.8.3-1",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue
index 5c0c095cc..819ddaf78 100644
--- a/apps/app-frontend/src/App.vue
+++ b/apps/app-frontend/src/App.vue
@@ -126,6 +126,7 @@ initialize_state()
})
const handleClose = async () => {
+ await saveWindowState(StateFlags.ALL)
await TauriWindow.getCurrent().close()
}
@@ -293,16 +294,7 @@ async function handleCommand(e) {
-
diff --git a/apps/frontend/src/pages/settings/billing/index.vue b/apps/frontend/src/pages/settings/billing/index.vue
index 470fd0a71..5d9a0a37f 100644
--- a/apps/frontend/src/pages/settings/billing/index.vue
+++ b/apps/frontend/src/pages/settings/billing/index.vue
@@ -344,6 +344,16 @@ definePageMeta({
middleware: "auth",
});
+useHead({
+ script: [
+ {
+ src: "https://js.stripe.com/v3/",
+ defer: true,
+ async: true,
+ },
+ ],
+});
+
const data = useNuxtApp();
const config = useRuntimeConfig();
diff --git a/packages/app-lib/Cargo.toml b/packages/app-lib/Cargo.toml
index dad97541c..1a683b9bd 100644
--- a/packages/app-lib/Cargo.toml
+++ b/packages/app-lib/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "theseus"
-version = "0.8.2"
+version = "0.8.3-1"
authors = ["Jai A "]
edition = "2018"
diff --git a/packages/app-lib/src/api/pack/import/mod.rs b/packages/app-lib/src/api/pack/import/mod.rs
index eca40c767..f0195e492 100644
--- a/packages/app-lib/src/api/pack/import/mod.rs
+++ b/packages/app-lib/src/api/pack/import/mod.rs
@@ -257,7 +257,7 @@ pub async fn copy_dotminecraft(
crate::api::profile::get_full_path(profile_path_id).await?;
// Gets all subfiles recursively in src
- let subfiles = get_all_subfiles(&dotminecraft, true).await?;
+ let subfiles = get_all_subfiles(&dotminecraft, false).await?;
let total_subfiles = subfiles.len() as u64;
let loading_bar = init_or_edit_loading(
diff --git a/packages/app-lib/src/api/profile/mod.rs b/packages/app-lib/src/api/profile/mod.rs
index 7def3a374..4ca41b503 100644
--- a/packages/app-lib/src/api/profile/mod.rs
+++ b/packages/app-lib/src/api/profile/mod.rs
@@ -515,7 +515,9 @@ pub async fn export_mrpack(
let relative_path = pack_get_relative_path(&profile_base_path, &path)?;
if packfile.files.iter().any(|f| f.path == relative_path)
- || !included_candidates_set.contains(&relative_path)
+ || !included_candidates_set
+ .iter()
+ .any(|x| relative_path.starts_with(&**x))
{
continue;
}
diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs
index 43f34bced..dcbf573b2 100644
--- a/packages/app-lib/src/launcher/mod.rs
+++ b/packages/app-lib/src/launcher/mod.rs
@@ -50,7 +50,7 @@ pub fn parse_rules(
// if anything is disallowed, it should NOT be included
// if anything is not disallowed, it shouldn't factor in final result
-// if anything is not allowed, it shouldn't factor in final result
+// if anything is not allowed, it should NOT be included
// if anything is allowed, it should be included
#[tracing::instrument]
pub fn parse_rule(
@@ -85,7 +85,7 @@ pub fn parse_rule(
if res {
Some(true)
} else {
- None
+ Some(false)
}
}
RuleAction::Disallow => {
diff --git a/packages/assets/styles/classes.scss b/packages/assets/styles/classes.scss
index 1089df818..61875ba6a 100644
--- a/packages/assets/styles/classes.scss
+++ b/packages/assets/styles/classes.scss
@@ -833,6 +833,7 @@ a,
// MARKDOWN
.markdown-body {
+ overflow-y: auto;
h1:first-child {
margin-top: 0;
}
@@ -856,6 +857,10 @@ a,
line-height: 1.5;
}
+ h1 {
+ display: block;
+ }
+
h1,
h2 {
padding: 10px 0 5px;
diff --git a/packages/utils/parse.ts b/packages/utils/parse.ts
index aa53d64ef..ef0a631b8 100644
--- a/packages/utils/parse.ts
+++ b/packages/utils/parse.ts
@@ -14,7 +14,7 @@ export const configuredXss = new FilterXSS({
kbd: ['id'],
input: ['checked', 'disabled', 'type'],
iframe: ['width', 'height', 'allowfullscreen', 'frameborder', 'start', 'end'],
- img: [...(whiteList.img || []), 'usemap', 'style'],
+ img: [...(whiteList.img || []), 'usemap', 'style', 'align'],
map: ['name'],
area: [...(whiteList.a || []), 'coords'],
a: [...(whiteList.a || []), 'rel'],
@@ -22,6 +22,8 @@ export const configuredXss = new FilterXSS({
th: [...(whiteList.th || []), 'style'],
picture: [],
source: ['media', 'sizes', 'src', 'srcset', 'type'],
+ p: [...(whiteList.p || []), 'align'],
+ div: [...(whiteList.p || []), 'align'],
},
css: {
whiteList: {