Commit graph

24 commits

Author SHA1 Message Date
4413f2229d Add justfile task runner
Recipes: check (lint+test+tape-test), lint, test, tape-test, record.
`just` with no args lists all recipes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 01:46:14 -07:00
530a2162bf Add -R restart operation for timer and service jobs
Resets the countdown for timer jobs and restarts the process for
service jobs. Disabled jobs are refused with a clear error message.
Accepts hex ID or name like all other management operations.

- restartJob() function with disabled-job guard
- getopts R:, manage_count, mutual-exclusion error messages updated
- 9 new tests in test.sh (112 total), 1 new tape command (24 total)
- README options table, names prose, and future-ideas checklist updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 01:17:12 -07:00
8e45f7917c Add -X delete operation, demo tape tests, and consolidate demos
- Add -X <id|name> to stop, disable, and remove a job's unit files;
  mutually exclusive with all other management options; 13 new tests
- Add demo/test-tapes.sh to verify all VHS tape commands run cleanly;
  wired into pre-commit hook alongside test.sh (combined badge count)
- Rename demo job names to *_home variants to avoid clashing with real
  user jobs; add per-tape preflight cleanup via -X
- Consolidate four demo GIFs into quickstart + all-features + editmode
  screenshot; remove notifications/services tapes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 01:02:13 -07:00
16404fb596 moving edit mode up and adding service example
All checks were successful
CI / shellcheck (push) Successful in 16s
2026-03-01 00:38:39 -07:00
3ebe0cf5bf correct edit-mode example
All checks were successful
CI / shellcheck (push) Successful in 20s
2026-03-01 00:24:30 -07:00
87b13d590d add codeberg mirror and future ideas
All checks were successful
CI / shellcheck (push) Successful in 18s
2026-03-01 00:15:01 -07:00
8368f1dcf7 Add -l option and align pipe separators in edit mode
Extract printCrontabContent() shared by both -e and new -l, collecting
job data into arrays first so column widths can be computed for aligned
pipe separators. -l prints the same crontab format to stdout without
opening an editor, useful for scripting and quick inspection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 00:26:40 -07:00
b71ef735af Update README to document name display in notifications
All checks were successful
CI / shellcheck (push) Successful in 16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 19:45:15 -07:00
e407597d2b Update README for service job support
Some checks failed
CI / shellcheck (push) Failing after 18s
Document the new -s flag, add services demo GIF to the demo table,
add quick start and usage examples for persistent services, update
edit mode docs with the new:s syntax, and clarify how it works for
both timer and service job types.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 01:12:55 -07:00
2b75547726 a note on thhe crontab format
Some checks failed
CI / shellcheck (push) Failing after 16s
2026-02-17 14:02:48 -07:00
1655a64ab3 Add emoji icons to feature list and fix typos in README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 13:57:34 -07:00
be47247da7 Fix test cleanup destroying user jobs, consolidate code
Some checks failed
CI / shellcheck (push) Failing after 2s
- Test cleanup now only removes jobs it created (tracked via
  test_job_ids array) instead of nuking all systab_* units.
  Fixes bug where running tests would delete real user jobs.
- Fix extract_id subshell issue: array appends in $() don't
  propagate to parent, so use _extracted_id variable instead.
- Merge disable_job_by_id/enable_job_by_id into toggle_job_by_id.
- Update usage text: -D/-E/-L/-S now show <id|name> consistently.
- Fix pre-commit hook sed regex that only captured last digit of
  multi-digit numbers; replaced with grep -oP.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 21:55:09 -07:00
f4cb6c77f6 adding tests
Some checks are pending
CI / shellcheck (push) Waiting to run
2026-02-15 12:10:09 -07:00
3aa7f9e722 adding badges
Some checks are pending
CI / shellcheck (push) Waiting to run
2026-02-15 11:26:27 -07:00
7673787736 adding license 2026-02-15 10:39:38 -07:00
19ccb76235 fixing timesting examples and stripping "at" 2026-02-15 10:15:52 -07:00
f32bf5495b adding name option 2026-02-15 10:11:26 -07:00
308f9e6b11 adding FAQ with -f/-c 2026-02-15 01:21:27 -07:00
558d4046cd adding demo gifs 2026-02-15 00:58:11 -07:00
8319924139 Rename pause/resume to disable/enable to align with systemd terminology
-P/-R flags become -D/-E, -E (edit) becomes -e. Functions renamed to
disable_job_by_id/enable_job_by_id. Output messages, docs, tests, and
demo tapes updated accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:41:21 -07:00
8781ac9f2f Refactor: deduplicate notifications, fix timer parsing, -o optional arg
- Extract build_job_list helper (shared by show_status/list_logs)
- clean_jobs now calls remove_job instead of inline stop/disable/rm
- Extract status preamble in write_notify_lines (icon_pre/status_pre)
- Replace fragile list-timers tail/awk with systemctl show properties
- Combine consecutive sed -i calls into single invocations
- Simplify is_manage_mode check to use existing manage_count
- Make -o accept optional line count arg (-o 20 or just -o for default 10)
- Fix %%s escaping in unit files and document in CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:49:18 -07:00
67528374cd Add -o flag to include job output in notifications
Fetches the last N lines of journal output (default 10) via
journalctl and includes them in desktop/email notification bodies.
Supports CLI (-o 5) and edit mode (o or o=5 flag syntax).

Also fixes systemd %s specifier expansion in email printf format
strings (must use %%s so systemd passes %s through to the shell).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:35:52 -07:00
ef442d464c Add status-aware notifications, edit mode flags, job ID filtering
Notifications now use ExecStopPost (fires on success and failure) with
status-aware icons/messages instead of ExecStartPost (success only).
Desktop uses dialog-information/dialog-error, email uses sendmail.
Flags (i, e=addr) are persisted as # SYSTAB_FLAGS= comments in service
files and exposed in edit mode via ID:flags syntax. Edit mode validates
schedules before applying (re-edit loop like crontab -e). -S and -L
accept an optional job ID to filter to a single job. Extract trim()
helper to replace inline whitespace-stripping idiom.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:43:06 -07:00
37efa43d0a first functional commit 2026-02-14 11:34:00 -07:00