Skip to content

v28 is for Koko Da Doll#3208

Open
RobinTail wants to merge 102 commits intomasterfrom
make-v28
Open

v28 is for Koko Da Doll#3208
RobinTail wants to merge 102 commits intomasterfrom
make-v28

Conversation

@RobinTail
Copy link
Copy Markdown
Owner

@RobinTail RobinTail commented Feb 7, 2026

Koko Da Doll

Koko Da Doll (aka Rasheeda Williams) was a 35-year-young Black trans woman, performance artist, singer, and star
of the acclaimed documentary Kokomo City. Born in College Park, Georgia, she was based in Atlanta and
became a prominent voice for transgender visibility and the rights of Black trans women.

She was a talented rap artist who released two singles: "Trick" (2020) and "Bulletproof" (2022).

A song she created was featured on the TV show The Chi in 2023, showcasing her artistic talents beyond her advocacy work.

Koko was one of four Black trans women featured in the groundbreaking documentary Kokomo City, directed by D. Smith. The film premiered at the 2023 Sundance Film Festival and won both the NEXT Innovator Award and NEXT Audience
Award. It also received the Berlinale Panorama Audience Award.

In the film, Koko spoke openly about her experiences as a sex worker and the challenges faced by Black trans women. She discussed doing sex work to avoid homelessness for her mother, sister, and herself.

After the Sundance première, Koko wrote on Instagram:

"I will be the reason there's more opportunities and doors opening for transgender girls."

She hoped that her participation in the film would help save lives and create more opportunities for young trans women.

On April 18, 2023, at around 11pm, Koko Da Doll was found dead with a gunshot wound on a sidewalk near Holmes Shopping
Plaza in Southwest Atlanta. She was 35 years old.

A 17-year-old suspect was arrested on April 27, 2023, on suspicion of murder, aggravated assault, and possession of a firearm in the commission of a felony. Atlanta police indicated that a hate crime investigation was ongoing.

Koko was the 13th trans person killed in the United States in 2023. Following her death, Kokomo City was dedicated to her memory. She was honored during the In Memoriam segment at the 2023 BET Awards.

The New York Times described her as someone who "brims with vitality, ambition, and insight" — a woman who fought tooth and nail for her life and self-worth.

Her tragic death serves as a stark reminder of the ongoing violence and discrimination faced by trans women in America.

AP News · AL.com · TDoR


👩🏽‍🍳 Cooking...

Summary by CodeRabbit

  • New Features

    • v28 released: public option/metadata renames (shortDescription → summary; wrongMethodBehavior → hintAllowedMethods; methodLikeRouteBehavior → recognizeMethodDependentRoutes; noContent → noBodySchema); Documentation now accepts a customizable summarizer.
  • Documentation

    • CHANGELOG/README/SECURITY updated with v28 notes, migration guidance, examples, and “import once” guidance for the optional Zod plugin.
  • Chores

    • Zod plugin made optional/peer; updated Node support, build/test scripts, and module resolution conventions.
  • Tests

    • Test suites and migration tests updated to reflect renames, summarizer behavior, metadata-based examples, and adjusted startup commands.

@RobinTail RobinTail added dependencies Pull requests that update a dependency file CI/CD breaking Backward incompatible changes labels Feb 7, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 7, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • ✅ Review completed - (🔄 Check again to review again)
📝 Walkthrough

Walkthrough

Renamed several public config and endpoint fields, moved Zod brand/examples access into a new local metadata module, converted many runtime imports to type-only and explicit .ts/JSON specifiers, rewrote the migration ESLint rule and helpers, adjusted Node/tsconfig targets, and replaced manual Promise wrappers with Promise.withResolvers.

Changes

