diff --git a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java index eb35a3c0..928c3c20 100644 --- a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java @@ -11,10 +11,8 @@ import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.store.FileNames; import io.xpipe.core.store.FileSystemStore; import io.xpipe.core.util.FailableFunction; - import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; - import lombok.Getter; import java.util.ArrayList; @@ -33,7 +31,8 @@ public class BrowserSessionModel extends BrowserAbstractSessionModel { - state.getEntries().forEach(e -> { + var l = new ArrayList<>(state.getEntries()); + l.forEach(e -> { restoreStateAsync(e, null); // Don't try to run everything in parallel as that can be taxing ThreadHelper.sleep(1000); diff --git a/app/src/main/java/io/xpipe/app/util/RdpConfig.java b/app/src/main/java/io/xpipe/app/util/RdpConfig.java index 6deca6f0..70ef58fe 100644 --- a/app/src/main/java/io/xpipe/app/util/RdpConfig.java +++ b/app/src/main/java/io/xpipe/app/util/RdpConfig.java @@ -1,12 +1,13 @@ package io.xpipe.app.util; +import io.xpipe.app.issue.ErrorEvent; import io.xpipe.core.util.StreamCharset; - import lombok.Value; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.LinkedHashMap; import java.util.Map; @@ -23,6 +24,10 @@ public class RdpConfig { StreamCharset.detectedReader(new BufferedInputStream(Files.newInputStream(Path.of(file)))))) { var content = in.lines().collect(Collectors.joining("\n")); return parseContent(content); + } catch (NoSuchFileException e) { + // Users deleting files is expected + ErrorEvent.expected(e); + throw e; } } diff --git a/dist/changelogs/9.4_incremental.md b/dist/changelogs/9.4_incremental.md index a79460f6..f8ead257 100644 --- a/dist/changelogs/9.4_incremental.md +++ b/dist/changelogs/9.4_incremental.md @@ -1,6 +1,12 @@ ## Connection notes -There is now the new option to add notes to any connection. These notes are written in markdown, and the full markdown spec is supported. +There is now the new option to add notes to any connection. These notes are written in markdown, and the full markdown spec is supported. + +## File transfer reliability improvements + +The file transfer mechanism when editing files had some flaws, which under rare conditions caused the data not being fully transferred or the file browser session to timeout/die. This was especially prevalent when saving a file multiple times in quick succession or when using VSCode on Windows, which performs multiple file writes on save (for whatever reason). + +The entire transfer implementation has been rewritten to iron out these issues and increase reliability. Other file browser actions have also been made more reliable. ## Git vault improvements diff --git a/version b/version index 0359f243..af4ece63 100644 --- a/version +++ b/version @@ -1 +1 @@ -9.4 +9.4-2