Installation
curl -fsSL https://vllm-semantic-router.com/install.sh | bashWhat's Changed
See the full changelog below.
What's Changed
- [Bugfix] Fix getRecommendedModel to return real model names from config by @henschwartz in #933
- [CI] test(response-api): add E2E translation tests for Response API by @tao12345666333 in #881
- [Doc] Fix installation typo by @shernshiou in #965
- [CI] ci(e2e): add Response API K8s integration test workflow by @tao12345666333 in #882
- fix: initialize batched embedding modelfor qwen3 semantic cache by @liavweiss in #954
- fix(dashboard): resolve config update permission denied error by @henschwartz in #962
- docs: fix index dsiplay error by @yuluo-yx in #959
- [CI/Build][Dashboard] Fix OpenShift config map paths and dashboard build by @nerdalert in #951
- test(dashboard): add file persistence tests for config updates by @henschwartz in #963
- [Doc] website versions multilingual for release v0.1 by @samzong in #925
- feat(vllm-sr): add dashboard support to Python CLI by @yehuditkerido in #960
- fix(dashboard): return 404 instead of 500 when tools_db.json not found by @henschwartz in #972
- [Bugfix] Fix PII mapping path to match deployed model directory by @nerdalert in #970
- feat: re-enable EmbeddingGemma-300m support by @liavweiss in #816
- feat [llm-katan] Support running llm-katan on XPU Platform by @chaojun-zhang in #969
- [Misc] 🔧 chore(pre-commit): show file count instead of list by @samzong in #968
- [Misc] 🔧 chore(make): add deps.mk for func-e and unified external binary tool management by @samzong in #886
- Fix(CI): Resolve The E2E Testing by @Xunzhuo in #1013
- feat(dashboard): add Python CLI config format support by @yehuditkerido in #1019
- feat(cli): add Podman container runtime support by @Xunzhuo in #982
- [Misc]: remove legacy Kustomize manifests in favor of Helm chart by @abdallahsamabd in #978
- [Feat] implement Signal Parallelism in EvaluateAllSignals by @GOavi101 in #1023
- [Feat][CI/Build] Add OpenShift simulator backend for vSR by @nerdalert in #981
- [Feat] Add multi-model routing demo by @anushapant in #1025
- [Feat]: Enable CLI-based Helm deployment with smart defaults by @abdallahsamabd in #957
- Optimize: Speed-Up Signal Extraction by @Xunzhuo in #1027
- fix: set file descriptor limits to 65536 to resolve Envoy initialization failure by @liavweiss in #1026
- [Bugfix] Fix keyword matching inconsistency in e2e tests by @srini-abhiram in #828
- [Misx] fix: show unique model count in logs instead of alias count by @samzong in #1029
- [Feat] align Classification API server with signal-driven architecture by @GOavi101 in #1032
- Refactor: Layout and UI for Dashboard by @Xunzhuo in #1034
- feat(dashboard): refactor sidebar to align with Python CLI config by @yehuditkerido in #1035
- Dashboard: Re-Organize the Layout and Functionality by @Xunzhuo in #1036
- Dashboard: Refactor Data Management by @Xunzhuo in #1038
- fix(dashboard): read Router Config settings from router-defaults.yaml by @yehuditkerido in #1037
- Dashboard: Refactor Reasoning Management by @Xunzhuo in #1041
- Dashboard: Refactor Landing Page by @Xunzhuo in #1043
- Dashboard: Update Landing Page UX by @Xunzhuo in #1044
- Preload candidate embeddings once at startup and optionally use HNSW … by @szedan-rh in #1039
- [Misc] fix: replace fake domain endpoints with 127.0.0.1:1 by @samzong in #1055
- Docs: Update Dashboard and Release related Docs by @Xunzhuo in #1056
- [Build] Fix candle-flash-attn dependency to use git source for CUTLASS submodule by @carlory in #1049
- [UX] add signal CURD for dashboard by @ppppqp in #1063
- remove cmd/vsr CLI and its dependencies by @carlory in #1061
- Update the documentation of installation llm-d to use helm chart by @szedan-rh in #1064
- [Misc] chore: fix models gitignore pattern and markdown linter exclusion by @samzong in #1058
- [Misc] chore: update testdata outputs with feedback_detector defaults by @samzong in #1057
- Add a local-up-router.sh script for dockerless environment by @carlory in #1059
- Update istio documentation how to and helm chart values by @szedan-rh in #1053
- feat(test): More ExtProc test coverage (Issue #44) by @uestcergs7 in #974
- feat: Lifetimes should be associated with individual cache entries by @fatelei in #1012
- [CI] feat(response-api): add conversation chaining E2E tests and instructions inheritance by @tao12345666333 in #1031
- Fix the models missing and wrong model reference and the tests by @szedan-rh in #1068
- [Docs] docs/enrich footer and contributing section by @samzong in #1065
- chore(website): optimize navbar icons and remove deprecated pages by @samzong in #1073
- [Feat][Router]: Implement Router Replay plugin for debugging routing decisions by @R3hankhan123 in #1075
- feature: add more signals - language signal by @liavweiss in #1052
- [Feat] add advanced tool filtering with confidence‑gated category filter and rerank by @samzong in #1033
- [UX][Quality] Refactor and Decision CURD in dashboard by @ppppqp in #1072
- fix(classification): enforce confidence threshold for domain signal matching by @asaadbalum in #1074
- [UX] Virtualize decision config form by @ppppqp in #1078
- [Misc]💄 style(homepage): adjust hero flex and add spacing after badge icon by @samzong in #1077
- Feat: Introducing Looper for Implementing Collective Algorithms by @Xunzhuo in #1054
- [Doc:zh] add more signals - language signal by @windsonsea in #1080
- fix: enable response api profile e2e test and fix the configuration by @liavweiss in #1090
- [Doc:en/zh] Fix format issues in overview/signal-driven-decisions.md by @windsonsea in #1087
- feat(openshift): add auto model config and routing example by @nerdalert in #1079
- [UX]: Improve UX for unconfigured Grafana and Jaeger services by @uestcergs7 in #1071
- Docs: Sync Missing Blog from vLLM by @Xunzhuo in #1096
- feat(selection): implement advanced model selection methods by @asaadbalum in #1089
- [CLI][Bugfix] Fix init --force behavior and default model naming by @niuguy in #1108
- [Feat][Memory]: Add Redis storage backend for Response API by @noalimoy in #1024
- [Misc] Deprecate semantic_cache.backend_config_path and embed backend config inline by @Scanf-s in #1100
- feat(dashboard): add --readonly-dashboard flag for public beta deploy… by @haowu1234 in #1113
- Fix: Invalid Embedding Classifier Configuration by @Xunzhuo in #1114
- [Feat]: Operator for the semantic router by @cooktheryan in #1091
- feat: localize community pages to zh-Hans by @uestcergs7 in #1099
- feat(helm): add dependency-based stack support by @Chever-John in #1098
- [CI][E2E]: Add Redis Responses API test profiles by @noalimoy in #1117
- [BUG] Fix: reasoning_effort does not work well with openai/gptoss-120b by @Xunzhuo in #1116
- Optimize: Add Soft Embeddings Match Rules by @Xunzhuo in #1121
- feat: complete language signal support by @Xunzhuo in #1122
- Playground: Add AMD Rlayground Recipes by @Xunzhuo in #1125
- [Feat]: add Anthropic Claude backend support by @HanFa in #1070
- fix: update InMemoryCache test to match cross-model cache sharing behavior by @liavweiss in #1127
- [CI] test(response-api): Error Handling support by @tao12345666333 in #1120
- feat(selection): add Elo storage, RouterDC embeddings, and AutoMix cascading by @asaadbalum in #1104
- [Feat][Router]: Add pluggable storage backends with per-decision isol… by @R3hankhan123 in #1107
- feat: add mmBERT model to candle-binding to support multilingual by @rootfs in #1040
- fix(plugins): enforce per-decision scoping for jailbreak plugin (#1126) by @haowu1234 in #1135
- [Bugfix][Router] Enforce per-decision scoping for semantic-cache and add include_history control by @Xunzhuo in #1136
- feat(dashboard): add topology visualization with test query support by @haowu1234 in #1145
- Feat: Support Thinking Parser in Dashboard by @Xunzhuo in #1147
- Feat: Support Topology Relaxing by @Xunzhuo in #1148
- feat: Multi-Domain Cache Embedding Training Pipeline by @yossiovadia in #1095
- feat: add python cli support for router_replay plugin by @liavweiss in #1123
- feature: add more signals - latency signal by @liavweiss in #1105
- Add mmBERT feedback detector pipeline with 4-class classification by @rootfs in #1150
- Fix: Deep Thinking Layout Color by @Xunzhuo in #1151
- feat(selection): Add Prometheus metrics for model selection evolution tracking by @asaadbalum in #1124
- Chore: Adjust The Node Side by @Xunzhuo in #1158
- Feat: Add Compelte Monitoring Suppprt to Dashboard by @Xunzhuo in #1159
- Fix: CI and Add Playground by @Xunzhuo in #1164
- Dashboard: Add Mobile Support by @Xunzhuo in #1168
- [Feat][Router][Docs] Enhance hallucination detection with multi-level filtering by @R3hankhan123 in #1165
- fix: add language signal support to UI by @liavweiss in #1163
- [feat] Additional operator enhancements to better support OpenShift platform by @cooktheryan in #1133
- Feat: Add Mobile Improves by @Xunzhuo in #1171
- Feat/web search tool by @haowu1234 in #1172
- feat(dashboard): add evaluation feature to GUI by @szedan-rh in #1167
- [Feat] implement Demand RAG (Retrieval-Augmented Generation) plugin by @GOavi101 in #1152
- Fix: Docker AMD Deploy CMD by @Xunzhuo in #1180
- feat: support web page content fetching capability by @haowu1234 in #1181
- Opt: Candidates and Chat UI by @Xunzhuo in #1182
- [Misc] chore: remove tracked binary dashboard-server and add to gitignore by @samzong in #1174
- Feat: Add Cache metrics by @Xunzhuo in #1183
- [Doc] fix broken link for System Architecture in README by @aby42 in #1186
- [Feat][Router] Add context signal for token count-based routing by @nabobery in #1109
- fix: incorrect keyword rule names by @Xunzhuo in #1184
- follow-up: add missing capacities for context signal by @Xunzhuo in #1187
- Docs: Update vllm-sr docs to include observability dashboards by @fahimahmedx in #1188
- feat(dashboard): integrate logo inline with title on landing page by @Xunzhuo in #1189
- [Responses API]: Validate Response API persistent store (Redis) by @noalimoy in #1185
- fix(classification): ensure latency signals match exclusively by @Xunzhuo in #1192
- KServe simulator deploy for OpenShift by @nerdalert in #1190
- [feat]: Introducing various caching engines to the operator by @cooktheryan in #1175
- [CI]: Add e2e tests for vllm-sr Docker Python CLI (#1014) by @noalimoy in #1161
- [Doc-zh] Add tutorials/intelligent-route/context-routing.md by @windsonsea in #1191
- feat(signals): add few-shot complexity signal for query difficulty classification by @Xunzhuo in #1204
- chore(docs): add npm scripts command by @yuluo-yx in #1209
- fix(docs): fix typo by @yuluo-yx in #1208
- feat: add 2D Matryoshka embedding with layer early exit by @rootfs in #1210
- [Feat][Dashboard]: Add Router Replay visualization page to dashboard by @noalimoy in #1211
- model: unified embedding model by @Xunzhuo in #1214
- feat(training): domain-adapted embeddings via iterative hard-negative mining by @yossiovadia in #1219
- feat: Add mmBERT 32k yarn support by @rootfs in #1227
- [Feat][Router Replay]: Enhance with complexity signal and plugin status display by @noalimoy in #1231
- Fix the evaluation testing, datasets api shouldn't be related to DB i… by @szedan-rh in #1224
- Update the documentation after fixing the eval tests by @szedan-rh in #1233
- model: update mom template with longbert by @Xunzhuo in #1234
- chore: update feedback checking model training by @rootfs in #1238
- [Feat]: Implement 3 ML-based model selection algorithms by @abdallahsamabd in #1119
- mom: update playground routing rules by @Xunzhuo in #1235
- docs: add RouterArena SOTA achievement to latest news by @Xunzhuo in #1239
- feat: add hallucination detection model training by @rootfs in #1242
- [feat]: migrate semantic-router KServe deployment to llmisvc by @nerdalert in #1223
- Feat: Support ReMoM Algorithms by @Xunzhuo in #1240
- feat: implement tpot and ttft percentile bucket for latency signal by @liavweiss in #1202
- Chore: Update Latency Template for Playground by @Xunzhuo in #1248
- [Doc] docs(i18n): sync zh-Hans translations and add drift detection script by @samzong in #1247
- [Feat] Increase timeout limits to 1200s for long-running requests by @Xunzhuo in #1250
- feat(deploy): add OpenShift option for GPU vSR classification by @nerdalert in #1246
- feat(mcp): dashboard MCP tools support by @haowu1234 in #1216
- feat(tests): add OpenAI API validation test suite by @mkoushni in #1215
- [Doc] Translate proposal documents to Chinese (zh-Hans) by @uestcergs7 in #1213
- [Feat] Add unified evaluation script for MoM collection by @ZohaibHassan16 in #1156
- [feat]: catching operator up to allow for complexity routing by @cooktheryan in #1237
- chore: misc fixes of recent model and binding changes by @rootfs in #1251
- [Docs-zh] Sync installation/configuration and overview/signal-driven-… by @windsonsea in #1252
- Feat: Support Evaluation API by @Xunzhuo in #1254
- [Feature] Preference model e2e by @ppppqp in #1228
- [Docs-zh] fix garbled text in zh-Hans training-overview by @guluo2016 in #1263
- Feat(validation): add vsr validate command for ML routing validation by @abdallahsamabd in #1260
- [Feat][Keyword]: Add dynamic confidence scoring and fuzzy matching for improved accuracy by @noalimoy in #1258
- Feat: Support Signal Eval by @Xunzhuo in #1257
- feat(onnx-binding): add ONNX Runtime binding with ROCm/GPU support for 2DMSE model by @rootfs in #1218
- [UX] Persistent chat history support by @ppppqp in #1279
- Chore: Adjust The History Sidebar for Mobile by @Xunzhuo in #1280
- Fix: Add Missing Signal Eval Script by @Xunzhuo in #1283
- feat(memory): add Agentic Memory support with Milvus storage by @yehuditkerido in #1194
- [v0.2-Athena] Implement RL-driven model selection by @asaadbalum in #1196
- [Misc] test(config): add boundary tests for config validate by @samzong in #1285
- [Doc]: add ML-based model selection documentation by @abdallahsamabd in #1281
- feat: Add Image Generation Tool by @rootfs in #1303
- [Doc] docs(i18n): sync ml-model-selection to zh-Hans by @samzong in #1300
- fix(vllm-sr): correct signal validation logic in validator by @Xunzhuo in #1298
- [Refactor] Reorganize config files and documentation structure by @Xunzhuo in #1306
- [Feat][CLI]: add Python CLI support for RAG plugin by @noalimoy in #1282
- feat(memory): add configurable num_partitions for Milvus by @yehuditkerido in #1302
- [Feat] In-Router RAG: Document Ingestion Pipeline (Vector Store API) by @yossiovadia in #1311
- [Bugfix]: use health/readiness endpoints to check service status by @guluo2016 in #1308
- [Feat]: add MLP with GPU support for model selection by @abdallahsamabd in #1299
- feat: Support modality based model routing using classification and image generation by @rootfs in #1310
- ci: add build timeout, vllm-sr Rust cache, and build time metrics by @mkoushni in #1241
- fix(validator): add support for complexity signal validation by @Xunzhuo in #1320
- [Bugfix] Fix mmBERT embedding download path to match model registry by @yossiovadia in #1278
- feat: support differentiated multi endpoint configurations by @rootfs in #1323
- [Doc] Update stale references to removed download-mmbert-embedding target by @yossiovadia in #1325
- [Feat][Embedding]: Improve signal accuracy by @noalimoy in #1322
- feat: add authz providers support (#1315) by @rootfs in #1321
- chore: fix image generation tool calling; support omni models by @rootfs in #1330
- feat(website): redesign homepage with chat UI, modern banner by @Xunzhuo in #1331
- docs(selection): model selection algorithm documentation by @asaadbalum in #1334
- [Router][CLI][Doc] Refactor latency routing from signal layer to decision algorithm (latency_aware) by @Djanghao in #1328
- feat(selection): CLI support and E2E tests for model selection by @asaadbalum in #1333
- Project: Promote New vLLM-SR Members by @Xunzhuo in #1341
- feat(memory): add retention scoring and pruning with MemoryBank formula by @yehuditkerido in #1313
- chore: formalize project codeowner and governance by @rootfs in #1347
- [Feat]: add ML Model Selection Setup wizard (benchmark, train, config) by @abdallahsamabd in #1342
- feat: use BM25 and n-gram as typo resistent keyword classifer by @rootfs in #1346
- test: add batch size threshold tuning tests for memory extractor by @mkoushni in #1344
- [Router][CLI][Dashboard][Doc] Drop backward compatibility for legacy latency signal config by @Djanghao in #1339
- feat(memory): add Memory Management REST API by @yehuditkerido in #1335
- feat: add --minimal flag to vllm-sr serve (#1329) by @szedan-rh in #1355
- feat(dashboard): add Elo ratings page and feedback UI for model selection by @asaadbalum in #1338
- [DOC] Add multi-protocol adaptor design doc by @R3hankhan123 in #1316
- feat(memory): use authz framework header for user_id extraction by @yehuditkerido in #1301
- feat: Add Usage Ratelimit Support by @rootfs in #1356
- [Feat][Router]: add Llama Stack as a VectorStoreBackend for RAG by @noalimoy in #1351
- feat(decision): add tree of boolean operator support across AND/OR/NOT/NAND/NOR/XOR/NXOR by @Xunzhuo in #1352
- feat: optimize InMemoryCache.UpdateWithResponse lookup path by @cryo-zd in #1365
- feat: support hybrid memory search by @rootfs in #1366
- White Paper for vLLM Semantic Router by @Xunzhuo in #1332
- [CI] test(response-api): add edge case e2e coverage by @tao12345666333 in #1367
- [Doc] Add ModernBERT-base-32k extended context window section to white paper by @henschwartz in #1371
- docs(paper): expand RAG section with Llama Stack backend and hybrid search by @noalimoy in #1372
- [v0.2-Athena] Pre-train base model with longer context window - Issue #995 by @henschwartz in #1359
- [Doc] Fix ReMoM description accuracy and add hybrid search figure by @Xunzhuo in #1376
- chore: clean up for dirty files by @Xunzhuo in #1377
- [Doc] Remove latency budgets from multi-dimensional signals from paper by @Djanghao in #1369
- feat: prometheus metrics for memory operations to enable monitoring and alerting by @liavweiss in #1378
- [bugfix]: fix error where tools_db.json couldn't be found by @guluo2016 in #1375
- [Feat][VctoreStore]: Enable hybrid search in Llama Stack via Milvus vector_io by @noalimoy in #1370
- [Misc] Reorganize src/training directory into categorical structure by @Xunzhuo in #1379
- fix(onnx-binding): add missing stubs and fix go.onnx.mod for ONNX build by @mkoushni in #1381
- fix(e2e): correct ml-model-selection download output-dir path by @Xunzhuo in #1389
- feat: promote jailbreak and PII detection from plugins to parallel signals by @Xunzhuo in #1390
- Reorgnize the top bar to group analyses features and Operations into … by @szedan-rh in #1392
- feat(jailbreak): contrastive embedding detection method for multi-turn jb by @Xunzhuo in #1394
- feat: re-org chat memory extraction, retrieve, and injection by @rootfs in #1383
- fix(candle-binding): add missing mock methods on Windows by @guluo2016 in #1395
- [DOC] docs(i18n): sync zh-Hans translation files by @samzong in #1396
- paper: update memory part by @Xunzhuo in #1398
- paper: update abs and related details by @Xunzhuo in #1399
- chore: normalize streaming options during looper by @rootfs in #1397
- feat(signals): sync modality and authz signals across all components by @Xunzhuo in #1401
- fix(website): improve white-paper desktop page layout by @Xunzhuo in #1402
- [Bugfix] Fix stale paths in go.mod, Makefile, and scripts after training dir refactor by @Djanghao in #1391
- feat(dsl): full DSL compiler, visual builder, and language guide by @haowu1234 in #1400
- feat(cli): migrate safety to signal-driven fast_response by @Xunzhuo in #1403
- fix(validator,dashboard): fix complexity signal validation and optimi… by @haowu1234 in #1406
- feat: add confidence on tool call arg by @rootfs in #1409
- chore: allow large gRPC max message size by @rootfs in #1410
- fix(make): correct default ONNX config path for run-router-onnx by @cryo-zd in #1408
- chore: update amd examples containing jailbreak/pii by @Xunzhuo in #1407
- paper: add dsl related details by @Xunzhuo in #1411
- fix: pii and jailbreak related signal extraction logics by @Xunzhuo in #1412
- feat: add multimodal embedding model support by @rootfs in #1414
- chore: update template for paper by @Xunzhuo in #1415
- chore: update website banner by @Xunzhuo in #1416
- fix: external model config not picked up from defaults (#1405) by @asaadbalum in #1413
- feat: add openclaw provisioning on dashbord by @rootfs in #1418
- Feat/dsl deploy by @haowu1234 in #1417
- feat: add openclaw team support by @Xunzhuo in #1419
- fix: ci golang-lint errors by @Xunzhuo in #1421
- feat: update openclaw to swarm by @Xunzhuo in #1424
- feat: support claw orchestration by @Xunzhuo in #1426
- feat: support ROCM with onnx binding by @rootfs in #1427
- feat: support real-time websocket communication by @haowu1234 in #1429
- feat: support amd rocm gpu classifier speedup by @Xunzhuo in #1428
- chore: update the layout for dashboard by @Xunzhuo in #1430
- feat: Enable Flash Attention for ONNX bindings by @rootfs in #1431
- [Feat]: add response-level jailbreak detection filter by @abdallahsamabd in #1393
- chore: fix unit test error by @rootfs in #1436
- feat: support flash attention in vllm-sr onnx by @Xunzhuo in #1440
- feat: support onboarding process by @Xunzhuo in #1441
- [Feat]: gate memory storage on response-level jailbreak detection by @abdallahsamabd in #1435
- [Feat]: implement all PIIOptions in DetectPII and add RevealEntityText option by @toffentoffen in #1438
- feat: use nlp to compress prompt by @rootfs in #1437
- feat: support envoy stream mode by @rootfs in #1442
- Feat: Contrastive preference classifier by @ppppqp in #1368
- build: update amd install steps by @Xunzhuo in #1460
- project: init harness engineering by @Xunzhuo in #1461
- project: add copilot instructions for harness engineering by @Xunzhuo in #1464
- [Harness]: Split tech debt register into indexed entries by @Xunzhuo in #1466
- [Harness]: Add task-first harness context packs by @Xunzhuo in #1467
- fix: edit model failure in dashboard configuration by @Xunzhuo in #1462
- feat(memory): enable hybrid search from global config by @rootfs in #1471
- refactor: e2e framework around shared stacks and fixtures by @Xunzhuo in #1465
- [Router][Bugfix] Refresh apiserver classification service after deploy reload by @Xunzhuo in #1472
- [Feat]: Enable readonly OpenClaw room chat by @Xunzhuo in #1475
- [Doc] Align AMD deploy profile with single-backend aliases by @Xunzhuo in #1474
- [Dashboard][Bugfix] Support playground reasoning fields by @Xunzhuo in #1476
- [Docs]: Add position paper to research page by @Xunzhuo in #1477
- [Dashboard][Feat] polish manager and monitoring layouts by @Xunzhuo in #1478
- website: redesign the full layout by @Xunzhuo in #1479
- [Doc] Polish homepage and team website surfaces by @Xunzhuo in #1480
- build: include both candle and ONNX bindings in container image by @cryo-zd in #1463
- [Bugfix] [Dashboard]: restore ML Setup link in navigation menu by @abdallahsamabd in #1482
- fix(website): show docs links on homepage nav by @Xunzhuo in #1483
- Revert "build: include both candle and ONNX bindings in container image" by @Xunzhuo in #1489
- website: polish homepage redesign and document UI contract by @Xunzhuo in #1487
- feat(website): add one-line install flow by @Xunzhuo in #1488
- Fix release versioning and publish tag artifacts by @Xunzhuo in #1490
- fix release publish workflow failures by @Xunzhuo in #1491
New Contributors
- @shernshiou made their first contribution in #965
- @chaojun-zhang made their first contribution in #969
- @GOavi101 made their first contribution in #1023
- @anushapant made their first contribution in #1025
- @ppppqp made their first contribution in #1063
- @uestcergs7 made their first contribution in #974
- @fatelei made their first contribution in #1012
- @niuguy made their first contribution in #1108
- @Scanf-s made their first contribution in #1100
- @haowu1234 made their first contribution in #1113
- @Chever-John made their first contribution in #1098
- @aby42 made their first contribution in #1186
- @nabobery made their first contribution in #1109
- @fahimahmedx made their first contribution in #1188
- @mkoushni made their first contribution in #1215
- @guluo2016 made their first contribution in #1263
- @Djanghao made their first contribution in #1328
- @toffentoffen made their first contribution in #1438
Full Changelog: v0.1.0...v0.2.0