github Kenya-DK/quantframe-react v1.6.29
Quantframe v1.6.29

5 hours ago

Features

  • ⏰ Added an order cooldown system to the live scraper that prevents rapid-fire Warframe Market order updates: a 20-minute cooldown when re-posting at the same price and a 5-minute cooldown after a price change. Cooldown state is persisted per item and surfaced in the UI (clock icon on row actions and a live countdown in the price history popover). Currently disabled by default behind a ORDER_COOLDOWN_ENABLED flag.
  • ✨ Added a minimum profit threshold logic to the live scraper, allowing users to set a minimum profit percentage or flat profit amount for their trades.
  • ✨ Added a full Syndicate trading pipeline: a new syndicate_item database table and API, a redesigned WTS settings panel with per-syndicate standing tracking and an "ignore standing" toggle, importing syndicate items from Warframe Market, and a live scraper Syndicate tab with sell/edit/delete/export operations.
  • ✨ Reworked WF Inventory to support pluggable sources — Warframe profile or AlecaFrame (lastData.dat watcher) — selectable in Settings → Advanced → WF Inventory, with a manual refresh button and syndicate standing import.
  • ✨ Extended bulk trading to stock items: is_bulk is now a valid stock item property, the selling pipeline uses it when computing the per-trade quantity, and the live scraper's item table shows the list price with a per-trade badge.
  • ✨ Added a File inventory source to WF Inventory that reads a plain JSON inventory file (lastData/InventoryJson format) from a configurable path and watches it for changes, selectable alongside Profile and AlecaFrame in Settings → Advanced → WF Inventory.
  • ✨ Added List/Chart view modes to the Trading Analytics Transaction tab. The chart view plots daily Revenue and Expenses (bars) with a cumulative Profit line, and has a date-range dropdown (Last 7/30/90/365 days or All time, defaulting to 90 days) independent of the list filters.

Fixes

  • 🛠️ Fixed the unit price being recorded as the total trade price instead of the per-item unit price (closes #124).
  • 🛠️ Fixed a crash ("unexpected value for StockStatus enum") caused by stale status values in the database (e.g. cooldown_price_change); the stock status now falls back to Unknown instead of erroring.
  • 🛠️ Fixed nullify_zeroed_properties erroring on non-numeric properties by supporting f64, i64, i32, u64, String, and array types instead of assuming everything is a float.
  • 🛠️ Fixed syndicate items failing to post when the standing check errored; the check now degrades gracefully instead of aborting the pipeline.
  • 🛠️ Fixed the users activity linking to to thw wrong endpoint
  • 🛠️ Fixed stock_riven_sell logging to the wrong file (stock_riven_create.log).
  • 🛠️ Fixed the live scraper's global knapsack budget pass deleting wish-list buy orders; wish-list items are now excluded from the knapsack check.
  • 🛠️ Fixed the ban screen never showing: the banned route was unreachable because IsUserBanned() required a clean URL while its render condition required the opposite, so QF/WFM bans detected by the backend were not surfaced in the UI. The ban screen now also takes precedence over the generic error page.

Refactors

  • ♻️ Reworked analytics from a single add_metric call into a structured, batched event system. Events are now named (ApplicationEvent, e.g. app_start, stock_item_create, page_view, switch_theme) and carry structured string properties such as success, error_type, and count. Events are queued in memory and flushed to the backend every 10 seconds in batches of up to 50, and track_event instrumentation was added across commands, the live scraper, the log parser, and theme switching.
  • ♻️ Reworked the live scraper's selling, wishlist, and syndicate pipelines so the order summary is only logged after a successful Warframe Market order update, and moved the "mark as live" persistence to run only on success.
  • ♻️ Items are now marked as Live before the order update is attempted (so a cooldown-skipped update no longer flips them to Error), and cooldown state is tracked per item via a new cooldown property.
  • ♻️ Reworked wishlist change tracking to use a list of changed fields (Vec<String>) instead of a single value.
  • ♻️ Reworked the stock riven pipeline (create/delete/sell) to use OperationSet flags instead of &[&str], tagged operations with a StockRiven_ prefix, and added a unified logging helper that respects per-call disable flags (DisableCreatedLog, DisableDeletedLog, DisableUpdatedLog, DisableCompleteLog, DisableNotFoundLog) plus ReturnOn: early-exit handling. Renamed the bought parameter to price in the stock_riven_sell command.

Don't miss a new quantframe-react release

NewReleases is sending notifications on new releases.