mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Merge branch 'release/2.9.1'
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
KeePassDX(2.9.1)
|
||||||
|
* Copy password from generator #697
|
||||||
|
* Fix Magikeyboard not fully visible #772
|
||||||
|
* Fix change font size #770
|
||||||
|
* Fix crash #774
|
||||||
|
* Small fixes #771
|
||||||
|
|
||||||
KeePassDX(2.9)
|
KeePassDX(2.9)
|
||||||
* Upgrade to Android API 30 #723
|
* Upgrade to Android API 30 #723
|
||||||
* Save new credentials with Autofill #524
|
* Save new credentials with Autofill #524
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ android {
|
|||||||
applicationId "com.kunzisoft.keepass"
|
applicationId "com.kunzisoft.keepass"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode = 44
|
versionCode = 45
|
||||||
versionName = "2.9"
|
versionName = "2.9.1"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
testApplicationId = "com.kunzisoft.keepass.tests"
|
testApplicationId = "com.kunzisoft.keepass.tests"
|
||||||
|
|||||||
@@ -1,19 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:viewportWidth="108"
|
xmlns:aapt="http://schemas.android.com/aapt"
|
||||||
android:viewportHeight="108"
|
android:viewportWidth="108"
|
||||||
android:width="108dp"
|
android:viewportHeight="108"
|
||||||
android:height="108dp">
|
android:width="108dp"
|
||||||
|
android:height="108dp">
|
||||||
<group
|
<group
|
||||||
android:translateY="-332">
|
android:translateY="-332">
|
||||||
<group
|
<group
|
||||||
android:translateY="332">
|
android:translateY="332">
|
||||||
<path
|
<path
|
||||||
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
||||||
android:fillColor="@color/long_shadow"
|
|
||||||
android:strokeLineJoin="round"
|
android:strokeLineJoin="round"
|
||||||
android:strokeLineCap="round"
|
android:strokeLineCap="round"
|
||||||
android:strokeMiterLimit="4" />
|
android:strokeMiterLimit="4" >
|
||||||
|
<aapt:attr name="android:fillColor">
|
||||||
|
<gradient
|
||||||
|
android:endColor="#0000"
|
||||||
|
android:endX="80"
|
||||||
|
android:endY="80"
|
||||||
|
android:startColor="#4e000000"
|
||||||
|
android:startX="0"
|
||||||
|
android:startY="0"
|
||||||
|
android:type="linear"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</path>
|
||||||
</group>
|
</group>
|
||||||
<group
|
<group
|
||||||
android:scaleX="0.3939503"
|
android:scaleX="0.3939503"
|
||||||
@@ -1,19 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:viewportWidth="108"
|
xmlns:aapt="http://schemas.android.com/aapt"
|
||||||
android:viewportHeight="108"
|
android:viewportWidth="108"
|
||||||
android:width="108dp"
|
android:viewportHeight="108"
|
||||||
android:height="108dp">
|
android:width="108dp"
|
||||||
|
android:height="108dp">
|
||||||
<group
|
<group
|
||||||
android:translateY="-332">
|
android:translateY="-332">
|
||||||
<group
|
<group
|
||||||
android:translateY="332">
|
android:translateY="332">
|
||||||
<path
|
<path
|
||||||
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
||||||
android:fillColor="@color/long_shadow"
|
|
||||||
android:strokeLineJoin="round"
|
android:strokeLineJoin="round"
|
||||||
android:strokeLineCap="round"
|
android:strokeLineCap="round"
|
||||||
android:strokeMiterLimit="4" />
|
android:strokeMiterLimit="4" >
|
||||||
|
<aapt:attr name="android:fillColor">
|
||||||
|
<gradient
|
||||||
|
android:endColor="#0000"
|
||||||
|
android:endX="80"
|
||||||
|
android:endY="80"
|
||||||
|
android:startColor="#4e000000"
|
||||||
|
android:startX="0"
|
||||||
|
android:startY="0"
|
||||||
|
android:type="linear"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</path>
|
||||||
</group>
|
</group>
|
||||||
<group
|
<group
|
||||||
android:scaleX="0.3939503"
|
android:scaleX="0.3939503"
|
||||||
@@ -26,13 +26,11 @@ import com.google.android.material.textfield.TextInputLayout
|
|||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Button
|
import android.widget.*
|
||||||
import android.widget.CompoundButton
|
|
||||||
import android.widget.EditText
|
|
||||||
import android.widget.SeekBar
|
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.password.PasswordGenerator
|
import com.kunzisoft.keepass.password.PasswordGenerator
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
|
import com.kunzisoft.keepass.timeout.ClipboardHelper
|
||||||
import com.kunzisoft.keepass.view.applyFontVisibility
|
import com.kunzisoft.keepass.view.applyFontVisibility
|
||||||
|
|
||||||
class GeneratePasswordDialogFragment : DialogFragment() {
|
class GeneratePasswordDialogFragment : DialogFragment() {
|
||||||
@@ -78,6 +76,15 @@ class GeneratePasswordDialogFragment : DialogFragment() {
|
|||||||
passwordInputLayoutView = root?.findViewById(R.id.password_input_layout)
|
passwordInputLayoutView = root?.findViewById(R.id.password_input_layout)
|
||||||
passwordView = root?.findViewById(R.id.password)
|
passwordView = root?.findViewById(R.id.password)
|
||||||
passwordView?.applyFontVisibility()
|
passwordView?.applyFontVisibility()
|
||||||
|
val passwordCopyView: ImageView? = root?.findViewById(R.id.password_copy_button)
|
||||||
|
passwordCopyView?.visibility = if(PreferencesUtil.allowCopyPasswordAndProtectedFields(activity))
|
||||||
|
View.VISIBLE else View.GONE
|
||||||
|
val clipboardHelper = ClipboardHelper(activity)
|
||||||
|
passwordCopyView?.setOnClickListener {
|
||||||
|
clipboardHelper.timeoutCopyToClipboard(passwordView!!.text.toString(),
|
||||||
|
getString(R.string.copy_field,
|
||||||
|
getString(R.string.entry_password)))
|
||||||
|
}
|
||||||
|
|
||||||
lengthTextView = root?.findViewById(R.id.length)
|
lengthTextView = root?.findViewById(R.id.length)
|
||||||
|
|
||||||
|
|||||||
@@ -89,9 +89,6 @@ class NodeAdapter (private val context: Context)
|
|||||||
get() = mNodeSortedList.size() <= 0
|
get() = mNodeSortedList.size() <= 0
|
||||||
|
|
||||||
init {
|
init {
|
||||||
this.mInfoTextDefaultDimension = context.resources.getDimension(R.dimen.list_medium_size_default)
|
|
||||||
this.mSubtextDefaultDimension = context.resources.getDimension(R.dimen.list_small_size_default)
|
|
||||||
this.mNumberChildrenTextDefaultDimension = context.resources.getDimension(R.dimen.list_tiny_size_default)
|
|
||||||
this.mIconDefaultDimension = context.resources.getDimension(R.dimen.list_icon_size_default)
|
this.mIconDefaultDimension = context.resources.getDimension(R.dimen.list_icon_size_default)
|
||||||
|
|
||||||
assignPreferences()
|
assignPreferences()
|
||||||
@@ -284,7 +281,13 @@ class NodeAdapter (private val context: Context)
|
|||||||
} else {
|
} else {
|
||||||
mInflater.inflate(R.layout.item_list_nodes_entry, parent, false)
|
mInflater.inflate(R.layout.item_list_nodes_entry, parent, false)
|
||||||
}
|
}
|
||||||
return NodeViewHolder(view)
|
val nodeViewHolder = NodeViewHolder(view)
|
||||||
|
mInfoTextDefaultDimension = nodeViewHolder.text.textSize
|
||||||
|
mSubtextDefaultDimension = nodeViewHolder.subText.textSize
|
||||||
|
nodeViewHolder.numberChildren?.let {
|
||||||
|
mNumberChildrenTextDefaultDimension = it.textSize
|
||||||
|
}
|
||||||
|
return nodeViewHolder
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: NodeViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: NodeViewHolder, position: Int) {
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<gradient xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:endColor="#0000"
|
|
||||||
android:endX="80"
|
|
||||||
android:endY="80"
|
|
||||||
android:startColor="#4e000000"
|
|
||||||
android:startX="0"
|
|
||||||
android:startY="0"
|
|
||||||
android:type="linear"/>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
|
|
||||||
<item android:color="@color/transparent"/>
|
|
||||||
</selector>
|
|
||||||
@@ -33,27 +33,45 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/password_input_layout"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
app:passwordToggleEnabled="true"
|
|
||||||
app:passwordToggleTint="?attr/colorAccent"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
android:importantForAutofill="no">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/password"
|
android:id="@+id/password_input_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/password_copy_button"
|
||||||
android:importantForAccessibility="no"
|
android:importantForAccessibility="no"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:ems="10"
|
app:passwordToggleEnabled="true"
|
||||||
android:maxLines="3"
|
app:passwordToggleTint="?attr/colorAccent">
|
||||||
android:hint="@string/hint_generated_password"
|
|
||||||
android:inputType="textPassword|textMultiLine"
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
tools:ignore="TextFields" />
|
android:id="@+id/password"
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ems="10"
|
||||||
|
android:hint="@string/hint_generated_password"
|
||||||
|
android:importantForAccessibility="no"
|
||||||
|
android:importantForAutofill="no"
|
||||||
|
android:inputType="textPassword|textMultiLine"
|
||||||
|
android:maxLines="3"
|
||||||
|
tools:ignore="TextFields" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
|
android:id="@+id/password_copy_button"
|
||||||
|
style="@style/KeepassDXStyle.ImageButton.Simple"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:contentDescription="@string/menu_copy"
|
||||||
|
android:src="@drawable/ic_content_copy_white_24dp" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatButton
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/generate_password_button"
|
android:id="@+id/generate_password_button"
|
||||||
|
|||||||
@@ -17,11 +17,10 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:paddingTop="4dp"
|
android:paddingTop="4dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
@@ -30,19 +29,17 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/magikeyboard_entry_text"
|
android:id="@+id/magikeyboard_entry_text"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/magikeyboard_view"
|
|
||||||
android:background="@color/keyboard_background"
|
android:background="@color/keyboard_background"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textColor="@color/white"/>
|
android:textColor="@color/white"/>
|
||||||
<com.kunzisoft.keepass.view.MagikeyboardView
|
<com.kunzisoft.keepass.view.MagikeyboardView
|
||||||
android:id="@+id/magikeyboard_view"
|
android:id="@+id/magikeyboard_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="4dp"
|
android:paddingTop="4dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
android:background="@color/keyboard_background"
|
android:background="@color/keyboard_background"
|
||||||
android:keyBackground="@drawable/key_background"
|
android:keyBackground="@drawable/key_background"
|
||||||
android:keyTextColor="@color/white"
|
android:keyTextColor="@color/white"
|
||||||
android:popupLayout="@layout/keyboard_popup_fields" />
|
android:popupLayout="@layout/keyboard_popup_fields" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</LinearLayout>
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -287,9 +287,6 @@
|
|||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<!-- Text Size -->
|
<!-- Text Size -->
|
||||||
<dimen name="list_tiny_size_default" translatable="false">9dp</dimen>
|
|
||||||
<dimen name="list_small_size_default" translatable="false">14dp</dimen>
|
|
||||||
<dimen name="list_medium_size_default" translatable="false">16dp</dimen>
|
|
||||||
<dimen name="list_icon_size_default" translatable="false">32dp</dimen>
|
<dimen name="list_icon_size_default" translatable="false">32dp</dimen>
|
||||||
<string name="list_size_string_small" translatable="false">small</string>
|
<string name="list_size_string_small" translatable="false">small</string>
|
||||||
<string name="list_size_string_medium" translatable="false">medium</string>
|
<string name="list_size_string_medium" translatable="false">medium</string>
|
||||||
|
|||||||
@@ -1,19 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:viewportWidth="108"
|
xmlns:aapt="http://schemas.android.com/aapt"
|
||||||
android:viewportHeight="108"
|
android:viewportWidth="108"
|
||||||
android:width="108dp"
|
android:viewportHeight="108"
|
||||||
android:height="108dp">
|
android:width="108dp"
|
||||||
|
android:height="108dp">
|
||||||
<group
|
<group
|
||||||
android:translateY="-332">
|
android:translateY="-332">
|
||||||
<group
|
<group
|
||||||
android:translateY="332">
|
android:translateY="332">
|
||||||
<path
|
<path
|
||||||
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
android:pathData="M65.728516 32.791016L58.052734 35.904297 56.173828 48.380859 35.306641 69.267578 35.238281 73.759766 69.478516 108 108 108 108 70.810547 73.09375 35.904297 65.728516 32.791016Z"
|
||||||
android:fillColor="@color/long_shadow"
|
|
||||||
android:strokeLineJoin="round"
|
android:strokeLineJoin="round"
|
||||||
android:strokeLineCap="round"
|
android:strokeLineCap="round"
|
||||||
android:strokeMiterLimit="4" />
|
android:strokeMiterLimit="4" >
|
||||||
|
<aapt:attr name="android:fillColor">
|
||||||
|
<gradient
|
||||||
|
android:endColor="#0000"
|
||||||
|
android:endX="80"
|
||||||
|
android:endY="80"
|
||||||
|
android:startColor="#4e000000"
|
||||||
|
android:startX="0"
|
||||||
|
android:startY="0"
|
||||||
|
android:type="linear"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</path>
|
||||||
</group>
|
</group>
|
||||||
<group
|
<group
|
||||||
android:scaleX="0.3939503"
|
android:scaleX="0.3939503"
|
||||||
@@ -71,5 +71,6 @@ platform :android do
|
|||||||
gradle(
|
gradle(
|
||||||
task: 'clean'
|
task: 'clean'
|
||||||
)
|
)
|
||||||
|
sh("git", "checkout", ".")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
5
fastlane/metadata/android/en-US/changelogs/45.txt
Normal file
5
fastlane/metadata/android/en-US/changelogs/45.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
* Copy password from generator #697
|
||||||
|
* Fix Magikeyboard not fully visible #772
|
||||||
|
* Fix change font size #770
|
||||||
|
* Fix crash #774
|
||||||
|
* Small fixes #771
|
||||||
@@ -16,9 +16,8 @@
|
|||||||
|
|
||||||
KeePassDX is <b>open source</b> and <b>ad-free</b>.
|
KeePassDX is <b>open source</b> and <b>ad-free</b>.
|
||||||
|
|
||||||
You can donate or buy the <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">pro version</a>
|
You can donate or buy the pro version for better service and a quick development of features you want: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
|
||||||
for better service and a quick development of features you want.
|
|
||||||
|
|
||||||
The project is constantly evolving. Do not hesitate to check the development status of the next updates: <a href="https://github.com/Kunzisoft/KeePassDX/projects">Ongoing tasks</a>
|
The project is constantly evolving. Do not hesitate to check the development status of the next updates: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>
|
||||||
|
|
||||||
Send issues to: <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
Send issues to: <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
||||||
|
|||||||
5
fastlane/metadata/android/fr-FR/changelogs/45.txt
Normal file
5
fastlane/metadata/android/fr-FR/changelogs/45.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
* Copie du mot de passe depuis le générateur #697
|
||||||
|
* Correction Magiclavier non complètement visible #772
|
||||||
|
* Correction du changement de police #770
|
||||||
|
* Correction de crash #774
|
||||||
|
* Petites corrections #771
|
||||||
@@ -16,9 +16,8 @@
|
|||||||
|
|
||||||
KeePassDX est <b>open source</b> et <b>sans publicité</b>.
|
KeePassDX est <b>open source</b> et <b>sans publicité</b>.
|
||||||
|
|
||||||
Vous pouvez faire un don ou acheter la <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">version pro</a>
|
Vous pouvez faire un don ou acheter la version pro pour un meilleur service et un développement rapide des fonctionnalités que vous souhaitez : <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
|
||||||
pour un meilleur service et un développement rapide des fonctionnalités que vous souhaitez.
|
|
||||||
|
|
||||||
Le projet est en constante évolution. N'hésitez pas à vérifier l'état de développement des prochaines mises à jour : <a href="https://github.com/Kunzisoft/KeePassDX/projects">Tâches en cours</a>
|
Le projet est en constante évolution. N'hésitez pas à vérifier l'état de développement des prochaines mises à jour : <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>
|
||||||
|
|
||||||
Vous avez un bug : <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
Vous avez un bug : <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
||||||
|
|||||||
@@ -16,9 +16,8 @@
|
|||||||
|
|
||||||
KeePassDX は <b>オープンソース</b>かつ<b>広告なし</b>です。
|
KeePassDX は <b>オープンソース</b>かつ<b>広告なし</b>です。
|
||||||
|
|
||||||
寄付または <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">pro バージョン</a>の購入は
|
寄付または pro バージョンの購入はサービスの改善と必要な機能の迅速な開発につながります: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
|
||||||
サービスの改善と必要な機能の迅速な開発につながります。
|
|
||||||
|
|
||||||
プロジェクトは常に発展しています。次のアップデートの開発状況を迷わずチェック: <a href="https://github.com/Kunzisoft/KeePassDX/projects">進行中の作業</a>
|
プロジェクトは常に発展しています。次のアップデートの開発状況を迷わずチェック: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>
|
||||||
|
|
||||||
Issue を送る: <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
Issue を送る: <a href="https://github.com/Kunzisoft/KeePassDX/issues">https://github.com/Kunzisoft/KeePassDX/issues</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user