From 19ce8ce7ffb842bdc79a65499a01fbec07652f12 Mon Sep 17 00:00:00 2001 From: amareshhebbar Date: Tue, 4 Aug 2026 18:41:53 +0530 Subject: [PATCH] feat: add new changelog --- .gitignore | 3 +++ CHANGELOG.md | 17 +++++++++++++++++ .../test_config.cpython-314-pytest-8.3.5.pyc | Bin 8739 -> 0 bytes ..._folder_reader.cpython-314-pytest-8.3.5.pyc | Bin 3445 -> 0 bytes .../test_server.cpython-314-pytest-8.3.5.pyc | Bin 5478 -> 0 bytes ...st_test_runner.cpython-314-pytest-8.3.5.pyc | Bin 4247 -> 0 bytes ...t_ticket_store.cpython-314-pytest-8.3.5.pyc | Bin 11303 -> 0 bytes 7 files changed, 20 insertions(+) create mode 100644 CHANGELOG.md delete mode 100644 tests/__pycache__/test_config.cpython-314-pytest-8.3.5.pyc delete mode 100644 tests/__pycache__/test_folder_reader.cpython-314-pytest-8.3.5.pyc delete mode 100644 tests/__pycache__/test_server.cpython-314-pytest-8.3.5.pyc delete mode 100644 tests/__pycache__/test_test_runner.cpython-314-pytest-8.3.5.pyc delete mode 100644 tests/__pycache__/test_ticket_store.cpython-314-pytest-8.3.5.pyc diff --git a/.gitignore b/.gitignore index 700b4c7..efb5e32 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ __pycache__/ data/ repos/ .venv/ +dist/ +build/ +*.egg-info/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4e6deaa --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +## [0.2.1] - 2026-08-04 +### Fixed +- PyPI metadata: switched to SPDX license expression, removed deprecated License classifier +### Added +- keywords/classifiers for PyPI discoverability + +## [0.2.0] - 2026-08-03 +### Added +- Full ~45-function API (bug query, lifecycle, fix-apply, live monitoring, LLM/token tracking, DB maintenance) +- Multi-provider LLM fallback +- live_monitor.py (spawn-and-own or tail-log modes) +- Go client package, extended npm client (5 → 49 methods) +- RPC dispatcher + CORS support in server.py +### Fixed +- Every Phase 1 stabilization bug (see PR history) \ No newline at end of file diff --git a/tests/__pycache__/test_config.cpython-314-pytest-8.3.5.pyc b/tests/__pycache__/test_config.cpython-314-pytest-8.3.5.pyc deleted file mode 100644 index d9d923b19ae2afed8305d3b975eb24051f078f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8739 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 Klwjg-`+opQbe^UF diff --git a/tests/__pycache__/test_server.cpython-314-pytest-8.3.5.pyc b/tests/__pycache__/test_server.cpython-314-pytest-8.3.5.pyc deleted file mode 100644 index e60599ecbcaaeddd25d99dd861ba89ec302a4f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5478 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 a^A)Q73PITj-~k$bfP#ZwCugkvPyW+Rcz zk!mA9Y1ptI4;%6{7)62kF?s8sP~?4p9NV>U$gsZd%}Dw%>SG#*NSh zybQmrNkOgq97n}SzP+yCIfjbDS|~$-^+qbFk-;L$^PEEY0oJFAxNA*L!)qI2QL5XP z!{VF9UAIQ{b$EkuTcf(^It-gyRcFbHRnjV|t-0GfY0o;>HfEW!zNytJu6m1VW@($@ zs%Drh>3soi-PRo@8f8A8;~3@^ivhNntXSd+QTdEg;Gd;~nrH9uZ{gy_Y&Of5a@$r_&ux9CRUyO9cCM^fbnboI zaMZb+;W#z@L(8&rd_9gQA+pYHnz8F_Nc975zX3IHMaRJlhTHiTL<6;YhIZdL>KWf# zJ?gpCSZU$Z?+d>!?B*MVL!3Q{p+s*h)qiibl^Wj7wNfLyn^0@@ow`@wQ<|5Szuswn zyxuJSs(EX(*}L_9`jcqnY~~~(4J1#H)GwbzlD)CU%E@VT>fG*UM}rrdlUI%guQaZ= zaNjW=-p9kocyu3+?zv4odWfez^~gRR`EvcQH@>)WUphE9dx+=0#XZM(Xde%KDeo2U z|MC!DZiO`JSJiLu2Tx&*=s9qSgTe!szrg!ypp6c6d?MuAn|KUubhh&vPt^-$oWn`S zngb9Kr+?BlvLiRqou3!+J1Yp?`NbRUj;%UEBd^@tBvFjc3nckTeqPMCeUnHC5cTO7bfPMq#Q4MKK|!(%a)6Q0w?H`0N((9D@Y*L^}1@nGiQxh;_R0s!cO zK-VEl((_p&!jD!~tw&%AtVr#IpoPJ+)+&br!Mfvs~n#WdJ92>SixY+V#td z!r(;DD=NSi1vKU;$P%ifZR%XZGD}_rhGi~OYEd?zZd$aexvGBGu4ty_LJ#;l z%hxf&*AW980|H<&xKRD@-wHS8!;Lw=;ZOOqaN})775ug5)iwj&_s$i>;kXO@dEWtN(G+q6D6Rims@&2V&wF2gAP%{nCzU1~WIaWwr{8aS3F z9!V2>tIgcIhthkkp24Ox_2=5LGzC}lG?)H$AWi+Dt?uZ)k*5CjSU&X~5~67)rA{L7 zeCG6npFb@vyq`o5lk)p#A`gcJkP2Absu>m6FddfSMB8bdQGI5g@pA<1JVSNw4}m2* zDi&|+yu8w3aKaMa&qf7)HoP-~{{lFbdfUcZ`2&B`_$iaFRIPHYqF<%g!HA!(9lp;Y lZbA45Lcc}7k^hdypWs1ZS$Hyog*TsMKzx^p32ATZ{To36CISEe diff --git a/tests/__pycache__/test_ticket_store.cpython-314-pytest-8.3.5.pyc b/tests/__pycache__/test_ticket_store.cpython-314-pytest-8.3.5.pyc deleted file mode 100644 index f97735fa5d6402978d04d9fab52e0c017c0f1be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11303 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 K=3-MUA^0bF5?@~c