Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.1.0"
".": "1.2.0"
}
102 changes: 102 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,107 @@
# Changelog

## [1.2.0](https://github.com/ApocDev/pyops/compare/v1.1.0...v1.2.0) (2026-07-14)


### Features

* **app:** add "Apply all" whole-factory re-balance to what-if ([8468486](https://github.com/ApocDev/pyops/commit/84684863031730bf9803491622038688b71dda20))
* **app:** add Alt-click recipe explorer ([66c2992](https://github.com/ApocDev/pyops/commit/66c2992f97a02b2ea6c144d1c4a164f56f6a6cc3))
* **app:** declutter the UI — controls first, explanation on demand ([0b30851](https://github.com/ApocDev/pyops/commit/0b3085110073e5b1bbf26b447aa70c99a5bae7b7))
* **app:** redesign home and navigation ([a06ff06](https://github.com/ApocDev/pyops/commit/a06ff06e64295299c302dd3b26200e177604e38f)), closes [#145](https://github.com/ApocDev/pyops/issues/145) [#146](https://github.com/ApocDev/pyops/issues/146)
* **app:** strengthen overlay separation and add segmented/info-hint primitives ([7e52675](https://github.com/ApocDev/pyops/commit/7e52675d7156989ccfffd71086315ae1b50af9a3))
* **app:** suppress native context menu ([df778e7](https://github.com/ApocDev/pyops/commit/df778e7fcd611170ca527dc2d62c104694c24bbc))
* **app:** surface Launch Factorio on the home page ([ee997b2](https://github.com/ApocDev/pyops/commit/ee997b2e907ea942e77a1673f50a47f239eeb83c))
* **app:** sushi planner for block belt loops ([eda5146](https://github.com/ApocDev/pyops/commit/eda514691b9b330ab66a75c42b7fc609864c397c))
* **block:** add best recipe goal shortcut ([8a4306e](https://github.com/ApocDev/pyops/commit/8a4306e4781d14d14bbbddcda4b0131ba7711511))
* **block:** copy and paste goals ([075d1fb](https://github.com/ApocDev/pyops/commit/075d1fbc9cbeca3c493e292c1dbce0cdf9f166dd))
* **block:** extract recipe rows into supplier blocks ([5b1ad4d](https://github.com/ApocDev/pyops/commit/5b1ad4d084610424214f0f016ee95f130a9313b8))
* **block:** extract recipe rows into supplier blocks ([38a262b](https://github.com/ApocDev/pyops/commit/38a262bc941630d06e22a726b830a3d627cb4b2d)), closes [#133](https://github.com/ApocDev/pyops/issues/133)
* **block:** flag imports without enabled suppliers ([0de20f0](https://github.com/ApocDev/pyops/commit/0de20f08d7563cf18c2287be67c265fcf9faf09d))
* **block:** model incidental spoilage as byproduct ([3230f30](https://github.com/ApocDev/pyops/commit/3230f30f19fc51c66536fc9b318b61ed248c956e))
* **block:** reorder goals with drag handles ([fb3de95](https://github.com/ApocDev/pyops/commit/fb3de95392eb0538ccabf55bd30a91d10612563a))
* **blocks:** create blocks directly in folders ([f6a8b03](https://github.com/ApocDev/pyops/commit/f6a8b03d5c1ddc912cdb13011550756a20765751))
* **block:** show loading-fit building counts ([5e29ee9](https://github.com/ApocDev/pyops/commit/5e29ee987d916c996e8ccb5a6a35f540c56160ce))
* **bridge:** deliver app-built blueprints to the game cursor ([2ba8559](https://github.com/ApocDev/pyops/commit/2ba85596d8b5936afc9b6dd69c19363fe8972d60))
* **bridge:** refresh built machines automatically ([9463820](https://github.com/ApocDev/pyops/commit/94638200580f63150950c86431b1e76fb1c64f00))
* **factory:** replace balance loop with pinned goal solver ([cee1822](https://github.com/ApocDev/pyops/commit/cee1822baa57a46009a0cadf574996e272fd5e4b))
* **mod:** in-game sushi-loop tracer (ALT+B) ([117264d](https://github.com/ApocDev/pyops/commit/117264d894521f95428e51a76f1047229882ed24))
* **planner:** add factory supply priorities ([0446569](https://github.com/ApocDev/pyops/commit/0446569e4b98c08525276e115d1590573110553c))
* **planner:** add supply priority controls ([d071a7d](https://github.com/ApocDev/pyops/commit/d071a7d2cb83598c798f55550f8ff5d122c1659d))
* **scenario:** balance factory iteratively ([c4c7435](https://github.com/ApocDev/pyops/commit/c4c74354d5510cda57ed5cb397af40f329b64385)), closes [#147](https://github.com/ApocDev/pyops/issues/147)
* **solver:** explain infeasible material balances ([3fed877](https://github.com/ApocDev/pyops/commit/3fed877aac421acf79bfdfd86c0fd8075cfc30ab))
* **solver:** prioritize factory supply allocation ([0ae6441](https://github.com/ApocDev/pyops/commit/0ae644162e1ad5c25ed86bd20402baa96bb94307))


### Bug Fixes

* **app:** clarify generator output and availability ([734dd6d](https://github.com/ApocDev/pyops/commit/734dd6d9761b37d57e6b38bc113cc7d7453f16b7))
* **app:** hide excluded module and beacon choices ([4d8cdd7](https://github.com/ApocDev/pyops/commit/4d8cdd771da6cd9d8c52a0be2471adff0e7f3de8))
* **app:** improve factory scenario readability ([eea1b59](https://github.com/ApocDev/pyops/commit/eea1b59a6d21cefff923212104791ddfe4a65c71))
* **app:** keep recipe chance visible in hover cards ([8d56880](https://github.com/ApocDev/pyops/commit/8d5688022c74085e6132480f17130983fe9a9192))
* **app:** show fluid fuel recipe icons ([2bee180](https://github.com/ApocDev/pyops/commit/2bee1801e0f62c82d3ee54afc59c86eea87dff36))
* **app:** suppress root theme hydration warning ([aa9a323](https://github.com/ApocDev/pyops/commit/aa9a32383acb84a498660a2bce8885bc598e637f))
* **app:** tighten block-balance chips ([ee2af23](https://github.com/ApocDev/pyops/commit/ee2af23f7dccf541b83255ebdfc649211b3d4ce7))
* **app:** treat sub-1% what-if scale deltas as balanced ([7cc5a1c](https://github.com/ApocDev/pyops/commit/7cc5a1c3c49acd58d203f898dff594bde0645b85))
* **block:** align goals to widest content ([e9854aa](https://github.com/ApocDev/pyops/commit/e9854aae6bbe6e581de5e2665e3eb9daeabffd5d))
* **block:** align spoilage with recipe rate ([1779c95](https://github.com/ApocDev/pyops/commit/1779c9547775c78b8136b02c6f11b329f03a346f))
* **block:** allow secondary consume goals ([7682313](https://github.com/ApocDev/pyops/commit/7682313ac82a4ee7a4dc55c7b90b35f2bbb5633a))
* **block:** distinguish consume goals from imports ([62d7a49](https://github.com/ApocDev/pyops/commit/62d7a490330572a5ecc2483387d8d56c630d5e91))
* **block:** drain selected byproduct consumers ([225fd2c](https://github.com/ApocDev/pyops/commit/225fd2c6ca85be97e15d68d727825db2fdb908f9))
* **block:** flag recipes with spoilable products ([df17962](https://github.com/ApocDev/pyops/commit/df17962e96de0fdea0498267e45e637b302c23c2))
* **block:** give stock goals a stable two-line layout ([a537c8e](https://github.com/ApocDev/pyops/commit/a537c8ec6e63b282d80b9af95dfa32e1233debda))
* **block:** keep import status inside flow chips ([e71a29f](https://github.com/ApocDev/pyops/commit/e71a29f1a13fe35e356e7969fa4e89ee23faac41))
* **block:** order imports by relevance ([056d06a](https://github.com/ApocDev/pyops/commit/056d06a0d2e3919c157d29f081dbb617c76e561e))
* **block:** process cyclic surplus into sink goals ([21c2f06](https://github.com/ApocDev/pyops/commit/21c2f06febd428d093d60e8162f5949f47928290))
* **block:** rank unlocked recipes before horizon choices ([040e690](https://github.com/ApocDev/pyops/commit/040e690ad6849f8a58c2609c5353f68a9cf7e8e2))
* **block:** send solve payloads via post ([821d2fd](https://github.com/ApocDev/pyops/commit/821d2fdec7fe2264a9930ad746d1876185c95ac9)), closes [#153](https://github.com/ApocDev/pyops/issues/153)
* **block:** show spoil times on recipe products ([7a03727](https://github.com/ApocDev/pyops/commit/7a037274723f75fa00829f9ee134812e23891740))
* **block:** size goal and flow columns to content ([e17e646](https://github.com/ApocDev/pyops/commit/e17e646844b7c55f53876c4414e7bd94fe3c9e92))
* **block:** wrap balance flows without track overflow ([2ee282a](https://github.com/ApocDev/pyops/commit/2ee282a9aa3b03613d9a0ec365f3086c22d79e95))
* **bridge:** sync exact productivity bonuses ([7442319](https://github.com/ApocDev/pyops/commit/744231931596ae15bb83f7ccb3be971c0b92b8e9)), closes [#112](https://github.com/ApocDev/pyops/issues/112)
* **bridge:** update bridge version to 4 and handle transient UDP delivery errors ([d12cada](https://github.com/ApocDev/pyops/commit/d12cada90605b86eb7517eb1857d73df11606cd2))
* **data:** restore TURD master detection ([48a8c13](https://github.com/ApocDev/pyops/commit/48a8c138819936e8b7020d6647b051f004f81d72)), closes [#143](https://github.com/ApocDev/pyops/issues/143)
* **data:** support Factorio 2.1 prototype dumps ([26862d1](https://github.com/ApocDev/pyops/commit/26862d1a72f17cca38460faea2ad868f78df8b7a))
* **db:** keep project state in SQLite ([3b5d6ab](https://github.com/ApocDev/pyops/commit/3b5d6abb6f762e35923f055f6d8cbf30733ba936))
* **db:** serialize overlapping undo actions ([a637bc9](https://github.com/ApocDev/pyops/commit/a637bc9d02581741efaa13912134c3529e70d242))
* **db:** track solve projection generations ([9581ce3](https://github.com/ApocDev/pyops/commit/9581ce3f8048fb605cc10bc16d0a2841cae5a349))
* **dev:** ignore Nitro proxy resets ([b2a3a82](https://github.com/ApocDev/pyops/commit/b2a3a82b0351a6dd1694af545863d9932a0919d3))
* **dev:** suppress aborted hot reload resets ([d9fe23a](https://github.com/ApocDev/pyops/commit/d9fe23ad70d4bde0ed656ac0983651b565158bee))
* **mod:** give the top button a slot style and crisp logo ([43b13f8](https://github.com/ApocDev/pyops/commit/43b13f8170a6f455204f326c344acb4e8805d9c9))
* **mod:** use pyops logo for mod icons ([7c34538](https://github.com/ApocDev/pyops/commit/7c34538cf7b2edbb902df2c453c3532edfbd8ffc))
* **mod:** use pyops logo for mod icons ([001d40e](https://github.com/ApocDev/pyops/commit/001d40ecc6d2cc7bc8965dc83d216a0ef9292d9e))
* **planner:** link feedback byproduct consumers ([39bf86f](https://github.com/ApocDev/pyops/commit/39bf86f08e949e2ea0799c31ceadddc363724a46))
* **scenario:** prevent sink feedback from ratcheting goals ([4cdb043](https://github.com/ApocDev/pyops/commit/4cdb043c13ba68fd70e07c1861eb629de5673816))
* **scenario:** rebalance individual block goals ([8c8ba4d](https://github.com/ApocDev/pyops/commit/8c8ba4d08087237b175e4f635d463f04a77eb382))
* **solver:** derive rates from stock goals ([ae593be](https://github.com/ApocDev/pyops/commit/ae593bee8e5f6cc3178544c4d186d5cbb16621e6))
* **solver:** honor sinks and explain scenario failures ([d3ce2df](https://github.com/ApocDev/pyops/commit/d3ce2dfe3e90e86aee627f93fabfeebb0de3b58f))
* **solver:** preserve fixed scenario boundary flows ([a681e42](https://github.com/ApocDev/pyops/commit/a681e42200c55665ee36206c6c8d696080ba1275))
* **solver:** scale goals beyond coproduct plateaus ([32ea0a5](https://github.com/ApocDev/pyops/commit/32ea0a5e866a73abad1a9b2f11ef0fa4c3328b41))
* **solver:** show recovered supply without zeroing goals ([0be3d18](https://github.com/ApocDev/pyops/commit/0be3d18dd561f9c298d1a5850caf49d610c6d19e))
* **solver:** tolerate empty legacy block docs ([d69d303](https://github.com/ApocDev/pyops/commit/d69d303ef87290b35715c1c3ed239d9ec4e5152b))
* update Factorio version requirement to 2.1 in README and info.json ([3063f3c](https://github.com/ApocDev/pyops/commit/3063f3c7cffbb1f0a345a3df450610d449ba4827))
* **whatif:** preserve input focus while solving ([42eb8ad](https://github.com/ApocDev/pyops/commit/42eb8ad6d87d653ece6c843df85852a767811689))


### Performance Improvements

* **agent:** avoid duplicate conversation rewrites ([df5e3b2](https://github.com/ApocDev/pyops/commit/df5e3b2e502108f64900b3563d642967dd376fee))
* **agent:** batch recipe option enrichment ([17d01ca](https://github.com/ApocDev/pyops/commit/17d01caf16cf47cb505ddd76fed351e41a51c77c))
* **app:** batch item availability lookups ([e6012f5](https://github.com/ApocDev/pyops/commit/e6012f51f8baf817010756b2fe672342c9af13e0))
* **app:** consolidate recurring status queries ([80fca58](https://github.com/ApocDev/pyops/commit/80fca58a8ef5f2f43e77b6a8b378933286ae207e))
* **app:** streamline server-function requests ([282f3f0](https://github.com/ApocDev/pyops/commit/282f3f0de7a259199899b15ba2433bda91806ba2))
* **block:** batch solve reference lookups ([8939bdc](https://github.com/ApocDev/pyops/commit/8939bdcbfca97564afb04214685d993889df9a62))
* **block:** replace measured goal grid with CSS ([5ace705](https://github.com/ApocDev/pyops/commit/5ace7059461d0752a11f3aeca247dd99c353c829))
* **db:** batch block and folder ordering ([6eb1ac3](https://github.com/ApocDev/pyops/commit/6eb1ac30fb87f48391ea41ff6d43ec4822cd81c6))
* **db:** batch block projection reads ([be3203b](https://github.com/ApocDev/pyops/commit/be3203ba458befb0e551335df668d985924cabe3))
* **db:** batch dependency explorer analysis ([5c33df7](https://github.com/ApocDev/pyops/commit/5c33df73b4a8f7208ece1f4d0a83eff13a453506))
* **db:** batch recipe detail queries ([bcd0bf5](https://github.com/ApocDev/pyops/commit/bcd0bf5b9adf5221e955972202ab55674c79f564))
* **db:** batch TURD planning queries ([39971e3](https://github.com/ApocDev/pyops/commit/39971e33c67a63a632f774e98770963194f74327))
* **db:** centralize SQLite connection policy ([68abc48](https://github.com/ApocDev/pyops/commit/68abc48e744e12e73f6efb677259fc73af46c5a2))
* **solver:** coalesce editor solves and saves ([e7222d8](https://github.com/ApocDev/pyops/commit/e7222d89f2bbdaf9de0870270eca60f2d20862b4))
* **solver:** reuse block solves during rebalance ([539220c](https://github.com/ApocDev/pyops/commit/539220c0644f8e58560909a3031fca70652dbb08))
* **tasks:** batch task reads and mutations ([b3c0951](https://github.com/ApocDev/pyops/commit/b3c0951f417f93763d48660e2d6178e51b69b25d))

## [1.1.0](https://github.com/ApocDev/pyops/compare/v1.0.0...v1.1.0) (2026-07-07)

### ⚠ BREAKING CHANGES
Expand Down
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "app",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"type": "module",
"imports": {
Expand Down
2 changes: 1 addition & 1 deletion app/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "app"
version = "1.1.0"
version = "1.2.0"
description = "A Tauri App"
authors = ["you"]
license = ""
Expand Down
2 changes: 1 addition & 1 deletion app/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "PyOps",
"version": "1.1.0",
"version": "1.2.0",
"identifier": "com.apocdev.pyops",
"build": {
"beforeDevCommand": "PORT=34115 HOST=127.0.0.1 node .output/server/index.mjs",
Expand Down
2 changes: 1 addition & 1 deletion mod/info.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pyops",
"version": "1.1.0",
"version": "1.2.0",
"title": "PyOps",
"author": "ApocDev",
"factorio_version": "2.1",
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.1.0
1.2.0
Loading