From 489896305dac5ab80a4d1940511240963c68ff29 Mon Sep 17 00:00:00 2001 From: Bram Verhulst Date: Fri, 9 Oct 2026 22:28:49 +0200 Subject: [PATCH] feat: update app icon --- .../main/res/mipmap-hdpi/launcher_icon.png | Bin 5727 -> 1558 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 4493 -> 1022 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 6208 -> 1898 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 8210 -> 2791 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 9627 -> 3809 bytes assets/icons/play_store_512.png | Bin 0 -> 13338 bytes flutter_launcher_icons.yaml | 4 +- lib/models/remote_command.dart | 22 ++++ lib/services/remote_sync_service.dart | 8 ++ make_release.bat | 53 +------- make_release.ps1 | 117 ++++++++++++++++++ pubspec.yaml | 2 +- test/remote_sync_service_test.dart | 3 + windows/runner/resources/app_icon.ico | Bin 4515 -> 1044 bytes 14 files changed, 155 insertions(+), 54 deletions(-) create mode 100644 assets/icons/play_store_512.png create mode 100644 make_release.ps1 diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png index fd5a72793b4bc350235a59e0ca7b527b9b269659..30ef6eb34ea3dc3e0d9d80ec18117bd2914f1852 100644 GIT binary patch delta 1541 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 Rb$kE-002ovPDHLkV1lS7_+tP7 diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png index b0445264a240032bb354f63162fdb855aca9351e..6968bcba3964ada2bd1fd2f35a8ad3d425c58f69 100644 GIT binary patch delta 1001 zcmVB=*V@~@t+<#zTU;qmX3phSL1||B) z$Ve0x7NVk}0-m0pnvSQbfVH(X6c-oc^77K+{?*kLHa0fU)z!r!=(~@P50aCUk&%%B zCnqP>V`?Vg;NSo`IXQTEco6Re2M6=##l;1Go}ZtiwYAm4E-5JqGcz*?3ky>&rBqZ?ny}dnDS65?ud;5#+*47qMQc|$FxrvaF5XEELB!JfU z=;$aK8yj(bea-h`Vq&nevH}ke5AnUYxHzn?uA;NElj9*YG?e3`y}cc$r>8hOJ3~W5 z1E!~^e^vm^a&2v`#l4o677OPE+}+*znE=gtT3Q;Sqkp6E^z?+;*;(A*-^1J6Tagc{ z1sok6@vI5t=H~J;%FoZ2-A6=31Tr%-F*i4d*VkA6RfJ_H7u5o2t9*HR;dXs}J?}6M z4h~=5qh&TVHHE>!LG17EbG(>Cjtf|`mqN9G-Q8WWO}~V-!9PAeP*qihp`jtk{%DC& zd?-b=0Docj2`?|NFVD&OnwlC}&J(GrsW>?~!Tb9=2YFCXkSsgZ0%*3@*VnmC`*>w# zrTC1TsH>|(e}BL1{+5@Q`64K>wY9aOxw%==PPKrdq9P0r4|AJhfYy3JK>=r3T2f0( zOKQ9337{P-J3AZk@$r9sSG9oj^mLSzlwfjl5`WLn&zz{}QUjG0G$91-L{yT{giwm<-kv) zNi7r`8_Nmk*9su0nxvZNJ19;L4-d5(PDC>SO-)UFeaFtuj^Z*w4*$=Qa(sN;BKyjv ztbeRbv5gXB3!uz;cXy|F0J#DvdErk9q6E8GLR13@=Kw(n;pgWkX=@h(DC^QLWe%Mc z^78T|ZS6vUtE(%bqN2D>8J^l59UbuX^_8@>3js9SbnsV$YyouOP#VN;Zfh`En=X%yBoK+w^&?Uv^d9FgAOG0kAwMvCOkY` ztT?qqwg7*Bf6UL%v-9R#oi!XC9XT+60>wd0B{W_3f?e!FwqOX*8$*EJ7y|U>*9-Ur XQXycaa=s1e00000NkvXXu0mjfPm0(& literal 4493 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 Kqb1ecC;s1+#E@A4 literal 6208 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 Pbp=ce%=JI&xyAk$LHYE5 literal 9627 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 diff --git a/assets/icons/play_store_512.png b/assets/icons/play_store_512.png new file mode 100644 index 0000000000000000000000000000000000000000..a122df15881ab2f7415ecca64e098a094162c313 GIT binary patch literal 13338 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 Y?98zfzWp~k;WtE0S@V3(S#$sY0bnTu^8f$< literal 0 HcmV?d00001 diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml index 7c107b3..735854e 100644 --- a/flutter_launcher_icons.yaml +++ b/flutter_launcher_icons.yaml @@ -1,6 +1,6 @@ # flutter pub run flutter_launcher_icons flutter_launcher_icons: - image_path: "assets/icons/kooltap_logo.png" + image_path: "assets/icons/play_store_512.png" android: "launcher_icon" # image_path_android: "assets/icons/kooltap_logo.png" @@ -26,7 +26,7 @@ flutter_launcher_icons: windows: generate: true - image_path: "assets/icons/kooltap_logo.png" + image_path: "assets/icons/play_store_512.png" icon_size: 48 # min:48, max:256, default: 48 macos: diff --git a/lib/models/remote_command.dart b/lib/models/remote_command.dart index 57f0646..3967d96 100644 --- a/lib/models/remote_command.dart +++ b/lib/models/remote_command.dart @@ -85,12 +85,32 @@ class SyncResponse { } } +/// One line on a tab as shown in the dashboard, e.g. "10× Cola". +class SnapshotTabItem { + final String productName; + final int quantity; + final int unitPriceInCents; + + const SnapshotTabItem({ + required this.productName, + required this.quantity, + required this.unitPriceInCents, + }); + + Map toJson() => { + 'productName': productName, + 'quantity': quantity, + 'unitPriceInCents': unitPriceInCents, + }; +} + class SnapshotTab { final String id; final String customerName; final int version; final int totalInCents; final int itemCount; + final List items; const SnapshotTab({ required this.id, @@ -98,6 +118,7 @@ class SnapshotTab { required this.version, required this.totalInCents, required this.itemCount, + this.items = const [], }); Map toJson() => { @@ -106,6 +127,7 @@ class SnapshotTab { 'version': version, 'totalInCents': totalInCents, 'itemCount': itemCount, + 'items': items.map((item) => item.toJson()).toList(), }; } diff --git a/lib/services/remote_sync_service.dart b/lib/services/remote_sync_service.dart index dbf0717..8192bee 100644 --- a/lib/services/remote_sync_service.dart +++ b/lib/services/remote_sync_service.dart @@ -239,6 +239,14 @@ class RemoteSyncService { version: tab.version, totalInCents: tab.totalInCents, itemCount: tab.itemCount, + items: [ + for (final item in tab.items) + SnapshotTabItem( + productName: item.productName, + quantity: item.quantity, + unitPriceInCents: item.unitPriceInCents, + ), + ], ); } diff --git a/make_release.bat b/make_release.bat index 7e4fd03..74492ce 100644 --- a/make_release.bat +++ b/make_release.bat @@ -1,52 +1,3 @@ @echo off -setlocal EnableExtensions DisableDelayedExpansion - -cd /d "%~dp0" - -echo. -powershell -NoProfile -ExecutionPolicy Bypass -Command ^ - "$content = [IO.File]::ReadAllText('pubspec.yaml'); " ^ - "$match = [regex]::Match($content, '(?m)(?:\A|\r?\n)version:[ \t]*([^\r\n]*)'); " ^ - "if (-not $match.Success) { Write-Error 'Could not find the version line in pubspec.yaml.'; exit 1 }; " ^ - "Write-Output ('Current version: ' + $match.Groups[1].Value.Trim())" - -if errorlevel 1 ( - echo Could not read the current version. Release cancelled. - exit /b 1 -) - -set "APP_VERSION=" -set /p "APP_VERSION=Enter release version (for example 1.0.10 or 1.0.10+2): " - -if not defined APP_VERSION ( - echo No version entered. Release cancelled. - exit /b 1 -) - -powershell -NoProfile -ExecutionPolicy Bypass -Command ^ - "$version = $env:APP_VERSION; " ^ - "if ($version -notmatch '\A[0-9]+\.[0-9]+\.[0-9]+(\+[0-9]+)?\z') { " ^ - " Write-Error 'Use a version like 1.0.10 or 1.0.10+2.'; exit 1 " ^ - "}; " ^ - "$path = 'pubspec.yaml'; " ^ - "$content = [IO.File]::ReadAllText($path); " ^ - "$updated = ([regex]::new('(?m)(\A|\r?\n)version:[^\r\n]*')).Replace($content, ('${1}version: ' + $version), 1); " ^ - "if ($updated -eq $content) { Write-Error 'Could not find the version line in pubspec.yaml.'; exit 1 }; " ^ - "[IO.File]::WriteAllText($path, $updated)" - -if errorlevel 1 ( - echo Version update failed. Release cancelled. - exit /b 1 -) - -echo Updated pubspec.yaml to version %APP_VERSION%. -echo Building release APK... -flutter build apk --release - -if errorlevel 1 ( - echo Release APK build failed. - exit /b 1 -) - -echo Release APK created at build\app\outputs\flutter-apk\app-release.apk -endlocal +powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0make_release.ps1" %* +exit /b %errorlevel% diff --git a/make_release.ps1 b/make_release.ps1 new file mode 100644 index 0000000..3f344d4 --- /dev/null +++ b/make_release.ps1 @@ -0,0 +1,117 @@ +param( + [switch]$SkipTests, + [switch]$SkipUpload +) + +$ErrorActionPreference = 'Stop' +Set-Location $PSScriptRoot + +$updateServer = 'https://updater.kooltap.com' +$apkPath = 'build\app\outputs\flutter-apk\app-release.apk' + +function Fail([string]$message) { + Write-Host $message -ForegroundColor Red + exit 1 +} + +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +$pubspec = [IO.File]::ReadAllText('pubspec.yaml') +$match = [regex]::Match( + $pubspec, + '(?m)^version:[ \t]*([0-9]+\.[0-9]+\.[0-9]+)\+([0-9]+)' +) +if (-not $match.Success) { + Fail 'Could not find a version like 1.2.3+4 in pubspec.yaml.' +} + +$currentName = $match.Groups[1].Value +$currentBuild = [int]$match.Groups[2].Value +Write-Host "Current version: $currentName+$currentBuild" + +# The server picks the latest release by build number, so every release needs +# a higher one than anything already published +$publishedName = $null +$publishedBuild = 0 +try { + foreach ($release in Invoke-RestMethod "$updateServer/api/releases") { + if ($release.VersionCode -gt $publishedBuild) { + $publishedName = $release.Version + $publishedBuild = [int]$release.VersionCode + } + } + if ($publishedName) { + Write-Host "Latest published: $publishedName+$publishedBuild" + } +} catch { + Write-Host "Could not reach $updateServer, using pubspec.yaml only." -ForegroundColor Yellow +} + +$name = Read-Host 'Release version (for example 1.2.2)' +if ($name -notmatch '\A[0-9]+\.[0-9]+\.[0-9]+\z') { + Fail 'Use a version like 1.2.2.' +} +if ($publishedName -and [version]$name -le [version]$publishedName) { + Fail "$name must be higher than the published $publishedName, or tablets will not see it." +} + +$build = [Math]::Max($currentBuild, $publishedBuild) + 1 +$version = "$name+$build" + +$versionStart = $match.Groups[1].Index +$versionEnd = $match.Groups[2].Index + $match.Groups[2].Length +$pubspec = $pubspec.Substring(0, $versionStart) + $version + $pubspec.Substring($versionEnd) +[IO.File]::WriteAllText((Resolve-Path 'pubspec.yaml'), $pubspec) +Write-Host "Updated pubspec.yaml to version $version." + +if (-not $SkipTests) { + Write-Host 'Running tests...' + flutter test + if ($LASTEXITCODE -ne 0) { Fail 'Tests failed. Release cancelled.' } +} + +Write-Host 'Building release APK...' +flutter build apk --release +if ($LASTEXITCODE -ne 0) { Fail 'Release APK build failed.' } +Write-Host "Release APK created at $apkPath" + +if ($SkipUpload) { exit 0 } + +$token = $env:KOOLTAP_ADMIN_TOKEN +if (-not $token) { + Write-Host 'KOOLTAP_ADMIN_TOKEN is not set, skipping the upload.' -ForegroundColor Yellow + exit 0 +} + +$notes = Read-Host 'Release notes' +$mandatory = if ((Read-Host 'Mandatory update? (y/N)') -match '\A[yY]') { 'true' } else { 'false' } + +Write-Host "Uploading $version to $updateServer..." + +Add-Type -AssemblyName System.Net.Http +$client = [Net.Http.HttpClient]::new() +$client.Timeout = [TimeSpan]::FromMinutes(5) +$client.DefaultRequestHeaders.Add('X-Admin-Token', $token) + +$apk = [IO.File]::OpenRead((Resolve-Path $apkPath)) +$form = [Net.Http.MultipartFormDataContent]::new() +$form.Add([Net.Http.StreamContent]::new($apk), 'apk', 'app-release.apk') +$form.Add([Net.Http.StringContent]::new($notes), 'notes') +$form.Add([Net.Http.StringContent]::new($mandatory), 'mandatory') + +try { + $response = $client.PostAsync("$updateServer/admin/releases", $form).GetAwaiter().GetResult() + $body = $response.Content.ReadAsStringAsync().GetAwaiter().GetResult() +} finally { + $form.Dispose() + $apk.Dispose() + $client.Dispose() +} + +if (-not $response.IsSuccessStatusCode) { + Fail "Upload failed (HTTP $([int]$response.StatusCode)): $body`nThe APK is still at $apkPath" +} + +$release = $body | ConvertFrom-Json +Write-Host "Published $($release.Version) (build $($release.VersionCode)), sha256 $($release.SHA256)" -ForegroundColor Green +Write-Host "Don't forget to commit pubspec.yaml and tag the release: git tag v$version" diff --git a/pubspec.yaml b/pubspec.yaml index 52baf87..2e4c11c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: kooltap description: "KoolTap: a tablet point-of-sale app for running bar tabs." publish_to: 'none' -version: 1.1.0 +version: 1.2.1+1 environment: sdk: ^3.12.2 diff --git a/test/remote_sync_service_test.dart b/test/remote_sync_service_test.dart index 674cbc5..1fe0dcd 100644 --- a/test/remote_sync_service_test.dart +++ b/test/remote_sync_service_test.dart @@ -136,6 +136,9 @@ void main() { final snapshot = server.syncRequests.single['openTabs'] as List; expect(snapshot.single['customerName'], 'Alice'); expect(snapshot.single['totalInCents'], 400); + expect(snapshot.single['items'], [ + {'productName': 'Beer', 'quantity': 1, 'unitPriceInCents': 400}, + ]); expect(eventTypes(), [RemoteSyncEventType.syncCompleted]); expect(await service.lastSuccessfulSyncAt, isNotNull); diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico index 795678bd48d18e1be3c253904c8a3845d689c02b..28631a87c147db95338e99d64c64d2cb75db19e3 100644 GIT binary patch delta 1019 zcmVPJK z+}zxMU|?VX3kwT4K0XE|`pC#g6c!euqM`zxo}QYHr>TIowKWtM7vu8s(&GNr)fF~2 zHqh18#UkjtkB<+MlarB=kpU+sC)HzWCg9-U06951czAda?*#`3^XJ9I1%IBOpQE+4 z)xs_*DG4((GYAU{Q#Gz80v;b9QCeCmI-i(-n25fC>k3ZaeaNw_hMpVu(GlO4-XIVy|}nItgf!2v$K=q zAv83UB2b0L^l3ZLP(Im zWhWQa0%)szd3oV>eSJOeFb)n5U*4l-HZ?Vc!NEc7@9%TGm_v>WShJTxwSe8-U9nBS zgtfsxK0Z)YRfVCUA<6z|iBWtgMYRBbVfG0xFRw4p$@!X^8d=U0si~D6zG*wV}DWS<+6mfTE%z z3=a=;n___0dO<+}XIWZOOG`^?yXFa?9VAUMi3Ynh~C~_Uh`_9^-jAKF)=a00*JS_H%VKY z5}AvO3wnBbP+nfnvrpx~PoqgK6dN1M3Fy}fAgG$8n&&$xP7V(bwHi)DGXYIaO?-XF z&d!eFGC>ai&yjL`eB2`Y%B8G-tW2?u5@ZXY%zAfsr+5Il0w{UmPYI#~yI4Y00}1B< zK?vdJ=O<}v7Xm2j(k^8VofY!(@+58TLV&BQE25&JxJ?vm2;iE@8gdUW){re?pu4*px3{-g zTwJs`$6A99B=nDi`GF=pJY1|ewM4c6e}8|>&(E{-=3AXL9334wFn_WC+2+$itfZiAa^yb$K_ykfRV5M@t4e0;?002ovPDHLkV1lW7*^vMM literal 4515 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