@owlmeans/create-app 0.1.18-rc.54 → 0.1.18-rc.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ bun create @owlmeans/app my-app
9
9
  # or
10
10
  yarn create @owlmeans/app my-app
11
11
  # or
12
- npx @owlmeans/create-app@^0.1.18-rc.54 my-app
12
+ npx @owlmeans/create-app@^0.1.18-rc.55 my-app
13
13
  ```
14
14
 
15
15
  ## What it generates
package/build/args.js CHANGED
@@ -5,7 +5,7 @@ Usage:
5
5
  npm create @owlmeans/app@latest <dir> [options]
6
6
  bun create @owlmeans/app <dir> [options]
7
7
  yarn create @owlmeans/app <dir> [options]
8
- npx @owlmeans/create-app@^0.1.18-rc.54 <dir> [options]
8
+ npx @owlmeans/create-app@^0.1.18-rc.55 <dir> [options]
9
9
 
10
10
  Generates three workspaces (common + api + web) with shadcn UI navigation and
11
11
  layout, no authentication, and a session-scoped in-memory resource on the
package/build/bin.js CHANGED
File without changes
package/build/run.js CHANGED
@@ -50,7 +50,7 @@ export const run = async (args) => {
50
50
  log(args.install
51
51
  ? '\nDeploying agent skills via @owlmeans/agent-skills…'
52
52
  : '\nDeploying harness guidance via @owlmeans/agent-skills (general skills only — re-run'
53
- + '\n`npx @owlmeans/agent-skills@^0.1.18-rc.45` after installing to add the package-specific ones)…');
53
+ + '\n`npx @owlmeans/agent-skills@^0.1.18-rc.46` after installing to add the package-specific ones)…');
54
54
  try {
55
55
  const result = await installSkills({
56
56
  dir: dest,
@@ -62,7 +62,7 @@ export const run = async (args) => {
62
62
  help: false,
63
63
  });
64
64
  if (result.code !== 0) {
65
- process.stderr.write(` agent-skills exited with code ${result.code} — you can re-run \`npx @owlmeans/agent-skills@^0.1.18-rc.45\` later.\n`);
65
+ process.stderr.write(` agent-skills exited with code ${result.code} — you can re-run \`npx @owlmeans/agent-skills@^0.1.18-rc.46\` later.\n`);
66
66
  }
67
67
  }
68
68
  catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/create-app",
3
- "version": "0.1.18-rc.54",
3
+ "version": "0.1.18-rc.55",
4
4
  "license": "MIT",
5
5
  "description": "Scaffold a fullstack OwlMeans Common app — common + api + web workspaces, shadcn UI navigation/layout, no auth, and a session-scoped in-memory resource, or --bare for the demo-free shell. Also usable programmatically via scaffold(). Deploys agent skills via @owlmeans/agent-skills by default.",
6
6
  "type": "module",
@@ -30,7 +30,7 @@
30
30
  "template"
31
31
  ],
