Skip to content

Releases: AndPuQing/gflow

Release v0.4.14

21 Mar 07:05

Choose a tag to compare

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

17 Mar 15:09

Choose a tag to compare

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

04 Mar 07:09

Choose a tag to compare

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

01 Feb 06:31

Choose a tag to compare

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

21 Jan 08:21

Choose a tag to compare

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 | sh

Or from GitHub:

curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | sh

Alternative: Cargo

cargo install gflow

Full Changelog: v0.4.9...v0.4.10

Release v0.4.9

21 Jan 07:04

Choose a tag to compare

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 | sh

Or from GitHub:

curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | sh

Alternative: Cargo

cargo install gflow

Full Changelog: v0.4.8...v0.4.9

Release v0.4.8

17 Jan 06:29

Choose a tag to compare

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 | sh

Or from GitHub:

curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | sh

Alternative: Cargo

cargo install gflow

Full Changelog: v0.4.7...v0.4.8

Release v0.4.7

04 Jan 08:13

Choose a tag to compare

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 tracing instead of log for improved performance and structured logging

Installation

Quick Install (Linux x86_64) - Recommended

curl -fsSL https://gflow-releases.puqing.work/install.sh | sh

Or from GitHub:

curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | sh

Alternative: Cargo

cargo install gflow

Full Changelog: v0.4.6...v0.4.7

Release v0.4.6

30 Dec 08:45

Choose a tag to compare

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 | sh

Or from GitHub:

curl -fsSL https://raw.githubusercontent.com/AndPuQing/gflow/main/install.sh | sh

Alternative: Cargo

cargo install gflow

Full Changelog: v0.4.5...v0.4.6

v0.4.5

28 Dec 06:41

Choose a tag to compare

What's Changed

  • chore(deps): Update Rust crate tempfile to v3.24.0 by @renovate[bot] in #28

Full Changelog: v0.4.4...v0.4.5