Skip to content

Remove explicit pnpm version from workflows to fix version conflict - #7

Merged
huangyiirene merged 2 commits into
mainfrom
copilot/update-action-workflow-file
Jan 18, 2026
Merged

huangyiirene merged 2 commits into
mainfrom
copilot/update-action-workflow-file

Conversation

Copilot AI commented Jan 18, 2026 •

Copy link
Copy Markdown
Contributor

The CI workflow failed because pnpm/action-setup@v4 detected conflicting versions: version: 10 in the workflow config vs "packageManager": "pnpm@10.28.0" in package.json.

Changes

  • Removed version: 10 from pnpm/action-setup@v4 in both CI and release workflows
  • The action now uses the version specified in package.json's packageManager field (10.28.0)
# Before
- name: Install pnpm
  uses: pnpm/action-setup@v4
  with:
    version: 10

# After
- name: Install pnpm
  uses: pnpm/action-setup@v4

Reference: https://github.com/objectstack-ai/spec/actions/runs/21110164385/job/60707559636#step:4:1

Original prompt

引用: https://github.com/objectstack-ai/spec/actions/runs/21110164385/job/60707559636#step:4:1


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Copilot AI changed the title [WIP] Update action workflow file for improvements Remove explicit pnpm version from workflows to fix version conflict Jan 18, 2026
Copilot AI requested a review from huangyiirene January 18, 2026 10:27
@huangyiirene
huangyiirene marked this pull request as ready for review January 18, 2026 10:56
@huangyiirene
huangyiirene merged commit de36919 into main Jan 18, 2026
1 check passed
xuyushun441-sys added a commit that referenced this pull request Jun 3, 2026
…d read-only permission allowlist (#1555)

AGENTS.md:
- Drop the stale ".github/copilot-instructions.md mirror" instruction — that
  file doesn't exist, and Copilot (coding agent + CLI, since Aug 2025) reads
  AGENTS.md natively. Single source of truth for all agents.
- Multi-agent discipline: prefer one git worktree per agent/task for physical
  isolation; frame the defensive rules as the shared-working-tree fallback.
- Add rule #7: merge only after remote CI is green, never `gh pr merge --auto`
  (#1475 — auto-merge can land a red PR on shared main).

.claude/settings.json (new, committed/shared):
- Read-only permission allowlist derived from recent transcript usage, so
  parallel agents prompt less. Browser/preview observation tools
  (screenshot/snapshot/logs/network/list) + `agent-browser snapshot|skills`.
- Deliberately excludes mutating/arbitrary-exec calls (preview_eval, click,
  fill, start/stop, pnpm, node, npx) and anything Claude Code already
  auto-allows (git/gh read-only, grep, cat, ls, …).

Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
xuyushun441-sys added a commit that referenced this pull request Jun 13, 2026
#1821)

Small models (e.g. claude-haiku) sometimes answered a "draw a bar chart"
request with a markdown TABLE — running query_data/aggregate_data and
formatting the numbers — instead of calling visualize_data. This was a
tool-selection problem, not a capability gap: the chart preference was buried
as guideline #7 and competed with guideline #4 ("format with markdown
tables").

- data-explorer-skill.ts: add a prominent "Choosing the right tool" section
  ABOVE the guidelines — chart intent (incl. CN terms 图表/柱状图/折线图/饼图/画图)
  → MUST call visualize_data; never substitute a table; reconcile the
  table-formatting guideline; fix duplicate guideline numbering.
- visualize-data.tool.ts: strengthen the tool description to be imperative
  ("the ONLY tool that draws a chart… you MUST call this, not a table; if you
  already fetched the numbers, still call visualize_data to render them").

Prompt-only tuning — no behavior/contract change. Raises the likelihood the
model reaches for visualize_data on a plain chart request without an explicit
"use visualize_data" nudge.

Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
os-zhuang added a commit that referenced this pull request Jun 28, 2026
…ta-protocol name; no rename) (#2431)

Per maintainer decision: keep the already-published `@objectstack/metadata-protocol`
package name. Renaming churns downstream for ~0 benefit. The `protocol` suffix is a
deliberate, low-cost naming exception — the real contract lives in
`@objectstack/spec/api`, not the impl package.

- D10: replace the "rename → metadata-runtime" clause with "name retained; content
  converges to the metadata-management impl".
- Open Question #7: resolved (keep the name; README note to clarify impl-vs-contract).
- Status: rev.8; notes D9 step-1 (interface segmentation) shipped in #2429.

Docs only; empty changeset.

Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
os-zhuang added a commit that referenced this pull request Jul 27, 2026
…ions (#3563 PR-2) (#3571)

Closes the largest gap in the #3563 route audit: the whole /actions domain —
the documented way to expose custom server-side operations
(engine.registerAction) — had no SDK expression at all, so every console
hand-rolled fetch for it.

- client.actions.invoke(object, action, { recordId, params }) — POST
  /api/v1/actions/:object/:action. recordId travels in the body, which both
  server URL shapes honor. The path is fixed (not discovery-routed): actions
  is not in ApiRoutesSchema, same precedent as projects' /api/v1/cloud.
- client.actions.invokeGlobal(action, opts) — the wildcard
  /actions/global/:action shape.
- The handler's own business failure surfaces as { success:false, error }
  (the dispatcher's inner envelope), deliberately not thrown, so callers can
  toast it. Unit tests cover URL shape, encoding, body defaults, the global
  variant, and the inner-failure path.

Ledger: all three /actions rows flip to sdk; the gap ratchet drops 27 → 24 —
first real exercise of the PR-1 guard.

Documentation stops lying (audit findings):
- client README: the six phantom methods are gone (meta.getObject,
  views.share, views.setDefault, workflow.approve/reject, ai.chat — replaced
  with the real calls where one exists), and the hand-written "all 13
  namespaces / FULLY COMPLIANT" claims now defer to the CI-enforced ledger.
- CLIENT_SPEC_COMPLIANCE.md: retired to a tombstone. Its verdict was measured
  against DEFAULT_DISPATCHER_ROUTES — a table nothing in runtime consumes,
  missing five of the domains it should have been measuring.
- content/docs/api/client-sdk.mdx: documents the new actions surface;
  the automation row now reflects the real method count.

Pre-existing, untouched: the bare `tsc -p` TS2741 (routeMap missing graphql)
reproduces identically on main — its root is the stale graphql entry in
ApiRoutesSchema, tracked as audit follow-up #7 (spec-major territory).

Verified: client 122 passed (5 new), runtime 653 passed, both ledger guard
halves green, eslint clean.


Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5

Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Oct 20, 2026
os-tesla pushed a commit that referenced this pull request Oct 25, 2026
…-empty body (objectui#13386) (#13483)

<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9D3jMyxwR7kHLu9j9TjYFimf)_

Fixes #13386
Fixes #12618

Seat: domain:ui#4 · card thread `session_01AqaieDWuDnBRyh3u8epGx6` ·
claim 6391455338
Ruling-ref: 6369306878 (batch #7 item 4, letter C)
Clause-②: no · Metadata-protocol: semantic (the spec side landed as
#25612)

## What changes

Ruling C: in read-only mode an all-empty section that the page keeps
draws its heading plus ONE "Show N empty fields" row, the same toggle a
partly-filled section uses, instead of one em-dash row per field. Edit
mode is unchanged, and a body whose sections are all empty folds once
more (item 2 of #12618).

| Where | Before | After |
|---|---|---|
| `DetailSection`, all-empty section kept (`hideEmpty: false`, or
omitted where no default resolves it), read-only | heading + one `No
value` row per field | heading + one "Show N empty fields" row; the
toggle reveals the rows and "Hide empty fields" folds them back |
| same, edit mode | every field an editable row | unchanged |
| same, print page | every row prints | unchanged: every row prints, no
toggle (#12717) |
| `hideEmpty: true` all-empty section | renders nothing | unchanged |
| partly-filled section | heuristic fold (#7129 Q2-C) | unchanged |
| detail body (`DetailView` sections) where every section is empty and
at least two are kept | one folded section after another | ONE "Show N
empty fields" row for the body (new `EmptySectionsFold`); revealing it
draws each section folded on its own |

No key, shape or default moved, and no new i18n key: both rows reuse
`detail.showEmptyFields` / `detail.hideEmptyFields`. The `hideEmpty`
descriptions in `@object-ui/types` (`DetailViewSection`,
`RecordDetailsSection`, the zod mirror) and the two
`@object-ui/plugin-detail` registration texts now say what a kept
section draws.

## Readings taken (for the seat's review)

1. **"Kept" includes an omitted key where no default resolves it.** The
ruling names `hideEmpty: false`. On `detail-view`, the `detail-section`
node and the `record:details` direct-`fields` fallback, omitted already
meant the same as `false` (keep), and their descriptions said so. The
fold keeps them equal, so the test is "kept" (`!hideAllEmptySection`),
not `=== false`. On `record:details` authored sections nothing changes
for an omitted key: it still resolves `?? true` and hides.
2. **Copy.** The ruling's 「N 个空字段 · 展开」 is described as "the same fold
the mixed sections use", so the row is that fold's existing copy: `Show
4 empty fields` (en), `显示 4 个空字段` (zh). No new string.
3. **Body fold threshold.** The body folds only when every section that
draws anything is all-empty AND at least two are kept: one kept section
is already one row, so folding it again would only drop its heading.
Section groups (`sectionGroups`) turn the body fold off, as they draw
fields of their own beside the sections. A malformed section (no field
array, or a read that throws) turns it off too, so each section still
renders or fails inside its own boundary (#8497).

## Tests

- New:
`packages/plugin-detail/src/__tests__/DetailSection.allEmptyFold-13386.test.tsx`
— the 「交易说明」 fixture: heading + one "Show 4 empty fields" row and no
em-dash; reveal and fold back; untitled section; `hideEmpty: true`
control; edit mode draws four textboxes and no fold; print page prints
four rows; mixed sections (small and large) unchanged; body fold counts
8 over three sections, reveals each section folded, folds back; controls
for a filled field anywhere, a single kept section, edit mode and print
page; `emptySectionsFoldCount` rules including malformed sections.
- Reverse check: with `DetailSection.tsx` at base, 6 of the new file's
cases go red (the edit-mode, print, mixed and count cases stay green, as
they pin unchanged behaviour).
- Updated pins that read an all-empty kept section's rows, now through
the fold: `record-details.hideEmptyRetired-7129` 4/4(b),
`record-details.emptySectionDefault` (`false` keeps; direct-`fields`
fallback), `detailSectionAuthoredHideEmpty-10485`, the AMPLIFICATION
cases of `DetailSection.emptyArray-8474` and
`DetailSection.emptinessAuthority-8376` (now: the fold counts all four
rows, so the empty value is not counted as filled),
`inlineCredentialGate` (`signature`'s empty sample reveals the fold
before reading the pencil),
`record-details.unresolvedIdentityFailClosed-9054` (the legacy
`fieldName` entry survives as "Show 1 empty field").

## Verification (local)

- `pnpm exec vitest run packages/plugin-detail/ packages/types/` — green
after the pin updates (the first full run surfaced the six pins above;
their files re-run green: 132 passed).
- `pnpm --filter @object-ui/plugin-detail type-check`, `pnpm --filter
@object-ui/types type-check` — clean.
- `pnpm --filter @object-ui/plugin-detail lint` — 0 errors.
- `check:new-line-citations` 0 new · `check:doc-json` ·
`check:doc-fences` · `check:control-bytes` · `check:i18n-keys` ·
`check-changeset-presence` — pass.
- `node scripts/check-governed-queue-guard.mjs --test <diff>` — NOT
GOVERNED.
- NOT MEASURED: `check:doc-snippets` / `check:doc-examples` (need the
whole build; CI runs them). NOT MEASURED: screenshots of the HotCRM
opportunity record at 1280 px (#12618 acceptance 2), reason: no HotCRM
console stack in this container; the 「交易说明」 case is pinned in the DOM
test above.

## Acceptance notes

- The `hideEmpty` describe text on the installed spec pin still carries
the pre-#25612 wording; the next pin move picks up the ruled text.
Nothing here reads that prose.

- [x] Adds no product-specific widget, dialog, hook or string (see
AGENTS.md › Product-neutral renderer)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01AqaieDWuDnBRyh3u8epGx6

---------

Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants