diff --git a/.gitignore b/.gitignore
index dbef116..5cbfa52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@ doc/api/
 *.js_
 *.js.deps
 *.js.map
+
+*.txt
\ No newline at end of file
diff --git a/filcnaplo/build.sh b/filcnaplo/build.sh
index 91f1f7e..a1d12d8 100644
--- a/filcnaplo/build.sh
+++ b/filcnaplo/build.sh
@@ -13,7 +13,7 @@ if test -e /mnt/enc/keys/filc3.properties
   set -x ANDROID_SIGNING /mnt/enc/keys/filc3.properties
 end
 
-flutter build apk --release --dart-define=APPVER=(get_version)
+flutter build apk --release --dart-define=APPVER=(get_version) --no-tree-shake-icons
 cp -v "build/app/outputs/flutter-apk/app-release.apk" ~/"Desktop/hu.filc.naplo_"(get_version_bn).apk
 
-notify-send "Flutter" "Apk build done."
\ No newline at end of file
+notify-send "Flutter" "Apk build done."
diff --git a/filcnaplo/lib/database/init.dart b/filcnaplo/lib/database/init.dart
index 36e5864..4f38412 100644
--- a/filcnaplo/lib/database/init.dart
+++ b/filcnaplo/lib/database/init.dart
@@ -31,8 +31,12 @@ Future<Database> initDB() async {
   }
 
   // Migrate Databases
-  await migrateDB(db, "settings", settingsDB.struct.keys, SettingsProvider.defaultSettings().toMap(), createSettingsTable);
-  await migrateDB(db, "users", usersDB.struct.keys, {"role": 0}, createUsersTable);
+  try {
+    await migrateDB(db, "settings", settingsDB.struct.keys, SettingsProvider.defaultSettings().toMap(), createSettingsTable);
+    await migrateDB(db, "users", usersDB.struct.keys, {"role": 0}, createUsersTable);
+  } catch (error) {
+    print("ERROR: migrateDB: $error");
+  }
 
   return db;
 }
@@ -80,12 +84,13 @@ Future<void> migrateDB(
 
   List<Map<String, dynamic>> migrated = [];
 
+  // go through each row and add missing keys or delete non existing keys
   await Future.forEach<Map<String, Object?>>(originalRows, (original) async {
     bool migrationRequired = keys.any((key) => !original.containsKey(key) || original[key] == null);
 
     if (migrationRequired) {
       print("INFO: Migrating $table");
-      var copy = Map<String, dynamic>.from(original);
+      var copy = Map<String, Object?>.from(original);
 
       // Fill missing columns
       for (var key in keys) {
@@ -104,13 +109,14 @@ Future<void> migrateDB(
     }
   });
 
+  // replace the old table with the migrated one
   if (migrated.isNotEmpty) {
     // Delete table
     await db.execute("drop table $table");
 
     // Recreate table
     await create(db);
-    await Future.forEach(migrated, (Map<String, dynamic> copy) async {
+    await Future.forEach(migrated, (Map<String, Object?> copy) async {
       await db.insert(table, copy);
     });
 
diff --git a/filcnaplo/linux/flutter/generated_plugins.cmake b/filcnaplo/linux/flutter/generated_plugins.cmake
index 1fc8ed3..f16b4c3 100644
--- a/filcnaplo/linux/flutter/generated_plugins.cmake
+++ b/filcnaplo/linux/flutter/generated_plugins.cmake
@@ -6,6 +6,9 @@ list(APPEND FLUTTER_PLUGIN_LIST
   url_launcher_linux
 )
 
+list(APPEND FLUTTER_FFI_PLUGIN_LIST
+)
+
 set(PLUGIN_BUNDLED_LIBRARIES)
 
 foreach(plugin ${FLUTTER_PLUGIN_LIST})
@@ -14,3 +17,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
   list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
   list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
 endforeach(plugin)
+
+foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
+  add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
+  list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
+endforeach(ffi_plugin)
diff --git a/filcnaplo_kreta_api b/filcnaplo_kreta_api
index 7190dd5..1325811 160000
--- a/filcnaplo_kreta_api
+++ b/filcnaplo_kreta_api
@@ -1 +1 @@
-Subproject commit 7190dd5d0b46a4f38cb502df6f90b8570fc83c7f
+Subproject commit 132581180c76fd10960abe49f073629e772cfc66