30 Commits
Author SHA1 Message Date
trex Bot d8034278d8 fix: resolve the seven bugs pinned by the test audit
test / unit-tests (push) Successful in 14s
ci / docker (push) Successful in 23s
test / unit-tests (pull_request) Successful in 6s
test / komodo-deploy-script (push) Successful in 23s
test / komodo-deploy-script (pull_request) Successful in 16s
- read [ignored_tags] instead of [ignored_domains], so tag-based ignoring
  actually works
- match ignored tags as whole tags, not substrings ('ipt' no longer matches
  'iptorrents')
- send the login-error notification through the Pushover client instead of
  the non-existent module-level send_message()
- handle an empty torrent list instead of raising IndexError before any
  summary is sent
- tag a new torrent once instead of once per code path
- honour toml_path without DOCKER in AppriseClient
- close replaced log handlers so the file descriptor is released

Also add the missing [telemetry] section to config.toml.example, which
qbit-maid.py requires at startup.

The tests that pinned each bug now assert the fixed behaviour, and the
suite still reports 100% coverage.
2026-11-03 16:10:19 -06:00
trex Bot dfce115fd8 feat(notify): value-first emoji rows
ci / docker (push) Successful in 24s
test / komodo-deploy-script (push) Successful in 26s
test / komodo-deploy-script (pull_request) Successful in 16s
Switch the summary to the layout jblu picked: each counter renders as
"emoji value label", grouped two per line and joined by a middle dot.

    Scanned 42 torrents in 12s

    🗑️ 7 removed  ·  👻 4 orphaned
    ⏭️ 5 ignored  ·  🐣 3 premature

    🛡️ 10 protected  ·  🌐 20 public

- the value leads, so the numbers are the first thing the eye lands on
- html style now bolds the values instead of the labels
- "Non-protected" reads as "public", matching the non_protected_tag
- use_emoji now defaults to true; false gives the plain variant
- dry runs read "7 would be removed"
2026-11-03 15:10:03 -06:00
trex Bot 5d9da0d22b fix(notify): group counters instead of padding columns
ci / docker (push) Successful in 36s
test / komodo-deploy-script (push) Successful in 16s
test / komodo-deploy-script (pull_request) Successful in 17s
Pushover renders the notification body in a proportional font, so the
space-padded label/value columns never lined up on a phone — the body
collapsed into a ragged flat list with no visual grouping. The html
variant was worse: the padding sat inside the HTML, so it collapsed to a
single space.

Counters are now grouped two per line and joined with a middle dot, which
survives any font. The body drops from 8 lines to 5 and no longer restates
the outcome the title already carries.

- replace _notify_row/LABEL_WIDTH/VALUE_WIDTH with _stat_row
- add docs/notify-preview.py, which renders the real build_summary()
  output as a phone-width PNG so layout changes can be reviewed visually
- tests: assert no space padding, two counters per row, and that the body
  does not repeat the title
2026-11-03 15:02:57 -06:00
nanobot 881765cdf5 feat(notify): configurable plain/html summary formatting
test / komodo-deploy-script (push) Successful in 17s
test / komodo-deploy-script (pull_request) Successful in 16s
ci / docker (push) Successful in 2m2s
Rework the Pushover/Apprise summary so it reads as a report instead of a
dump of counters.

- Extract build_summary() as the single source of truth for both notifiers,
  removing the duplicated body string and the stray leading indentation
  caused by backslash line continuations.
- Add a 'format' option: 'plain' (aligned columns) or 'html' (bold labels,
  sets html=1 for Pushover). Apprise always receives the plain body.
- Add 'use_emoji' for emoji-prefixed rows.
- Title now states the outcome ('7 torrents removed') instead of
  '--- qbit-maid summary ---'.
- Say 'Would remove' when delete_torrents is false, so a dry run is never
  mistaken for a real deletion.
- Format runtime as 12s / 1m 04s instead of a timedelta with microseconds.
- Add include_hostname, notify_on_empty, priority, sound, retry and expire.
- Log notification failures instead of letting them abort the run.
- Cover the new formatting with unit tests; document the options in the
  README and config.toml.example.
2026-10-27 10:09:35 -05:00
Jonathan Branan ab30d69c7c Improve logging: named logger, rotation, richer format, remove use_log guards
- Add setup_logging() returning a named 'qbit-maid' logger with
  RotatingFileHandler (configurable size/backups) and a console handler
- Add log_torrent() helper for structured torrent context
- Replace basicConfig-based tor_log() with setup_logging()
- Remove redundant 'if self.use_log:' guards across qbit-maid.py,
  qlist.py, qprocess.py, qlogging.py (level filtering handles it)
- Document new logging options in config.toml.example and README
2026-10-26 22:10:35 -05:00
jblu d15cc8d95c updated healthchecks to support starting and stopping a job
continuous-integration/drone/push Build is passing
2024-06-03 20:32:57 -05:00
jblu 01a4c88cc4 Fixed #58
continuous-integration/drone/push Build is failing
2023-09-12 13:04:38 -05:00
jblu cf64321e49 added health check support 2023-06-05 23:51:49 -05:00
jblu 8520933f8d added docker support 2023-06-04 13:05:26 -05:00
jblu 03648f9ae2 added apprise client 2023-05-16 22:05:12 -05:00
jblu abaab2d9cc updated logginglevels 2022-11-01 16:12:49 -05:00
jblu b082680853 #39 #38 #37 lots of changes, will need toml config 2022-11-01 15:33:22 -05:00
jblu 8c32f32c85 #31 and lots of other changes 2022-10-01 13:10:42 -05:00
jblu adc3825396 #28 #26 #25 lots of changes 2022-10-01 12:21:18 -05:00
jblu c116a50c17 fixed additonal variables 2022-09-03 18:55:51 -05:00
jblu 4317a33647 standardized the variables #19 2022-09-03 15:02:40 -05:00
jblu d1cda2a104 restoring changes 2022-08-12 21:30:18 -05:00
Jonathan Branan 06b5016b90 working with test case data 2022-08-11 21:06:37 -05:00
jblu 357591227e fixed preme calculation bug and added exec time 2022-08-01 13:01:00 -05:00
jblu fca54f8952 empty 2022-07-29 16:02:19 -05:00
jblu 26ac36a164 fixed attrubute error 2022-07-25 12:36:15 -05:00
jblu fb55c54f01 updated readme and added ignored data 2022-07-23 16:05:57 -05:00
jblu 3aa5931095 added min tor time, large performance improvement 2022-07-23 15:46:48 -05:00
jblu ae4350a547 #9 lots of changes, refactored qprocess 2022-07-23 14:59:43 -05:00
jblu 2015c0a60d removed some comments 2022-07-20 14:22:56 -05:00
jblu 08cbf7f445 Added comments for the functions 2022-07-20 11:34:13 -05:00
jblu 81df444765 changed readme and added more tornotify functions 2022-07-20 10:19:12 -05:00
jblu 4908d62999 added tor notify 2022-07-20 09:57:22 -05:00
jblu e624236586 updated readme 2022-07-14 20:33:53 -05:00
jblu ef21adc132 copied from private repo 2022-07-14 19:03:06 -05:00