Skip to content

Commit 72b08ee

Browse files
docs: hand-written inventory counts are deleted across skills, docs, READMEs and code comments; the names and the source of truth stay (#27542)
<!-- claude-projects-attribution: {"github_login":"marchtian"} --> _Requested by **田騏** · [project thread](https://claude.ai/code/project/chan_01VmuUhXU9SSUzqJYyXSmYSi?thread=cmsg_01VmuUhXU9SSUzqJYyXSmYSi6Px7HCkNBYctmRf2kDX4bR)_ domain:skills#1 · marchtian · session_017ihL2fNkBkNQ88EMzvcrPW Fixes #27522 Clause-②: no Metadata-protocol: none ## 维护者速读 - **改了什么:** 删掉手写的清单计数(「49 field types」「8 lifecycle events」「20 built-in node types」「Plugins (18)」「30 functions」「36 built-in tokens」「26 built-in metadata types」「10 built-in locales」「38 chart types」等):卡片清单表 16 行全部处理,再加本次扩扫到的 docs、examples、ui README、代码注释里的同类计数;枚举出来的名字保留,`packages/metadata/README.md` 那张已经过时的类型表(列着 `trigger`、`validation`、`theme` 等根本不存在的类型)换成指向 `DEFAULT_METADATA_TYPE_REGISTRY` 的一句话。 - **为什么改:** 这些数字没有门禁对着目录核对,清单一动就错(showcase 写 38 种图表,spec 只有 20;README 写 26 种元数据类型,spec 有 31),错的数字比没有数字更误导读者和 AI 作者。 - **风险与回滚:** 纯文档、README、changeset 与两处代码注释(`packages/spec` 一行 `//` 注释,`ui/` 三个文件的注释),不改任何行为;回滚即还原本 PR。`skills/**` 为 Tier H。 - **先看:** `packages/metadata/README.md`(唯一删掉一张表的地方)、`skills/objectstack-data/references/data-hooks.md`(「Why so few?」那条说明)、`content/docs/api/error-catalog.mdx` 首句。 - **两分钟验证:** `node scripts/check-skills-token-ratchet.mjs`,预期最后一行 `✓ check-skills-token-ratchet: 84 authored bundle file(s) within their ceilings`。 - **需要你做的:** `skills/**` 是 Tier H,落地需 os-zhuang 或 hotlong 批准;其余由席位落地。 ## What changes Rule applied, from the triage ruling: delete the number, or point at the source of truth; a count that matters is generated or pinned by an existing gate; no new gate. ### The card's Inventory table, every row taken | File | Was | Now | |:--|:--|:--| | `skills/objectstack-data/SKILL.md` L41, L297 | 49 field types | the names stay; the table in `rules/field-types.md` is the pointer | | `skills/objectstack-data/rules/field-types.md` L9 | 49 available options | the available options | | `skills/objectstack-data/SKILL.md` L46 | the 8 lifecycle events | the lifecycle events | | `skills/objectstack-data/references/data-hooks.md` L10, L31, L46 | 8 lifecycle events; "Why only 8?" | lifecycle events; "Why so few?" (the explanation of why `find` is the only read event stays) | | `skills/objectstack-automation/SKILL.md` L54 | 20 built-in node types | built-in node types (the node tables follow) | | `skills/objectui/README.md` L58 | Plugins (18) | Plugins (the names follow) | | `skills/objectui/guides/schema-expressions.md` L231 | 30 functions | "the whole registry" (the function table above it is the enumeration) | | `content/docs/capabilities/views.mdx` L30 | 36 built-in tokens | built-in tokens | | `content/docs/releases/implementation-status.mdx` L45 | 14 lifecycle events | the lifecycle events that actually fire (a living status page per triage, not a release note) | | `docs/qa/platform-checklist/README.md` L374 | 49 field types, 20 chart types | field types, chart types (the gate-pinned `enumSource.expect` is untouched) | | `examples/app-showcase/README.md` L19, L72 | all 49 field types, all 8 view types, all 38 chart types | every field type, every view type, every chart type | | `packages/metadata/README.md` L195 | 26 built-in metadata types across 6 protocol domains, plus a table | a pointer at `DEFAULT_METADATA_TYPE_REGISTRY` and `MetadataTypeSchema` (see Acceptance notes: the table was wrong, not just stale) | | `packages/metadata/ROADMAP.md` L23 | 26 built-in metadata types across 6 domains | the built-in metadata types of `DEFAULT_METADATA_TYPE_REGISTRY`, by protocol domain | | `packages/spec/PLUGIN_STANDARDS.md` L208 | 17 services across 13 plugins | services registered by plugins via `ctx.registerService()` | | `ui/packages/i18n/README.md` L3, L7 | 10 built-in locales | built-in locales (L7 still lists them) | ### The wider re-sweep (sites the card did not list) Patterns: a digit, a `N+`, a parenthesised `(N)` or a spelled-out number before an inventory noun, over `skills/**`, `content/docs/**`, `docs/qa/**`, `examples/**`, package READMEs, `ui/**` READMEs, and `.describe()` / JSDoc / code comments in `packages/spec/src` and `ui/packages/*/src`. - `skills/objectstack-query/SKILL.md` L238: "The six functions (…)" → "The functions (…)". - `skills/objectui/guides/plugin-development.md` L95: "The eleven control kinds" → "The control kinds" (a code comment inside the guide). - `content/docs/capabilities/index.mdx`: "40+ field types", "Nine lenses", "Five trigger styles", "Seven approver styles, four decision modes"; `data.mdx` L4 "40+ field types"; `approvals.mdx` L4, L10, L26 (two headings: "seven resolution styles", "four decision modes"; no page linked those anchors, `check:doc-anchors` green); `automation.mdx` L4 "Five trigger styles"; `analytics.mdx` L4, L12, L29 "~20 / roughly twenty chart families", "four report shapes". - `content/docs/frontend/plugins/index.mdx` L24 "14+ official plugins" (18 exist); `frontend/architecture-overview.mdx` L317–L330 "20+ hooks", "91+ Shadcn UI atoms", "35+ field renderers", "20 plugin packages", "(15 more)". - `content/docs/protocol/objectql/index.mdx` L114 and `schema.mdx` L1036 "20+ field types"; `query-syntax.mdx` L350, L1217 "all five drivers", L1041 "All six functions". - `content/docs/plugins/packages.mdx` L7 "72 package manifests", L27 "all 15 protocol domains"; `protocol/kernel/config-resolution.mdx` L149 "19 types"; `api/error-catalog.mdx` L7 "9 error categories and 56 error codes" (the page itself is the catalogue; no gate pins either number). - `examples/app-todo/README.md` L51 "20+ fields", L66 "Actions (8)", L73 "4 Key Metrics", L77 "Reports (5)", L84 "Automation Flows (4)"; `examples/app-showcase/README.md` L159 "six protocol domains". - `ui/packages/components/README.md` L9 "60+ Components (46 from Shadcn + 14 custom)"; `ui/apps/console/README.md` L11 "15+ view plugins"; `ui/packages/types/README.md` L409 "50+ members"; `ui/packages/plugin-grid/README.md` L101 "20 values and 29 types"; `ui/packages/plugin-form/README.md` L968 "all five renderers"; `ui/packages/fields/README.md` L344, L354 "All four widgets", "all eight read sites across the four widgets"; `ui/packages/i18n/README.md` L359 "three functions". - Code comments: `packages/spec/src/kernel/metadata-plugin.zod.ts` L82 "`hook` (24 lifecycle events)" (`HookEvent` declares eight); `ui/packages/app-shell/src/views/metadata-admin/i18n.ts` L6, L735 and `registry.ts` L7 "27 metadata types" (`MetadataTypeSchema` declares 31); `ui/packages/i18n/src/namespaces/studio/zh.ts` L3190 "the other 21 node types". Comments only; no string a user sees carried a count. ### Kept, by name - `content/docs/api/plugin-endpoints.mdx` L129 "all 12 routes": pinned by the cloud repo's `ai-route-ledger.ts` conformance test the sentence cites. - `content/docs/api/client-sdk.mdx` L916 and `packages/client/CLIENT_SPEC_COMPLIANCE.md` L10 "27 routes": a dated audit measurement. - `content/docs/ui/create-vs-edit-form.mdx` L92 "all 40 fields", `protocol/kernel/index.mdx` L164 "200+ plugins" and L233 "15 languages": hypotheticals, not inventories. - `content/docs/frontend/plugins/plugin-editor.mdx` L73 and `plugins/index.mdx` L169 "100+ languages": Monaco's inventory, not ours. - `examples/README.md` L14, `examples/app-crm/README.md` L5 and `getting-started/examples.mdx` L240–L244 ("10+ objects", "15+ actions per domain", "5 AI agents"): HotCRM, an external repository. - `skills/objectstack-i18n/SKILL.md` L242–L244 ("2-3 locales", "5-20 objects"): sizing thresholds, not counts. - `ui/packages/fields/src/widgets/number-format.ts` L273 "10 locales x 18 values x 4 precisions": a recorded measurement. - Counts of two or three that structure the paragraph enumerating them ("three run modes", "Three view kinds", "Three action types", "two channels") in `skills/**`: left as written. - Everything on the card's own out-of-scope list: release notes and CHANGELOGs, `docs/audits/**`, `ui/docs/**` (ADRs, audits, design, RFCs), `packages/spec/DEVELOPMENT_PLAN.md`, `packages/core/PHASE2_IMPLEMENTATION.md`, `packages/spec/liveness/README.md`, `content/docs/permissions/system-context.mdx`, sample CLI output, the computed "10 skills" and generated "106 components", `skills/objectstack-ai/SKILL.md` L87. ### Skills readings (Tier H, `skills/**`) Deletion only. Lines are unchanged in every touched file (no re-wrap); tokens are `ceil(utf8 bytes / 4)` on the whole file, stamp line included. | File | Lines before → after | Tokens before → after | |:--|:--|:--| | `skills/objectstack-data/SKILL.md` | 472 → 472 | 6111 → 6106 | | `skills/objectstack-data/rules/field-types.md` | 320 → 320 | 3151 → 3151 (one word swapped, equal bytes; ceiling 3158, PR #27475's seven-token headroom there is intact) | | `skills/objectstack-data/references/data-hooks.md` | 973 → 973 | 10066 → 10064 | | `skills/objectstack-automation/SKILL.md` | 452 → 452 | 6454 → 6453 | | `skills/objectstack-query/SKILL.md` | 403 → 403 | 4173 → 4172 | | `skills/objectui/README.md` | 64 → 64 | 729 → 728 | | `skills/objectui/guides/schema-expressions.md` | 642 → 642 | 6571 → 6565 | | `skills/objectui/guides/plugin-development.md` | 482 → 482 | 4184 → 4183 | Whole package: the sum of every `SKILL.md` is 4610 → 4610 lines; the ratcheted authored bundle is 207857 → 207840 tokens (the gate's own figure after: `ratcheted (authored) 207840 / 217474`). `@objectstack/skills` patch changeset: `.changeset/27522-inventory-counts.md`. ## Tests None added or changed: the diff is prose, READMEs, one changeset and four code comments. No behaviour is tested by a count. ## Acceptance notes - `packages/metadata/README.md`'s table was not merely stale. It listed `validation`, `theme`, `workflow`, `trigger`, `schedule`, `manifest`, `permission_set`, `role`, `profile`, `rag_pipeline`, `model` and `prompt`, none of which is in `MetadataTypeSchema` (31 names on `main`), and the spec's own comment says there is no `trigger` and no `validation` metadata type. Keeping those names would have taught the wrong thing, so the rule's second arm applies: the section now points at the registry and keeps no copy. - Serial constraint with PR #27475 (edits `skills/objectstack-data/rules/field-types.md` L181): this PR edits L9 only; the branch is on today's `main` tip (`aef631b8`, which is an ancestor of this head), so there was nothing to merge. - Out of scope, noted and not filed (carrier: none): `ui/packages/plugin-grid/README.md` keeps a hand-written export list under "The complete public surface"; nothing reads it against `src/index.ts`. Same class as this card, a different remedy (generate or delete the list), and not a count. - Cross-lane per triage 6495060086: one PR carries the skills, devx, server, spec, ui and example halves; the claim declares the other lanes' files; the extra sites above are named here as the seat asked. ## Verification Local gates, run at `93c9b71f`, every exit code captured before any pipe: - `node scripts/check-skills-token-ratchet.mjs` → exit 0 (`✓ check-skills-token-ratchet: 84 authored bundle file(s) within their ceilings; 10 generator-owned file(s) measured, not ratcheted.`), plus `--self-test` → 0. - `pnpm --filter @objectstack/spec build && check:generated` → `✓ All 14 generated artifacts are up to date` (check:docs, check:skill-docs, check:skill-refs, check:api-surface, check:authorable-surface, check:export-origins, check:liveness, check:strictness-ledger, check:meta-url-spelling all ✓); `check:llms-txt` → 0. - `pnpm check:doc-anchors`, `check:doc-authoring`, `check:doc-frontmatter`, `check:docs-audit-scope`, `check:docs-single-h1`, `check:docs-spec-enumerations`, `check:docs-redirects`, `check:nul-bytes`, `check:issue-citations`, `check:release-notes`, `check:release-page-status`, `check:closed-ceremony-text`, `check:published-readme-links`, `check:skill-compatibility`, `check:skill-frame-sync`, `check:skill-identifier-liveness`, `check:pm-skill-id-lint`, `check:org-identifier`, `check:keyed-text-bounds`, `check:corpus-claim-drift`, `check:role-word`, `check:pm-prior-rulings`, `check:platform-checklist`, `check:examples-live-imports`, `check:spec-docblock-symbol-anchors`, `check:overlay-whitelist-table`, `check:system-context-census`, and the `node scripts/check-*.mjs` docs families the derivation named → all exit 0. - NOT MEASURED locally, prerequisite not met (exit 3), left to CI: `check:i18n` (needs the built CLI), `check:docs-transcript-drift` (needs `@objectstack/lint` built), `check:skill-examples` (needs `packages/client-react/dist`); `pnpm --filter @object-ui/i18n type-check` and `@object-ui/app-shell type-check` stop on the unbuilt `ui/packages/core` and `@object-ui/fields` closure (the diff in those packages is comments only); every other family in `dispatch-gates --commands` (repo-wide scans such as `pnpm lint`, the `ui/` test and build lanes, Test Core) is CI's run and is cited from this PR's check-runs. - `node scripts/pm/dispatch-gates.mjs --ran` over the recorded subset: see the os-dev-report comment on the card for the reconciliation line. ## Human Minimum - [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic. (one `//` comment changed) - [x] 2. Every name I added uses the casing for its kind. (no names added) - [x] 3. No formatter ran; `pnpm lint` is CI's run. - [x] 4. One issue, one branch off an up-to-date `main`, one pull request. - [x] 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. - [x] 6. `packages/spec` touched: `check:generated` reports all 14 artifacts current; nothing to regenerate for a comment. - [x] 7. No hand edits to `content/docs/references/` or `packages/*/CHANGELOG.md`; `content/docs/releases/implementation-status.mdx` is the one releases-tree file, a living status page the card and triage put in scope, in a docs-only PR. - [x] 8. Title, body and comments are in English. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW --- _Generated by [Claude Code](https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6ca1a47 commit 72b08ee

40 files changed

Lines changed: 97 additions & 83 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
'@objectstack/skills': patch
3+
'@objectstack/spec': patch
4+
'@objectstack/metadata': patch
5+
'@object-ui/i18n': patch
6+
'@object-ui/plugin-grid': patch
7+
'@object-ui/components': patch
8+
'@object-ui/fields': patch
9+
'@object-ui/types': patch
10+
'@object-ui/plugin-form': patch
11+
'@object-ui/console': patch
12+
---
13+
14+
docs(skills): hand-written inventory counts are deleted; the names and the source of truth stay
15+
16+
Clause-②: no
17+
Metadata-protocol: none
18+
19+
- **Before.** `objectstack-data` counted its field types ("49") in SKILL.md and in `rules/field-types.md`, and its lifecycle events ("8") in SKILL.md and `references/data-hooks.md`; `objectstack-automation` counted its built-in node types ("20"); `objectui/README.md` counted its plugins ("18"); `objectui/guides/schema-expressions.md` counted the formula registry ("30 functions"); `objectstack-query` counted the aggregate functions ("six"). No gate reads any of those numbers against the tree, so each one goes wrong the moment the inventory moves, and a wrong count misleads the reader more than no count.
20+
- **Now.** The numbers are gone; every enumeration that taught something (the node-type tables, the plugin names, the function table, the aggregate names) stays, and each page still points at the file or schema that is the source of truth. Deletion only: every touched file shrinks under its unchanged token ceiling.
21+
- The same deletion in shipped READMEs and one shipped source comment: `@objectstack/spec` (a `//` comment in `src/kernel/metadata-plugin.zod.ts`, which ships), `@objectstack/metadata` (README), and the `@object-ui/*` READMEs of i18n, plugin-grid, components, fields, types, plugin-form and console. No schema, key or behaviour changes.

‎content/docs/api/error-catalog.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ navTitle: Error Code Catalog
44
description: Complete reference for all ObjectStack error codes with causes, fixes, and retry strategies
55
---
66

7-
ObjectStack uses a structured error system with **9 error categories** and **56 error codes reachable on the wire**. Every error includes a machine-readable code, HTTP status mapping, and retry guidance.
7+
ObjectStack uses a structured error system of **error categories** and **56 error codes reachable on the wire**, catalogued in full below (that count is pinned by `packages/spec/src/api/error-catalog-docs.test.ts` against the wire face). Every error includes a machine-readable code, HTTP status mapping, and retry guidance.
88

99
This catalog documents the **wire face** — the codes a client can actually receive. That is not quite the
1010
`StandardErrorCode` enum: the enum also carries in-process spellings the REST door translates at the

‎content/docs/capabilities/analytics.mdx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
---
22
title: Analytics — dashboards, reports and charts
33
navTitle: Analytics & Dashboards
4-
description: ~20 chart families, period-over-period comparison, runtime filters, TV display pages, and four report shapes
4+
description: Chart families, period-over-period comparison, runtime filters, TV display pages, and the report shapes
55
---
66

77

88
The executive cockpit and the ops detail report are both configured, not built. Data is live, and permissions apply inside every chart — each viewer sees only the numbers they are allowed to see.
99

1010
## Dashboards
1111

12-
Compose from roughly twenty chart families:
12+
Compose from the chart families:
1313

1414
- **Single values**: KPI tiles, gauges, progress rings — total pipeline, quarter-to-date closed, target attainment.
1515
- **Comparisons**: bar and column by stage, rep, or product line.
@@ -26,7 +26,7 @@ Dashboard extras that matter in practice:
2626

2727
## Reports
2828

29-
Four shapes — **tabular** (detail rows), **summary** (grouped totals), **matrix** (regions × quarters), and **joined** (several dataset panels) — with runtime filters and export.
29+
The shapes — **tabular** (detail rows), **summary** (grouped totals), **matrix** (regions × quarters), and **joined** (several dataset panels) — with runtime filters and export.
3030

3131
> **In HotCRM**: four dashboards (executive, sales, service, CRM overview) and six reports (lead, opportunity, account, case, churn), fed by six shared datasets covering accounts, contacts, leads, opportunities, products, and cases. The executive dashboard carries quarter and owner filters plus the funnel and trend widgets described above.
3232

‎content/docs/capabilities/approvals.mdx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
22
title: Approvals — routing, queues and audit trail
33
navTitle: Approvals
4-
description: Seven ways to pick approvers, four decision modes including group sign-off, record locking, overdue escalation, and send-back-for-revision
4+
description: Ways to pick approvers, decision modes including group sign-off, record locking, overdue escalation, and send-back-for-revision
55
---
66

77

88
Discounts, contracts, spend — anything that needs a human "yes" becomes an approval step in a flow, replacing the group-chat shoulder tap with a tracked, enforceable decision.
99

10-
## Who approves — seven resolution styles
10+
## Who approves — the resolution styles
1111

1212
A specific person · everyone holding a position (e.g. sales managers) · the submitter's direct manager (needs each user's manager set — see below) · a team · a department (optionally including sub-departments) · organization leadership · **a person named on the record itself** (e.g. the "regional director" field).
1313

@@ -23,7 +23,7 @@ request opens and waits for an administrator. The details, and the fallback that
2323
data at all, are in [Automation → Approvals](/docs/automation/approvals).
2424
</Callout>
2525

26-
## How it passes — four decision modes
26+
## How it passes — the decision modes
2727

2828
| Mode | Rule | Fits |
2929
|---|---|---|

‎content/docs/capabilities/automation.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Automation — processes that run themselves
33
navTitle: Automation — Processes That Run Themselves
4-
description: Five trigger styles, visual flow diagrams, notifications, branching, loops, waits, and external calls — the work nobody should have to remember
4+
description: Trigger styles, visual flow diagrams, notifications, branching, loops, waits, and external calls — the work nobody should have to remember
55
---
66

77

‎content/docs/capabilities/data.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Business data — objects, fields and records
33
navTitle: Manage Business Data
4-
description: Objects, 40+ field types, auto-computed fields, and relationships — every spreadsheet you run the business on, structured and governed
4+
description: Objects, field types, auto-computed fields, and relationships — every spreadsheet you run the business on, structured and governed
55
---
66

77

‎content/docs/capabilities/index.mdx‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ If you are a developer, the [Build sections](/docs/data-modeling) cover the same
1212
## The capabilities
1313

1414
<Cards>
15-
<Card href="/docs/capabilities/data" title="Manage Business Data" description="Objects, 40+ field types, formula and roll-up fields, relationships from lookups to hierarchies" />
16-
<Card href="/docs/capabilities/views" title="Views — See Data Your Way" description="Nine lenses over the same records: table, kanban, calendar, gantt, map and more — plus saved filters and global search" />
15+
<Card href="/docs/capabilities/data" title="Manage Business Data" description="Objects, field types, formula and roll-up fields, relationships from lookups to hierarchies" />
16+
<Card href="/docs/capabilities/views" title="Views — See Data Your Way" description="Many lenses over the same records: table, kanban, calendar, gantt, map and more — plus saved filters and global search" />
1717
<Card href="/docs/capabilities/forms" title="Forms & Data Quality" description="Wizards, conditional fields, validation on save, legal stage transitions, public web-to-lead forms" />
18-
<Card href="/docs/capabilities/automation" title="Automation" description="Five trigger styles and visual flows: reminders, hand-offs, escalations, and scheduled work that runs itself" />
19-
<Card href="/docs/capabilities/approvals" title="Approvals" description="Seven approver styles, four decision modes including group sign-off, locking, SLA escalation, send-back" />
20-
<Card href="/docs/capabilities/permissions" title="Permissions — Who Sees What" description="Four layers from object capability to per-field visibility, five data-depth scopes, audit, and an explain API" />
21-
<Card href="/docs/capabilities/analytics" title="Analytics & Dashboards" description="~20 chart families, period-over-period, runtime filters, TV display pages and reports" />
18+
<Card href="/docs/capabilities/automation" title="Automation" description="Trigger styles and visual flows: reminders, hand-offs, escalations, and scheduled work that runs itself" />
19+
<Card href="/docs/capabilities/approvals" title="Approvals" description="Approver styles and decision modes including group sign-off, locking, SLA escalation, send-back" />
20+
<Card href="/docs/capabilities/permissions" title="Permissions — Who Sees What" description="Layers from object capability to per-field visibility, data-depth scopes, audit, and an explain API" />
21+
<Card href="/docs/capabilities/analytics" title="Analytics & Dashboards" description="Chart families, period-over-period, runtime filters, TV display pages and reports" />
2222
<Card href="/docs/capabilities/ai" title="AI Under Governance" description="Ask questions and get charts; AI acts under the same permissions and audit as people; bring your own agent over MCP" />
2323
<Card href="/docs/capabilities/integrations" title="Integrations & Everyday Work" description="Import/export, generated APIs, webhooks, connectors, federated databases, marketplace templates, languages" />
2424
<Card href="/docs/capabilities/request-template" title="How to Request Features" description="A one-page template that turns business needs into configuration — hand it to your team or an AI agent" />

‎content/docs/capabilities/views.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ One object can carry many named views at once — "My open deals (table)", "East
2727

2828
- **Global search** (`⌘K`) spans objects and understands partial matches — including **pinyin search**, so typing `zhangsan` finds 张三.
2929
- **Filters** combine any fields with and/or logic and a full operator set (equals, contains, greater than, between, is empty…).
30-
- **Relative dates**: "this quarter", "last month", "past 7 days", "next 30 days" — 36 built-in tokens plus custom offsets. A saved view filtered on "this quarter" rolls forward every day by itself.
30+
- **Relative dates**: "this quarter", "last month", "past 7 days", "next 30 days" — built-in tokens plus custom offsets. A saved view filtered on "this quarter" rolls forward every day by itself.
3131
- **Per-person scoping**: views like "My accounts" or "My team's opportunities" resolve per viewer automatically, following the permission model.
3232

3333
> **In HotCRM**: twelve view files cover every object — open the Opportunity object and switch between its pipeline kanban, forecast table, and close-date calendar to feel the difference lenses make.

‎content/docs/frontend/architecture-overview.mdx‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,20 +314,20 @@ packages/
314314
│ ├── SchemaRenderer.tsx
315315
│ ├── LazyPluginLoader.tsx
316316
│ ├── context/ # All React contexts
317-
│ └── hooks/ # 20+ hooks (useExpression, useActionRunner, etc.)
318-
├── components/ # 91+ Shadcn UI atoms
319-
├── fields/ # 35+ field renderers
317+
│ └── hooks/ # Hooks (useExpression, useActionRunner, etc.)
318+
├── components/ # Shadcn UI atoms
319+
├── fields/ # Field renderers
320320
├── layout/ # AppShell, Header, Sidebar
321321
├── i18n/ # Internationalization
322322
├── auth/ # AuthContext + providers
323323
├── permissions/ # RBAC/ABAC
324-
└── plugin-*/ # 20 plugin packages
324+
└── plugin-*/ # Plugin packages
325325
├── plugin-grid/
326326
├── plugin-kanban/
327327
├── plugin-charts/
328328
├── plugin-dashboard/
329329
├── plugin-form/
330-
└── ... (15 more)
330+
└── ...
331331
```
332332

333333
## Further Reading

‎content/docs/frontend/plugins/index.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Plugins are lazy-loaded component packages that:
2121

2222
## Official Plugins
2323

24-
ObjectUI provides 14+ official plugins for common use cases:
24+
ObjectUI provides official plugins for common use cases:
2525

2626
### Data Visualization & Dashboards
2727

0 commit comments

Comments
 (0)