Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
5426234
Merge pull request #30 from newcore-network/develop
Flussen Jan 5, 2026
0f2fc41
Merge pull request #31 from newcore-network/develop
Flussen Jan 8, 2026
f777653
Merge pull request #32 from newcore-network/develop
Flussen Jan 8, 2026
d631ec6
Merge pull request #33 from newcore-network/develop
Flussen Jan 11, 2026
6c22064
Merge pull request #35 from newcore-network/develop
Flussen Jan 17, 2026
8f02afd
Merge pull request #36 from newcore-network/develop
Flussen Jan 18, 2026
998650e
Merge pull request #37 from newcore-network/develop
Flussen Jan 18, 2026
b1d661b
Merge pull request #38 from newcore-network/develop
Flussen Jan 18, 2026
3ca5dae
Merge pull request #39 from newcore-network/develop
Flussen Jan 18, 2026
4393a90
Merge pull request #41 from newcore-network/develop
Flussen Jan 24, 2026
42490be
Merge pull request #42 from newcore-network/develop
Flussen Jan 24, 2026
da5d416
Merge pull request #47 from newcore-network/develop
Flussen Feb 26, 2026
cafd5c4
bump: 1.0.5-beta.1
Flussen Feb 26, 2026
df13868
feat: Introduce RedM-specific ped appearance adapter and adapt client…
Flussen Mar 4, 2026
bc4636f
feat: Introduce runtime platform and game profile detection, integrat…
Flussen Mar 4, 2026
fc87911
feat: Add server runtime adapter layer for environment abstraction
Flussen Mar 9, 2026
7ac066c
feat: Implement explicit client and server adapter APIs, deprecate th…
Flussen Mar 9, 2026
b859433
feat: Introduce WebView abstraction for client UI interactions and en…
Flussen Mar 9, 2026
889c496
refactor: rename routing bucket methods to dimension for consistency …
Flussen Mar 10, 2026
554d6b8
refactor: Introduce adapter contracts for server, client, and transpo…
Flussen Mar 10, 2026
0693385
fix: exportation fix
Flussen Mar 10, 2026
d240014
refactor: Replace IRuntimeInfo and IPlatformCapabilities with IPlatfo…
Flussen Mar 11, 2026
15877f3
refactor: lazy load the Node client adapter using dynamic imports
Flussen Mar 11, 2026
215e9eb
feat: Introduce project-level adapter injection and runtime hints for…
Flussen Mar 12, 2026
acd4d90
feat: add useAdapter function and update init to support pending adapter
Ivanruii Mar 13, 2026
090c356
Merge branch 'v1-beta' of github.com:newcore-network/opencore into v1…
Ivanruii Mar 13, 2026
0290cc2
Revert "Merge branch 'v1-beta' of github.com:newcore-network/opencore…
Ivanruii Mar 13, 2026
e284d7a
feat: bucket replace to dimension
Flussen Mar 13, 2026
5caf01f
refactor: introduce Client Interfaces in Contracts for platform-agnos…
Flussen Mar 13, 2026
8792ae6
fix: linter
Flussen Mar 13, 2026
e225f1a
refactor: Dynamically generate from all
Flussen Mar 13, 2026
7c0f846
feat: add playerCommand runtime event and improve tsyringe type safet…
Flussen Mar 13, 2026
d716a16
fix: lint
Flussen Mar 13, 2026
0424885
feat: allow pre-setting the client adapter via before initialization
Flussen Mar 14, 2026
94fb4c1
feat: Introduce public kernel and contracts entry points, refactor t…
Flussen Mar 14, 2026
b4f5627
refactor: reorganize contracts into dedicated client and server files…
Flussen Mar 14, 2026
ee43f5b
feat: Introduce and integrate to abstract client-side logging from d…
Flussen Mar 14, 2026
868d838
refactor: abstract client-side spawn, teleport, and respawn operation…
Flussen Mar 14, 2026
5c648fd
feat: Introduce interface and implementation for managing player sp…
Flussen Mar 14, 2026
feb5355
feat: Introduce dedicated lifecycle services and contracts for NPC an…
Flussen Mar 14, 2026
8b92f7b
feat: Introduce client UI bridges and server player state/appearance …
Flussen Mar 14, 2026
ea31497
fix: lint and remove unused variables + test
Flussen Mar 14, 2026
d646b66
refactor: Use Players API for player target resolution in lifecycle s…
Flussen Mar 14, 2026
0ac69ef
refactor: remove player sync controller and adds network event loggi…
Flussen Mar 14, 2026
aa799b0
refactor: client marker and blip management to use ID-based APIs and …
Flussen Mar 16, 2026
8e36a52
refactor: client notification service to use a unified bridge interfa…
Flussen Mar 16, 2026
3434bf4
docs: release updated
Flussen Mar 18, 2026
230e53b
style: remove extraneous newlines in blip service and node client ada…
Flussen Mar 18, 2026
039e800
refactor: remove Players dependency and simplify player target resolu…
Flussen Mar 18, 2026
4de6d07
Merge pull request #48 from newcore-network/v1-beta
Flussen Mar 18, 2026
178de8f
refactor: change logger write method to accept log level string inste…
Flussen Mar 19, 2026
9f70b7a
feat: Introduce and interfaces, refactor camera service, and adopt …
Flussen Mar 19, 2026
510e4d9
refactor: introduce client vehicle, ped, and progress port interfaces…
Flussen Mar 20, 2026
4e6d0e2
feat: Implement support for default function parameters in commands, …
Flussen Mar 20, 2026
7b209f1
feat: Introduce webview chat mode capabilities, add command validatio…
Flussen Mar 20, 2026
87bfa1d
feat: add unit tests for server APIs, entities, and adapters
Flussen Mar 23, 2026
bcd1a32
refactor: Implement inline worker scripts with performance tracking a…
Flussen Mar 24, 2026
43dee14
refactor: Dynamically determine log domain labels based on resource n…
Flussen Mar 24, 2026
5c15590
refactor & bump: Updated to Typescript 6, update import paths to rela…
Flussen Mar 24, 2026
43dcf54
lint: biome fix lint
Flussen Mar 25, 2026
1e4a631
feat: Introduce Husky hooks for pre-commit and pre-push checks, and r…
Flussen Mar 25, 2026
05a7069
refactor: Standardize system event names by introducing and utilizin…
Flussen Mar 26, 2026
185a06f
docs: release file updated
Flussen Mar 26, 2026
91154b5
ci: deleted version of pnpm
Flussen Mar 26, 2026
2de0ecb
Merge pull request #49 from newcore-network/v1
Flussen Mar 26, 2026
c6fa3ab
ci: publish action updated
Flussen Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ jobs:

- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
with:
version: 10.13.1

- name: Setup Node
uses: actions/setup-node@v4
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ jobs:

- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
with:
version: 10.13.1

- name: Setup Node
uses: actions/setup-node@v4
Expand Down
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm lint-staged
1 change: 1 addition & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm typecheck && pnpm test
76 changes: 20 additions & 56 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,22 @@
## OpenCore Framework v1.0.0-beta.1

### Highlights

- Major runtime evolution with channels, RPC/events transport, plugins, and library APIs.
- Large architecture and cleanup pass across the codebase.
- Expanded benchmark coverage and refreshed benchmark results for this beta cycle.
- Clearer separation between public API surface and runtime implementations (ports/contracts vs local/remote implementations).
- Core runtime primitives are now more explicit and reusable (`BaseEntity`, `Spatial`, `World`, library core).

### New Features

- Channels and chat API ecosystem:
- Added a comprehensive channel system (radio, phone, team, admin, proximity).
- Added communication controller examples and extensive JSDoc for channel APIs.
- Exported channel API ports and removed legacy channel implementation paths.
- Messaging transport and RPC/events:
- Introduced a unified messaging transport architecture with `EventsAPI` and `RpcAPI`.
- Added stronger typed runtime contexts for server/client events and RPC.
- Added/expanded RPC decorator and handler support (`@OnRPC`) with integration tests.
- Runtime surface expansion:
- Consolidated core concepts around reusable runtime primitives (`BaseEntity`, `Spatial`, `World`) exported from runtime core.
- Added Appearance API wrapper for validation/apply/reset flows.
- Added Camera and Cinematic services, cinematic builder, and typed lifecycle payloads.
- Added ped abstractions (Cfx + Node implementations) and server-side NPC lifecycle APIs.
- Added first-class runtime library factories (`createServerLibrary`, `createClientLibrary`) and dedicated library event bus/processors.
- Public API boundary and port model:
- Server public API now explicitly exports API ports (`players.api-port`, `authorization.api-port`, `channel.api-port`) through `runtime/server/api`.
- Internal runtime ports were isolated under `ports/internal` (`command-execution`, `player-session-lifecycle`) to mark non-public contracts.
- Runtime services were moved toward explicit local/remote implementations under `runtime/server/implementations/*`.
- Security and validation flow:
- Principal/authorization and command/net validation paths were tightened through contract-based security handlers and observers.
- Runtime config and validation behavior were expanded and benchmarked (including validation-heavy and error-path scenarios).
- Plugin model:
- Added server plugin kernel MVP with extensible API hooks.
- Added client-side plugin system and plugin lifecycle hook after server initialization.
- Autoload and developer experience:
- Added autoload for user server controllers.
- Improved client controller autoloading and metadata scanning error handling.
- Benchmark system:
- Added broad benchmark suites for BinaryService, SchemaGenerator, EntitySystem, AppearanceValidation, EventInterceptor, RuntimeConfig.
- Added load benchmarks for RPC concurrency, validation, and request lifecycle.

### Breaking Changes

- Service-to-API/implementation migration in multiple modules (notably `*Service` naming changes).
- Channel/chat APIs were renamed and moved (`ChannelService` -> `Channels`, `ChatService` -> `Chat`, moved to `apis/`).
- Transport contracts changed from legacy net transport shape to MessagingTransport + Events/RPC APIs.
- Port/file naming was normalized (`player-directory` -> `players.api-port`, `principal.port` -> `authorization.api-port`, plus related API file renames).
- Public vs internal contracts are stricter: `api-port` exports are public surface, while `ports/internal/*` are runtime internals and should not be consumed directly.
- Deprecated methods, stale docs, and obsolete examples were removed.
- Import paths and shared types were normalized/centralized (including parallel compute types and decorator/binary file naming updates).
## OpenCore Framework v1.0.5

