Skip to content

chore: bun monorepo, @padosoft/ecr17 core with SwiftPM, apps/docs, TS scripts - #26

Open
47PADO47 wants to merge 2 commits into
feat/ecr17-windows-nitro-hostfrom
chore/monorepo
Open

47PADO47 wants to merge 2 commits into
feat/ecr17-windows-nitro-hostfrom
chore/monorepo

Conversation

@47PADO47

@47PADO47 47PADO47 commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Stacked on #25.

  • packages/ecr17 (@padosoft/ecr17, was @padosoft/ecr17-kit), packages/react-native-ecr17, apps/example (bun workspace), apps/example-windows and apps/docs (npm, outside the workspace).
  • Names: the core is @padosoft/ecr17 2.0.0, with the pod and Swift product Ecr17, headers <ecr17/…>, and CMake ecr17::ecr17. The RN binding's pod is now ReactNativeEcr17 (nitro.json iosModuleName). Android stays libEcr17.so.
  • SwiftPM (optional): Package.swift sits at the repo root, because SwiftPM resolves remote packages only from there. ReactNativeEcr17.podspec links the core through native_dependency: the Swift package when the app turns SwiftPM on, the Ecr17 pod otherwise. The release workflow tags each core version X.Y.Z; it starts at 2.0.0, so the old 1.x tags never match. The core opts out of autolinking, and its Expo plugin skips the pod when SwiftPM is on.
  • Every .mjs script is now .ts (bun at the root, node 24 in apps/docs).
  • CI, release, changesets, biome, docs, AGENTS/LESSON and the README Roadmap (now with a Node.js API row) are updated.

Verified locally (macOS):

  • Core tests: 100/100.
  • swift build of the root package, plus a throwaway dependent package that includes <ecr17/…>.
  • iOS simulator BUILD SUCCEEDED for apps/example, both through the Ecr17 pod (default) and through the Ecr17 Swift package (SwiftPM forced, local path).
  • TS typecheck, README sync, the docs check and build, and the converted docs scripts.

⚠️ Known upstream bug: @padosoft/native-modules 1.5.0's native_dependency calls spec.spm_dependency(...), which neither CocoaPods nor RN defines. RN's helper is the top-level spm_dependency(spec, …). The SPM run above needed a three-line local shim. The fix belongs in react-native-support. Until then, the default CocoaPods path works and forcing SwiftPM fails at pod install.

Not verified: Android (android-build) and Windows builds.

Next, a separate PR: the @padosoft/ecr17 Node.js entry, a Node-API addon over the C++ client with a tsdown TypeScript API.

🤖 Generated with Claude Code

- packages/ecr17-kit (@padosoft/ecr17-kit) and packages/react-native-ecr17
  (@padosoft/react-native-ecr17); apps/example (workspace) and apps/example-windows
  (npm, outside the workspace: RNW pins an older React Native).
- Workspaces packages/* + apps/example; CI, release (mirrors every package to GitHub
  Packages), changesets, biome, scripts and docs follow the new paths.
- README roadmap: native Swift and Kotlin APIs, C API + .NET, POSIX transport,
  prebuilt binaries, publishing, Windows verification.

Verified: kit tests 100/100 from the new path, TS typecheck, nitrogen, README sync,
workflow YAML, Expo prebuild + pod install from apps/example.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Deploying react-native-ecr17-protocol with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2071f8d
Status:🚫  Build failed.

View logs

@47PADO47
47PADO47 added this pull request to stack #27 October 5, 2026 19:29
…pps/docs, TS scripts

- @padosoft/ecr17-kit -> @padosoft/ecr17 (2.0.0), packages/ecr17: pod and Swift product
  Ecr17, headers <ecr17/...>, CMake ecr17::ecr17. The podspec uses native_kit.
- The RN binding's pod is now ReactNativeEcr17 (nitro.json iosModuleName), so the core
  keeps the name Ecr17. Android (libEcr17.so) is unchanged.
- SwiftPM: root Package.swift (product Ecr17 over packages/ecr17/cpp). ReactNativeEcr17
  links the core through native_dependency with this repo as spm_url, and the minimum
  version is read from its @padosoft/ecr17 range. The release workflow tags each core
  version X.Y.Z. @padosoft/ecr17 opts out of autolinking; its Expo plugin declares the
  pod unless SwiftPM is on.
- docs-site/ -> apps/docs/. Every .mjs script is now .ts (root: bun; docs: node 24).
- Docs, AGENTS.md, LESSON.md, README and the changeset are updated.

Verified locally: core tests (CMake), `swift build` of the root package plus a dependent
package that includes <ecr17/...>, and an iOS simulator build of apps/example through the
Ecr17 pod (default) and through the Ecr17 Swift package (SwiftPM forced, local path). The
SwiftPM run needed a local shim: @padosoft/native-modules 1.5.0 calls a
Pod::Specification#spm_dependency that doesn't exist (an upstream fix is needed).
Docs check and build pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@47PADO47 47PADO47 changed the title chore: bun monorepo (packages/, apps/) and roadmap chore: bun monorepo, @padosoft/ecr17 core with SwiftPM, apps/docs, TS scripts Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant