Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/conventional-commits.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
name: Conventional Commits
name: Conventional Commits

on: [pull_request]

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# We are setting the version to 0.20.0 because of bug happening with the current version of the action.
# To see more details and know when it will be fixed, please visit: https://github.com/aevea/commitsar/issues/583
jobs:
validate-commits:
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v1
- name: Commitsar check
uses: docker://aevea/commitsar
uses: docker://aevea/commitsar:0.20.0
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)

Prefix your items with `(Template)` if the change is about the template and not the resulting application.

## 3.12.X
- Updated from .NET 9 to .NET 10.
- Updated Android target SDK version to 36.
- Updated android aot profile and profiling packages to 10.0.0-preview1.
- Set MtouchUseLlvm to false for iOS release build to fix build time issue.
- Changed the way that iOS app icons are added to the project.
- Updated external dependencies packages versions.
- Added [Bindable(true)] to all properties in the presentation layer that are used in bindings to remove runtime errors.

## 3.11.X
- Added API Client tests project.
- Removed all references to Uno.SourceGenerationTasks packages and adjusted the dependency injection recipe in ViewModels accordingly.
Expand Down
6 changes: 3 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<Project>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507">
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="9.0.0">
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="10.0.102">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<!-- Microsoft.VisualStudio.Threading.Analyzers has the async void analyzers. -->
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.13.2" PrivateAssets="all" />
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15" PrivateAssets="all" />
<PackageReference Include="GooseAnalyzers" Version="1.0.0" PrivateAssets="all" />
</ItemGroup>

Expand Down
6 changes: 3 additions & 3 deletions build/stage-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
- name: ApplicationEnvironment
value: ${{ parameters.applicationEnvironment }}
- name: BuildTargetFramework
value: net9.0-windows10.0.22621.0
value: net10.0-windows10.0.22621.0
# For optimization, if we are on light build, we only build the project else we publish it.
- name: dotNetCommand
${{ if eq(variables['IsLightBuild'], 'true') }}:
Expand Down Expand Up @@ -107,7 +107,7 @@ jobs:
- name: ApplicationPlatform
value: AnyCPU
- name: BuildTargetFramework
value: net9.0-android35.0
value: net10.0-android36.0

# For optimization, if we are on light build, we only build the project else we publish it.
- name: dotNetCommand
Expand All @@ -133,7 +133,7 @@ jobs:
- name: ApplicationEnvironment
value: ${{ parameters.applicationEnvironment }}
- name: BuildTargetFramework
value: net9.0-ios
value: net10.0-ios
- name: ArtifactName
value: $(iOSArtifactName)_${{ parameters.applicationEnvironment }}

Expand Down
2 changes: 1 addition & 1 deletion build/steps-build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ steps:
displayName: 'Copy Binary Files'
retryCountOnTaskFailure: 3
inputs:
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net9.0-android35.0'
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net10.0-android36.0'
Contents: |
**/*.aab
**/*.apk
Expand Down
11 changes: 9 additions & 2 deletions build/steps-build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ steps:
parameters:
installAppleWorkload: true

- task: Bash@3
displayName: Select Xcode 26.1
inputs:
targetType: inline
script: |
sudo xcode-select -s "/Applications/Xcode_26.1.1.app/Contents/Developer"

#-if false
- download: current
condition: eq('GeneratedApp', '${{ parameters.solutionName }}')
Expand Down Expand Up @@ -83,15 +90,15 @@ steps:
inputs:
Contents: '**/*.ipa'
flattenFolders : true
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net9.0-ios'
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net10.0-ios'
TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: CopyFiles@2
displayName: 'Copy DSYM'
inputs:
Contents: '**/*.dSYM/**'
flattenFolders : true
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net9.0-ios'
SourceFolder: '${{ parameters.pathToSrc }}/app/${{ parameters.solutionName }}.Mobile/bin/Release/net10.0-ios'
TargetFolder: '$(Build.ArtifactStagingDirectory)/${{ parameters.solutionName }}.Mobile.dSYM'

- publish: $(Build.ArtifactStagingDirectory)
Expand Down
4 changes: 2 additions & 2 deletions build/templates/dotnet-install.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
parameters:
- name: UnoCheck_Version
type: string
default: '1.27.4'
default: '1.33.1'

- name: UnoCheck_Manifest
type: string
default: 'https://raw.githubusercontent.com/unoplatform/uno.check/870b2615fc2783e9355374c12015597a92dd242a/manifests/uno.ui.manifest.json'
default: 'https://raw.githubusercontent.com/unoplatform/uno.check/d80cfb2e37941bfbb8d9d7bd9cc6599567382cff/manifests/uno.ui.manifest.json'

# Whether the Android workload should be installed.
- name: installAndroidWorkload
Expand Down
2 changes: 1 addition & 1 deletion build/variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
macOSHostedAgentImage: 'macOS-15'

# SDK versions
DotNetVersion: '9.0.102'
DotNetVersion: '10.0.101'

# Name of the folder where the artefacts will be placed. Variable used in build and release phases.
# We make seperate folders so that releases can each download only the folder they need.
Expand Down
2 changes: 1 addition & 1 deletion doc/Architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ See [Logging.md](Logging.md) for more details.
### Testing
The architecture of application was designed with automated testing in mind.
Automated testing explains why the application is divided in layers that are not multi-targeted.
> i.e. The Access, Business, and Presentation libs target only `.net9.0`, and **not** `.net9.0-ios` nor `.net9.0-android35.0`.
> i.e. The Access, Business, and Presentation libs target only `.net10.0`, and **not** `.net10.0-ios` nor `.net10.0-android36.0`.

It also explains the separation of `Startup` and `CoreStartup`.
`CoreStartup` can setup all the services that are non-UI dependent which can then be used to run simulations of the application using ViewModels that aren't attached to any UI.
Expand Down
6 changes: 3 additions & 3 deletions doc/PlatformSpecifics.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ To generate this file, following the following steps:

1. Open a command prompt or terminal against your Android project’s directory that contains the .csproj.
2. Ensure only one Android device is attached.
3. Execute the following command: `dotnet build -f net9.0-android35.0 -t:BuildAndStartAotProfiling`
3. Execute the following command: `dotnet build -f net10.0-android36.0 -t:BuildAndStartAotProfiling`
- The dotnet version targeted must match the one specified in the mobile csproj.
- If you have a custom Android SDK path, you can specify it with the `AndroidSdkPath` property.
> 💡 `-p:AndroidSdkDirectory=path/to/android/sdk`
4. Let your application run until it’s loaded.
5. Execute the following command: `dotnet build -f net9.0-android35.0 -t:FinishAotProfiling`.
5. Execute the following command: `dotnet build -f net10.0-android36.0 -t:FinishAotProfiling`.
- The dotnet version targeted must match the one specified in the mobile csproj.
- If you have a custom Android SDK path, you can specify it with the `AndroidSdkPath` property.
> 💡 `-p:AndroidSdkDirectory=path/to/android/sdk`
Expand All @@ -36,7 +36,7 @@ To generate this file, following the following steps:
<EnableLLVM>True</EnableLLVM>
<AndroidEnableProfiledAot>True</AndroidEnableProfiledAot>
<AndroidUseDefaultAotProfile>False</AndroidUseDefaultAotProfile>
<PackageReference Include="Mono.AotProfiler.Android" Version="7.0.0" />
<PackageReference Include="Mono.AotProfiler.Android" Version="10.0.0-preview1" />
<AndroidAotProfile Include="$(MSBuildThisFileDirectory)custom.aprof" />
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>13.0</LangVersion>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>14.0</LangVersion>
<RootNamespace>ApplicationTemplate.DataAccess</RootNamespace>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors Condition="'$(Configuration)'=='Release'">true</TreatWarningsAsErrors>
Expand All @@ -18,18 +18,17 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="DynamicData" Version="9.2.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.3" />
<PackageReference Include="DynamicData" Version="9.4.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.2" />
<PackageReference Include="Microsoft.Extensions.Http" Version="10.0.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.2" />
<PackageReference Include="Reactive.Annex" Version="2.0.1" />
<PackageReference Include="Refit" Version="8.0.0" />
<PackageReference Include="ReviewService.Abstractions" Version="1.0.0" />
<PackageReference Include="System.Text.Json" Version="9.0.3" />
<PackageReference Include="Refit" Version="9.0.2" />
<PackageReference Include="ReviewService.Abstractions" Version="4.0.0" />
<PackageReference Include="MallardMessageHandlers" Version="2.0.0" />
<PackageReference Include="Nventive.Persistence.Reactive" Version="0.5.0" />
<PackageReference Include="Nventive.Persistence" Version="0.5.0" />
<PackageReference Include="System.Reactive" Version="6.0.1" />
<PackageReference Include="System.Reactive" Version="6.1.0" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ public MockedEmailService(ILogger<MockedEmailService> logger)

public Task Compose(CancellationToken ct, Email email)
{
_logger.LogInformation("Email composed: {Email}", email);
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Email composed: {Email}", email);
}
return Task.CompletedTask;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>13.0</LangVersion>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>14.0</LangVersion>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors Condition="'$(Configuration)'=='Release'">true</TreatWarningsAsErrors>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using ApplicationTemplate.DataAccess;

namespace ApplicationTemplate.Business;

[Bindable(true)]
public record DadJokesQuote
{
public DadJokesQuote(DadJokeContentData data, bool isFavorite)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,11 @@ public KillSwitchService(IKillSwitchDataSource killSwitchDataSource, ILogger<Kil

/// <inheritdoc/>
public IObservable<bool> ObserveKillSwitchActivation() => _killSwitchDataSource.ObserveKillSwitchActivation()
.Do(isActive => _logger.LogInformation("Kill switch is now {IsActive}.", isActive));
.Do(isActive =>
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Kill switch is now {IsActive}.", isActive);
}
});
}
2 changes: 2 additions & 0 deletions src/app/ApplicationTemplate.Business/Posts/Post.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using ApplicationTemplate.DataAccess;

namespace ApplicationTemplate.Business;

[Bindable(true)]
public record Post
{
public long Id { get; init; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
android:versionName="1.0.0">

<uses-sdk android:minSdkVersion="29"
android:targetSdkVersion="35" />
android:targetSdkVersion="36" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Expand Down
Loading