# TODOs 1. Commands are still leaking. 28. **db.odin** — Inconsistencies in how struct vs sqlite are named. 29. Add color flag and support non colored output. 2. Generate md and man pages again. 3. **db.odin:324-327** — Map iteration (`remote_set`) is non-deterministic. Same file can produce different JSON on each backup, causing spurious DB diffs. Sort remotes before storing. 4. Make sure official path separators are used when appropriate, rather than '/'. 5. **cmd_restore.odin:20-30 & cmd_remove.odin:19-29** — Identical path-resolution block copy-pasted. `is_abs` guard is redundant since `filepath.abs` is a no-op on absolute paths. Extract a helper. 6. **cmd_restore.odin:44** — `os.mkdir_all` error silently discarded. Subsequent write failure will be confusing. 8. **config.odin:178** — `search_paths` silently ignores `os.user_home_dir` error. If home is empty, `~` isn't expanded. Same class of bug as issue 3. 10. **db.odin:115** — `json.unmarshal_string` error not checked. Malformed JSON silently produces empty/partial data. 11. **db.odin:352-353** — `hex.encode` error ignored. `string(hex_bytes)` aliases the byte slice. 12. **cmd_sync.odin:80, cmd_list.odin:33** — `make([]string, 2)` for table rows never freed. Leaks per row. Defer to memory pass. 13. Check for prealloc opportunities. i.e. `make([dynamic]string)` -> `make([dynamic]string, 5)`. 14. Add a text filter to the multi_select. 16. Add tests for untested commands. 17. 2 scan tests silently skip when fd isn't installed, tests pass without actually testing anything. These should use #assert to be sure that fd is in path. 19. add --format -f flag to commands that draw tables. 20. Replace `testing.expect` calls with `testing.expect_value` calls where appropriate. 21. Change struct field names from PascalCase to snake_case. 23. procedures should be ordered by use, main at the top, then in the order they are called from main. 24. Shell completion 25. Bring back windows support / cross-compilation. 26. Test all cmds / terminal branches. ## Double-check AI output - [ ] cli.odin - [ ] cli_test.odin - [x] cmd_backup.odin - [x] cmd_check.odin - [ ] cmd_check_test.odin - [ ] cmd_edit_config.odin - [x] cmd_init.odin - [x] cmd_list.odin - [ ] cmd_list_test.odin - [x] cmd_nushell_completion.odin - [x] cmd_nushell_completion_test.odin - [x] cmd_remove.odin - [x] cmd_restore.odin - [x] cmd_scan.odin - [x] cmd_sync.odin - [x] cmd_version.odin - [ ] config.odin - [ ] config_test.odin - [ ] crypto.odin - [ ] crypto_test.odin - [ ] db.odin - [ ] db_integration_test.odin - [ ] db_test.odin - [x] main.odin - [x] prompt.odin - [ ] scan.odin - [ ] scan_test.odin - [ ] sodium.odin - [ ] sqlite/sqlite.odin - [ ] ssh.odin - [ ] ssh_test.odin - [ ] table.odin - [ ] table_test.odin - [ ] findr/findr_test.odin - [ ] findr/gitignore.odin - [ ] findr/gitignore_test.odin - [ ] findr/glob.odin - [ ] findr/glob_test.odin - [ ] findr/repos.odin - [ ] findr/test_env.odin - [ ] findr/walker.odin