Releases: AndPuQing/gflow
Releases · AndPuQing/gflow
Release v0.4.14
What's Changed
- feat: Bump versions to 0.4.14
- Tighten MCP list_jobs defaults
- docs: Tighten wording across README and docs
- docs: remove benchmark-regression docs
- docs: Simplify job lifecycle diagrams
- chore(deps): Update dependency @shikijs/core to v4 (#139)
- chore(deps): Update dependency @shikijs/engine-javascript to v4 (#140)
- chore(deps): Update dependency @shikijs/langs to v4 (#141)
- chore(deps): Update dependency @shikijs/themes to v4 (#142)
- Fix MCP list tool structured content
- docs: Add syntax highlighting to landing page
- docs: Add favicon to docs site
- Redesign docs homepage
- docs: clarify mcp server usage
- Support MCP param sweeps in submit_jobs
- Update FUNDING.yml
- Create FUNDING.yml
- Fix dependency tree visualization for multi-parent jobs
- Refine MCP submit jobs semantics
- Add MCP redo job tool
- Add MCP batch job submission
- docs: Simplify and clarify MCP and skills guide
- docs: Add AI Integration MCP and Skills pages
- feat: Prefix and normalize tmux run names as gjob
- Keep release multicall wrappers thin
- docs: Add coverage, testpypi and crate badges
- docs: trim root readmes
- Add local MCP server for gflow
Full Changelog: v0.4.13...v0.4.14
Release v0.4.13
What's Changed
- bump: update version to 0.4.13 in Cargo.toml, Cargo.lock, and pyproject.toml
- Restore core GPUSlot re-export
- Refactor core utility modules
- chore(deps): Update Rust crate tempfile to v3.27.0 (#138)
- chore(deps): Update Rust crate tmux_interface to 0.4.0 (#137)
- fix: update test-tree command to target specific library tests
- Add structured logging and tracing for gflowd
- chore(deps): Update dependency ubuntu to v24 (#136)
- perf: add benchmark regression baseline workflow (#135)
- docs: add gflowd gjob and gstats reference pages (#134)
- ci: make stable rust the required baseline (#133)
- test: make daemon shutdown assertion best-effort
- test: relax reload teardown assertion
- test: harden daemon e2e setup
- test: add daemon e2e coverage
- refactor: split giant scheduler and queue modules
- docs: refresh README and landing page copy
- Make gflowd up idempotent
- Avoid nested cargo run in multicall wrappers
- Refine gstats terminal output
- style(gstats): improve stats table readability
- docs: Update README links to RunQD
- fix(gqueue): keep tree output consistent with filtered job set
Full Changelog: v0.4.12...v0.4.13
Release v0.4.12
What's Changed
- bump version to 0.4.12 in Cargo.toml and pyproject.toml
- gflowd: pass CLI verbosity through to daemon startup
- feat: add shared GPU scheduling with per-GPU VRAM limits
- feat: add GPU allocation strategy switch
- feat(dev): make gflow wrappers auto-use local source in repo
- docs: Remove Sniapaste.png asset
- docs: update project tracking docs for gbatch/gqueue/config
- feat: add project code tracking for multi-team resource allocation
- chore(deps): Update actions/upload-artifact action to v7
- feat: add gstats command for usage statistics
- chore(deps): Update actions/download-artifact action to v8
- chore(deps): Update actions/attest-build-provenance action to v4
- chore(deps): Update Rust crate tempfile to v3.26.0
- chore(deps): Update Rust crate strum to 0.28.0
- docs: update gqueue reference with --watch and --interval options
- feat: add built-in watch mode to gqueue
- feat: improve gjob show timing display with inline context
- feat: add comprehensive time tracking with wait_time and runtime methods
- fix: prevent log archiving side effect when querying job log path
- docs: update gqueue reference to reflect active-jobs default
- feat: default gqueue to show only active jobs instead of last 10
- fix: define __ARM_ARCH=8 for aarch64 cross-compilation of ring crate
- feat: add daily log rotation via tracing-appender
- refactor: replace manual OutputFormat::from_str with strum EnumString derive
- fix: add CFLAGS to nightly build for aarch64 cross-compilation
- feat: add JobUpdated event to trigger re-scheduling after job update
- fix: reject redo for jobs that haven't finished yet
- feat: send scheduler_online webhook on daemon startup/reload
- chore(deps): Update Rust crate toml to v1
- chore(deps): Update Rust crate nvml-wrapper to 0.12.0
- chore(deps): Update compatible (dev) (#98)
- chore(deps): Update Rust crate toml to 0.9
- chore(deps): Update Rust crate dialoguer to 0.12
- docs: mention gflowd init
- feat: add gflowd init configuration wizard
- fix: archive old job logs when job IDs are reused
- fix: gflowd reload broken after multicall refactor
- fix: gflowd reload broken after multicall refactor
- gflowd reload: robust new daemon PID detection
- refactor: flatten multicall bin layout
- refactor: unify CLIs into multicall gflow
- chore(deps): Update Rust crate proptest to v1.10.0
- chore(deps): Update Rust crate criterion to v0.8.2 (#96)
- fix: install rustls ring provider for reqwest
- fix: make clippy -D warnings pass
- feat: add webhook notifications
- feat(gqueue): add multiple output formats (JSON, CSV, YAML)
- feat(cli): add Slurm-compatible flag aliases
- fix: Simplify assertions in scheduler tests
- perf: add state index and optimize jobs listing
- fix: Remove #[inline] and use contains_key in test
- scheduler: unify state transitions and keep group index consistent
- Add debug logging for state loading and migration
- Support legacy msgpack tuple scheduler state
- Fix msgpack state load for legacy jobs maps
- chore: fix clippy warnings
- perf: split job storage and speed up job listing
- perf: shrink Job by boxing rarely-set fields
- docs: Remove trailing blank lines in reference pages
- clippy: fix Parameters insert comparison
- perf: reduce Job parameter overhead
- perf: reduce Job memory footprint with SmallVec optimizations
- test: add comprehensive benchmarks for scheduler operations
- perf: optimize group concurrency checks with O(1) index
- fix: resolve CI failures after CompactString migration
- perf: optimize string allocation with CompactString and UUID
- refactor: clean up benchmark tests
- chore: remove musllinux build from nightly workflow
- docs: add demo scripts for showcasing gflow functionality
- docs: update installation verification steps to check command availability
- docs: update installation instructions to remove ARMv7 and libc support details
- refactor: remove musllinux job and update README to reflect supported architectures
Full Changelog: v0.4.11...v0.4.12
Release v0.4.11
What's Changed
- chore: bump version to 0.4.11 in Cargo.lock, Cargo.toml, and pyproject.toml
- docs: add timezone configuration section
- feat: add timezone configuration for reservation times
- chore(deps): Update codecov/codecov-action action to v5
- fix: correct Vercel ignoreCommand logic for docs-only deploys
- feat: configure Vercel to deploy only on docs changes
- ci: trigger coverage test
- fix: add Codecov token to CI workflow
- feat: add code coverage reporting to CI
- fix: remove unused gpu_indices_strategy function
- feat: add property-based testing and refactor conflict detection to pure functions
- fix: update tests to use gpu_spec instead of gpu_count
- docs: add GPU index reservation examples to gctl reference
- feat: support reserving specific GPU indices
- docs: add gctl reserve tips and update gctl docs
- feat: replace 60s polling with precise timer-based reservation status updates
- fix(gctl): improve timeline marker spacing and fix status sync issues
- feat: add current timestamp to timeline header
- refactor: improve reservation list ordering and cleanup logic
- feat(gctl): add configurable timeline range
- fix: align timeline visualization and add reservation time constraints
- feat: add timeline visualization for gctl reserve list
- style: align gctl reserve output format with other CLI commands
- refactor: optimize parser functions and add comprehensive tests
- refactor: consolidate parsers into dedicated module
- refactor: deduplicate reservation time/duration formatting functions
- feat: add GPU reservation system
- refactor: merge duplicate resolve_job_id and resolve_dependency functions
- fix: resolve clippy warnings for deprecated black_box and code organization
- perf: reduce code duplication and optimize API filtering (19x faster)
- chore: add CLAUDE.md to .gitignore and remove from repository
- docs: add CLAUDE.md with project guidelines and performance testing requirements
- feat: implement MessagePack binary serialization for state persistence
- perf: use compact JSON format for state.json to reduce file size
- Update README.md
- feat: Implement event-driven scheduling loop and monitoring tasks
- perf: optimize .clone() usage to reduce unnecessary allocations
- gflowd: single-snapshot journal fallback
- fix: use target-specific dependencies for mimalloc
- fix: use mimalloc only on x86_64 to avoid cross-compilation issues
- fix: patch libmimalloc-sys to use upstream fix for cross-compilation
- fix: use mimalloc only on x86_64 to avoid cross-compilation issues
- fix: add target-specific CFLAGS for cross-compilation
- fix: resolve aarch64 cross-compilation issue with libmimalloc-sys
- docs: add --color flag to watch gqueue command
- fix: add migration support for HashMap to Vec jobs format change
- fix: replace deprecated criterion::black_box with std::hint::black_box
- chore(deps): Update Rust crate criterion to 0.8
- perf: add get_jobs_by_user() for 250x faster user job queries
- perf: add dependency graph cache for fast circular dependency validation
- perf: add user jobs index for fast dependency resolution
- perf: use SmallVec for depends_on_ids to reduce heap allocations
- chore(deps): Update Rust crate compact_str to 0.9
- perf: convert run_name to CompactString for reduced allocations
- perf: replace HashMap<u32, Job> with Vec for better performance
- fix: resolve clippy warnings in benchmark
- perf: use mimalloc allocator for improved memory performance
- docs: remove conda installation instructions
- Simplify quick-start docs and add tmux note
- docs: streamline guides, references, and tips
- Refactor documentation and commands for clarity and consistency
- docs: Add TestPyPI nightly version badge and install instructions
- ci: Add nightly build workflow for TestPyPI
- style: Use PascalCase for close-sessions summary output
- fix: Add submitted_at field to Job for correct --since filtering
- perf: Optimize close-sessions -a to query only existing tmux sessions
- gjob: unix-like close-sessions output
- fix: Disable pipe-pane on Finished jobs when auto_close is false
- refactor: Remove replay_log_file feature entirely
- perf: Skip log replay during reload and limit replay to 200 lines
- fix: Send extra newline after log replay to prevent command concatenation
- fix: Add delay before enabling pipe-pane to avoid capturing command echo
- fix: Add delay after log replay to prevent command race condition
- feat: Show group_id in gjob show output
- Reduce zombie monitor interval to 10s
- perf: Optimize are_dependencies_satisfied to avoid allocations
- refactor: Simplify show-gpus output to Unix-like tab-separated format
- fix: Show user-friendly error when server is not running
- refactor: Simplify gcancel dry-run output to tab-separated format
- refactor: Extract disable_pipe_pane_for_job helper to reduce duplication
- fix: Disable PipePane on all terminal job states to prevent process leaks
- docs: Add shell completion chapter for all supported shells
- Remove redundant cache shared-key from CI
- Remove Rust and Conda steps from install guide
- feat: Add --tmux/-T option to gqueue to filter jobs with active tmux sessions
- perf: Optimize CI workflows with concurrency control, timeouts, and improved caching
- Format workflow YAML and remove pull_request trigger
- feat: Preserve daemon logs across reload/restart operations
- fix: Mark macro doctest examples as ignore to prevent compilation errors
- feat: Add GPU unavailable reason field
- refactor: Add formatting macros and standardize output style across bins
- feat(gjob): Enhance job display with parameters and improved formatting
- docs: Sync Chinese README and installation docs with English version
- chore(deps): Update actions/download-artifact action to v7
- chore(deps): Update actions/upload-artifact action to v6
- fix: Update PyPI version badge and installation instructions to reference 'runqd'
- chore: Rename workflow from "PyPI Release" to "Maturin Build"
Full Changelog: v0.4.10...v0.4.11
Release v0.4.10
What's Changed
- chore: Bump version to 0.4.10 in Cargo.toml, Cargo.lock, and pyproject.toml
- feat: Add custom build profiles for optimized testing and minimal binaries
- feat: Update PyPI workflow to support multiple platforms and targets
- fix: Comment out ARM64 target options in PyPI workflow
Installation
Quick Install (Linux x86_64) - Recommended
curl -fsSL https://gflow-releases.puqing.work/install.sh | shOr from GitHub:
curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | shAlternative: Cargo
cargo install gflowFull Changelog: v0.4.9...v0.4.10
Release v0.4.9
What's Changed
- chore: Bump version to 0.4.9 in Cargo.toml, Cargo.lock, and pyproject.toml
- feat: Sort ginfo output by GPU index instead of job ID
- fix: Prevent GPU double allocation race condition in event-driven scheduling
- fix: Remove unused mut keywords to fix clippy warnings
- fix: Improve reference indicator formatting to reduce column gaps
- feat: Optimize tree display for jobs with both dependency and redo relationships
- Add mermaid preview to VitePress docs
- Introduce event bus for scheduler events
- Comment out gjob reference link
- feat: Add cascade redo functionality for dependent jobs and update documentation
- chore(deps): Update actions/upload-artifact action to v6
- chore(deps): Update actions/download-artifact action to v7
- chore(deps): Update actions/setup-python action to v6
- chore(deps): Update dependency python to 3.14
- chore(deps): Update actions/checkout action to v6
- Rename package to runqd and update PyPI URL
- Remove ARMv7 build targets from PyPI workflow
- Add PyPI packaging and publish workflow
- feat: implement recursive auto-cancellation for dependent jobs
- refactor: remove reset-md and doc targets from justfile
- chore(deps): Update Rust crate vergen-gix to v9
Installation
Quick Install (Linux x86_64) - Recommended
curl -fsSL https://gflow-releases.puqing.work/install.sh | shOr from GitHub:
curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | shAlternative: Cargo
cargo install gflowFull Changelog: v0.4.8...v0.4.9
Release v0.4.8
What's Changed
- bump version to 0.4.8 and update documentation URL
- Add all_dependency_ids and simplify scheduler logic
- Hide user-cancel reason and simplify docs
- feat: add JobStateReason system for tracking job state reasons
- Return completed job states as slice
- Make --all show all jobs
- Unify job listing query and add completed_states
- Document git cargo install and simplify filter
- fix: process query parameters in list_jobs endpoint
- Move tmux session existence check to handler
- Add reload progress logs and tidy pre-commit YAML
- fix: preserve parameters when redoing a job
- fix: preserve parameters when redoing a job
- fix: resolve clippy warning for unused state_saver field
- feat: implement job update functionality with parameter validation and command support
- feat: enhance job dependency features with AND/OR logic and auto-cancellation options
- fix: update state path to use gflow.json for scheduler configuration
- feat: implement multi-job dependency support with AND/OR logic and auto-cancellation
- feat: add Vercel configuration for asset caching
- fix: update base path in VitePress config to root
- Add user guide for job submission and time limits in gflow
- feat: add initial logo SVG for gflow branding
- refactor: remove benefits section from CDN installation instructions
- refactor: remove outdated configuration examples and cleanup documentation
- refactor: enhance kill_sessions_batch to handle non-existent sessions gracefully
- Refactor database operations and remove db_writer module
- refactor: optimize job cleanup logic for efficiency and clarity
- chore(deps): Update Rust crate tower to v0.5.3 (#42)
- Update README.md
- Fix badge formatting in README.md
- Update README.md
- Update README.md
- feat: implement job cleanup mechanism to manage memory usage
- fix: update comment for clarity in list_jobs function
- chore(deps): Update actions/checkout action to v6
- chore(deps): Update actions/configure-pages action to v5
- chore(deps): Update oven-sh/setup-bun action to v2
- chore(deps): Update actions/upload-pages-artifact action to v4
- chore: Remove Node setup step from GitHub Actions workflow
- feat: Add GitHub Actions workflow for deploying VitePress site to GitHub Pages
- feat: Initialize VitePress documentation for gflow
- chore: remove debug logging for job preparation in scheduler runtime
- Optimize gjob show style (vibe-kanban f7f2939a)
- fix: capture timestamp before parse_since_time calls to prevent test flakiness
- Great! All tests are passing. Let me create a summary of what was implemented.
- refactor(info): reorder fields in GpuRow struct and enhance job grouping logic
- feat(gqueue): add time-based filtering and completed jobs query
- fix(gqueue): update database query to retrieve all matching jobs without limit
- refactor(server): add unified get_job method to SchedulerRuntime
- fix(server): query database for completed jobs in get_job endpoint
- feat(gqueue): query database for completed jobs with --all or --states flags
- refactor(utils): consolidate time formatting with consistent HH:MM:SS format
- feat(scheduler): add group max concurrency control
- feat(scheduler): implement lock-free job execution with immediate wake-up notifications
- Implement asynchronous database writer with micro-batching for job operations
- feat(database): integrate r2d2 for connection pooling and enhance job persistence
- feat(executor): enhance command wrapping to handle special characters in user commands
- feat(executor): wrap user commands in bash to ensure proper execution of logical operators
- chore(deps): Update Rust crate rusqlite to 0.38
- feat(database): defer foreign key checks during transaction to support job dependencies in migrations
- feat(database): refactor job update logic to use transactions for improved consistency and performance
- feat(migrations): add pre-check for migration before database creation to prevent data loss
- feat(database): integrate SQLite for job persistence and state management
Installation
Quick Install (Linux x86_64) - Recommended
curl -fsSL https://gflow-releases.puqing.work/install.sh | shOr from GitHub:
curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | shAlternative: Cargo
cargo install gflowFull Changelog: v0.4.7...v0.4.8
Release v0.4.7
What's Changed
- chore: bump version to 0.4.7 in Cargo.toml and Cargo.lock
- feat: implement batch session killing for improved performance in tmux management
- chore: update dependencies and remove unused packages for cleaner Cargo configuration
- chore: add cargo-machete pre-commit hook for improved Rust project management
- chore: update dependencies to remove specific versions for http and hyper
- chore: update dependencies for improved functionality and performance
- chore: update socket2 dependency to version 0.6
- fix: add allow_negative_numbers to limit argument in ListArgs struct
- refactor: simplify job state filtering logic in handle_list function
- refactor: streamline session closing logic and enhance filtering criteria
- feat: enhance session closing logic to target only completed jobs and improve command documentation
- feat: add clear_dirty method and ensure immediate state saves clear the dirty flag
- feat: implement batch job submission and processing in the server and client
- feat: integrate clap-verbosity-flag for improved logging verbosity management
- refactor: remove unused dependencies and improve logging initialization with error handling
- Refactor logging to use
tracinginstead oflogfor improved performance and structured logging
Installation
Quick Install (Linux x86_64) - Recommended
curl -fsSL https://gflow-releases.puqing.work/install.sh | shOr from GitHub:
curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | shAlternative: Cargo
cargo install gflowFull Changelog: v0.4.6...v0.4.7
Release v0.4.6
What's Changed
- chore: bump version to 0.4.6 in Cargo.toml and Cargo.lock
- chore(deps): Update actions/checkout action to v6
- docs: simplify installation instructions by removing CDN mention
- refactor: clean up installation instructions and remove redundant information
- feat: update R2 upload process to handle specific archive formats and improve file organization
- feat: refactor R2 upload process to use r2-upload-action and streamline file handling
- fix: specify aws-region as us-east-1 for R2 uploads
- feat: enhance release workflow and installation instructions with R2 CDN support
- Update README.md
- feat: enhance handle_reload to verify new daemon instance by distinct PID and improve health check logic
- feat: enhance handle_reload to verify new daemon instance by distinct PID and improve health check logic
- feat: update handle_reload to accept config_path and enhance health checks for daemon reload
- feat: implement hot reload functionality and state migration for gflow daemon
- feat: add integration tests for gflow job scheduler functionality
- feat: enhance tmux session test to verify usability by starting the tmux server
- feat: enhance tmux session test to check for usability instead of just availability
- feat: improve job failure handling with try_transition and enhance tmux test availability check
- feat: enhance GPU index validation and improve state file handling in scheduler runtime
- feat: refactor scheduler and executor integration, add scheduler_runtime module
- feat: refactor job script template generation to use clap metadata and remove Python script
- feat: update script creation logic to use file paths and improve error handling
Installation
Quick Install (Linux x86_64) - Recommended
curl -fsSL https://gflow-releases.puqing.work/install.sh | shOr from GitHub:
curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | shAlternative: Cargo
cargo install gflowFull Changelog: v0.4.5...v0.4.6