Skip to content

Commit 5076b50

Browse files
authored
Update for 0.90 release. (#933)
This PR includes the following - Removes multipaz-cbor-rpc-annotations library, move this code in multipaz - Add publishing rules for multipaz-models and multipaz-compose - Changes Maven group for multipaz-android-legacy to org.multipaz - Fixes some bugs in publishing so Android artifacts are included when needed. This also resulted in some of the resource identifiers changing - Cleans up / simplifies README.md file - Adds a CHANGELOG.md file This was testing by releasing to Maven Local and testing against standalone projects consuming the artifacts. Test: Manually tested, see above. Test: ./gradlew check && ./gradlew connectedCheck Signed-off-by: David Zeuthen <zeuthen@google.com>
1 parent 10d9ed9 commit 5076b50

File tree

34 files changed

+274
-410
lines changed

34 files changed

+274
-410
lines changed

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.90] - 2025-03-26
9+
This is the first release with the CHANGELOG.md file and also the first release using the new
10+
Multipaz name. Main changes since the Identity Credential version 202411.1 include:
11+
- The project has been renamed to Multipaz and all package names have been
12+
changed from `com.android.identity` to `org.multipaz`.
13+
- New `multipaz-models` and `multipaz-compose` libraries
14+
- Removal of `appholder` module.
15+
- Conversion of DocumentStore, Document, Credential to use suspend methods.
16+
- Conversion of SecureArea to use suspend methods.
17+
- Introduction of new PromptModel to handle interaction with the user for
18+
asynchronous methods on SecureArea and NFC tag reading.
19+
- New multiplatform ASN.1 and X.509 code.
20+
- New multiplatform ISO/IEC 18013-5 proximity presentment stack.
21+
- New multiplatform NFC stack and NFC tag reader abstraction.
22+
- New multiplatform storage backend.
23+
- New presentment model and composable.
24+
- New HTML/Markdown, Notifications, LockScreen multiplatform composables.

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ here are some pointers about what we're looking for:
1717
- The commit message should be short, to the point, and explain exactly what the change is
1818
doing. Not too short, not too long. See the git history for inspiration and what the
1919
project is generally doing.
20-
- The code in the change should follow the style in CODING-STYLE.md.
21-
- The code must be tested, either with unit tests or manual tests. See TESTING.md for details.
20+
- The code in the change should follow the style in [CODING-STYLE.md](CODING-STYLE.md).
21+
- The code must be tested, either with unit tests or manual tests. See [TESTING.md](TESTING.md) for details.
2222
- We generally use a single commit per PR, to keep the git history sane.
2323

2424
Before uploading a PR, it's generally a good idea to manually review the commit (using

README.md

Lines changed: 58 additions & 251 deletions
Large diffs are not rendered by default.

multipaz-android-legacy/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ dependencies {
5757
androidTestImplementation(libs.kotlinx.coroutines.core)
5858
}
5959

60-
group = "com.android.identity"
60+
group = "org.multipaz"
6161
version = projectVersionName
6262

6363
publishing {

multipaz-cbor-rpc-annotations/build.gradle.kts

Lines changed: 0 additions & 56 deletions
This file was deleted.

multipaz-cbor-rpc/build.gradle.kts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
plugins {
22
id("java-library")
33
id("org.jetbrains.kotlin.jvm")
4+
id("maven-publish")
45
}
56

7+
val projectVersionCode: Int by rootProject.extra
8+
val projectVersionName: String by rootProject.extra
9+
610
kotlin {
711
jvmToolchain(17)
812
}
@@ -18,3 +22,24 @@ dependencies {
1822

1923
testImplementation(libs.junit)
2024
}
25+
26+
group = "org.multipaz"
27+
version = projectVersionName
28+
29+
publishing {
30+
repositories {
31+
maven {
32+
url = uri("${rootProject.rootDir}/repo")
33+
}
34+
}
35+
publications.withType(MavenPublication::class) {
36+
pom {
37+
licenses {
38+
license {
39+
name = "Apache 2.0"
40+
url = "https://opensource.org/licenses/Apache-2.0"
41+
}
42+
}
43+
}
44+
}
45+
}

multipaz-compose/build.gradle.kts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ plugins {
88
alias(libs.plugins.androidLibrary)
99
alias(libs.plugins.jetbrainsCompose)
1010
alias(libs.plugins.compose.compiler)
11+
id("maven-publish")
1112
}
1213

14+
val projectVersionCode: Int by rootProject.extra
15+
val projectVersionName: String by rootProject.extra
16+
1317
kotlin {
1418
jvmToolchain(17)
1519

@@ -21,6 +25,8 @@ kotlin {
2125
compilerOptions {
2226
jvmTarget.set(JvmTarget.JVM_17)
2327
}
28+
29+
publishLibraryVariants("release")
2430
}
2531

2632
listOf(
@@ -107,4 +113,33 @@ android {
107113
excludes += listOf("/META-INF/versions/9/OSGI-INF/MANIFEST.MF")
108114
}
109115
}
116+
117+
publishing {
118+
singleVariant("release") {
119+
withSourcesJar()
120+
}
121+
}
122+
}
123+
124+
group = "org.multipaz"
125+
version = projectVersionName
126+
127+
publishing {
128+
repositories {
129+
maven {
130+
url = uri("${rootProject.rootDir}/repo")
131+
}
132+
}
133+
publications.withType(MavenPublication::class) {
134+
pom {
135+
licenses {
136+
license {
137+
name = "Apache 2.0"
138+
url = "https://opensource.org/licenses/Apache-2.0"
139+
}
140+
}
141+
}
142+
}
110143
}
144+
145+
tasks.named("generateResourceAccessorsForAndroidMain").configure { dependsOn("sourceReleaseJar") }

multipaz-compose/src/androidMain/kotlin/org/multipaz/compose/webview/WebViewRender.android.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import androidx.compose.ui.graphics.toArgb
2222
import androidx.compose.ui.unit.dp
2323
import androidx.compose.ui.viewinterop.AndroidView
2424
import org.multipaz.util.Logger
25-
import multipazproject.multipaz_compose.generated.resources.Res
25+
import org.multipaz.multipaz_compose.generated.resources.Res
2626
import kotlinx.coroutines.CoroutineScope
2727
import kotlinx.coroutines.Dispatchers
2828
import kotlinx.coroutines.launch

multipaz-compose/src/commonMain/kotlin/org/multipaz/compose/certificateviewer/CertificateViewer.kt

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -41,34 +41,34 @@ import org.multipaz.crypto.X500Name
4141
import org.multipaz.crypto.X509Cert
4242
import org.multipaz.crypto.X509CertChain
4343
import org.multipaz.datetime.FormatStyle
44-
import multipazproject.multipaz_compose.generated.resources.Res
45-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_critical_ext
46-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_common_name
47-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_country_name
48-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_locality_name
49-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_org_name
50-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_org_unit_name
51-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_other_name
52-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_pk_algorithm
53-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_pk_named_curve
54-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_pk_value
55-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_serial_number
56-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_state_name
57-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_type
58-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_valid_from
59-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_k_valid_until
60-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_non_critical_ext
61-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_oid
62-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_sub_basic_info
63-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_sub_extensions
64-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_sub_issuer
65-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_sub_public_key_info
66-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_sub_subject
67-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_valid_now
68-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_validity_in_the_future
69-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_validity_in_the_past
70-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_value
71-
import multipazproject.multipaz_compose.generated.resources.certificate_viewer_version_text
44+
import org.multipaz.multipaz_compose.generated.resources.Res
45+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_critical_ext
46+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_common_name
47+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_country_name
48+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_locality_name
49+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_org_name
50+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_org_unit_name
51+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_other_name
52+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_pk_algorithm
53+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_pk_named_curve
54+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_pk_value
55+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_serial_number
56+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_state_name
57+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_type
58+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_valid_from
59+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_k_valid_until
60+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_non_critical_ext
61+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_oid
62+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_sub_basic_info
63+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_sub_extensions
64+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_sub_issuer
65+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_sub_public_key_info
66+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_sub_subject
67+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_valid_now
68+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_validity_in_the_future
69+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_validity_in_the_past
70+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_value
71+
import org.multipaz.multipaz_compose.generated.resources.certificate_viewer_version_text
7272
import kotlinx.datetime.Clock
7373
import kotlinx.datetime.Instant
7474
import org.jetbrains.compose.resources.StringResource

multipaz-compose/src/commonMain/kotlin/org/multipaz/compose/consent/ConsentModalBottomSheet.kt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,22 @@ import org.multipaz.request.MdocRequestedClaim
4747
import org.multipaz.request.Request
4848
import org.multipaz.request.RequestedClaim
4949
import org.multipaz.trustmanagement.TrustPoint
50-
import multipazproject.multipaz_compose.generated.resources.Res
51-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_cancel
52-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_more
53-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_share
54-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_card_art_description
55-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_data_element_icon_description
56-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_headline_share_with_known_requester
57-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_headline_share_with_unknown_requester
58-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_and_stored_by_known_requester
59-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_and_stored_by_unknown_requester
60-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_with_known_requester
61-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_with_unknown_requester
62-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_verifier_icon_description
63-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_wallet_privacy_policy
64-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_warning_icon_description
65-
import multipazproject.multipaz_compose.generated.resources.consent_modal_bottom_sheet_warning_verifier_not_in_trust_list
50+
import org.multipaz.multipaz_compose.generated.resources.Res
51+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_cancel
52+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_more
53+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_button_share
54+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_card_art_description
55+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_data_element_icon_description
56+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_headline_share_with_known_requester
57+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_headline_share_with_unknown_requester
58+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_and_stored_by_known_requester
59+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_and_stored_by_unknown_requester
60+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_with_known_requester
61+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_share_with_unknown_requester
62+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_verifier_icon_description
63+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_wallet_privacy_policy
64+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_warning_icon_description
65+
import org.multipaz.multipaz_compose.generated.resources.consent_modal_bottom_sheet_warning_verifier_not_in_trust_list
6666
import kotlinx.coroutines.CoroutineScope
6767
import kotlinx.coroutines.launch
6868
import org.jetbrains.compose.resources.ExperimentalResourceApi

multipaz-compose/src/commonMain/kotlin/org/multipaz/compose/datetime/durationFromNowText.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ import androidx.compose.runtime.SideEffect
55
import androidx.compose.runtime.mutableIntStateOf
66
import androidx.compose.runtime.remember
77
import androidx.compose.runtime.rememberCoroutineScope
8-
import multipazproject.multipaz_compose.generated.resources.Res
9-
import multipazproject.multipaz_compose.generated.resources.duration_day
10-
import multipazproject.multipaz_compose.generated.resources.duration_days_and_hours
11-
import multipazproject.multipaz_compose.generated.resources.duration_hour
12-
import multipazproject.multipaz_compose.generated.resources.duration_hours_and_minutes
13-
import multipazproject.multipaz_compose.generated.resources.duration_in_a_few_moments
14-
import multipazproject.multipaz_compose.generated.resources.duration_just_now
15-
import multipazproject.multipaz_compose.generated.resources.duration_less_than_a_minute
16-
import multipazproject.multipaz_compose.generated.resources.duration_minute
17-
import multipazproject.multipaz_compose.generated.resources.duration_month
18-
import multipazproject.multipaz_compose.generated.resources.duration_months_and_days
19-
import multipazproject.multipaz_compose.generated.resources.duration_time_ago
20-
import multipazproject.multipaz_compose.generated.resources.duration_time_from_now
21-
import multipazproject.multipaz_compose.generated.resources.duration_week
22-
import multipazproject.multipaz_compose.generated.resources.duration_weeks_and_days
23-
import multipazproject.multipaz_compose.generated.resources.duration_year
24-
import multipazproject.multipaz_compose.generated.resources.duration_years_and_months
8+
import org.multipaz.multipaz_compose.generated.resources.Res
9+
import org.multipaz.multipaz_compose.generated.resources.duration_day
10+
import org.multipaz.multipaz_compose.generated.resources.duration_days_and_hours
11+
import org.multipaz.multipaz_compose.generated.resources.duration_hour
12+
import org.multipaz.multipaz_compose.generated.resources.duration_hours_and_minutes
13+
import org.multipaz.multipaz_compose.generated.resources.duration_in_a_few_moments
14+
import org.multipaz.multipaz_compose.generated.resources.duration_just_now
15+
import org.multipaz.multipaz_compose.generated.resources.duration_less_than_a_minute
16+
import org.multipaz.multipaz_compose.generated.resources.duration_minute
17+
import org.multipaz.multipaz_compose.generated.resources.duration_month
18+
import org.multipaz.multipaz_compose.generated.resources.duration_months_and_days
19+
import org.multipaz.multipaz_compose.generated.resources.duration_time_ago
20+
import org.multipaz.multipaz_compose.generated.resources.duration_time_from_now
21+
import org.multipaz.multipaz_compose.generated.resources.duration_week
22+
import org.multipaz.multipaz_compose.generated.resources.duration_weeks_and_days
23+
import org.multipaz.multipaz_compose.generated.resources.duration_year
24+
import org.multipaz.multipaz_compose.generated.resources.duration_years_and_months
2525
import kotlinx.coroutines.delay
2626
import kotlinx.coroutines.launch
2727
import kotlinx.datetime.Clock
@@ -31,7 +31,7 @@ import kotlinx.datetime.TimeZone
3131
import kotlinx.datetime.monthsUntil
3232
import kotlinx.datetime.plus
3333
import kotlinx.datetime.yearsUntil
34-
import multipazproject.multipaz_compose.generated.resources.duration_never
34+
import org.multipaz.multipaz_compose.generated.resources.duration_never
3535
import org.jetbrains.compose.resources.PluralStringResource
3636
import org.jetbrains.compose.resources.StringResource
3737
import org.jetbrains.compose.resources.pluralStringResource

multipaz-compose/src/commonMain/kotlin/org/multipaz/compose/passphrase/PassphraseEntryField.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ import androidx.compose.ui.text.input.TransformedText
3535
import androidx.compose.ui.text.style.TextAlign
3636
import androidx.compose.ui.unit.dp
3737
import org.multipaz.securearea.PassphraseConstraints
38-
import multipazproject.multipaz_compose.generated.resources.Res
39-
import multipazproject.multipaz_compose.generated.resources.passphrase_entry_field_passphrase_is_weak
40-
import multipazproject.multipaz_compose.generated.resources.passphrase_entry_field_pin_is_weak
38+
import org.multipaz.multipaz_compose.generated.resources.Res
39+
import org.multipaz.multipaz_compose.generated.resources.passphrase_entry_field_passphrase_is_weak
40+
import org.multipaz.multipaz_compose.generated.resources.passphrase_entry_field_pin_is_weak
4141
import kotlinx.coroutines.delay
4242
import kotlinx.coroutines.launch
4343
import kotlinx.coroutines.runBlocking

0 commit comments

Comments
 (0)