|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [1.0.0](https://github.com/pythoninthegrasses/meetup_bot/compare/v1.1.2...v1.0.0) (2026-03-21) |
| 4 | + |
| 5 | + |
| 6 | +### ⚠ BREAKING CHANGES |
| 7 | + |
| 8 | +* PostgreSQL is no longer supported. SQLite is the sole database provider, configured via DB_PATH env var (default: /data/meetup_bot.db). |
| 9 | + |
| 10 | +### Features |
| 11 | + |
| 12 | +* add e2e test suite with testcontainers for TASK-006 ([8d704ee](https://github.com/pythoninthegrasses/meetup_bot/commit/8d704eefeff083bba95c37aa4b4c0e17f0cb387d)) |
| 13 | +* add integration test suite with TestClient and pytest markers ([6d08754](https://github.com/pythoninthegrasses/meetup_bot/commit/6d08754eefc6e0bcf4981719ea02dcf5174fe4e6)) |
| 14 | +* add property-based tests with Hypothesis for TASK-007 ([a1c88d3](https://github.com/pythoninthegrasses/meetup_bot/commit/a1c88d3e48a76c982d107144a16039962907f3bd)) |
| 15 | +* add pytest taskfile with test categories and server lifecycle ([8470405](https://github.com/pythoninthegrasses/meetup_bot/commit/84704056f9873607f8052622a993f215c84aea03)) |
| 16 | +* add pytest unit test markers and fix all test failures ([5cb0366](https://github.com/pythoninthegrasses/meetup_bot/commit/5cb0366ca3496b8971ba2cc2f450a47d3718793b)) |
| 17 | +* add scheduling ([800acda](https://github.com/pythoninthegrasses/meetup_bot/commit/800acda371006760724ca67e6b0a70260b39b0b1)) |
| 18 | +* Add scheduling functionality ([fa2cd46](https://github.com/pythoninthegrasses/meetup_bot/commit/fa2cd46d1ca05d11625c31ed70b2e4cd629af397)) |
| 19 | +* add shared db module with SQLite support for local development ([5e4ba37](https://github.com/pythoninthegrasses/meetup_bot/commit/5e4ba373f9d151800a3d073f03c5e5ef10bf68ef)) |
| 20 | +* **auth:** add PUBLIC_IPS env var and cookie-based session auth ([1c5e71c](https://github.com/pythoninthegrasses/meetup_bot/commit/1c5e71c3bdbc3d7142a03d30f0505ddd41809446)) |
| 21 | +* migrate from PostgreSQL to SQLite with persistent Docker volume ([c685523](https://github.com/pythoninthegrasses/meetup_bot/commit/c685523aadf5ebe88a1f6921534ed5c1cd316ebd)) |
| 22 | +* replace Node.js with Deno for JS/TS tooling ([985c65a](https://github.com/pythoninthegrasses/meetup_bot/commit/985c65aee2c8e1b2dbd22d8f56221aa2fdb466c1)) |
| 23 | + |
| 24 | + |
| 25 | +### Bug Fixes |
| 26 | + |
| 27 | +* add `raise ... from err` in except clauses, add B904 rule ([2679341](https://github.com/pythoninthegrasses/meetup_bot/commit/267934146d0185ae856987f980267a4ffcbe5aba)) |
| 28 | +* add topicCategoryId filter to groupSearch query ([5e02468](https://github.com/pythoninthegrasses/meetup_bot/commit/5e0246878627fae58c611a38f8bc174a42b80533)) |
| 29 | +* **auth:** increase default token expiration from 30m to 8h ([c83de20](https://github.com/pythoninthegrasses/meetup_bot/commit/c83de20f66a3ade86d70da83e8bd97943734c638)) |
| 30 | +* **auth:** persist Swagger UI authorization across page refreshes ([8e676a1](https://github.com/pythoninthegrasses/meetup_bot/commit/8e676a1a42930cb60b87d1337d2201e34779ff30)) |
| 31 | +* bypass auth for local requests when DEV=True ([4f6d1b0](https://github.com/pythoninthegrasses/meetup_bot/commit/4f6d1b009b1fef98133b662791704acd0bb6848e)) |
| 32 | +* compute time values per-request in check-schedule endpoint ([2d53882](https://github.com/pythoninthegrasses/meetup_bot/commit/2d538822c4dc8e696c74332b1c13958e7543a060)) |
| 33 | +* docker ([be44104](https://github.com/pythoninthegrasses/meetup_bot/commit/be44104c8caa7197eeb12123873ab64aa7677ef8)) |
| 34 | +* **e2e:** set DEV=false in e2e server env and migrate to httpx ([378e77b](https://github.com/pythoninthegrasses/meetup_bot/commit/378e77b1b35efc276d77ab0828ca733eccc75556)) |
| 35 | +* filters ([f9810df](https://github.com/pythoninthegrasses/meetup_bot/commit/f9810df9964bdbc9ac60ca64db36143c4c9c38a7)) |
| 36 | +* handle duplicate user on startup and respect WEB_CONCURRENCY in gunicorn config ([13f6630](https://github.com/pythoninthegrasses/meetup_bot/commit/13f663044e520392335c5d9b83bfa016b4296b64)) |
| 37 | +* handle invalid private/public key gracefully in sign_jwt ([2327d5e](https://github.com/pythoninthegrasses/meetup_bot/commit/2327d5e9312eff1cbf8618c85aa567b42d57b1da)) |
| 38 | +* handle missing DB_USER/DB_PASS with actionable error and fix Dockerfile port ([45d1a37](https://github.com/pythoninthegrasses/meetup_bot/commit/45d1a37c88575da9ce107f1fea32ad97f220c056)) |
| 39 | +* handle missing events and imprecise date parsing in meetup_query ([b1ffb41](https://github.com/pythoninthegrasses/meetup_bot/commit/b1ffb41bd6097ef8587e56ff95219aa4abb4c294)) |
| 40 | +* handle missing json file ([9391c1b](https://github.com/pythoninthegrasses/meetup_bot/commit/9391c1b0e0fd2fac723e258c1b7ba474c5d7b61d)) |
| 41 | +* heroku stats ([79977ab](https://github.com/pythoninthegrasses/meetup_bot/commit/79977ab5549de6d11d888b229fd3b7f0d1b352e0)) |
| 42 | +* indentation ([3a47e6c](https://github.com/pythoninthegrasses/meetup_bot/commit/3a47e6c245164d085b69cfc9d27081b75a9f308d)) |
| 43 | +* migrate capture_groups from keywordSearch to groupSearch API ([52cd8a9](https://github.com/pythoninthegrasses/meetup_bot/commit/52cd8a9fcecdb2b63f68e7f459411007f89691cc)) |
| 44 | +* migrate sign_jwt and scheduler from requests to httpx ([1ba297f](https://github.com/pythoninthegrasses/meetup_bot/commit/1ba297f427992e9e0de82b6747aacd6cb4077611)) |
| 45 | +* move entities to db.py and use absolute paths for file I/O ([9b15b65](https://github.com/pythoninthegrasses/meetup_bot/commit/9b15b652d4d6f6c2ba8390fb96e7acb02773d0a3)) |
| 46 | +* override schedule times ([f18718b](https://github.com/pythoninthegrasses/meetup_bot/commit/f18718b62b403fabf7dce0921c9056dd96defba1)) |
| 47 | +* pandas formatting ([3b48647](https://github.com/pythoninthegrasses/meetup_bot/commit/3b48647ae1fa23598c7ee70d3efdcfe77070050f)) |
| 48 | +* pandas formatting ([9f7c5ce](https://github.com/pythoninthegrasses/meetup_bot/commit/9f7c5ce6d53f2f09230a078961f2314e83840964)) |
| 49 | +* pass auth to get_events in post_slack endpoint ([9dbc547](https://github.com/pythoninthegrasses/meetup_bot/commit/9dbc547b9b8f7b3814156175a7f7ca68660920d7)) |
| 50 | +* poetry package error ([a9a24ac](https://github.com/pythoninthegrasses/meetup_bot/commit/a9a24ac14d7ef2ce86ed517e744ada7128ebc6d1)) |
| 51 | +* print exception error ([96c3c40](https://github.com/pythoninthegrasses/meetup_bot/commit/96c3c404b1268401f2a4bbfc803f32849cc54d98)) |
| 52 | +* remove buildkit ([bd7ecc1](https://github.com/pythoninthegrasses/meetup_bot/commit/bd7ecc125d188e5bf4fc526f267282dd5492a19d)) |
| 53 | +* remove deprecated typing.List/Union import, add UP035 rule ([c036732](https://github.com/pythoninthegrasses/meetup_bot/commit/c03673248c2c4a9d446eb6079c8065dfe1a563ad)) |
| 54 | +* remove hard-coded .env path ([bc05636](https://github.com/pythoninthegrasses/meetup_bot/commit/bc056360e81968c7d086fce4744f807b9093c0e3)) |
| 55 | +* replace ParserError catch-all with explicit date type handling in sort_json ([ae2bd73](https://github.com/pythoninthegrasses/meetup_bot/commit/ae2bd7314db6e03050a906c29567a02633a9adf0)) |
| 56 | +* replace passlib with direct bcrypt and migrate to lifespan events ([8071027](https://github.com/pythoninthegrasses/meetup_bot/commit/8071027035975b57e6c5848d5a9df0b9a25d0184)) |
| 57 | +* set oauth2 auto_error=False so IP whitelist works without token ([d5e2988](https://github.com/pythoninthegrasses/meetup_bot/commit/d5e298897c1f5a32ce48f31d06902a704f05b091)) |
| 58 | +* update exclusions ([adb7a7d](https://github.com/pythoninthegrasses/meetup_bot/commit/adb7a7d57cfef266f89edc8aa08a4fa6531905fe)) |
| 59 | +* use /api/slack path in dokploy cron command ([99d0b63](https://github.com/pythoninthegrasses/meetup_bot/commit/99d0b635fcfb7eee5ac6a6c6187e89d3b328e737)) |
| 60 | +* use ternary for if/else assignments, add SIM108 rule ([353bab1](https://github.com/pythoninthegrasses/meetup_bot/commit/353bab1107e8e99e9bd425914e8bca7d054752f8)) |
| 61 | +* use WEB_CONCURRENCY env var for gunicorn workers ([394b54b](https://github.com/pythoninthegrasses/meetup_bot/commit/394b54b7beb4698cd3cd38f409c43aa6cf2810d2)) |
| 62 | +* wrong dockerfile directory ([b77daf5](https://github.com/pythoninthegrasses/meetup_bot/commit/b77daf51d5b1ae3d4fae406b3513ae8a201bce30)) |
| 63 | + |
| 64 | + |
| 65 | +### Performance Improvements |
| 66 | + |
| 67 | +* batch GraphQL queries for /api/events endpoint ([b413825](https://github.com/pythoninthegrasses/meetup_bot/commit/b413825e22b459fd510c97f573a840751e89e786)) |
| 68 | + |
| 69 | + |
| 70 | +### Documentation |
| 71 | + |
| 72 | +* add [@alex-code4okc](https://github.com/alex-code4okc) as a contributor ([7feccfa](https://github.com/pythoninthegrasses/meetup_bot/commit/7feccfa439115616c7fdb760c15043ff3e6d858e)) |
| 73 | +* add architecture ([450061e](https://github.com/pythoninthegrasses/meetup_bot/commit/450061ecaaa88023d2efae883d815bbd6a68cb17)) |
| 74 | +* add backlog tasks, add security.md, update agents.md ([dc3d549](https://github.com/pythoninthegrasses/meetup_bot/commit/dc3d5493360474fe98997d929d15a040382ee583)) |
| 75 | +* complete task-016 and update task-017 status ([1067c4a](https://github.com/pythoninthegrasses/meetup_bot/commit/1067c4adb61696bc62cdb49dc92963359a31972f)) |
| 76 | +* contributing ([fd2c294](https://github.com/pythoninthegrasses/meetup_bot/commit/fd2c294a018e6943b4b6b66af74b8eaa14db0c0c)) |
| 77 | +* fix stale references in architecture.md ([35327d0](https://github.com/pythoninthegrasses/meetup_bot/commit/35327d0f48a7b0c99e4cd68231f1af508fa88170)) |
| 78 | +* **gql:** validate group discovery queries and fix stale templates ([896dfbe](https://github.com/pythoninthegrasses/meetup_bot/commit/896dfbe03662524ad3b1aa2904e7636e3594694a)) |
| 79 | +* update .env.example ([5918f91](https://github.com/pythoninthegrasses/meetup_bot/commit/5918f9183d46eea3072a01fdabf1bb161ef5a45b)) |
| 80 | +* update architecture.md for scheduler removal ([f7834e7](https://github.com/pythoninthegrasses/meetup_bot/commit/f7834e7d275ee39afa04971ca187a38e5282be75)) |
| 81 | +* update backlog tasks ([e538c80](https://github.com/pythoninthegrasses/meetup_bot/commit/e538c80dbf6fbbe11b43d8d26957808eecbdae24)) |
| 82 | +* update backlog tasks ([d1d980a](https://github.com/pythoninthegrasses/meetup_bot/commit/d1d980ae9111fba6111881fd7f48f2a4f9d0cb88)) |
| 83 | +* update backlog tasks ([0624d74](https://github.com/pythoninthegrasses/meetup_bot/commit/0624d74cef4b27d32a9885822a1fff2a8ad537e3)) |
| 84 | +* update backlog tasks ([f269f45](https://github.com/pythoninthegrasses/meetup_bot/commit/f269f4586d68180fdc3e1fe93eb0927bb564b359)) |
| 85 | +* update readme ([437d81a](https://github.com/pythoninthegrasses/meetup_bot/commit/437d81a528e7e63b98d8f9ab7e1086d2a11023b7)) |
| 86 | +* update readme ([899cb27](https://github.com/pythoninthegrasses/meetup_bot/commit/899cb279d2ee87acb154edf612e196b6f9b1b541)) |
| 87 | +* update README.md ([11239c0](https://github.com/pythoninthegrasses/meetup_bot/commit/11239c098f59acc35ed006610fd8b4031520f953)) |
| 88 | +* update README.md ([e270e5e](https://github.com/pythoninthegrasses/meetup_bot/commit/e270e5e1bcd2f3a9a7f520ac074c7f687063da27)) |
| 89 | +* update README.md ([9038532](https://github.com/pythoninthegrasses/meetup_bot/commit/903853252fcf1bfa0d28540eed8e1fb45c6ddaa1)) |
| 90 | +* update README.md ([a752c67](https://github.com/pythoninthegrasses/meetup_bot/commit/a752c673f073d8cf355bf399416d8b4dcda05b4b)) |
| 91 | +* update README.md ([489ba54](https://github.com/pythoninthegrasses/meetup_bot/commit/489ba540d873ee79863b57e31ab3fa4fa2f1fcca)) |
| 92 | +* update README.md ([84e891a](https://github.com/pythoninthegrasses/meetup_bot/commit/84e891a468a74532518c95c26190c0f2ade614be)) |
| 93 | +* update README.md ([c3013b6](https://github.com/pythoninthegrasses/meetup_bot/commit/c3013b6b2a953f5992bba588d17f4f7d7f43ee36)) |
| 94 | +* update todo ([990793e](https://github.com/pythoninthegrasses/meetup_bot/commit/990793eba772f638b6c2a8189c6990c8170f78af)) |
| 95 | + |
| 96 | + |
| 97 | +### Miscellaneous Chores |
| 98 | + |
| 99 | +* release 1.0.0 ([116b45f](https://github.com/pythoninthegrasses/meetup_bot/commit/116b45f03d246b7ad5cf11f54bb99330311bf1dd)) |
| 100 | + |
3 | 101 | ## [1.1.2](https://github.com/pythoninthegrass/meetup_bot/compare/v1.1.1...v1.1.2) (2025-05-13) |
4 | 102 |
|
5 | 103 |
|
|
0 commit comments