github Relaticle/flowforge v3.0.0-beta1

pre-release8 hours ago

Flowforge v3.0.0-beta1

Breaking Changes

  • Position column type changed from VARCHAR to DECIMAL(20,10)
  • New dependency: ext-bcmath required
  • Removed: Rank.php service (Lexorank algorithm)

New Features

  • DecimalPosition Service - BCMath-based positioning with cryptographic jitter
  • PositionRebalancer Service - Automatic gap management and rebalancing
  • Retry Mechanism - Handles concurrent update conflicts with exponential backoff
  • Operations Commands:
    • flowforge:diagnose-positions - Detect gaps, inversions, duplicates
    • flowforge:rebalance-positions - Redistribute positions evenly
    • flowforge:repair-positions - Interactive multi-strategy repair

Improvements

  • Concurrent insertion safety via jitter (±5% randomness)
  • Auto-rebalancing when gap < 0.0001
  • Pessimistic locking on reference cards during moves
  • Support for custom primary keys (getKeyName())
  • Comprehensive logging of rebalancing operations

Migration from v2.x

  1. Ensure ext-bcmath is installed
  2. Change position column to DECIMAL(20,10)
  3. Run php artisan flowforge:repair-positions with "regenerate" strategy
  4. Add unique constraint: unique(['status', 'position'])

Technical Details

Property Value
Default Gap 65535
Min Gap (triggers rebalancing) 0.0001
Jitter Factor ±5%
BCMath Scale 10 decimal places
Max Retry Attempts 3
Retry Backoff 50ms, 100ms, 200ms

Full Changelog

Changed:

  • Position algorithm from Lexorank (string) to DecimalPosition (decimal)
  • Blueprint macro: flowforgePositionColumn() now creates DECIMAL(20,10)

Added:

  • DecimalPosition service with jitter
  • PositionRebalancer service
  • MaxRetriesExceededException exception
  • Three artisan commands for position management
  • Unique constraint recommendation in docs

Removed:

  • Rank.php service
  • String-based position calculations
  • Binary collation requirements

Don't miss a new flowforge release

NewReleases is sending notifications on new releases.