### Added
- Added new client adapter ports for camera, ped, vehicle, progress, spawn, local player, runtime bridge, and WebView integration, with matching node runtime implementations.
- Added support for WebView chat mode, richer client UI/runtime abstractions, and cleaner adapter-facing contracts/exports.
- Added server-side improvements for command handling, including command validation, default function parameter support, and standardized system event names.
- Added more coverage around parallel compute, vehicle modification, vehicle sync state, player state sync, adapters, and command execution flows.
- Added Husky pre-commit and pre-push hooks for local quality checks.

### Changed
- Refactored client services to rely on explicit adapter ports instead of direct runtime assumptions, especially for camera, ped, progress, spawn, and vehicle flows.
- Refactored logging so logger writes use string log levels and runtime log domain labels are derived dynamically from the active resource.
- Refactored worker execution to use inline worker scripts with performance tracking in the parallel compute pipeline.
- Updated package/tooling setup to TypeScript 6 and refreshed package exports, scripts, and dependency configuration.

### Fixed
- Fixed command schema handling so exported/remote commands support default parameters more reliably.
- Fixed transport/event contract alignment across node events and RPC layers.
- Fixed several test, lint, and export consistency issues while expanding automated coverage.

### Notes

This beta is a major milestone for OpenCore: cleaner runtime boundaries, stronger extension points, and richer communication primitives while keeping decorator-driven DX.

Simple CLI context: OpenCore CLI now supports cleaner non-interactive build output for CI environments (for example `opencore build --output=plain`).
- This release covers the full `master...v1` delta and keeps the release notes compact by grouping related adapter/runtime refactors instead of listing each port separately.
2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"$schema": "https://biomejs.dev/schemas/2.4.8/schema.json",
"root": true,

"files": {
Expand Down
54 changes: 41 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@open-core/framework",
"version": "1.0.0-beta.1",
"version": "1.0.5",
"description": "Secure, event-driven TypeScript Framework & Runtime engine for CitizenFX (Cfx).",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down Expand Up @@ -34,6 +34,26 @@
"import": "./dist/runtime/client/index.js",
"require": "./dist/runtime/client/index.js"
},
"./contracts": {
"types": "./dist/contracts.d.ts",
"import": "./dist/contracts.js",
"require": "./dist/contracts.js"
},
"./contracts/client": {
"types": "./dist/contracts/client.d.ts",
"import": "./dist/contracts/client.js",
"require": "./dist/contracts/client.js"
},
"./contracts/server": {
"types": "./dist/contracts/server.d.ts",
"import": "./dist/contracts/server.js",
"require": "./dist/contracts/server.js"
},
"./kernel": {
"types": "./dist/kernel-public.d.ts",
"import": "./dist/kernel-public.js",
"require": "./dist/kernel-public.js"
},
"./package.json": "./package.json"
},
"scripts": {
Expand All @@ -55,20 +75,23 @@
"bench": "npx tsx benchmark/index.ts",
"bench:core": "npx tsx benchmark/index.ts --core",
"bench:load": "npx vitest run --project benchmark",
"bench:all": "npx tsx benchmark/index.ts --all"
"bench:all": "npx tsx benchmark/index.ts --all",
"validate": "pnpm check && pnpm typecheck && pnpm test",
"lint-staged": "lint-staged",
"prepare": "husky"
},
"keywords": [
"framework",
"opencore",
"cfx",
"ragemp",
"citizenfx",
"redm",
"typescript",
"roleplay"
],
"author": "OpenCore Team",
"license": "MPL-2.0",
"packageManager": "pnpm@10.13.1",
"packageManager": "pnpm@10.33.0",
"peerDependencies": {
"reflect-metadata": "^0.2.2",
"tsyringe": "^4.10.0",
Expand All @@ -78,18 +101,23 @@
"uuid": "^13.0.0"
},
"devDependencies": {
"@biomejs/biome": "^2.3.11",
"@citizenfx/client": "2.0.22443-1",
"@citizenfx/server": "2.0.22443-1",
"@types/node": "^25.0.3",
"@vitest/coverage-v8": "^4.0.16",
"dependency-cruiser": "^17.3.6",
"@biomejs/biome": "^2.4.8",
"@types/node": "^25.5.0",
"@vitest/coverage-v8": "^4.1.1",
"dependency-cruiser": "^17.3.9",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"graphviz": "^0.0.9",
"tinybench": "^2.9.0",
"husky": "^9.1.7",
"lint-staged": "^16.2.6",
"tinybench": "^6.0.0",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
"vitest": "^4.0.16"
"typescript": "^6.0.2",
"vitest": "^4.1.1"
},
"lint-staged": {
"*.{js,cjs,mjs,ts,tsx,json,md}": [
"biome check --write --no-errors-on-unmatched"
]
}
}
Loading
Loading