Transform to minimal ObjectStack plugin starter template#18
Conversation
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This pull request restructures the repository from a multi-package monorepo with CRM/example content into a single, minimal ObjectStack plugin starter template aligned with @objectstack/spec v0.8.2, and updates tooling and CI accordingly.
Changes:
- Replace the monorepo (core/examples packages) with a single package exposing a minimal plugin: config, one example object, and two example views.
- Add focused starter source files under
src/(objectstack.config.ts,objects/example.object.ts,views/example.view.ts,index.ts,example.ts) and a new roottsconfig.json. - Migrate tooling from pnpm workspaces to npm (scripts, workflows, ignore rules) and update documentation to describe plugin-oriented usage instead of multiple example apps.
Reviewed changes
Copilot reviewed 48 out of 51 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
tsconfig.json |
Replaces monorepo project references with a single-project TS config targeting NodeNext and emitting to dist/, matching the new single-package layout. |
src/objectstack.config.ts |
Introduces the plugin manifest (System.ObjectStackManifest) providing a minimal, clearly documented starting point for plugin metadata. |
src/objects/example.object.ts |
Adds a simple example_object schema using Data.ObjectSchema.create, demonstrating current Data protocol usage and field definitions. |
src/views/example.view.ts |
Adds example grid and kanban list views wired to example_object, illustrating basic UI.ListView configuration. |
src/index.ts |
Defines the package entrypoint, re-exporting config, object, views, and protocol types to present a clean public API surface. |
src/example.ts |
Provides a runnable example script that exercises the config, object schema, and views to show how the plugin would be consumed. |
package.json |
Renames the package to @objectstack/starter-plugin, removes workspace semantics, updates scripts for a single build and example, and bumps TS and @objectstack/spec versions. |
README.md |
Rewrites documentation from monorepo + CRM examples to a focused plugin starter guide, aligning examples and project structure with the new layout and spec v0.8.2. |
.gitignore |
Simplifies ignore rules for a single-package project and removes monorepo-specific patterns, though it currently also ignores package-lock.json despite npm-based CI. |
.github/workflows/ci.yml |
Converts CI from pnpm multi-package builds/examples to npm-based type-check, build, and a single example run for the new plugin. |
.github/workflows/code-quality.yml |
Adapts code-quality checks to the single-package layout, ensuring TS type-check, build, structure validation, and example execution under npm. |
.github/workflows/release.yml |
Simplifies the release process to build and generate releases for the single package, attaching root-level artifacts only. |
pnpm-workspace.yaml, pnpm-lock.yaml |
Remove pnpm workspace and lockfile since the project is no longer a pnpm-based monorepo. |
packages/core/**, packages/examples/**, CRM_DOCUMENTATION.md |
Remove the previous core and example packages (objects, views, examples, docs) that are no longer part of the minimal plugin template. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| - name: Install dependencies | ||
| run: pnpm install --frozen-lockfile | ||
| run: npm ci |
There was a problem hiding this comment.
The CI workflow installs dependencies with npm ci, but the repository ignores package-lock.json in .gitignore, so no lockfile will be committed and npm ci will fail. Either switch this step to npm install or stop ignoring package-lock.json and commit a lockfile so npm ci has the required input.
| run: npm ci | |
| run: npm install |
|
|
||
| - name: Install dependencies | ||
| run: pnpm install --frozen-lockfile | ||
| run: npm ci |
There was a problem hiding this comment.
This workflow uses npm ci to install dependencies, but .gitignore excludes package-lock.json, so the lockfile will not exist in CI and npm ci will fail. Consider using npm install here or removing package-lock.json from .gitignore and committing a lockfile.
| run: npm ci | |
| run: npm install |
|
|
||
| - name: Install dependencies | ||
| run: pnpm install --frozen-lockfile | ||
| run: npm ci |
There was a problem hiding this comment.
npm ci requires a committed package-lock.json, but the repo currently ignores package-lock.json in .gitignore, so releases will fail at this step. Align this with the dependency strategy by either using npm install or tracking a lockfile in the repo.
| run: npm ci | |
| run: npm install |
Restructured repository from a complex monorepo with CRM examples to a focused plugin starter template aligned with ObjectStack v0.8.2 specification.
Changes
Structure
Template Components
objectstack.config.ts- System.ObjectStackManifest plugin metadataobjects/example.object.ts- Data.ServiceObject with proper field schemaviews/example.view.ts- UI.ListView (grid + kanban)index.ts- Clean exportsexample.ts- Usage demonstrationDependencies & Tooling
Example Usage
Developers can now clone this repository and extend the minimal examples to build custom ObjectStack plugins following current protocol specifications.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
protocol.objectstack.ai/home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.