Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
ce7be71
Migrate to psalm 5
mstilkerich Dec 22, 2022
34f7341
Fix CI config
mstilkerich Dec 22, 2022
be84b24
Fixes for better handling of incoming vCard4 (Fixes: #411)
mstilkerich Dec 26, 2022
73b94ff
Throw exception on error in DelayedPhotoLoader
mstilkerich Dec 27, 2022
1edbdba
Do not attempt to download photos from URIs with unsupported URI scheme
mstilkerich Dec 27, 2022
6b46005
Upgrade deprecated github actions
mstilkerich Dec 27, 2022
7e12372
Run unit tests also with PHP 8.2
mstilkerich Dec 27, 2022
e9c3f6b
Test for AddressbookManager::getTemplateAddressbookForAccount()
mstilkerich Dec 27, 2022
e2a5ec3
Only consider active, rw addressbooks as candidates for special abooks
mstilkerich Dec 29, 2022
1dd9290
Tests for AdminSettings::getSpecialAddressbooks()
mstilkerich Dec 29, 2022
2c91afa
Test for AdminSettings::getAddressbookTemplate()
mstilkerich Dec 29, 2022
1dfc3e4
Remove SettingsUITest (was already disabled)
mstilkerich Dec 30, 2022
8c111bb
Move some test logic from main Config class to test pendant
mstilkerich Dec 30, 2022
bd23955
Delete removed extra addressbooks before updating fixed settings
mstilkerich Dec 30, 2022
da9b481
When updating presets, handle error in querying server-side propertie…
mstilkerich Dec 30, 2022
b1c0790
Test for AdminSettings::initPresets() (work in progress)
mstilkerich Dec 30, 2022
241d8af
Extend initPresets() test by added preset account
mstilkerich Dec 30, 2022
12bc2af
Add getPreset() test case for invalid preset key
mstilkerich Dec 30, 2022
1366cdf
git ignore drawio backup files
mstilkerich Jan 3, 2023
99c0e38
Test for addressbook list creation in settings pane
mstilkerich Jan 3, 2023
d5c5d04
Avoid account attributes in a template addressbook
mstilkerich Jan 4, 2023
421a17d
UI: Check that requested UI requests only target visible accounts
mstilkerich Jan 4, 2023
008e893
Fix: the tables inside the settings form would have the same ID as th…
mstilkerich Jan 4, 2023
499f303
Annotate attrib type in requestForm
mstilkerich Jan 4, 2023
54d1299
Do not generate password element with a valueless value attribute
mstilkerich Jan 4, 2023
ca46b14
tmplAccountDetails() always returns an empty string on error
mstilkerich Jan 4, 2023
2334ada
Test for account details form generation (work in progress)
mstilkerich Jan 4, 2023
1b9a2ce
Remove dead code
mstilkerich Jan 4, 2023
6780fe0
UI: ensure that addressbook does not belong to hidden preset for doin…
mstilkerich Jan 4, 2023
03b52a2
Test for addressbook details form generation
mstilkerich Jan 4, 2023
5815f84
Fix regression: active setting in template addressbook would not be s…
mstilkerich Jan 5, 2023
572178c
Test for AccSave action (work in progress)
mstilkerich Jan 5, 2023
07893fa
Fix regression: active setting in template addressbook would not be s…
mstilkerich Jan 6, 2023
fc1eb39
Raise an error instead of ignoring invalid time strings in submitted …
mstilkerich Jan 6, 2023
fb8ba53
Test for updating a preset account with fixed settings
mstilkerich Jan 6, 2023
176270e
Abort with error on invalid form data input
mstilkerich Jan 7, 2023
d09d498
RcmAdapterStub allows checking for emitted client messages
mstilkerich Jan 7, 2023
bc140b0
Tests for plugin.carddav.AbSave
mstilkerich Jan 7, 2023
7fc48de
Tests for plugin.carddav.AccAdd
mstilkerich Jan 7, 2023
bebbdba
Minimal test for UI::renderAddressbookList()
mstilkerich Jan 7, 2023
b3574f8
Minimal tests for UI::actionAccDetails() and UI::actionAbDetails()
mstilkerich Jan 7, 2023
8e6f7f4
More precise psalm type in RoundcubeLogger
mstilkerich Jan 7, 2023
b6bf995
AbToggle: Only send command to reset toggle UI element for addressboo…
mstilkerich Jan 7, 2023
628ca1f
Tests for plugin.carddav.AbToggleActive
mstilkerich Jan 7, 2023
cc83bfd
Backend will refuse Frontend request to remove user account created f…
mstilkerich Jan 7, 2023
57205e8
Tests for plugin.carddav.AccRm
mstilkerich Jan 7, 2023
25b824c
Tests for plugin.carddav.AccRedisc
mstilkerich Jan 7, 2023
cbf5cfe
UI AbSync action: check that the target addressbook is visible in the UI
mstilkerich Jan 9, 2023
d591fe3
Addressbook: Acquire sync service and dav object through Config to al…
mstilkerich Jan 9, 2023
a43426a
Test for plugin.carddav.AbSync
mstilkerich Jan 9, 2023
16c6832
Use development version of phpcompatibility and fix resulting errors
mstilkerich Jan 10, 2023
d0121fc
Initialization of Db from INIT-currentschema script (Fixes #395)
mstilkerich Jan 10, 2023
e5e63c4
Minimum supported PHP version for 5.0 is PHP 7.4 (Fixes #414)
mstilkerich Jan 10, 2023
36cd6b9
Add postgres 15 to CI matrix
mstilkerich Jan 10, 2023
a94e364
Set carddavclient requirement to 1.3.0 (Fixes #401)
mstilkerich Jan 10, 2023
e05b714
UI fix for elastic: In mobile view, don't show the prev/next buttons …
mstilkerich Jan 12, 2023
43c9518
Raise required roundcube version to 1.4.0
mstilkerich Jan 13, 2023
74683a8
Simple browser validation in settings forms (Fixes #400)
mstilkerich Jan 13, 2023
1747d83
Remove the discovery URL pattern for now
mstilkerich Jan 14, 2023
9b95262
Fix display of fontawesome icons on firefox
mstilkerich Jan 14, 2023
5d48553
Reset version to development
mstilkerich Jan 14, 2023
2d646f8
Explicitly declare dependency on ext-random
mstilkerich Jan 15, 2023
4558a10
Include the optional autoloader inside rcmcarddav dir before declarin…
mstilkerich Jan 15, 2023
384f152
Revert ext-random dependency
mstilkerich Jan 15, 2023
3aa6a44
CHANGELOG entry for issue #415
mstilkerich Jan 15, 2023
78d40b5
Remove string interpolation variants deprecated with PHP 8.2
mstilkerich Jan 15, 2023
be3eb9d
Fix some psalm mixed types
mstilkerich Jan 16, 2023
dd319f3
Fix typo (Fixes #417)
mstilkerich Jan 19, 2023
78c2a1c
Tests for password encryption and decryption
mstilkerich Jan 19, 2023
b4bcaff
Tag 5.0.1
mstilkerich Jan 20, 2023
a196b4f
Reset version to development
mstilkerich Jan 20, 2023
84b525a
Avoid sabre/vobject 4.5.2 for now
mstilkerich Jan 20, 2023
309777a
Allow sabre/vobject 4 except for 4.5.2
mstilkerich Jan 24, 2023
3df45f8
Fix for psalm 5.5
mstilkerich Jan 24, 2023
3205532
Explain in the upgrade notes that a login after upgrade is necessary
mstilkerich Jan 28, 2023
296b9a9
Leave doc in tarball
mstilkerich Jan 28, 2023
8593a96
Avoid psalm warnings
mstilkerich Feb 26, 2023
b246c32
Allow to hide contacts without email also for user-defined addressboo…
mstilkerich Feb 26, 2023
45b3726
Adapt for Psalm 5.11
mstilkerich May 16, 2023
21170df
Update Psalm to 5.12.0
mstilkerich May 23, 2023
0e48ebe
Update to Psalm 5.13
mstilkerich Jun 28, 2023
f3d7175
Emphasize that login is needed to init db
mstilkerich Jun 28, 2023
93ece49
Add a flags column for accounts
mstilkerich Aug 8, 2023
5e6fdb8
JsonDatabase: Check columns match schema when importing data
mstilkerich Aug 14, 2023
565abcd
Create Accounts honoring new Account flags in DB
mstilkerich Aug 14, 2023
9bf8cb7
Expand gitignore
mstilkerich Aug 14, 2023
02e0078
AdminSettings: Support non_preemptive_auth and ssl_noverify
mstilkerich Aug 14, 2023
cd831c4
UI: Add preemptive_basic_auth and ssl_noverify flags
mstilkerich Aug 18, 2023
bb2262d
Take advanced section from roundcube standard settings to collapse le…
mstilkerich Aug 18, 2023
b678461
Fix (unreleased Bug in #429 implementation): require_always_email mus…
mstilkerich Aug 19, 2023
b1e8a3e
Extend UI Test for new flags
mstilkerich Aug 19, 2023
c5f9c94
Add CHANGELOG entry for preemptive_basic_auth and ssl_noverify
mstilkerich Aug 19, 2023
bd3c8d9
Update to Psalm 5.13
mstilkerich Jun 28, 2023
7f27a2d
Merge branch 'issue407_preemptive_auth_ssl_noverify' (Fixes #407)
mstilkerich Aug 19, 2023
bd2abfe
Support setting roundcube's default addressbook to an addressbook fro…
mstilkerich Aug 19, 2023
8f5b4c7
Upgrade to Psalm 5.14
mstilkerich Aug 19, 2023
db2ffe5
Set version 5.1.0
mstilkerich Aug 19, 2023
0f81996
Reset version to development
mstilkerich Aug 19, 2023
e23af2d
Fixup CHANGELOG for 5.1.0
mstilkerich Aug 20, 2023
c6e62c2
Update to Psalm 5.15
mstilkerich Aug 21, 2023
3a7b796
Upgrade github actions to node 20
mstilkerich Mar 23, 2024
49fc99b
Add codecov token for coverage upload
mstilkerich Mar 23, 2024
a7762a2
Upgrade one missed checkout action
mstilkerich Mar 23, 2024
8e9e9a7
Fix migration 7: URL placeholders incorrectly replaced
mstilkerich Apr 3, 2024
3cfb732
Fix regression test for Migration 7 Bugfix
mstilkerich Apr 3, 2024
a140f57
Adjust interfaces to upcoming roundcube 1.7 changes (Fixes: #467)
mstilkerich Apr 3, 2024
3d89612
Update CHANGELOG.md
mstilkerich Apr 4, 2024
2d8e955
Store imported vcards directly to CardDAV server (#470)
mstilkerich May 23, 2024
0bf900f
Fix search function
nick-oconnor May 31, 2024
e2c0b77
Fix psalm type annotation
mstilkerich Jun 3, 2024
0c1f597
Fix unreleased regression: Move/copy cards between carddav addressboo…
mstilkerich Jun 5, 2024
24507c6
Determine mysql / mariadb command name for dbinterop tests
mstilkerich Jun 5, 2024
76a92de
Next attempt to determine mysql command name
mstilkerich Jun 5, 2024
0b1ac80
Roundcube 1.4 is not supported upstream anymore
mstilkerich Jul 23, 2025
ce546a8
Update to Psalm 5.26.1 and fix new warnings
mstilkerich Jul 23, 2025
0602a65
Update CI to latest versions
mstilkerich Jul 23, 2025
307ff43
PHP compatibility check extended for all supported PHP versions
mstilkerich Jul 23, 2025
42ac486
Try to fix mariadb:11
mstilkerich Jul 23, 2025
04c0e72
Fix syntax error
mstilkerich Jul 23, 2025
8e2c2f3
Another go at mysql container
mstilkerich Jul 24, 2025
5cad647
Try PHP 8.4 again by removing psalm from standard dev-deps
mstilkerich Jul 24, 2025
c26e770
Add missing psalm composer-bin
mstilkerich Jul 24, 2025
4dceb0e
Fix PHPUnit 10 deprecations
mstilkerich Jul 24, 2025
fca7fee
Create testreport dir before running PHPUnit
mstilkerich Jul 24, 2025
5042b14
Fix PHPUnit 11 deprecations that do not conflict with PHPUnit 9
mstilkerich Jul 24, 2025
8665b8e
disable bin-links of composer-bin
mstilkerich Jul 26, 2025
a80d3b8
Change default PHP version on GH actions to 8.2
mstilkerich Jul 26, 2025
8518e54
Skip testErrorMessageOnUnsupportedDbProvider for Roundcube 1.7
mstilkerich Jul 26, 2025
1479929
Update codecov-action to v5
mstilkerich Jul 26, 2025
b80a5bc
codecov: only upload specified files
mstilkerich Jul 26, 2025
6c6d8bf
Add a note regarding URL encoding and matchurl (Fixes #483)
mstilkerich Jul 29, 2025
c57db25
Set version 5.1.1
mstilkerich Jul 29, 2025
adb6146
Reset version to development and exclude vendor-bin from tarball
mstilkerich Jul 29, 2025
42816d8
Set version to 5.1.2
mstilkerich Sep 28, 2025
10361fd
Fix tarball build on Parallels 26 shared folder
mstilkerich Sep 28, 2025
a076c0c
Workaround randomly generated keys in postgres dumps
mstilkerich Sep 30, 2025
73685a4
Fix annotation syntax for php codesniffer v4
mstilkerich Sep 30, 2025
aa6c38a
Update ADMIN-SETTINGS.md
tobybryans Dec 17, 2025
5c9ca67
Support tables in a schema within the Postgres database (#495)
mstilkerich Feb 5, 2026
5cede6b
readonly was missing in list of addressbook attributes (Fixes #497)
mstilkerich Feb 11, 2026
19ab172
Fix properties annotated as readonly per PHP 8.1 constraints
mstilkerich Feb 15, 2026
6353eb9
Do not query CardDAV addressbook when no communication is needed (#500)
mstilkerich Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
.git* export-ignore
*.xml export-ignore
Makefile export-ignore
doc export-ignore
/doc/devdoc export-ignore
/doc/img/*.drawio export-ignore
/tests export-ignore
/vendor-bin export-ignore
*.vcf text eol=crlf
*.vcf.new text eol=crlf
6 changes: 3 additions & 3 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ inputs:
php-version:
description: 'PHP version to use'
required: false
default: '8.0'
default: '8.2'
rcube-version:
description: 'Roundcube version to use'
required: false
default: 'master'
default: 'release-1.6'
runs:
using: "composite"
steps:
Expand All @@ -20,7 +20,7 @@ runs:
extensions: gd, xdebug, curl
coverage: xdebug
- name: Checkout roundcubemail
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
path: roundcubemail
repository: mstilkerich/roundcubemail
Expand Down
4 changes: 2 additions & 2 deletions .github/configs/composer-build-release.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"config": {
"platform": {
"php": "7.1.0"
"php": "7.4.0"
},
"prepend-autoloader": false
"prepend-autoloader": false
}
}
39 changes: 39 additions & 0 deletions .github/scripts/fixcov.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env php
<?php

// Replace namespaces in cov files generated by PHPUnit PHAR so they are parseable
// PHPCov PHAR
// See https://github.com/sebastianbergmann/phpcov/issues/109

$script = array_shift($argv);
if (count($argv) < 1) {
echo "Usage: $script coverage.cov [coverage2.cov ...]\n";
exit(1);
}

foreach ($argv as $covfile) {
$content = file_get_contents($covfile);
if ($content === false) {
echo "Failed to read $covfile\n";
exit(1);
}

$content = preg_replace_callback(
"#\:(\d+)\:\"(.?)PHPUnit\\\SebastianBergmann\\\#",
function($matches): string {
$hasNull = strlen($matches[2]) === 1;
$size = $matches[1];
$size -= 8;

if ($hasNull) {
return sprintf(":%d:\"\0SebastianBergmann\\", $size);
}

return sprintf(':%d:"SebastianBergmann\\', $size);
}, $content);

if (file_put_contents($covfile, $content) === false) {
echo "Failed to write $covfile\n";
exit(1);
}
}
62 changes: 36 additions & 26 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,20 @@ jobs:
strategy:
fail-fast: false
matrix:
rcube-version: ['release-1.4', 'release-1.5', 'release-1.6', 'master']
rcube-version: ['release-1.6', 'release-1.7', 'master']

runs-on: ubuntu-20.04
runs-on: ubuntu-latest

steps:
- name: Checkout rcmcarddav
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up CI environment
uses: ./.github/actions/setup
with:
rcube-version: ${{ matrix.rcube-version }}
- name: Install psalm
run: composer bin psalm update --no-interaction --no-progress
shell: bash
- name: Check code style compliance with PSR12
run: make stylecheck
- name: Check code compatibility with minimum supported PHP version
Expand All @@ -36,50 +39,52 @@ jobs:
strategy:
fail-fast: false
matrix:
php-version: ['7.3', '8.0', '8.1']
php-version: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4']

runs-on: ubuntu-20.04
runs-on: ubuntu-latest

env:
XDEBUG_MODE: coverage

steps:
- name: Checkout rcmcarddav
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up CI environment
uses: ./.github/actions/setup
with:
php-version: ${{ matrix.php-version }}
- name: Run unit tests
run: make unittests
- name: Upload unit test coverage reports to codecov.io
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v5
with:
file: testreports/unit/clover.xml
files: testreports/unit/clover.xml
disable_search: true
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}
name: RCMCardDAV unit test coverage
fail_ci_if_error: false

dbinterop-sqlite3:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest

env:
XDEBUG_MODE: coverage

steps:
- name: Checkout rcmcarddav
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up CI environment
uses: ./.github/actions/setup
- name: Database interoperability tests for SQLite3
run: make tests-sqlite3
- name: Upload DB interoperability test coverage reports to codecov.io
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v5
with:
file: testreports/dbinterop-sqlite3/clover.xml
files: testreports/dbinterop-sqlite3/clover.xml
disable_search: true
flags: dbinterop-sqlite3
token: ${{ secrets.CODECOV_TOKEN }}
name: RCMCardDAV SQLite3 database interoperability test coverage
fail_ci_if_error: false

dbinterop-mysql:
strategy:
Expand All @@ -97,8 +102,11 @@ jobs:
- 'mariadb:10.7'
- 'mariadb:10.8'
- 'mariadb:10.9'
- 'mariadb:10.10'
- 'mariadb:10.11'
- 'mariadb:11'

runs-on: ubuntu-20.04
runs-on: ubuntu-latest

env:
XDEBUG_MODE: coverage
Expand All @@ -111,7 +119,7 @@ jobs:
env:
MYSQL_ROOT_PASSWORD: root
options: >-
--health-cmd "mysqladmin ping"
--health-cmd "sh -c '$(command -v mariadb-admin || command -v mysqladmin) ping'"
--health-interval 10s
--health-timeout 5s
--health-retries 5
Expand All @@ -121,7 +129,7 @@ jobs:

steps:
- name: Checkout rcmcarddav
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up CI environment
uses: ./.github/actions/setup
- name: Set MySQL settings
Expand All @@ -130,20 +138,21 @@ jobs:
- name: Database interoperability tests for MySQL
run: make tests-mysql
- name: Upload DB interoperability test coverage reports to codecov.io
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v5
with:
file: testreports/dbinterop-mysql/clover.xml
files: testreports/dbinterop-mysql/clover.xml
disable_search: true
flags: dbinterop-mysql
token: ${{ secrets.CODECOV_TOKEN }}
name: RCMCardDAV MySQL database interoperability test coverage
fail_ci_if_error: false

dbinterop-postgres:
strategy:
fail-fast: false
matrix:
postgres-version: ['9', '10', '11', '12', '13', '14']
postgres-version: ['9', '10', '11', '12', '13', '14', '15', '16', '17']

runs-on: ubuntu-20.04
runs-on: ubuntu-latest

env:
XDEBUG_MODE: coverage
Expand All @@ -167,15 +176,16 @@ jobs:

steps:
- name: Checkout rcmcarddav
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up CI environment
uses: ./.github/actions/setup
- name: Database interoperability tests for Postgres
run: make tests-postgres
- name: Upload DB interoperability test coverage reports to codecov.io
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v5
with:
file: testreports/dbinterop-postgres/clover.xml
files: testreports/dbinterop-postgres/clover.xml
disable_search: true
flags: dbinterop-postgres
token: ${{ secrets.CODECOV_TOKEN }}
name: RCMCardDAV PostgreSQL database interoperability test coverage
fail_ci_if_error: false
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
.phpunit.result.cache
.phpunit.cache
.DS_Store
./config.inc.php
/.phpdoc
/vendor
/vendor-bin/**/vendor/
/vendor-bin/**/composer.lock
/node_modules
composer.lock
*.tgz
Expand All @@ -17,3 +20,4 @@ composer.lock
/tags
/.eslintrc.json
/.idea
.*.drawio.bkp
47 changes: 46 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,54 @@
# Changelog for RCMCardDAV

## Changes since 5.0.0-beta1
## Version 5.1.3 (to 5.1.2)
- Postgres: Support tables in a schema within the Postgres database through roundcube's `db_prefix` option, for example
"rcschema.". (Fixes #495)
- readonly attribute for preset addressbooks was not honored for accounts for that the user had never saved settings
(Fixes #497)
- Improvement: Do not query CardDAV addressbook when no communication is needed (#500)

## Version 5.1.2 (to 5.1.1)

- Re-release of 5.1.1 the only change being that the dependencies shipped in the tarball release are updated, notably
including carddavclient 1.4.2 with a workaround for bearer authentication with `nextcloud/user_oidc` plugin

## Version 5.1.1 (to 5.1.0)

- Fix migration 7: The migration replaced placeholders in the addressbook URLs with the data of the user during whose
login the migration was executed. This would result in broken URLs in such cases.
- Adjust interfaces for roundcube 1.7 changes (Fixes: #467, #468, and #473 (thanks @nick-oconnor))
- VCards imported via Roundcube import function are stored to server as is (except for compatibility fixes, e.g. adding
UID) (Fixes #470)

## Version 5.1.0 (to 5.0.1)

- Allow to hide contacts without email also for user-defined addressbooks (Fixes #429)
- Re-introduced option `preemptive_basic_auth` to send HTTP basic Authorization header with every request. Also settable
via user-interface. (Fixes #407)
- Support setting roundcube's default addressbook to an addressbook from a preset (Fixes #440)
- New option `ssl_noverify` to disable verification of the CardDAV server`s SSL certificate in HTTPS connections. Also
settable via user-interface.

## Version 5.0.1 (to 5.0.0)

- Fix: Tarball release failed to add its autoloader in time (Fixes: #415)
- Fix: Removed string interpolation variants deprecated with PHP 8.2

## Version 5.0.0 (to 5.0.0-beta1)

- Minimum supported PHP version for 5.0 is PHP 7.4 (Fixes #414)
- Fix: Internal server error with PHP8 when searching address fields of contacts (Fixes: #410)
- Fix: Assertion failure in DelayedPhotoLoader (Fixes: #404)
- Fixes for better handling of incoming vCard4 (Fixes: #411)
- Handle data-URI-style inline PHOTO as used in vCard4
- Use VCard conversion to handle v4 properties such as KIND=group for which extensions are used in v3 vCards
- Fix: Do not attempt to download photos from URIs with unsupported URI scheme (supported are http and https) (#411)
- When an invalid value is submitted in one of the settings forms, RCMCardDAV will now abort with an error. Previous
versions of RCMCardDAV would ignore the value when possible an instead keep the existing value or use a default value.
- Backend will refuse Frontend request to remove user account created from preset
- On initial installation of RCMCardDAV, the database schema is created from a single script with the current schema
version. Previous versions incrementally executed all migration scripts since the very beginning (Fixes #395)
- In the settings forms, some simple browser form validation has been added (Fixes #400)

## Version 5.0.0-beta1 (to 4.4.4)

Expand Down
Loading