Commit aebe2c4
feat: Add bulk recategorization from Category and Group aggregate views
Implemented bulk recategorization feature for aggregate views, matching
the existing bulk merchant edit functionality.
**New Feature:**
- Press 'r' in Category view → recategorize all transactions in that category
- Press 'r' in Group view → recategorize all transactions in that group
- Shows category picker modal
- Queues edits for all transactions in the selected category/group
**Use Cases:**
1. **Category View**: Recategorize all "Miscellaneous" to "Groceries"
2. **Group View**: Move all "Uncategorized" group transactions to specific categories
**Workflow Example:**
```
1. View Categories (press 'c' or cycle with 'g')
2. Navigate to "Miscellaneous" category
3. Press 'r' to bulk recategorize
4. Type "groc" to filter, select "Groceries"
5. All Miscellaneous transactions queued for recategorization
6. Press 'w' to review and commit
```
**Implementation:**
- Added _bulk_recategorize_from_aggregate() method
- Handles both CATEGORY and GROUP views
- Similar pattern to _bulk_edit_merchant_from_aggregate()
- Shows clear notification with count and old→new category names
**UI Updates:**
- Action hints now show "r=Recategorize (bulk)" in Category/Group views
- Consistent with merchant bulk edit ("m=Edit merchant (bulk)")
**Benefits:**
- Quickly fix miscategorized transactions
- Power user workflow for bulk cleanup
- Same consistent pattern as bulk merchant edits
All 465 tests passing, pyright clean.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>1 parent 12c77c8 commit aebe2c4
1 file changed
+105
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
833 | 833 | | |
834 | 834 | | |
835 | 835 | | |
836 | | - | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
837 | 840 | | |
838 | 841 | | |
839 | 842 | | |
| |||
1319 | 1322 | | |
1320 | 1323 | | |
1321 | 1324 | | |
1322 | | - | |
| 1325 | + | |
1323 | 1326 | | |
1324 | 1327 | | |
1325 | 1328 | | |
1326 | | - | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
1327 | 1428 | | |
1328 | 1429 | | |
1329 | | - | |
| 1430 | + | |
1330 | 1431 | | |
1331 | 1432 | | |
1332 | 1433 | | |
| |||
0 commit comments