What's Changed
- feat(searchetl): scaffold message-search ETL module + cursor table (YUJ-4530 phase 1) by @yujiawei in #365
- feat(auth): per-request role resolution + tighten high-impact management gates by @an9xyz in #364
- feat(searchetl): Kafka producer + transaction-split + payload extraction by @yujiawei in #368
- feat(searchetl): ordered commit + cross-replica run-lock (C3) by @yujiawei in #369
- feat(messages_search): in-conversation message search via OpenSearch by @BrDing-Rookie in #361
- feat(manager): refine superAdmin/admin read gates + add /v1/manager/me capability map by @an9xyz in #372
- fix(messages_search): add OCTO_SEARCH_OS_INSECURE_SKIP_VERIFY for sel… by @BrDing-Rookie in #374
- feat(app_bot): delegate platform bot management to admin + localize the error/response surface by @an9xyz in #375
- feat(integration): team group create + existence endpoints for uk_ keys by @an9xyz in #377
- fix(integration): correct team-group created_at + two #381 follow-ups by @an9xyz in #383
- feat(search): harden message read path, fail-closed authz, explicit backend by @yujiawei in #385
- chore(security): allowlist test fixtures in gitleaks config by @yujiawei in #387
- fix(opanalytics): widen dim columns & resolve Space prefix in private member uids (#392) by @an9xyz in #393
- feat(space): add paginated member search endpoint for space admins by @an9xyz in #389
- feat(messages_search): keyword optional on _search/_search_all + empty-search guard (reland #388) by @yujiawei in #395
- feat(appconfig): emit messages_search_on alongside search_enabled by @yujiawei in #399
- fix: invalidate offline-push name cache on group/thread rename by @an9xyz in #400
- docs: add RELEASING.md pointing to org release process by @lml2468 in #402
- fix: resolve incoming-webhook sender name in offline push by @an9xyz in #412
- feat(searchetl): enrich producer with SpaceID/Visibles/MessageSeq (contract v2, fail-closed) by @yujiawei in #415
- feat(searchetl): wire slow-cursor scheduler + Kafka.On lifecycle (safety checkpoint) by @yujiawei in #416
- chore(octospec): pilot .octospec/ engineering-standard scaffold by @yujiawei in #418
- fix(space): fall back to real_name + stable placeholder for empty member name (#344) by @yujiawei in #420
- fix(group/test): bound test DB pool to stop MySQL connection exhaustion (OCT-8) by @lml2468 in #406
- fix(incomingwebhook): address PR #330 review follow-ups (#297) by @an9xyz in #421
- chore(octospec): adopt OKF v0.1 frontmatter + index/log by @yujiawei in #422
- refactor: remove built-in search ETL producer (modules/searchetl) by @yujiawei in #424
- feat(incomingwebhook): add /multica adapter for multica outbound webhooks by @lml2468 in #427
- feat(incomingwebhook): add GitLab + Feishu platform adapters (#297 Phase 4) by @an9xyz in #423
- fix(messages_search): strip Chinese stopwords + MSM 75% to kill multi… by @BrDing-Rookie in #435
- feat(messages_search): surface mergeForward children as inner_messages by @BrDing-Rookie in #425
- chore(octospec): fix base path glob + add trust-boundary rule by @yujiawei in #438
- fix: split health liveness from readiness by @an9xyz in #437
- fix(messages_search): fall back to raw payload when no keyword highlight by @BrDing-Rookie in #443
- feat(incomingwebhook): mention support on the native push endpoint by @an9xyz in #445
- feat(metrics): expose upstream-dependency metrics (DB/Redis pool + object-storage latency) by @an9xyz in #442
- feat: serve Bot connect plugin package + API URL from backend (#446) by @an9xyz in #447
- feat(incomingwebhook): caller-supplied mention.entities (directed @-pills) on native push by @an9xyz in #449
- fix(messages_search): hard-filter system messages (payload.type 1000-2000) from /_search_messages and /_search_around by @BrDing-Rookie in #444
- feat(incomingwebhook): visible mention render layer — broadcast pills + directed name resolution by @an9xyz in #450
- refactor(incomingwebhook): harden directed-render guard + wire-seam test (#450 follow-up) by @an9xyz in #451
- feat(incomingwebhook): deliver to thread (子区) channels by @an9xyz in #454
- feat(incomingwebhook): add /v1/webhooks push route alias for /v1/incoming-webhooks by @an9xyz in #456
- fix(bot_api): propagate App Bot token revocation across replicas via shared Redis cache by @an9xyz in #458
- feat(messages_search): RichText search + virtual sub-doc consumer + narrow /_search payload types by @BrDing-Rookie in #457
- feat(incomingwebhook): configure @mention on the webhook (create/update) instead of the push body by @an9xyz in #465
- fix(ci): raise MySQL max_connections to stop flaky test failures by @an9xyz in #466
- fix(messages_search): allow p2p search for same-Space members and own… by @BrDing-Rookie in #469
- feat(group): per-hop latency observability for the invite-member flow by @an9xyz in #471
- test(group): widen invite-latency tracing to the whole POST handler by @an9xyz in #472
- feat(messages_search): gate image/video in /_search_all by keyword pr… by @BrDing-Rookie in #467
- feat(metrics): record MySQL/Redis dependency latency via octo-lib observers by @an9xyz in #474
- feat(incomingwebhook): return localized adapter examples by @an9xyz in #475
- feat(messages_search): project richtext (type=14) detail from payloadRaw by @BrDing-Rookie in #477
- test(group): trace invite-members latency with per-segment timing + trace_id by @an9xyz in #479
- perf: shared avatar render cache to stop CPU starvation under fanout (#480) by @an9xyz in #481
- feat(group): server-render default group avatars by @an9xyz in #478
New Contributors
- @BrDing-Rookie made their first contribution in #361
Full Changelog: v1.6.1...v1.7.0