diff --git a/packages/app-lib/src/state/db.rs b/packages/app-lib/src/state/db.rs
index 14c53d81..607a345f 100644
--- a/packages/app-lib/src/state/db.rs
+++ b/packages/app-lib/src/state/db.rs
@@ -3,6 +3,7 @@ use sqlx::sqlite::{
     SqliteConnectOptions, SqliteJournalMode, SqlitePoolOptions,
 };
 use sqlx::{Pool, Sqlite};
+use tokio::time::Instant;
 use std::str::FromStr;
 use std::time::Duration;
 
@@ -17,8 +18,10 @@ pub(crate) async fn connect() -> crate::Result<Pool<Sqlite>> {
         crate::util::io::create_dir_all(&settings_dir).await?;
     }
 
-    let uri = format!("sqlite:{}", settings_dir.join("app.db").display());
+    let db_path = settings_dir.join("app.db");
+    let db_exists = db_path.exists();
 
+    let uri = format!("sqlite:{}", db_path.display());
     let conn_options = SqliteConnectOptions::from_str(&uri)?
         .busy_timeout(Duration::from_secs(30))
         .journal_mode(SqliteJournalMode::Wal)
@@ -30,10 +33,16 @@ pub(crate) async fn connect() -> crate::Result<Pool<Sqlite>> {
         .connect_with(conn_options)
         .await?;
 
-    fix_migration_20240711194701(&pool).await?; // Patch by AstralRinth - 08.07.2025
+    if db_exists {
+        fix_modrinth_issued_migrations(&pool).await?;
+    }
 
     sqlx::migrate!().run(&pool).await?;
 
+    if !db_exists {
+        fix_modrinth_issued_migrations(&pool).await?;
+    }
+
     if let Err(err) = stale_data_cleanup(&pool).await {
         tracing::warn!(
             "Failed to clean up stale data from state database: {err}"
@@ -66,8 +75,17 @@ async fn stale_data_cleanup(pool: &Pool<Sqlite>) -> crate::Result<()> {
 }
 /*
 // Patch by AstralRinth - 08.07.2025
+Problem files:
+/packages/app-lib/migrations/20240711194701_init.sql !eol
+/packages/app-lib/migrations/20240813205023_drop-active-unique.sql !eol
+/packages/app-lib/migrations/20240930001852_disable-personalized-ads.sql !eol
+/packages/app-lib/migrations/20241222013857_feature-flags.sql !eol
 */
-async fn fix_migration_20240711194701(pool: &Pool<Sqlite>) -> crate::Result<()> {
+async fn fix_modrinth_issued_migrations(
+    pool: &Pool<Sqlite>,
+) -> crate::Result<()> {
+    let started = Instant::now();
+    tracing::info!("Fixing modrinth issued migrations");
     sqlx::query(
             r#"
             UPDATE "_sqlx_migrations"
@@ -77,5 +95,41 @@ async fn fix_migration_20240711194701(pool: &Pool<Sqlite>) -> crate::Result<()>
         )
         .execute(pool)
         .await?;
+    tracing::info!("⚙️ Fixed first migration");
+    sqlx::query(
+            r#"
+            UPDATE "_sqlx_migrations"
+            SET checksum = X'5b53534a7ffd74eebede234222be47e1d37bd0cc5fee4475212491b0c0379c16e3079e08eee0af959b1fa20835eeb206'
+            WHERE version = '20240813205023';
+            "#,
+        )
+        .execute(pool)
+        .await?;
+    tracing::info!("⚙️ Fixed second migration");
+    sqlx::query(
+            r#"
+            UPDATE "_sqlx_migrations"
+            SET checksum = X'c0de804f171b5530010edae087a6e75645c0e90177e28365f935c9fdd9a5c68e24850b8c1498e386a379d525d520bc57'
+            WHERE version = '20240930001852';
+            "#,
+        )
+        .execute(pool)
+        .await?;
+    tracing::info!("⚙️ Fixed third migration");
+    sqlx::query(
+            r#"
+            UPDATE "_sqlx_migrations"
+            SET checksum = X'c17542cb989a0466153e695bfa4717f8970feee185ca186a2caa1f2f6c5d4adb990ab97c26cacfbbe09c39ac81551704'
+            WHERE version = '20241222013857';
+            "#,
+        )
+        .execute(pool)
+        .await?;
+    tracing::info!("⚙️ Fixed fourth migration");
+    let elapsed = started.elapsed();
+    tracing::info!(
+        "✅ Fixed all known modrinth-issued migrations in {:.2?}",
+        elapsed
+    );
     Ok(())
 }
