Simpl-Resultat/src/services
le king fu 1386abd91e fix(categories): check a parent's content only when it would become one (#393)
Decision of Max of 2026-10-20 (review 25921): transactions, non-zero
budget amounts and active keywords are checked only while the target
still takes input (is_inputable = 1, the condition of markAsParent),
that is when it really becomes a parent and stops taking input. An
existing parent, no longer inputable, accepts a new or reattached
subcategory whatever it holds, as in every released version: the
refusal protected nothing there. All three codes and all three entry
points follow the rule; the hierarchy rows now carry is_inputable,
and createCategory reads them through its transaction's handle.

Also pins a negative amount, in the grid and in a template, as a
refusal (review 25921, R1/R2): the grid stores what is typed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:40:04 -04:00
..
adjustmentService.ts feat: add Budget and Adjustments pages with full functionality 2026-02-12 00:58:43 +00:00
authService.ts feat: settings banner when OAuth tokens fall back to file store (#81) 2026-04-14 08:18:41 -04:00
balance.service.test.ts fix(db): keep the lock-free path for the transaction handle only 2026-10-12 19:28:36 -04:00
balance.service.ts fix(db): keep the lock-free path for the transaction handle only 2026-10-12 19:28:36 -04:00
budgetService.test.ts fix: show a category whose parent is deleted or gone in the budget (#393) 2026-10-18 19:16:25 -04:00
budgetService.ts fix: show a category whose parent is deleted or gone in the budget (#393) 2026-10-18 19:16:25 -04:00
categorizationService.test.ts feat(onboarding): Transactions card suggests Add as keyword, Budget card names leaves and the Annual column 2026-10-13 21:12:25 -04:00
categorizationService.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
categoryBackupService.test.ts fix(export): preserve import sources and templates across data export/import 2026-08-14 10:58:52 -04:00
categoryBackupService.ts fix(export): preserve import sources and templates across data export/import 2026-08-14 10:58:52 -04:00
categoryMappingService.test.ts test(categories): complete test coverage for migration flow (#123) 2026-04-21 19:25:13 -04:00
categoryMappingService.ts feat(categories): add categoryMappingService (4-pass algo) (#119) 2026-04-20 21:01:55 -04:00
categoryMigrationService.test.ts feat(categories): merge custom categories into the standard taxonomy (#259) 2026-07-19 19:43:47 +00:00
categoryMigrationService.ts feat(categories): merge custom categories into the standard taxonomy (#259) 2026-07-19 19:43:47 +00:00
categoryRestoreService.test.ts feat(categories): add restore backup banner and permanent restore action (#122) 2026-04-20 21:47:43 -04:00
categoryRestoreService.ts feat(categories): add restore backup banner and permanent restore action (#122) 2026-04-20 21:47:43 -04:00
categoryService.test.ts fix(categories): check a parent's content only when it would become one (#393) 2026-10-20 19:40:04 -04:00
categoryService.ts fix(categories): check a parent's content only when it would become one (#393) 2026-10-20 19:40:04 -04:00
categoryTaxonomyService.test.ts feat(categories): add categoryTaxonomyService + useCategoryTaxonomy hook (#116) 2026-04-20 20:53:15 -04:00
categoryTaxonomyService.ts feat(categories): add categoryTaxonomyService + useCategoryTaxonomy hook (#116) 2026-04-20 20:53:15 -04:00
confirmService.test.ts fix(dialogs): wait for the confirmation before deleting or removing the key 2026-10-18 14:29:17 -04:00
confirmService.ts fix(dialogs): wait for the confirmation before deleting or removing the key 2026-10-18 14:29:17 -04:00
dashboardService.test.ts feat(dashboard): converge home page on the Cartes report model 2026-07-11 17:13:23 -04:00
dashboardService.ts feat(dashboard): converge home page on the Cartes report model 2026-07-11 17:13:23 -04:00
dataEvents.test.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
dataEvents.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
dataExportService.test.ts test(data): pin each restore's notification after the DB lock 2026-10-08 21:05:14 -04:00
dataExportService.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
db.test.ts test: pin the \r path stop and the surviving marked-t keys (#437) 2026-10-18 19:46:47 -04:00
db.ts docs: name the slot-order dependency and the known test limits (#437) 2026-10-18 19:59:54 -04:00
entitlements.test.ts feat(license): online revocation check — a revoked key falls back to Free (#365) 2026-10-02 14:45:34 -04:00
feedbackService.test.ts feat: feedback hub widget in Settings Logs card (#67) 2026-04-17 14:36:26 +00:00
feedbackService.ts feat: feedback hub widget in Settings Logs card (#67) 2026-04-17 14:36:26 +00:00
importConfigTemplateService.ts fix(import): persist the import format and restore it faithfully 2026-08-13 13:16:52 -04:00
importedFileService.test.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
importedFileService.ts fix(onboarding): count an import only once the file brought a transaction 2026-10-08 21:05:14 -04:00
importSourceService.test.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
importSourceService.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
licenseService.test.ts fix(license): drop an activation token that no longer stands for this machine 2026-10-04 17:58:25 -04:00
licenseService.ts fix(license): drop an activation token that no longer stands for this machine 2026-10-04 17:58:25 -04:00
logService.test.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
logService.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
onboardingService.test.ts feat(onboarding): visit steps, eight rows, "Got it" and one-time initialization 2026-10-13 21:32:20 -04:00
onboardingService.ts feat(onboarding): visit steps, eight rows, "Got it" and one-time initialization 2026-10-13 21:32:20 -04:00
profileService.ts fix: address reviewer feedback (#54) 2026-04-09 15:46:27 -04:00
reportService.cartes.test.ts fix(reports): thread accountIds into Cartes KPI + seasonality series 2026-07-11 21:16:09 -04:00
reportService.test.ts docs: fix three comments after review of #414 2026-10-12 15:05:44 -04:00
reportService.ts fix(reports): thread accountIds into Cartes KPI + seasonality series 2026-07-11 21:16:09 -04:00
transactionService.test.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
transactionService.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
userPreferenceService.test.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00
userPreferenceService.ts feat(data): announce counter-moving writes on a data-change channel 2026-10-08 07:33:47 -04:00