Commit Graph

4946 Commits

Author SHA1 Message Date
chaoscalm 27367d94bd fix(l10n): Update Italian translations
Currently translated at 97.6% (625 of 640 strings)

Translation: Pachli/UI strings
Translate-URL: https://hosted.weblate.org/projects/pachli/ui-strings/it/
2023-11-12 12:44:03 +01:00
Nik Clayton 9b85ae08a1
chore: Prepare release 1.4.0 (versionCode 7) (#241) 2023-11-10 13:55:32 +01:00
Nik Clayton 0816071eea
fix(l10n): Update Italian translations (#240)
Based on work originally carried out by chaoscalm in
https://github.com/pachli/pachli-android/pull/206.
2023-11-10 12:52:52 +01:00
Nik Clayton 380bc6fa1e
fix: Ensure navigation and status bar icons are visible (#239) 2023-11-09 19:12:41 +01:00
Nik Clayton e03825cc12
ci: Use correct versionCode for orange.* versions (#237)
Now that the flavour includes the store name it's not sufficient to
check for "orange" as the flavour, as that no longer matches. Now it
must start with "orange" to trigger using the git commit count as the
version code.
2023-11-08 09:59:13 +01:00
Nik Clayton dda9dde1b9
feat: Periodically check for updates and alert user (#236)
Users can inadvertently get stuck on older versions of the app; e.g., by
installing from one F-Droid repository that stops hosting the app at
some later time.

Analytics from the Play Store also shows a long tail of users who are,
for some reason, on an older version.

On resuming `MainActivity`, and approximately once per day, check and
see if a newer version of Pachli is available, and prompt the user to
update by going to the relevant install location (Google Play, F-Droid,
or GitHub).

The dialog prompt allows them to ignore this specific version, or
disable all future update notifications. This is also exposed through
the preferences, so the user can adjust it there too.

A different update check method is used for each installation location.

- F-Droid: Use the F-Droid API to query for the newest released version
- GitHub: Use the GitHub API to query for the newest release, and check
the APK filename attached to that release
- Google Play: Use the Play in-app-updates library
(https://developer.android.com/guide/playcore/in-app-updates) to query
for the newest released version

These are kept in different build flavours (source sets), so that e.g.,
the build for the F-Droid store can only query the F-Droid API, the UI
strings are specific to F-Droid, etc. This also ensures that the update
service libraries are specific to that build and do not
"cross-contaminate".

Note that this *does not* update the app, it takes the user to either
the relevant store page (F-Droid, Play) or GitHub release page. The user
must still start the update from that page.

CI configuration is updated to build the different flavours.
2023-11-08 08:42:39 +01:00
Nik Clayton 86dee94035
refactor: Convert Java to Kotlin (#235) 2023-11-06 20:16:34 +01:00
Nik Clayton cc2974cb69
fix: Show preference changes immediately (#234)
The preference change listener was being optimised out by R8, causing
rapid garbage collection, breaking the `changes` flow in release builds.

Fix this by annotating the field with `@Keep` so it is retained.

Fixes #225
2023-11-06 19:02:13 +01:00
Nik Clayton 392eb55485
fix: Honour the FAB_HIDE preference in timelines (#227) 2023-11-06 16:29:46 +01:00
Nik Clayton c2292a565e
chore(deps): update ksp to v1.9.20-1.0.14 (#226) 2023-11-06 12:45:44 +01:00
renovate[bot] 5f13a50ff6
chore(deps): update kotlin to v1.9.20 (#213)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| org.jetbrains.kotlin.plugin.parcelize | `1.9.10` -> `1.9.20` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.plugin.parcelize/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.plugin.parcelize/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.plugin.parcelize/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.plugin.parcelize/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| org.jetbrains.kotlin.android | `1.9.10` -> `1.9.20` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.android/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.android/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.android/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.android/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| org.jetbrains.kotlin.jvm | `1.9.10` -> `1.9.20` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.jvm/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.jvm/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.jvm/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.jvm/1.9.10/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [org.jetbrains.kotlin:kotlin-stdlib-jdk7](https://kotlinlang.org/)
([source](https://togithub.com/JetBrains/kotlin)) | `1.3.61` -> `1.9.20`
|
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin:kotlin-stdlib-jdk7/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin:kotlin-stdlib-jdk7/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin:kotlin-stdlib-jdk7/1.3.61/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin:kotlin-stdlib-jdk7/1.3.61/1.9.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>JetBrains/kotlin
(org.jetbrains.kotlin:kotlin-stdlib-jdk7)</summary>

###
[`v1.9.20`](https://togithub.com/JetBrains/kotlin/releases/tag/v1.9.20):
Kotlin 1.9.20

##### 1.9.20

##### Analysis. API

##### New Features

- [`KT-58834`](https://youtrack.jetbrains.com/issue/KT-58834) Analysis
API: Add source shadowing feature to resolve extensions

##### Performance Improvements

- [`KT-57515`](https://youtrack.jetbrains.com/issue/KT-57515) LL FIR:
Performance bottleneck in
`CompositeModificationTracker.getModificationCount`
- [`KT-59266`](https://youtrack.jetbrains.com/issue/KT-59266) K2:
optimize FirElementBuilder.getOrBuildFir for elements outside body
- [`KT-59454`](https://youtrack.jetbrains.com/issue/KT-59454) K2: drop
resolve from
org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarations
- [`KT-59453`](https://youtrack.jetbrains.com/issue/KT-59453) K2:
completion regression from
org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarations
- [`KT-59189`](https://youtrack.jetbrains.com/issue/KT-59189) Analysis
API: KtFirKDocReference.resolveToSymbols is slow
- [`KT-58125`](https://youtrack.jetbrains.com/issue/KT-58125) K2: LL
FIR: `KtToFirMapping.getElement` is slow for `KtUserType`s due to on-air
resolution of types

##### Fixes

- [`KT-59240`](https://youtrack.jetbrains.com/issue/KT-59240) K2:
FirLazyResolveContractViolationException: `lazyResolveToPhase(IMPORTS)`
cannot be called from a transformer with a phase IMPORTS from superTypes
- [`KT-58499`](https://youtrack.jetbrains.com/issue/KT-58499) K2:
FirLazyBlock should be calculated before accessing
- [`KT-57966`](https://youtrack.jetbrains.com/issue/KT-57966) K2:
Analysis API: Reference Shortener does not work correctly when called on
entire file
- [`KT-60954`](https://youtrack.jetbrains.com/issue/KT-60954) K2:
Analysis API: Reference shortener does not work correctly with variable
assignments
- [`KT-60940`](https://youtrack.jetbrains.com/issue/KT-60940) K2:
Analysis API: Reference shortener incorrectly handles types in vararg
parameters declarations
- [`KT-60488`](https://youtrack.jetbrains.com/issue/KT-60488) Analysis
API: forbid providing custom KtLifetimeToken for every analyze call
- [`KT-60728`](https://youtrack.jetbrains.com/issue/KT-60728) K2: proper
support for scripts in LL FIR transformers
- [`KT-59159`](https://youtrack.jetbrains.com/issue/KT-59159) K2 IDE:
declaration is not found exception
- [`KT-59297`](https://youtrack.jetbrains.com/issue/KT-59297) K2:
exception from body resolve leads to corrupted state and broken analysis
- [`KT-59077`](https://youtrack.jetbrains.com/issue/KT-59077)
KtFirExpressionTypeProvider behaviour for KtSimpleNameReferences in
function calls
- [`KT-60586`](https://youtrack.jetbrains.com/issue/KT-60586) K2: forbid
analyze from write action
- [`KT-57743`](https://youtrack.jetbrains.com/issue/KT-57743) K2 IDE:
StackOverflowError from LLFirSessionCache for simple JPS project with
cyclic dependencies
- [`KT-61026`](https://youtrack.jetbrains.com/issue/KT-61026) K2
Scripts: FirLazyExpression should be calculated before accessing from
on-air resolve
- [`KT-61009`](https://youtrack.jetbrains.com/issue/KT-61009) K2
Scripts: KtFirExpressionTypeProvider: Expected FirResolvedTypeRef with
ConeKotlinType but was FirImplicitTypeRefImplWithoutSource <implicit>
- [`KT-60357`](https://youtrack.jetbrains.com/issue/KT-60357) K2 IDE.
Reified types parameters are not resolved in a function body
- [`KT-60317`](https://youtrack.jetbrains.com/issue/KT-60317) K2 IDE.
IAE "This method will only work on compiled declarations, but this
declaration is not compiled" on invoking Find Usages for enum method in
library
- [`KT-60706`](https://youtrack.jetbrains.com/issue/KT-60706) K2 IDE:
FirJvmTypeMapper is not found for kotlin.kotlin-stdlib-common
- [`KT-60552`](https://youtrack.jetbrains.com/issue/KT-60552) K2: merge
StateKeeper and lazy body calculator for ANNOTATIONS_ARGUMENTS_MAPPING
transformer
- [`KT-60641`](https://youtrack.jetbrains.com/issue/KT-60641) Analysis
API: Scope for class
org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl not found
exception when stdlib is missing
- [`KT-60638`](https://youtrack.jetbrains.com/issue/KT-60638) K2:
Expected FirResolvedTypeRef with ConeKotlinType but was
FirImplicitTypeRefImplWithoutSource <implicit>
- [`KT-54846`](https://youtrack.jetbrains.com/issue/KT-54846) Analysis
API: add isExpect/isActual to KtSymbol
- [`KT-60448`](https://youtrack.jetbrains.com/issue/KT-60448)
FirLazyResolveContractViolationException:
`lazyResolveToPhase(COMPILER_REQUIRED_ANNOTATIONS)` cannot be called
from a transformer with a phase COMPILER_REQUIRED_ANNOTATIONS from
AllOpen plugin
- [`KT-59342`](https://youtrack.jetbrains.com/issue/KT-59342) K2 IDE.
FirLazyResolveContractViolationException: `lazyResolveToPhase(TYPES)`
cannot be called from a transformer with a phase TYPES
- [`KT-59687`](https://youtrack.jetbrains.com/issue/KT-59687) K2:
Implement proper body update for in-block modifications
- [`KT-59329`](https://youtrack.jetbrains.com/issue/KT-59329) Resolve
Extensions reference resolution breaks Find Usages
- [`KT-60295`](https://youtrack.jetbrains.com/issue/KT-60295) K2: move
checkIsResolved for annotations from
LLFirAnnotationArgumentsLazyResolver to LLFirTypeLazyResolver
- [`KT-59758`](https://youtrack.jetbrains.com/issue/KT-59758) K2:
Expected is FirResolvedTypeRef, but was
FirImplicitTypeRefImplWithoutSource from ReturnTypeCalculatorWithJump
- [`KT-60377`](https://youtrack.jetbrains.com/issue/KT-60377) K2 IDE:
This method will only work on compiled declarations, but this
declaration is not compiled
- [`KT-59685`](https://youtrack.jetbrains.com/issue/KT-59685) K2:
rewrite on-air resolution
- [`KT-60132`](https://youtrack.jetbrains.com/issue/KT-60132) K2:
properties and functions without a name should be re-analyzable as well
- [`KT-59199`](https://youtrack.jetbrains.com/issue/KT-59199) K2 IDE:
PSI changes which do not cause OOB modifications can be unseen from the
FIR elements
- [`KT-59667`](https://youtrack.jetbrains.com/issue/KT-59667) Analysis
API: PsiInvalidElementAccessException from
JavaClassifierTypeImpl.substitutor
- [`KT-59705`](https://youtrack.jetbrains.com/issue/KT-59705)
KotlinExceptionWithAttachments: No fir element was found for getter
- [`KT-59697`](https://youtrack.jetbrains.com/issue/KT-59697) AA
standalone: JRT module paths are not properly populated in Windows
- [`KT-59505`](https://youtrack.jetbrains.com/issue/KT-59505) K2:
implicit type lazy resolution doesn't work for delegated declaration
from other module
- [`KT-56426`](https://youtrack.jetbrains.com/issue/KT-56426) K2 IDE:
Typealised functional types cannot be rendered
- [`KT-59598`](https://youtrack.jetbrains.com/issue/KT-59598) AA:
stackoverflow while simplifying a type with a recursive type parameter
- [`KT-58497`](https://youtrack.jetbrains.com/issue/KT-58497) K2:
Expected FirResolvedTypeRef for initializer type of
FirPropertyImpl(Source) but FirImplicitTypeRefImplWithoutSource found
- [`KT-59511`](https://youtrack.jetbrains.com/issue/KT-59511) AA
standalone mode creates Application Environment for tests
- [`KT-58161`](https://youtrack.jetbrains.com/issue/KT-58161) Analysis
API: Make methods in `KtCallResolverMixIn` more distinctive based on
their receiver/return type
- [`KT-59093`](https://youtrack.jetbrains.com/issue/KT-59093) Do not
throw exception on KtCall resolution, `KtCallElement.resolveCall` should
return `null` on unknown cases
- [`KT-59243`](https://youtrack.jetbrains.com/issue/KT-59243) K2:
FirLazyResolveContractViolationException: `lazyResolveToPhase(IMPORTS)`
cannot be called from a transformer with a phase IMPORTS from permits
types
- [`KT-58194`](https://youtrack.jetbrains.com/issue/KT-58194) K2: Low
Level API: use smart pointers to store references to PSI from FIR
declarations for JavaElement
- [`KT-59133`](https://youtrack.jetbrains.com/issue/KT-59133) K2:
java.lang.IllegalStateException: Fir is not initialized for
FirRegularClassSymbol
- [`KT-58174`](https://youtrack.jetbrains.com/issue/KT-58174) K2: LL
FIR: Invalid type reference for T & Any type
- [`KT-52615`](https://youtrack.jetbrains.com/issue/KT-52615) LL FIR:
build RAW FIR only by stubs
- [`KT-55053`](https://youtrack.jetbrains.com/issue/KT-55053) K2:
Exception "lateinit property diagnostic has not been initialized" in
FirBuilder
- [`KT-58580`](https://youtrack.jetbrains.com/issue/KT-58580) K2: LL
FIR: Declarations provided by resolve extensions from a dependency
module are not visible through `LLFirCombinedKotlinSymbolProvider`
- [`KT-58992`](https://youtrack.jetbrains.com/issue/KT-58992) Analysis
API: move org.jetbrains.kotlin.analysis.api.fir.utils.addImportToFile
out of Analysis API
- [`KT-58727`](https://youtrack.jetbrains.com/issue/KT-58727) K2: AA
FIR: implicit type in delegated function treated as error
- [`KT-58653`](https://youtrack.jetbrains.com/issue/KT-58653) K2:
Analysis API: add functions for KtScope members access by name
- [`KT-57559`](https://youtrack.jetbrains.com/issue/KT-57559) K2 IDE:
KotlinExceptionWithAttachments: Modules are inconsistent on intellij
project
- [`KT-58262`](https://youtrack.jetbrains.com/issue/KT-58262) Analysis
API: Declarations from Analysis API Resolve Extensions are not seen from
completion
- [`KT-57455`](https://youtrack.jetbrains.com/issue/KT-57455) LL FIR:
Combine `AbstractFirDeserializedSymbolProvider`s in session dependencies
(optimization)
- [`KT-57207`](https://youtrack.jetbrains.com/issue/KT-57207) LL FIR:
Combine `JavaSymbolProvider`s in session dependencies (optimization)
- [`KT-58546`](https://youtrack.jetbrains.com/issue/KT-58546) K2: LL
FIR: support name collision in a designation path
- [`KT-58495`](https://youtrack.jetbrains.com/issue/KT-58495) K2: Lazy
calculation is redundant
- [`KT-58500`](https://youtrack.jetbrains.com/issue/KT-58500) K2: null
cannot be cast to non-null type
org.jetbrains.kotlin.fir.FirPureAbstractElement
- [`KT-58493`](https://youtrack.jetbrains.com/issue/KT-58493) K2:
Expected FirResolvedTypeRef for default value type of
FirValueParameterImpl(Source) but FirUserTypeRefImpl found
- [`KT-58496`](https://youtrack.jetbrains.com/issue/KT-58496) K2:
Expected FirNamedReference, FirErrorNamedReference or
FirFromMissingDependenciesNamedReference, but FirExplicitSuperReference
found
- [`KT-58491`](https://youtrack.jetbrains.com/issue/KT-58491) K2:
Expected FirResolvedTypeRef or FirImplicitTypeRef for return type of
FirDefaultPropertyBackingField(Synthetic) but FirUserTypeRefImpl found
- [`KT-56550`](https://youtrack.jetbrains.com/issue/KT-56550) LL FIR:
implement parallel resolve for non-jumping phases
- [`KT-58503`](https://youtrack.jetbrains.com/issue/KT-58503) Analysis
API: KtFirNamedClassOrObjectSymbol.visibility/modality do not trigger
STATUS resolve
- [`KT-57623`](https://youtrack.jetbrains.com/issue/KT-57623) K2 IDE:
ConcurrentModificationException from getSuperConeTypes
- [`KT-58083`](https://youtrack.jetbrains.com/issue/KT-58083) K2: LL
FIR: implement FakeOverrideTypeCalculator

##### Android

- [`KT-27170`](https://youtrack.jetbrains.com/issue/KT-27170) Android
lint tasks fails in Gradle with MPP dependency

##### Backend. Native. Debug

- [`KT-61131`](https://youtrack.jetbrains.com/issue/KT-61131) Virtual
functions trampolines have invalid debug info

##### Backend. Wasm

##### Fixes

- [`KT-60244`](https://youtrack.jetbrains.com/issue/KT-60244) K/Wasm:
make the compiler compatible with Wasm GC phase 4 (Final) specification
- [`KT-61262`](https://youtrack.jetbrains.com/issue/KT-61262) K/Wasm:
add a way to turn on k2 in wasm examples that don't use compose
- [`KT-61343`](https://youtrack.jetbrains.com/issue/KT-61343) K/Wasm:
add a wasi example to kotlin-wasm-examples
- [`KT-62147`](https://youtrack.jetbrains.com/issue/KT-62147)
\[Kotlin/Wasm] Nothing typed when expression cause a backend error
- [`KT-59720`](https://youtrack.jetbrains.com/issue/KT-59720) K/Wasm:
update to final opcodes
- [`KT-60834`](https://youtrack.jetbrains.com/issue/KT-60834) K/Wasm:
investigate consequences of stopping using `br_on_cast_fail`
- [`KT-59294`](https://youtrack.jetbrains.com/issue/KT-59294) WASM:
localStorage Cannot read properties of undefined (reading 'length')
- [`KT-60835`](https://youtrack.jetbrains.com/issue/KT-60835) K/Wasm:
fix compatibility with Node.js 20.\*
- [`KT-60113`](https://youtrack.jetbrains.com/issue/KT-60113) K/Wasm:
illegal cast when using 1.9.20-dev
- [`KT-60496`](https://youtrack.jetbrains.com/issue/KT-60496)
Compose-web Wasm crashes on remember { null } calls
- [`KT-58746`](https://youtrack.jetbrains.com/issue/KT-58746) K/Wasm:
Make Arrays' constructors with size and lambda inline (similar to other
implementations)
- [`KT-58993`](https://youtrack.jetbrains.com/issue/KT-58993) \[K/Wasm]
Fix w3c declarations with lambda parameters
- [`KT-59722`](https://youtrack.jetbrains.com/issue/KT-59722) K/Wasm:
Support new encoding with flags for br_on_cast and br_on_cast_fail
instructions
- [`KT-59713`](https://youtrack.jetbrains.com/issue/KT-59713) K/Wasm:
Implement enumEntries intrinsic
- [`KT-59082`](https://youtrack.jetbrains.com/issue/KT-59082) WASM:
NullPointerException caused by companion with String type constants
- [`KT-58941`](https://youtrack.jetbrains.com/issue/KT-58941) WASM Hang
with extension delegate inside a Class
- [`KT-60200`](https://youtrack.jetbrains.com/issue/KT-60200) K/Wasm:
generate types without supertypes properly
- [`KT-52178`](https://youtrack.jetbrains.com/issue/KT-52178) IR dump
doesn't seem to work for Kotlin/WASM phases
- [`KT-59556`](https://youtrack.jetbrains.com/issue/KT-59556) Wasm:
critical dependency when using with webpack
- [`KT-58681`](https://youtrack.jetbrains.com/issue/KT-58681) K/Wasm:
division remainder has a wrong sign
- [`KT-56711`](https://youtrack.jetbrains.com/issue/KT-56711) Wasm:
IllegalStateException caused by dynamic type

##### Compiler

##### New Features

- [`KT-58551`](https://youtrack.jetbrains.com/issue/KT-58551) KMP: check
all annotation from expect declaration are present on actual
- [`KT-58554`](https://youtrack.jetbrains.com/issue/KT-58554) KMP:
restrict expect opt-in annotations and actual typealiases to annotations
with special meaning
- [`KT-58545`](https://youtrack.jetbrains.com/issue/KT-58545) KMP:
prohibit implicit actualization via Java
- [`KT-58536`](https://youtrack.jetbrains.com/issue/KT-58536) KMP:
prohibit `expect tailrec` / `expect external`
- [`KT-59764`](https://youtrack.jetbrains.com/issue/KT-59764) Make a
frontend checker that reports cast to forward declaration as unchecked
- [`KT-60528`](https://youtrack.jetbrains.com/issue/KT-60528) Updates
for JVM/IR backend of kotlin-atomicfu-compiler-plugin
- [`KT-59558`](https://youtrack.jetbrains.com/issue/KT-59558) Add
support for creating annotation instances with type parameters
- [`KT-52367`](https://youtrack.jetbrains.com/issue/KT-52367)
Devirtualization algorithm improvement
- [`KT-58652`](https://youtrack.jetbrains.com/issue/KT-58652) Native:
Implement frontend checkers for HiddenFromObjC on classes

##### Performance Improvements

- [`KT-59600`](https://youtrack.jetbrains.com/issue/KT-59600) K2: CFG:
do not add edges to nested classes and functions
- [`KT-57860`](https://youtrack.jetbrains.com/issue/KT-57860) K/N:
Functions with default arguments of value/inline class types have poor
performance due to value class boxing

##### Fixes

- [`KT-60387`](https://youtrack.jetbrains.com/issue/KT-60387) K2: IDE
K2: "org.jetbrains.kotlin.fir.expressions.impl.FirArgumentListImpl
cannot be cast to class
org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList"
- [`KT-61228`](https://youtrack.jetbrains.com/issue/KT-61228) False
positive MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT_WARNING for
effectively final properties
- [`KT-61643`](https://youtrack.jetbrains.com/issue/KT-61643) "Argument
type mismatch" for mixed Java/Kotlin Project with Java 21
- [`KT-62389`](https://youtrack.jetbrains.com/issue/KT-62389) JDK 21:
Cannot access class 'TimeUnit'. Check your module classpath for missing
or conflicting dependencies
- [`KT-56768`](https://youtrack.jetbrains.com/issue/KT-56768) K2. No
error description on incomplete try catch declaration
- [`KT-52220`](https://youtrack.jetbrains.com/issue/KT-52220) FIR +
LightTree - Consider building a single tree on parsing into LightTree
- [`KT-60601`](https://youtrack.jetbrains.com/issue/KT-60601) K2 /
Maven: Overload resolution ambiguity between candidates inline method
- [`KT-62027`](https://youtrack.jetbrains.com/issue/KT-62027)
"java.lang.IndexOutOfBoundsException: Empty list doesn't contain element
at index 0" caused by ClassicExpectActualMatchingContext.kt when
annotation `@AllowDifferentMembersInActual` used
- [`KT-62747`](https://youtrack.jetbrains.com/issue/KT-62747) Wrong
warning message when overriding vararg with Array during actualization
- [`KT-62655`](https://youtrack.jetbrains.com/issue/KT-62655) Don't
report a warning when new members and new supertypes are added to open
expect actualization
- [`KT-62313`](https://youtrack.jetbrains.com/issue/KT-62313)
Kotlin/Native Compiler crash: ClassCastException in IntrinsicGenerator
- [`KT-60902`](https://youtrack.jetbrains.com/issue/KT-60902) visibility
vs upper bound expect actual matching conflict
- [`KT-61095`](https://youtrack.jetbrains.com/issue/KT-61095) K2: "IAE:
source must not be null" from
FirMultipleDefaultsInheritedFromSupertypesChecker
- [`KT-47567`](https://youtrack.jetbrains.com/issue/KT-47567) 'Val
cannot be reassigned' error not reported in unreachable code
- [`KT-59468`](https://youtrack.jetbrains.com/issue/KT-59468) K2: build
realm-kotlin
- [`KT-62026`](https://youtrack.jetbrains.com/issue/KT-62026) KMP:
Correctly handle a case when annotation on expect declaration is
unresolved
- [`KT-59476`](https://youtrack.jetbrains.com/issue/KT-59476) K2: build
ClashForAndroid
- [`KT-59487`](https://youtrack.jetbrains.com/issue/KT-59487) K2: build
KSP-playground
- [`KT-47409`](https://youtrack.jetbrains.com/issue/KT-47409) K1/K2:
Investigate and align inference for equality (==) operator
- [`KT-59393`](https://youtrack.jetbrains.com/issue/KT-59393) K2:
Missing TYPE_ARGUMENTS_FOR_OUTER_CLASS_WHEN_NESTED_REFERENCED
- [`KT-62127`](https://youtrack.jetbrains.com/issue/KT-62127)
"NoSuchFieldError: TRUE$delegate" on referencing companion's variable in
submodule
- [`KT-62335`](https://youtrack.jetbrains.com/issue/KT-62335) Improve
debuggability of code generator crashes
- [`KT-61165`](https://youtrack.jetbrains.com/issue/KT-61165) More than
one overridden descriptor declares a default value for 'cause:
Throwable?'. As the compiler can not make sure these values agree, this
is not allowed
- [`KT-62263`](https://youtrack.jetbrains.com/issue/KT-62263) Turn
"different expect/actual members" error into a warning
- [`KT-59969`](https://youtrack.jetbrains.com/issue/KT-59969) K2:
Disappeared UNSUPPORTED_CONTEXTUAL_DECLARATION_CALL
- [`KT-61616`](https://youtrack.jetbrains.com/issue/KT-61616) K2:
`IrBuiltIns.extensionToString` fails during native compilation
- [`KT-59377`](https://youtrack.jetbrains.com/issue/KT-59377) K2:
Missing CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM
- [`KT-61645`](https://youtrack.jetbrains.com/issue/KT-61645) K2/KMP:
Set stdlib-native before stdlib-commonMain in dependencies for shared
native metadata compilation
- [`KT-61924`](https://youtrack.jetbrains.com/issue/KT-61924) Native:
problem with abstract fake override from Any
- [`KT-61933`](https://youtrack.jetbrains.com/issue/KT-61933) K2:
"`Argument type mismatch: actual type is
'Foo<kotlin/Function0<kotlin/Unit>>' but
'Foo<kotlin/coroutines/SuspendFunction0<kotlin/Unit>>' was expected`"
- [`KT-59471`](https://youtrack.jetbrains.com/issue/KT-59471) K2: build
multiplatform-settings
- [`KT-56077`](https://youtrack.jetbrains.com/issue/KT-56077) K2: build
kotlinx.atomicfu
- [`KT-59465`](https://youtrack.jetbrains.com/issue/KT-59465) K2: build
kotlinx-datetime
- [`KT-60824`](https://youtrack.jetbrains.com/issue/KT-60824) K2 IDE:
FirSyntheticCallGenerator: IAE: List has more than one element
- [`KT-61856`](https://youtrack.jetbrains.com/issue/KT-61856) K2:
"KotlinIllegalArgumentExceptionWithAttachments" on usage of
javax.validation.constraints.Email.List
- [`KT-54792`](https://youtrack.jetbrains.com/issue/KT-54792) Store
program order of properties inside `@kotlin`.Metadata
- [`KT-56083`](https://youtrack.jetbrains.com/issue/KT-56083) K2: build
ktor
- [`KT-23861`](https://youtrack.jetbrains.com/issue/KT-23861) Expect
annotation should not be applicable wider than the actual one
- [`KT-59466`](https://youtrack.jetbrains.com/issue/KT-59466) K2: build
kotlinx-benchmark
- [`KT-60830`](https://youtrack.jetbrains.com/issue/KT-60830) KMP, K2:
expect actual annotation IR checker doesn't unwrap actual typealiases to
annotations
- [`KT-61668`](https://youtrack.jetbrains.com/issue/KT-61668) Put
expect/actual diagnostics introduced in 1.9.20 release under 1.9
Language Version
- [`KT-61725`](https://youtrack.jetbrains.com/issue/KT-61725) KMP:
Annotation matching requirement for expect/actual leads to errors for
annotations with `@OptionalExpectation`
- [`KT-47892`](https://youtrack.jetbrains.com/issue/KT-47892) False
negative BREAK_OR_CONTINUE_OUTSIDE_A_LOOP with `continue` in `init`
block inside `for`
- [`KT-61784`](https://youtrack.jetbrains.com/issue/KT-61784) KMP:
\[DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS] checker missed for
companion functions
- [`KT-61173`](https://youtrack.jetbrains.com/issue/KT-61173) K2:
FirProperty.hasBackingField is true for an expect val
- [`KT-59743`](https://youtrack.jetbrains.com/issue/KT-59743) K2:
erroneous binding of typealias with two type parameters to a class with
one type parameter
- [`KT-60650`](https://youtrack.jetbrains.com/issue/KT-60650) KMP:
prohibit problematic actual typealiases
- [`KT-61461`](https://youtrack.jetbrains.com/issue/KT-61461) K2: Kotlin
native metadata compilation breaks when stdlib is present in -libraries
- [`KT-61270`](https://youtrack.jetbrains.com/issue/KT-61270) Enabling
Kotlin/Native caching causes 65K warnings from dsymutil when building
Compose iOS app
- [`KT-58229`](https://youtrack.jetbrains.com/issue/KT-58229)
K2/MPP/JVM: compiler codegen crash on call of inherited generic class's
method with actual-typealias as value parameter
- [`KT-47702`](https://youtrack.jetbrains.com/issue/KT-47702) Support
call of Java annotation constructor without specifying a default value
- [`KT-56460`](https://youtrack.jetbrains.com/issue/KT-56460) K2: Do not
re-run DiagnosticCollectorVisitor from
FirInlineDeclarationChecker.checkChildrenWithCustomVisitor
- [`KT-55933`](https://youtrack.jetbrains.com/issue/KT-55933) K2: False
negative Overload resolution ambiguity for call functions with named
parameters if one of params is vararg
- [`KT-59548`](https://youtrack.jetbrains.com/issue/KT-59548) FIR2IR:
inconsistent generation of dispatch receiver for object methods
- [`KT-55072`](https://youtrack.jetbrains.com/issue/KT-55072) K2: False
positive "suspension point is inside a critical section"
- [`KT-58778`](https://youtrack.jetbrains.com/issue/KT-58778) JVM IR
inline: add fake variables for debugger
- [`KT-59404`](https://youtrack.jetbrains.com/issue/KT-59404) K2:
Missing EXPECT_TYPE_IN_WHEN_WITHOUT_ELSE
- [`KT-59830`](https://youtrack.jetbrains.com/issue/KT-59830) K2. False
negative \[FINAL_SUPERTYPE] on extending final class through type alias
- [`KT-60580`](https://youtrack.jetbrains.com/issue/KT-60580) K2: Not
supported: class org.jetbrains.kotlin.fir.types.ConeFlexibleType
- [`KT-59391`](https://youtrack.jetbrains.com/issue/KT-59391) K2:
Missing JS_BUILTIN_NAME_CLASH
- [`KT-59392`](https://youtrack.jetbrains.com/issue/KT-59392) K2:
Missing NAME_CONTAINS_ILLEGAL_CHARS
- [`KT-58360`](https://youtrack.jetbrains.com/issue/KT-58360) Intrinsics
for atomic update of array elements
- [`KT-59165`](https://youtrack.jetbrains.com/issue/KT-59165) K2:
Prohibit class literals with empty left-hand side
- [`KT-60427`](https://youtrack.jetbrains.com/issue/KT-60427) K2
`@Metadata` annotations contain outerType/outerTypeId information for
non-inner nested classes
- [`KT-59376`](https://youtrack.jetbrains.com/issue/KT-59376) K2:
Missing TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR
- [`KT-55221`](https://youtrack.jetbrains.com/issue/KT-55221) K2: No
error reported for self-referencing local function with inferred return
type
- [`KT-59586`](https://youtrack.jetbrains.com/issue/KT-59586) K2:
support JVM backend diagnostics in light tree mode
- [`KT-57780`](https://youtrack.jetbrains.com/issue/KT-57780) K2:
Calling a constructor through a deprecated typealias doesn't report a
deprecation
- [`KT-59110`](https://youtrack.jetbrains.com/issue/KT-59110) K2.
"NotImplementedError: An operation is not implemented." error on
incorrect `@Target` annotation
- [`KT-59249`](https://youtrack.jetbrains.com/issue/KT-59249) K2: Empty
varargs are not serialized to KLIB
- [`KT-55373`](https://youtrack.jetbrains.com/issue/KT-55373) K2.
Unresolved reference error for type mismatch with callable references
- [`KT-55955`](https://youtrack.jetbrains.com/issue/KT-55955) K2:
callable references are not properly resolved when in conflict with
expected type
- [`KT-60144`](https://youtrack.jetbrains.com/issue/KT-60144) JVM IR
inline: backport primitive boxing in class literals
- [`KT-60779`](https://youtrack.jetbrains.com/issue/KT-60779) K2:
missing INTERFACE_CANT_CALL_DEFAULT_METHOD_VIA_SUPER
- [`KT-60587`](https://youtrack.jetbrains.com/issue/KT-60587) K2:
Implement warning NO_REFLECTION_IN_CLASS_PATH
- [`KT-61145`](https://youtrack.jetbrains.com/issue/KT-61145) False
negative NOTHING_TO_OVERRIDE when context receivers don't match
- [`KT-59378`](https://youtrack.jetbrains.com/issue/KT-59378) K2:
Missing FINITE_BOUNDS_VIOLATION and FINITE_BOUNDS_VIOLATION_IN_JAVA
- [`KT-61163`](https://youtrack.jetbrains.com/issue/KT-61163) Default
params on actual check and inheritance by delegation compilation error
- [`KT-60800`](https://youtrack.jetbrains.com/issue/KT-60800)
\[atomicfu-K/N]: turn on the tests for the K/N part of the compiler
plugin
- [`KT-61029`](https://youtrack.jetbrains.com/issue/KT-61029) K2:
Duplicates when processing direct overridden callables
- [`KT-55196`](https://youtrack.jetbrains.com/issue/KT-55196) K2:
False-negative CONST_VAL_WITH_NON_CONST_INITIALIZER on boolean .not()
call
- [`KT-60862`](https://youtrack.jetbrains.com/issue/KT-60862) Kotlin
Scripting: NoSuchMethodError for
ExternalDependenciesResolver.addRepository
- [`KT-57963`](https://youtrack.jetbrains.com/issue/KT-57963) K2: MPP:
Annotation calls should be actualized
- [`KT-60854`](https://youtrack.jetbrains.com/issue/KT-60854) K2:
IrActualizer incorrectly generates fake overrides for synthetic java
properties
- [`KT-59665`](https://youtrack.jetbrains.com/issue/KT-59665)
ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS isn't reported for actual
typealias and fake-override actualization
- [`KT-61039`](https://youtrack.jetbrains.com/issue/KT-61039) False
positive ABSTRACT_MEMBER_NOT_IMPLEMENTED in K1 when expect actual super
types scopes don't match
- [`KT-61166`](https://youtrack.jetbrains.com/issue/KT-61166) Inherited
platform declaration clash & accidental override
- [`KT-60531`](https://youtrack.jetbrains.com/issue/KT-60531) K2/JS:
Report diagnostics before running FIR2IR
- [`KT-32275`](https://youtrack.jetbrains.com/issue/KT-32275) Embedding
kotlin-compiler-embeddable into a Java EE App leads to CDI related
deployment error
- [`KT-57845`](https://youtrack.jetbrains.com/issue/KT-57845) K2.
Unresolved reference error on calling Java references with fully
qualified name
- [`KT-58757`](https://youtrack.jetbrains.com/issue/KT-58757) K2:
False-positive NON_PUBLIC_CALL_FROM_PUBLIC_INLINE error in case an
inline fun is protected and is a part of an internal abstract class
declaration
- [`KT-59736`](https://youtrack.jetbrains.com/issue/KT-59736)
kotlinx.serialization + K2 + JS: e: java.lang.IllegalStateException:
Symbol for
kotlinx.serialization.json.internal/FormatLanguage.<init>|-547215418288530576\[1]
is unbound
- [`KT-59071`](https://youtrack.jetbrains.com/issue/KT-59071) K2/MPP:
internal declarations from common module are invisible in dependent
source sets if there is more that one intermediate source set between
- [`KT-61167`](https://youtrack.jetbrains.com/issue/KT-61167) Runtime
failure: ReferenceError: MyPromise is not defined
- [`KT-59408`](https://youtrack.jetbrains.com/issue/KT-59408) K2:
Missing MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES
- [`KT-61409`](https://youtrack.jetbrains.com/issue/KT-61409)
Kotlin/Native: crash in kmm-production-sample (compose-app) with escape
analysis enabled
- [`KT-57329`](https://youtrack.jetbrains.com/issue/KT-57329) K/N IR
linkage issues due to the combination of static caches w/ Lazy IR &
Compose compiler plugin
- [`KT-59247`](https://youtrack.jetbrains.com/issue/KT-59247)
Kapt+JVM_IR: AssertionError on anonymous object in enum super
constructor call
- [`KT-58576`](https://youtrack.jetbrains.com/issue/KT-58576) K2: IR
actualization problems in MPP scenario
- [`KT-61442`](https://youtrack.jetbrains.com/issue/KT-61442) K2:
Consider stricter filtering on implicit integer coercion
- [`KT-61441`](https://youtrack.jetbrains.com/issue/KT-61441) K2: Wrong
overload is chosen with ImplicitIntegerCoercion enabled
- [`KT-59328`](https://youtrack.jetbrains.com/issue/KT-59328) K2:
property with compound getter and without explicit type: compilation
failure, IAE "List has more than one element" at
FirDeclarationsResolveTransformer.transformFunctionWithGivenSignature()
- [`KT-61159`](https://youtrack.jetbrains.com/issue/KT-61159) K2:
OVERLOAD_RESOLUTION_AMBIGUITY between private top-level property in same
file and top-level property in different module
- [`KT-59233`](https://youtrack.jetbrains.com/issue/KT-59233) K2:
false-negative diagnostic on creating a callable reference to a function
with free type variables
- [`KT-61418`](https://youtrack.jetbrains.com/issue/KT-61418) k2:
ImplicitIntegerCoercion to List leads to "IllegalStateException: Cannot
find cached type parameter by FIR symbol"
- [`KT-61373`](https://youtrack.jetbrains.com/issue/KT-61373) False
positive: "The opt-in annotation is redundant: no matching experimental
API is used" with multiplatform code.
- [`KT-58884`](https://youtrack.jetbrains.com/issue/KT-58884) K2:
NotAMockException for mock testing with lambda expression with Maven
- [`KT-58893`](https://youtrack.jetbrains.com/issue/KT-58893) K2:
MockitoException for mock testing with lambda expression with Gradle
- [`KT-59483`](https://youtrack.jetbrains.com/issue/KT-59483) K2: Build
a Native app
- [`KT-57738`](https://youtrack.jetbrains.com/issue/KT-57738) K2:
unresolved class fields and methods in kotlin scripts
- [`KT-59449`](https://youtrack.jetbrains.com/issue/KT-59449) K2:
Diagnostic messages contain debugging-style rendered FIR
- [`KT-59849`](https://youtrack.jetbrains.com/issue/KT-59849) K2:
IllegalArgumentException: List has more than one element
- [`KT-57553`](https://youtrack.jetbrains.com/issue/KT-57553) Implement
deprecation for open val with backing field and deferred initialization
in K1
- [`KT-57230`](https://youtrack.jetbrains.com/issue/KT-57230) Support
Kotlin/Wasm in the K2 platform
- [`KT-59409`](https://youtrack.jetbrains.com/issue/KT-59409) K2:
Missing DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE
- [`KT-59058`](https://youtrack.jetbrains.com/issue/KT-59058) Companion
object is not initialized on class constructor call
- [`KT-61017`](https://youtrack.jetbrains.com/issue/KT-61017) K2:
intermediate expect/actual class results in expected class has no actual
declaration in module
- [`KT-60181`](https://youtrack.jetbrains.com/issue/KT-60181) K2:
"NotImplementedError: An operation is not implemented" with Spring
- [`KT-59472`](https://youtrack.jetbrains.com/issue/KT-59472) K2: build
Reaktive
- [`KT-54786`](https://youtrack.jetbrains.com/issue/KT-54786) MPP:
"LazyTypeAliasDescriptor cannot be cast to class
org.jetbrains.kotlin.descriptors.ClassDescriptor" caused by expected
non-constant function argument on iOS if class is type aliased
- [`KT-59753`](https://youtrack.jetbrains.com/issue/KT-59753) K2:
NotImplementedError when using annotation with vararg with default value
from other module
- [`KT-60883`](https://youtrack.jetbrains.com/issue/KT-60883) K2: Fix
`testRequireKotlinCompilerVersion` in LV 2.0 branch
- [`KT-59747`](https://youtrack.jetbrains.com/issue/KT-59747) K2: cannot
actualize expect class to Unit via typealias
- [`KT-61054`](https://youtrack.jetbrains.com/issue/KT-61054) K2: "IAE:
source must not be null" with -no-reflect on calling property getter
with implicit invoke
- [`KT-57126`](https://youtrack.jetbrains.com/issue/KT-57126) \[KLIB
Reproducibility] Manifest is written using os-dependent line separators
- [`KT-60850`](https://youtrack.jetbrains.com/issue/KT-60850) K2: FIR2IR
generates incorrect signature for fake overrides for common declaration
if it called from a platform module
- [`KT-59218`](https://youtrack.jetbrains.com/issue/KT-59218) K2: return
types of calls to `@PolymorphicSignature` methods inside try-expressions
don't resolve to void when required
- [`KT-60002`](https://youtrack.jetbrains.com/issue/KT-60002) K2:
Missing UNSUPPORTED_SUSPEND_TEST
- [`KT-61011`](https://youtrack.jetbrains.com/issue/KT-61011) K2
Scripts: FirRecursiveProblemChecker: Expected FirResolvedTypeRef with
ConeKotlinType but was FirImplicitTypeRefImplWithoutSource <implicit>
- [`KT-58906`](https://youtrack.jetbrains.com/issue/KT-58906) K2.
"Backend Internal error: Exception during IR lowering" instead of
CANNOT_INFER_PARAMETER_TYPE error when parameter type missing in lambda
- [`KT-59490`](https://youtrack.jetbrains.com/issue/KT-59490) K2: build
km-shop
- [`KT-60163`](https://youtrack.jetbrains.com/issue/KT-60163) K2: vararg
annotation argument value is serialized not as an array
- [`KT-59355`](https://youtrack.jetbrains.com/issue/KT-59355) K2: Allow
to actual classifier have wider visibility than the corresponding expect
class
- [`KT-56179`](https://youtrack.jetbrains.com/issue/KT-56179) \[K2/N]
`interop_objc_tests/multipleInheritanceClash.kt` test failed
- [`KT-59411`](https://youtrack.jetbrains.com/issue/KT-59411) K2:
Missing ENUM_CLASS_CONSTRUCTOR_CALL
- [`KT-59410`](https://youtrack.jetbrains.com/issue/KT-59410) K2:
Missing TYPEALIAS_EXPANDED_TO_MALFORMED_TYPE
- [`KT-59382`](https://youtrack.jetbrains.com/issue/KT-59382) K2:
Missing PROTECTED_CONSTRUCTOR_NOT_IN_SUPER_CALL
- [`KT-59901`](https://youtrack.jetbrains.com/issue/KT-59901) K2:
Disappeared API_NOT_AVAILABLE
- [`KT-60474`](https://youtrack.jetbrains.com/issue/KT-60474) K2: False
negative type mismatch for array literal with wrong numeric literal
- [`KT-59610`](https://youtrack.jetbrains.com/issue/KT-59610) K2: Calls
to annotations with default values are serialized differently in K1 and
K2
- [`KT-60139`](https://youtrack.jetbrains.com/issue/KT-60139) K2:
Refactor handling of implicitly actual declarations (annotation & inline
class constructors and property of inline class)
- [`KT-60793`](https://youtrack.jetbrains.com/issue/KT-60793) K2:
IllegalStateException: Expected FirResolvedTypeRef with ConeKotlinType
but was FirJavaTypeRef
- [`KT-60735`](https://youtrack.jetbrains.com/issue/KT-60735) K2:
lateinit property diagnostic has not been initialized
- [`KT-60137`](https://youtrack.jetbrains.com/issue/KT-60137) K2: Quite
complicated redeclaration error description is displayed for data
classes
- [`KT-60639`](https://youtrack.jetbrains.com/issue/KT-60639) K2:
IllegalStateException: Unsupported compile-time value GET_CLASS
type=kotlin.reflect.KClass\<p1.A>
- [`KT-56888`](https://youtrack.jetbrains.com/issue/KT-56888) CFA: Valid
green in K1 -> red in K2. `catch_end -> finally -> after_try`
- [`KT-60723`](https://youtrack.jetbrains.com/issue/KT-60723) K2: Nested
finally block has extra jump edge if surrounding try block jumps
- [`KT-60573`](https://youtrack.jetbrains.com/issue/KT-60573) K2: False
positive/negative CONFLICTING_OVERLOADS for main functions
- [`KT-60124`](https://youtrack.jetbrains.com/issue/KT-60124) K2:
Conflicting declarations on extension properties with different
upper-bounded type parameter
- [`KT-60259`](https://youtrack.jetbrains.com/issue/KT-60259) K2:
Reflection target is missing on adapted function refernces
- [`KT-59036`](https://youtrack.jetbrains.com/issue/KT-59036)
InstantiationError when instantiating annotation with a parameter type
as a default parameter of another annotation
- [`KT-59094`](https://youtrack.jetbrains.com/issue/KT-59094) K2: Fix
Scripting K2 tests
- [`KT-59711`](https://youtrack.jetbrains.com/issue/KT-59711) K/N:
Implement enumEntries intrinsic
- [`KT-59748`](https://youtrack.jetbrains.com/issue/KT-59748) K2: Return
type mismatch: expected Unit, actual Any? for when with an assignment in
branch
- [`KT-60154`](https://youtrack.jetbrains.com/issue/KT-60154) K2:
Expected some types error
- [`KT-58139`](https://youtrack.jetbrains.com/issue/KT-58139)
K2/MPP/metadata: compiler FIR serialization crash on complex expression
as annotation argument
- [`KT-59485`](https://youtrack.jetbrains.com/issue/KT-59485) K2: build
Anki-Android
- [`KT-59415`](https://youtrack.jetbrains.com/issue/KT-59415) K2:
Missing DATA_CLASS_OVERRIDE_DEFAULT_VALUES_ERROR
- [`KT-59710`](https://youtrack.jetbrains.com/issue/KT-59710) K/JVM:
Implement enumEntries intrinsic
- [`KT-57984`](https://youtrack.jetbrains.com/issue/KT-57984) K2/JS
fails with IdSignature clash for inherited expect/actual function
- [`KT-59398`](https://youtrack.jetbrains.com/issue/KT-59398) K2:
Missing NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE
- [`KT-60645`](https://youtrack.jetbrains.com/issue/KT-60645) Native:
dynamic caches are broken on Linux
- [`KT-50221`](https://youtrack.jetbrains.com/issue/KT-50221) FIR:
handle enhanced/flexible nullability inside withNullability properly
- [`KT-59281`](https://youtrack.jetbrains.com/issue/KT-59281) JVM IR
inline: incorrect type of created array
- [`KT-59507`](https://youtrack.jetbrains.com/issue/KT-59507) JVM IR
inline: invocation of arrayOfNulls by function reference results in
exception
- [`KT-58359`](https://youtrack.jetbrains.com/issue/KT-58359) Allow
volatile intrinsics on inline function constant arguments
- [`KT-60598`](https://youtrack.jetbrains.com/issue/KT-60598) K2: add
OptIn checkers for command line arguments
- [`KT-59766`](https://youtrack.jetbrains.com/issue/KT-59766) K2: ISE:
Cannot find cached type parameter by FIR symbol during the coroutines
library build
- [`KT-59644`](https://youtrack.jetbrains.com/issue/KT-59644) K2: the
companion object in an `expect` class requires to be explicitly defined
for compileNativeMainKotlinMetadata
- [`KT-59640`](https://youtrack.jetbrains.com/issue/KT-59640) K2:
`expect` constructor requires calling `this` or `super` but didn't use
to
- [`KT-58883`](https://youtrack.jetbrains.com/issue/KT-58883) K2: False
negative type mismatch for generic annotation in collection literal
- [`KT-59581`](https://youtrack.jetbrains.com/issue/KT-59581) K2:
Initializer type mismatch: expected Array\<KClass<\*>>, actual
Array\<KClass<out Serializable>> in annotation parameter default value
using array literal
- [`KT-59069`](https://youtrack.jetbrains.com/issue/KT-59069) K2 does
not report EXPECTED_CLASS_CONSTRUCTOR_DELEGATION_CALL
- [`KT-59416`](https://youtrack.jetbrains.com/issue/KT-59416) K2:
Missing EXTERNAL_INTERFACE_AS_REIFIED_TYPE_ARGUMENT
- [`KT-59417`](https://youtrack.jetbrains.com/issue/KT-59417) K2:
Missing CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE
- [`KT-59381`](https://youtrack.jetbrains.com/issue/KT-59381) K2:
Missing CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM
- [`KT-59384`](https://youtrack.jetbrains.com/issue/KT-59384) K2:
Missing DYNAMIC_NOT_ALLOWED
- [`KT-59406`](https://youtrack.jetbrains.com/issue/KT-59406) K2:
Missing PROPERTY_DELEGATION_BY_DYNAMIC
- [`KT-60247`](https://youtrack.jetbrains.com/issue/KT-60247) K2: order
of data class generated member differs in IR
- [`KT-57223`](https://youtrack.jetbrains.com/issue/KT-57223) K2:
false-negative INAPPLICABLE_JVM_NAME on non-final properties outside
interfaces
- [`KT-60183`](https://youtrack.jetbrains.com/issue/KT-60183) K2:
INAPPLICABLE_JVM_NAME on private methods with all-open plugin
- [`KT-60120`](https://youtrack.jetbrains.com/issue/KT-60120) K2 can't
get a default parameter value of expect annotation
- [`KT-57240`](https://youtrack.jetbrains.com/issue/KT-57240) K2 MPP:
Actualization doesn't work for flexible types
- [`KT-60436`](https://youtrack.jetbrains.com/issue/KT-60436) K2:
investigate possible FirJavaTypeRef equals parameter in
FirDataFlowAnalyzer.hasEqualsOverride
- [`KT-60299`](https://youtrack.jetbrains.com/issue/KT-60299) K2: when a
typealias to `Unit` is returned, an explicit `return` is now required
- [`KT-58005`](https://youtrack.jetbrains.com/issue/KT-58005) K2:
Unsupported compile-time value BLOCK for Repeatable annotations
- [`KT-60223`](https://youtrack.jetbrains.com/issue/KT-60223) K2: Wrong
import with import alias
- [`KT-54854`](https://youtrack.jetbrains.com/issue/KT-54854) K2.
Unresolved reference for not imported declaration when it is already
imported as an import alias is absent in K2
- [`KT-59738`](https://youtrack.jetbrains.com/issue/KT-59738) K2:
NoSuchElementException from JvmValueClassLoweringDispatcher in MPP
environment
- [`KT-59708`](https://youtrack.jetbrains.com/issue/KT-59708) K2:
"Property must be initialized or be abstract" occurs due to constructors
order
- [`KT-58483`](https://youtrack.jetbrains.com/issue/KT-58483) K2.
-Xmulti-platform flag isn't working
- [`KT-53490`](https://youtrack.jetbrains.com/issue/KT-53490) FIR:
Refactor augmented assignment resolving code - fix lhs-related problems
and combine similar code in array and assign operator handling
- [`KT-59673`](https://youtrack.jetbrains.com/issue/KT-59673) K2:
incorrect error message
- [`KT-58578`](https://youtrack.jetbrains.com/issue/KT-58578) K2:
Commonize expect-actual logic between FIR and IR actualizer
- [`KT-54989`](https://youtrack.jetbrains.com/issue/KT-54989) FIR2IR:
fragile code in postfix op detection
- [`KT-59464`](https://youtrack.jetbrains.com/issue/KT-59464) K2:
Investigate cases of implicit type refs in Fir2IrImplicitCastInserter
- [`KT-53898`](https://youtrack.jetbrains.com/issue/KT-53898) K2: False
negative VAL_REASSIGNMENT on member vals
- [`KT-57641`](https://youtrack.jetbrains.com/issue/KT-57641) K2:
"java.lang.NoSuchFieldException: INSTANCE" in kotlin-reflect for
`KClass.objectInstance` on an anonymous object
- [`KT-59299`](https://youtrack.jetbrains.com/issue/KT-59299) \[K2] ISE
in IrBindablePublicSymbolBase.bind on equals function from companion of
serializable class
- [`KT-58844`](https://youtrack.jetbrains.com/issue/KT-58844) Incorrect
type mismatch error: "actual type is kotlin/Int but kotlin/Int was
expected"
- [`KT-59413`](https://youtrack.jetbrains.com/issue/KT-59413) K2:
Missing VALUE_CLASS_CANNOT_HAVE_CONTEXT_RECEIVERS
- [`KT-56173`](https://youtrack.jetbrains.com/issue/KT-56173) FIR:
IrGenerationExtensions cannot see default values from expect
declarations
- [`KT-59611`](https://youtrack.jetbrains.com/issue/KT-59611) FIR2IR:
Unsupported callable reference for enum entry with clashing name
- [`KT-59858`](https://youtrack.jetbrains.com/issue/KT-59858) Kotlin
Native: Compilation failed: Sequence contains more than one matching
element,
org.jetbrains.kotlin.backend.konan.lower.FunctionReferenceLowering$FunctionReferenceBuilder.buildClass(FunctionReferenceLowering.kt:644)
- [`KT-58539`](https://youtrack.jetbrains.com/issue/KT-58539) \[K2] Ir
actualization fails to match expect/actual declarations that use custom
function types
- [`KT-59775`](https://youtrack.jetbrains.com/issue/KT-59775)
'toString()' on Object returns different result with concatenation
- [`KT-59737`](https://youtrack.jetbrains.com/issue/KT-59737) K2: Actual
class 'actual class FastArrayList<E> : AbstractMutableList<E>,
MutableListEx<E>, RandomAccess' has no corresponding members for
expected class members because of different parameter names in Java
- [`KT-59613`](https://youtrack.jetbrains.com/issue/KT-59613) K2:
Unhandled intrinsic in ExpressionCodegen exception in for expect
function with default value in parameter
- [`KT-59216`](https://youtrack.jetbrains.com/issue/KT-59216) K2.
Unhelpful unresolved reference when inheriting from interface with
constructor call (K1 reports NO_CONSTRUCTOR instead)
- [`KT-59057`](https://youtrack.jetbrains.com/issue/KT-59057) Revise
muted tests for native backend
- [`KT-57377`](https://youtrack.jetbrains.com/issue/KT-57377) K2/MPP:
internal declarations from common module are inivisible for intermediate
modules during metadata compilation
- [`KT-59693`](https://youtrack.jetbrains.com/issue/KT-59693) MPP:
linkReleaseExecutableLinux fails with IllegalStateException: Drains have
not been painted properly
- [`KT-59362`](https://youtrack.jetbrains.com/issue/KT-59362) K2/MPP:
`.toByte()` conversion for const val causes SourceCodeAnalysisException:
java.lang.NullPointerException: null
- [`KT-51670`](https://youtrack.jetbrains.com/issue/KT-51670) FIR:
questionable behavior for deprecated String constructors
- [`KT-35314`](https://youtrack.jetbrains.com/issue/KT-35314)
StackOverflowError with nested try-finally and function with contracts
- [`KT-53460`](https://youtrack.jetbrains.com/issue/KT-53460) False
positive smartcast warning in if block after if block
- [`KT-40851`](https://youtrack.jetbrains.com/issue/KT-40851) False
MUST_BE_INITIALIZED_OR_BE_ABSTRACT error for a property which is
initialised in the init block
- [`KT-59695`](https://youtrack.jetbrains.com/issue/KT-59695) K2: false
negative NON_PUBLIC_CALL_FROM_PUBLIC_INLINE
- [`KT-41198`](https://youtrack.jetbrains.com/issue/KT-41198) False
positive “Variable must be initialized” with assignment in scope
function and safe call
- [`KT-58901`](https://youtrack.jetbrains.com/issue/KT-58901) K2. Value
parameter default values are not checked for type mismatch
- [`KT-48115`](https://youtrack.jetbrains.com/issue/KT-48115) Member
functions with type parameter and contract don't produce smartcasts
- [`KT-59541`](https://youtrack.jetbrains.com/issue/KT-59541) K2: Type
checking has run into a recursive problem on code that was compiling
with Language 1.9
- [`KT-58943`](https://youtrack.jetbrains.com/issue/KT-58943) K2:
Incorrect with K1 priority of "invokeExtension + implicit receiver"
candidate
- [`KT-37375`](https://youtrack.jetbrains.com/issue/KT-37375) \[FIR]
Incorrect invoke resolution
- [`KT-59789`](https://youtrack.jetbrains.com/issue/KT-59789) K2:
self-reference does not compile anymore
- [`KT-59286`](https://youtrack.jetbrains.com/issue/KT-59286) JVM IR
inline: local property not found
- [`KT-58823`](https://youtrack.jetbrains.com/issue/KT-58823) K2:
Android app crashes right after start: java.lang.NoSuchMethodError: No
virtual method findViewById(I)Landroid/view/View
- [`KT-57754`](https://youtrack.jetbrains.com/issue/KT-57754) K2: No
public signature built for the synthesized delegate field
- [`KT-58533`](https://youtrack.jetbrains.com/issue/KT-58533) K2: "Not
enough information to infer type variable T" for generic call in throw
expression
- [`KT-34846`](https://youtrack.jetbrains.com/issue/KT-34846) FIR Java:
enhance type parameter bounds properly
- [`KT-52043`](https://youtrack.jetbrains.com/issue/KT-52043) FIR:
FirValueParameter with SubstitutionOverride does not reference the
original FIR declaration
- [`KT-59291`](https://youtrack.jetbrains.com/issue/KT-59291) JVM IR
inline: unexpected result of `apiVersionIsAtLeast` invocation
- [`KT-59550`](https://youtrack.jetbrains.com/issue/KT-59550) K2:
synthetic property isn't seen through Java
- [`KT-59038`](https://youtrack.jetbrains.com/issue/KT-59038) \[K2]
IllegalStateException in mixed Java/Kotlin inheritance
- [`KT-59489`](https://youtrack.jetbrains.com/issue/KT-59489) K2: builld
spring-petclinic-kotlin
- [`KT-58908`](https://youtrack.jetbrains.com/issue/KT-58908) K2.
Internal error "kotlin.UninitializedPropertyAccessException: lateinit
property firType has not been initialized" on incomplete `is`
- [`KT-56755`](https://youtrack.jetbrains.com/issue/KT-56755) K2:
Investigate failures related to line numbers with LT compilation enabled
- [`KT-56139`](https://youtrack.jetbrains.com/issue/KT-56139) K2:
consider adding source element for implicit receivers
- [`KT-57489`](https://youtrack.jetbrains.com/issue/KT-57489) K2:
Incorrectly generated line numbers in companion object access inside
class
- [`KT-58947`](https://youtrack.jetbrains.com/issue/KT-58947) Run all
existing codegen box tests with kapt stub generation
- [`KT-58827`](https://youtrack.jetbrains.com/issue/KT-58827) K2 reports
ACTUAL_WITHOUT_EXPECT on the whole class
- [`KT-54917`](https://youtrack.jetbrains.com/issue/KT-54917) K2: ILT
leak from a completed generic call
- [`KT-56187`](https://youtrack.jetbrains.com/issue/KT-56187) K2: type
parameter's upper bound is ignored in callable references
- [`KT-56186`](https://youtrack.jetbrains.com/issue/KT-56186) K2: lack
of type arguments in type constructor is ignored in callable references
- [`KT-59356`](https://youtrack.jetbrains.com/issue/KT-59356) K2:
Restrict rules for matching of expect supertypes for actual class
- [`KT-57217`](https://youtrack.jetbrains.com/issue/KT-57217) K2:
NoSuchMethodError on `toChar` call on java inheritor of java.lang.Number
- [`KT-58356`](https://youtrack.jetbrains.com/issue/KT-58356) K2:
StackOverflowError with OptIn and Deprecated, while compiling Kotlin
project
- [`KT-57954`](https://youtrack.jetbrains.com/issue/KT-57954) K2.
Auto-generated "entries" member of enum class has higher priority than
user-declared companion object with same name when language version is
set to 2.0
- [`KT-59508`](https://youtrack.jetbrains.com/issue/KT-59508) K2: Make
sure that warnings-severity nullability annotations are not perceived as
reasons for nullability errors
- [`KT-53820`](https://youtrack.jetbrains.com/issue/KT-53820) FIR:
mismatching error message for invisible reference/member
- [`KT-58641`](https://youtrack.jetbrains.com/issue/KT-58641) K2:
PublishedApi has no effect when internal fun used in the test source set
- [`KT-59461`](https://youtrack.jetbrains.com/issue/KT-59461) K2:
Erroneous null check when returning not-null typealias to nullable type
- [`KT-58980`](https://youtrack.jetbrains.com/issue/KT-58980) K2: Import
of java field from companion's base breaks the compiler
- [`KT-59140`](https://youtrack.jetbrains.com/issue/KT-59140) K2:
"Symbol public final static field is invisible" caused by java static
field called in kotlin code
- [`KT-59501`](https://youtrack.jetbrains.com/issue/KT-59501) Escape
analysis constructs arrays of negative size
- [`KT-59452`](https://youtrack.jetbrains.com/issue/KT-59452)
apiVersionIsAtLeast calls in body of stdlib inline function may be
evaluated on compile-time
- [`KT-53967`](https://youtrack.jetbrains.com/issue/KT-53967) \[PL]
Classifiers: Turning interface from fun to non-fun + adding member
function causes Kotlin/JS fail: IAE: "Sequence contains more than one
matching element"
- [`KT-59346`](https://youtrack.jetbrains.com/issue/KT-59346) Not
working breakpoints on not initialized variables
- [`KT-55993`](https://youtrack.jetbrains.com/issue/KT-55993) Wrong
current pointer: strange behaviour of debugger or compiler when two IFs
and an uninitialized variable between them
- [`KT-58335`](https://youtrack.jetbrains.com/issue/KT-58335) K2:
Exposed typealias from implementation dependency produces type mismatch
in dependent module
- [`KT-58719`](https://youtrack.jetbrains.com/issue/KT-58719) K2:
false-positive INVISIBLE_REFERENCE error in case of importing an
internal abstract class
- [`KT-57694`](https://youtrack.jetbrains.com/issue/KT-57694) K2: False
positive \[NOTHING_TO_OVERRIDE] for a class overriding 'sort' method
from the List collection
- [`KT-58460`](https://youtrack.jetbrains.com/issue/KT-58460) K2. return
without argument became allowed for functions with return type Any
- [`KT-49249`](https://youtrack.jetbrains.com/issue/KT-49249) Incorrect
nullability inferred for Throwable
- [`KT-57429`](https://youtrack.jetbrains.com/issue/KT-57429) K2: Fix
computing a mangled name for members of a generic class that reference
the class's type parameters in their signature
- [`KT-57566`](https://youtrack.jetbrains.com/issue/KT-57566) K2: Fix
name mangling for functions that have dynamic type in their signature
- [`KT-57818`](https://youtrack.jetbrains.com/issue/KT-57818) K2: Fix
FirMangleComputer to not include the "special" package name into mangled
names of property accessors on non-JVM platforms
- [`KT-57777`](https://youtrack.jetbrains.com/issue/KT-57777) K2: Fix
computing a mangled name for the synthesized `entries` property getter
of an enum class
- [`KT-57433`](https://youtrack.jetbrains.com/issue/KT-57433) K2: Fix
computing a mangled name for top-level functions and properties
- [`KT-58553`](https://youtrack.jetbrains.com/issue/KT-58553) k2:
Annotation type arguments are lost in FIR2IR
- [`KT-58184`](https://youtrack.jetbrains.com/issue/KT-58184) K2: False
negative INVISIBLE_MEMBER on destructuring declaration
- [`KT-58637`](https://youtrack.jetbrains.com/issue/KT-58637) K2: False
negative ABSTRACT_MEMBER_NOT_IMPLEMENTED on Entry of Enum with abstract
member declaration
- [`KT-54952`](https://youtrack.jetbrains.com/issue/KT-54952)
JvmSerializationBindings does not work with K2
- [`KT-54844`](https://youtrack.jetbrains.com/issue/KT-54844)
FIR/Analysis API: create stubs for equals/hashCode/toString for data
classes in FIR
- [`KT-58555`](https://youtrack.jetbrains.com/issue/KT-58555) K2:
Generic property reference inside delegation misses type argument
- [`KT-57648`](https://youtrack.jetbrains.com/issue/KT-57648) FIR: move
deprecation calculation on COMPILER_REQUIRED_ANNOTATIONS phase
- [`KT-57049`](https://youtrack.jetbrains.com/issue/KT-57049) K2
generates duplicates of symbols/declarations
- [`KT-55723`](https://youtrack.jetbrains.com/issue/KT-55723) K2:
deprecations for enum entries are not resolved on the TYPES phase
- [`KT-59033`](https://youtrack.jetbrains.com/issue/KT-59033) Doesn’t
support vararg parameter in annotation instantiation with empty
arguments
- [`KT-58780`](https://youtrack.jetbrains.com/issue/KT-58780) JVM IR
inline: local property delegation is not working for K2
- [`KT-58779`](https://youtrack.jetbrains.com/issue/KT-58779) JVM IR
inline: correctly process special inlined block in value class lowering
- [`KT-58720`](https://youtrack.jetbrains.com/issue/KT-58720) Generate
full InnerClass attributes for the standard library
- [`KT-58215`](https://youtrack.jetbrains.com/issue/KT-58215) K2: JVM IR
produces line numbers for delegation bridges that ar

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 11:16:52 +01:00
Nik Clayton bd452b53a5
fix: Ensure system controls are visible on older devices (#224)
Previous code always set `navigationBarColor` and `statusBarColor` to
`transparent` irrespective of the API level.

This only works on API 29 and above; if you do it on API levels lower
than that the system navigation buttons (home, back, recents) are
typically shown on a very similar colour to the background, making them
very hard to see.

Fixes #221
2023-11-05 22:19:39 +01:00
Nik Clayton c350d17646
refactor: Remove additional unused code after migrating to Timber (#219) 2023-11-05 14:50:23 +01:00
renovate[bot] 7e67186cbe
fix(deps): update dependency org.junit.jupiter:junit-jupiter-params to v5.10.0 (#121)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [org.junit.jupiter:junit-jupiter-params](https://junit.org/junit5/)
([source](https://togithub.com/junit-team/junit5)) | `5.9.2` -> `5.10.0`
|
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter-params/5.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.junit.jupiter:junit-jupiter-params/5.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.junit.jupiter:junit-jupiter-params/5.9.2/5.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter-params/5.9.2/5.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-05 14:40:54 +01:00
sanao 4b7eb2419e
refactor: Use com.google.android.material.appbar.MaterialToolbar
The previous code used `androidx.appcompat.widget.Toolbar` in a several
places.

It's better to use `MaterialToolbar` as that plays better with other
Material components.

Update the usage throughout the project.

In addition, implement a lint check that will prevent any future use
from creeping back in.

Fixes #28
2023-11-05 13:51:37 +01:00
Nik Clayton f8877909ca
refactor: Log with Timber (#218)
Use Timber instead of `android.util.Log`. Removes the need for `TAG`
statics in companion objects, slightly simplifying the code. Opens the
door for some production logging in the future.
2023-11-04 22:22:44 +01:00
Nik Clayton 6aa4eab75d
fix: Remove progressbar from status timelines (#208)
Previously the middle-of-screen progress spinner and the spinner that
appears on a swipe-to-refresh could get out of sync.

Fix this by removing the middle-of-screen progress spinner from relevant
fragments, as the swipe-to-refresh spinner shows the user that an
operation is in progress, and also clues them in to the fact that a
swipe-to-refresh is possible (by using the common UX control).

Fixes #75
2023-10-30 19:26:40 +01:00
Nik Clayton c3f68ba9b8
fix: Refer to "SDK level" rather than "SDK version" (#211)
"level" is the term used throughout Android documentation.

Originally submitted by https://github.com/chaoscalm
2023-10-30 19:25:53 +01:00
Nik Clayton e5a54061aa
build: Use `updateLintBaseline` task (#209)
There's a well-hidden `updateLintBaseline` task that does what the
custom `newLintBaseline` task does. Prefer the `update...` task to
reduce the amount of custom machinery in this build.
2023-10-30 19:03:45 +01:00
Nik Clayton 9dad367f6f
fix: Restore image aspect ratio when drag ends (#207)
Previously, ending a drag on an image (that didn't result in dismissing
the fragment) animates the image back in to position restoring the X
axis scale factor.

The Y axis scale factor was not restored, potentially breaking the
image's aspect ratio. Restore the Y axis scale factor to fix this
(`ViewVideoFragment` already handles this correctly).

Fixes #202
2023-10-28 20:28:57 +02:00
Nik Clayton 523efa705c
fix: Prevent potential crash when filters are slow to load (#205)
This previous code could crash if `filterModel.kind` (marked `lateinit`)
had not been set before the filters are loaded. This could happen in
rare cases.

Fix this by rewriting `FilterModel`. Instead of creating a half-empty
object that still needs further initialisation, delay the creation until
all the necessary information is available, and pass it in the
`FilterModel` constructor.

This also forces code that uses `FilterModel` to properly handle the
case where it might be null at the point where filtering decisions have
to be made.

This means that `TimelineViewModel` (and subclasses) no longer need the
`init()` function to complete their construction, which was another
significant code smell. Pass the `TimelineKind` to the view models via
their `SavedStateHandle`.

This showed that changing filters wasn't causing the timelines to update
without a manual refresh, so fix that too. Editing filters sends change
events for the old and new contexts (in case a context is removed from a
filter), and deleting a filter sends a change event too.
2023-10-28 19:54:46 +02:00
chaoscalm 34e37f9ebb
fix(l10n): Update Italian translations (#204) 2023-10-28 13:43:41 +02:00
Nik Clayton 3705a29dd0
fix: Use the correct name for filters affecting threads (#203)
Previous code called filters that affect threads "Conversations".
Correct this to "Threads", to distinguish from "Direct Messages" which
can also be known as "conversations" (in the API in particular).
2023-10-26 23:34:04 +02:00
Nik Clayton ca8c1d9181
chore: Update copyright notice to refer to Pachli for the license (#201)
Previous copyright notice mentioned that the license should have been
distributed with Tusky. Correct that to Pachli.

This does not change the copyright assignment, only the instructions
as to where to find the license.
2023-10-26 16:41:12 +02:00
Nik Clayton 2f3851acee
refactor: Convert Java viewholders to Kotlin (#200) 2023-10-26 16:22:18 +02:00
Nik Clayton 0598c0e667
chore: Remove unused DAO functions (#199) 2023-10-26 12:23:10 +02:00
Nik Clayton 6b12ecfd7a
fix(deps): update androidx.room to v2.6.0 (#198)
Enable Kotlin code generation, and use the new room plugin to generate
schemas in a reproducible/cacheable way.
2023-10-25 18:39:31 +02:00
Nik Clayton 9c4ea13d23
chore: Prepare release 1.3.0 (versionCode 6) (#197) 2023-10-25 09:52:25 +02:00
sanao 00bde27eb3 fix(l10n): Update Japanese translations
Currently translated at 100.0% (632 of 632 strings)

Translation: Pachli/UI strings
Translate-URL: https://hosted.weblate.org/projects/pachli/ui-strings/ja/
2023-10-25 09:05:27 +02:00
sanao 1f2f4d51b5
feat: Add a preference to hide "self-boosts"
A "self-boost" is someone boosting their own post. Some people are
particularly prolific at this, and it can clutter the timeline. Provide
a new preference that allows the user to show/hide these boosts from
their timeline.
2023-10-23 22:47:11 +02:00
Nik Clayton 42b09f4f1e
fix: Show full display and username in profile view (#195)
Most parts of the UI will truncate the display of long names (display
and user), but it makes sense to show them untruncated on the account's
profile screen.
2023-10-23 13:20:23 +02:00
Nik Clayton 5a41cbd40f
fix: Improve display of "obscured" links (#194)
The previous code (a) used an emoji as the prefix character when showing
the destination of an obscured link, and (b) made the destination part
of the link anchor text.

Using an emoji was a problem because the user can use different emoji
sets and it can give strange results. Making the destination part of the
link text made it difficult to distinguish at a glance where one link
ends and another starts.

Fix the emoji problem by replacing the emoji with a drawable.

Fix the destination problem by changing the string resource so it only
includes the destination part, and inserting it at the end of the link
instead of replacing the whole link. This means the disclosed
destination is not clickable, does not look like part of the link, and
stands out more.
2023-10-23 13:20:09 +02:00
Nik Clayton 566b23ed06
fix: Ensure empty timeline message is visible (#191)
Previously was showing pale text on a pale background, so effectively
invisible.

Use `colorPrimary` and `colorOnPrimary` to ensure the text can be seen.
2023-10-20 13:29:35 +02:00
Nik Clayton 514b295fe1
refactor: Use sealed interfaces for lighterweight code (#190)
Using a sealed interface (instead of a sealed class) at the root of the
hierarchy avoids the overhead of having to create and initialise the
class (visible in the generated bytecode).

It also makes the instantiation code slightly less cumbersome because
the code doesn't need to pass parameters to the root's constructor.
2023-10-20 13:00:36 +02:00
Nik Clayton d39eb3b642
refactor: Extract PreviewCard display code to `PreviewCardView` (#184) 2023-10-19 12:54:58 +02:00
Nik Clayton 3157f8d946
fix: Adjust video playback UX behaviour (#186)
Previously, playing a video would show the controls and associated
overlay for five seconds before fading them out. This obscures the video
for too long.

Fix this by:

- Only showing the media description on start, and remove after two
seconds
- Show the controls (and media description) if the user taps, removing
after two seconds
- Pausing the video (with the pause control, or tapping on the media
description) keeps the controls and description on-screen indefinitely
so they are easier to read

Fixes #144
2023-10-19 12:43:10 +02:00
renovate[bot] 8a4ce7f7da
fix(deps): update dependency com.android.tools.build:gradle to v8.1.2 (#167)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.android.tools.build:gradle](https://developer.android.com/studio/build)
([source](https://android.googlesource.com/platform/tools/base)) |
`8.1.1` -> `8.1.2` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.android.tools.build:gradle/8.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.android.tools.build:gradle/8.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.android.tools.build:gradle/8.1.1/8.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.android.tools.build:gradle/8.1.1/8.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xOS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-18 22:07:22 +02:00
Nik Clayton 0730c0190b
refactor: Use ksp instead of kapt for Hilt (#181)
This removes all use of kapt from the project.
2023-10-18 15:02:17 +02:00
Nik Clayton e59eebc5e4
fix: Use Pachli blue and orange for notification icons (#182)
Fixes #178
2023-10-17 20:35:15 +02:00
sanao 95d4fd2d74 fix(l10n): Update Japanese translations
Currently translated at 99.5% (627 of 630 strings)

Translation: Pachli/UI strings
Translate-URL: https://hosted.weblate.org/projects/pachli/ui-strings/ja/
2023-10-17 20:33:48 +02:00
Nik Clayton 2ca279a37c
fix: Update timeline when link preview setting changes (#180)
The previous code didn't include SHOW_CARDS_IN_TIMELINES in the list of
prefkeys that change `StatusDisplayOptions`, so changing the preference
wouldn't update the timeline display; you had to close/restart the app.
2023-10-16 21:49:11 +02:00
sanao 3cfb7a0d1e
feat: Show announcement dates (#35) (#151)
Display the time that an announcement was posted, as well as the
most recent update to the announcement (if there is one). Time display
honours the user's "use absolute time" preference.

Fixes #35
2023-10-16 20:04:30 +02:00
Nik Clayton db2bd3199e
refactor: Create repositories for preferences and StatusDisplayOptions (#149)
Previously, code for handling shared preferences, and how those
preferences affect `StatusDisplayOptions`, was scattered through the
code base with duplicate implementations.

Bring it together in to a `SharedPreferencesRepository` and a
`StatusDisplayOptionsRepository`.

`SharedPreferencesRepository` is a thin wrapper over`SharedPreferences`
that delegates most work to `SharedPreferences`. It configures a
listener for preference changes, and exposes those changes as a flow.

`StatusDisplayOptions` now contains explicit defaults to ensure they
are in one place.

`StatusDisplayOptionsRepository` exposes a `StatusDisplayOptions` flow
that updates whenever the active account changes or a relevant
preference changes.

The viewmodels expose `StatusDisplayOptionsRepository.flow` to the
activities and fragments so they can pass the current value to the
adapter.

This obsoletes `PreferenceChangedEvent`. An event is still fired when
filters change, `FilterChangedEvent`.

This allowed many of the mocks in tests to be replaced with either the
real type (because a fake is injected in to it, or one of its
dependencies) or a custom fake that provides a mock.
2023-10-15 22:52:47 +02:00
Nik Clayton 24fa26c126
refactor: Simplify View{Image,Media,Video}Fragment creation (#175)
Previous code had to distinguish between showing an attachment or
showing an image by URL.

Simplify this by -- in the image URL case -- creating a fake attachment
that references the image URL.

Move the code that unmarshalls the Bundle arguments to
`ViewMediaFragment` to share between `ViewImageFragment` and
`ViewVideoFragment`.
2023-10-15 22:29:18 +02:00
Nik Clayton c50f10a989
refactor: Extract Poll display code to `PollView` (#177) 2023-10-15 22:26:34 +02:00
Nik Clayton 24e195f5b9
chore: Update .gitignore for gradle-profiler (#176)
Ignore directories created by `gradle-profiler`.
2023-10-15 22:18:13 +02:00
renovate[bot] 949faae051
chore(deps): update plugin ktlint to v11.6.1 (#166)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| org.jlleitschuh.gradle.ktlint | `11.6.0` -> `11.6.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jlleitschuh.gradle.ktlint/11.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jlleitschuh.gradle.ktlint/11.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jlleitschuh.gradle.ktlint/11.6.0/11.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jlleitschuh.gradle.ktlint/11.6.0/11.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xOS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-15 19:06:10 +02:00
renovate[bot] c03935cccf
fix(deps): update dependency com.ibm.icu:icu4j to v73.2 (#120)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.ibm.icu:icu4j](https://icu.unicode.org/)
([source](https://togithub.com/unicode-org/icu)) | `73.1` -> `73.2` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.ibm.icu:icu4j/73.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.ibm.icu:icu4j/73.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.ibm.icu:icu4j/73.1/73.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.ibm.icu:icu4j/73.1/73.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>unicode-org/icu (com.ibm.icu:icu4j)</summary>

###
[`v73.2`](https://togithub.com/unicode-org/icu/compare/release-73-1...release-73-2)

[Compare
Source](https://togithub.com/unicode-org/icu/compare/release-73-1...release-73-2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-15 19:05:03 +02:00
renovate[bot] 277f19dbda
chore(deps): update hilt to v2.48.1 (#165)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.dagger.hilt.android](https://togithub.com/google/dagger) |
`2.48` -> `2.48.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.dagger.hilt.android/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.dagger.hilt.android/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.dagger.hilt.android/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.dagger.hilt.android/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[com.google.dagger:hilt-android-testing](https://togithub.com/google/dagger)
| `2.48` -> `2.48.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.dagger:hilt-android-testing/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.dagger:hilt-android-testing/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.dagger:hilt-android-testing/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.dagger:hilt-android-testing/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [com.google.dagger:hilt-compiler](https://togithub.com/google/dagger)
| `2.48` -> `2.48.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.dagger:hilt-compiler/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.dagger:hilt-compiler/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.dagger:hilt-compiler/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.dagger:hilt-compiler/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [com.google.dagger:hilt-android](https://togithub.com/google/dagger) |
`2.48` -> `2.48.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.dagger:hilt-android/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.dagger:hilt-android/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.dagger:hilt-android/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.dagger:hilt-android/2.48/2.48.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xOS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-15 18:56:57 +02:00
Nik Clayton 9cb41d6353
fix: Show media when resuming ViewMediaFragment (#174)
Previous code finalised the view setup in `onViewCreated`, so if you
opened some media, switched away from the app, and switched back you'd
get a blank screen.

Fix this by doing the finalisation in `onResume()`, so the media is
displayed correctly when returning to the fragment.

Fixes #161
2023-10-15 14:45:41 +02:00