Skip to content

Commit 8ff0460

Browse files
committed
Add leanflutter/tray_manager as a submodule under bindings/dart
It tracks main, stays out of the root pub workspace (melos ignores it) and is not checked out by CI.
1 parent 02c2e5a commit 8ff0460

4 files changed

Lines changed: 9 additions & 3 deletions

File tree

‎.gitmodules‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
path = core
33
url = ../nativeapi-core.git
44
branch = main
5+
[submodule "bindings/dart/tray_manager"]
6+
path = bindings/dart/tray_manager
7+
url = git@github.com:leanflutter/tray_manager.git
8+
branch = main

‎AGENTS.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# libnativeapi workspace
22

3-
This is the workspace repo (`libnativeapi/nativeapi`, formerly `nativeapi-flutter` and `nativeapi-workspace`) for the [libnativeapi](https://github.com/libnativeapi) project family. Every binding (`bindings/dart/`, `bindings/rust/`, `bindings/csharp/`, `bindings/js/`, `bindings/python/`), the code generator (`tools/codegen/`), the `./codegen` script, the specs and the shared tooling live directly in this repo (the Rust and C# histories were merged in from `nativeapi-rust` and `nativeapi-csharp`); only `core/` is a git submodule of an independent repository. Work inside `core/` is committed and pushed from that subdirectory; everything else is committed here.
3+
This is the workspace repo (`libnativeapi/nativeapi`, formerly `nativeapi-flutter` and `nativeapi-workspace`) for the [libnativeapi](https://github.com/libnativeapi) project family. Every binding (`bindings/dart/`, `bindings/rust/`, `bindings/csharp/`, `bindings/js/`, `bindings/python/`), the code generator (`tools/codegen/`), the `./codegen` script, the specs and the shared tooling live directly in this repo (the Rust and C# histories were merged in from `nativeapi-rust` and `nativeapi-csharp`); only `core/` and `bindings/dart/tray_manager/` are git submodules of independent repositories. Work inside a submodule is committed and pushed from that subdirectory; everything else is committed here.
44

55
## Layout
66

77
```
88
core/ # submodule: nativeapi-core — the C++ core library
99
bindings/
10-
├── dart/ # the Dart binding: nativeapi/, cnativeapi/, nativeapi_flutter/
10+
├── dart/ # the Dart binding: nativeapi/, cnativeapi/, nativeapi_flutter/; tray_manager/ (submodule: leanflutter/tray_manager)
1111
├── rust/ # the Rust binding: crates/{nativeapi,cnativeapi}
1212
├── csharp/ # the C# binding: src/, tests/, NativeAPI.slnx
1313
├── js/ # the JS/TS binding: a Node-API addon (src/) + TypeScript (lib/)
@@ -93,7 +93,7 @@ scenarios for *this project's* examples live in [tools/gui/](tools/gui/README.md
9393
## Conventions
9494

9595
- `core` tracks `branch = main`. Use `make sync` to fast-forward it; `make status` to see dirty state everywhere; `make bump` to stage its pointer.
96-
- The leanflutter packages built on nativeapi (`tray_manager`, `window_manager`, `launch_at_startup`, …) live in their own repos under github.com/leanflutter and depend on the published `nativeapi`; they are not part of this repo. To try one against local changes, point a `dependency_overrides` entry in that package at `bindings/dart/nativeapi_flutter` (and `nativeapi`, `cnativeapi`) and never commit the override.
96+
- The leanflutter packages built on nativeapi (`tray_manager`, `window_manager`, `launch_at_startup`, …) live in their own repos under github.com/leanflutter and depend on the published `nativeapi`. Only `tray_manager` rides along, as the submodule `bindings/dart/tray_manager` (tracking `main`); it is not a member of the root pub workspace, melos ignores it, and CI does not check it out. To try one against local changes, point a `dependency_overrides` entry in that package at `bindings/dart/nativeapi_flutter` (and `nativeapi`, `cnativeapi`) and never commit the override.
9797
- Commit workspace submodule pointer updates only when the combination is compatible (a known-good snapshot).
9898
- Examples live in `examples/<binding>_<name>_example` (`dart_` for plain Dart programs, `flutter_`, `rust_`, `csharp_`, `js_`, `python_`), not inside the bindings; a new Dart, Flutter or Rust example must also be listed in the root `pubspec.yaml` / `Cargo.toml`, a C# one in `bindings/csharp/NativeAPI.slnx`, a JS one in the root `package.json`. A Python example is a standalone uv project whose `pyproject.toml` points `nativeapi` at `../../bindings/python` (`uv run main.py` builds the wheel). Only the pub.dev package examples (`bindings/dart/*/example`) stay inside their package.
9999
- CI is one workflow per binding (`dart-ci.yml`, `rust-ci.yml`, `csharp-ci.yml`, `js-ci.yml`, `python-ci.yml`), each running only for changes under its `bindings/<lang>/` and its examples (`examples/dart_*` and `examples/flutter_*` for Dart, `examples/rust_*`, `examples/csharp_*`, `examples/js_*`, `examples/python_*`). Release tags are per binding: `v*` publishes the Dart packages (`dart-release.yml`), `rust-v*` publishes the crates (`rust-release.yml`), `python-v*` publishes the Python package to PyPI (`python-release.yml`: an sdist carrying core in `cxx_impl/`, and wheels built from it with cibuildwheel; the tag must equal `python-v` + the version in `bindings/python/pyproject.toml`); never push a bare `v*` tag for anything but the Dart packages. Nothing has been published to PyPI yet: the first release needs `nativeapi` set up on PyPI with this workflow and the `pypi` environment as a trusted publisher.

‎bindings/dart/tray_manager‎

Submodule tray_manager added at 1a33040

‎pubspec.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ melos:
3838
- examples/flutter_*
3939

4040
ignore:
41+
- "bindings/dart/tray_manager/**"
4142
- "**/build/**"
4243
- "**/.dart_tool/**"
4344
- "**/.symlinks/**"

0 commit comments

Comments
 (0)