Cohort / File(s) Summary
Config & Public API
express-zod-api/src/config-type.ts, express-zod-api/src/endpoints-factory.ts, express-zod-api/src/endpoint.ts, express-zod-api/src/integration.ts, express-zod-api/src/documentation.ts, CHANGELOG.md, README.md
Renamed public options: wrongMethodBehaviorhintAllowedMethods (number→boolean), methodLikeRouteBehaviorrecognizeMethodDependentRoutes (string→boolean), shortDescriptionsummary, noContentnoBodySchema; Documentation now accepts summarizer. Docs/examples updated for v28.
Metadata & Zod branding
express-zod-api/src/metadata.ts, express-zod-api/src/*-schema.ts, express-zod-api/src/raw-schema.ts, express-zod-api/src/buffer-schema.ts, express-zod-api/src/upload-schema.ts, express-zod-api/src/schema-walker.ts, express-zod-api/src/documentation-helpers.ts, zod-plugin/src/*
Added src/metadata.ts exporting brandProperty, getBrand, getExamples; switched schema branding from .brand(...) to .meta({ [brandProperty]: ... }); removed getBrand re-export from zod-plugin and updated callers/tests.
Routing & server behavior
express-zod-api/src/routing-walker.ts, express-zod-api/src/routing.ts, express-zod-api/src/server.ts
Routing now uses recognizeMethodDependentRoutes to interpret method-like keys; 405/Allow hint gating controlled by hintAllowedMethods boolean.
Migration tooling & ESLint rule
migration/index.ts, migration/helpers.ts, migration/index.spec.ts, migration/README.md, compat-test/*
Rewrote migration rule to detect/rename properties (wrongMethodBehavior, methodLikeRouteBehavior, hasSummaryFromDescription, noContent, shortDescription), transform values (including inserting a summarizer when needed), and provide autofix helpers; tests and README updated.
Type-only imports & explicit specifiers
many express-zod-api/src/*, express-zod-api/tests/*, example/**, tools/**, tsdown.config.ts, migration/tsdown.config.ts
Converted many runtime imports to import type, added explicit .ts/JSON import assertions, and updated tests/examples to use explicit module specifiers.
Promise.withResolvers refactors
express-zod-api/src/graceful-helpers.ts, express-zod-api/src/middleware.ts, express-zod-api/tests/graceful-shutdown.spec.ts
Replaced manual new Promise wrappers with Promise.withResolvers and returned the created promise.
Build, packaging & Node/TS targets
package.json, express-zod-api/package.json, zod-plugin/package.json, migration/package.json, tsconfig.json, cjs-test/tsconfig.json, pnpm-workspace.yaml
Bumped versions to v28 betas, moved zod-plugin to optional peerDependency, narrowed Node engines to `^22.19.0
CI/workflows & headers
.github/workflows/codeql-analysis.yml, .github/workflows/node.js.yml, .github/workflows/headers.yml
Updated workflow branch allowlists (removed v23, added v27/make-v28), adjusted Node matrix, and changed some job steps to invoke scripts via node.
Examples & tests
example/**, many express-zod-api/tests/*, compat-test/*, esm-test/*, cjs-test/*
Adjusted imports to include .ts extensions and import type, replaced unrun with node in scripts/spawns, migrated tests to metadata-based examples/brands, added tests/metadata.spec.ts, and updated assertions for renamed API fields.
New helpers & tests
migration/helpers.ts, express-zod-api/src/metadata.ts, express-zod-api/tests/metadata.spec.ts
Added migration autofix helpers and metadata helpers plus dedicated tests for metadata behavior.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer
    participant Config as createConfig()
    participant Router as initRouting
    participant Docs as Documentation
    participant Metadata as metadata

    Dev->>Config: createConfig({ hintAllowedMethods?, recognizeMethodDependentRoutes? })
    Config->>Router: initRouting(config)
    Router->>Router: interpret route keys using recognizeMethodDependentRoutes
    alt invalid method on existing route
        Router->>Router: if hintAllowedMethods === false then skip 405/Allow handler
    end
    Docs->>Metadata: summarizer({ summary, description, trim })
    Docs->>Metadata: request examples/brand for schemas
    Metadata-->>Docs: returns examples/brand
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Poem

🐰 I hopped through code to tuck brands in new arrays,

moved examples to metadata and smoothed import ways.
Promises now resolve with gentler, clearer calls,
summarizers whisper summaries when docs make their calls.
Koko blooms v28 — I nibble a migration carrot.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title references 'v28' and 'Koko Da Doll', which aligns with the PR's dedication and the CHANGELOG entry for Version 28/v28.0.0. It captures the primary intent as a major version release with a dedication.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch make-v28

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coveralls-official
Copy link
Copy Markdown

coveralls-official Bot commented Feb 7, 2026

Coverage Status

coverage: 100.0%. remained the same — make-v28 into master

@RobinTail RobinTail added this to the v28 milestone Feb 8, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`^9.39.2` →
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint/9.39.2/10.0.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.0.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.39.2/10.0.0?slim=true)
|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`^9.0.0` →
`^9.0.0 \|\|
^10.0.0`](https://renovatebot.com/diffs/npm/eslint/9.39.2/10.0.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.0.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.39.2/10.0.0?slim=true)
|

---

### Release Notes

<details>
<summary>eslint/eslint (eslint)</summary>

###
[`v10.0.0`](https://redirect.github.com/eslint/eslint/compare/v9.39.2...4e6c4ac042e321da8fc29ce53ed03c86dcaa44a7)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.39.2...v10.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/RobinTail/express-zod-api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robin Tail <robin_tail@me.com>
@socket-security
Copy link
Copy Markdown

socket-security Bot commented Feb 16, 2026

# Conflicts:
#	pnpm-lock.yaml
Comment thread migration/package.json Outdated
Comment thread migration/README.md Outdated
Comment thread migration/README.md Outdated
Comment thread express-zod-api/package.json Outdated
# Conflicts:
#	pnpm-lock.yaml
# Conflicts:
#	pnpm-lock.yaml
# Conflicts:
#	pnpm-lock.yaml
# Conflicts:
#	package.json
#	pnpm-lock.yaml
# Conflicts:
#	express-zod-api/src/upload-schema.ts
#	express-zod-api/tests/upload-schema.spec.ts
v28 opted for `verbatimModuleSyntax` and uses `node` for running
typescript natively instead of `unrun` in `example`, `tools` and
integration tests.
This one is no longer needed because custom schemas of `ez` namespace no
longer use those symbols for `ZodBranded`.
Using `.brand()` replaced to `.meta({ "x-brand": ... })` in #3313
# Conflicts:
#	package.json
#	pnpm-lock.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking Backward incompatible changes CI/CD dedication dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation refactoring The better way to achieve the same result

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant