diff --git a/CHANGELOG.md b/CHANGELOG.md
index a323968..7d88f66 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,35 @@
+# v1.1.0
+Stable release, bugfixes and new features.
+
+## Changes
+### UI
+-  Update xmrig and p2pool only if bundle button is checked.
+-  Default value for bundle button depends of bundle or standalone version.
+-  Ask user to restart Gupaxx after updating.
+-  Prevent user to update twice without restart.
+### Internal
+- Bump deps  
+- Update CI to produce different Gupaxx binary for standalone and bundle version.
+- Update tools release to include different default value depending of standalone and bundle version. 
+- Use bundled XMRig and P2Pool of Gupaxx instead of upstream version.
+- Update test
+### Doc
+- Update DIFFERENCES and ARCHITECTURE to reflect updates differences.
+## Fixes
+- fix temporary directories of updates not deleted introduced in fork
+- fix https://github.com/Cyrix126/gupaxx/issues/3  
+- fix https://github.com/Cyrix126/gupaxx/issues/4  
+- fix https://github.com/Cyrix126/gupaxx/issues/5  
+
+## Notes 
+### Do not use built in updates to upgrade to this version
+This update bump the 1.x.0 number, which would mean breaking changes. However, it is only because updating previously from Gupaxx (in =<1.0.0) without manually downloading from github release would upgrade P2Pool and XMRig from upstream, which is a behaviour that has been modified in this release.  
+No configuration file change is needed, just update from github for this release. 
+
+## Bundled Versions
+* [`P2Pool v3.10`](https://github.com/SChernykh/p2pool/releases/tag/v3.10)  
+* [`XMRig v6.21.1`](https://github.com/xmrig/xmrig/releases/tag/v6.21.1)  
+
 # v1.0.0
 Stable release
 
diff --git a/Cargo.lock b/Cargo.lock
index d1054af..93ba58e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2125,7 +2125,7 @@ dependencies = [
 
 [[package]]
 name = "gupaxx"
-version = "1.0.0"
+version = "1.1.0"
 dependencies = [
  "anyhow",
  "benri",
diff --git a/Cargo.toml b/Cargo.toml
index 60dd83f..66f83f7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
 cargo-features = ["profile-rustflags"]
 [package]
 name = "gupaxx"
-version = "1.0.0"
+version = "1.1.0"
 authors = ["cyrix126 <gupaxx@baermail.fr>"]
 description = "Fork of Gupax integrating the XMRvsBeast Raffle "
 documentation = "https://github.com/cyrix126/gupaxx"
diff --git a/TODO_XMRvsBeast.md b/TODO_XMRvsBeast.md
index e60cde7..dfa3841 100644
--- a/TODO_XMRvsBeast.md
+++ b/TODO_XMRvsBeast.md
@@ -54,7 +54,7 @@
   - [x] adapt README for XvB 
     - [x] beta release
     - [x] stable release
-  - [ ] video tutorial to set up XvB Tab
+  - [x] video tutorial to set up XvB Tab
   - [x] adapt doc for new code
   - [x] cargo package metadata
   - [x] pgp signatures
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 1d23c09..68d1d13 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -60,6 +60,7 @@ pub mod resize;
 // The state of the outer main [App].
 // See the [State] struct in [state.rs] for the
 // actual inner state of the tab settings.
+#[allow(dead_code)]
 pub struct App {
     // Misc state
     pub tab: Tab,   // What tab are we on?
diff --git a/src/components/node.rs b/src/components/node.rs
index 636c082..20a458e 100644
--- a/src/components/node.rs
+++ b/src/components/node.rs
@@ -67,7 +67,7 @@ const REMOTE_NODE_MAX_CHARS: usize = {
     assert!(len != 0);
     len
 };
-
+#[allow(dead_code)]
 pub struct RemoteNode {
     pub ip: &'static str,
     pub location: &'static str,
@@ -278,6 +278,7 @@ impl NodeData {
 //
 // This struct leaves out most fields on purpose,
 // we only need a few to verify the node is ok.
+#[allow(dead_code)] // allow dead code because Deserialize doesn't use all the fields in this program
 #[derive(Debug, serde::Deserialize)]
 pub struct GetInfo<'a> {
     pub id: &'a str,
diff --git a/src/components/update.rs b/src/components/update.rs
index 0f6891d..d86623a 100644
--- a/src/components/update.rs
+++ b/src/components/update.rs
@@ -530,13 +530,11 @@ impl Update {
                 path.display()
             );
             // if bundled, create directory for p2pool and xmrig if not present
-            if lock!(og).gupax.bundled {
-                if name == P2POOL_BINARY || name == XMRIG_BINARY {
-                    std::fs::create_dir_all(
-                        path.parent()
-                            .ok_or_else(|| anyhow!(format!("{} path failed", name)))?,
-                    )?;
-                }
+            if lock!(og).gupax.bundled && (name == P2POOL_BINARY || name == XMRIG_BINARY) {
+                std::fs::create_dir_all(
+                    path.parent()
+                        .ok_or_else(|| anyhow!(format!("{} path failed", name)))?,
+                )?;
             }
             // Move downloaded path into old path
             std::fs::rename(entry.path(), path)?;
diff --git a/src/helper/mod.rs b/src/helper/mod.rs
index 64f36d3..746d72b 100644
--- a/src/helper/mod.rs
+++ b/src/helper/mod.rs
@@ -125,6 +125,7 @@ impl Default for Sys {
 //---------------------------------------------------------------------------------------------------- [Process] Struct
 // This holds all the state of a (child) process.
 // The main GUI thread will use this to display console text, online state, etc.
+#[allow(dead_code)]
 #[derive(Debug)]
 pub struct Process {
     pub name: ProcessName,     // P2Pool or XMRig?
diff --git a/src/helper/xmrig.rs b/src/helper/xmrig.rs
index 0aeb697..f932b4b 100644
--- a/src/helper/xmrig.rs
+++ b/src/helper/xmrig.rs
@@ -666,6 +666,7 @@ impl ImgXmrig {
 }
 
 //---------------------------------------------------------------------------------------------------- Public XMRig API
+#[allow(dead_code)]
 #[derive(Debug, Clone)]
 pub struct PubXmrigApi {
     pub output: String,
diff --git a/src/helper/xvb/mod.rs b/src/helper/xvb/mod.rs
index 8632d2c..f41877d 100644
--- a/src/helper/xvb/mod.rs
+++ b/src/helper/xvb/mod.rs
@@ -361,10 +361,11 @@ impl Helper {
     }
 }
 //---------------------------------------------------------------------------------------------------- Public XvB API
+
 #[derive(Debug, Clone, Default)]
 pub struct PubXvbApi {
     pub output: String,
-    pub uptime: u64,
+    pub _uptime: u64,
     pub xvb_sent_last_hour_samples: SamplesAverageHour,
     pub p2pool_sent_last_hour_samples: SamplesAverageHour,
     pub stats_pub: XvbPubStats,
diff --git a/src/helper/xvb/public_stats.rs b/src/helper/xvb/public_stats.rs
index c53fa0b..b821cb2 100644
--- a/src/helper/xvb/public_stats.rs
+++ b/src/helper/xvb/public_stats.rs
@@ -17,6 +17,7 @@ use crate::{
 
 use super::{rounds::XvbRound, PubXvbApi};
 
+#[allow(dead_code)] // because deserialize doesn't use all the fields
 #[derive(Debug, Clone, Default, Deserialize)]
 pub struct XvbPubStats {
     pub time_remain: u32, // remaining time of round in minutes
diff --git a/src/main.rs b/src/main.rs
index 768a77f..0c772c0 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -87,12 +87,13 @@ fn main() {
 
     // Run Gupax.
     info!("/*************************************/ Init ... OK /*************************************/");
-    let _ = eframe::run_native(
+    eframe::run_native(
         &app.name_version.clone(),
         options,
         Box::new(move |cc| {
             egui_extras::install_image_loaders(&cc.egui_ctx);
             Box::new(App::cc(cc, resolution, app))
         }),
-    );
+    )
+    .unwrap();
 }
diff --git a/src/utils/sudo.rs b/src/utils/sudo.rs
index e9bbebe..d56938a 100644
--- a/src/utils/sudo.rs
+++ b/src/utils/sudo.rs
@@ -35,6 +35,7 @@ use std::{
 };
 use zeroize::Zeroize;
 
+#[allow(dead_code)] // for dummy value windows
 #[derive(Debug, Clone)]
 pub struct SudoState {
     pub windows: bool, // If this bool is set, this struct is just a dummy so I don't have to change my type signatures :)