From 25accbf564a73ff9b92b589431850d53202882d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:46:09 +0000 Subject: [PATCH] chore(main): release 1.2.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 102 ++++++++++++++++++++++++++++++++++ app/package.json | 2 +- app/src-tauri/Cargo.toml | 2 +- app/src-tauri/tauri.conf.json | 2 +- mod/info.json | 2 +- version.txt | 2 +- 7 files changed, 108 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5fdd8830..c3f14639 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.1.0" + ".": "1.2.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index efd996d0..94c3f458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/app/package.json b/app/package.json index 7d676d68..d7a442f0 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "app", - "version": "1.1.0", + "version": "1.2.0", "private": true, "type": "module", "imports": { diff --git a/app/src-tauri/Cargo.toml b/app/src-tauri/Cargo.toml index 35f0dfff..aef736d0 100644 --- a/app/src-tauri/Cargo.toml +++ b/app/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "app" -version = "1.1.0" +version = "1.2.0" description = "A Tauri App" authors = ["you"] license = "" diff --git a/app/src-tauri/tauri.conf.json b/app/src-tauri/tauri.conf.json index 571644b2..cd244075 100644 --- a/app/src-tauri/tauri.conf.json +++ b/app/src-tauri/tauri.conf.json @@ -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", diff --git a/mod/info.json b/mod/info.json index 112958fd..d5c171e5 100644 --- a/mod/info.json +++ b/mod/info.json @@ -1,6 +1,6 @@ { "name": "pyops", - "version": "1.1.0", + "version": "1.2.0", "title": "PyOps", "author": "ApocDev", "factorio_version": "2.1", diff --git a/version.txt b/version.txt index 9084fa2f..26aaba0e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.1.0 +1.2.0