Thu 16 Apr 2026 12:24:54 PM UTC [*] -------------- Latest commits: commit bc5d6a99fbaf74fabe37de08582e41c8c19f0f34 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Thu Apr 16 16:14:24 2026 +0500 fix(DEV-11734): Search Engine Optimization. Sales reports commit 0f630e3a94f2b73e69ef4ce5ecbc57eefc7aa77a Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Thu Apr 16 16:20:34 2026 +0500 fix(DEV-11648): Paloma checkout back respects order and order list stack Prefer OrderRoute or OrderListRootRoute before NavigateTo.tables so dine-in checkout opened from the order screen returns to the order screen, and list flows can pop to the order list root when present. Made-with: Cursor commit c0cefcfa696300e92a3c79474af3cfbe104f3541 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Thu Apr 16 16:18:17 2026 +0500 fix(DEV-11747): void receipt Order total uses pre-calc d_order total Made-with: Cursor commit b434def25c6c784c11634a4d4a55bfb25ba95932 Author: Forasky Date: Thu Apr 16 14:09:47 2026 +0300 fix(DEV-11762): fix prinnt button commit c8846844deb90d71e5cb85c81c6f79bccfa67cae Author: Forasky Date: Thu Apr 16 13:45:19 2026 +0300 fix(DEV-11602 & DEV-11759): fix routing after void and fix submit before calculations commit 2a461b0183c3a955a8c51d520f7fb83466110937 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Thu Apr 16 15:21:59 2026 +0500 feat(DEV-11749): Aptito voided lines display and stable refuse history Made-with: Cursor commit 0e977d51b82f5d1caeac889b19e71f43beb1ffe4 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Thu Apr 16 14:19:27 2026 +0500 fix(DEV-11684): Correction of display of VAT and Service on the payment screen commit 2f5dbd9edb791fb6c2ad5eb1195e89880da06803 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Thu Apr 16 13:20:21 2026 +0500 refactor(DEV-11687): replace PalomaCalculator with NewPalomaCalculator and dedicated auto-gratuity dialog Delete the legacy PalomaCalculator widget (444 lines of hand-rolled pin pad) and migrate all 7 call sites to use NewPalomaCalculator (backed by PalomaPinPad). - Add wrapInDialog, obscureText, lengthLimitDigits, allowZeroInStart, isWeight, and inputFormatters parameters to NewPalomaCalculator. - Extract AutoGratuityCalculatorDialog for the 4 auto-gratuity call sites that used showPercentSwitch; text field clears on percent/amount toggle. - Migrate 3 plain-numeric call sites directly to NewPalomaCalculator. - Move palomaCalculatorShakeKey to its own file; update barrel export. Made-with: Cursor commit a0b2eba35b9372ae08d23b4c9c1ba7d81a9eeefc Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Thu Apr 16 12:18:16 2026 +0500 fix(DEV-11686): add note dialog fixed for leaf theme commit 35fe2f17540ba0808ee121d3c9b94479165bbdf4 Author: Forasky Date: Thu Apr 16 09:55:45 2026 +0300 fix(DEV-11706): fix tests commit e151df62854198ce11ac3fc9cdc75d2beab41b97 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Thu Apr 16 11:20:17 2026 +0500 fix(DEV-11705): Bad state: No element commit 9d2c8a9a75d945417ab85f266aa56ebf2cdd4acc Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Thu Apr 16 10:25:20 2026 +0500 fix(DEV-11634): The opening of the shift is duplicated commit ad583cea9dc61de86e2b2c67872c91a36f25948d Merge: 498fa8ef7b bf12d89edf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:52:52 2026 -0400 Merge branch 'NewOrderBloc' into dev commit bf12d89edf4f7b3eb21139a95b9fc071ba4ca542 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:48:28 2026 -0400 docs(phase-4): update Step 5/6 status — lib/features/ + lib/core/ fully typed, Step 6 DONE commit bfd402912cd752e7ee2d9eae592ab76430ab86b8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:47:01 2026 -0400 refactor(error): Phase 4.5 — migrate ALL remaining 29 untyped throws in lib/core/ to typed AppException commit 36a3a154450399589bef43badf8fe32c3c714cf2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:37:56 2026 -0400 refactor(error): Phase 4.5 — migrate 36 untyped throws in core/data/sources/remote to typed AppException commit 17b773c17698bc3b1fe384fc52923a69a021d2de Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:33:03 2026 -0400 refactor(error): Phase 4.5/6 — eliminate ALL untyped throws in lib/features/ (~50 sites across 24 files) commit c0bf26d8e0c29828fb10b66386cf1ff4416127aa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:23:48 2026 -0400 refactor(error): Phase 4.6 — migrate 21 throw Exception() to typed AppException in create_order_reason, discount_clients_cubit, location_remote_source commit 5a347f0adda8952589e190c0a7d034a3fee49538 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:15:49 2026 -0400 refactor(error): Phase 4.6 — migrate remaining 4 throw Exception() in terminal to typed AppException commit cac0c4bc6c9c19806448b570dbf8be5e4af8aed0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 22:08:38 2026 -0400 refactor(error): Phase 4.6 — migrate all terminal bloc bare string throws to typed AppException (~20 sites) commit 498fa8ef7b99c3f2905a1ef2cd9fb39638570606 Merge: bb590d87e7 3038daed93 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:57:33 2026 -0400 Merge branch 'NewOrderBloc' into dev commit 3038daed93cd9a862e2d9769dd35651b5e872502 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:45:48 2026 -0400 refactor(error): Phase 4.7 — migrate final 3 bare string throws in core/usecases to typed AppException commit f064507ba24ba2d79103eaf493547b347e64cdda Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:38:57 2026 -0400 docs(master): refresh Phase 2/6 status in MASTER_STABILIZATION_PROMPT.md commit 8b357fb5cdff082093e43a05ff011b3f219ba866 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:31:29 2026 -0400 refactor(terminal): remove _executeFiscalWithTimeout wrapper — callers use FiscalTimeoutExecutor.run directly commit c668e5f90faa87408cf4e550e2ec36bd90013d15 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:29:13 2026 -0400 refactor(terminal): remove _isSemiIntegrationDevice wrapper — callers use top-level helper directly commit 77f365aa37e22c918182594afab6cf87b41e2de2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:25:23 2026 -0400 chore(test): clean up 4 pre-existing analyzer warnings in test/ commit 8bd858684ce7c59094e03dd1e015ac15d33c0da0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:24:00 2026 -0400 chore(deps): Phase 6 Step 0 — remove unused flutter_driver dev dependency commit c912b5cd40230ac8d8fafdd3dc5f4fa2f01ce1e7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:14:08 2026 -0400 docs(phase-6): Step 0 audit — test infrastructure inventory + deferred pubspec items commit f720b87274d35b1ff037a0a1ddc5b7715bc66b42 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:09:51 2026 -0400 docs(phase-4): Step 0 audit — error landscape snapshot post Steps 1-7 commit 1c8ed216f1a816d586ef1b523dba76863ee63519 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:04:29 2026 -0400 docs(phase-5): Step 0 baseline audit — module-boundary violation counts commit b489db83b8e9a7ae7855ceb411af6f6288279994 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:55:39 2026 -0400 docs(phase-3): mark Step 0 audit DONE (captured in existing Current State section) commit d7f0685d3724dbce6cff35035b79fc5d4c8b4c90 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:46:57 2026 -0400 test(terminal): Phase 2.10 increment 21 — backfill findActiveAutogratuityDetail + shouldRouteSlipFlowToCustomerScreen tests commit b75bd4f0ddcbcaaedfdb9245e4c8cc5274f114cc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:37:54 2026 -0400 refactor(terminal): Phase 2.9 increment 19 — extract FiscalReportService.resolveIsOriginalOrderFiscalized commit 42c47dd78bfba76fdb6b6f3701bd9a2094696512 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:34:18 2026 -0400 refactor(terminal): Phase 2.9 increment 18 — extract _encodePaymentDataOrNull bloc helper commit de50db94ffbe5f777bcfd03fed02b952183333fb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:30:16 2026 -0400 refactor(terminal): Phase 2.9 increment 17 — extract _applySalePaidLoyaltyRemoval bloc helper commit bb590d87e726b25a6d215cdc557efa1d9cf42629 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:45:48 2026 -0400 refactor(error): Phase 4.7 — migrate final 3 bare string throws in core/usecases to typed AppException commit 4d84116a1028dca0f8202e3e5ed8f91e4d890b45 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:38:57 2026 -0400 docs(master): refresh Phase 2/6 status in MASTER_STABILIZATION_PROMPT.md commit b64059ef67b0bbac5cf2542c90f3b73008978616 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:31:29 2026 -0400 refactor(terminal): remove _executeFiscalWithTimeout wrapper — callers use FiscalTimeoutExecutor.run directly commit a66d3d92e8e97f426afdbacf8ee2b6518f0013a3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:29:13 2026 -0400 refactor(terminal): remove _isSemiIntegrationDevice wrapper — callers use top-level helper directly commit fb39d4c39f6d9a6bf48c45717a9270eb9f98683f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:25:23 2026 -0400 chore(test): clean up 4 pre-existing analyzer warnings in test/ commit 307b55ced31c414149a290cca187a58b3f995d43 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:24:00 2026 -0400 chore(deps): Phase 6 Step 0 — remove unused flutter_driver dev dependency commit 6780c9894278a489a1dd6c1ac43c547791718328 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:14:08 2026 -0400 docs(phase-6): Step 0 audit — test infrastructure inventory + deferred pubspec items commit 81c68e0bd6ad27106795faaff3b3abfbf1457e0a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:09:51 2026 -0400 docs(phase-4): Step 0 audit — error landscape snapshot post Steps 1-7 commit 7d547e52a58cd4313ab73eb12d9bba71b4c86a9e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 21:04:29 2026 -0400 docs(phase-5): Step 0 baseline audit — module-boundary violation counts commit 0d7bd28686ff71e0c7c76a8f664ef97e95440795 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:55:39 2026 -0400 docs(phase-3): mark Step 0 audit DONE (captured in existing Current State section) commit 7e18bbc93a232cb5638b56058dc84c743ceebcc8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:46:57 2026 -0400 test(terminal): Phase 2.10 increment 21 — backfill findActiveAutogratuityDetail + shouldRouteSlipFlowToCustomerScreen tests commit c48847ff4bc7f2d5edcb5fe7ba1c056bc632c63f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:40:21 2026 -0400 refactor(terminal): Phase 2.9 increment 20 — wire extractClosingBatchData into _closeShift commit eabfd5cf1b76c649824854c87dec7e9e97888487 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:37:54 2026 -0400 refactor(terminal): Phase 2.9 increment 19 — extract FiscalReportService.resolveIsOriginalOrderFiscalized commit 412729f466efe6bead5c45a3054ef44fa86e4996 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:34:18 2026 -0400 refactor(terminal): Phase 2.9 increment 18 — extract _encodePaymentDataOrNull bloc helper commit 5a1fc834f8f9859bad5648745a256cada964667d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:30:16 2026 -0400 refactor(terminal): Phase 2.9 increment 17 — extract _applySalePaidLoyaltyRemoval bloc helper commit 1d5357956159063efd07790d5671cb6f7a311916 Merge: a04ef0bd7c bf9fb5af4b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:27:58 2026 -0400 Merge branch 'NewOrderBloc' into dev commit bf9fb5af4bbf861ea3617be12fe9f02975c1784f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:24:12 2026 -0400 docs(terminal): Phase 2.11 increment 2 — catalog increments 3-16 in AGENTS.md commit 8e5c74af6355fb852786317737148d65daef93da Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:23:07 2026 -0400 refactor(terminal): Phase 2.9 increment 16 — wire resolveCustomerScreenTargetWpid into _sendFailedMessageToSocket commit ac4e65475663efb793756d7500a3021f1eaa4313 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:17:41 2026 -0400 refactor(terminal): Phase 2.9 increment 15 — extract _resolveDeviceNotConfiguredSuffix bloc helper commit b0bc9556ef1fa6bac2b7c775e5aa6795701b8e05 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:15:29 2026 -0400 refactor(terminal): Phase 2.9 increment 14 — extract _applyReversalLoyaltyAdjustment bloc helper commit 1e1f818891023aa2c090f39287bcb3fcfe91bae7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:13:02 2026 -0400 refactor(terminal): Phase 2.9 increment 13 — extract closeDOrderFromPriceTypes commit 1cb6ccc94074c2e5c4191d3ebf7bdf0464cce1ff Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 20:04:53 2026 -0400 refactor(terminal): Phase 2.9 increment 12 — wire applyPaymentDataSaleInfoTo into _payByCard commit c9d86d4f46616e8ba3de4c64d02bdf3283c701c2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:58:43 2026 -0400 refactor(terminal): Phase 2.9 increment 11 — extract applyPaymentDataSaleInfoTo commit e28df0de1d26715defcbd34984debe3afeea617b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:55:30 2026 -0400 refactor(terminal): Phase 2.9 increment 10 — extract buildReverseDiscount commit dbd6325930e9e0613e34503747bdd5536d2585a5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:53:02 2026 -0400 refactor(terminal): Phase 2.9 increment 9 — wire shouldRouteSlipFlowToCustomerScreen into void/refund services commit 0af4a1333f13a2fc82d6ccaaf1c586ee5628ee31 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:51:19 2026 -0400 refactor(terminal): Phase 2.9 increment 8 — extract isPaymentFullyReversed commit 42ee5a8e40b2447320c153ea028f722366b09f43 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:47:17 2026 -0400 refactor(terminal): Phase 2.9 increment 7 — wire shared helpers into void/refund services commit 714c6349cd7fcb64e77252171e717b88d0d04621 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:45:08 2026 -0400 refactor(terminal): Phase 2.9 increment 6 — extract buildSplitModelFromSplitCheck commit ad9d02c8807c161baf373d98e15ed3be9de9f1b3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:39:27 2026 -0400 refactor(terminal): Phase 2.9 increment 5 — extract resolveCustomerScreenTargetWpid commit f580f5959048d6a733f913d2ce5d0827ebef136a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:37:34 2026 -0400 refactor(terminal): Phase 2.9 increment 4 — extract selectNextStepCfdCommand commit f5196cf84bc39e58b4d66f34949ff747fce5f6cf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:31:27 2026 -0400 refactor(terminal): Phase 2.9 increment 3 — promote paymentLoadingScreenTimeoutSeconds to terminal_utils commit 313bdb8f636ec26db28156b5c2386a61bab813f3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:25:15 2026 -0400 chore: delete 5 entirely-commented-out dead files commit b7bdbbfceef3e61df134d7ee83c17c42a0f67a4f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:20:10 2026 -0400 refactor(module-boundaries): Phase 5.3.1.10 — drop checkout_exports from 2 test files (extension_utils_test, checkout_math_test) commit 688106489805acf090a9f6a535d65c9fbcfdce77 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 19:10:43 2026 -0400 refactor(module-boundaries): Phase 5.3.1.9 — eliminate checkout_exports from entire lib/ (19 remaining files) commit 1006da83c09cf289275e5072d886de8d0ec031c9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 18:43:25 2026 -0400 refactor(module-boundaries): Phase 5.3.1.8 — all lib/features/ free of checkout_exports (final 9 files) commit 8f46f2c8a1ee821f686da8db6203a44837115005 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 18:31:59 2026 -0400 refactor(module-boundaries): Phase 5.3.1.7 — finish order_checkout/new_aptito/ subtree (12 files) commit 271295dc151a91b3fe47c7e060b5d2caa1a5f6c6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 18:17:14 2026 -0400 refactor(module-boundaries): Phase 5.3.1.6 — finish order_checkout/taylor/ subtree (8 more files) commit 63c211d77be2f11f509e331228bd079f58fd16e4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 18:05:02 2026 -0400 refactor(module-boundaries): Phase 5.3.1.5 — drop checkout_exports from 7 small taylor/aptito widgets commit c6d03a55cd5c5a8f88225e5beb9f7471d8e830cd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 18:00:11 2026 -0400 refactor(module-boundaries): Phase 5.3.1.4 — finish order_checkout/new_paloma_updated/ subtree (15 files) commit 72f9582bb3013401913a8a217673c7e057c82b36 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 17:39:49 2026 -0400 refactor(module-boundaries): Phase 5.3.1.3 — finish order_checkout/leaf/ subtree (5 more files) commit 47300ad9ebcae2df78ed2921b0270536569f633d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 17:30:02 2026 -0400 refactor(module-boundaries): Phase 5.3.1.2 — drop checkout_exports from 4 more leaf checkout files commit 377b8d3c55b1c089230d4ca079c72be00b74e194 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 17:21:36 2026 -0400 refactor(module-boundaries): Phase 5.3.1.1 — drop checkout_exports from 2 leaf checkout files commit 0af61b1aaa1d1829c40cd540d1214ff10a009180 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 17:15:50 2026 -0400 refactor(module-boundaries): Phase 5.2.13 — drop checkout_exports from app_router.dart (last core file) commit 4656c4003011ebc95218f7df6ebb8fd186de46f2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 16:32:44 2026 -0400 refactor(module-boundaries): Phase 5.2.12 — drop checkout_exports from core/data (6 umbrellas + 20 parts) commit 257a80c2e3fc6015404466438b76577717aacef3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 16:23:50 2026 -0400 refactor(module-boundaries): Phase 5.2.11 — drop checkout_exports from remaining 11 usecase files commit bc2d173b757bd65a22c90fdb24c8f4e717b8e63c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 16:15:33 2026 -0400 refactor(module-boundaries): Phase 5.2.10 — drop checkout_exports from 4 part-file usecase umbrellas commit 37b65f2f16c68c3190ae2d644b7818869ef28cae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 16:07:56 2026 -0400 refactor(module-boundaries): Phase 5.2.9 — drop checkout_exports from 3 usecase files commit 7655102ee6b40eef3386a1da9777596b3c264428 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 16:02:51 2026 -0400 refactor(module-boundaries): Phase 5.2.8 — drop checkout_exports from app_router_guards + dio_client commit 11abcb9839ac744e870a5452653d4949f8005aab Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:59:06 2026 -0400 refactor(module-boundaries): Phase 5.2.7 — drop checkout_exports from core/models + local_server/model + validation (6 files) commit 68859a86c4bdaef4d1da7f0a162fc18bab96b88e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:54:11 2026 -0400 refactor(module-boundaries): Phase 5.2.6 — drop checkout_exports from 5 core/components files commit 3ef747c64fba1aa82550e614957b118855f9f47d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:50:47 2026 -0400 refactor(module-boundaries): Phase 5.2.5 increment 3 — drop checkout_exports from table_utils + navigation_utils (row DONE) commit 430f775e3cc8e101f18b4f9573451b89c4304e84 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:48:17 2026 -0400 refactor(module-boundaries): Phase 5.2.5 increment 2 — drop checkout_exports from 6 more core/ files commit e29083210d7f7c88c48e816119c631b731eca499 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:42:59 2026 -0400 refactor(module-boundaries): Phase 5.2.5 increment 1 — drop checkout_exports from 5 core/ files commit 7327fad16ba120b00b294b6e9141730a1c1d6fed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:38:58 2026 -0400 refactor(terminal): Phase 2.1 increment 8 — inline newDOrderTaxes loop as map().toList() commit 5009ca09e0b2e5101b37dbd2930998bc1c9c1f68 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:37:24 2026 -0400 refactor(terminal): Phase 2.5 increment 4 — requiresDocCloseAfterSale helper commit 06c324e06614d3e295c68dc3e30383ea16905aac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:35:43 2026 -0400 refactor(terminal): Phase 2.4 increment 7 — findActiveAutogratuityDetail (dedup cash + card) commit 73df5740bbd164532eb4d6297f99c441ad575402 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:33:40 2026 -0400 refactor(terminal): Phase 2.4 increment 6 — computeMaxDiscountAmount + mergeFeeTaxesInto (dedup cash + card) commit 234a4607635a45a996decaa1b5b734d42a5d2162 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:30:15 2026 -0400 refactor(terminal): Phase 2.4 increment 5 — applyPostCloseDOrderMutations + shouldUnmergeTables (dedup cash + card) commit 8fee4abbaa5abba1b119a292278578cf9865a0a0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:28:11 2026 -0400 refactor(terminal): Phase 2.7 increment 5 — dedup isActiveLoyaltyRewardDiscount across 6 handlers commit 413b85f78b65728bf95e2fc8b0d79b7560a9d04c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:25:33 2026 -0400 refactor(terminal): Phase 2.4 increment 4 — PaymentCashService.applyPostPaymentPrintedStatus (dedup cash + card) commit f2f32d953e583ef59ef3fd1963d881b973cc842c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:21:35 2026 -0400 refactor(terminal): Phase 2.4 increment 3 — PaymentCashService.sumCashDiscountPaid (dedup cash + card) commit b29e93b8bbb7b55699bf25e6d8b22d96e56a0ed7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:18:09 2026 -0400 refactor(terminal): Phase 2.7 increment 4 — remove dead allPositions build in _partialRefund commit 3d07e3e91d136952a26f418d7ef0c12d5f8d9a35 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:14:44 2026 -0400 docs(terminal): Phase 2.11 increment 1 — AGENTS.md catalog of extracted pure helpers commit 4193d7f0fde1b85ecf2b41f0dfa7fe247631acec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:12:04 2026 -0400 refactor(terminal): Phase 2.7 increment 3 — requiresPartialVoidBatchCheck helper commit bf7aeef41791fa655d7460886f72f637f9bf1500 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:10:42 2026 -0400 refactor(terminal): Phase 2.7 increment 2 — promote shouldRouteSlipFlowToCustomerScreen, reuse in _partialRefund commit 2277018cf10328e8295d01cbbafd079503524955 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:07:51 2026 -0400 refactor(terminal): Phase 2.6 increment 2 — shouldRouteAdjustTipsToCustomerScreen + mark Steps 1 and 8 commit 2b3b408aee66554e7a5f6e40767e36661f1082f1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:05:20 2026 -0400 refactor(terminal): Phase 2.7 increment 1 — dedup buildDeviceNotConfiguredErrorSuffix across 3 handlers commit 2ebc28f0d5fdfeb62c20fdb6c18c2864b8fb3e52 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:02:54 2026 -0400 refactor(terminal): Phase 2.5 increment 3 — PaymentCardService tip-id helpers commit ad4d78372ec9db8d891ea902ad7da6f33a7656a6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:01:22 2026 -0400 refactor(terminal): Phase 2.5 increment 2 — reuse FiscalReportService.classify in _payByCard commit 5b639e8e80a97b17dbe4cdd0e51be2f21af1b182 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 15:00:04 2026 -0400 refactor(terminal): Phase 2.5 increment 1 — PaymentCardService.validatePaymentDevice + reuse splitPaidSumsByPriceType commit 46dc0c881affc4e526f38873fce96af9ffa5b0e5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:57:21 2026 -0400 refactor(terminal): Phase 2.4 increment 2 — PaymentCashService.splitPaidSumsByPriceType commit e29b35743cd547c27b5f28100d7c62c7ada9e4cc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:55:41 2026 -0400 refactor(terminal): Phase 2.4 increment 1 — reuse FiscalReportService.classify + PaymentCashService.computeLoosedCashDiscount commit effe2eb9e5a63e8388dd919213c738e23ab0e697 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:49:04 2026 -0400 refactor(terminal): Phase 2.6 increment 1 — AdjustmentTipsService (canAdjustTips + resolveFinalTipAmount) commit 94e76cbc1cf3445c8f69084059e22efe86141eb4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:46:42 2026 -0400 refactor(terminal): Phase 2.9 increment 2 — extract pure isDuplicateTerminalEvent commit 4cd68c41f273beaca8edce8cef2156ec0199c1c4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:45:22 2026 -0400 refactor(terminal): Phase 2.9 increment 1 — dedup isSemiIntegrationDevice into terminal_utils commit 8423fb1fd371ad669d36c7785f24d1b687a30c3f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:41:22 2026 -0400 refactor(terminal): Phase 2.3 increment 1 — reuse FiscalReportService.classify in _closeShift commit 48abcc7e2d7c170325d65b4c714e9cf0a9e5d051 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:39:36 2026 -0400 refactor(terminal): Phase 2.1 increment 7 — TerminalOrderUpdateService.classifyGiftCardIssuance commit 8c314bcb624635eb15b10ee2b8dd9f0a982f3080 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:36:55 2026 -0400 refactor(terminal): Phase 2.1 increment 6 — TerminalOrderUpdateService.shouldIssueGiftCard commit 7f962935f4c107dc042d2e0d25d19ffafb390358 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:35:08 2026 -0400 refactor(terminal): Phase 2.1 increment 5 — TerminalOrderUpdateService.shouldPrintMerchantCopy + shouldSkipKitchenReceipt commit dccc3707e4921ce762f7dbac5dc05c6390deb8d5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:24:59 2026 -0400 refactor(terminal): Phase 2.1 increment 4 — TerminalOrderUpdateService.shouldRouteToTipsStep commit 21508c7567ef2ab593e3337f3156373c99a53747 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:14:36 2026 -0400 refactor(terminal): Phase 2.1 increment 3 — TerminalOrderUpdateService.shouldForceCloseAfterPayment commit 3a553929558027c57a88efe78dd6c11f9eb504f0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 14:04:41 2026 -0400 refactor(terminal): Phase 2.1 increment 2 — TerminalOrderUpdateService.buildDeliveryPaymentMap commit 5f059bd5ce72b8e127a3beea1dbf4ec622e4006d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:57:33 2026 -0400 refactor(terminal): Phase 2.1 increment 1 — TerminalOrderUpdateService.shouldSendOrderOut commit e585d06ae21b9b30ac6e9361cbe7bc9835b8c814 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:48:12 2026 -0400 docs(phase-2): mark Step 2 FiscalReportService DONE Increments 1-5 landed (94e9d4df2f, 1149516d47, e8c8fcc2dd, 54576c771a, d9c3aab542). Optional onSuccess/onError emission classifier in _closeBatch deferred to Step 7 cleanup — remaining handlers are thin (service call + emit) and further extraction belongs with the refund/void cleanup pass. commit d9c3aab5428ae93805cf08616fff6931348f450c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:43:50 2026 -0400 refactor(terminal): Phase 2.2 increment 5 — FiscalReportService.extractClosingBatchData Adds a pure, defensive helper that extracts the provider-specific `closingBatch` sub-map from a `TerminalResult.paymentData`. `_closeBatch` onSuccess now calls it instead of doing an unchecked `paymentData[provider.name]['closingBatch']` index into an IMap. Returns an empty map on any missing / wrong-typed segment. +5 tests. commit 54576c771a5f491d922f174d9c2f35e778eb9b07 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:35:45 2026 -0400 refactor(terminal): Phase 2.2 increment 4 — FiscalReportService.classifyCloseBatchRouting Adds pure `classifyCloseBatchRouting()` returning sealed `CloseBatchRouting` (NoDevice / RedirectToCustomerScreen / ExecuteLocal). `_closeBatch` now delegates the pre-device / customer-screen-redirect decision to the service instead of branching on `DeviceUtils`, `SocketClient`, and `sharedDB` inline. +6 characterization tests. commit e8c8fcc2dd8d21744bd15533f62817b9db2f8b08 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:30:18 2026 -0400 refactor(terminal): Phase 2.2 increment 3 — FiscalReportService.classifyBatchInfo Add pure `classifyBatchInfo()` + sealed `BatchInfoOutcome` (Success/Failure) to FiscalReportService. Wire `_batchInfo` to pattern-match the outcome instead of branching on `TransactionResult` inline. Behaviour preserved. +3 characterization tests. commit 1149516d4772d3932382a842ea6b0557eeb3e102 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:20:44 2026 -0400 refactor(terminal): Phase 2.2 increment 2 — wire FiscalReportService.classify into _runFiscalReport X/Z report handlers now branch on the sealed FiscalReportOutcome from FiscalReportService.classify() instead of a raw success/else check. Behavior is preserved: Success triggers ReportFiscal + completed state; Skipped and Failure share the failed-emit path using fiscalResult.errorText. Dropped @visibleForTesting now that classify() has a production caller. commit 94e9d4df2f69fbec88a8f89d67ffd02a6a3cf5b3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:17:25 2026 -0400 refactor(terminal): Phase 2.2 increment 1 — FiscalReportService skeleton + classify() First extracted slice of terminal_bloc.fiscal.fiscal_reports.dart. Pure `classify(FiscalResult, TFiscalOperation)` maps the raw TransactionKassaResult onto a sealed FiscalReportOutcome so the BLoC handler can pattern-match the three outcomes instead of branching on enum strings inline: - FiscalReportOutcome$Success { operation, fiscalName, paymentData } - FiscalReportOutcome$Skipped { operation, fiscalName } - FiscalReportOutcome$Failure { operation, fiscalName, errorText, errorType } 6 characterization tests pin the current mapping as the regression fence before the BLoC handler is rewired in the next tick: - success → Success with paymentData preserved - success + null paymentdata → Success.paymentData == {} - skipped → Skipped - error → Failure (errorText + errorType preserved) - changeClosed → Failure (current behavior) - sealed switch exhaustiveness Phase 2 Step 2 tracker moved to IN PROGRESS. commit 5bde357fa62dd160933d4e47797c138b8a6b7b46 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:12:34 2026 -0400 Update MASTER_STABILIZATION_PROMPT.md commit 49530160b100484df766e0343cfdba2dcf7ac80d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 13:06:35 2026 -0400 test(stream_exhaust_map): Phase 6 pin exhaustMap semantics 9 regression cases for the ExhaustMapStreamExt.exhaustMap extension: - fast source drops events while async inner stream is alive (documents the actual [10, 30] behavior for Stream.fromIterable + Stream.value, not the intuitive [10, 20, 30]) - single-event source passes through unchanged - explicit async inner stream drops mid-flight source events and recovers on the next after-completion event - output stream closes after both source and inner complete - errors from the inner stream are forwarded (not swallowed) - errors from the source stream are forwarded - broadcast source → broadcast output - single-subscription source → single-subscription output Pins the 'drop source events while busy' contract that the extension replaces RxDart's exhaustMap for. commit 7867f2632f884c5618a51b869351894fb8b9f88b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:56:41 2026 -0400 test(extension_utils): Phase 6 broaden coverage for pure string/object extensions 41 new cases across 7 extension groups on the already-tested extension_utils file: - AptitoCheckoutActionExtension.toName (5 cases including every-value sweep) - StringExtension.nullIfEmptyOrLiteralNull (6 cases) - StringExtension.emptyIfLiteralNull (3 cases) - StringExtension.toUpperCamelCase (6 cases: space/underscore/hyphen separators, existing-caps preservation, empty) - StringExtension.addSQLCondition (4 cases: empty base, AND joining, empty new, both empty) - StringExtension.ifEmpty (2 cases) - ObjectExtension.isNullOrEmpty (9 cases spanning null / empty+non-empty string / list / map / int) - ObjectStringExtension.toEffectiveString (5 cases) Pins the literal-'null' sentinel + whitespace-trimming contract for the nullIfEmptyOrLiteralNull family, which is used heavily by code that migrated from raw JSON payloads. commit 14a7b9c62642e6e5d82e8fd197b697012f659c8a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:47:22 2026 -0400 test(error): Phase 4.8 add retry-eligibility + throwing-contract cases 5 new AppException test cases: - Pattern-matching retry-eligibility: sealed switch classifies network/timeout as retryable and every other subtype as not - Throwing contract: catchable via on-clause for the specific subtype, catchable via on-clause for the sealed base (with runtimeType/code preserved), identity-preserving rethrow Documents the retry pattern the Phase 4 plan promised: ``` bool isRetryable(AppException e) => switch (e) { AppException$Network() || AppException$Timeout() => true, ... }; ``` commit 22c0a3a72dfc98ae505ca6b2a1b0a2310b9d4a06 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:44:55 2026 -0400 docs(master): sync top-level phase status table with real progress Phase 1 → LARGELY DONE (firstWhere fixes complete, try/catch on BLoC handlers PARTIAL, CRUD await DONE, build_context_synchronously PARTIAL). Phase 2 → NOT STARTED (Step 0 audit only). Phase 3 → LARGELY DONE (TOrder/DOrder equality, copy parentid, dedup, AOrder non-mutating sort + appendPayment, DOrder/OrderInfo/AccountData audits landed in GLOBAL_STATE_AUDIT.md). Phase 4 → LARGELY DONE (Steps 1/2/3/4/5 DONE, Step 6 LARGELY DONE with ~95 BLoC sites migrated, Steps 7/8/9 PARTIAL). Phase 5 → IN PROGRESS (Step 3.4 integrations DONE; Steps 2.2/2.3/2.4 barrel-routed; lib/core + lib/devtools + lib/app surface-cleaned; Steps 1/3.1/3.2/3.3/4-7 NOT STARTED). Phase 6 → IN PROGRESS (test batches landed for equality, error helpers, math, terminal util, OrderInfo, address, time formatter). commit f18f231b8778cb2a5df095641c7f7869906fbe9b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:42:09 2026 -0400 docs(error-system): Phase 4.9 write AGENTS.md for lib/core/error/ Canonical rules doc for the typed error hierarchy: - when to throw each AppException subtype (table covering Unauthorized/NotFound/Server/Validation/Conflict/Cache/Network/ Timeout/Cancelled/Unexpected) - the throw-don't-stringify rule with before/after examples - BLoC catch pattern with userMessageFor() helper - ExceptionUtils Sentry-routing rules from Phase 4 Steps 2+3 - what-not-to-do list (no bare Exception('...'), no e.toString() in failure states, no swallowed catch blocks) - cross-links to Phase 4 plan, regression tests, and the canonical logger. Phase 4 Step 9 tracker moved to PARTIAL. commit 2b62b21c1fbc6671abb42165bbe87015efd24ee9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:40:33 2026 -0400 test(extension_utils): add TimeOfDayFormatter.formatToString coverage 4 new cases pin the HH:mm padding contract: - 9:5 → 09:05 (hour+minute padding) - midnight → 00:00 - 23:59 → 23:59 - noon → 12:00 The extension uses DateFormat.Hm() which normally locale-switches, but in tests always renders with the Hm pattern; these cases document the invariant. commit 154ef2a11a6378fd2dc4e20e4b53d41939ddddbb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:37:57 2026 -0400 refactor(module-boundaries): Phase 5.3 drop deep order_list cross-feature imports - support_screen/leaf_help_screen: dropped deep DetailAppBarWidget import (already provided by order_list_public) - table_service/taylor_table_service_screen: dropped deep order_data.dart import (now provided by order_list_public) Widens order_list_public to also re-export OrderData widget from presentation/widgets/taylor/widgets/order_data.dart show OrderData. commit 6ecfa31a5b10e93c2c79203eb1cd305d8a845efe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:35:14 2026 -0400 refactor(module-boundaries): Phase 5.3 cross-feature widget barrel routing Files: - order/aptito/widgets/stop_list/aptito_stop_list → settings_public show SettingsCuppertinoSwitchTile - location/presentation/screens/timezone_autocomplete_field_screen → inventory_public show InventoryCustomDropdownWidget - leaf_main_screen/widgets/leaf_inventory/tabs/{modifiers,items,categories} → drop redundant deep imports now provided by inventory_public Two feature barrels widened: - settings_public re-exports SettingsCuppertinoSwitchTile - inventory_public re-exports InventoryCustomDropdownWidget, FilterAndSort, InventoryAddNewObjectWidget Also drops a transitively-redundant custom_dropdown_widget import in inventory/.../filter_sort_popup_widget that the analyzer flagged after the inventory barrel widened. `dart analyze lib/` clean. commit b5b15e3d4886e35a7d5362201bb319d81b3c0a99 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:29:11 2026 -0400 refactor(module-boundaries): Phase 5.3 route lib/devtools + lib/app through feature barrels 5 files migrated: devtools: - logger/exception_utils → ui_public (status_bar_info_message) - details_screen → order_checkout_public + ui_public show AppTheme app: - app_bloc_providers → authentication_public show CheckDbConnection, order_public show TaylorOrderCubit, table_service_public show NotificationsBloc Two feature barrels widened: - authentication_public re-exports CheckDbConnection use case - order_public re-exports taylor_cubit (TaylorOrderCubit) `lib/devtools/` and `lib/app/` are now free of deep `features/.../...` paths. `dart analyze` clean. commit 394010ee3f0a422f8d76291127623fc3a1eccc8f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:24:46 2026 -0400 docs(phase-5): mark Step 2.4 (data sources reverse deps) PARTIAL commit 19f59c14cc5304ca6d8104508a8784da3a9b80cb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:24:06 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/data + DI roots through feature barrels Final core/ deep feature import sweep — 14 files migrated: core/data/sources: - socket/socket_data, socket_client, socket_server → ui_public - remote/orders_remote_source → order_public, receipt_options_public, ui_public (RTableDetailType, NumberNotFoundError, SyncStatus + SyncStatusService) - remote/master_wizard_remote_source_impl → master_wizard_public - local/db_local_source → order_public + reports_public show CommonReportSQLQueries - remote/db_remote_source → reports_public show CommonReportSQLQueries core/data/repositories + source_interfaces + domain/repositories: - master_wizard_repository_impl → master_wizard_public - master_wizard_remote_source_interface → master_wizard_public - master_wizard_repository → master_wizard_public core/common: - widget/confirm_changes_dialog → settings_public show AppBrightness - dependencies/repositories → auth_pin/inventory/main_wrapper/order/transactions publics - dependencies/dependencies → reports_public, taxes_and_fees_public, inventory_exchange_public core/di: - composition_root → reports_public show ReportsDataSourceFactory, taxes_and_fees_public show TaxesAndFeesContainerFactory, inventory_exchange_public show InventoryExchangeContainerFactory - repositories_root → inventory_public show 3 factories, main_wrapper_public show MainWrapperRepositoryFactory, order_public show CreateOrderReasonFactory, reports_public show ReportsDataSource, transactions_public show TransactionsRepositoryFactory core/routing: - app_router_guards → ui_public (toast) core/validation: - check_math_batch → reports_public show CommonReportSQLQueries + ReportsDataSourceFactory Three feature barrels widened: - main_wrapper_public re-exports MainWrapperRepositoryFactory - inventory_public re-exports EmployeeInventoryRepositoryFactory - inventory_exchange_public re-exports InventoryExchangeContainerFactory `dart analyze lib/` clean. `lib/core/` is now overwhelmingly free of deep features paths — only `lib/core/routing/app_router.dart` (auto_route generated context, ~120 deep imports) and 1-2 stragglers remain. commit 16f78c8b38b5ae3351151ea42cd3f2f96bd97d48 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:11:18 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/components through feature barrels 12 core/components files migrated to feature `*_public.dart` barrels: leaf: - custom_discount_selector → kiosk_public + ui_public - shared/leaf_void_cupertino_dialog → order_checkout_public, shared_public, ui_public show CheckoutFunctions/OrderWorkplaceAccessUtils/AppTheme/CoreBase - leaf_shared_functions → order_public show KitchenVoidDialog/LeafOrderDiscountWidget, order_checkout_public, ui_public show AppTheme/PalomaNoteDialog - leaf_past_payment_widget → kiosk_public paloma: - paloma_text_field → ui_public - paloma_dropdown_button_form_field → ui_public - paloma_circular_progress_indicator_wrapper → ui_public show AppTheme - common_error_widget → inventory_public show CommonPrimaryButton + order_checkout_public show PalomaColors aptito: - aptito_checkout_calculator_widget → order_public show seatSelectorShakeKey + order_checkout_public - aptito_dropdown_button_form_field → ui_public - aptito_text_field → ui_public shared: - input_formatters/money_input_formatters → order_checkout_public - widgets/paloma_language_picker → ui_public show AppTheme Widens two feature barrels to absorb new symbols: - order_public re-exports leaf_order_discount_widget.dart, kitchen_void_dialog.dart, aptito_order_modifiers_seat_selector_dialog_quantity.dart - inventory_public re-exports common_primary_button.dart show CommonPrimaryButton Also drops a transitively-redundant common_primary_button deep import in inventory/.../filter_sort_popup_widget.dart that the analyzer flagged after the inventory barrel widened. `dart analyze lib/` clean. commit 95bf46e0d5fc21ecbfd28d468c2f9ffa216d5c59 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 12:01:29 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/utils + core/models through feature barrels 10 more core files migrated to feature `*_public.dart` barrels with explicit `show` lists: core/utils: - time_format_utils → settings_public show GeneralSettingsTimeFormat - date_format_utils → settings_public show GeneralSettingsDateFormat - currency_utils → settings_public show CurrencySymbol - navigation_utils → delivery_public show Delivery$Fetch - table_utils → order_public show RTableDetailType - old_utils → delivery_public show Delivery$Fetch + Delivery$Notification core/models: - r_table_details → order_public show RTableDetailType - log_operation → order_public show RTableDetailType - s_printer → settings_public show PrinterExtra - s_payment_device → settings_public show PaymentDeviceExtra(+5 variants) - i_area_object → ui_public show ObjectType - s_order_lists → order_list_public show SOrderList `dart analyze lib/` clean. `lib/core/models/` and `lib/core/utils/` now consume features only through their documented public barrels (remaining deep imports in core/ live under di/, components/, routing/ which still need work). commit 7d3e0abae2e0dc4089319828444dcc9abcb39440 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:55:36 2026 -0400 docs(phase-5): mark Step 2.3 (usecases reverse deps) PARTIAL commit 492b212af4d61e8499f7f986e0343860efc301d5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:55:00 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/usecases through feature barrels 13 use-case files migrated from deep `features/.../...` paths to `*_public.dart` barrels with explicit `show` lists: - r_table_details_operations: order_public show RTableDetailType - get_remote_batch: order_public show RTableDetailType - discount_operations: order_public + order_checkout_public (CreateOrderReason, RTableDetailType, OrderCheckoutBlocInterface) - tax_exempt_operations: order_public show CreateOrderReason + RTableDetailType - compliment_operations: same - order_operations: same - remove_operations: order_public + order_checkout_public - s_printer_operations: settings_public show PrinterSettingKey, PrinterSettingsConfig - payment_devices_operations: settings_public show PaymentDeviceSettings - t_menu_items_operations: kiosk_public show SItemTMenuViewModel - master_wizard/make_preregistration: master_wizard_public - master_wizard/make_registration: master_wizard_public - get_order_type_count: reports_public show ReportsDataSourceFactory - create_structure / sync_server / sync_tables: ui_public show SyncStatus + SyncStatusService (+ SyncStatusType in create_structure) - sync_server: delivery_public show Delivery$Notification Widens reports_public to also show ReportsDataSourceFactory. Result: `lib/core/usecases/` is now free of deep cross-feature paths outside `shared/account_data`, `shared/order_info`, and the legacy `checkout_exports` barrel. `dart analyze lib/` clean. commit 47400f3d6cb8e6dee5f8e869f4dc250ce0bd243d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:45:14 2026 -0400 docs(phase-5): mark Step 2.2 (bloc_utils) PARTIAL after barrel routing commit dc445e53d999208d58d289b3d4dd70ad713f9b53 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:44:42 2026 -0400 refactor(module-boundaries): Phase 5.2.2 route bloc_utils through feature barrels core/utils/bloc_utils.dart was the worst single offender in core/ → features/ reverse-deps with 18 deep imports. Collapsed to 7 barrel imports with explicit show lists across delivery, inventory, leaf_settings, order, settings, table_service publics. Widens three feature barrels to make this possible: - order_public: re-exports leaf/bloc/quick_order/quick_order_bloc.dart - settings_public: re-exports settings_bloc, hardware_tabs_bloc, server_bloc - inventory_public: re-exports the 8 BLoCs consumed by bloc_utils (AddEditTable/AddEditTip/AddUpdateItem/AddUpdateSchedule/ItemsList/ RoomsDashboard/ScheduleSelection/TipsList/WorkplacesDashboard) Also drops one transitively-redundant deep import in inventory/presentation/menu_rotation/edit_menu_rotation/edit_menu_rotation_wrapper_screen.dart that the analyzer flagged after the inventory barrel widened. The reverse-dep itself is still present (bloc_utils is in core/ and imports feature publics) — this only normalizes the import surface to the documented public APIs. Eliminating bloc_utils entirely is Phase 5 Step 6 work. `dart analyze lib/` clean. commit ef6264193c4390bc69f1cfe3bc7e661cd3f5a8e5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:41:21 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/utils → feature barrels - core/utils/device_utils: ui_public show RestartState/StatusNotifierRestart - core/utils/util_functions: ui_public show AppTheme - core/utils/snack_bar/snack_bar_service: order_checkout_public show PalomaColors - core/utils/fiscalization_utils: order_list_public show SOrderList bloc_utils.dart still has 18+ deep feature imports; that godutility needs its own dedicated tick. commit 1165c039084853420f39b71c2cb80dabd035ed31 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:38:49 2026 -0400 refactor(module-boundaries): Phase 5.3 route core/ → terminal_public 5 core files now import the terminal feature exclusively through its public barrel: - core/di/repositories_root: show MerchantCustomerCopyService, TerminalRefundService, TerminalVoidService - core/common/dependencies/repositories: same three services - core/components/leaf/shared/leaf_void_cupertino_dialog: show TerminalPaymentInfo, TerminalScreenRoute - core/routing/app_router: barrel import (auto_route generated code needs several symbols — keep unrestricted to match generator output) - core/usecases/remove_operations: show TerminalPaymentInfo, TerminalScreenRoute (used in remove_operations.void_items part file) This closes Phase 5 Step 3.4 for the core/ → features/terminal arrow. The reverse-dep is still present (core depends on a feature) but the surface is now the documented public API rather than internal file paths. commit 8cd02ff141546a3d5bb523b238ad9b74f6730381 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:35:30 2026 -0400 docs(phase-5): mark Step 3.4 (integrations) DONE commit f7bd82f8f7d373a97ee1da8279a8945c5b973da1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:34:48 2026 -0400 refactor(module-boundaries): Phase 5.3 drain integrations deep imports (batch 5) Final sweep — lib/integrations/ is now free of deep feature paths (outside shared globals and checkout_exports legacy barrel). Migrated files: - printer/model/kitchen_receipt_data: kiosk_public show OrderType + order_public show getStatusPriorityForPrinting - printer/model/payment_receipt_data: kiosk_public show OrderType + order_public show ModifiersEquality/OrderMath/RTableDetailType + order_checkout_public show OrderCheckoutBlocInterface - printer/model/merchant_receipt_data: order_public show RTableDetailType - terminal/core/core_functions: settings_public show PaymentDeviceSetting/Settings - terminal/source/valor_semi_lifecycle: settings_public show PaymentDeviceExtra$ValorTerminal - terminal/source/halyk_qr_source: terminal_public show TerminalScreenDialogQr - terminal/source/netevia_instant_funding_source: terminal_public show TerminalBlocStatus + ui_public show AptitoCupertinoDialog - terminal/terminal_batch: terminal_public show TerminalBlocStatus - terminal/model/terminal_data: terminal_public show TerminalBlocStatus Also widens two feature barrels so the imports resolve: - order_public re-exports aptito_order_item.dart (for getStatusPriorityForPrinting) - terminal_public re-exports terminal_screen_dialog_qr.dart Phase 5 Step 3.4 (integrations) is now DONE. commit 20ce9d7639bd762c39803ab6e69970016f901199 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:17:04 2026 -0400 refactor(module-boundaries): Phase 5.3 route fiscal kassa + receipt_kitchen through order_checkout_public 6 files migrated from the internal path `features/order_checkout/bloc/new_order_checkout_bloc/order_checkout_bloc_interface.dart` to `order_checkout_public.dart` with `show OrderCheckoutBlocInterface`: - fiscal/model/uzkassa - fiscal/model/rekassa - fiscal/model/epos_kassa - fiscal/model/newcas - fiscal/model/webkassa - printer/receipt/receipt_kitchen All consumers now see the interface through the feature's public barrel. commit b6aa056df2342b09b3355961da5548de59605303 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:14:20 2026 -0400 refactor(module-boundaries): Phase 5.3 route integrations → ui barrel (batch 3) 14 more integration files migrated from deep `features/ui/{bottom,status}_status_bar/*.dart` paths to `ui_public.dart` with explicit show lists: - printer/device: printer, printer_lan, printer_star, printer_star_matrix, printer_tspl, printer_valor - printer/receipt: receipt_kitchen, receipt_merchant, receipt_payment, receipt_test - printer/printing_queue - fiscal/fiscal_auto_z_report - terminal/source/netevia_instant_funding_source - terminal/terminal_batch (+ RTableDetailType via order_public, +StatusBarNotification/Type via ui_public for part files) All `lib/integrations/` files are now free of deep `features/ui/...` imports; the barrel is the only entry point. commit a2fa206cb9b74c5b3dd265ccd3610b4a8f1f679d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 11:07:37 2026 -0400 refactor(module-boundaries): Phase 5.3 route integrations → settings barrel (batch 2) 11 integration files migrated to settings_public.dart with explicit show lists: - printer/core/core_constants: FontSizeRange - printer/core/core_function: FontSizeRange, PrinterExtra - printer/open_cash_drawer: PrinterSettingKey + ui_public BottomStatus/Stream - printer/receipt/receipt_template: PrinterSettingKey - printer/receipt/receipt_label: PrinterSettingKey + ui_public BottomStatus/Stream - printer/report/report_product | close_batch | image | waiter | print | fiscal | sales_overview: PrinterSettingKey Also widens settings_public.dart to re-export font_size_range and printer_extra so these consumers have a barrel path, and routes terminal_batch order-reason imports through order_public. Every integrations/ consumer of printer_settings now comes in through the barrel — zero deep paths remain. terminal_batch also collapses its order_reason_picker imports to a single order_public show. commit 5107ce707bb5342a98a3463d58c2b7f85d79bd7d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:41:10 2026 -0400 refactor(module-boundaries): Phase 5.3 route integrations imports through feature barrels integrations/ should depend on feature public API, not internal paths. Six files migrated from deep `features//domain/entities/*.dart` paths to the `*_public.dart` barrels with explicit `show` lists: - printer/model/waiter_report_data: reports entities (5) via reports_public - printer/model/sales_overview_report_data: reports entities (9) via reports_public - printer/model/product_report_data: ReportProductSalesModel - printer/model/batch_report_data: BatchReportModel - printer/report/report_batch: BatchReportModel + PrinterSettingKey - terminal/terminal_batch: transactions_repository + repository_impl + screen_enums collapsed to a single transactions_public import Each `show` list makes the public surface explicit so a reviewer can see what the integration needs from the feature without diving into internal file paths. commit 3709d6a8ae66fec45da4e7f9d1ff4ff221dd730a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:33:38 2026 -0400 docs(phase-4): sync tracker for Steps 7 + 8 Step 7: use cases in core/usecases/ all migrated to typed AppException (formal AppResult wrapping deferred). Step 8: exception hierarchy + result variant + userMessageFor helper covered; ExceptionUtils behavior test still missing. commit 365a86cf130d04db4a83c5b46bb5123355d6d7d4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:30:56 2026 -0400 refactor(error-system): Phase 4.5/4.7 migrate core/usecases to AppException All `throw Exception` sites in lib/core/usecases/ now use typed AppException subtypes: - update_remote_order / create_remote_order: NotFound for unresolved parent item refs, Validation for duplicate TOrder id - t_workplaces_operations: NotFound(TWorkplace) - payment_devices_operations: NotFound(STypesOfPayment) for gift card - get_local_settings: NotFound(SAutomatedPoint) with entityId - remove_operations.validate_remove / .void_items: NotFound for gift card item / t_order / r_table_detail / payment_device; Server for void-failure + update failure core/usecases/*.dart is now fully typed — every throw is an AppException subtype a caller can pattern-match on. commit 7f7569297aff00527447154800148626fd1f4e45 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:25:14 2026 -0400 refactor(error-system): Phase 4.5 drain final long-tail (DONE) Closes the last ~25 untyped `throw Exception` sites in the data/repo layer across 17 small files: - payment_device_repository (NotFound: SPaymentDevice) - partner_employee_repository (NotFound: PartnerEmployee) - partner_access_types_repository (NotFound: PartnerAccessType) - sync_repository_impl.initialization (NotFound: STypesOfPayment) - main_wrapper_repository_impl (Server: open shift) - receipt_options_repository (NotFound + Server for fiscal error) - add_edit_form_local_data_source + taxes (NotFound: SItem/TaxLink) - add_edit_item_remote_data_source (Server: create/update item) - employee_inventory_repository.crud (NotFound + Validation) - discount_clients_repository_impl (Validation: phone) - kitchen_repository_impl.status_changes (Server: sms send) - customer_screen_repository.order_handlers + events (NotFound) - product_sales / waiter_report / sales_overview (Server + NotFound) Result: every *_data_source*.dart and *_repository*.dart file under lib/features/ is now free of untyped throws. Phase 4 Step 5 -> DONE. commit e1ea23e192995871f766cc33a8939c44eba4ff24 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:15:59 2026 -0400 test(address_utils): formatAddress SAddress variant + FormatException + custom format Adds 5 regression tests: - FormatException thrown on unknown placeholder in a custom format - one-line custom address format renders correctly - formatAddress(address: SAddress) delegates through with building/street/unit/city/state/zip/country - formatAddress with an all-null SAddress returns empty string - formatAddress() with no argument returns empty string Pins the template-processing contract before any Phase 5 refactor. commit 4cd533d01c3f2ca4832c47dcc4bd736796586252 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:10:54 2026 -0400 test(terminal): PaymentDataBatchInfo.closeBatchDataParse netevia family + instantFundingAmount Adds 7 regression tests pinning: - neteviaPinPad's nested batch_data.payload.report parse path - netevia's CreditAmt/100 conversion with svc/taxes/tips forced to 0 - sunmiTsysTerminal's batchNetDeposit/100 conversion - null return for unsupported providers (pax) - instantFundingAmount precedence: root instant_funding_amount → batch_data.instantFundingAmount → null commit 92c96e8df44c86196d7c17d5f4da8b720fec328f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:09:43 2026 -0400 docs(phase-4): sync tracker for Step 5 LARGELY DONE (238 sites / 23 files) commit 68c6de5f1070d7fdf5165338054dca071ababfd5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:09:00 2026 -0400 refactor(error-system): Phase 4.5 migrate long-tail data sources + repos Another ~60 throw sites migrated across the smaller data-source / repository files: - access_types_data_source (14: validation + server) - reports_data_source (9: server) - customer_screen_repository.card_payments (9: NotFound with entityType/Id) - order_tips_repository (5: NotFound + server) - clock_time_repository_impl.load (5: NotFound + server) - add_edit_form_remote_data_source (4: server) - support_channel_repository (4: server) - paloma_gift_card_repository (5: Validation + NotFound) - factor4_gift_card_repository (4: Validation + NotFound) - settings_data_source (1: NotFound for c_base_config) Each site picks the most specific AppException subtype (NotFound with entityType/Id, Validation with field, Server with optional statusCode) so callers can pattern-match instead of string-inspecting e.toString(). commit f72d463c54135912478183300a9e4d8270e994df Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 10:00:35 2026 -0400 refactor(error-system): Phase 4.5 migrate top-10 remaining: auth token + db row-ops + paloma gift repo 46 throw sites migrated across the last three top-10 high-volume files: - auth_remote_source.token (13): unauthorized when partner token missing, server errors with HTTP statusCode carried through for the two "Failed to fetch token" paths - db_remote_source.row_ops (16): validation errors for missing data/id/ids/table_name with `field:` populated, server errors for backend message / unknown response shape - paloma_gift_card_repository.transactions (17): validation for precondition checks, NotFound for the missing R table detail lookup Phase 4 Step 5 now at **LARGELY DONE**: running total 178 sites across 13 files, covering all top-10 high-volume data sources. Long-tail smaller files remain for follow-up. commit a591eb551dd5dd3b412c8f9d19c43ddc93ebc301 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:54:20 2026 -0400 refactor(error-system): Phase 4.5 migrate factor4 gift-card data source + repository 34 throw sites migrated across the factor4 domain: - factor4_gift_card_data_source.transactions: 8 server errors - factor4_gift_card_data_source.transactions.void_issuance: 12 server errors - factor4_gift_card_repository.transactions: 14 sites, all precondition failures, routed to AppException$Validation (11) or AppException$NotFound (1, R table detail lookup) Running Phase 4.5 total: 131 sites across 10 files. Gift-card pathway is now fully typed. commit 4dc881fca091ec80fa7b3bac56e789b620428120 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:50:13 2026 -0400 refactor(error-system): Phase 4.5 migrate paloma_gift_card_data_source 35 throw sites across the paloma gift card data source and its spend_void part file migrated to AppException$Server. GiftResponseException remains for errorMessage-bearing payloads. Running Phase 4.5 total: 97 sites across 7 files. commit c754d14d33a2981b9a70a1fd3ac3665f311d0c66 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:46:24 2026 -0400 refactor(error-system): Phase 4.5 migrate partner_data_source accounts+merchants 34 throw sites migrated across the two partner_data_source part files. Authorization-failure paths throw AppException$Unauthorized; server errors (register/update partner/owner/account/merchant mark, load subpartners/partner accounts/info) throw AppException$Server with the backend message preserved. register-partner statusCode path now carries the HTTP status via AppException$Server.statusCode. commit a8a3be0a64251f5e4cf7275169a71921fbaf27a5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:43:07 2026 -0400 refactor(error-system): Phase 4.5 migrate partner_employees_data_source 8 throw sites migrated: 4 authorization-failure paths now throw AppException$Unauthorized, 4 server-failure paths throw AppException$Server with the backend error message plus the same Account/WP context used for debugging. commit e2d2a1e8cd89b08b33be2a34ef92284fcba96641 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:41:44 2026 -0400 refactor(error-system): Phase 4.5 migrate access_types_data_source to AppException 16 throw sites migrated: the 8 authorization-failure paths now throw AppException$Unauthorized (so callers can route straight to sign-in instead of string-matching 'Authorization failed'), and the 8 server-side failure paths throw AppException$Server with the same backend error message preserved for display/logging. commit 562a45720a91062315f234f8952b2dec9e7ba154 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:40:01 2026 -0400 refactor(error-system): Phase 4.5 migrate taxes_and_fees_data_source to AppException Replaces all four `throw Exception(...)` sites in taxes_and_fees_data_source.dart with `AppException$Server` so callers can pattern-match on the typed hierarchy instead of string-inspecting `e.toString()`. Tracker moved to IN PROGRESS for Step 5; top-10 high-volume files (gift cards, partner portal, auth token, db_remote_source) remain for follow-up ticks. commit c5ce6658af1629fba49453abf5ae0c2e8b6d640b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:38:42 2026 -0400 fix(logger): Phase 4.3 finish logRemoteOrLocal per-call Sentry opt-in logRemoteOrLocal now takes a `disableSentry` named parameter defaulting to false. Previously this method hard-coded `disableSentry: true` when calling LoggingMethods.log, which silently dropped every database/API error from Sentry. Callers that expect recoverable or expected failures (a known 404 on a sync retry, etc.) can still opt out by passing `disableSentry: true` per call site — this restores the old behaviour only where genuinely intended instead of project-wide. Phase 4 Step 3 tracker moved to DONE. commit 416db66ad0a968284213595f74f60ff17b3a2904 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:35:33 2026 -0400 fix(logger): Phase 4.3 stop silencing Sentry during empty-token startup logRuntime previously set disableSentry=true whenever the session token was empty, which meant any error thrown during app startup, sign-in, or token refresh vanished from Sentry — precisely the class of bug we need reported. Keep the dialog and z-log muted (no session to attribute to), but let Sentry through. Also adds unit coverage for OrderInfo's static-field contract (increasePricePercent transform, null/round-trip for slipId/cashId, cashDiscountPercent verbatim) so the Phase 5 migration has a safety net. Phase 4 Step 3 tracker moved to PARTIAL — logRemoteOrLocal still needs a per-call opt-in follow-up. commit a04ef0bd7c37eea0031bcfbade9a3899d0e75f2c Author: Forasky Date: Wed Apr 15 16:33:24 2026 +0300 fix(DEV-11685): fix issue with part payment commit 63f85b9d0364d4ab919ac9c8d9f2776de9c7a378 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:30:03 2026 -0400 docs(audit): Phase 3 Step 5 DOrder mutating API Enumerates the five mutating methods/setters on DOrder (employeeId, setObjectid, regenerateGuid, applyCleanDiscounts, ensureId) with their known call sites (\~6 total) and a copy-then-assign migration plan for the eventual Phase 5 field-by-field final cleanup. Folded into refactoring/GLOBAL_STATE_AUDIT.md and the Phase 3 tracker. commit eb18ee59e614a8bde07d1afabb87a4ed0227a7cd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:28:51 2026 -0400 chore(git): untrack Claude Code runtime lock + gitignore rule Accidentally committed .claude/scheduled_tasks.lock in the previous commit. This file holds per-session scheduler lock state and must not be tracked. Add it (and .claude/settings.local.json) to .gitignore. commit 8fa1ee24cd674e9e62812f91dea9f6dff5da38a5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:28:02 2026 -0400 refactor(error-system): Phase 4.6 drain remaining BLoC error emissions Migrates the last 20+ failure-state sites across: - OrderListBloc (filters/sort/load part files) - DeliveryBloc (search_sort/print_notify/load/clients part files) - PartRefundBloc (refund + load part files) - PrintoutsBloc (operations + fetch_filter part files) - TransferOrderBloc (6) - ToGoMenuBloc - NotificationsBloc (7) - SelectWorkplaceCubit After this batch every non-commented `(error|message): e.toString()` site under lib/features/ routes through userMessageFor. Tracker updated. commit cba018bc15d775a8fbb544d048e927e7d773b832 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:14:46 2026 -0400 test(validation): CheckMathBatch.calculateBatchTotalAmount + tipAdjustmentCountQuery Pins the batch total formula (sum+tips+taxes for netevia/pax/halyk et al, sum-only for valor), verifies zero-batch invariant across all terminal provider variants, and the SQL scaffold for the tip-adjustment reconciliation query (device id injection, close_batch fallback, expected columns/joins). commit 05325916237ace8fe90f404dadda4b02180ea56b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:13:04 2026 -0400 refactor(error-system): Phase 4.6 migrate settings/leaf/eod BLoCs Another ~15 failure emissions migrated to userMessageFor: - AppearanceSettingsBloc load_update - ClientBloc connection + manage part files - UIBloc (4) - LeafThemeSettingsBloc (2) - LeafThemeItemsQuantityBloc (1) - AptitoReportsBloc fetch (2) commit 6a7d8dbdcb9c9a32cedbf316faba554c2afc1a2f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:10:12 2026 -0400 refactor(error-system): Phase 4.6 migrate TerminalBloc part files Terminal part files now emit failure states through userMessageFor so AppException subtypes surface their typed message: - payment_card (1), payment_cash (1) - adjustments_refund (1), adjustments_refund.partial_refund (1) - adjustments_void (1), adjustments_void.partial_void (1) - adjustments_tips (1) - fiscal_reports (3), fiscal_shift (1) - customer_screen (2) - helpers (1) commit 6391e917c15dfb017fa8fdaeb336164693bb79e0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:07:36 2026 -0400 refactor(error-system): Phase 4.6 migrate error: e.toString() BLoC batch Routes another 20+ failure-state emissions through userMessageFor so AppException subtypes surface their typed message: - OrderModifiersBloc (3) - EmployeePickerBloc (3) - OrderCustomItemBloc part files (form_fields/load_create/update_delete) - HardwareSettingsBloc part files (load_manage + fiscal_manage) - OrderBloc item_quantity helpers (1) commit b6187b755ec1f66664ad335397aa4f0ee62f4688 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:04:16 2026 -0400 test(terminal): unit tests for TerminalReportType, TerminalPaymentInfo, TerminalReportInfo Pins the enum membership/order, constructor defaults (withTip/true, applyCashDiscount/true, isVoidTransaction/false, part-refund/part-void off), and the mutable-sum contract for the terminal util value holders. Also marks Phase 2 Step 0 (current-structure audit) DONE in the tracker since the plan body already contains the audit. commit 8baf68809071e60dce829fd2bbb30cd8516b2918 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:02:45 2026 -0400 refactor(error-system): Phase 4.6 migrate order_list toolbar + UI alert sites Routes five remaining iShowAlert / failure-state sites through userMessageFor so AppException subtypes surface their typed message: void_dialog, paloma_adjust_tips_tool_bar_button, order_list_tool_bar_open, aptito_album_order_item, order_workplace_access_utils. Tracker updated. commit c19cc213bedf2f9594210118a650b0947e0d96e6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 09:00:55 2026 -0400 refactor(error-system): Phase 4.6 migrate kiosk/auth/cash-in-out/taxes BLoCs Swaps `message: e.toString()` for `message: userMessageFor(e)` in: - kiosk BLoC part files (payment, order_print_send, pay_completed, item_select_modifiers, order_submit_pay, order_submit_misc) - authentication_cubit.helpers - cash_in_out_cubit - leaf taxes_and_fees_bloc AppException subtypes now surface their typed message while legacy errors still round-trip through toString(). commit b06d0bf1eae517dd13f7ec1e871dc47a91cbc5a8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 08:57:42 2026 -0400 refactor(error-system): Phase 4.6 userMessageFor helper + first BLoC batch Introduces lib/core/error/user_message.dart which returns AppException.message when the error is a sealed AppException subtype and falls back to e.toString() otherwise. Migrates the first three BLoCs as a proof-of-concept batch: SettingsBloc (3 sites), AuthenticationCubit (4 sites), ServerBloc (2 sites). Legacy exception types still round-trip through toString() so behaviour is unchanged for un-migrated code paths. commit c039ad01c6f5f35dc32cc39a755cc896e9c9d996 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 08:55:14 2026 -0400 fix(logger): Phase 4.2 stop silencing LocalException/RemoteException logRuntime previously early-returned for these types, which meant genuine database/API errors never reached the log or Sentry. Route them through logRemoteOrLocal so they hit the log file at minimum. Also land Phase 3 Steps 9-10 audit (OrderInfo + AccountData) as refactoring/GLOBAL_STATE_AUDIT.md for Phase 5 reference, and sync the Phase 3 and Phase 4 trackers to reality (several steps were already shipped but not marked). commit a3599766389a0472b571b5526d0213bd3a4cf0d1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 08:52:16 2026 -0400 refactor(models): Phase 3.1+3.4 id-based equality for TOrder and DOrder Empty-id instances fall back to referential equality so unsaved drafts stay distinct. LeafState TOrder comparisons switched to identical() to preserve emit semantics for field drift on same-id instances. commit 25852fcb04637722ef37ebbea5643221d56f7a62 Author: Forasky Date: Wed Apr 15 15:45:50 2026 +0300 feat(DEV-11656): TSPL Unicode sanitization for label printers Made-with: Cursor commit 58c835bad3dbacc5da2f163dff13834e38074399 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Wed Apr 15 17:37:48 2026 +0500 fix(DEV-11657): If you lose connection with Sunmi during payment, you can't click cancel on the main menu. commit 610f3fbcf08a025ae866041539dc60cff3d0a002 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Wed Apr 15 09:30:43 2026 +0500 fix(DEV-11627): prevent quick cash crashes from invalid banknotes Sanitize quick-cash denominations at decode and save time so bad persisted values no longer create zero-denominator calculations. Harden the shared calculator against non-finite totals and invalid denominations so checkout and other payment flows fail safe instead of crashing. Made-with: Cursor commit 067fc68549ee94b90bc056a5fbc9167200bcba69 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Wed Apr 15 16:29:22 2026 +0500 fix(DEV-11647): preserve raw void rows in checkout persistence Made-with: Cursor commit 68b9fd250b0ac46404bcc96aadb9324991545dea Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:51:14 2026 -0400 test(order_checkout): unit tests for CalculatorButtonAction and CalculatorButtonPaymentAction enums commit 41cb4b433af08fbc0e2918c2de2d89534097bd63 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:49:15 2026 -0400 test(order): unit tests for ImageType enum variants commit 2309b8e6f3c0ed173c6ad0a0a7e0a742778851b3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:47:47 2026 -0400 test(application_store): unit tests for ApplicationModelListViewModel commit 075424ee9150800ef90a462d5d282e172f8d93ef Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:42:21 2026 -0400 test(order): unit tests for RegisterDisplayType enum and byName roundtrip commit e3f5c7c5fcbb2a33c53f88823b4484f180b1c50d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:36:12 2026 -0400 test(happy_hours): unit tests for AddEditHappyHourForm days/isValid/copyWith commit 937ab6dfb2e7678f8ac39f672c614c98837ef7a2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:32:42 2026 -0400 test(settings): unit tests for AndroidAppDatabaseEntry value holder commit ea35a4cb3bd0f131bf29d8dded63bf4c81d99339 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:29:50 2026 -0400 test(settings): unit tests for SettingsEntryState and SettingEntryEvent sealed hierarchies commit 1c7574343a0d4cd2279c78d201f27ef60f3f0317 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:26:43 2026 -0400 test(customer_screen): unit tests for CustomerScreenState defaults, copyWith sticky money, and enum commit 46576854fefdef823268d78d0cebd5b2190cc680 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:23:10 2026 -0400 test(time_cards): unit tests for TimeCardsState initial/loading/success/setError commit b97986d4dc9383d00d5eccf05cb9f66bab4b6377 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:21:28 2026 -0400 test(drawer): unit tests for DrawerOrderState copyWith and DrawerOrderEvent variants commit e02dccaeed60033c673b77e6f6b9c5e0b3a87a93 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:19:13 2026 -0400 test(receipt_options): unit tests for NumberNotFoundError commit cc054cafddf9c7b0ea4ee366239137a6f0936e0b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:16:45 2026 -0400 test(auth_pin): unit tests for EmployeeViewModel flags and CurrentEmployeeState transitions commit e08f1736f4709760d25b7a41f1b02879c54a3699 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:12:23 2026 -0400 test(main_wrapper): unit tests for NavigationCheckerRoute.route/path constructors commit 9c8e3884cce8a8b9f2afcec575ca5f2857e8a595 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:09:36 2026 -0400 test(core): unit tests for AppRouterConstants pinned route keys commit b85d378eafc48f12ca38d58f1fc3f057957e107a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:08:27 2026 -0400 test(partner_portal): unit tests for PartnerGraphNotifier listener lifecycle commit 3f391f63bd90559c6f19ad911749a0171bf1658e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:02:40 2026 -0400 test(integrations): unit tests for TransactionResponse fromJson/toJson/copyWith commit 3ae5c2f2e68b79c47b0310675a858ead9291e4b4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 07:01:01 2026 -0400 test(core): unit tests for SnackBarType enum and SnackBarConfig defaults commit ce6a6d7599e7059e792a237b22aac64197a3ce2b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:58:11 2026 -0400 test(order): unit tests for OrderItemsStream singleton and init commit e7617033c9a17091fc94856bc2812c1dad7e7d97 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:54:11 2026 -0400 test(order): unit tests for OrderUtilsOrderInit.getOrderInitSettings and originalPrice commit 8ff054265727ab656e4e7de29f3928f9dec5b2c0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:51:16 2026 -0400 test(leaf): unit tests for LeafSharedFunctions priceType and transaction refund/void predicates commit 252b3321a1f0799e6bdd6447c00d6d17b4f70469 Author: Forasky Date: Wed Apr 15 12:57:12 2026 +0300 feat: new release for Sunmi commit b5dff0dfb346eb080b1ad85ab00c7de98404942b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:47:14 2026 -0400 test(leaf): unit tests for StringExtensions.capitalizeFirst/capitalizeFirstNew commit b0783eadb5044d745eedcd62ba9b189452ae33e9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:41:50 2026 -0400 test(leaf): unit tests for LeafRandomColor.getRandomColor palette commit 6f4191b63b01c7b4fcd2fb16c3d8798f748d0281 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:36:40 2026 -0400 test(core): unit tests for KeyboardController add/backspace/clear/focus lifecycle commit ed4dba0ef5d92d7686dc3b225aac70d61f6817fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:31:51 2026 -0400 test(core): unit tests for BadResponseType enum variants commit c634cd9a3f9b3cca77b74b600d854b7cdc867ef6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:26:43 2026 -0400 test(core): unit tests for DialogPopupDuration and StoreLinks enums commit 78c77372c0cc3cefda364cdbb4352186ee3d9bfa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:22:04 2026 -0400 test(core): unit tests for RemoteDBConstants and RemoteDbEndpointUrls commit f82f710d4e161f9f8e2429f978a4472880d504fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:21:24 2026 -0400 test(core): unit tests for ConnectionType enum variants commit a591a8fe886e16b4d9428e40f6deb5f15e044620 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:17:53 2026 -0400 test(order): unit tests for CategoryColorManager.initializeColorsForCategories commit e28362bbc8c5daa92fdc435c462706737eea2bbb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:11:00 2026 -0400 test(core): unit tests for CBaseConfigs/DChanges/OrderItems and dashboard/cooking value holders commit 52022ca6c9c67bd90adad99263f22916a816240d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:09:27 2026 -0400 test(core): unit tests for t_ plural wrapper holders (employee/menu/time_price) commit b0e6636f98482ef945ae1bd36ab2277ee6126450 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:08:46 2026 -0400 test(core): unit tests for SAutomatedPoints/SItemsRecommended/SOrderLists/STimePrices wrappers commit b0c35a93207ce0c1d7c644540f56742e7eb9e962 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 06:03:08 2026 -0400 test(core): unit tests for SPictures/Shtrihs/SStopLists plural wrapper holders commit a116d1ac2a37ab726f99ecec174a0e3a322c8181 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:59:43 2026 -0400 test(core): unit tests for AptitoCheckoutAction enum and toName mapping commit ef061fb26d2fa1f35ad4d0a61a614b1b2486c2e1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:53:08 2026 -0400 test(leaf_settings): unit tests for LeafThemeSettings.getSettings defaults commit d07b2005a71fecd6326a3c3552aef2fd8bd97a71 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:49:08 2026 -0400 test(inventory_exchange): unit tests for InventoryExchangeSpec templateExcelUri commit f7dd111a25f0148201e47dace486595b0d873d28 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:45:43 2026 -0400 test(order_checkout): unit tests for NeedSplit enum variants and labels commit 38ee5d9824a17c1f885bd5fbc20a16dc40db1fda Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:43:06 2026 -0400 test(sync_wrapper): unit tests for SyncProgressEvent.inProgress commit 6dee7406bca9825836a3577c26df22fc9d137310 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:32:23 2026 -0400 test(inventory): unit tests for TextEditingControllerExt.setTextSafely commit bfeb3fc7973ab6b721a88593a527050b9e0de588 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:30:27 2026 -0400 test(core): unit tests for QueryParamsInterceptor acc_id/wp_id injection commit 0318f80b8fe6a07e6bab8267ff9e395ef43af7fd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:24:18 2026 -0400 test(printer): unit tests for StarCachedConnection update/clear/remove/status commit a72c872a56a6864f2c689fed2d33d6d515779861 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 17:52:20 2026 +0500 fix(DEV-11423): sunmi status code commit e0ff522cdaa67a9e42de3eca63d7123c1a496c2c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:16:44 2026 -0400 test(app): unit tests for Flavor enum and FlavorConfig.setFlavor/current commit 000a7909f48e725e0e861fe9f772218228a0fc6e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:11:35 2026 -0400 test(inventory): unit tests for AddModifierModel key derivation commit d613456e99f80b709e93932675b99e9b41d4ef95 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:08:35 2026 -0400 test(order_ready): unit tests for OrderReadyOrderModel.fromJson branches commit 87fe760125ecb03833512a48e54186522cfb4940 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:07:22 2026 -0400 test(master_wizard): unit tests for AddressUnitModel JSON roundtrip commit 77476f15e705ed414feb95fd9b454d907a7cdfae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 05:04:53 2026 -0400 test(partner_portal): unit tests for PartnerCredentials fields and toString commit c8ed3e611c3e0d97ad6e44427bd48b56430285d8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:53:20 2026 -0400 test(devtools): unit tests for LoggingMethods.prettyJson totalsum rewrite commit 53d6ee818ddfdda7b4d9efa58abd530d03aededd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:50:56 2026 -0400 test(core): unit tests for DateFormatUtils.toSqlDateTime commit 5e17666ed1ab5f4832d900e8c6f19b086b187e7d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:47:59 2026 -0400 test(core): unit tests for BuildUtils.convertDateTime and extractMetaDataValue commit c9169990877e9344bb6c7703d29e20d9316acb4b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:46:40 2026 -0400 test(core): unit tests for RemoveOperationException sealed variants commit ea1c1dfd369ef42ce354864cc11b8d7fe0e1a95e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:46:05 2026 -0400 test(core): unit tests for AppFailure sealed hierarchy variants commit 0bc07db06ed2b928bcc4d5559faa3c6e213a9523 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:44:58 2026 -0400 test(partner_portal): unit tests for PartnerPermissionContainer variants commit 6ff1425c3c42583205369965d8c688f6f287e96a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:39:40 2026 -0400 test(order): unit tests for CoreMath sale/total/tax calculators commit 089e95b7d48c60ec6af653a1ed39dd133fbde7f0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:34:57 2026 -0400 test(order): unit tests for DOrderMath subtotal/service/discount/totalSum commit fc846e9649bcaa2329a3d5795d235b3de7115e8b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:34:14 2026 -0400 test(order): unit tests for DiscountAddResult sealed variants commit 008889dcade47c2e87a3e5a6c086c44544c3350f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:33:56 2026 -0400 test(order): unit tests for CalcResponse empty/copyWith/mutability commit fef7b9285d1e2d26b4ebe92350755950b285a92e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:32:59 2026 -0400 test(partner_portal): unit tests for PartnerHierarchy isRoot and toString commit 41eab2cb2eaa46406d1e3d4be0023ed7a4fef792 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:32:23 2026 -0400 test(partner_portal): unit tests for PartnerCatalogData sealed hierarchy commit 004f8804912f1b8a7c6d0fa2a48249044de3a40c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:31:22 2026 -0400 test(partner_portal): unit tests for MerchantException sealed hierarchy commit c286ec840c0c770709888d16faa2b6635a27dad6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:26:04 2026 -0400 test(core): unit tests for TRightCategory JSON includeIfNull and now() dtedit commit 662b01ddade1acb3e47fd6dc28c8fe1880232e4e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:25:40 2026 -0400 test(core): unit tests for TRight defaults, JSON, copyWith commit 9044ff0e0e3c07cc6619c5848bc1d1111de33942 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:24:32 2026 -0400 test(core): unit tests for STypesPayment JSON, gift card guid, copyWith commit 85dc47ffb90d29667f201e01e3466eca2178b2ee Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:23:40 2026 -0400 test(core): unit tests for Apid/Wpid extension type validity predicates commit 0d2ec14a7dc818e50cc4e870a712884a8ee6269a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:14:19 2026 -0400 test(order): unit tests for CategoryColorManager color assignment, caching, clear commit 803761c6390e79121d776575aa8f0dbfe95c37f5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:13:42 2026 -0400 test(order): unit tests for ColorContrastUtils.isGrayColor with RGB spread and brightness thresholds commit 3f10b31cd319a68c5110203726cd76cf17356468 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:11:26 2026 -0400 test(order): unit tests for OrderMathHelpers.getPercent divide-by-100 semantics commit 6a15ba51014951e10869f142723ae3a026f3481f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:02:51 2026 -0400 test(partner_portal): unit tests for MerchantCatalogContent sealed hierarchy Direct/Owned commit 507703fb1ec251185b4ab728cd6010d7e1c1f752 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:02:12 2026 -0400 test(partner_portal): unit tests for PartnersTree/PartnerNode findSubtree, directMerchants, allMerchants commit 880c8239c0135fc25daeee58d6d49be1d6f7e2ed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 04:01:22 2026 -0400 test(partner_portal): unit tests for PartnerOwner fields and toString commit 6d9ff70dcd5ba97ad97ebd06cf21a14f0adbd8f3 Author: Forasky Date: Wed Apr 15 10:59:22 2026 +0300 fix(DEV-11615): align card charge with post-calc total when surcharges apply Made-with: Cursor commit d45dc1cb401c26973160f27c041670d7b2bd8bd5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:55:35 2026 -0400 test(partner_portal): unit tests for MerchantCatalogSort sealed hierarchy (14 variants) commit 9a80ac19636b26b58cb1e3e2dc86fe5a1bb3093d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:53:38 2026 -0400 test(ai_chat): unit tests for AIChatMessage fromJson hardcoding isUserMessage=false commit 679851beb762dbc4e70ac060312ac9fd137227db Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:52:38 2026 -0400 test(application_store): unit tests for ApplicationLocalModel json codec and markDeleted encoding commit 4cbf75972ef68b133d308045a615347ed42fbc9c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:51:26 2026 -0400 test(core/models): unit tests for TOrderPriceType dtParsed, fromJson operation decoding, toJson defaults commit f6f7fb972947053a6a6648973a0ece65fb84c82c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:45:04 2026 -0400 test(core/models): unit tests for PriceTypeOperation enum codes and uniqueness commit e7d2ce90185b2f23cbd3b33dc212704bbbc0d027 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:44:24 2026 -0400 test(core/models): unit tests for RTableDetail empty/fromJson/toJson/copyWith and default dtcreate commit 60399e4318def6862bd9a79676a5ef82952ceed8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:43:34 2026 -0400 test(order): unit tests for RTableDetailType fromKey/tableName with uniqueness guard commit 686a5e6456c864cef078a21b641876de7f505e46 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:41:47 2026 -0400 test(core/models): unit tests for TOrderPriceTypeOld json codec and late-mutable orderid commit ec0a2f065e74e9b49654fca5ce4859449fcd783d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:41:06 2026 -0400 test(core/models): unit tests for TClientsCards json codec with phone digit-stripping commit a8b976e2e9b138037a0ea1cd5a43aa49ef808a71 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:34:37 2026 -0400 test(core/models): unit tests for TTimePriceItem json codec roundtrip commit feca0b5e5d77a89329b4246d526afdaf06c7d937 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:33:52 2026 -0400 test(core/models): unit tests for SLocation json codec with tables_count nullable commit 04e955e155174efea2ba3135f3e8b25b503b0cf8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:33:20 2026 -0400 test(core/models): unit tests for SModificatorSItem json codec sortindex default commit 064b5b43a5cc248e4fe8bdbd8b15737bf9ecf64d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:32:45 2026 -0400 test(core/models): unit tests for SItemRecommended json codec snake_case aliases commit 6d1c8777c3b57ff1a4fba3bae0e31d3b6d31a6d8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:31:46 2026 -0400 test(core/models): unit tests for OrderItem json codec commit ca184b4b57f9f0328bf2de5e20da515d3b53943c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:27:01 2026 -0400 test(core/models): unit tests for PrintQueueConfig defaults and json codec commit 85dc765ecc5f1cfe8b2d84da1b3e618097292ab9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:22:51 2026 -0400 test(inventory): unit tests for checkIsDayActive/Bool schedule string<->bool roundtrip commit 1f742c0ee4fd918258e603830862ea484cb959ff Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:12:20 2026 -0400 test(settings): unit tests for PaymentDeviceViewModel empty/copyWith commit 794969ceb6c3fa46f343251f102977ff2ba8455c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:11:40 2026 -0400 test(settings): unit tests for PaymentDeviceExtra sealed hierarchy (Netevia/ChargeAnywhere/Halyk/Valor) commit e51e50e504d7192df1516b163eaa116ba9cbee56 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:04:25 2026 -0400 test(settings): unit tests for PaymentDeviceSetting/PaymentDeviceSettings json codec and copyWith commit f30990d41bd669978ed20c100208d3d92a2265c7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:03:33 2026 -0400 test(settings): unit tests for PrintQueueSettings defaults, json codec, copyWith commit dc5f8c2b80c6b8df97ba431cc930a1d7f31c7bbd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:02:59 2026 -0400 test(settings): unit tests for PrinterSettingsConfig/PrinterDeviceSettings/PrinterSettingKey commit e2b0e1fbd671249fd024ef888de9ce43371a2d23 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:02:07 2026 -0400 test(settings): unit tests for PrinterViewModel hasAnyRole/copyWith/equality commit bf354a78e6d11e3914dce649a25fc9bcce01febd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 03:01:26 2026 -0400 test(settings): unit tests for PrinterExtra json codec, copyWith, equality commit 22d695c62f4c63d5d809269ca42a564be31a4d0a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:56:54 2026 -0400 test(settings): unit tests for FontSizeRange isInRange and equality commit 93c7417e757135f9f294904f56be3e3a326a2fd0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:54:22 2026 -0400 test(terminal): unit tests for AppTerminalTypeProvider.toName display labels for all members commit ae15840861b50475353cb50a45a68f9de18e641b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:53:18 2026 -0400 test(terminal): unit tests for Chargeanywhere transaction/tender/fee type constants commit 1288fefb17ee8ae8c5719c4fa399639bfcca7f21 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:52:28 2026 -0400 test(fiscal): unit tests for Webkassa.paymentTypeToInt static mapping commit c48bf21c36a4fbd7732654f4733fb093ebac9c8d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:51:18 2026 -0400 test(terminal): unit tests for NeteviaPinPad static maps getTransactionType/getCardType and tender constants commit 0ceb76369904d355cd90b47ab68120624664601f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:45:46 2026 -0400 test(terminal): unit tests for PaymentDataSaleInfo.fromJson netevia/chargeanywhere/virtual/voidt priority commit b508cc72e1fca5e5c25338c0b1b58794ed40d9f7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:44:46 2026 -0400 test(terminal): unit tests for WizarposTransactionConstants mapping and defaults commit e64348064760470f7297843157992e565eecb2e8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:43:21 2026 -0400 test(printer): unit tests for AppPrinterType display names, PrinterStatus.toString, paper sizes, constants commit 8855ff340c4e29a945301969b8b325b97b67ef6e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:42:23 2026 -0400 test(fiscal): unit tests for TFiscalOperation/AppFiscalName enums and FiscalConstants timeouts commit d3d5210d3e518ab1bf07bc5f076382e17dba6ab6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:41:28 2026 -0400 test(printer): unit tests for PaymentDataParseFormatHandler.formatReceipt padding/stripping commit bcff15c48bfb85759c2649c487ddb9f279b3479d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:34:05 2026 -0400 test(printer): unit tests for PaymentDataParseFormatHandler paymentOperation/receiptV2/getQrData commit e81d3cb23350f9a222dfd59991ec14540b38a0d8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:32:03 2026 -0400 test(core/utils): unit tests for FallbackStorableEntry and nonnull extension commit 983b10e06774ed6c32b326ce8af5583cbb156ef0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:31:09 2026 -0400 test(local_server): unit tests for ServerCacheManager key generation, TTL, and invalidation commit cd8803f688a0355640d9af20aaac3e2abeb52663 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:24:54 2026 -0400 test(local_server): unit tests for CoreServerFunctions.dataQueryConvert stringification and idlink filter commit 04bd2821c5fe779285a9547ce7643e702f5e0687 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:23:51 2026 -0400 test(local_server): unit tests for CoreServerFunctions.addSocketDetails dedup and nesting commit 1c3e2fe1701bb3d6b818d7c919cfac9096f1410a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:22:31 2026 -0400 test(local_server): unit tests for CoreServerConstants sync sets, deny lists, and CoreStatus enum commit 4cbbcfd711c66f318c9f5dc25aff580fea5dc792 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:21:45 2026 -0400 test(local_server): unit tests for TOrderRemote json codec, nested tax/cookingtime lists, toJsonNotData commit 4d1d8463b1ca4e0f365a68322ffa9c613a09b339 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:21:03 2026 -0400 test(local_server): unit tests for DOrderRemote json codec snake_case mapping and defaults commit c58a7ce1078f442971e379ea600567abfac6d2a8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:13:45 2026 -0400 test(local_server): unit tests for TfRequestRemote and TfRequestTaxRemote codec + toJsonData commit 91b795084a2a06de1ffe0f3123af404fb74f99fb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:12:58 2026 -0400 test(local_server): unit tests for RTableDetailsRemote json codec and dtedit omission commit a3cbf399f411e96cfe6d81be36726d4c7aab7977 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:12:19 2026 -0400 test(local_server): unit tests for SStopListRemote json codec day flags and defaults commit 4051993415dc2d4f2a781b03a40831015ebc0738 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:11:41 2026 -0400 test(local_server): unit tests for TOrderCookingTimeRemote json codec including null dt and status commit 3ddd029b59bf9f78039a19ab48393cbeec41e9b9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:11:04 2026 -0400 test(local_server): unit tests for TOrderPriceTypeRemote json codec defaults and null handling commit 0beeebbb2c868076efbc0bbf8108421643ee2e3a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:07:07 2026 -0400 test(local_server): unit tests for TOrderTaxRemote json codec snake_case mapping commit 7b5616bd2954d848a0217ee9c1ed06495cfd4bf4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:06:24 2026 -0400 test(local_server): unit tests for TOrderDiscountRemote json codec + parentid cast quirk commit 4f3bfaec36bca0940e7d46b8679d9ae36dff7788 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:05:15 2026 -0400 test(local_server): unit tests for AuthLog json codec and mutable fields commit 7f0b05e1aae9b5ef1b781c49dba1983019599508 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:04:41 2026 -0400 test(local_server): unit tests for DfRequestRemote json codec defaults and legacy 'adress' typo commit 2b20d649ac145bc5e2b82faf09ef9fb7d5928102 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 02:01:25 2026 -0400 test(happy_hours): unit tests for HappyHour activeDays and activeTime getters commit 35ed567bd4b81533218e16b8bc9c1d133b803a56 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:56:20 2026 -0400 test(cash_in_out): unit tests for CashOperationDisplayItem.fromJson isIncome and FK lookups commit a07bf8e5985bc2ecf76da254fb47d82baa12ccf1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:55:37 2026 -0400 test(authentication): unit tests for AuthenticationState sealed hierarchy fields commit a0bb6dd4a7b67e961e976cf03afb6618151e766f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:54:11 2026 -0400 test(application_store): unit tests for ApplicationModel and ApplicationModelExtended json parsing commit 957a92e32aa862f397d917dac599fd10ecc775db Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:45:04 2026 -0400 test(kiosk): unit tests for SMenuViewModel isMainMenu and id-based equality commit eecc3868b394249640cd4b4b2da8ec7c33665fc8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:43:41 2026 -0400 test(access_types): unit tests for AccessTypesGroup empty/populated constructors commit 288aa2b6e7ff4de005e4afab3dc8911fc27bbcb9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:43:07 2026 -0400 test(access_types): unit tests for AccessType defaults, copyWith, and list equality helpers commit f6b9c6b585f0d065fd5f7808e07c26ba4b4c059a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:42:05 2026 -0400 test(discount_clients): unit tests for DiscountClientsState sealed hierarchy toString commit d597bd705391edca78ed25e1f75d5e30fe9941ba Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:38:38 2026 -0400 test(inventory): unit tests for CategoryProfile subcategoriesCount/itemsCount/copyWith commit c8b0f5db491dc6ca41d51f072bf42879df0aea94 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:33:51 2026 -0400 test(delivery): unit tests for DeliveryColorSettings.fromJson defaults commit 2f95a50e01992064bda9f7d0754b6d12ab2ac788 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:31:59 2026 -0400 test(gift_cards): unit tests for Balance and Factor4Balance codec commit 27976151415c1c11d6a86071cbbcb107c4ffd317 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:31:23 2026 -0400 test(gift_cards): unit tests for StandardHeader and Factor4StandardHeader codec commit 303204be9c1a752fa19c527ca2dbd5d7ea2bce98 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:30:56 2026 -0400 test(gift_cards): unit tests for InitiatorType/EntryType/StatusEnum codec commit 745ef312e5ddd756250bb57b089c1ae8a16016a6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:24:29 2026 -0400 test(gift_cards): unit tests for Identification hierarchy json codec commit 0bbc887c4144eb8958900cb4e8e86938dc726931 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:23:53 2026 -0400 test(gift_cards): unit tests for CustomerInfo + Factor4CustomerInfo json codec and fullName commit dd093cb96a8505e151d70b9702328d643e0c253c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:22:53 2026 -0400 test(settings): unit tests for SettingsLevel.fromLevel/fromData and level getter commit 1f35091ea5daeac4d38641f7dfb7847510c92129 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:21:23 2026 -0400 test(settings): unit tests for ToGoClientFields.fromValue string parsing commit ad2609dd5b90be37a0f49cb0df6a9f4ab8fd8cfa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:14:55 2026 -0400 test(transactions): unit tests for transaction screen enum declaration order commit e0d930d3c26cc29c91f64675de0bd4733ae75120 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:12:52 2026 -0400 test(reports): unit tests for BatchReportModel factory, isOpened, fromJson date/duration commit 4a44d76bfc717ec8514e2d3c85945ffbc68b6f8c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:04:40 2026 -0400 test(master_wizard): unit tests for getTimeZoneByZipCode prefix mapping and usTimeZones catalog commit ae1502efba1ef5d9159ed7904719f77ec45cb6f0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:03:07 2026 -0400 test(kitchen): unit tests for String.toColor hex parsing edge cases commit f982e70a8dfe92ba10bf3acdc8164a2fc8b4d318 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:02:18 2026 -0400 test(settings): unit tests for UpdateSettingsWithIdDto conditional id emission commit 536102b0db9462d8248c139837ceb912e5039c9c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:01:47 2026 -0400 test(settings): unit tests for UpdateSettingsDto partial update and markDeleted encoding commit 5582329ca58c2e11c36212a6bd7b6b9ea4b8f71e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 01:01:19 2026 -0400 test(settings): unit tests for CreateSettingsDto.withId and toJson snake_case commit f86d43b67427d9cffb4c3a635a8aa3542820a76a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:53:34 2026 -0400 test(inventory_exchange): unit tests for ImportProgressStage aggregation, entries, copyWith commit ce06293c2d32721b548c371418278620389178bb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:42:46 2026 -0400 test(core/utils): unit tests for DateTime startOfDay/endOfDay and formatQuantity commit debfed32b7cb662aeb1672ae6a2ea2b786d70235 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:41:33 2026 -0400 test(core/entities): unit tests for Dump fromString/toMap/toJsonString commit b3fac875fe016250c67a3c1d5cd1215d7bb0ae6d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:40:51 2026 -0400 test(core/models): unit tests for SplitCheck defaults and mutability commit adbc68d2b046398ee499c3087e7ede54bd5554ad Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:33:16 2026 -0400 test(core/models): unit tests for AIMessage nested content/text codec commit d078ac1059f8e259df5d20e3380afce22a0d3c85 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:32:36 2026 -0400 test(core/models): unit tests for ApiLog json codec and mutable field setters commit 3d6cb21c87b63936efa5bbc6878d690eb1ab750e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:32:13 2026 -0400 test(core/models): unit tests for IArea json codec, equality, copyWith, fromJsonString commit f4ed14f88fe10688d6cea5de12d62b09c1e8f7e1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:31:20 2026 -0400 test(core/models): unit tests for TWorkplace bool codec, empty-login omission, isThisDeviceSn commit 179541ae10dd963284ff60e2687fe8b5ab9ddd66 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:30:41 2026 -0400 test(core/models): unit tests for TTimePriceAp json codec commit cc40f50a100d057406c9b85a40a6c9b61832d640 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:22:39 2026 -0400 test(core/models): unit tests for TDiscountAP json codec pinning name<-isgroup quirk commit 70e583d4cc473965b8c901bde288237b00f09f2f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:22:13 2026 -0400 test(core/models): unit tests for TDiscountTime json codec with day flags commit 24f21ea65a9b9e77ee7c1fcb3cc6672f69b4d7c5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:21:50 2026 -0400 test(core/models): unit tests for TDiscountItems json codec commit 8d8006381ac6962e8841c46bdce9037fd467f5bd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:21:30 2026 -0400 test(core/models): unit tests for TDiscountClients json codec commit 3f3374a75bd9e4be98d820dbbf09b25a0dbaf846 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:21:11 2026 -0400 test(core/models): unit tests for STimePrice json codec roundtrip with day flags commit 977a3f21c087f1b9dce9329a99964d62550267b7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:20:47 2026 -0400 test(core/models): unit tests for TMenuItem json codec commit 1c816a17a3da6ab1d30a5eacacaeb47010f85ad7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:12:26 2026 -0400 test(core/models): unit tests for TMenuShedule json codec commit 5f8d714264967978f84d59cb8166ee6936d9fb0f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:12:05 2026 -0400 test(core/models): unit tests for TRightCategory json codec commit d3657a370746d09b20f8b5400ca24c8042645286 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:11:41 2026 -0400 test(core/models): unit tests for TRight permission defaults, codec, copyWith commit 47fa8ad5b9badba16bafba878c3a1bea150bb862 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:11:13 2026 -0400 test(core/models): unit tests for SShtrih json codec column naming commit b06a4eb6dae1aa59546aa274fc381e0ec153e385 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:10:49 2026 -0400 test(core/models): unit tests for TOrderDiscounts json codec and copy semantics commit 3c8f09aa7689968d971ddd850d883cd2609bf684 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:02:10 2026 -0400 test(core/models): unit tests for TTaxLocation json codec roundtrip commit 81cccf47a3aaaa70d3d1eb2edb274b0808d32bed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:01:50 2026 -0400 test(core/models): unit tests for TTaxRelations codec, copyWith, and dtedit=now() commit 9513245291dfaa61c0241367815510fdc45ecc84 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:01:28 2026 -0400 test(core/models): unit tests for TItemPrinter json codec commit 65f6b7405371c441351f706ac989be258f46b70c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:01:05 2026 -0400 test(core/models): unit tests for TEmployeeRole json codec commit ea8fa05f3afe248c1bce003bb03f198f33f69072 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Wed Apr 15 00:00:44 2026 -0400 test(core/models): unit tests for TEmployeeWorkplace json codec commit 12d11968e4dfce9426a02d9ec83e1595fe61608a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:53:02 2026 -0400 test(core/models): unit tests for TEmployeeInterface json codec commit 920c8e5c93744934c110d6c0e7675b284ad943fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:52:32 2026 -0400 test(core/models): unit tests for SPaymentDevice simulator/batch getters and copyWith commit f88e6b181fcc45877b980a89605e2078c6fd686e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:51:23 2026 -0400 test(core/models): unit tests for STypeInout bool codec and always-now dtedit commit f147ed8e59c1a42255230c6cc8706a1edd4e6542 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:50:43 2026 -0400 test(core/models): unit tests for SSubdivision json codec pinning parentID asymmetry commit 0935e324ae0f0e26ebf789ff06e31c8679ba782f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:43:51 2026 -0400 test(core/models): unit tests for SPosition json codec commit f59a9876d238ef422f8bc0778f57074fb90735c5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:43:26 2026 -0400 test(core/models): unit tests for SEmployee fromJson defaults, toJson, and id-only equality commit 260dea8480cd3fade7f6fc2814817e8fe4ddd612 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:42:55 2026 -0400 test(core/models): unit tests for SClient json codec and PhoneNumber sanitization commit 81993e87c7d05696823d882fb29959f7e049507b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:42:21 2026 -0400 test(core/models): unit tests for SAddress fromJson/toJson with null field preservation commit 14f605a8bdc6e755352819824615a2ce396d10dc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:41:19 2026 -0400 test(partner_portal): unit tests for UserAccessList isEmpty and singleOrNull commit 8f37c93e22170541d3a9e6cdc7d49b15650a7d09 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:40:20 2026 -0400 test(partner_portal): unit tests for UpdateMerchantFormData copyWith semantics commit daed4d1a159a2f33e076907d8fa115f4d0f89d2a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:37:34 2026 -0400 test(partner_portal): unit tests for PartnerAccessGroupIterableX.applyValues commit 0343981a78dffde46a9d3d0ee37fc488ad04f317 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:37:11 2026 -0400 test(partner_portal): unit tests for PartnerAccessGroupCodec with nested children commit c9eda18d6e2491b688e2014da8b4daea263af667 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:36:42 2026 -0400 test(partner_portal): unit tests for PartnerAccessValueCodec encode/decode + error paths commit db05a2a0b6e8a3ffcb02ab324526d8216448808e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:36:06 2026 -0400 test(inventory): unit tests for UpdateTTimePriceItem toMap field omission commit c5276798384d2f333fc5401bb1b17ea616410ff2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:35:30 2026 -0400 test(inventory): unit tests for UpdateItemTax toMap bool encoding commit bf5c4a8094bdde861519b3581d026f0ff3fb154a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:35:09 2026 -0400 test(inventory): unit tests for UpdateItemPrinter toMap bool/int encoding commit 1c5c4936baf07fa1cfe312daf1326ad8a50655b7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:34:37 2026 -0400 test(inventory): unit tests for UpdatePicture toMap snake_case field omission commit e99ddded85004d5311833bf40de080d91acc110f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:34:14 2026 -0400 test(inventory): unit tests for CreatePicture fields, mutable name, and toString commit 50ac98a6d6a3a4a8a912cf1cc8af343f0060243c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:33:29 2026 -0400 test(partner_portal): unit tests for UpdatedSubpartnerInfoDto fromJson with parent_partner_id alias commit 2bae5c2c1b88a17dafe4304c73f690682b4d5c89 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:33:04 2026 -0400 test(partner_portal): unit tests for PartnerAccountOwnerDto json codec commit 294b4e423d20b0ed068cea3b091863fe191f7c6a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:32:20 2026 -0400 test(access_pin): unit tests for PinValidationResult equality and toString commit e0443b430694f0aff5e8863639a44db9bf1c8e1d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:31:59 2026 -0400 test(access_pin): unit tests for AccessPinState sealed hierarchy equality commit 6a21d2081ff8b4c300fbe69a9b4d6bc108e170c8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:29:30 2026 -0400 test(access_pin): unit tests for PinEncoder.encodePin determinism and format commit 2905ffdfdcc3861987d96cd6eb2f892fa197dfa3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:27:07 2026 -0400 test(reasons_and_notes): unit tests for CategoryItemsState sealed hierarchy commit 9ae1127b2882d9d82214a18170d076166c5a680e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:26:26 2026 -0400 test(reasons_and_notes): unit tests for NoteModifyState sealed hierarchy commit 45955bb32318887e40e89208b586dbf47ee40248 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:25:23 2026 -0400 test(reasons_and_notes): unit tests for NoteCategoryItem and SNoteItem equality/copyWith commit 6afcc23a28df73147489c96a06f4ea9580a81750 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:24:03 2026 -0400 test(reasons_and_notes): unit tests for NoteCategory.fromItemId and categoryId mappings commit 18daee2feef9407afcaf6ed0ebb1413c011e4a0b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:23:25 2026 -0400 test(reasons_and_notes): unit tests for NoteDto fromJson/toMap/equality (id-only) commit 87f4ab37512d8bef3cb6e887047db39623a09e4d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:22:09 2026 -0400 test(inventory_exchange): unit tests for ImportedTableValidator$ColumnDuplicateDisorder commit dd928f505ee9718483f650a0a36bdcd6c79f9cca Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:20:35 2026 -0400 test(inventory_exchange): unit tests for ChunkProcessor, BatchRange, FutureState commit faad5d7ba6ec0183a383e77c9fde07b3d1130b8e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:19:04 2026 -0400 test(inventory_exchange): unit tests for InventoryExchangeCodec$TaxRates decode/encode commit d23052a54b3acb30f2991a5ef384f6fdca3593a5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:17:59 2026 -0400 test(inventory_exchange): unit tests for MatrixTranspose extension (transposed/lock) commit 8465df4ca1d1ab20522c5b436951910dab311a84 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:17:17 2026 -0400 test(inventory_exchange): unit tests for SheetValidationException sealed class commit a53a84ac23426edee3343b7452c36d4c774608fe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:14:36 2026 -0400 test(inventory_exchange): unit tests for ImportDraft/ImportContentDraft/isEmptyDraft commit b8813cd7627fe842f76538ea40b70ff1b9fd084f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:13:44 2026 -0400 test(inventory_exchange): unit tests for ImportingProcessState and ImportContentProgress progress math commit cf632c59ed21a6428e602be036459faddc79570d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:12:31 2026 -0400 test(inventory_exchange): unit tests for ExcelDuplicateDescription equality quirks commit bc015ae4bcaecbca3025adcfaeeb421d8296147a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:11:34 2026 -0400 test(inventory_exchange): fix ExchangeTaxDto.toJson test — type field is not emitted commit 58aeb9531eaf5db36c50b9dea9dcc0b842a24898 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:11:09 2026 -0400 test(inventory_exchange): unit tests for ExchangeTaxDto.fromJson/toJson commit 451237350192d6d5f86402a379bb3607eb888686 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:10:37 2026 -0400 test(inventory_exchange): unit tests for ExchangeModifierDto and ExchangeItemModificatorPairDto commit e90c610e4db57d1066135bf1056d239d58e44210 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:09:54 2026 -0400 test(inventory_exchange): unit tests for ExchangeItemDto and ExchangeItemCategoryPairDto commit b9bdd3a58becd32420627a0427066af572bd7b69 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:09:14 2026 -0400 test(inventory_exchange): unit tests for ExchangeContentKind.excelSheetName commit ef41411a58f759baf01bafe3c39fe2d6c4680688 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:08:16 2026 -0400 test(inventory_exchange): unit tests for Item equality (id OR name) and copyWith commit 610b5dfb38cebe10d3f1c48bc00602fd0121b923 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:07:23 2026 -0400 test(inventory_exchange): unit tests for Category and TaxRate model equality commit fc6c84eab303ee7d88fa3bfd186e023f50a32df8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:06:44 2026 -0400 test(inventory_exchange): unit tests for Modifier$Group and Modifier$Item equality/toString commit 5ad04784bde63d8da9f89cd22b51fa59d4694e8a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:05:32 2026 -0400 test(kiosk): unit tests for SalesItemViewModel menu/fromJson/stock/itemId commit e3a42a8b0e1dbf8a8b725db027c2753b7f3f88cc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:02:54 2026 -0400 test(kitchen): unit tests for KitchenOrder.orderStatusFromKTOrder priority chain commit cd578ad53a1864a471febd9d4b88adacac87ded8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:02:04 2026 -0400 test(happy_hours): unit tests for EditHappyHour hasChanges and toMap commit afcce308f08c1e9d81b3af45d239cb21c1bbd057 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:01:17 2026 -0400 test(happy_hours): unit tests for AddHappyHour.toMap null omission commit a362a22e42dba06e600e1085fa95130a7d23dbab Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 23:00:22 2026 -0400 test(happy_hours): unit tests for SetTextExtension/TimeOfDayFormatting/DateTimeFormatting commit 21a0b3a209d8c73cb86662c8c739aa9d36fa99ea Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:59:32 2026 -0400 test(happy_hours): unit tests for TTimePriceAP fromJson and Create/Update DTOs commit fb133026ce04fe2a78e158f6301325180def2a5c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:58:33 2026 -0400 test(transactions): unit tests for TransactionViewModel totals and copyWith commit d5169d929bcfc8803070463e47eb6d74069c9e72 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:57:08 2026 -0400 test(usecases): unit tests for OrderTypeCount.fromList padding logic commit c9d1bb8f83f6e5c53100846f5466dbec8563b9e0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:55:54 2026 -0400 test(order_list): unit tests for OrderListPayment.fromPriceType void logic commit 3d98ecc52750bb6764570233b2468ad2f58aaf2e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:55:08 2026 -0400 test(order_list): unit tests for OrderListType/SortType enum surface commit 9271d00684ad9c291a1ae14c05a78dbd65fa6ce6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:53:57 2026 -0400 test(utils): unit tests for FiscalizationUtils.orderHasFiscalPayments commit 5f2d10692db55e4c91ae5abb5d4198a9e027e04d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:50:47 2026 -0400 test(utils): unit tests for FunctionCodec/CastCodec/Json typedef commit 312cdbf156c098c4cd73b89718763e8bb4b66ae6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:49:59 2026 -0400 test(utils): unit tests for FieldInputValidator$Common.zipCode and login commit 8034080d35f42a399ea2708abb979b8f9198419d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:49:27 2026 -0400 test(utils): unit tests for FieldInputValidator$String$Mask filled/not-filled branches commit 3b9ef66c0bb636feebcf41aa582f3868f23fed11 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:48:53 2026 -0400 test(utils): comprehensive unit tests for Email/Length/Regex/Sequential input validators commit 282489a7095d8cd2db6e16cb49f64f0730c4d75d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:47:26 2026 -0400 test(partner_portal): unit tests for Update/CreatePartnerInfoFormData copyWith/initial commit c1e717ea6a56f090f8bb7c899a657e8142bcccac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:46:52 2026 -0400 test(partner_portal): unit tests for PartnerInfo.deleteIsAllowed and toString commit e3ba9a6aff9db988ee993e4b0cb31e99d8916ac0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:45:27 2026 -0400 test(partner_portal): unit tests for Partner.hasSubpartners and PartnerMeta.toString commit 67f0ee9a9f940f2f9268b7e833ddbae72f1433cc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:44:21 2026 -0400 test(partner_portal): unit tests for InvitePartnerEmployeeFormData.copyWith commit cc1afeeba878725b63ad33cbfd4dc4ad958299e7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:43:51 2026 -0400 test(partner_portal): unit tests for PartnerEmployeeCodec encode/decode/roundtrip commit 578f8e0064bb8a2e34b5d2418abf7b1bec368f80 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:43:14 2026 -0400 test(partner_portal): unit tests for PartnerAccessTypeProfile delegation and deleteIsAllowed commit 8c639958446b9469322a71b4efe707b1175902a2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:40:57 2026 -0400 test(location): unit tests for Country/Region/City/LocationDto fromJson/toJson commit ded219989b54cfaaa9a71ed9eef165741cc79b34 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:40:03 2026 -0400 test(location): unit tests for Location.copyWith/toString commit 800c78cec19ee621cf8e4c5ec907237549bec78b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:39:26 2026 -0400 test(location): unit tests for Timezone.value and availableFor country gating commit d23f68de34926768c9c026f0af0b74666c671bf7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:38:36 2026 -0400 test(location): unit tests for Country/Region/CityUnit equality and CountryId named ctors commit ef53100812eec28b8ede51d6ef637fb1f5f28718 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:38:01 2026 -0400 test(location): unit tests for Address.initial/copyWith/toString commit d7d6596dd9ef09edeaa5466b503735bdffa3f676 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:37:12 2026 -0400 test(partner_portal): unit tests for MerchantStat.fromJson and ActivitySummary percent helpers commit e0c8ffe5579c0b91cd2c035d112637603451b219 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:36:29 2026 -0400 test(inventory): unit tests for ErrorNotification equatable props commit a983c0d49401a935ae70930ee1abeb93f9ba3eae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:35:59 2026 -0400 test(inventory): unit tests for ModifiersListColumnType compareTo/toString commit e323e7b1f4c112aa067915138806a39725e95dd8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:35:29 2026 -0400 test(inventory): unit tests for AddEditCategoryForm validation and copyWith sentinel commit 3bffe0de07e35d2589cee25094d9e395ab2f17f8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:34:58 2026 -0400 test(inventory): comprehensive unit tests for AddEditItemForm validation and happy-hour helpers commit f7529a2db7c40593b272b62c106c06128480c1ed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:33:51 2026 -0400 test(inventory): unit tests for SModificatorSItemsLink fromJson/toMap/copyWith commit b7df83e2538939c35ac29dc502603a350c3b8bb8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:33:10 2026 -0400 test(inventory): unit tests for Create/UpdateCategory toMap and hasChanges commit d1eadeb707f23f111c6d9c72cc11d29ae2aa21a9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:30:55 2026 -0400 test(inventory): unit tests for UpdateItem toMap/hasChanges with priceSet/markColorSet sentinels commit 4f673f47098db48b7f2eced9f4a2e9d7d21c2c34 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:30:18 2026 -0400 test(inventory): unit tests for CreateItem.toMap field emission rules commit f506c3a3a8f9d4f5918089e1777c1f19f15238a0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:29:42 2026 -0400 test(inventory): unit tests for TTimePriceItem fromJson and Create/Update DTOs commit 0c0e1ecd61b72b3bdb2d0197596dbd6152bbafec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:28:42 2026 -0400 test(inventory): unit tests for CreateItemTax and UpdateItemTax DTOs commit acdc286426e73d33370a7f4d43f1d1384c2e4fc6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:27:30 2026 -0400 test(inventory): unit tests for CreateItemPrinter and UpdateItemPrinter DTOs commit 692d42ae1f1c59ece989a1308751d13594035729 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:26:54 2026 -0400 test(inventory): unit tests for CreatePicture and UpdatePicture DTOs commit 117487c53ee51b4072d66c6e0d5c0d939a4d3339 Merge: 56fa72c168 c057aa1678 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:23:18 2026 -0400 Merge branch 'NewOrderBloc' into dev commit c057aa167861a1f25a0bbf5393e60e89f6fade5a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:20:48 2026 -0400 test(partner_portal): comprehensive unit tests for PartnerAccess codecs and applyValues commit f23893d9f661426e65fd8aab786069e377a36453 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:19:56 2026 -0400 test(partner_portal): unit tests for PartnerAccessTypeDto and employees list commit 98a7d4f5ca2d081285e28d8c6d2bb6fcd60ab7f8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:19:24 2026 -0400 test(partner_portal): unit tests for PartnerAccess and PartnerAccessGroup DTOs commit a4324fefc2c6d9157f8b8c7d5c141a5ca54609f2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:18:52 2026 -0400 test(partner_portal): unit tests for UpdatedPartnerInfo/UpdatedSubpartnerInfo DTOs commit f4f3d045045370feda1e792cff0b090b190d70b5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:18:18 2026 -0400 test(partner_portal): unit tests for AllPartner/AllPartnerAccount/AllPartnerPortalDataDto parsing commit aecf5602da5a1549c3a2207e94081a75d2adb9c9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:17:38 2026 -0400 test(partner_portal): unit tests for PartnerAccountDto and PartnerAccountOwnerDto commit 268bdc48e3666ddb9d8c5779d72e9941f37316e8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:17:03 2026 -0400 test(partner_portal): unit tests for UpdateSubpartnerFormDto includeIfNull commit c9f46c45c693c2273770b2c1242f03cf70d76aa8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:14:17 2026 -0400 test(partner_portal): unit tests for UpdateMerchantInfoDto includeIfNull + fromJson commit 60b91425a0d9c79aa14e06e0f2f2e055a3af47f1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:13:46 2026 -0400 test(partner_portal): unit tests for UpdatePartnerFormDto includeIfNull behavior commit f7968d50ccfeb0bcf548a69889af8b1e7a88e015 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:13:17 2026 -0400 test(partner_portal): unit tests for PartnerInfoDto parent_partner_id mapping commit 2f7e8fc0551db192d28eb1e7ae8b1cc3d88dcc53 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:12:42 2026 -0400 test(partner_portal): unit tests for PartnerRegistrationFormDto snake_case roundtrip commit 23d4f1ea7f4b801bfbf887d11bc52a14b794cacd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:12:17 2026 -0400 test(partner_portal): unit tests for PartnerDto recursive fromJson/toJson commit 95e3132d62d4af89c6b97d4e6b4b3c49b97f0f19 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:11:44 2026 -0400 test(partner_portal): unit tests for MerchantInfoDto is_test int-to-bool conversion commit 3677b014951251876701686f056ff421408b2159 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:11:12 2026 -0400 test(partner_portal): unit tests for AuthSessionDto.fromJson commit 2bc6e2cb00aa771e5292be33dd5c3c0d2b48aae0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:10:46 2026 -0400 test(partner_portal): unit tests for UserAccessListDto and nested DTOs commit 2a60413fd06788e245b851fafa73079de9570ee2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:09:54 2026 -0400 test(partner_portal): unit tests for AuthSession compareTo ordering and subclass fields commit 0caf96ad2ec39d2d973e9e8296be26aec8e50f5d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:08:47 2026 -0400 test(partner_portal): unit tests for UserAccessList isEmpty/singleOrNull/toString commit c594fbeb9590ac4006c747d92dcd4e923498b890 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:07:53 2026 -0400 test(partner_portal): unit tests for PartnerPortalPermission enums and isGranted commit 340d1c711eba3a2e9dbfdb85c61bca8b7b1440ef Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:07:04 2026 -0400 test(models): unit tests for ICBaseConfig fromJson/toJson/equality commit 5e69bb986ed026bde39ea5e8d222e5bb54e645ae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:03:51 2026 -0400 test(models): unit tests for IAreaObject fromJson/toJson/equality commit bf5e1cf88cbf05695daba9a73fd1ccacf0216e51 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:03:03 2026 -0400 test(models): unit tests for OperationReason.byKey and LogOperation parsing commit 53d969d0a8b1cba44770f742fb0d72e5a3936e5a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:02:24 2026 -0400 test(models): unit tests for PrintQueue fromJson/toJson omissions commit 13b1d174ad030005e588754bfaaf226cf58056e9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:01:40 2026 -0400 test(ui): unit tests for BottomStatus error/close/print factories commit 21f6b487334885e5540b903be3e3cf2917bb3d75 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 22:00:56 2026 -0400 test(ui): unit tests for StopListEnum.getStopListEnum decision tree commit 4c090d02e3a43b20a6acd9cb42e28fc29357cd64 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:59:30 2026 -0400 test(reports): unit tests for DualPricingReportModel.fromJson commit 947b552d4b30a2f3f896ed0021a5f0172596b514 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:58:48 2026 -0400 test(kitchen): comprehensive unit tests for KitchenOrderItem logic commit c132d3156ed1b7534b7f8e641357d47299b36eb2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:57:22 2026 -0400 test(support_request): unit tests for CallMeState sealed class equality commit 3b942051a60459bd47cc86092589b43bd4717892 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:56:23 2026 -0400 test(terminal): unit tests for FreedomTransResponse fromMap/toMap/constants commit 842ba8d02d231b2f96c7b2c4ff44207116c306ae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:55:53 2026 -0400 test(terminal): unit tests for HalykTransaction and HalkTransactionResponse commit 7e71bb05edaffe144e6ad987eee581a5cfd97fca Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:55:19 2026 -0400 test(terminal): unit tests for TerminalResult success/error factories commit bd1570b656582a82c0e4c0ab428dd45baa508da9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:55:00 2026 -0400 test(terminal): unit tests for DisconnectionResult sealed class commit 9c052c7b8dbe34d011a9c090d173ebb2e40865cc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:54:08 2026 -0400 test(table_service): unit tests for CapitalizeFirstLetterFormatter commit 264ee1cc2e566d57f60fdc6675702eed36d8d384 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:53:23 2026 -0400 test(inventory): unit tests for Item.fromJson and select columns commit 5851622a2a3d8ac7e1b3bcf320eaaf5fc6d34bdc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:52:46 2026 -0400 test(inventory): unit tests for Picture fromJson/toString commit 0322fc0a0e3c549bdba50612db9d4bd3c9885a2a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:52:21 2026 -0400 test(inventory): unit tests for Modifier fromJson and select columns commit 5c09e4a80bec7a7cc8a8a59aaab1c67d4cd1a15b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:51:48 2026 -0400 test(inventory): unit tests for Tax fromJson/toString commit bf4a2d3e3151cb376ba4825a3580713b3b649a8a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:51:25 2026 -0400 test(inventory): unit tests for ItemPrinter fromJson/copyWith/toString commit 8bf4a72262bf54258cde35d3228dbd4705473296 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:50:56 2026 -0400 test(inventory): fix NDS id/idTax assertion swap commit 5e7fa0e23eb5da1fc5bd23c7358ed263fdf63ed7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:50:26 2026 -0400 test(inventory): unit tests for NDS fromJson/copyWith/toString commit 44272b702301a844a29a9354339ff8de5581c923 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:49:51 2026 -0400 test(inventory): unit tests for Image defaults/copyWith/toString commit 23ddf2c96c7063fbadc71d868349027aa3aa1333 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:46:46 2026 -0400 test(inventory): comprehensive unit tests for SItemQuery.toSqlConditions and copyWith commit 480ddaba2244c6836923176a1a2e5a1362035e55 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:45:48 2026 -0400 test(inventory): unit tests for CategoryFilter.toQuery/copyWith commit 435d9924fd5b75bd11e4c9bda3aeca4f60204310 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:45:29 2026 -0400 test(inventory): unit tests for ItemFilter copyWith sentinel semantics and toQuery commit 625f16f2b7c81a28381d28b49ac393e34614f88d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:44:50 2026 -0400 test(inventory): unit tests for IListReorderExtension.reorderAndExtractIds commit da9738bd5acf1b191e2b3d3ab6b94789378f7b25 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:44:14 2026 -0400 test(inventory): unit tests for BarcodeGenerationUtils.generateEAN commit c5fa82eccdff0f402ed27408fe825ddde48ca3bd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:43:22 2026 -0400 test(reports): unit tests for DualPriceFeeModel.fromJson commit 8d2d44dbdaf7e4793c493ebdf39777f8c2bb814c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:42:19 2026 -0400 test(reports): unit tests for CardTypeSummary.fromJson commit 2b8366706285bbdf8bb61003157f65df09604c2a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:40:01 2026 -0400 test(delivery): unit tests for DeliveryBtnType level and next transitions commit 4dcc5e0a97dea91474cbe0dffb03f05a5051a7fb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:39:32 2026 -0400 test(kitchen): unit tests for ColorExtension.toColor hex parsing commit ff70a565749782b17462141c7fec155d4063350e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:38:43 2026 -0400 test(models): unit tests for MesSocket fromJson/fromMessage/toJson commit b55c9d12ac18e487990f71c1261c67e62a4b9d20 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:38:11 2026 -0400 test(settings): unit tests for CheckoutTaxFeesModel fromJson/toJson commit b6aa8c57ab63638be9b24cb54a03936c5007c1ce Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:37:44 2026 -0400 test(settings): unit tests for KioskRequiredOption and KioskRequiredOptionsModel commit dd2102d779599eb99adb6e183a09464f094136bd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:36:51 2026 -0400 test(settings): unit tests for TipMoment/KitchenReceiptVoidOption/ReceiptHideModifiers/ReceiptPrintOption fromValue commit fc5dfb0fdfe000910f0efbd8ed69e04b04d2402a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:36:15 2026 -0400 test(settings): unit tests for BanknoteNominal.getQuickCashList commit 9ce814bb5a9e8c54f45b021aef365f8828cb7d56 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:35:43 2026 -0400 test(settings): unit tests for ShorebirdAutoUpdateOption.fromValue commit a49258b160160ef45ea13c63652e02a331b857ec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:35:12 2026 -0400 test(settings): comprehensive unit tests for ReportTemplateModel and codec commit 54223ac585375cb6cb910f015fa35421893f3141 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:34:34 2026 -0400 test(settings): unit tests for SecondCurrencyModel commit ff65e4e8cd9ba8b0a43d05d86323b59651a95de0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:33:37 2026 -0400 test(models): unit tests for SNotification fromJson/toJson commit c1008846f78f86aba25fe11df991f14f23252cec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:33:10 2026 -0400 test(models): unit tests for SMenu empty/fromJson/toJson commit 7b5805650f5bdb4b9cc36b75aea234654bf359ae Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:32:42 2026 -0400 test(models): unit tests for SUnitMeasurement fromJson/toJson/copyWith commit 691268f946cbfa89500f4cb1563336e4ba27a72b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:32:16 2026 -0400 test(models): unit tests for SStopList fromJson/toJson/defaults commit bfcbe8409d05025e44d6775dc5752112d302a3c0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:31:46 2026 -0400 test(models): unit tests for SPicture fromJson/toJson commit 2c62d940354f823dd358444838ad90e88438ce75 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:31:18 2026 -0400 test(models): unit tests for SObject fromJson/toJson commit 4aacd888ba3f1919f5515db0bfdd9bc3d7ba478f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:30:42 2026 -0400 test(models): unit tests for ZSyslogModel fromJson/toJson commit e9840bd42fa26956331d75e4649768e05acbead4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:28:15 2026 -0400 test(devtools): unit tests for PrintTimingLogResult data class commit 97c746ff85b26c23c7ddae674f95b3864e1e4e90 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:27:51 2026 -0400 test(devtools): unit tests for OperationLoggerService session state commit 26e935c2dfab33877500ef77664b19238f5e914e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:25:47 2026 -0400 test(utils): unit tests for AppActivityState active/inactive transitions commit 69dc220af3d210116707560025f58fd33b9de768 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:25:24 2026 -0400 test(utils): unit tests for ReportsUtils singleton and init commit 7e5340dae9d6e26153eca8e29eb9492a5c4fa114 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:24:57 2026 -0400 test(utils): unit tests for TestModeDetector flags and auto-detection commit 764acd736d508ea42cca5f07c57f4d2e78d2543f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:24:09 2026 -0400 test(utils): unit tests for DecimalDigitsUtils singleton and init commit 523e52dbc860812e579b35d9e40d1736800f7a04 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:23:47 2026 -0400 test(utils): unit tests for MapUtils.mapsAreEqual commit b00f908684d6d38c4fd3002eb728a653e53d0003 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:23:17 2026 -0400 test(utils): unit tests for CurrencyUtils singleton and locale lookup commit 7577ff57798b1518b041982a537c04c97e06e097 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:22:25 2026 -0400 test(shared): unit tests for OrderInfo static getters/setters commit fb146c4d84768aeba89e7e61ff744d576dcdf3ac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:21:45 2026 -0400 test(kiosk): unit tests for Validations.isEmailValid commit 26240d2e6db822b196e6a448e1539c4ec355df08 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:21:10 2026 -0400 test(fiscal): unit tests for FiscalResult defaults and enums commit 4ca102168684c85a8a86c30c1ee645301454977f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:20:39 2026 -0400 test(fiscal): unit tests for FiscalFunctions convertToBillCoins/billsCoinsToDouble/addPaymentData commit d83a9c50927a4cb0f3d11d4b2d03c10c61cf04ad Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:19:32 2026 -0400 test(common): unit tests for NotEmptyString extension commit caa5339542283ddd4878aeb2b312d2beef78c2f9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:19:01 2026 -0400 test(common): unit tests for Result sealed class and ResultExtensions commit 3d35a40d488eb688ded68896738e5adf034f8758 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:18:16 2026 -0400 test(entities): unit tests for ZLog fromJson/toJSON with date fallback commit c4c0c2321589f3ccce7bbf551ff786663e7fb482 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:17:46 2026 -0400 test(entities): unit tests for SDeviceData fromMap/toJson/copyWith commit 1b36a3ef25730ee366baac167d205d16da98104b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:17:07 2026 -0400 test(models): unit tests for TTax fromJson/toJson commit 2cfa5ba0948a28f1419b9bd09a71459a3b0fd1f5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:16:27 2026 -0400 test(models): unit tests for SRole fromJson/toJson/copyWith commit ba8aacde98d5512f95b62929c0dc3e2f3383c696 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:13:02 2026 -0400 test(models): unit tests for AccountInfo fromJson/toJsonForSharedDb commit 6547c552f0611ed56c3a0b957f57a46125f8fa62 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:12:06 2026 -0400 test(models): unit tests for SCash fromJson/toJson commit 28f9412fa12030d273714b1f9f88fac7eb448692 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:11:30 2026 -0400 test(models): unit tests for TLoyaltyTransactions fromJson/toJson commit a7abc43a59d91f59debac6fca08ad8aeb4442020 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:10:52 2026 -0400 test(models): unit tests for TLoyaltyRewardType and TLoyaltyRewards commit 0bffd44da3a5fa94fd7040f4d7ca2773a34d8d57 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:10:21 2026 -0400 test(models): unit tests for SplitModel fromMap/toMap/fromJson commit ff1a59211d5d48d9d5425e9d34047296268fb8bb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:08:09 2026 -0400 test(models): unit tests for SOrganization fromJson/toJson commit ac6820990dffc3c846430f200ed518eae4c73ff0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:07:32 2026 -0400 test(models): unit tests for SDiscount fromJson/toJson/defaults commit 59e133b8d1b3e53162c94b5d80c6a25d0db9d367 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:06:49 2026 -0400 test(models): unit tests for ApiRequest fromJson/toJson commit 737b6dfbbc26a26cfa312bbc6c7c666728d1d938 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:06:15 2026 -0400 test(models): unit tests for SMark fromJson/toJson/copyWith/empty commit 48e14220e5ae293fa11325b1732aef3ca35c3e2d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:05:46 2026 -0400 test(models): unit tests for LoyaltyType and SLoyaltyRules commit 5a452bea0d3316f0cb1d90b50d71b9627adf84cd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:05:11 2026 -0400 test(models): unit tests for LocalserverSettings fromJson/toJson commit 89c04808a794e6c223d89fd055ffd7f8f9263f6a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:04:35 2026 -0400 test(models): unit tests for DashboardParams.params commit 6de1f19b257ee46ba8ad55a2ab4cf61129e7db59 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:04:11 2026 -0400 test(models): unit tests for DURVTransaction factory/fromJson/toJson/equality commit fee69f8bfd7b4b640ca7dec5b26f86b40f8e4e38 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:03:28 2026 -0400 test(models): unit tests for CBaseConfig fromJson/toJson/copyWith commit b79926a70870964a20eb7486efe793e5db4bc790 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:02:47 2026 -0400 test(models): unit tests for TOrderCookingTime factory/fromJson/toJson/copy commit 1a577ae6100ad2fff6f6ca5cdb97af49dc42e88d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:01:53 2026 -0400 test(models): unit tests for DCashOutcome fromJson/toJson commit 4f0cf0685f8683a511107140f30731ac9403d6a4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:01:31 2026 -0400 test(models): unit tests for DCashIncome fromJson/toJson commit 6e251cfd7ea696c99eb8cfbe33ad1e937152900b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 21:01:00 2026 -0400 test(models): unit tests for DChange fromJson/toJson commit cdd5190b574bda537038000aeb75e9601c305b93 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:59:39 2026 -0400 test(utils): unit tests for DecimalExtension correct/correctDecimal commit cdd858c98f0ba89881a5460e630077e943e8c100 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:59:03 2026 -0400 test(order): unit tests for TOrderMath.sum commit 7990c4dd21944010daa214c68fd99025845c3899 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:58:17 2026 -0400 test(order): unit tests for CalcResponse empty and copyWith commit 1df901c3b77a14ea8f3ae6d57ec68ed11ca2ac3f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:57:27 2026 -0400 test(utils): unit tests for String and ObjectString extensions commit 225c773239cec6c4a3abf0dab5f7eeb9e0c593fd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:56:48 2026 -0400 test(utils): unit tests for PlusPrefixFormatter commit 2f7f9c891c6a8ae7fb641ade25b00fd95197d1dc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:55:45 2026 -0400 test(printer): unit tests for FiscalReport.fromEposKassa and toJson commit c4951217ec36ca0ad9c137c43bcdce02c5c0c1ce Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:55:11 2026 -0400 test(printer): unit tests for FiscalReportSumSale factories commit d45c845ad133e4188ca0bd4d49c00ac3a383a01c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:54:37 2026 -0400 test(printer): unit tests for FiscalReportSumShift commit d9a8f2a087873817ef4990117c927b2412b58553 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:51:49 2026 -0400 test(printer): unit tests for ProductLabelData.toJson 2 cases: full field serialization under 'content' key, and empty-string passthrough. Phase 6 ongoing. commit 08911c386b1b7c5475843c99338d6494451727c1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:49:36 2026 -0400 test(models): Phase 3.11 regression tests for AOrder.appendPayment 4 cases covering the Phase 3.7 method: - appendPayment adds a TOrderPriceType to tOrderPriceTypes - multiple appends preserve insertion order - legacy addPayment setter still works (deprecated alias) - both APIs target the same underlying list commit 74f008eac26ff1b50bdb9c39bd248f23fbb71832 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:46:32 2026 -0400 test(order_checkout): Phase 3.11 regression tests for getTOrdersAndModifiers 5 cases covering the Phase 3.3 id-based dedup fix: - flattens parents + modifiers into a single list - dedupes by id — regression guard that the .toSet().toList() identity bug does not return (two distinct TOrder instances with the same id must collapse to one) - dedupes when a modifier id collides with a top-level parent id - empty input yields empty output - preserves parent-then-modifier ordering commit af3f831784d88c5420a031d3d993860def64b7ba Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:45:57 2026 -0400 test(models): Phase 3.11 regression tests for TOrder.copy modifier parentid 4 cases covering the Phase 3.2 fix: - newId propagation: modifiers receive a brand-new id AND their parentid is rewritten to the new parent id (regression guard) - no newId: modifiers keep their original parentid unchanged - explicit modifiers override: the override list is used but parentid still gets rewritten to the new parent - empty modifier list stays empty Guards against re-introducing the 'forgot to update modifier parentid after TOrder.copy(newId:)' footgun that previously required 3 call sites to manually patch parentid. commit 6d8a0e9a4bbe0cf682619b0d30779ac6af8a93d0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:44:53 2026 -0400 refactor(models): Phase 3.7 AOrder.appendPayment method Replace the legacy `set addPayment` with an explicit `appendPayment(data)` method. The setter survives as a @Deprecated alias that delegates to the new method so the ~8 existing call sites (terminal / kiosk payment flows) keep working without changes. New code should call `aOrder.appendPayment(priceType)` directly instead of the setter-that-mutates-a-list footgun pattern. commit f7b0be7752b20b65a425f5c88539d5948493c50a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:43:15 2026 -0400 feat(error): Phase 4.4 AppResult sealed Result variant Additive alternative to the existing Result/Failure sealed class whose failure branch carries a typed AppException instead of a free-form string. New code returns AppResult so error boundaries can exhaustively pattern-match on AppException subtypes. Types: - AppResult (sealed) - AppSuccess(value) - AppError(exception: AppException) Extensions: - isSuccess / isError - getOrNull / getOrElse / getErrorOrNull - fold(onError, onSuccess) - mapSuccess(transform) — preserves errors unchanged Migration helper appResultFromLegacyResult wraps a legacy Failure string into AppException$Unexpected so the two worlds can coexist during the migration. 18 unit tests cover AppSuccess/AppError value + equality, extension methods, map/fold semantics, legacy wrapping, and sealed-switch exhaustiveness. commit 7678950de9f7530a7c7d08f92034dab10f93481c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:29:01 2026 -0400 feat(error): Phase 4.1 AppException sealed hierarchy Additive foundation for Phase 4 error system unification. Introduces a sealed `AppException` with 10 typed subtypes covering the categories the codebase actually needs: Network / Timeout / Server (statusCode) / Unauthorized / NotFound (entityType, entityId) / Validation (field) / Conflict / Cache / Cancelled / Unexpected Every subtype has: - A stable `code` getter for telemetry - Optional `cause` + `stackTrace` fields for exception chaining - A `toString` that embeds runtimeType + code + message 23 unit tests cover Exception interface conformance, unique codes, toString content, cause chaining (with and without override), and a sealed-switch exhaustiveness check. Existing exceptions are untouched — new code throws AppException subtypes, legacy code will migrate in Phase 4 Steps 5–7. commit 29bc27205368c2debcb7a85b1500366dc023af07 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:26:44 2026 -0400 refactor(models): Phase 3.6+3.8 AOrder non-mutating sort variants Add non-mutating sort helpers that return a new list without touching the input, while keeping the existing mutating API for backwards compatibility: - sortedItemsById (instance) alongside the existing sortById - sortedListById / sortedListByLabelAndId / sortedListByPriorityAndLabelAndId (static) alongside the sortListById/... variants Extract the three comparator functions (_compareById, _compareByLabelAndId, _compareByPriorityAndLabelAndId) so both the mutating and non-mutating variants share the same ordering logic. 8 unit tests cover the new non-mutating behaviour plus one regression test for the mutating sortListById in place. commit 3c709df3f532f36223215d865211834b0205d2cf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:23:28 2026 -0400 fix(models): Phase 3.2+3.3 TOrder.copy modifier parentid + id-based dedup Phase 3 Step 3: order_checkout_bloc_interface.getTOrdersAndModifiers used to dedupe with .toSet().toList() which relies on identity equality since TOrder has no == override. Two TOrder instances with the same logical id were both kept, causing duplicate rows in flows that call this helper. Replace with id-based dedup that preserves the first occurrence. Phase 3 Step 2: TOrder.copy used to copy modifiers with a new id but left their parentid pointing at the old parent id. Fix so that when the parent receives a new id, each modifier's parentid is also reassigned to the new parent. This closes a known footgun where 3 call sites had to manually fix parentid after calling TOrder.copy(newId:). commit df1f17ddef55a4a412c4f2f544e1b71d642ac3a2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:21:31 2026 -0400 refactor(terminal): Phase 2.8 CustomerScreenHandlers cleanup - Wrap the 2 trivial handlers (PaymentWaiting, PaymentFailed) in try/catch so any emit failure is logged instead of silently propagating. - Extract the shared 'load order by id and emit a loaded/failed state' logic from TipsWaiting / PrintWaiting / PaymentCompleted into a single private _loadOrderForCustomerScreen helper. Each caller now passes in an onOrderLoaded state builder. - Fix a bug in _customerScreenPaymentCompleted: when orderID == '0' the handler used to emit once and then fall through and re-fetch; it now returns early after the empty-order emit. - Add dartdoc describing each handler's socket event trigger and the shared helper's contract. commit c5249c11e245c93020b51f1008fc92a0e9fc07ad Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:19:50 2026 -0400 refactor(terminal): extract FiscalTimeoutExecutor (Phase 2.9) Step 9 of TerminalBloc decomposition: move _executeFiscalWithTimeout out of the bloc's helpers part file into a standalone, pure, testable utility class. The bloc-level helper now delegates in one line. Also drop the internal ExceptionUtils.logRuntime call — the caller already surfaces errorText to the user, and keeping the helper logger-free makes it trivially unit-testable. 5 unit tests cover the success path, timeout path, rejected-future handling (StateError + Exception), and successful fiscal name preservation. commit 6b3d62392f2a735237534b51a6c1ae9a59c4ae4b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:09:14 2026 -0400 test(integrations): unit tests for AppTerminalType + AppTerminalPort + TerminalConstants 8 cases covering AppTerminalType.fromName (known/unknown/round-trip/ case-sensitivity), AppTerminalPort values list, TerminalConstants operation timeout positivity, batch-is-longest invariant, and tDefaultPortPinPad = 13000. commit 02902845cf2d3b5230bff4d50480653db3e1d028 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:06:48 2026 -0400 test(integrations): unit tests for AppTerminalTypeProvider 14 cases covering fromName (known/unknown/empty/all-values round-trip), isUsaDevices/isKzDevices classification, isCloseBatchSupported for valor/kaspi/none, and getDeviceTypeByModel (P2-A11 case-insensitive). commit 7d2b66d74ce1bbee94805015c2ab7cff2929e30c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 20:03:17 2026 -0400 test(reports): unit tests for PaymentMethodSummaryModel + Total variant 6 cases covering fromJson (refund net, numeric fallback), totalCard computation (cardPayments + cardTips), cashDiscountFee formula (totalCard * percent / 100), depositAmount derivation, and composite fromJson with cardPayments/cashDiscountPercent application. commit 718f7a8742bfee409e790e119575c742ebb75e14 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:53:37 2026 -0400 test(reports): unit tests for EmployeeSummaryModel + EmployeePaymentMehtodModel 3 cases: EmployeeSummaryModel.empty zero-fill, EmployeePaymentMehtodModel fromJson field parse and bad total_sum fallback. commit 9bbdba243a7303ef861e5aae5749f3b752dc84d2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:52:31 2026 -0400 test(reports): unit tests for TaxesFeesSummaryModel hierarchy 8 cases covering NdsTypeSummary, TaxesSummary, FeesSummary fromJson (null default, field parse), and TaxesFeesSummaryModel composite parsing with tax-exempt fallback to 0. commit 71919d19053f2f86a1a2c935e22b2fc6148c7e44 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:50:04 2026 -0400 test(reports): unit tests for DUrvTransactionDto.fromJson 2 cases: full field parse, and invalid-dt fallback to epoch-zero. commit 93a1a99361f9dbcc4f55207dde1d80c55cd9813e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:47:27 2026 -0400 test(reports): unit tests for GeneralOrderStatus enum 3 cases: enum length and content, per-value localize non-empty, and distinct labels across closed/opened/all. commit ad52f4e1a08cf8d0353637b4db0ff204ba20a90d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:46:10 2026 -0400 test(reports): unit tests for AuditSummaryModel.fromJson 5 cases: full field parse, compliment optional-param injection, compliment defaults, bad-input fallback, missing-key handling. commit 1ff2be3a4b9d06331414ad8acec2c0bfc111368e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:42:39 2026 -0400 test(reports): unit tests for CardTypeSummary / PaymentDeviceSummary / DualPricing models 10 cases across four report model fromJson factories covering field parsing, null name defaults, and bad-numeric fallback to 0. commit 73b671109d13e968a106897f1e8f8acaa69ef9d1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:39:20 2026 -0400 test(reports): unit tests for VoidsDiscountsModel.fromJson 4 cases: full field parsing, removeCount double->int truncation, bad-input fallback to 0, missing-key null-string fallback. commit 764fe36dbd854fb69e61f06ddee569d815167d01 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:37:17 2026 -0400 test(reports): unit tests for SalesTaxesSummaryModel 7 cases: empty factory zeroing + isEmpty, fromJson numeric parsing + fallback, tipsAndGratuitySum, totalSum (gross + tips + gratuity), isEmpty false when any field positive. commit 9bbd0a2b57483b25ebf72e95974e2e7cd5ab6ee4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:34:16 2026 -0400 test(kiosk): unit tests for SItemTMenuViewModelWithChildren tree builder 7 cases covering toWithChildrenSItem (single-level, nested, initialParentId override, empty input, orphan exclusion) and SItemTMenuViewModel equality. commit fbfa168ef3155c6800de77a88bc6b5f1ee93b6fe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:31:45 2026 -0400 test(core): unit tests for MapUtils + SequentialInputValidator + Common validators 12 cases: - MapUtils.mapsAreEqual: equal/length/missing/value/empty - SequentialInputValidator: sequential invocation, short-circuit on throw - FieldInputValidator$Common.zipCode / login: positive + negative paths commit fda5b98719bc2fbb32bdde786dc55bd82a1f9338 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:28:35 2026 -0400 test(reports): unit tests for ReportProductSalesModel.fromJson 3 cases: numeric field parsing, 'No Category' localization swap, and verbatim passthrough for other category names. commit b7fdb56f9653c757c2bcd6f4bae0cc790a6613dd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:26:50 2026 -0400 test(settings): unit tests for ClockTimeStamp 9 cases covering empty factory, fromJson ('1'/'0'/mixed), fromString JSON decoding, toJson serialization, round-trip via fromJson, copyWith selective update, and encodeJson -> fromString round-trip. commit b6cd656b3932835554d3f17d57fcac90908810f4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:26:11 2026 -0400 test(customer_screen): unit tests for CustomerScreenWorkplaceModel 5 cases covering fromJson field parsing, numeric coercion, and isThisDeviceSn SN matching (matching, differing, default-empty). commit 4fa202e4413ff01ea7120a128fabd96d71c91d08 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:21:59 2026 -0400 test(partner_portal): unit tests for partner access model hierarchy 11 cases covering PartnerAccessValue (fields, updatedValue immutability, toString), PartnerAccessGroup (fields, updatedAccesses, toString), PartnerAccessGroupIterableX.applyValues (merge by group/access id, missing-group no-op), and PartnerAccessTypeProfile.deleteIsAllowed gating on employeesCount + type field delegation. commit b4c86ba6e601a4aa2ec5b5319ea28bd3ff4e4f24 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:19:10 2026 -0400 test(inventory): unit tests for DaysModel + NewSModifiersModel + CategoryModel 7 cases covering DaysModel (iSelected default, field storage, mutability), NewSModifiersModel field storage, and CategoryModel equality by category.id. commit 3ff2f746e7ec1edbbd015057c065add41bfffa2a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:17:11 2026 -0400 test(partner_portal): unit tests for MerchantCatalogFilter + Token 6 cases: MerchantCatalogFilter defaults, copyWith selective and full, toString; Token extension type string interop (length, isNotEmpty, raw-value passthrough). commit cb66ba036092fcb4f0709c1f0be5c11c37bb7cb0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:12:13 2026 -0400 test(core): unit tests for ApplicationRightModel 6 cases covering defaults (all flags false), constructor flag assignment, rightKeyName storage, fromJson int 1/0 parsing, and regression guard that string '1' is NOT truthy (strict int compare). commit fd6f69443fcedd0b9ea7f699d95ef2131081247b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 19:01:06 2026 -0400 test(inventory): unit tests for CategoryFilter + ItemFilter 9 cases covering defaults, toQuery field mapping (including CategoryFilter.onlyGroups=true), copyWith semantics (ItemFilter's sentinel-based null preservation), and toString content. commit ee70e4ef408042dab75b3032f2583f59c147aef3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:59:31 2026 -0400 test(location): unit tests for LocationIdConverter 6 cases covering fromJson int passthrough, string-to-int parse, bad string fallback to 0, negative ints, non-integer double fallback, and toJson int passthrough. commit 223291f3b41286103a9ec29b4b6671e6ca0a7608 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:57:58 2026 -0400 test(settings): unit tests for primitive codecs 19 cases covering BoolCodec ('1'/'0' + 'true'/'TRUE' + unknown fallback + round-trip), IntCodec (encode/decode/fallback/round-trip), DoubleCodec (same), StringCodec (whitespace trim both directions + passthrough + empty). commit 04c3ae702d556873452be7aaa598d7f950ba96a6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:52:38 2026 -0400 fix(test): drop redundant default TextEditingValue arg in mask test avoid_redundant_argument_values lint flagged the second oldValue='' literal. Swap to TextEditingValue.empty for consistency. commit ef41a7fe4bb0dc196962723bfef823dbfb0d21f0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:51:01 2026 -0400 test(core): unit tests for FieldInputValidator$String$Mask 3 cases: passes when formatter is fully filled, throws MaskNotFilled when incomplete, and exception carries input + masked example. commit a85beec9a549bc662df36c39c0f7e2cec2e11f9b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:50:16 2026 -0400 test(inventory_exchange): unit tests for BoolToIntStringConverter 8 cases covering fromJson ('1' truthy, everything else false including 'true' literal) and toJson ('1'/'0'), plus round-trip for both states. commit 56fa72c1688b744033f9b7ad3071243bd5c05575 Merge: fed637ab8a c064845936 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:49:09 2026 -0400 Merge branch 'NewOrderBloc' into dev commit c064845936c0a80de701dc1c3e89b40c81d39368 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:44:28 2026 -0400 test(inventory_exchange): unit tests for InventoryExchangeModel$Item 7 cases covering equality by id OR name (disjunctive), hashCode stability, copyWith selective update + complex field preservation, and toString field-label embedding. commit 1aaf3f69b777bba41aae5bebe700a021f3f158ac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:20:21 2026 -0400 test(inventory_exchange): unit tests for InventoryExchangeModel subclasses 12 cases covering ExchangeContentKind sheet names, Category/Modifier$Group/ Modifier$Item/TaxRate field storage, name-based equality, and toString embedding. commit 23a5b6bc36f4ee8814795c7d2f50c26b1632def8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:18:27 2026 -0400 test(inventory_exchange): unit tests for ExcelBoolCodec 11 cases covering encoder (true/false/null), decoder (Yes/No/null/ unknown/case-sensitivity), and full round-trip for all three states. commit 5e346a321301e187c58bd1bd0038c716f81229c7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:17:55 2026 -0400 test(happy_hours): unit tests for UpdateTTimePriceAP + CreateTTimePriceAP 4 cases: toMap snake_case serialization and toString formatting for both models. commit 4be13b7eb212b2d8a242794cbce314c6addd291c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:16:03 2026 -0400 test(ui): unit tests for SyncStatus + SyncStatusType 12 cases covering enum text non-empty + completed label, all 5 named constructors (alreadyInProgress/syncInProgress/completed/message/error), and toString branching (message/error embedding, syncInProgress text, syncCompleted local-data-sync vs default). commit 3b84f0e94d1ee0b99885e631e57e879fefcd747c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:13:48 2026 -0400 test(features): unit tests for TipsSuggestion + DiscountType enums 4 cases covering TipsSuggestion index and title fields, enum length, and DiscountType values list. commit df8d4d41188b953ea7807d3158b6dfa142def011 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:12:02 2026 -0400 test(core): unit tests for ProductType enum 8 cases covering all 6 enum values via fromString, fallback to product for unknown, and value-field stability. commit 291126b0ceb9871bd2a3c29c5694fde6906104cf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:10:30 2026 -0400 test(ui): unit tests for StopListEnum.getStopListEnum 5 cases covering all 4 branches (inStock no-data, inStock marked-deleted, setQuantity, outStock) plus non-empty text assertion. commit b2134ddd88273b51d72ba791f220e7adf9b9b16b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:08:32 2026 -0400 test(settings): unit tests for general settings enums 15 cases covering: - GeneralSettingsDateFormat.fromString (mdy/dmy + fallback + format field) - GeneralSettingsTimeFormat.fromString (usa/european + fallback) - CurrencySymbol.fromString (all known + fallback) - CurrencySymbol.locale mapping (dollar/tenge/tg/rouble/euro/sum) - CurrencySymbol.toSettingString round-trip commit c30fda2739e0b329022b08819fd3e15558fe8daf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:06:38 2026 -0400 test(features): unit tests for kitchen + order_list enums 10 cases covering: - KitchenCookingStatus.fromString all 4 values + whitespace trim + fallback - KitchenCookingStatus.color distinctness - OrderListType.pageIndex values - SortType.sqlValue DESC/ASC mapping commit 930a305529a8cd16733db1a9b6eb448b86ad3507 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:05:09 2026 -0400 test(inventory): unit tests for ModifiersListColumnType + list fields enums 10 cases covering: - ModifiersListColumnType.toString labels, 'more' empty sentinel, compareTo order - ModifiersListFieldsExtension toStr, fromString round-trip, unknown null, toStringValue symmetry - CategoriesListFieldsExtension toStr, round-trip, null fallback commit 8c7bcf26945b8e2653948296a37b75bab474ccb6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:03:34 2026 -0400 test(features): unit tests for column-type enums + ValorProfileType 9 cases covering ItemsListColumnType toString/compareTo, ClientHistoryColumnType.isActive/isAscending/isDescending branching against ClientHistorySortBy, and ValorProfileType.types constant. commit b47e8f1835d6df987966fe5fd1c654320100dbfa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:01:36 2026 -0400 test(settings): unit tests for ReceiptPrint/HideModifiers/AutoPrintDelivery enums 11 cases covering all fromValue branches + fallback on unknown for ReceiptPrintOption, ReceiptHideModifiers, AutoPrintDeliveryOrders. commit ba3ee0750d2f95d2afbe184476561acf80d72668 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:01:04 2026 -0400 test(features): unit tests for settings + clock_time enums 12 cases covering: - ClockTimeStatus.getFromTransaction for all 4 state/event combos + non-empty titles - KitchenReceiptVoidOption.fromValue (alwaysPrint/alwaysAsk/doNotPrint + fallback) - TipMoment.fromValue (before/after + fallback) commit fc91b2c05426386c04cfe779e76ae96cf49af353 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 18:00:21 2026 -0400 test(kitchen): unit tests for KitchenSocketMessage JSON round-trip 3 cases: fromJson, toJson field mapping, full round-trip preservation. commit 070773685aee69a40fb454dc5993e256f5967305 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:58:11 2026 -0400 test(time_cards): unit tests for TimeCardModel.fromJson 4 cases: full field parse, is_clocked_in '0' false, invalid-date fallback to epoch-zero, int employee_id coercion to string. commit 7456139231cc8577190ce5c79c4d0356431df94b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:57:43 2026 -0400 test(features): unit tests for PinValidationResult + NktProduct 8 cases covering PinValidationResult (employeeId storage, master-code empty sentinel, equality, toString) and NktProduct.fromJson (fields, missing-field empty defaults, nullable nameKk). commit 18355026d8466f2a78bd097e829116c8776e567d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:56:04 2026 -0400 test(aptito_eod): unit tests for PaymentEntity + RefuseItemEntity 8 cases covering PaymentEntity.fromJson (core fields, 'null' tip normalization, '0'/'null' parentId null-coercion, valid parentId passthrough, defaults) and RefuseItemEntity JSON + empty ctor. commit bb9106f9625f07ed2719db68096aca7618353c06 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:55:27 2026 -0400 test(reasons_and_notes): unit tests for note domain entities 10 cases covering NoteCategory.fromItemId (all 9 known ids + unknown fallback), NoteCategoryItem equality/hashCode/toString, and SNoteItem defaults / copyWith / equality / toString. commit a461cf95463f1fb410c4808e050bd4b40cb9dd15 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:53:03 2026 -0400 test(client_history): unit tests for ClientHistorySummary.fromData 5 cases covering empty records, positive-only accumulation, negative-only spending, mixed positive/negative separation, and client field propagation (name, availablePoints) to the summary. commit b6f295e3e1f7b4ebaed055e471dcef79f3d24ee0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:51:13 2026 -0400 test(location): unit tests for PhoneMask 15 cases covering: - custom factory: valid chars, whitespace trim, empty + no-# throw - values preset list - validatePhoneNumber: USA area-code 0/1 rejection, length, KZ country code, empty input - formattedPhoneFormat digit-to-# substitution - formattedPhoneFormatOnlyPlaceholders shape commit 21e329a7a8c1dabf2ae3b2f919fe51905735bba0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:49:29 2026 -0400 test(location): unit tests for location domain entities 14 cases covering CountryId named factories (usa/kz/gtm) and int interop, CountryUnit/RegionUnit/CityUnit equality + hashCode, Address.initial defaults, Address.copyWith selective update, Address.toString format. commit bdceb1280fe45f8af633bf5fe0bbcca8b022c555 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:48:49 2026 -0400 test(core): unit tests for Apid and Wpid extension types 10 cases covering isValid/isNotValid for '' / '0' / '#' / real values, .empty factory, and underlying-string exposure for both Apid and Wpid. commit 98760ee4dc9b8ab86588c204e370190ccda86d22 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:47:16 2026 -0400 test(core): unit tests for ResponseData / SingleData / ListData 10 cases covering field storage, toString, fold branches for single and list, isSingle/isList discriminators, and getSingleOrNull/ getListOrNull null handling. commit 2d9181e62f373abbc53486dbca0a29c6ee78b287 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:46:47 2026 -0400 test(core): unit tests for Result / Success / Failure 19 cases covering: - Success/Failure field storage, toString, equality, hashCode - Generic-parameter runtimeType distinction - ResultExtensions: fold, isSuccess/isFailure, getOrNull, getOrElse, getErrorOrNull commit c6f0dae57ed1f59ca9feeda5112810673c2146d4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:45:15 2026 -0400 test(core): unit tests for BytesSize 18 cases covering constructor auto-unit selection (B/KB/MB + negative clamp), the unit factory, arithmetic (+ - * /), comparison operators and compareTo, equality/hashCode, and toString formatting (whole-number trim + fractional precision). commit 8832dd4323a75573b2a54906888c6d068460d3cb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:44:38 2026 -0400 test(inventory_exchange): unit tests for InventoryImportException hierarchy 11 cases covering ImportMissingValue equality/hashCode, ToLargeFile size storage, the InvalidFormat subtree (EmptyData, InvalidColumns, MissingValues), UnsupportedFileType, InventoryDuplicates/InvalidItems toString, and Exception conformance across all subtypes. commit 583eed22caaf11cd0b84e0b8f0c0ba0aff4ac763 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:42:07 2026 -0400 test(partner_portal): unit tests for MerchantException hierarchy 6 cases covering PartnerNotFound (type + toString with id), BuildTree$PartnerNotFount (type, toString with both ids), BuildTree$AccountNotFount (field storage + type conformance). commit 71b060739896308cc8dca6c1c5d24b4a383afd20 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:41:31 2026 -0400 test(features): unit tests for settings + app_store exceptions 7 cases covering BaseSettingsRemoteException (SettingsNotFound, SettingsUnavailable, FieldCannotBeEmpty, SettingsIdMissing) for type, toString, fieldName storage, const canonicalization; and BaseAppStoreException hierarchy (5 subclasses + message field). commit 934127c096764cc15d17a204644bf19722424920 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:40:53 2026 -0400 test(features): unit tests for gift/transactions/image exceptions 9 cases covering Factor4GiftResponseException (fromJson/toJson round-trip, toString), GiftResponseException (toString, Exception), all 5 subclasses of BaseTransactionsException, and RemoteImageNotFoundException. commit e31f5b376a74b3eb8d6cb73cc85a80adf37e88dc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:38:35 2026 -0400 test(auth_pin): unit tests for BaseAuthEmployeeException hierarchy 5 cases covering all four subclasses (InvalidEmployeePassword, WorkplaceProhibitedEmployee, WorkplaceNotFound, NoInternetConnection) for type conformance and const canonicalization. commit 766a7a641da0e5d6ff5470369fc5dc3b058e094a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:37:16 2026 -0400 test(features): unit tests for feature exception hierarchies 9 cases across: - OrderException / TableIsBusyException (hierarchy + const canonicalization) - SheetValidationException$Duplicates / $MissingColumns (toString, payload storage, hierarchy) - BaseAlreadyExistsException: UsernameTakenError, PincodeTakenError, PincodeBusyError (hierarchy + const canonicalization) commit f51b70ea428f4ea4cd4c8a3aa5b626a94c51284e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:35:20 2026 -0400 test(features): unit tests for sync + initial navigation exceptions 5 cases covering ShowPaymentEpiIdDialogException (defaults, field storage, type hierarchy) and ShiftIsClosed (type hierarchy + const canonicalization). commit c2800b5f9bef09ff1b6e6b1d02e7ea2993c98ae1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:34:52 2026 -0400 test(clock_time): unit tests for ClockTimeException hierarchy 6 cases covering ClockTimeRepeatedTransaction toString prefix, ClockTimeRestrictedUnpaidOrders/PaidOrders toString prefixes, and the regression guard that the ClockTimeActionRestricted sealed tree is distinct from the ClockTimeException sealed tree. commit ef9de36a167b0e40aad5bf2732834625f9deed89 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:33:06 2026 -0400 test(devtools): add LocalException and ExceptionMessages cases Extends the exceptions test file with LocalException toString + Exception conformance and ExceptionMessages.noConnection non-empty sanity check. Brings the devtools exceptions file to 9 tests. commit bdaed00a4a59175f877f0a43a83ef6cabd5f9396 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:32:23 2026 -0400 test(devtools): unit tests for RuntimeException / RemoteException / UnauthorizedException 6 cases covering toString format for each, ensuring expected fields are embedded, and Exception interface conformance. commit 21ce0c5591b45354ebe583e039a73eeb51fa138b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:31:36 2026 -0400 test(partner_portal): unit tests for Currency 9 cases: fromCountryId (USA, KZ, unknown fallback), equality (matching, identical fast path, mismatched code, non-Currency), hashCode stability, and universalCurrency constant. commit 341d6fc965213097f65d98a6716510f300d36779 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:29:41 2026 -0400 test(order): unit tests for OrderUtils.checkCanApplyDiscount 5 cases covering percent vs cash discount types, within/exceeding due sum, and the subtotal-fallback branch when totalSum < subtotal. commit 7d493cfa9d3736830630aa99238fe78381470707 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:27:23 2026 -0400 test(core): unit tests for PhoneNumberFormatter 6 cases: strips non-digits / plus prefix, digit passthrough, empty, 20-char max revert, selection lands at end. commit 2105580c555bfba57bc930e491fae7939eb164c9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:26:51 2026 -0400 test(core): unit tests for input formatters 17 cases across: - DigitsOnlyInputFormatter: empty, digit accept, non-digit revert - DigitsAndDotsInputFormatter: hex + colon + dot + digit accept, whitespace rejection - IpAddressInputFormatter: auto-dot, invalid chars, 5th-octet block, deletion, octet range validation, leading-zero prevention - CapitalizeFirstLetterFormatter: empty, first-letter upper, tail case preservation, idempotent on already-capitalized commit 28124b9eaf9200bdbaef372f3f2b7a9e8398e905 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:25:10 2026 -0400 test(location): unit tests for FieldInputValidator$UnknowValue 7 cases covering null/empty accept, matching/unknown value, case-sensitive comparison, custom test function semantics, and verification that the exceptionBuilder is invoked with the original input value. commit e52d9087d4981fb595696d03668c381ef84153ac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:24:31 2026 -0400 test(order_ready): unit tests for OrderReadyScreenUtils default settings 4 cases verifying default keys, hex color prefixes, empty defaults for order_types and show_in_drawer, and non-empty text_to_speak. commit 6e94dce32228dba15143a473f6a98889c950c104 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:23:03 2026 -0400 test(core): unit tests for SPrinter 15 cases: - empty factory defaults - canBeUsed (markDeleted + apid '0' logic) - isOnline (null, within 5min, older than 5min) - toJson (bool/int coerced to strings, sysname omission, ISO date) - toLastDtJson (success + throws when null) - equality and hashCode commit 510f95801496deab0e9d32f4f48c6044b1a9d82b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:21:54 2026 -0400 test(core): unit tests for SNDSType and NdsType 13 cases covering NdsType.fromString (tax/fee/fallback), fromJson (value, bool flags, type, extra default), toJson (dtedit=now(), bool serialization, enum raw value), equality/hashCode based on id/value/ type/included/isDefault, and copyWith selective update. commit 149b5fd17175f329eb44d3fc7aa5564ea5e43027 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:20:11 2026 -0400 test(core): unit tests for SAutomatedPoint JSON 4 cases covering numeric field parsing (servicepercent, askguestcount, divChangeWorkplace, is_service_after_discount), fallbacks, dtedit=now() on serialize, and snake_case key mapping. commit 77e0082fe9f3f52395b72478315f4fb537e63d25 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:19:37 2026 -0400 test(core): unit tests for SDiscount and SLoyaltyRules 10 cases: - SDiscount: discount_code null default and pass-through, legacy key mapping - LoyaltyType.fromString: all four types + unknown fallback to visits - SLoyaltyRules.fromJson: numeric parsing, bad-field fallbacks commit 20dd1cfbbbcc064d6b0b89f5f169e350f6b2ac71 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:18:56 2026 -0400 test(core): unit tests for TOrderTax JSON and copy 10 cases covering fromJson bool parsing, src_tax_fee_id null default, numeric parse fallbacks, TOrderTax.copy preservation and override semantics (esp. src_tax_fee_id linkage), and the legacy df_request_id/tf_request_id vs d_order_id/t_order_id key divergence between toJson and toJsonWithID. commit a9b2e80ef6207408abb33da11795d7e6613f4868 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:17:32 2026 -0400 test(core): unit tests for TTaxLocation, TTaxRelations, SStopList 11 cases: - TTaxLocation: fromJson coercion, toJson round-trip - TTaxRelations: fromJson, dtedit=now(), conditional mark_deleted, copyWith - SStopList: snake_case fromJson, stock_quantity parse fallback, toJson/toJsonn parity (regression guard against the typo'd duplicate), constructor defaults commit 2c5a986ca04ab0a47bf71dc3686430a6d485bc4a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:16:46 2026 -0400 test(core): unit tests for TEmployeePopup JSON 5 cases including a regression guard for the legacy mixed-case key conventions (u_Return, u_PriceChanged, u_Receipt, u_OtherEmployeesReport) and a toJson -> fromJson round-trip. commit 39ce263617a50d8ed4dff81680e31852019f4b59 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 17:16:13 2026 -0400 test(core): unit tests for TEmployeeWorkplace, TRight, SItemRecommended, TDiscountClients 10 cases covering fromJson string coercion, toJson nullable handling, TRight permission defaults and dtedit=now() on serialize, copyWith semantics, and snake_case key mapping (dst_s_item_id / src_s_item_id). commit 2e51d96391c9112c258b2e57a8b4c903e495b71e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:34:37 2026 -0400 test(core): unit tests for SModifier 6 cases: - priceWithGroup: null groupprice, additive, zero - fromJson: string price parsing, bad-price fallback to 0 - toJson: field mapping including is_default null fallback to '0' commit 26003138101dee1836c61ca2911510276089e9fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:34:00 2026 -0400 test(core): unit tests for DOrderDelivery JSON 7 cases covering is_payed bool round-trip, the legacy 'adress' typo key (regression guard), missing-field defaults, and status_id default '0'. commit ea314f00cf95d1af642d1371f46a459b78547bce Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:32:30 2026 -0400 test(core): unit tests for SRole and SAddress JSON serialization 7 cases: - SRole.fromJson int coercion, toJson nullable omission + dtedit=now(), toJson with present nullables, copyWith - SAddress.fromJson all-string payload, missing-key nullable handling, toJson core field mapping commit c23f4540983c91bcc8cf9f4005ba9f2a36d361df Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:30:44 2026 -0400 test(core): unit tests for SSubdivision, SMark, TEmployeeRole JSON 9 cases: - SSubdivision: fromJson string coercion, toJson field mapping - SMark: int coercion, bad-int fallback, empty factory, copyWith, toJson<->fromJson round trip - TEmployeeRole: fromJson string coercion, toJson nullable handling commit 77d8f3c73d46b228708cddb51458c48fc23baf6f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:29:45 2026 -0400 fix(test): drop redundant default args in modifier ops tests avoid_redundant_argument_values lint flagged minCount: '0' / maxCount: '0' which match the default. Test semantics unchanged. commit c2a0f9fefd6c4a20af93b87372de6ca5e9b34745 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:28:07 2026 -0400 test(core): unit tests for STypesPayment 11 cases covering allPayments factory, isGiftCardType (matching/empty/ unrelated guid), toJson, fromJson (mark_deleted parsing, int id coercion), and copyWith (selective + preservation). commit df9e95aeee68731888687708aff01de16556771b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:27:00 2026 -0400 test(local_server): unit tests for JsonUtils 10 cases: - encodeSync: plain Map, plain List, IMap unlock, IList unlock, toJson on custom objects - decode + decodeMap: object and array parsing - JsonStringExtension async delegates commit c12bbc695aca0f123d5ed3695cb2facdfc8be943 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:25:36 2026 -0400 test(core): unit tests for misc extension utilities 31 cases: - NotEmptyString.notEmpty - ColorExtension.toHex - StringBufferExtensions.writelnIf - Extension.compareChanged (strings, doubles, ints) - Extension.hexToColor (with #, without #, null fallback) - SmartDoubleParsing.toSafeDouble / isParsableDouble - IterableModifiers.interleaved - IterableInternal.safeElementAt commit 49af490d6cf914793661f55aa289edf5c48b6bfd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:23:45 2026 -0400 test(core): unit tests for DeviceInfo subclass toJson serialization 6 cases covering Android, iOS (with N/A identifier fallback), Web (with N/A fallback for nullable fields), and Windows (with MB-suffixed memory formatting). commit 74a7ec4a9b8958e0aab02f487ec41a2c34fb9c82 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:23:04 2026 -0400 test(core): unit tests for STip toJson/fromJson 4 cases: full toJson round-trip, dtedit always 'now()', fromJson with int id, percent parse fallback to 0. commit 060447d69d1094d6ce4e99ab005cc0673b6b77d1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:22:31 2026 -0400 test(core): unit tests for String + Object extensions in extension_utils 32 cases: - nullIfEmptyOrLiteralNull (trim, empty, whitespace, literal 'null', case) - emptyIfLiteralNull (passthrough, literal null, empty) - toUpperCamelCase (space, underscore, dash, mixed, single) - addSQLCondition (empty receiver, AND join, empty addition) - ifEmpty (empty fallback, non-empty passthrough) - ObjectExtension.isNullOrEmpty (null, string, list, map variants) - ObjectStringExtension.toEffectiveString (null, literal null, string, int) commit 062de0dd0e76d4166962a5f7b691fefb65085806 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:20:29 2026 -0400 test(core): unit tests for SItem.buildSearchName 6 cases: joining, uppercasing, surrounding whitespace, empty alternative, empty primary, both empty. commit 35d5d50993dc85017e0f69cf15f14ea63dd67424 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:19:42 2026 -0400 test(core): unit tests for PhoneNumber.formatPhoneNumberForSaving 7 cases covering whitespace, parentheses, dashes, + prefix, all-digit passthrough, empty, non-numeric, and fromString normalization. commit 2bd82469bdaea5dda4f03b8b345aedfeba1b495b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:18:44 2026 -0400 test(core): unit tests for OldUtils decimal arithmetic helpers 9 cases covering decimalAddSubtractFunction (add/subtract/zero/negative) and decimalMultiplyDivisionFunction (multiply/divide/zero/trailing-zero strip). Notable regression guard: 0.1 + 0.2 produces exact 0.3, not the 0.30000000000000004 float drift. commit 6128e2465237750b84e4686b84e435411d3881bf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 15:18:11 2026 -0400 test(core): unit tests for extension_utils helpers 17 cases covering: - FirstWhereOrNull on List and IList - StringCapitalization.capitalizeFirstOfEach - Map.orderByKeys / orderByValues - NumExtension.formatSecondsAsTotalHoursString commit 6cb6ac42279082658e8ac28f6e6077b0776d1f63 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:56:04 2026 -0400 test(core): unit tests for Required + Regex field validators 11 cases covering: - Required: null/empty throw, non-empty/whitespace pass - Regex.digitsAndLatinLettersAndDot: accepts a-z A-Z 0-9 '.', rejects spaces/@ - Regex.digitsAndDashes: accepts 0-9 '-', rejects letters and mixed commit a1b45d9f524ee9fe5ea82dd2c78d27b5f189414a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:55:02 2026 -0400 test(core): unit tests for String length + email field validators FieldInputValidator$String$Length (8 cases): - assertion at construction - null passes - empty throws ToShort when min>0 - below/above boundary - exact boundary passes - combined range passes FieldInputValidator$String$Email (8 cases): - null/empty pass (non-required) - valid emails including plus-tag - missing @ / missing TLD throws - trimInput behavior (true vs default) commit 19df71567f2cd8bd8dcd9cf9d9b742ab64fd82b9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:53:53 2026 -0400 test(kitchen): unit tests for KitchenUtils pure helpers + HexColor 8 cases: - kdsDefaultSettings: required keys and values - colorInterval: HH:MM:SS -> seconds, edge zero - formatTime: device-time-in-past guard + HH:MM:SS diff shape - HexColor: with/without # prefix, invalid fallback to white commit 9aca16b7004cb69e0b4cd3c2dccfd0d82f00577e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:53:02 2026 -0400 test(ui): unit tests for CoreBase.isValidUrl 9 cases covering http/https, path, subdomain, and rejections for missing scheme, ftp, empty, plain text, and no-TLD hosts like localhost. commit 0a4a02585fb3fb212559ec979f1b1dc9e2b65645 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:51:47 2026 -0400 test(core): unit tests for TokenLogMask 10 cases: null/empty passthrough, emptyAs substitution, single char, two-char edge, short/long tokens, star cap at 32, and a regression check that sensitive middle content does not leak through the mask. commit 11ff6a7450fc3c13215b9c8502c327619381df4e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:49:44 2026 -0400 test(local_server): unit tests for CoreServerFunctions pure helpers replaceNowToDate: 4 cases (lowercase, mixed casing, sqlite literal mode, no-op passthrough). requestInjection: 5 cases (DROP TABLE, INSERT INTO VALUES, UPDATE SET, benign SELECT, whole-word boundary so 'addition' does not flag 'add'). commit b997291809c673b4cecb618c3aea35e83b7466fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:48:50 2026 -0400 test(order): unit tests for OrderUtils modifier operations Cover the pure modifier-group predicates lifted out of OrderUtilsModifierOps: - isOneOfManyModifier / isOneOfManyOrNothingModifier - isModifierSelected (absent, zero, positive) - isModifierCountShown (1/1 group, locked count, unlimited, range) - isReachedMax (null max, below, at) - getModifierCount (missing, stored) 16 new tests, all green. Project total: 797. commit 4e17e31ab99e68514e5cf770aa84788fd86710ba Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:47:35 2026 -0400 test(order): unit tests for ColorContrastUtils Cover isLightColor / getContrastTextColor / getContrastTextColorFromHex / isGrayColor across 15 cases: white, black, mid-gray, dark/light hex, with and without '#' prefix, pure gray, near-equal RGB, very dark, very light, vibrant colors. Full suite now: 781 / 781 green (up from 712). commit 59079185834eaabbaca9c98c7713f096b71a560d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:46:08 2026 -0400 test(utils): unit tests for AddressUtils + MasterWizardUtils validators AddressUtils.formatAddressFields (4 cases): empty, full populated, partial (placeholder stripping), single-field trailing cleanup. MasterWizardUtils validators (24 cases): - validateEmail: valid / empty required / empty optional / too-short / malformed - validateRegistrationPassword: length, upper, digit, special char rules - validateCashDiscount: threshold, zero, non-numeric - validatePercent: required, optional, integer, fractional, dot-limit, range - validateTip: in-range, out-of-range, non-numeric 28 new tests total, all green. commit d3250a150d12116e2b89926ad0f07a991b612693 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:44:11 2026 -0400 test(order): unit tests for DOrderMath + OrderMath helpers (Phase 6 pull-forward) Covers: - DOrderMath.serviceSum / discountSum / subtotal / totalSum (10 cases) - OrderMath.checkContainsNumberAfterDotNotZero (3 cases) - OrderMath.calcProportionalAmount (4 cases) - OrderMath.calculateTip (5 cases: empty list, default, by id, custom, fallback) Pure math, no mocks. 22 new tests, all green. commit 211760ce5519269943d53d8ed7b9a3aa8daf84c2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:35:04 2026 -0400 test(terminal): unit tests for TerminalOrderUpdateContext Cover PayByCash / PayByCard / AdjustTips event flag resolution and isSemiIntegrationDevice computation. First pure-logic terminal test outside the existing refund service suite. commit 74c175e0e0692e6c8427792da0dcf1d053b0e772 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:33:53 2026 -0400 refactor(terminal): DRY _reportX/_reportZ via _runFiscalReport (Phase 2.2) Extract the identical X/Z fiscal report boilerplate (~60 lines each) into a single private helper parameterized by TFiscalOperation and log-method name. Net: ~120 duplicated lines collapse to one shared body. No behavior change; terminal + order test suites green. commit dd45da6528dd434a4a90ae7fc51fc5512925a34d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:28:38 2026 -0400 refactor(terminal): extract TerminalOrderUpdateContext (Phase 2.1) Move event-introspection and payment-device resolution out of TerminalBloc._onUpdatingOrder into a pure, testable value class. No behavior change -- 10 lines of inline switch replaced with one factory call. Unlocks future unit tests on the branching logic without standing up the full bloc + 31 deps. commit 8d72c06386480ed66c3ddcf8b201b3ffb3713e81 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:26:36 2026 -0400 fix(stability): move must_be_immutable ignore to correct position Part directive between comment and class broke the ignore association. Result: dart analyze now reports 0 issues project-wide. commit 0ca9271be637d9e6ee4b53b9724a0e2f51a59b01 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:23:31 2026 -0400 fix(stability): phase1 1B.6 -- wrap 11 unguarded BLoC handlers in try/catch Audit-driven: added try/catch + ExceptionUtils.logRuntime to handlers that await async work without error handling. Affected: - transactions filters _onDateTimeRangeChanged - add_update_item _onDeleteItem - add_modifier_bloc _onAddModifier - add_edit_modifier_group _onItemEditedModifierGroupEvent/_onDataLoadModifierGroup/_onUpdateGroup/_onDeleteModifier/_onAddModifiersGroupEvent - receipt_options _onRecieptOptionsDoneSelecting - client_history _onLoad - location _onUpdateLocale Handlers that delegate to internal methods with existing try/catch (leaf_theme_settings._handleSettingUpdate, merchant_catalog._reload, partner_catalog._handleSearch) were left unchanged. commit ed6863efb775de8ba747a65e8450d375b4f51587 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:18:44 2026 -0400 fix(stability): phase1 1D.5 -- zero use_build_context_synchronously warnings Long-tail mounted-check fixes across inventory, partner portal, transactions, reports, order_tips, kitchen, leaf, price_checker, ui. Phase 1D complete. commit 183df1644c994b2f20b5971601e070e875cfa357 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:07:44 2026 -0400 fix(stability): phase1 1D.5 -- core (socket, routing, auth_logout, util_functions, widget_utils, device_utils) commit 5254c53eb2dcac4b9bb96477808d3c261ce7be7b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:05:11 2026 -0400 fix(stability): phase1 1D.5 -- types_of_payments, terminal_mode, taxes_fees, support, batch_report commit a8eb228e34c03fc6f12f60fa39e3a1e2e2456f8d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 14:00:45 2026 -0400 fix(stability): phase1 1D.5 -- transactions/transaction_test/leaf_main/clock_time/exception_utils/leaf_void_dialog batches commit f3d9dfaa33d596cfdf00960e28d69882ec06277e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:55:35 2026 -0400 fix(stability): phase1 1D.5 -- drawer, area_constructor, aptito_eod_portrait commit 9d677a21d6303b21b3a93ec6b2f58e08c378b99a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:51:11 2026 -0400 fix(stability): phase1 1D.5 -- transactions/clock_time date filters, inventory add_edit, happy_hours commit bf6949a9fa81fbbbe5c51d285961c6ad45d302e8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:47:18 2026 -0400 fix(stability): phase1 1D.5 -- integrations webview/printing/halyk_qr/terminal_batch mounted checks commit 30b6a7b3c2ec4fa0244469af6c4c3384b6f9e9ba Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:44:26 2026 -0400 fix(stability): phase1 1D.5 -- status_bar, items_list_header, leaf_shared_functions, modifiers_list commit dd0d3cb3c11e0667b5118ee426cfbae14b5ddd24 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:41:48 2026 -0400 fix(stability): phase1 1D.5 -- auth_pin current_employee_cubit mounted checks commit eb4cde2e71bdad7f0839596fc552985fe3107071 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:39:55 2026 -0400 fix(stability): phase1 1D.5 -- inventory modifiers, aptito EOD, sync_wrapper batch commit c486b78b3226f17ba941801090721ffd9a6c95fe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:35:33 2026 -0400 fix(stability): phase1 1D.5 -- TABLE_SERVICE MODULE COMPLETE -- 28 sites commit d9997d9656899f593e0c1064ca940646047acaf7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:29:40 2026 -0400 fix(stability): phase1 1D.5 -- settings module 53→1 (mostly hardware param batch fix) commit 783ac34b614eae05b794f21ee8db9e0d125ec64d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:23:45 2026 -0400 fix(stability): phase1 1D.5 -- settings batch (client/general bloc, image url widgets) commit eab3fa09b732c3113b8f9e8e348f9e4774725286 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:21:08 2026 -0400 fix(stability): phase1 1D.5 -- ORDER_LIST MODULE COMPLETE -- mounted checks (76 sites) commit 4c76c24d28fd527948145b933856d22b31c2758b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:17:38 2026 -0400 fix(stability): phase1 1D.5 -- order_list batch (refund_void, transfer, tools, fiscalization) commit e17c86636c73a48b0d4c83c94abeb30acb585858 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:08:38 2026 -0400 fix(stability): phase1 1D.4 -- KIOSK MODULE COMPLETE -- mounted checks (36 sites) commit d3ba9468f347d3b7621a6cd52f014cd1cb46366d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 13:00:48 2026 -0400 fix(stability): phase1 1D.3 -- TERMINAL MODULE COMPLETE -- mounted checks (43 sites) commit d56aa525314b052d558c2c69d8d544475b0095f4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:58:48 2026 -0400 fix(stability): phase1 1D.2 -- ORDER_CHECKOUT MODULE COMPLETE -- final batch (67 sites total) commit c2afd444bff50c752a02ed53c69c416af81b73c2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:54:45 2026 -0400 fix(stability): phase1 1D.2 -- mounted checks in order_checkout aptito interface, paloma actions, leaf popup (49 sites) commit 47e0bf71676d4db7a848590131b96a83c7a22f4e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:48:11 2026 -0400 fix(stability): phase1 1D.1 -- ORDER MODULE COMPLETE -- final batch of mounted checks (178 sites total cleared) commit db1cf9192e8afdf501e145a34cd239a638e470f2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:43:46 2026 -0400 fix(stability): phase1 1D.1 -- mounted checks across leaf, paloma, taylor, aptito order widgets and order bloc commit 59b70e7a5250aa03f5862740f8e8b20c1a876678 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:38:35 2026 -0400 fix(stability): phase1 1D.1 -- mounted checks in leaf_order_album_actions, search_list, modifier files; aptito_portrait_modifiers commit dcb8cb18e4dae5a705a05eaaa202b96c47dee962 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:32:39 2026 -0400 fix(stability): phase1 1D.1 -- mounted checks in leaf bottom_bar + image_picker_dialog commit e71e23c1cc4e2df82a2f2ad79d97a3cc9e4b88b4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:29:41 2026 -0400 fix(stability): phase1 1D.1 -- add mounted checks in aptito_order_item_slidable, order_item_counter commit b3df945ddf01425ad163d004141c002128c5ee5e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:24:22 2026 -0400 fix(stability): phase1 1D.1 -- add mounted checks in paloma_order_actions (19 sites), aptito screens (3 files) commit 135d4f53b228e8b23f0b20eeb447874f30db7b9b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:18:50 2026 -0400 fix(stability): phase1 1D.1 partial -- add mounted check in aptito album order screen; update tracker commit fb53d3cf2b160b9799c6a157aa560d55660fc407 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:17:15 2026 -0400 fix(stability): phase1 1C -- add missing await to LocalDB.insert in createRowImpl commit 730ddd602dd316db7684b02685fd4863a0e0fd80 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:16:35 2026 -0400 fix(stability): phase1 1B.1-1B.6 -- add try/catch to priority BLoC handlers (terminal cancel, kiosk modifiers, custom receipt, hardware tabs, inventory dispose) commit 2ae96560fd7041a0ce905fe1952c7e0d5e2c6f89 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:12:17 2026 -0400 docs(refactoring): phase1 1A DONE + add test account credentials for UI verification commit 9c2ef40b274eae131840cbaf539a0f82918ce2ea Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 12:11:28 2026 -0400 fix(stability): phase1 1A.10d -- replace firstWhere across area_constructor, clock_time, customer_screen, delivery, discount_clients, inventory, kitchen, leaf, order, partner_portal, reasons_and_notes, settings, table_service, terminal_mode commit 984144eb25dbe9bbdfabf06f1f766e7dfaedef9c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:47:16 2026 -0400 fix(stability): phase1 1A.10c -- replace firstWhere across order_checkout (split, aptito, interfaces, utils) commit 9fdd775519b3727755fecbc4cf2d400ea759abe9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:44:07 2026 -0400 fix(stability): phase1 1A.10b -- replace firstWhere in settings providers, inventory models, aptito EOD, order items commit dd6212bd60f829d468d6032025cc044fb6f639e5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:38:34 2026 -0400 fix(stability): phase1 1A.10a -- replace firstWhere in core (navigation, usecases, menus) commit 751553f8beb62b35a2b67bffd74bd68b5b0a7c40 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:35:04 2026 -0400 fix(stability): phase1 1A.9 -- replace firstWhere in terminal + integrations commit c0d81528de09feb5eae5c852043dd0a6ebef6237 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:33:40 2026 -0400 fix(stability): phase1 1A.8 -- replace firstWhere in settings (ui/general/client) commit 11265b02d44f1c149410b2fa208f18c3d0d6fccf Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:31:16 2026 -0400 fix(stability): phase1 1A.7 -- replace firstWhere in order bloc + order_math commit 636607b32e128e35022f606a75a889fc7e7bc3b9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:30:00 2026 -0400 fix(stability): phase1 1A.6 -- replace firstWhere in kiosk bloc and widgets commit 583aa9e1f3690a636314c73e657ff21844444288 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:25:54 2026 -0400 fix(stability): phase1 1A.5 -- replace firstWhere in inventory (employees + items list) commit cb8cfd44adce878a78b03c07aa22b195ad42f7ed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:23:55 2026 -0400 fix(stability): phase1 1A.4 -- replace firstWhere/singleWhere in order_checkout commit 449abf923017a423443b5637f896e3d257b21719 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:21:59 2026 -0400 fix(stability): phase1 1A.3 -- replace firstWhere in discount_operations commit 0849d1003b37b395448c1c6ae8773530c356cfd9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:20:32 2026 -0400 fix(stability): phase1 1A.2 -- replace firstWhere in discount_clients_cubit commit 816b7878f652632b5b84c8e3030b9f85ed645d1c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:16:13 2026 -0400 docs(refactoring): phase1 1A.1 DONE -- update tracker commit a28fd8cb28b6e35e2404d3da808d96676d0e3ede Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:15:59 2026 -0400 fix(stability): phase1 1A.1 -- replace firstWhere in delivery widgets commit 406d36f78a74f9043cf1613b49b9a914289d13e4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:09:53 2026 -0400 Delete TERMINAL_BLOC_REFACTORING_PROMPT.md commit 0dab1634b38493a014d250c078a3db51fc5912f8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 11:09:16 2026 -0400 docs(refactoring): add safety protocol with git tags, pre-push checks, and rollback instructions Made-with: Cursor commit 9ff346210e6edb08fc4292be645a5d1d8298732c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Tue Apr 14 10:47:47 2026 -0400 docs(refactoring): add 6-phase product stabilization plan with AI prompts Comprehensive stabilization plan addressing 7 root architectural problems: - Phase 1: Critical bug fixes (firstWhere/192, try-catch/53+, mounted/661) - Phase 2: TerminalBloc decomposition (4000 lines -> focused services) - Phase 3: Data model hardening (TOrder/DOrder equality, copy-safety) - Phase 4: Unified error system (AppException hierarchy, fix ExceptionUtils) - Phase 5: Module boundaries + global state elimination - Phase 6: Test coverage ramp-up (2.2% -> 50%+ critical paths) Each phase has a detailed execution plan with progress tracker and a copy-paste AI prompt for session-based execution. Made-with: Cursor commit fed637ab8a3dd765a0320bcfc7fcb7dedb9a581b Author: Forasky Date: Tue Apr 14 17:22:49 2026 +0300 fix(DEV-11596): fix open price switch commit 5c2dfa5378ab7f27cb5d7f1566274e525ca73395 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 16:40:36 2026 +0500 Revert "fix(DEV-11606): sunmi cancel transaction: There is nothing to cancel." This reverts commit 1d5b10d262f43b962b9d3cca21b0d1680e752fba. commit 82ea642ab089ba1bab21b9b996089619de7f1007 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 15:49:38 2026 +0500 fix(DEV-11626): Log out when updating the main station commit 1d5b10d262f43b962b9d3cca21b0d1680e752fba Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 14:41:49 2026 +0500 fix(DEV-11606): sunmi cancel transaction: There is nothing to cancel. commit 3f6932ccb17888ca557285b3fa48d6a9ce716ecc Author: Forasky Date: Tue Apr 14 12:28:05 2026 +0300 fix(DEV-11605): fix fill color of button commit 858e5443aee5439a9149f856c9b8b6fb59e8350f Author: Forasky Date: Tue Apr 14 11:37:51 2026 +0300 fix(DEV-10156): fix some issues with reports commit 1f72330830c7d590b421ceb2cc42efc65e0622c8 Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 11:49:23 2026 +0500 fix(DEV-10156): The receipt is not fiscalized when adding a 10% service fee. commit 12ed5bac8f1a2ca34782e2cd094dd862cbd82ba4 Author: Forasky Date: Tue Apr 14 11:53:55 2026 +0300 fix(DEV-11596): fix disabling open price switch commit f58b26612704e5ef2db03facddff155ed1c3a92c Author: Forasky Date: Tue Apr 14 10:48:05 2026 +0300 fix(DEV-11611): list exact total first in quick cash amounts Made-with: Cursor commit 02bf12c58d2c67fc0e6cb3f284b5f88cdf3977ba Author: Forasky Date: Tue Apr 14 10:04:30 2026 +0300 fix(DEV-11562): suppress ICMP ping loop while embedded local server is active ServerPinger now tracks a local-server-mode flag. When the app acts as the Shelf API server the ICMP loop is stopped and a healthy sentinel state is emitted so the status bar ping badge hides instead of showing 10000 ms. ServerBloc.startServer/stop toggle the flag; main.dart restores it on restart when AccountData.isServerOn is already true. checkIsHealthy() still returns false in this mode, keeping remote-sync gates suppressed. Also triggers an immediate connectivity check on init() so the ping loop starts right away when the device is already connected at launch. Made-with: Cursor commit eb646b2e67e82a050960ed70461a5ee803917b5e Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 10:28:54 2026 +0500 fix(DEV-11584): printing duplicated kitchen receipt after some time commit 75e5bf5c5003667cc7ff0dda666ae963ef37652d Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Tue Apr 14 08:48:19 2026 +0500 fix(DEV-11617): Order block. Products are not being added. commit 2b0bb1756ef069c4c0e312a7749b4efa4f525b58 Merge: d6d1253a7b 6b97e9a34e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:56:09 2026 -0400 Merge branch 'NewOrderBloc' into dev commit 6b97e9a34e8d68701b9608d98078e38dd24ec0a7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:49:23 2026 -0400 refactor(order-bloc): phase2i remove dead getLastActionDifference injection Event audit turned up nothing (all 45 Order$ events have at least 1 dispatcher + 1 handler), but the sibling audit of OrderBloc's 37-dep constructor found one dead injection: getLastActionDifference. The GetLastActionDifference use case is declared on OrderBloc (field + constructor param + import), passed through both OrderBloc instantiation sites (order_screen.dart, gift_card_issuance.dart), and mocked in three test files — but never invoked anywhere inside the bloc or its part files. Somebody wired it up and never used it. Deleted: - OrderBloc: constructor param, field declaration, import - order_screen.dart: kwarg + import - gift_card_issuance.dart: kwarg + import - order_bloc_internal_events_test.dart: kwarg + mock class + import - order_bloc_submit_failure_test.dart: kwarg + mock class + local var + import - order_bloc_order_type_draft_test.dart: 6 pass-through call sites, the _buildBloc required param, the late field, the setUp init, the MockGetLastActionDifference class, and the import OrderBloc constructor shrinks from 37 deps to 36. All 256 tests pass. commit c1d156ce87a939ce893a41dd42f98fb111cbe48d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:43:10 2026 -0400 refactor(order-bloc): phase2h delete 2 dead OrderWorkingData duplicates selectedClientId and askQuantity existed on both OrderState (live, with widget reads) and OrderWorkingData (dead — nothing ever read workingData.selectedClientId or workingData.askQuantity). The workingData versions were a pre-migration leftover. - OrderWorkingData: drop selectedClientId + askQuantity from the constructor, field declarations, copyWith signature + body, and props. Class docstring's 'Input toggles' bullet removed. - order_working_data_test.dart: rewritten to use increment (live) instead of selectedClientId for the equality/copyWith test cases. Down from 96 lines to 90. All 256 tests pass. commit 7852ff854ed9951185caf1d99277f76986b32c46 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:39:42 2026 -0400 refactor(order-bloc): phase2g delete dead OrderState + event fields Auditing OrderState fields for 'written but never read' revealed four fields with zero downstream reads: - state.isPrintPod — no references at all - state.switchPrintPriority — no references at all - state.discountAdded — written once in reload.dart via copyWith (event.discountAdded → state.discountAdded) but never read - state.rejectedOrders — written 1x in reload.dart via copyWith, but never read through state.rejectedOrders (Order$Submit.rejectedOrders is live and kept; Order$Fetch.rejectedOrders / Order$Reloaded.rejectedOrders were only used to pipe the value through to the dead state field) The pipe-through chain was: Order$Submit.rejectedOrders → Order$Fetch.rejectedOrders (dead) → Order$Reloaded.rejectedOrders (dead) → state.rejectedOrders (dead) Same for discountAdded and printPod. Killing the chain: - OrderState: drop 4 fields + constructor params + props + copyWith entries - Order$Reloaded: drop 3 fields (rejectedOrders, discountAdded, printPod) - Order$Fetch: drop 1 field (rejectedOrders) - reload.dart / fetch.dart / submit.dart: drop the dead kwargs in the nested event constructors (5 sites) Widget construction sites were audited before deletion — zero widgets pass any of these kwargs. All 256 tests still pass. commit 1a3b3d6ad51f7b7f3dd687587fc57864210fcd34 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:33:23 2026 -0400 test(order-bloc): phase2f cover the 4 internal events with unit tests Adds order_bloc_internal_events_test.dart with 8 cases covering every internal event added during the Phase 2A/2B/2C migration: Order$CanSendChanged - emits state with canSend = true - emits state with canSend = false Order$DOrderNoteChanged - writes the note onto state.dOrder and marks it updateable Order$SItemCatalogRefreshed - writes the items into state.workingData.orderItems - replaces an existing catalog when re-emitted Order$SwitchedItemMarked - marks an item as switched in workingData.switchedItems - preserves existing entries when adding a new one - is a no-op when the item is already marked (verifies the early-return branch and that the workingData reference stays identical) Each handler is a pure state transformation, so the tests construct a real OrderBloc with mock collaborators and assert state directly via state.X / state.workingData.X — no need to set up the heavier persistence path. The constructor's _initializeCachedDependencies() call requires three mocks to return empty/null, but every other collaborator can be a bare unconfigured Mock. Test count: 248 → 256. commit 0a0ceb1000e1707e9033a01708bab0ddf313a6ed Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:27:46 2026 -0400 refactor(order-bloc): phase2e delete 5 unused getters from OrderBloc After auditing widget-side reads of every state-backed getter, five getters had zero widget references — they only existed as bloc-internal convenience accessors. Removing them forces bloc-internal code to read state.X explicitly, which is clearer about where the value lives. Deleted getters (zero widget reads, all six audit hits in the bloc were trivial replacements): - canPrint → state.canPrint (1 internal site, in reload.dart) - canHoldSend → state.canHoldSend (1 internal site, in reload.dart) - orderOperationType → state.orderOperationType (3 sites: print_handler.dart, save.dart, submit.dart — the 'orderOperationType == OrderOperationType.update' guard) - increment → already deleted, no internal references - totalCosts → state.totalCost (1 internal site, in reload.dart) Kept getters (widget reads still active): - currentOrder (19 widget reads) - orders (21) - labels (19) - currentIndex (6) - canSend (4) - orderType — kept as bloc-internal convenience: 0 widget reads but 40+ internal references; deleting it would mean rewriting too much call-site code for marginal value OrderBloc public surface shrinks from 11 working-data getters to 6. All 248 tests pass. commit 43d0914d0b3946503cbc62812f2a1f3fa7e1fa7e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:23:17 2026 -0400 refactor(order-bloc): phase2d dead-code + stale-comment sweep Removes dead commentary and debug-print noise that accumulated across the refactor: - print_handler.dart: 13-line commented-out 'Reload the OrderScreen after submission' navigation block that was replaced by the reloadLocalData Order$Fetch dispatch long ago - i_order_bloc.dart addDiscountToTOrder: 11-line commented-out alternate saldo-discount loop plus a dangling '1. 2. 3.' doc list pointing at the removed code - fetch.dart (4 lines): dev-time debugPrint calls — 'debugPrint(currentOrder.orderType.toString())', 'debugPrint("yo: ...")', 'debugPrint(event.dOrderType.toString())', 'debugPrint("creating")' - reload.dart (1 line): 'debugPrint("going to emit OrderLoaded")' - order_mgmt.dart (3 lines): 'if (kDebugMode) print(st);' middle-of-loop noise in the stop-list picture upload handler — 'st' is event.status, the catch block already logs via ExceptionUtils No behaviour change. Tracker and AGENTS.md already up to date with Phase 2A/2B/2C. All 248 tests pass. commit 9a524a160c8f08ab81d7d9c3ed7f504d97f08f6e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:18:58 2026 -0400 docs(order-bloc): record Phase 2B and Phase 2C in the tracker Phase 2B (1fd5301829 + af934c4fd1): 6 IOrderBloc mixin mutable fields migrated to OrderState. Mixin is now pure-math-only. Phase 2C (42d4835751): 7 widget-side direct DOrder field mutations replaced with a single Order$DOrderNoteChanged event. No widget code reaches into bloc state to write any more. commit 42d483575151e4d8b25e7573b51298d4457bb828 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:18:03 2026 -0400 refactor(order-bloc): phase2c introduce Order$DOrderNoteChanged event Eliminates the last pattern of widgets directly mutating DOrder fields through the orderBloc getter. Seven sites across Leaf/Paloma/presentation themes used to do: orderBloc.currentOrder.updateable = true; orderBloc.currentOrder.note = note; orderBloc.add(const Order$Reloaded()); That worked — the getter returns state.dOrder by reference, so the field writes land on the state's DOrder object, and the follow-up reload fires the state transition that widgets observe. But it was fragile: if the caller forgot the reload dispatch, the UI would miss the update silently. Introduces Order$DOrderNoteChanged({required String note}) + handler _dOrderNoteChanged in order_bloc.caching.dart. The handler mirrors the legacy behaviour (mutates state.dOrder in place, then dispatches Order$Reloaded) so runtime semantics are identical. Updated sites (7): - leaf_portrait_review_order_screen_parts - leaf_order_album_actions (2 sites) - leaf_order_type_selector - leaf_album_order_screen_bottom_bar - paloma_order_actions - leaf_register_more_menu_button Each now dispatches Order$DOrderNoteChanged + Order$CanSendChanged and drops the explicit Order$Reloaded (the handler does it). No behaviour change; widgets no longer reach into DOrder fields. All 248 tests pass. commit af934c4fd17b40e8fc981beb8ed69d5e6a583033 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:10:31 2026 -0400 refactor(order-bloc): phase2b.2 migrate canSend to OrderState via event Removes the last mutable field (bool canSend) from the IOrderBloc mixin. The mixin is now purely a pure-discount-math carrier — no mutable state at all. canSend is exposed as a getter returning state.canSend. Widgets that used to mutate orderBloc.canSend = true now dispatch Order$CanSendChanged(canSend: true), handled by a new _canSendChanged in order_bloc.caching.dart that emits state.copyWith(canSend: event.canSend). Bloc-internal writes (28 sites across 14 part files) were rewritten: - sites inside event handlers with emit in scope → emit(state.copyWith(canSend: ...)) - sites inside helper methods without emit (addModifiers, item_quantity.helpers decrementAll helper) → add(const Order$CanSendChanged(canSend: true)) (self-dispatch) - order_mgmt_list _splitted folds canSend: true into the existing emit(state.copyWith(orderItems: ordersBuffer, canSend: true)) call Widget writes (9 sites across leaf/paloma/taylor themes): - leaf_order_album_actions.dart (2), leaf_album_order_screen_bottom_bar, leaf_order_type_selector, leaf_portrait_review_order_screen_parts, leaf_register_more_menu_button, paloma_order_actions, order_item_tool_bar, order_options_menu (taylor) — all dispatch Order$CanSendChanged(canSend: true) **IOrderBloc mixin now has zero mutable fields.** All 248 tests pass. commit 1fd53018290db005f836068e351c4c76aa5e1f88 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 21:02:25 2026 -0400 refactor(order-bloc): phase2b.1 migrate 5 internal mixin fields to OrderState Removes the 5 pure-internal mutable fields from the IOrderBloc mixin: orderType, orderOperationType, canHoldSend, canPrint, totalCosts. None of them had any widget references, so each becomes a getter on OrderBloc that routes to state. OrderState: adds orderOperationType (default OrderOperationType.create). The other 4 fields already existed in OrderState (canHoldSend, canPrint, orderType, totalCost). IOrderBloc mixin: shrinks to just canSend (still has 9 widget writes; migrates in Phase 2B.2) plus the pure discount math methods. Bloc-internal write sites rewritten as state.copyWith emits: - close(): drops the orderType/orderOperationType resets - fetch.dart: reset branch folds orderType+orderOperationType into an existing emit; remote-load branch uses canHoldSend in state.copyWith; the 'else' branch emits orderType: OrderType.local - tabs.dart: _fill/_createTabs gained a required totalCostsBuffer param (List) that mirrors the existing labelsBuffer pattern. _applyTabs emits totalCost: [...next.totalCosts] instead of mutating the mixin field in place. - reload.dart: two totalCosts = ... sites fold into state.copyWith - fetch.dart top: adds a totalCostsBuffer local that _createTabs mutates, then emits it alongside the quickOrders/currentIndex/increment emits. Test fixes: two 'bloc.orderOperationType = update' seeds folded into the same bloc.emit(state.copyWith(...)) call that seeds dOrder/tabs/ orderItems. canSend is NOT migrated yet — its 9 widget writes need Phase 2B.2. IOrderBloc mixin surface shrinks from 6 fields to 1. All 248 tests pass. commit 8b02c2750e9a204e642010a450e00c6f695be1cb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:53:13 2026 -0400 docs(order-bloc): tighten getter docstrings now that AGENTS.md owns the pattern Rewrites the stale 'PR2 target' comment block above the working-data getters — Phase 2A is DONE, these aren't mutable instance fields any more, and the PR1/PR2 split framing no longer applies. The new comment block frames the getters as convenience accessors for widgets that already hold an OrderBloc reference, and points at AGENTS.md for the full read-path / write-path pattern. Trims per-getter docstrings to one line each — the write semantics (emit via state.copyWith, prefer BlocBuilder for new code, etc.) now live in a single canonical place (AGENTS.md) instead of being repeated five times. No behaviour change. commit dd75899da30ae1496f1e840978eed739fc439949 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:52:04 2026 -0400 refactor(order-bloc): prune 15 dead OrderWorkingData fields Phase 2A migrated most working-data fields directly to top-level OrderState fields (dOrder, orderItems, tabs, dOrderTaxes, rTableDetails, sAutomatedPoint, currentIndex, canSend, ...) rather than to workingData, so those duplicate entries on OrderWorkingData became dead ballast. An audit of workingData. references across lib/ and test/ found zero live uses for: clients, sAutomatedPoint, paymentOrderDataList, dOrderTaxes, tOrderDiscounts, orders, labels, currentOrder, quickOrders, currentIndex, rTableDetails, isAptito, isLeaf, isPaloma, autoGratuity Rewrites OrderWorkingData to keep only the 14 fields that are still live: selectedClientId, increment, switchedItems, askQuantity, dOrderDelivery (+ clearDOrderDelivery), servicePercentFromObjectId, orderTypeChanged, originalPersisted{OrderType,ObjectId,ClientId, DOrderTaxes,RTableDetails}, orderItems (SItem catalog), allOriginalItems. Class docstring documents the surviving categories. order_working_data_test.dart trimmed to match — removes the dead-field expectations and the copyWith assertions for the removed kwargs; still covers default values, empty equality, props-based equality, partial-copyWith semantics, and no-arg copyWith. All 248 tests pass. commit ce206a4ea0c00171b09940fcd2e4972fecbc6d74 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:48:21 2026 -0400 docs(order-bloc): AGENTS.md documents new OrderState read pattern Updates the 'OrderState transient working data' section to reflect Phase 2A completion. Documents: - How widgets read via BlocBuilder / BlocSelector / context.select - The convenience getters on OrderBloc (currentOrder, orders, labels, currentIndex, increment) and when to prefer state-based reads - The anti-pattern of mutating orderBloc.currentOrder.x = Y from new widget code (compiles but doesn't fire a state transition) - The handler-side write pattern: seed local buffer -> mutate -> emit BEFORE dispatching Order$Reloaded / _clearOrderTypeDraft - When to use internal events (Order$SItemCatalogRefreshed, Order$SwitchedItemMarked) for writes originating outside handlers commit d6d1253a7b00c6aae582f1149e310b10eaeffeed Merge: 0e1399d64c f10fdfc21f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:43:41 2026 -0400 Merge branch 'NewOrderBloc' into dev commit f10fdfc21f377acba8953ee79bbcee39a7930535 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:42:42 2026 -0400 docs(order-bloc): mark Phase 2A and Step 1 DONE — all 12 fields migrated Updates the Progress Tracker to reflect the complete Phase 2A field migration shipped in commits a009396f52..74738966d0 on NewOrderBloc. Zero mutable working-data fields remain on OrderBloc; all reads route through state-backed getters or state.copyWith emits. 248 tests green at every commit. commit 74738966d0e55b6ce6f296c66850eb9ea00bfe6c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:41:44 2026 -0400 refactor(order-bloc): phase2a slice 3.8 migrate currentOrder to OrderState Removes the last mutable working-data field 'DOrder currentOrder' from OrderBloc. currentOrder is now a getter returning state.dOrder, which preserves widget code that mutates currentOrder fields directly (e.g. 'orderBloc.currentOrder.orderType = X') — those mutations land on the DOrder reference shared by state, and become visible at the next emit. The 14 reassignment sites across 8 part files were converted to emits, mostly folded into adjacent state.copyWith calls: - close(), fetch.dart x4, item_quantity.dart x1, reload.dart x2, save.dart x3, submit.dart x3 - For sites that were already calling state.copyWith(dOrderTaxes: ..., rTableDetails: ...) right after the assignment, dOrder: was added to the same emit — no extra round-trips. Test fixes: order_bloc_order_type_draft_test.dart and order_bloc_submit_failure_test.dart each had a 'bloc.currentOrder = X' seed in their fixture builder; rewritten as bloc.emit(state.copyWith(dOrder: seedDOrder, ...)). PHASE 2A COMPLETE: zero mutable working-data fields remain on OrderBloc. All 248 tests pass. commit 542897f3ea2e4486f0d3e830536af9b427deab91 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:36:57 2026 -0400 refactor(order-bloc): phase2a slice 3.6 retry migrate orders to OrderState Removes the mutable Map> orders field from OrderBloc. orders is now a getter returning state.orderItems. Map values are shared by reference, so existing in-place mutations (orders[k]?.add(...), orders.addEntries(...), etc.) continue to work unchanged — they mutate the Map already stored in state. The 12 reassignment sites were converted to emits: - close(): drops the orders = {} cleanup - fetch.dart: reset branches now emit state.copyWith(orderItems: ...); post-calculation assign uses emit too - item_quantity.dart: both _tOrderDecremented branches emit calculation.orders - discounts.dart: _tOrderDiscountAdded emits _ordersCopy - submit/save/reload: emit calculation.orders right after currentOrder assign - tabs.dart _applyTabs: folds next.orders into the existing emit - order_mgmt.order_mgmt_list.dart _splitted: introduces ordersBuffer built up locally and emitted at the end Test fixes: bloc.orders = {0: []} setter calls in two test files became bloc.emit(state.copyWith(orderItems: const {0: []})). Down to 1 mutable bloc field: 'currentOrder'. All 248 tests pass. commit 0e1399d64ce3a11e423d8d86550a30290f5bbbf0 Merge: f4b422b61c b386454189 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:31:56 2026 -0400 Merge branch 'NewOrderBloc' into dev commit b386454189f8109727c0b51b5b1a56cb9f5025be Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:25:47 2026 -0400 refactor(order-bloc): phase2a slice 3.6 migrate increment to workingData Removes the mutable int increment field from OrderBloc. increment is now a getter returning state.workingData.increment. Since int is immutable, _fill and _createTabs can't mutate a shared reference; instead their signatures gained 'required int currentIncrement' and 'return the new increment' — callers thread the value through and emit it to workingData at the end. - tabs.dart: _fill returns int; _createTabs returns int; _applyTabs folds the increment into the emit alongside tabs/currentIndex - fetch.dart: seeds a handler-local 'var localIncrement = 0;' at the top, emits workingData.copyWith(increment: 0) in the reset path, both _createTabs call sites consume and update localIncrement, and the subsequent emits persist the final value to workingData orders is NOT migrated in this slice — its 30+ in-place mutation sites across 10 part files require a larger coordinated refactor that doesn't fit this slice boundary. It stays as a bloc field for now. Down to 2 mutable bloc fields: 'orders' and 'currentOrder'. All 248 tests pass. commit f4b422b61ca5afb9e212f94309b6a0944d712ed9 Merge: 1a61abacb8 6377fbab6b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:19:51 2026 -0400 Merge branch 'NewOrderBloc' into dev commit 6377fbab6b2508fa99090f32d156038850b1f810 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:17:13 2026 -0400 refactor(order-bloc): phase2a slice 3.5 migrate labels to OrderState.tabs Removes the mutable Set labels field from OrderBloc. labels is now a getter returning state.tabs — the 19 widget read sites across Leaf/Paloma/Aptito keep working transparently via the getter. Bloc-side writes (which mutate .add/.clear in place) required a small refactor: - tabs.dart: _createTabs and _fill now take a required Set labelsBuffer and mutate it instead of the bloc field. _snapshotTabs reads from state.tabs. _applyTabs emits state.copyWith(tabs: next.labels) together with currentIndex. - fetch.dart: _fetch now seeds a handler-local labelsBuffer = {...state.tabs} at the top. The 7 in-handler mutation sites (labels.add × 4, labels.toList × 2, labels = tabTextsList.toSet()) all operate on the buffer. Both _createTabs call sites pass the buffer through. Before dispatching Order$Reloaded the handler emits state.copyWith(tabs: labelsBuffer, quickOrders: ...) so reload reads the new tabs. - fetch.dart reset branch: the initial-load emit now also clears state.tabs (was previously re-set by the bloc field assign). - order_bloc.dart close(): drops the labels = {} cleanup. Tests: - order_bloc_order_type_draft_test.dart and order_bloc_submit_failure_test.dart each had one 'bloc.labels = {"1"}' setter call; rewritten as bloc.emit(state.copyWith(tabs: ...)). Down to 3 mutable bloc fields (plus two getters). All 248 tests pass. commit 7eb6ed5b3097fc8dd8c127e972c2fc0885b3b017 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:11:18 2026 -0400 refactor(order-bloc): phase2a slice 3.3 migrate currentIndex to OrderState Converts the mutable int currentIndex field on OrderBloc into a backwards-compatible getter that reads state.currentIndex. All existing widget read sites (orderBloc.currentIndex in 6 places across Leaf and Taylor) keep working transparently via the getter — no widget edits required in this slice. Write sites: - fetch.dart (2 sites): reset emits state.copyWith(currentIndex: 0) — once bundled with the other reset emit, once standalone after _createTabs(event.numberOfGuests) - tabs.dart _applyTabs: now takes an Emitter and emits state.copyWith(currentIndex: next.currentIndex) instead of writing the bloc field; _snapshotTabs reads state.currentIndex; callers (_tabAdded/_tabUpdated/_tabRemoved) pass their emit through - reload.dart: drops the redundant currentIndex: currentIndex kwarg (state already holds the value) - order_bloc.dart close(): drops the currentIndex = 0 cleanup Down to 4 mutable bloc fields (plus the getter). All 248 tests pass. commit 15d60b113e62b7220f634c17429a675fa61d6de9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:07:22 2026 -0400 refactor(order-bloc): phase2a slice 3.4 migrate sAutomatedPoint to OrderState OrderState.sAutomatedPoint already existed and a Paloma widget already read it via state.sAutomatedPoint. Removes the duplicate mutable bloc field by: - fetch.dart: replaces sAutomatedPoint = apisFromLocal with emit(state.copyWith(sAutomatedPoint: apisFromLocal)) and reads the cashClientId fallback from state.sAutomatedPoint - item_quantity.helpers.dart: _resolveFallbackClientId now reads state.sAutomatedPoint - reload.dart: the state.copyWith at the end of _reload now passes state.sAutomatedPoint instead of the bloc field - leaf_order_album_actions.dart (3 sites), paloma_order_actions.dart (2 sites), paloma_order_screen_parts.dart (1 site): all four widget files now read orderBloc.state.sAutomatedPoint Down to 5 mutable bloc fields. All 248 tests still pass. commit 65a3f5bee0f3e1437d7bd7fb63200ce4342947ec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:04:37 2026 -0400 refactor(order-bloc): phase2a slice 3.2 migrate switchedItems to workingData Removes the mutable Map switchedItems field from OrderBloc. Adds a new internal event Order$SwitchedItemMarked and a matching handler _switchedItemMarked in caching.dart that writes a new entry into state.workingData.switchedItems via copyWith. aptito_order_item.dart was the only widget that referenced this Map. The two read sites in _handleStatusTap and tOrderStatusOnTap now read from orderBloc.state.workingData.switchedItems, and the two in-place write sites (which were directly mutating the bloc's Map by index assignment) now dispatch Order$SwitchedItemMarked. Down to 6 mutable bloc fields. All 248 tests still pass. commit 03e048e8d0a8da731fc9e09b8785b61e7eb099f2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 20:02:10 2026 -0400 refactor(order-bloc): phase2a slice 3.1 migrate SItem catalog to workingData Removes the mutable List orderItems field from OrderBloc. The audit initially flagged this as widget-coupled but on closer look order_split_screen.dart receives its orderItems as a widget parameter (Map>, a different concept entirely) and nothing actually reads the bloc's SItem catalog field. The catalog was populated by a stream listener in OrderBloc's constructor. Since bloc.emit can only fire inside event handlers, the listener now dispatches a new internal event, Order$SItemCatalogRefreshed, handled by a new _sItemCatalogRefreshed in order_bloc.caching.dart that writes the refreshed list into state.workingData.orderItems. Readers (reload.dart, item_quantity.dart, item_quantity.helpers.dart) now source the catalog from state.workingData.orderItems. fetch.dart's redundant reset is dropped (OrderWorkingData.empty already resets it). Down to 7 mutable bloc fields. All 248 tests still pass. commit 1a61abacb836fd5f1ae85d07cda7bfe99b599659 Merge: ebfa55abbf 1463e0cf5c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:58:30 2026 -0400 Merge branch 'NewOrderBloc' into dev commit 1463e0cf5c298b7206e9bef43493f951e89f2196 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:54:06 2026 -0400 refactor(order-bloc): phase2a slice 2.2 migrate rTableDetails to OrderState Removes the mutable List rTableDetails field from OrderBloc. Same pattern as Slice 2.1 (dOrderTaxes): handlers seed a local mutable copy from state.rTableDetails, run existing logic (including .add/.markActiveAutoGratuityRowsDeleted/clear+addAll), then emit the list back via state.copyWith(rTableDetails: ...) before any Order$Reloaded dispatch or _clearOrderTypeDraft call. Notable changes per file in lib/features/order/bloc/order_bloc/: - taxes_fees.dart: each handler now reads state.rTableDetails into the cubit and emits the cubit's returned list directly (replaces the old ..clear()..addAll dance). - caching.dart: _refreshOrderTypeDraft folds the reverted-details path into the existing emit; _materializeOrderTypeDraftForPersistence now RETURNS the new RTableDetail? instead of writing it (callers in submit/save/print add to their local list). - submit/save: emit dOrderTaxes+rTableDetails to state immediately before each _clearOrderTypeDraft call so the snapshot baseline reflects the in-flight modifications (matches prior bloc-field behaviour). - fetch.dart: both reset and load-existing branches write via state.copyWith(rTableDetails: ...). - discounts.dart, item_quantity.dart, item_add.dart: seed local copy in handlers; emit folded into existing emits before reload dispatch. Test fixes: - order_bloc_order_type_draft_test.dart: 5 sites switched from bloc.rTableDetails to bloc.state.rTableDetails; the bloc.rTableDetails = X seed call became bloc.emit(state.copyWith(rTableDetails: ...)). - order_bloc_submit_failure_test.dart: same seed rewritten as a single emit covering both lists. Down to 8 mutable fields on OrderBloc. All 248 tests still pass. commit 59e0f67e3d6829083460c1ce04686aab5533633e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:44:53 2026 -0400 refactor(order-bloc): phase2a slice 2.1 migrate dOrderTaxes to OrderState Eliminates the mutable List dOrderTaxes field on OrderBloc. Every handler that touched it now seeds a handler-local mutable copy from state.dOrderTaxes, runs the existing logic (including the in-place orderFeeTaxMerger.merge calls), and emits the merged list back via state.copyWith(dOrderTaxes: ...) before any Order$Reloaded or Order$Submit dispatch — so subsequent handlers (which now also seed from state) observe the latest value. Files touched in lib/features/order/bloc/order_bloc/: - order_bloc.dart: drop the mutable field + close() cleanup - reload.dart: seed local copy at handler top; existing copyWith(dOrderTaxes: ...) at the end emits the mutated list - submit.dart, save.dart, print_handler.dart: seed local copy at handler top (the merge result is consumed by the local var and the remote-order calls in the same handler) - discounts.dart: both _dOrderDiscountAdded and _tOrderDiscountAdded seed local copies, fold the merged list into the existing emit (or add a dedicated emit before dispatching reload) - item_quantity.dart: _tOrderDecremented seeds local + emits before dispatching submit - caching.dart: _clearOrderTypeDraft reads via state.dOrderTaxes; _refreshOrderTypeDraft folds the reverted-tax write into the existing workingData emit - fetch.dart: both reset and load-existing branches now write via state.copyWith(dOrderTaxes: ...) - order_mgmt.order_mgmt_list.dart: _removeAll reads via state.dOrderTaxes Test fixes: - order_bloc_order_type_draft_test.dart: 5 sites switched from bloc.dOrderTaxes to bloc.state.dOrderTaxes; the bloc.dOrderTaxes = X setter call became a bloc.emit(state.copyWith(dOrderTaxes: ...)) - order_bloc_submit_failure_test.dart: same bloc.dOrderTaxes = X seed rewritten as bloc.emit(...). All 248 tests still pass. commit d2d672d5ad88ea894de97eb54f76ba9dcfdf5f86 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:37:20 2026 -0400 docs(order-bloc): record slice 1.1/1.2 progress and slice 1.3 discovery Slice 1.1 and 1.2 shipped two small field removals (dOrderDelivery, stale autoGratuity). Slice 1.3 audit of dOrderTaxes/rTableDetails/ increment uncovered cross-handler coupling via orderFeeTaxMerger's in-place mutations plus 43 Order$Reloaded dispatches that rely on the bloc field being fresh at dispatch time — so those three fields are moved into Slice 2 scope where the emit-before-dispatch discipline already has to land. commit 1436b88c5810737aec50c8c9d29960ff5c62556a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:34:39 2026 -0400 refactor(order-bloc): phase2a slice 1.2 remove stale bloc autoGratuity field The mutable OrderBloc.autoGratuity field was only ever written to (from reload.dart L47/L50) and never read elsewhere — state.autoGratuity is the real source of truth and is already emitted at reload.dart:336. Converts the two writes in _reload into a local SNDSType? variable and drops the field from order_bloc.dart. No behavioural change. commit a009396f52eebe42bf3c745b1620cde654b858d9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:33:13 2026 -0400 refactor(order-bloc): phase2a slice 1.1 migrate dOrderDelivery to workingData Removes the mutable dOrderDelivery field from OrderBloc and routes all reads/writes through OrderState.workingData. - OrderWorkingData.copyWith: add clearDOrderDelivery flag so nullable loads from aOrder.dOrderDelivery can write null. - fetch.dart: drop the redundant pre-reset write (OrderWorkingData.empty already resets it) and fold the aOrder.dOrderDelivery assign into the existing tOrderDiscounts emit. - submit/save/print_handler: introduce handler-local var seeded from state.workingData.dOrderDelivery; when createDOrderDelivery mints a new value, emit it back so later handlers observe it. - order_bloc.dart: delete the field and the close() cleanup. All 248 tests still pass. commit ebfa55abbfb2dee1543af2744bd1d7d67abbdf5b Merge: 6a8e2fa558 b19d120a9d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:16:23 2026 -0400 Merge branch 'NewOrderBloc' into dev commit b19d120a9df01f369e9f890d76b97fe34743982b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:15:55 2026 -0400 Revert "refactor(order-bloc): phase2a prep1 OrderWorkingData.copyWith clearX flags" This reverts commit 3895b659d8d4effbcf87e03f58a9428943b03675. commit 87a84e34e814b5b2261256914f97d8f662052add Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:15:32 2026 -0400 Revert "refactor(order-bloc): phase2a slice A.1 migrate dOrderDelivery to workingData" This reverts commit 64f37c8c0e6fa86689f579514fd9eb9dc987ceeb. commit 64f37c8c0e6fa86689f579514fd9eb9dc987ceeb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:08:58 2026 -0400 refactor(order-bloc): phase2a slice A.1 migrate dOrderDelivery to workingData Deletes the mutable dOrderDelivery field from OrderBloc and routes the 4 in-bloc uses (fetch assign, save/submit/print conditional create) through OrderState.workingData. Uses a handler-local variable at the top of each event handler so existing read sites stay unchanged and writes are emitted back via copyWith. fetch: aOrder.dOrderDelivery assignment now folded into the existing tOrderDiscounts emit, with clearDOrderDelivery when the aOrder value is null. save / submit / print_handler: each _fnHandler introduces `var dOrderDelivery = state.workingData.dOrderDelivery;` at the top, the conditional `createDOrderDelivery` assignment emits workingData, and remote-order calls pass the local var (unchanged). Removes the field from order_bloc.dart and the close() cleanup. 195 unit + 55 display tests still green. Part of Phase 2A Slice A tracked in ORDER_BLOC_DECOMPOSITION.md. commit 3895b659d8d4effbcf87e03f58a9428943b03675 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 19:05:57 2026 -0400 refactor(order-bloc): phase2a prep1 OrderWorkingData.copyWith clearX flags Adds explicit-clear companion flags for all nullable fields in OrderWorkingData.copyWith so callers can reset a field to null. The standard `value ?? this.value` pattern cannot distinguish "not passed" from "explicitly null", which blocks migrating the remaining mutable bloc fields (dOrderDelivery reset in fetch, DOrder.empty() resets, etc.) to workingData. Prerequisite for Phase 2A Slice A-G field migration tracked in refactoring/ORDER_BLOC_DECOMPOSITION.md. Adds 2 unit tests covering the new flags. Existing tests unchanged. commit 405cae83be89fda5acc17dd2bdd055a470209cf2 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 18:37:51 2026 -0400 docs(order-bloc): phase 2a audit with stale-state-sync blocker for PR2 Add full 12-field widget-coupling audit. Key finding: state.tabs and state.orderItems (Map) are emitted ONLY from reload.dart, so they are stale between non-reload handler emissions. Migrating widget reads to state before the part-file writes are converted to emit() would introduce stale-state bugs. Safe completion requires converting 15+ currentOrder writes, 20+ rTableDetails mutations, etc. to emit(state.copyWith(...)) first. Documented as PR2 scope. commit ffd42c16935873ad197016d177130249284e03c8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 18:31:48 2026 -0400 docs(order-bloc): mark phase2 2b/2c/2d DONE (PR1 scope) Phases 2B (discount add handlers), 2C (item add + quantity), and 2D (persistence helpers) have reached the end of their safely extractable pure-logic surface without coupling to the remaining mutable bloc fields. Remaining inlined logic in each phase is tightly coupled to Phase 2A working fields and will be decomposable after those fields move to OrderState / OrderWorkingData in the field-migration pass and widget read-path migration. Out-of-scope deferred items (16 fee/tax loops outside lib/features/order/bloc/, _splitted table-detail SQL round-trip) remain as tracker notes. commit 9c568cbdd8c36c13485ff72b73647717a69bba76 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 18:07:54 2026 -0400 refactor(order-bloc): phase2 2d extract OrderDiscountsCubit.markDOrderDiscountsDeletedForZeroSubtotal Dedupe the triplicated DOrder-level discount mark-deleted loop from submit/save/print handlers into a single method on OrderDiscountsCubit. Each ~6-line inline block collapses to a 3-line call. 4 new unit tests cover DOrder-level match, TOrder-level skip, dOrderId='0' skip, and empty-list paths. commit 1e618f9ec50c1b5946ff85cc5d5216c55e8f3a21 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 18:05:04 2026 -0400 refactor(order-bloc): phase2 2d extract OrderFeeTaxMerger.markServiceDiscountDeleted Dedupe the triplicated svcDiscountId mark-deleted loop from submit/save/print handlers into a single method on OrderFeeTaxMerger. Each ~5-line inline block collapses to a 4-line call. The helper null-guards svcDiscountId to accept DOrder's nullable field. 3 new unit tests cover match, null svcDiscountId, and empty-list paths. commit cc986c43e09f0e26ba951cc9b9e37ceba0dbc48a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 18:01:59 2026 -0400 refactor(order-bloc): phase2 2d extract OrderTaxesCubit.applyAutoGratuityTaxForRecalc Dedupe the add/update-or-append autogratuity tax branch from save and print_handler handlers into a single method on OrderTaxesCubit that also clears any stale removal-reason marker left on rTableDetails. 5 new unit tests cover append, update, no-op match, stale-marker-cleared, and manual-reason-preserved paths (24 tests total on the cubit). save.dart's redundant 'force write when new is 0' branch is dropped; in the only case it differed from print.dart's version (existing=0, new=0) the write was a no-op, so semantics are preserved. commit fe92b2108665be664301053d8fdd5b049e76e241 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:59:27 2026 -0400 refactor(order-bloc): phase2 2d extract OrderTaxesCubit.clearAutoGratuityTaxForRecalc Dedupe the identical autogratuity-removal branch from submit/save/print/reload handlers into a single method on OrderTaxesCubit. Callers now switch on the returned removal-reason row (or null) and append/capture it locally. 3 new unit tests cover no-match, unpersisted-remove, and persisted-zero-and-audit paths (19 tests total on the cubit). commit 772957bdb3892618fd438b1575b61e837612f1f9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:34:31 2026 -0400 docs(order-bloc): mark phase2 2e DONE (PR1 scope) after constructor tidy commit 83da3836f3c924e00fd75c012dc7db1133638611 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:34:04 2026 -0400 refactor(order-bloc): phase2 2e constructor tidy -- group deps and fields by role commit c0b0fb9a7532d1d0236fadafda38ba2f7823c074 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:30:40 2026 -0400 refactor(order-bloc): phase2 2e strip more dead comment blocks in persistence handlers commit 9ec23dab33a71d7f40f37253fe2558a798e783eb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:28:44 2026 -0400 refactor(order-bloc): phase2 2e strip dead comment blocks from i_order_bloc, fetch, order_mgmt commit 6912ef4fa8275d82010578e66528eee4ac8ff8fd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:25:48 2026 -0400 docs(order-bloc): record phase2 2e cleanup slice in progress tracker commit 313793c37e04538a9d65af69d7af6b57088b446a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:25:27 2026 -0400 refactor(order-bloc): phase2 2e dead-code cleanup in submit/save/print handlers commit 683f1b9e8e0329275d06090e8c39169314b1a81e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:20:44 2026 -0400 fix(order-bloc): remove redundant default argument in working data test commit a161845e91b2846394f8a76401c6c7ae3daa3288 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:16:52 2026 -0400 docs(order-bloc): link PR1 decomposition PR #7293 in tracker Made-with: Cursor commit fede168adbf6dbc9284c9faee3033a3ed0c677f0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:16:29 2026 -0400 docs(order-bloc): PR1/PR2 split and Phase 3 prompt for widget migration Document merge strategy in ORDER_BLOC_DECOMPOSITION.md; extend PROMPT_FOR_AI.md with Phase 3 (PR2) instructions for OrderState field reads. Made-with: Cursor commit 28aa90ad57a0f07e56388972f3477dab419f988d Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:05:31 2026 -0400 test(order-bloc): phase2 cover OrderTypeDraftManager.resolveObjectIdForPersistence commit 4151772cfd2cdb12a0408f1658da28a89d7ff881 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:04:43 2026 -0400 test(order-bloc): phase2 cover DOrder.ensureId, DOrderType.isDeliveryOrPickup, RTableDetail autogratuity extensions commit f599c487189dbecde6e74ad58cd76f576ee03740 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:03:49 2026 -0400 test(order-bloc): phase2 cover OrderTaxesCubit.buildAutoGratuityReason commit eebbf57f753949db2d33fa000fc45d922ee79305 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:02:54 2026 -0400 test(order-bloc): phase2 cover OrderItemsCubit helpers added this session (21 new tests) commit 2b3f757429ec251e292e1506e75e77e633ca6bec Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 17:01:34 2026 -0400 test(order-bloc): phase2 add tests for OrderTabsCubit + OrderCalculationService new helpers commit 57b41bc8cd5675f5fb4026495ae9a193ecd9b992 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:57:56 2026 -0400 docs(order-bloc): refresh AGENTS.md with complete post-decomposition cubit/helper surface commit 2bbdb1f173dc4fc1fa481320886da298005d47b1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:56:49 2026 -0400 refactor(order-bloc): phase2 extract OrderTabsCubit.parseSeatIndexFromLabel commit 6b6f30b3dd1e4fa8d3094fbb71ec2e9767ca9ec7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:53:28 2026 -0400 refactor(order-bloc): phase2 promote 'center' tab label to OrderTabsCubit.centerTabLabel const commit 5f0dccbd8d0b5044e8e17d3d5a9538be12d9cdd6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:43:53 2026 -0400 refactor(order-bloc): fold delivery objectid clearing into resolveObjectIdForPersistence commit 69ec15064fda3bdff16a0f7eaae9ff4b4b521ba9 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:42:50 2026 -0400 refactor(order-bloc): phase2 extract _resolveFallbackClientId helper commit be883dfaa179fbe1b9cc2d22c9aab625209165fa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:41:55 2026 -0400 refactor(order-bloc): phase2 extract _stampCurrentOrderChangeId (3 sites) commit 34e4247539654ae2918464165193eb108088039c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:41:02 2026 -0400 refactor(order-bloc): phase2 extract _applyDeliveryClientIdIfNeeded (3 sites) commit ee8dd74f10165e26f6b190b0c7dc32493065d2a4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:40:02 2026 -0400 refactor(order-bloc): phase2 extract _ensureCurrentOrderClientId (3 sites) commit 73190ffa02feaaae1f11bffcd3addf273c11be9c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:39:03 2026 -0400 refactor(order-bloc): phase2 extract _ensureCurrentOrderEmployeeId (3 sites) commit 7dbfa950056e0fbc9c517417b48b4910bb313e69 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:37:47 2026 -0400 refactor(order-bloc): phase2 extract _loadEmployeeIdOrEmit helper (5 sites) commit ce5fd26b1db79ca9fbcaad4dbeb41a24f3df007a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:34:46 2026 -0400 refactor(order-bloc): phase2 extract _stampDOrderWithStation helper (3 sites) commit f1e1ef9c249963c73333f7327db265fb8ab796f7 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:33:36 2026 -0400 refactor(order-bloc): phase2 extract stampTOrdersAsNow (3 sites) commit cab6e80d5e77b60c4bf871408145bd69b68247e6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:32:26 2026 -0400 refactor(order-bloc): phase2 extract resolveObjectIdForPersistence (3 sites) commit 15b5d99ab0a099a0d83e078d946041cbe81481dd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:30:49 2026 -0400 refactor(order-bloc): phase2 extract _checkNotOwnerOrEmit helper (4 sites) commit fb51cd8f9dcce7969a02caab78dda2101f003b76 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:29:26 2026 -0400 refactor(order-bloc): phase2 add DOrder.ensureId() (3 sites) commit 24893299db7e7336a1e1193ed028837c902e0b9f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:27:35 2026 -0400 refactor(order-bloc): reuse _showRemoveCausesNegativeSumSnackBar at second site commit 5a2443a3e15aad8907363234c11bfe96ec8bc183 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:22:50 2026 -0400 refactor(order-bloc): phase2 add DOrderType.isDeliveryOrPickup extension (11 sites) commit 53a18af9708b0de83a2a681d4ac6151f652f5937 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:21:00 2026 -0400 refactor(order-bloc): phase2 extract OrderTabsCubit.effectiveGuestCount (4 sites) commit cb9aca7a27c91adfe163d225b5d89db45d7226c1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:19:32 2026 -0400 refactor(order-bloc): flatten void-modifier loop with continue + comment commit 11c0e6a383c061fcf8fae188d1c51394d28c27d1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:18:10 2026 -0400 refactor(order-bloc): phase2 extract markActiveAutoGratuityRowsDeleted (4 sites) commit 6e889d3d6e1ec88453b087f8d6c2b547147c9b61 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:16:49 2026 -0400 refactor(order-bloc): phase2 promote autoGratuityRemovalReason to const (8 sites) commit 0bf04bda79b92f554b1205b096b54d94f48cc159 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:13:55 2026 -0400 refactor(order-bloc): phase2 extract markTOrderAsRejected helper commit d663177079b93388f1f2aee3a44fe6fb5023ee38 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:12:28 2026 -0400 refactor(order-bloc): phase2 extract unwrapAll helper (3 sites) commit 8260bd644bf4b2878589a7da6efa56d9ac35dcfe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:11:05 2026 -0400 refactor(order-bloc): reuse rescaleModifierQuantities in incrementQuantity + changeWeight commit 41a52ea7003bddbccd5a89b1ea6082515925d9ff Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:10:23 2026 -0400 refactor(order-bloc): phase2 extract rescaleModifierQuantities helper commit 6d5713524d0c962137a25a9d68201981f62c5cb6 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:09:12 2026 -0400 docs(order-bloc): sync progress tracker with Phase 2C/2D slice backlog commit 20d5ad89b2f8606212d0bc5721190905756956d4 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:07:54 2026 -0400 refactor(order-bloc): phase2 extract getActiveAutoGratuityRow extension (16+ sites) commit 106d68e6fe7d892bee2bbaeedc08a47b28e85d4b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:03:06 2026 -0400 refactor(order-bloc): phase2 extract _nonEmptyItemsAfterRefuseHandling helper (4 sites) commit 190bc47801b6308b415e0a9e876d24b9735709da Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:01:43 2026 -0400 refactor(order-bloc): phase2 extract deepCopySeatMap (3 call sites) commit 2a7ec02c6100a5cae8b0e3190fd1059de61c8e07 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 16:00:05 2026 -0400 refactor(order-bloc): phase2 extract computePaymentSummary commit 8cb7d5017a094821d07cea7ca9bf97083ae96a6e Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:57:36 2026 -0400 refactor(order-bloc): phase2 extract canSimplyClearAllItems predicate commit 7ab1fabe006f1a9b916025424ca4adb801e829c5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:56:41 2026 -0400 refactor(order-bloc): phase2 extract resetDOrderTotals helper commit 4f310c0048757d9d086feba43fe7970a02ffa3fe Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:55:42 2026 -0400 refactor(order-bloc): phase2 extract cloneTOrderWithFreshIds for reorder flow commit a32a4fa93c30ae428a08ef3a79255b98a22ecc49 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:54:05 2026 -0400 refactor(order-bloc): phase2 extract aggregateByRefuseId + sortTOrdersByPersistedDt commit 575722020783bf5c416b45082339b778e49bb550 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:52:13 2026 -0400 refactor(order-bloc): phase2 extract removalNeedsValidation predicate commit 2ac8ea32e2475bad3e83c21ec4c77b9bc6a308af Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:49:42 2026 -0400 refactor(order-bloc): phase2 extract reassignTOrderTaxIds (5 call sites) commit 08c9ffbd06184e7aed5ae04b64f516f1055ab8a0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:43:14 2026 -0400 docs(order-bloc): phase2 2e -- update AGENTS.md with post-decomposition module map commit 1c4874adc86670711a965df09e112a162e55c3af Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:41:54 2026 -0400 refactor(order-bloc): phase2 extract sortTOrdersByCookingCourse on OrderCalculationService commit e39d68a9bd1a5658593eb60e1bac9e3430f9bcac Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:39:04 2026 -0400 refactor(order-bloc): replace unsafe firstWhere with firstWhereOrNull in persistence paths commit 4807bd9982edd7399f9124f7075c4aa3ef940c5b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:37:18 2026 -0400 refactor(order-bloc): phase2 2d slice -- extract buildAutoGratuityReason on OrderTaxesCubit commit dea2ba6e0e15ee6224da064f214f0c386e5bb84c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:35:11 2026 -0400 refactor(order-bloc): phase2 2c slice7 -- extract buildGiftCardReason commit de5a5a7c4a565251b42430f6b452c5feef55c63c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:30:53 2026 -0400 refactor(order-bloc): phase2 2c slice6 -- extract incrementQuantity commit 90c0ef756fdb26f32a8e0c333e125445b788ccca Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:28:37 2026 -0400 refactor(order-bloc): phase2 2c slice5 -- share _showRemoveCausesNegativeSumSnackBar commit 23a5b02642f08ba1ed2eeabb90b306d291a5edfd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:27:42 2026 -0400 refactor(order-bloc): phase2 2c slice4 -- extract cooking priority resolvers commit 3dc656b58d202dc445821fd62e6eb04eb7e01f80 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:26:03 2026 -0400 refactor(order-bloc): phase2 2d slice -- inline all in-bloc fee/tax merges via OrderFeeTaxMerger commit 75787757d73f42cedda5fe46260cfeef22f78b93 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:21:36 2026 -0400 refactor(order-bloc): phase2 2c slice3 -- extract buildTOrder pure constructor commit 7872d253aab70bb1eeefe11cb46e0faffe7258aa Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:10:21 2026 -0400 refactor(order-bloc): phase2 2c slice2 -- extract findMatchingTOrderForIncrement commit c8c62df1b00b9a37b3d9d6bc0c5f54352a8508dd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:05:28 2026 -0400 refactor(order-bloc): phase2 2c slice1 -- extract buildTOrderTaxesForNewItem commit 3400c7b8d216a354185b3a70bbea38aa97331b84 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 15:01:24 2026 -0400 refactor(order-bloc): phase2 2b slice4 -- extract applyDiscountToTOrderOrRefuse commit a0478d9fab63d95e9ba8fdca42aaba06408b3680 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:59:07 2026 -0400 refactor(order-bloc): phase2 2b slice3 -- extract buildDiscountReason on cubit commit efd470551dc73fe3a16a62440abdb9361aa00cbc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:45:48 2026 -0400 refactor(order-bloc): phase2 2b slice2 -- extract OrderFeeTaxMerger service commit 871aecd2289c98913221be5ab0af0325da3d98f3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:43:15 2026 -0400 docs(order-bloc): record phase2 2b slice1 commit hash commit d1b5a841785488683470d8459cd913c6649392c1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:43:04 2026 -0400 refactor(order-bloc): phase2 2b slice1 -- DiscountAddResult DTO + pure due-limit check commit d928b29c1868af347049b01495e773200a71cc10 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:37:47 2026 -0400 refactor(order-bloc): phase2 2a slice10 -- remove duplicated tOrderDiscounts bloc field commit c7f233d1b1fd6979012f1a71f3896d93c17fd868 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:34:41 2026 -0400 refactor(order-bloc): phase2 2a slice9 -- remove duplicated quickOrders bloc field commit 00a1c34b460c5f12a577c9f69729b6db4d19c312 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:32:28 2026 -0400 refactor(order-bloc): phase2 2a slice8 -- remove duplicated paymentOrderDataList bloc field commit 252d89e44a118080eef4923e797c33aeb0b5475a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:29:35 2026 -0400 refactor(order-bloc): phase2 2a slice7 -- migrate allOriginalItems to workingData commit 266b6a0b7984c498cf49d8de053aea51b4970002 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:27:45 2026 -0400 refactor(order-bloc): phase2 2a slice6 -- convert isAptito/isLeaf/isPaloma to getters commit 1a146cec08a30e567104fabe7e4371c143c70e76 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:24:09 2026 -0400 refactor(order-bloc): phase2 2a slice5 -- remove duplicated clients bloc field commit e61052834c2855a7ee83e3a01319a301e611fd4c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:22:41 2026 -0400 refactor(order-bloc): phase2 2a slice4 -- remove duplicated selectedClientId bloc field commit ecf2c9a6d7838bf7590ab6c82df8f942b9af11bc Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:20:44 2026 -0400 refactor(order-bloc): phase2 2a slice3 -- remove duplicated askQuantity bloc field commit d987c4bc27f55944f18354328751b438ddf9dd83 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:19:11 2026 -0400 refactor(order-bloc): phase2 2a slice2 -- migrate servicePercentFromObjectId to workingData commit d90f06400c8d7c9e7ad6882ff3dfd4335da8697b Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:15:50 2026 -0400 docs(order-bloc): record phase2 2a slice1 commit hash commit b3325fe0c9cf8b1d27d9e52966804471b468764f Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:15:38 2026 -0400 refactor(order-bloc): phase2 2a slice1 -- migrate order-type-draft fields to workingData commit b27427fab17fe3e58c3c53f3f44878f59ada574c Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 14:08:27 2026 -0400 Attempt 2 for refactoring BLoC commit 95d8829832ddf9632f2620a2e4bb276909cb2d70 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 13:42:58 2026 -0400 refactor(order-bloc): move getEffectiveQuantity into OrderCalculationService commit 14e3d85bfc8730939ca69acfc7493cd353b54ea0 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 13:41:30 2026 -0400 refactor(order-bloc): step 5b -- extract OrderLastActionService, add setPriority to kitchen cubit commit 3edcba87ae9b548524bd354435c4c0df284c7c15 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 13:28:08 2026 -0400 refactor(order-bloc): step 4 (partial) -- extract OrderDiscountsCubit remove handlers + pure math commit 2a7a7a3c4c7524dcb9a3804fa56c24a7941c8df5 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 13:14:14 2026 -0400 refactor(order-bloc): step 4e -- move getCachedCalculations into OrderCalculationService commit d6250f8f78e7643d66d32614db2b702f226ce5cd Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 13:03:50 2026 -0400 refactor(order-bloc): step 4d -- extract OrderTypeDraftManager (clear/refresh/materialize) commit e3b60cf6430aa5d473e644b55c3218a5ebcb5f61 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:59:58 2026 -0400 refactor(order-bloc): step 4c -- extract OrderDependencyCache (measurements/gratuity/fees) commit b93283e7b28fb014432f820e5dc74be53cd33830 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:56:29 2026 -0400 refactor(order-bloc): step 4b -- extract OrderItemCache with TTL + injectable clock commit 189a2a3a7b557bb54ee79b369c3fef83a86734f3 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:53:15 2026 -0400 refactor(order-bloc): step 4a -- extract OrderCalculationService pure helpers commit 6a8e2fa5583174e12189075b1f8e795753bda901 Author: Forasky Date: Mon Apr 13 19:37:36 2026 +0300 feat(DEV-11612): make a roadmap how to make an quality product commit fd0aaf7ae6d207bfb308cf6eee7c7696d2036c2a Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:35:38 2026 -0400 refactor(order-bloc): step 6 (partial) -- extract OrderItemsCubit item_updates logic commit 27ef229cd34676821318563269aa359e04f2f418 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:21:41 2026 -0400 refactor(order-bloc): step 5 -- extract OrderKitchenCubit with tests commit e813100d9f0ceb88d549f83d5860c144dbc87de8 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:17:01 2026 -0400 refactor(order-bloc): step 3 -- extract OrderTabsCubit with tests commit 76aad51f3482d91a382d48be4f2cade878412e11 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:11:38 2026 -0400 refactor(order-bloc): step 2 -- extract OrderTaxesCubit with tests commit ba86bdf7eebb4117c96a216809d8b0583ccc8af1 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 12:04:13 2026 -0400 refactor(order-bloc): step 1 -- introduce OrderWorkingData value object commit bac6f339dc5e664242120134a40c2c4d4864b828 Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 11:47:36 2026 -0400 refactor(order-bloc): step 0 -- fix missing return and unsafe firstWhere in submit commit f85c0fbc4121336be3af98c9cfa63354ae85a7cb Author: Paloma365 <53403859+Vladsoftik@users.noreply.github.com> Date: Mon Apr 13 11:37:09 2026 -0400 Plan OrderBloc commit d57a6fd6b75eb96cdb4599a201593c96f25fdcf4 Author: IsroilovA <108577814+IsroilovA@users.noreply.github.com> Date: Mon Apr 13 19:35:14 2026 +0500 doc: add architecture issues plan and TerminalBloc refactoring prompt Comprehensive analysis of architectural problems (God Objects, mutable models, global state, missing error system, high coupling, low test coverage) with prioritized remediation roadmap and a two-phase refactoring prompt for TerminalBloc extraction into services and dedicated payment/report BLoCs. Made-with: Cursor commit 504b8c9c06c4c5576d99fb427126f49d5831ee0d Author: Yevgeniy <47440198+derevyankin1993@users.noreply.github.com> Date: Mon Apr 13 18:12:41 2026 +0500 fix(DEV-11581): Customer kiosk is printing kitchen order + duplicate payment receipts