diff --git a/LICENSE.md b/LICENSE.md index a71e62a8f..a820047ce 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -187,7 +187,8 @@ APPENDIX: How to apply the Apache License to your work. same "printed page" as the copyright notice for easier identification within third-party archives. -Copyright 2024 Christopher Schnick +Copyright 2023 Christopher Schnick +Copyright 2023 XPipe UG (haftungsbeschränkt) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserSessionTabsComp.java b/app/src/main/java/io/xpipe/app/browser/BrowserSessionTabsComp.java index 40b2d6643..3d4556746 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserSessionTabsComp.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserSessionTabsComp.java @@ -276,7 +276,7 @@ public class BrowserSessionTabsComp extends SimpleComp { var cm = ContextMenuHelper.create(); if (tabModel.isCloseable()) { - var unpin = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("unpinTab")); + var unpin = ContextMenuHelper.item(LabelGraphic.none(), "unpinTab"); unpin.visibleProperty() .bind(PlatformThread.sync(Bindings.createBooleanBinding( () -> { @@ -290,7 +290,7 @@ public class BrowserSessionTabsComp extends SimpleComp { }); cm.getItems().add(unpin); - var pin = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("pinTab")); + var pin = ContextMenuHelper.item(LabelGraphic.none(), "pinTab"); pin.visibleProperty() .bind(PlatformThread.sync(Bindings.createBooleanBinding( () -> { @@ -304,7 +304,7 @@ public class BrowserSessionTabsComp extends SimpleComp { cm.getItems().add(pin); } - var select = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("selectTab")); + var select = ContextMenuHelper.item(LabelGraphic.none(), "selectTab"); select.acceleratorProperty() .bind(Bindings.createObjectBinding( () -> { @@ -325,7 +325,7 @@ public class BrowserSessionTabsComp extends SimpleComp { cm.getItems().add(new SeparatorMenuItem()); - var close = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("closeTab")); + var close = ContextMenuHelper.item(LabelGraphic.none(), "closeTab"); close.setAccelerator(new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN)); close.setOnAction(event -> { if (tab.isClosable()) { @@ -335,7 +335,7 @@ public class BrowserSessionTabsComp extends SimpleComp { }); cm.getItems().add(close); - var closeOthers = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("closeOtherTabs")); + var closeOthers = ContextMenuHelper.item(LabelGraphic.none(), "closeOtherTabs"); closeOthers.setOnAction(event -> { tabs.getTabs() .removeAll(tabs.getTabs().stream() @@ -345,7 +345,7 @@ public class BrowserSessionTabsComp extends SimpleComp { }); cm.getItems().add(closeOthers); - var closeLeft = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("closeLeftTabs")); + var closeLeft = ContextMenuHelper.item(LabelGraphic.none(), "closeLeftTabs"); closeLeft.setOnAction(event -> { var index = tabs.getTabs().indexOf(tab); tabs.getTabs() @@ -356,7 +356,7 @@ public class BrowserSessionTabsComp extends SimpleComp { }); cm.getItems().add(closeLeft); - var closeRight = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("closeRightTabs")); + var closeRight = ContextMenuHelper.item(LabelGraphic.none(), "closeRightTabs"); closeRight.setOnAction(event -> { var index = tabs.getTabs().indexOf(tab); tabs.getTabs() @@ -367,7 +367,7 @@ public class BrowserSessionTabsComp extends SimpleComp { }); cm.getItems().add(closeRight); - var closeAll = ContextMenuHelper.item(LabelGraphic.none(), AppI18n.get("closeAllTabs")); + var closeAll = ContextMenuHelper.item(LabelGraphic.none(), "closeAllTabs"); closeAll.setAccelerator( new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN, KeyCombination.SHIFT_DOWN)); closeAll.setOnAction(event -> { diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferComp.java index 88b192ff2..eb27ac5eb 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferComp.java @@ -13,6 +13,7 @@ import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.css.PseudoClass; import javafx.geometry.Insets; +import javafx.scene.control.ContentDisplay; import javafx.scene.image.Image; import javafx.scene.input.ClipboardContent; import javafx.scene.input.DragEvent; @@ -20,6 +21,7 @@ import javafx.scene.input.Dragboard; import javafx.scene.input.TransferMode; import javafx.scene.layout.Region; +import javafx.scene.text.TextAlignment; import org.kordamp.ikonli.javafx.FontIcon; import java.io.File; @@ -41,6 +43,8 @@ public class BrowserTransferComp extends SimpleComp { var background = new LabelComp(AppI18n.observable("transferDescription")) .apply(struc -> struc.get().setGraphic(new FontIcon("mdi2d-download-outline"))) .apply(struc -> struc.get().setWrapText(true)) + .apply(struc -> struc.get().setTextAlignment(TextAlignment.CENTER)) + .apply(struc -> struc.get().setContentDisplay(ContentDisplay.TOP)) .visible(model.getEmpty()); var backgroundStack = new StackComp(List.of(background)) .grow(true, true) diff --git a/app/src/main/java/io/xpipe/app/comp/base/ToggleSwitchComp.java b/app/src/main/java/io/xpipe/app/comp/base/ToggleSwitchComp.java index 194e1fc0d..ba9d32407 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ToggleSwitchComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ToggleSwitchComp.java @@ -1,6 +1,9 @@ package io.xpipe.app.comp.base; +import io.xpipe.app.comp.Comp; +import io.xpipe.app.comp.CompStructure; import io.xpipe.app.comp.SimpleComp; +import io.xpipe.app.comp.SimpleCompStructure; import io.xpipe.app.util.LabelGraphic; import io.xpipe.app.util.PlatformThread; @@ -18,14 +21,14 @@ import lombok.Value; @Value @EqualsAndHashCode(callSuper = true) -public class ToggleSwitchComp extends SimpleComp { +public class ToggleSwitchComp extends Comp> { Property selected; ObservableValue name; ObservableValue graphic; @Override - protected Region createSimple() { + public CompStructure createBase() { var s = new ToggleSwitch(); s.addEventFilter(KeyEvent.KEY_PRESSED, event -> { if (event.getCode() == KeyCode.SPACE || event.getCode() == KeyCode.ENTER) { @@ -52,6 +55,6 @@ public class ToggleSwitchComp extends SimpleComp { .bind(PlatformThread.sync(graphic.map(labelGraphic -> labelGraphic.createGraphicNode()))); s.pseudoClassStateChanged(PseudoClass.getPseudoClass("has-graphic"), true); } - return s; + return new SimpleCompStructure<>(s); } } diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java index adae664e2..b3ff28823 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java @@ -43,8 +43,7 @@ public class StoreQuickAccessButtonComp extends Comp> { var w = section.getWrapper(); var graphic = w.getEntry().getEffectiveIconFile(); if (c.getList().isEmpty()) { - var item = ContextMenuHelper.item( - new LabelGraphic.ImageGraphic(graphic, 16), w.getName().getValue()); + var item = new MenuItem(w.getName().getValue(), new LabelGraphic.ImageGraphic(graphic, 16).createGraphicNode()); item.setOnAction(event -> { action.accept(section); contextMenu.hide(); diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorage.java b/app/src/main/java/io/xpipe/app/storage/DataStorage.java index 6a8edc0cd..ac7b73717 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorage.java @@ -130,7 +130,7 @@ public abstract class DataStorage { public void forceRewrite() { TrackEvent.info("Starting forced storage rewrite"); getStoreEntries().forEach(dataStoreEntry -> { - dataStoreEntry.reassignStore(); + dataStoreEntry.reassignStoreNode(); }); TrackEvent.info("Finished forced storage rewrite"); } diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java index 792814b64..107c19e6e 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java @@ -543,7 +543,7 @@ public class DataStoreEntry extends StorageElement { dirty = true; } - public void reassignStore() { + public void reassignStoreNode() { this.storeNode = this.storeNode.withStore(store); dirty = true; } diff --git a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java index 6a208a9ea..f2f141b37 100644 --- a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java +++ b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java @@ -188,7 +188,11 @@ public class AppJacksonModule extends SimpleModule { return null; } - value = JacksonMapper.getDefault().readValue(new CharArrayReader(secret.getSecret()), type); + var s = secret.getSecret(); + if (s.length == 0) { + return null; + } + value = JacksonMapper.getDefault().readValue(new CharArrayReader(s), type); } var perUser = useCurrentSecretKey; return perUser diff --git a/app/src/main/java/io/xpipe/app/util/ContextMenuHelper.java b/app/src/main/java/io/xpipe/app/util/ContextMenuHelper.java index e1c2557d2..e143caf8f 100644 --- a/app/src/main/java/io/xpipe/app/util/ContextMenuHelper.java +++ b/app/src/main/java/io/xpipe/app/util/ContextMenuHelper.java @@ -1,5 +1,6 @@ package io.xpipe.app.util; +import io.xpipe.app.core.AppI18n; import javafx.application.Platform; import javafx.geometry.Side; import javafx.scene.Node; @@ -34,8 +35,10 @@ public class ContextMenuHelper { return contextMenu; } - public static MenuItem item(LabelGraphic graphic, String name) { - var i = new MenuItem(name, graphic.createGraphicNode()); + public static MenuItem item(LabelGraphic graphic, String nameKey) { + var i = new MenuItem(); + i.textProperty().bind(AppI18n.observable(nameKey)); + i.setGraphic(graphic.createGraphicNode()); return i; } diff --git a/app/src/main/resources/io/xpipe/app/resources/style/style.css b/app/src/main/resources/io/xpipe/app/resources/style/style.css index 085cdaba3..73087baf6 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/style.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/style.css @@ -5,6 +5,10 @@ } */ +* { + -fx-icon-color: -color-fg-default; +} + .root:light, .root:dark { -fx-background-color: transparent; } diff --git a/dist/changelogs/14.0.md b/dist/changelogs/14.0.md index 6ea709181..bbedd2e82 100644 --- a/dist/changelogs/14.0.md +++ b/dist/changelogs/14.0.md @@ -1,10 +1,10 @@ -XPipe 14 has been the biggest rework so far and provides an improved user experience, better team features, performance and memory improvements, and fixes to many existing bugs and limitations. It will take some days until the initial rough edges are ironed out, but it will get there eventually. So please make sure to report any issues you find, even the small ones. +XPipe 14 is the biggest rework so far and provides an improved user experience, better team features, performance and memory improvements, and fixes to many existing bugs and limitations. It will take some days until the initial rough edges are ironed out, but it will get there eventually. So please make sure to report any issues you find, even the small ones. ## Team vaults + Reusable identities You can now create reusable identities for connections instead of having to enter authentication information for each connection separately. This will also make it easier to handle any authentication changes later on, as only one config has to be changed. -Furthermore, there is a new encryption mechanism for git vaults, allowing multiple users to have their own private connections and identities in that shared vault by encrypting them with the personal key of the user. +Furthermore, there is a new encryption mechanism for git vaults, allowing multiple users to have their own private connections and identities in a shared vault by encrypting them with the personal key of the user. You can combine the reusable identities with the new per-user encryption. Essentially, if you mark a certain identity as being for your user only, it will be encrypted with your personal key and won't be accessible to other team users that have access to the vault without knowing your secret. Any connection that uses this per-user identity, will also be encrypted with your personal secret key, also making them only accessible to you. That way you can control who has access to which connections and login information in your team. You can of course also set identities to be global, so that all team users can utilize them. @@ -17,11 +17,11 @@ If you have previously used a custom vault passphrase to lock your vault, this w ## Services -- The custom service creation has been moved to the top level to make it easier to locate - There is now the option to specify a URL path for services that will be appended when opened in the browser - You can now specify the service type instead of always having to choose between http and https when opening it - Services for containers can now be refreshed from a dedicated button instead of a fixed services entry, saving some vertical display space - Services now show better when they are active or inactive +- The custom service creation has been moved to the top level to make it easier to locate ## File transfers diff --git a/ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityMigrationDeserializer.java b/ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityMigrationDeserializer.java index dd6bd2931..3e24235ab 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityMigrationDeserializer.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityMigrationDeserializer.java @@ -72,6 +72,10 @@ public class IdentityMigrationDeserializer extends DelegatingDeserializer { } } + if (user == null) { + user = containerNode.get("username"); + } + if (password != null && password.isObject() && identity != null && identity.isObject()) { var identityStore = JsonNodeFactory.instance.objectNode(); identityStore.put("type", "localIdentity"); @@ -85,6 +89,19 @@ public class IdentityMigrationDeserializer extends DelegatingDeserializer { inPlace.put("type", "inPlace"); inPlace.set("identityStore", identityStore); + containerNode.set("identity", inPlace); + } else if (password != null) { + var identityStore = JsonNodeFactory.instance.objectNode(); + identityStore.put("type", "localIdentity"); + if (user != null && user.isTextual()) { + identityStore.set("username", user); + } + identityStore.set("password", password); + + var inPlace = JsonNodeFactory.instance.objectNode(); + inPlace.put("type", "inPlace"); + inPlace.set("identityStore", identityStore); + containerNode.set("identity", inPlace); } } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/identity/SyncedIdentityStoreProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/identity/SyncedIdentityStoreProvider.java index b94b47804..d4c98f4c4 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/identity/SyncedIdentityStoreProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/identity/SyncedIdentityStoreProvider.java @@ -1,21 +1,24 @@ package io.xpipe.ext.base.identity; +import atlantafx.base.theme.Styles; +import io.xpipe.app.comp.base.ToggleSwitchComp; import io.xpipe.app.comp.store.StoreEntryWrapper; import io.xpipe.app.core.AppI18n; import io.xpipe.app.ext.DataStoreCreationCategory; import io.xpipe.app.ext.GuiDialog; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.*; -import io.xpipe.app.util.EncryptedValue; -import io.xpipe.app.util.OptionsBuilder; -import io.xpipe.app.util.SecretRetrievalStrategyHelper; -import io.xpipe.app.util.Validator; +import io.xpipe.app.util.*; import io.xpipe.core.store.DataStore; import io.xpipe.core.store.FileNames; +import javafx.beans.binding.Bindings; import javafx.beans.property.Property; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; +import javafx.geometry.HorizontalDirection; +import javafx.scene.control.ContentDisplay; import java.nio.file.Path; import java.util.List; diff --git a/gradle/gradle_scripts/atlantafx-base-2.0.2.jar b/gradle/gradle_scripts/atlantafx-base-2.0.2.jar index 27ad4d895..0f78b0b96 100644 Binary files a/gradle/gradle_scripts/atlantafx-base-2.0.2.jar and b/gradle/gradle_scripts/atlantafx-base-2.0.2.jar differ diff --git a/lang/strings/translations_da.properties b/lang/strings/translations_da.properties index 74450a3fb..a6d9cfa58 100644 --- a/lang/strings/translations_da.properties +++ b/lang/strings/translations_da.properties @@ -73,11 +73,6 @@ error=Der opstod en fejl downloadStageDescription=Flytter downloadede filer til dit systems download-bibliotek og åbner det. ok=Ok search=Søg -unlockAlertTitle=Lås arbejdsområdet op -unlockUserAlertHeader=Indtast dit team-brugernavn for at fortsætte -#custom -unlockAlertHeader=Indtast din adgangskode til vaulten for at fortsætte -enterLockPassword=Indtast adgangskode til lås repeatPassword=Gentag adgangskode askpassAlertTitle=Askpass unsupportedOperation=Operation, der ikke understøttes: $MSG$ @@ -757,10 +752,10 @@ identity.displayDescription=Opret en genanvendelig identitet til forbindelser local=Lokalt shared=Global userDescription=Brugernavn eller foruddefineret identitet til at logge ind som -identityPerUserDescription=Gør kun identiteten tilgængelig for den aktuelle vault-bruger -identityPerUser=Vault-brugeridentitet -identityPerUserDisabled=Vault-brugeridentitet (deaktiveret) -identityPerUserDisabledDescription=Gør kun identiteten tilgængelig for den aktuelle vault-bruger (kræver, at teamet konfigureres) +identityPerUserDescription=Begræns adgangen til denne identitet og dens tilknyttede forbindelser til kun din bruger +identityPerUser=Adgang til personlig identitet +identityPerUserDisabled=Adgang til personlig identitet (deaktiveret) +identityPerUserDisabledDescription=Begræns adgangen til denne identitet og dens tilknyttede forbindelser til kun din bruger (kræver, at teamet konfigureres) library=Bibliotek location=Placering keyAuthentication=Nøglebaseret autentificering diff --git a/lang/strings/translations_de.properties b/lang/strings/translations_de.properties index 00570e058..2d161d398 100644 --- a/lang/strings/translations_de.properties +++ b/lang/strings/translations_de.properties @@ -76,10 +76,6 @@ error=Ein Fehler ist aufgetreten downloadStageDescription=Verschiebt heruntergeladene Dateien in das Download-Verzeichnis deines Systems und öffnet sie. ok=Ok search=Suche -unlockAlertTitle=Arbeitsbereich freischalten -unlockUserAlertHeader=Gib deinen Team-Benutzernamen ein, um fortzufahren -unlockAlertHeader=Gib deine Tresor-Passphrase ein, um fortzufahren -enterLockPassword=Sperrkennwort eingeben repeatPassword=Passwort wiederholen askpassAlertTitle=Askpass unsupportedOperation=Nicht unterstützte Operation: $MSG$ @@ -758,10 +754,10 @@ identity.displayDescription=Eine wiederverwendbare Identität für Verbindungen local=Lokale shared=Global userDescription=Der Benutzername oder die vordefinierte Identität, mit der du dich anmeldest -identityPerUserDescription=Identität nur für den aktuellen Tresorbenutzer verfügbar machen -identityPerUser=Vault-Benutzeridentität -identityPerUserDisabled=Vault-Benutzeridentität (deaktiviert) -identityPerUserDisabledDescription=Identität nur für den aktuellen Tresorbenutzer verfügbar machen (erfordert die Konfiguration eines Teams) +identityPerUserDescription=Beschränke den Zugriff auf diese Identität und die damit verbundenen Verbindungen nur auf deinen Benutzer +identityPerUser=Persönlicher Identitätszugang +identityPerUserDisabled=Persönlicher Identitätszugang (deaktiviert) +identityPerUserDisabledDescription=Beschränke den Zugriff auf diese Identität und die damit verbundenen Verbindungen nur auf deinen Benutzer (Konfiguration des Teams erforderlich) library=Bibliothek location=Standort keyAuthentication=Schlüsselbasierte Authentifizierung diff --git a/lang/strings/translations_en.properties b/lang/strings/translations_en.properties index a384aaa8c..c36113201 100644 --- a/lang/strings/translations_en.properties +++ b/lang/strings/translations_en.properties @@ -80,10 +80,6 @@ error=An error occurred downloadStageDescription=Moves downloaded files into your system downloads directory and opens it. ok=Ok search=Search -unlockAlertTitle=Unlock workspace -unlockUserAlertHeader=Enter your team username to continue -unlockAlertHeader=Enter your vault passphrase to continue -enterLockPassword=Enter lock password repeatPassword=Repeat password askpassAlertTitle=Askpass unsupportedOperation=Unsupported operation: $MSG$ @@ -770,10 +766,10 @@ identity.displayDescription=Create a reusable identity for connections local=Local shared=Global userDescription=The username or predefined identity to log in as -identityPerUserDescription=Make identity only available to current vault user -identityPerUser=Vault user identity -identityPerUserDisabled=Vault user identity (disabled) -identityPerUserDisabledDescription=Make identity only available to current vault user (Requires team to be configured) +identityPerUserDescription=Restrict access to this identity and its associated connections to your user only +identityPerUser=Personal identity access +identityPerUserDisabled=Personal identity access (disabled) +identityPerUserDisabledDescription=Restrict access to this identity and its associated connections to your user only (Requires team to be configured) library=Library location=Location keyAuthentication=Key-based authentication diff --git a/lang/strings/translations_es.properties b/lang/strings/translations_es.properties index 62783cfb7..5ebfd727e 100644 --- a/lang/strings/translations_es.properties +++ b/lang/strings/translations_es.properties @@ -72,10 +72,6 @@ error=Se ha producido un error downloadStageDescription=Mueve los archivos descargados al directorio de descargas de tu sistema y ábrelo. ok=Ok search=Busca en -unlockAlertTitle=Desbloquear espacio de trabajo -unlockUserAlertHeader=Introduce el nombre de usuario de tu equipo para continuar -unlockAlertHeader=Introduce la contraseña de tu bóveda para continuar -enterLockPassword=Introducir contraseña de bloqueo repeatPassword=Repetir contraseña askpassAlertTitle=Askpass unsupportedOperation=Operación no admitida: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Crear una identidad reutilizable para las conexiones local=Local shared=Global userDescription=El nombre de usuario o identidad predefinida con la que iniciar sesión -identityPerUserDescription=Hacer que la identidad sólo esté disponible para el usuario actual de la bóveda -identityPerUser=Identidad de usuario de bóveda -identityPerUserDisabled=Identidad de usuario de bóveda (desactivada) -identityPerUserDisabledDescription=Hacer que la identidad sólo esté disponible para el usuario actual de la bóveda (Requiere que el equipo esté configurado) +identityPerUserDescription=Restringe el acceso a esta identidad y a sus conexiones asociadas sólo a tu usuario +identityPerUser=Acceso a la identidad personal +identityPerUserDisabled=Acceso a la identidad personal (desactivado) +identityPerUserDisabledDescription=Restringe el acceso a esta identidad y a sus conexiones asociadas sólo a tu usuario (Requiere que el equipo esté configurado) library=Biblioteca location=Localización keyAuthentication=Autenticación basada en claves diff --git a/lang/strings/translations_fr.properties b/lang/strings/translations_fr.properties index 9af55b2ea..e441abcce 100644 --- a/lang/strings/translations_fr.properties +++ b/lang/strings/translations_fr.properties @@ -74,10 +74,6 @@ error=Une erreur s'est produite downloadStageDescription=Déplace les fichiers téléchargés dans le répertoire des téléchargements de ton système et l'ouvre. ok=Ok search=Recherche -unlockAlertTitle=Déverrouiller l'espace de travail -unlockUserAlertHeader=Saisis le nom d'utilisateur de ton équipe pour continuer -unlockAlertHeader=Saisis ta phrase d'authentification du coffre-fort pour continuer -enterLockPassword=Saisir le mot de passe de la serrure repeatPassword=Répéter le mot de passe #custom askpassAlertTitle=Demande de mot de passe @@ -755,10 +751,10 @@ identity.displayDescription=Créer une identité réutilisable pour les connexio local=Local shared=Global userDescription=Le nom d'utilisateur ou l'identité prédéfinie pour se connecter -identityPerUserDescription=Rendre l'identité uniquement accessible à l'utilisateur actuel du coffre-fort -identityPerUser=Identité de l'utilisateur de la chambre forte -identityPerUserDisabled=Identité de l'utilisateur de la chambre forte (désactivée) -identityPerUserDisabledDescription=Faire en sorte que l'identité ne soit accessible qu'à l'utilisateur actuel de la chambre forte (nécessite la configuration de l'équipe) +identityPerUserDescription=Limite l'accès à cette identité et à ses connexions associées à ton utilisateur uniquement +identityPerUser=Accès à l'identité personnelle +identityPerUserDisabled=Accès à l'identité personnelle (désactivé) +identityPerUserDisabledDescription=Restreindre l'accès à cette identité et à ses connexions associées à ton utilisateur uniquement (Nécessite la configuration de l'équipe) library=Bibliothèque location=Lieu de travail keyAuthentication=Authentification par clé diff --git a/lang/strings/translations_id.properties b/lang/strings/translations_id.properties index be7a0c6a5..98060a070 100644 --- a/lang/strings/translations_id.properties +++ b/lang/strings/translations_id.properties @@ -72,10 +72,6 @@ error=Terjadi kesalahan downloadStageDescription=Memindahkan file yang diunduh ke dalam direktori unduhan sistem dan membukanya. ok=Baik search=Pencarian -unlockAlertTitle=Membuka kunci ruang kerja -unlockUserAlertHeader=Masukkan nama pengguna tim Anda untuk melanjutkan -unlockAlertHeader=Masukkan kata sandi brankas Anda untuk melanjutkan -enterLockPassword=Memasukkan kata sandi kunci repeatPassword=Mengulang kata sandi askpassAlertTitle=Askpass unsupportedOperation=Operasi yang tidak didukung: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Membuat identitas yang dapat digunakan kembali untuk local=Lokal shared=Global userDescription=Nama pengguna atau identitas yang telah ditetapkan sebelumnya untuk masuk sebagai -identityPerUserDescription=Membuat identitas hanya tersedia untuk pengguna brankas saat ini -identityPerUser=Identitas pengguna brankas -identityPerUserDisabled=Identitas pengguna Vault (dinonaktifkan) -identityPerUserDisabledDescription=Membuat identitas hanya tersedia untuk pengguna vault saat ini (Membutuhkan tim untuk dikonfigurasi) +identityPerUserDescription=Batasi akses ke identitas ini dan koneksi terkait hanya untuk pengguna Anda +identityPerUser=Akses identitas pribadi +identityPerUserDisabled=Akses identitas pribadi (dinonaktifkan) +identityPerUserDisabledDescription=Batasi akses ke identitas ini dan koneksi terkait hanya untuk pengguna Anda (Membutuhkan tim untuk dikonfigurasi) library=Perpustakaan location=Lokasi keyAuthentication=Autentikasi berbasis kunci diff --git a/lang/strings/translations_it.properties b/lang/strings/translations_it.properties index 4d904acf9..1abd6878a 100644 --- a/lang/strings/translations_it.properties +++ b/lang/strings/translations_it.properties @@ -72,10 +72,6 @@ error=Si è verificato un errore downloadStageDescription=Sposta i file scaricati nella directory dei download del sistema e li apre. ok=Ok search=Ricerca -unlockAlertTitle=Sbloccare l'area di lavoro -unlockUserAlertHeader=Inserisci il nome utente della tua squadra per continuare -unlockAlertHeader=Inserisci la passphrase del tuo vault per continuare -enterLockPassword=Inserisci la password di blocco repeatPassword=Ripeti la password askpassAlertTitle=Askpass unsupportedOperation=Operazione non supportata: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Creare un'identità riutilizzabile per le connession local=Locale shared=Globale userDescription=Il nome utente o l'identità predefinita con cui effettuare il login -identityPerUserDescription=Rendere l'identità disponibile solo all'utente corrente del vault -identityPerUser=Identità dell'utente del vault -identityPerUserDisabled=Identità utente del vault (disattivata) -identityPerUserDisabledDescription=Rendi l'identità disponibile solo per l'utente corrente del vault (Richiede la configurazione del team) +identityPerUserDescription=Limita l'accesso a questa identità e alle connessioni ad essa associate solo al tuo utente +identityPerUser=Accesso all'identità personale +identityPerUserDisabled=Accesso all'identità personale (disabilitato) +identityPerUserDisabledDescription=Limita l'accesso a questa identità e alle connessioni associate solo al tuo utente (Richiede la configurazione del team) library=Biblioteca location=Posizione keyAuthentication=Autenticazione basata su chiavi diff --git a/lang/strings/translations_ja.properties b/lang/strings/translations_ja.properties index 85e136d54..b6fe7169d 100644 --- a/lang/strings/translations_ja.properties +++ b/lang/strings/translations_ja.properties @@ -72,10 +72,6 @@ error=エラーが発生した downloadStageDescription=ダウンロードしたファイルをシステムのダウンロード・ディレクトリに移動し、開く。 ok=OK search=検索 -unlockAlertTitle=ワークスペースのロックを解除する -unlockUserAlertHeader=チームユーザー名を入力して続ける -unlockAlertHeader=保管庫のパスフレーズを入力して続行する -enterLockPassword=ロックパスワードを入力する repeatPassword=リピートパスワード askpassAlertTitle=アスクパス unsupportedOperation=サポートされていない操作:$MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=接続用の再利用可能なIDを作成する local=ローカル shared=グローバル userDescription=ログインするためのユーザー名または事前定義されたID -identityPerUserDescription=IDを現在の保管庫ユーザーにのみ公開する -identityPerUser=VaultユーザーID -identityPerUserDisabled=VaultユーザーID(無効) -identityPerUserDisabledDescription=IDを現在のデータ保管庫ユーザーのみが使用できるようにする(チームの構成が必要) +identityPerUserDescription=このIDおよび関連する接続へのアクセスを、自分のユーザーのみに制限する。 +identityPerUser=個人IDアクセス +identityPerUserDisabled=個人IDアクセス(無効) +identityPerUserDisabledDescription=このIDおよび関連する接続へのアクセスを自分のユーザーのみに制限する(チームの設定が必要) library=ライブラリ location=場所 keyAuthentication=鍵ベースの認証 diff --git a/lang/strings/translations_nl.properties b/lang/strings/translations_nl.properties index 846eead6a..fc7b54d02 100644 --- a/lang/strings/translations_nl.properties +++ b/lang/strings/translations_nl.properties @@ -72,10 +72,6 @@ error=Er is een fout opgetreden downloadStageDescription=Verplaatst gedownloade bestanden naar de downloadmap van je systeem en opent deze. ok=Ok search=Zoeken -unlockAlertTitle=Werkruimte ontgrendelen -unlockUserAlertHeader=Voer de gebruikersnaam van je team in om verder te gaan -unlockAlertHeader=Voer je wachtwoordzin voor de kluis in om verder te gaan -enterLockPassword=Wachtwoord voor vergrendeling invoeren repeatPassword=Herhaal wachtwoord askpassAlertTitle=Askpass unsupportedOperation=Niet-ondersteunde bewerking: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Een herbruikbare identiteit maken voor verbindingen local=Lokaal shared=Wereldwijde userDescription=De gebruikersnaam of vooraf gedefinieerde identiteit om als in te loggen -identityPerUserDescription=Identiteit alleen beschikbaar maken voor huidige kluisgebruiker -identityPerUser=Vault gebruikersidentiteit -identityPerUserDisabled=Vault gebruikersidentiteit (uitgeschakeld) -identityPerUserDisabledDescription=Identiteit alleen beschikbaar maken voor huidige kluisgebruiker (Vereist dat team geconfigureerd is) +identityPerUserDescription=Beperk de toegang tot deze identiteit en de bijbehorende verbindingen tot uw gebruiker +identityPerUser=Persoonlijke identiteitstoegang +identityPerUserDisabled=Persoonlijke identiteitstoegang (uitgeschakeld) +identityPerUserDisabledDescription=Beperk de toegang tot deze identiteit en de bijbehorende verbindingen tot uw gebruiker (team moet worden geconfigureerd) library=Bibliotheek location=Locatie keyAuthentication=Verificatie op basis van sleutels diff --git a/lang/strings/translations_pl.properties b/lang/strings/translations_pl.properties index 60b11a0b6..ad09312b7 100644 --- a/lang/strings/translations_pl.properties +++ b/lang/strings/translations_pl.properties @@ -72,10 +72,6 @@ error=Wystąpił błąd downloadStageDescription=Przenosi pobrane pliki do systemowego katalogu pobierania i otwiera go. ok=Ok search=Wyszukaj -unlockAlertTitle=Odblokuj obszar roboczy -unlockUserAlertHeader=Wprowadź nazwę użytkownika zespołu, aby kontynuować -unlockAlertHeader=Wprowadź hasło skarbca, aby kontynuować -enterLockPassword=Wprowadź hasło blokady repeatPassword=Powtórz hasło askpassAlertTitle=Askpass unsupportedOperation=Nieobsługiwana operacja: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Utwórz tożsamość wielokrotnego użytku dla poł local=Lokalny shared=Globalny userDescription=Nazwa użytkownika lub predefiniowana tożsamość do zalogowania się jako -identityPerUserDescription=Udostępnij tożsamość tylko bieżącemu użytkownikowi skarbca -identityPerUser=Tożsamość użytkownika Vault -identityPerUserDisabled=Tożsamość użytkownika Vault (wyłączona) -identityPerUserDisabledDescription=Udostępnij tożsamość tylko bieżącemu użytkownikowi skarbca (wymaga skonfigurowania zespołu) +identityPerUserDescription=Ogranicz dostęp do tej tożsamości i powiązanych z nią połączeń tylko do swojego użytkownika +identityPerUser=Dostęp do tożsamości osobistej +identityPerUserDisabled=Dostęp do tożsamości osobistej (wyłączony) +identityPerUserDisabledDescription=Ogranicz dostęp do tej tożsamości i powiązanych z nią połączeń tylko do swojego użytkownika (wymaga skonfigurowania zespołu) library=Biblioteka location=Lokalizacja keyAuthentication=Uwierzytelnianie oparte na kluczach diff --git a/lang/strings/translations_pt.properties b/lang/strings/translations_pt.properties index 65c91bf39..5a4d2bfc3 100644 --- a/lang/strings/translations_pt.properties +++ b/lang/strings/translations_pt.properties @@ -72,10 +72,6 @@ error=Ocorreu um erro downloadStageDescription=Move os ficheiros transferidos para o diretório de transferências do sistema e abre-o. ok=Ok search=Procura -unlockAlertTitle=Desbloqueia o espaço de trabalho -unlockUserAlertHeader=Introduz o nome de utilizador da tua equipa para continuar -unlockAlertHeader=Introduz a tua frase-chave do cofre para continuar -enterLockPassword=Introduzir a palavra-passe do cadeado repeatPassword=Repete a palavra-passe askpassAlertTitle=Askpass unsupportedOperation=Operação não suportada: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Cria uma identidade reutilizável para ligações local=Local shared=Global userDescription=O nome de utilizador ou identidade predefinida para iniciar sessão como -identityPerUserDescription=Tornar a identidade disponível apenas para o utilizador atual da abóbada -identityPerUser=Identidade do utilizador do cofre -identityPerUserDisabled=Identidade do utilizador da caixa-forte (desactivada) -identityPerUserDisabledDescription=Tornar a identidade disponível apenas para o utilizador atual da abóbada (requer que a equipa seja configurada) +identityPerUserDescription=Restringe o acesso a esta identidade e às ligações associadas apenas ao teu utilizador +identityPerUser=Acesso à identidade pessoal +identityPerUserDisabled=Acesso à identidade pessoal (desativado) +identityPerUserDisabledDescription=Restringir o acesso a esta identidade e às suas ligações associadas apenas ao teu utilizador (requer que a equipa seja configurada) library=Biblioteca location=Localização keyAuthentication=Autenticação baseada em chaves diff --git a/lang/strings/translations_ru.properties b/lang/strings/translations_ru.properties index 347b4c4a2..bdfcaa359 100644 --- a/lang/strings/translations_ru.properties +++ b/lang/strings/translations_ru.properties @@ -72,10 +72,6 @@ error=Произошла ошибка downloadStageDescription=Перемести скачанные файлы в системный каталог загрузок и открой его. ok=Ок search=Поиск -unlockAlertTitle=Разблокировать рабочее пространство -unlockUserAlertHeader=Введите имя пользователя вашей команды, чтобы продолжить -unlockAlertHeader=Введите парольную фразу своего хранилища, чтобы продолжить -enterLockPassword=Введите пароль от замка repeatPassword=Повторять пароль askpassAlertTitle=Askpass unsupportedOperation=Неподдерживаемая операция: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Создайте многоразовую идент local=Локальный shared=Global userDescription=Имя пользователя или предопределенный идентификатор для входа в систему -identityPerUserDescription=Сделать идентификацию доступной только для текущего пользователя хранилища -identityPerUser=Идентификация пользователя хранилища -identityPerUserDisabled=Идентификация пользователя хранилища (отключена) -identityPerUserDisabledDescription=Сделать идентификацию доступной только для текущего пользователя хранилища (Требуется настройка команды) +identityPerUserDescription=Ограничьте доступ к этому идентификатору и связанным с ним соединениям только для своего пользователя +identityPerUser=Доступ к персональной идентификации +identityPerUserDisabled=Доступ к персональным данным (отключен) +identityPerUserDisabledDescription=Ограничьте доступ к этому идентификатору и связанным с ним соединениям только для своего пользователя (Требуется настройка команды) library=Библиотека location=Расположение keyAuthentication=Аутентификация на основе ключей diff --git a/lang/strings/translations_sv.properties b/lang/strings/translations_sv.properties index d21c86c23..8828ffb11 100644 --- a/lang/strings/translations_sv.properties +++ b/lang/strings/translations_sv.properties @@ -72,10 +72,6 @@ error=Ett fel inträffade downloadStageDescription=Flyttar nedladdade filer till systemets nedladdningskatalog och öppnar den. ok=Ok search=Sök i -unlockAlertTitle=Lås upp arbetsytan -unlockUserAlertHeader=Ange ditt användarnamn för att fortsätta -unlockAlertHeader=Ange din lösenfras för valvet för att fortsätta -enterLockPassword=Ange lösenord för lås repeatPassword=Upprepa lösenord askpassAlertTitle=Askpass unsupportedOperation=Operation som inte stöds: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Skapa en återanvändbar identitet för anslutningar local=Lokalt shared=Global userDescription=Användarnamnet eller den fördefinierade identiteten att logga in som -identityPerUserDescription=Gör identiteten tillgänglig endast för aktuell valvanvändare -identityPerUser=Vault användaridentitet -identityPerUserDisabled=Vault användaridentitet (inaktiverad) -identityPerUserDisabledDescription=Gör identiteten tillgänglig endast för den aktuella valvanvändaren (kräver att teamet konfigureras) +identityPerUserDescription=Begränsa åtkomsten till denna identitet och dess tillhörande anslutningar till endast din användare +identityPerUser=Tillgång till personlig identitet +identityPerUserDisabled=Tillgång till personlig identitet (inaktiverad) +identityPerUserDisabledDescription=Begränsa åtkomsten till denna identitet och dess associerade anslutningar till endast din användare (kräver att teamet konfigureras) library=Biblioteket location=Plats keyAuthentication=Nyckelbaserad autentisering diff --git a/lang/strings/translations_tr.properties b/lang/strings/translations_tr.properties index d042a4eaa..934432dd8 100644 --- a/lang/strings/translations_tr.properties +++ b/lang/strings/translations_tr.properties @@ -72,10 +72,6 @@ error=Bir hata oluştu downloadStageDescription=İndirilen dosyaları sisteminizin indirilenler dizinine taşır ve açar. ok=Tamam search=Arama -unlockAlertTitle=Çalışma alanının kilidini aç -unlockUserAlertHeader=Devam etmek için ekip kullanıcı adınızı girin -unlockAlertHeader=Devam etmek için kasa parolanızı girin -enterLockPassword=Kilit şifresini girin repeatPassword=Şifreyi tekrarla askpassAlertTitle=Askpass unsupportedOperation=Desteklenmeyen işlem: $MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=Bağlantılar için yeniden kullanılabilir bir kiml local=Yerel shared=Küresel userDescription=Oturum açmak için kullanıcı adı veya önceden tanımlanmış kimlik -identityPerUserDescription=Kimliği yalnızca mevcut kasa kullanıcısı için kullanılabilir hale getirin -identityPerUser=Kasa kullanıcı kimliği -identityPerUserDisabled=Kasa kullanıcı kimliği (devre dışı) -identityPerUserDisabledDescription=Kimliği yalnızca geçerli kasa kullanıcısı için kullanılabilir hale getirin (Ekibin yapılandırılmasını gerektirir) +identityPerUserDescription=Bu kimliğe ve ilişkili bağlantılarına erişimi yalnızca sizin kullanıcınızla kısıtlayın +identityPerUser=Kişisel kimlik erişimi +identityPerUserDisabled=Kişisel kimlik erişimi (devre dışı) +identityPerUserDisabledDescription=Bu kimliğe ve ilişkili bağlantılarına erişimi yalnızca kullanıcınızla kısıtlayın (Ekibin yapılandırılmasını gerektirir) library=Kütüphane location=Konum keyAuthentication=Anahtar tabanlı kimlik doğrulama diff --git a/lang/strings/translations_zh.properties b/lang/strings/translations_zh.properties index 5e1628c90..5d80ac7fe 100644 --- a/lang/strings/translations_zh.properties +++ b/lang/strings/translations_zh.properties @@ -72,10 +72,6 @@ error=发生错误 downloadStageDescription=将下载的文件移动到系统下载目录并打开。 ok=好的 search=搜索 -unlockAlertTitle=解锁工作区 -unlockUserAlertHeader=输入您的团队用户名以继续 -unlockAlertHeader=输入保险库密码以继续 -enterLockPassword=输入锁密码 repeatPassword=重复密码 askpassAlertTitle=询问密码 unsupportedOperation=不支持的操作:$MSG$ @@ -734,10 +730,10 @@ identity.displayDescription=为连接创建可重复使用的标识 local=本地 shared=全球 userDescription=登录时使用的用户名或预定义身份 -identityPerUserDescription=仅向当前保险库用户提供身份信息 -identityPerUser=保险库用户身份 -identityPerUserDisabled=保险库用户身份(禁用) -identityPerUserDisabledDescription=仅向当前保险库用户提供身份信息(需要配置团队) +identityPerUserDescription=仅限您的用户访问此身份及其相关连接 +identityPerUser=个人身份访问 +identityPerUserDisabled=个人身份访问(禁用) +identityPerUserDisabledDescription=限制只有您的用户才能访问此身份及其相关连接(需要配置团队) library=图书馆 location=地点 keyAuthentication=基于密钥的身份验证 diff --git a/version b/version index c6308b3f3..7a8315136 100644 --- a/version +++ b/version @@ -1 +1 @@ -14.0-78 +14.0-79