@cmpose/core 0.6.0 → 0.7.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cmpose/core",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "cmpose project generator core (Compose Multiplatform)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -2,8 +2,20 @@
2
2
  const pins = require('../pins');
3
3
  const { BACKEND_SCHEMA: S, backendContractVersion } = require('./contract');
4
4
 
5
- /** What the Ktor backend generator offers, plus the rules an AI client follows when it writes code in the project */
6
- function describeBackend() {
5
+ // The quota convention; sharing false leaves out the space, member and invite quotas
6
+ function quotasConvention(sharing) {
7
+ if (sharing === false) {
8
+ return 'MAX_STORAGE_BYTES_PER_USER (default 100 MB) caps new writes; 0 turns it off. ' +
9
+ 'A refused write answers 409 QUOTA_EXCEEDED with quota = storage.';
10
+ }
11
+ return 'MAX_STORAGE_BYTES_PER_USER (default 100 MB), and with sharing MAX_SPACES_PER_USER (20), MAX_MEMBERS_PER_SPACE (50) ' +
12
+ 'and MAX_PENDING_INVITES_PER_SPACE (20) cap new writes; 0 turns one off. ' +
13
+ 'A refused write answers 409 QUOTA_EXCEEDED with quota = storage | spaces | members | invites.';
14
+ }
15
+
16
+ /** What the Ktor backend generator offers, plus the rules an AI client follows when it writes code in the project.
17
+ * sharing false describes a project without sharing; left out, the conventions cover both. */
18
+ function describeBackend({ sharing } = {}) {
7
19
  const port = S.anatomy.localPort;
8
20
  return {
9
21
  contractVersion: backendContractVersion(),
@@ -13,7 +25,8 @@ function describeBackend() {
13
25
  sharing: {
14
26
  type: S.options.sharing.type,
15
27
  default: S.options.sharing.default,
16
- description: 'Spaces shared between users, with roles (viewer, editor, owner) and invitations. Off: every row belongs to one user.'
28
+ description: 'Spaces shared between users, with roles (viewer, editor, owner) and invitations (an owner lists and revokes pending ones). ' +
29
+ 'Off: every row belongs to one user.'
17
30
  },
18
31
  sample: {
19
32
  type: S.options.sample.type,
@@ -65,6 +78,7 @@ function describeBackend() {
65
78
  'DTOs without id/owner/role fields, no SQL string building, no personal data in logs, rate limits on sensitive routes.',
66
79
  errors: 'Fail with notFound(), badRequest(...) or an ApiException; the body is {"error":{"code","message","requestId"}} (+ fields for validation). ' +
67
80
  'A 500 carries no detail.',
81
+ quotas: quotasConvention(sharing),
68
82
  runLocal: `./gradlew ${S.anatomy.localTask} serves on 127.0.0.1:${port} with an embedded PostgreSQL in .local-server/; ` +
69
83
  'it needs .local-server/config.properties with firebaseProjectId=<Firebase project id> (optional port=). ' +
70
84
  './gradlew resetLocal deletes .local-server/; ./gradlew build compiles, runs detekt and the tests.',
package/src/pins.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
  // The template tags this core version was tested with (immutable tags)
3
3
  module.exports = Object.freeze({
4
- cmp: Object.freeze({ repo: 'whinstudio/cmpose-template', ref: 'template-2026.10.20' }),
4
+ cmp: Object.freeze({ repo: 'whinstudio/cmpose-template', ref: 'template-2026.10.21' }),
5
5
  // The release step replaces the placeholder with the game template's tag
6
- game: Object.freeze({ repo: 'whinstudio/cmpose-game-template', ref: 'game-template-2026.10.19' }),
6
+ game: Object.freeze({ repo: 'whinstudio/cmpose-game-template', ref: 'game-template-2026.10.20' }),
7
7
  // The release step replaces the placeholder with the backend template's tag
8
- backend: Object.freeze({ repo: 'whinstudio/cmpose-backend-template', ref: 'backend-template-2026.10.20' })
8
+ backend: Object.freeze({ repo: 'whinstudio/cmpose-backend-template', ref: 'backend-template-2026.10.21' })
9
9
  });