diff --git a/rust/src/pkg.rs b/rust/src/pkg.rs
index a0f923d..69235ae 100644
--- a/rust/src/pkg.rs
+++ b/rust/src/pkg.rs
@@ -3,7 +3,7 @@ use derive_more::Display;
use serde::{Deserialize, Serialize};
use std::{collections::BTreeSet, path::{Path, PathBuf}};
use tokio::fs;
-use enumflags2::{bitflags, BitFlags};
+use enumflags2::{bitflags, make_bitflags, BitFlags};
use crate::{model::{local::{self, PackageManifest}, rainy}, util};
// {namespace}-{name}
@@ -36,6 +36,7 @@ pub enum Status {
#[repr(u8)]
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Feature {
+ Mod,
Hook,
GameIO,
Aime,
@@ -185,11 +186,11 @@ impl Package {
fn parse_status(mft: &PackageManifest) -> Status {
if mft.installers.len() == 0 {
- return Status::OK(BitFlags::default());//Unchecked
+ return Status::OK(make_bitflags!(Feature::Mod));//Unchecked
} else if mft.installers.len() == 1 {
if let Some(serde_json::Value::String(id)) = &mft.installers[0].get("identifier") {
if id == "rainycolor" {
- return Status::OK(BitFlags::default());
+ return Status::OK(make_bitflags!(Feature::Mod));
} else if id == "segatools" {
// Multiple features in the same dll (yubideck etc.) should be supported at some point
let mut flags = BitFlags::default();
diff --git a/src/components/ModList.vue b/src/components/ModList.vue
index 490628e..da33155 100644
--- a/src/components/ModList.vue
+++ b/src/components/ModList.vue
@@ -40,7 +40,7 @@ const group = () => {
};
const missing = computed(() => {
- return prf.current?.mods.filter((m) => !pkgs.hasLocal(m));
+ return prf.current?.mods.filter((m) => !pkgs.hasLocal(m)) ?? [];
});
diff --git a/src/components/ModListEntry.vue b/src/components/ModListEntry.vue
index c1bb547..52806c8 100644
--- a/src/components/ModListEntry.vue
+++ b/src/components/ModListEntry.vue
@@ -8,7 +8,8 @@ import LinkButton from './LinkButton.vue';
import ModTitlecard from './ModTitlecard.vue';
import UpdateButton from './UpdateButton.vue';
import { usePkgStore, usePrfStore } from '../stores';
-import { Package } from '../types';
+import { Feature, Package } from '../types';
+import { hasFeature } from '../util';
const prf = usePrfStore();
const pkgs = usePkgStore();
@@ -33,10 +34,10 @@ const model = computed({
diff --git a/src/components/ModTitlecard.vue b/src/components/ModTitlecard.vue
index 1f2bc12..c950678 100644
--- a/src/components/ModTitlecard.vue
+++ b/src/components/ModTitlecard.vue
@@ -1,8 +1,8 @@