32
32
  "dependencies": {
33
- "@owlmeans/agent-skills": "^0.1.18-rc.45"
33
+ "@owlmeans/agent-skills": "^0.1.18-rc.46"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@owlmeans/dep-config": "workspace:*",
@@ -94,7 +94,7 @@ from the installed `@owlmeans/*` packages. Agents load a skill by topic, or you
94
94
  explicitly. Copilot and Codex read `.agents/skills/` directly; Claude Code reads the generated
95
95
  symlinks in `.claude/skills/` (see "Claude Code" below).
96
96
 
97
- - After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.45` to refresh
97
+ - After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.46` to refresh
98
98
  the deployed skills.
99
99
  - Deployed files carry an `AUTO-GENERATED` banner and are refreshed in place — never hand-edit them.
100
100
  - To capture your own guidance, see the `skill-authoring` skill; to turn repeatedly-used memory into
@@ -53,5 +53,5 @@ them; write your own guidance as separate, un-bannered files. Refresh after addi
53
53
  `@owlmeans/*` packages:
54
54
 
55
55
  ```sh
56
- npx @owlmeans/agent-skills@^0.1.18-rc.45
56
+ npx @owlmeans/agent-skills@^0.1.18-rc.46
57
57
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: reuse-code
3
- description: Discovery-first, reuse-first workflow for OwlMeans projects. Use BEFORE planning or building any feature, before proposing a third-party library or a custom solution, and after writing code. Find an existing @owlmeans/* package or existing code first; extend before writing new; simplify what you write.
3
+ description: Discovery-first, reuse-first workflow for OwlMeans projects. Use BEFORE planning or building any feature, before proposing a third-party library or a custom solution, and after writing code. Find an existing @owlmeans/* package or existing code first (membership, invitations, organizations and access come from the IAM); extend before writing new; simplify what you write.
4
4
  user-invocable: true
5
5
  metadata:
6
6
  scope: general
@@ -47,7 +47,7 @@ How you research the repo depends on whether `@owlmeans/*` is linked locally:
47
47
  **https://github.com/owlmeans/common** — `tree.md` and package READMEs — to find the right package.
48
48
 
49
49
  This is the same dev-linked detection `@owlmeans/agent-skills` uses (see its `detectLinked`). After
50
- adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.45` to deploy its
50
+ adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.46` to deploy its
51
51
  skill. Prefer an `@owlmeans/*` package over a third-party library or bespoke code whenever one fits.
52
52
 
53
53
  ### Never add an OwlMeans dependency without an explicit range
@@ -74,6 +74,23 @@ If an installed package nearly fits, **configure or extend it** rather than writ
74
74
  its resources, services, entrypoints, and helpers. A small extension of a framework package beats a new
75
75
  parallel implementation.
76
76
 
77
+ ### People, organizations and access come from the IAM
78
+
79
+ An application that signs its people in through an OwlMeans IAM provider already has accounts,
80
+ organizations, memberships, invitations and grants — the provider keeps them. Before writing a
81
+ members table, an invitation flow, a role column or an organization picker:
82
+
83
+ - **Server** (`@owlmeans/server-iam`): `iamRuntime(context, request)` lists the person's
84
+ organizations, creates one, lists / adds (find-or-create by e-mail) / updates / removes members,
85
+ and lists, assigns and revokes grants — as the signed-in person, with owner and member rights
86
+ decided by the provider. `organizationOf` / `organizationsOf` read the session's organizations;
87
+ gates and `hasPermission` enforce access; `requireEntityKey(req)` is the tenant key to store
88
+ records by.
89
+ - **Browser** (`@owlmeans/client-iam`): `listOrganizations` / `switchOrganization` — the acting
90
+ organization is session state, never a per-request parameter.
91
+ - If the project's own scaffold already ships an organization switcher or a people / access screen,
92
+ extend it rather than adding a second one.
93
+
77
94
  ## 3. No package? Reuse code and extract an abstraction
78
95
 
79
96
  When no package solves it, search the codebase for code that already solves a **similar** problem.
@@ -11,7 +11,7 @@
11
11
  "typecheck": "tsc -b"
12
12
  },
13
13
  "dependencies": {
14
- "@owlmeans/server-app": "^0.1.18-rc.48",
14
+ "@owlmeans/server-app": "^0.1.18-rc.49",
15
15
  "@owlmeans/static-resource": "^0.1.18-rc.36",
16
16
  "__APP_SLUG__-common": "workspace:^"
17
17
  },
@@ -19,8 +19,8 @@
19
19
  "typecheck": "tsc -b"
20
20
  },
21
21
  "dependencies": {
22
- "@owlmeans/config": "^0.1.18-rc.40",
23
- "@owlmeans/entrypoint": "^0.1.18-rc.38",
22
+ "@owlmeans/config": "^0.1.18-rc.41",
23
+ "@owlmeans/entrypoint": "^0.1.18-rc.39",
24
24
  "@owlmeans/error": "^0.1.18-rc.36",
25
25
  "@owlmeans/resource": "^0.1.18-rc.37",
26
26
  "@owlmeans/route": "^0.1.18-rc.33",
@@ -11,16 +11,16 @@
11
11
  "preview": "vite preview"
12
12
  },
13
13
  "dependencies": {
14
- "@owlmeans/client": "^0.1.18-rc.47",
15
- "@owlmeans/client-config": "^0.1.18-rc.40",
16
- "@owlmeans/client-context": "^0.1.18-rc.44",
17
- "@owlmeans/client-entrypoint": "^0.1.18-rc.43",
18
- "@owlmeans/client-i18n": "^0.1.18-rc.46",
19
- "@owlmeans/entrypoint": "^0.1.18-rc.38",
14
+ "@owlmeans/client": "^0.1.18-rc.48",
15
+ "@owlmeans/client-config": "^0.1.18-rc.41",
16
+ "@owlmeans/client-context": "^0.1.18-rc.45",
17
+ "@owlmeans/client-entrypoint": "^0.1.18-rc.44",
18
+ "@owlmeans/client-i18n": "^0.1.18-rc.47",
19
+ "@owlmeans/entrypoint": "^0.1.18-rc.39",
20
20
  "@owlmeans/route": "^0.1.18-rc.33",
21
21
  "@owlmeans/state": "^0.1.18-rc.36",
22
- "@owlmeans/web-client": "^0.1.18-rc.57",
23
- "@owlmeans/web-panel": "^0.1.18-rc.67",
22
+ "@owlmeans/web-client": "^0.1.18-rc.58",
23
+ "@owlmeans/web-panel": "^0.1.18-rc.68",
24
24
  "@radix-ui/react-label": "^2.1.0",
25
25
  "@radix-ui/react-navigation-menu": "^1.2.14",
26
26
  "@radix-ui/react-progress": "^1.1.0",