Repository navigation
Group cron jobs by repository - #1981
Merged
Merged
Conversation
An origin URL can contain a newline. Printing that label as a cronjobs heading added a forged schedule line. A label with a control character stays unresolved, and the job remains under Other.
This was referenced Nov 11, 2026
Merged
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Interleaved schedules currently appear in one flat listing. Group machine-local cron schedules by repository in the CLI, JSON inventory and Console. Preserve every job, its command, duplicates and crontab order within each repository; unresolved entries appear under Other.
Resolve literal Launch directories through the owning machine's GitHub origins without executing cron text. Keep the flat JSON array with nullable
repositorymetadata; older remote inventories display under Other. Update OpenAPI, the manual and the hand-written site description.Closes #1825
Evidence
Execution evidence
cargo test --test console cronjobs_groups_repositories_stably_in_cli_and_apifailed:assertion left == right failed; jobs had norepositorymetadata and remained in interleaved crontab order.test result: FAILED. 0 passed; 1 failed.After: the same command passed:
test result: ok. 1 passed; 0 failed.cargo test --test console cronjobs::rebuilt the final commit and passed all 9 focused tests, including unresolved paths, quoted/home paths, substitutions, duplicates, directory-changing compounds, CLI/API agreement, older remote payloads and scope restrictions.Wrong repository: acme/first; expected acme/second or unresolved; both pass after the fix. Retained regression:cronjobs_keeps_directory_changing_compounds_under_other./usr/bin/time -p scripts/affected-tests mainpassed in 3,752.64s: 68 site checks, 185 Console browser checks, and 4,116 Rust tests passed (97 skipped). The fullcargo nextest runtook 3,431.01s including compilation (3m 27s); its test execution took 3,222.182s.cargo fmt --checkandcargo clippy --all-targets -- -D warningspassed.Test seams: CLI text/JSON, Console HTTP JSON/rendered pages, and browser interaction at desktop/phone widths with and without JavaScript.
Visual evidence
Cron jobs, identical fixture and state, 1440×900:
Cron jobs, identical fixture and state, 390×844:
Review coverage
Reviewed with
git diff refs/remotes/origin/main...HEAD(merge base02c96545737cbd35efb69dd1ef93594f218ba9f2). Standards: 0 findings. Spec: 1 finding, addressed by conservative handling of directory-changing compounds and a retained regression.Both reviewers read all 11 changed files, including the generated manual's changed output. No generated-output exclusions or wholly unread changed files. The final wrapper hardening in
src/launch_directories.rsandtests/console/cronjobs.rsfollowed the reviewers' final follow-up and was verified by retained tests and both exact reproductions; those final hunks were not independently reread.Unaddressed findings
Standards
None.
Spec
None. The wrong-directory association finding is fixed, including its
command cdfollow-up.Security
None.
Security review outcome
No unaddressed introduced findings.
Merge Danger
Door: two-way
Revert restores the previous inventory and layout; no stored data migration.
Blast Radius: Cronjobs
Changes CLI schedule headings, job ordering and Console schedule groups, and adds a nullable JSON field. Unsupported directory-changing shell compounds remain visible under Other and are omitted from Run now choices.
Built with codex codex-cli 0.164.0 · gpt-6.1-sol · xhigh