Skip to content

ONEScript v1.1.1

Choose a tag to compare

@jeremy-ones jeremy-ones released this 28 Jul 05:41

ONEScript v1.1.1

Same-version corrective replacement — 2026-07-29

The v1.1.1 asset has been replaced in place after the final workflow-guard and Dry Run corrections. The package keeps App ID LTRYTzJP and version 1.1.1.

Upgrade: update the existing application with ONEScript-1.1.1-on-prem.opk in Configuration Center. Do not uninstall and reinstall the application as a recovery procedure.

Workflow guard and Dry Run

  • Real transition parity: a real taskPreAction callback may provide the target status without old_value. changedFrom(...) and changedFromTo(...) now use the authoritative pre-action current status only when that callback value is absent; an explicit callback old_value always wins.
  • Immediate activation: creating, enabling, disabling, editing, deleting, publishing, or suspending a workflow rule completes only after the authoritative rule revision is persisted and rebuilt locally. The next workflow operation sees the new state; no cache wait, process restart, or reinstall is required.
  • Correct scoped evaluation: missing Project or Issue Type fields in the callback are resolved from the trusted current work item before exact matching. A proven non-match is allowed; only an unresolved potentially applicable guard fails closed.
  • Visible-key Dry Run: taskPreAction Dry Run keeps the raw JSON context, accepts a visible issueKey such as MHCS-67, and resolves it with an exact trusted-team lookup. Internal Team UUID and Task UUID are not required.
  • No unapproved scenario form: the temporary semantic Dry Run form/source inference was removed. Synthetic transitions continue to use raw changedFieldSnapshots.

Worklog capability

  • issue.worklog exposes registered, estimated, remaining, roll-up, variance, and progress aggregates in taskPreAction.
  • hasSpent(), hasEstimate(), and isOverEstimate() support readable workflow rules without listing or summing worklog records at callback time.
  • Scripts that do not reference issue.worklog add no worklog request; matching worklog guards share one tenant-pinned aggregate read.
  • Dry Run and real workflow callbacks use the same strict loader. Missing, malformed, incomplete, negative, non-finite, or unavailable data is never converted to zero.
  • Simple and summary detailed-record APIs remain explicit mode-specific surfaces; use the namespace matching the team's worklog configuration.
if (
  issue.status.changedFromTo('进行中', '已完成') &&
  !issue.worklog.hasSpent()
) {
  api.reject('流转至已完成前,请先登记工时。')
}

Retained reliability corrections

  • The live issue-detail success envelope { result: "SUCCESS", data: ... } is validated and worklog aggregates are read from data.
  • Admin tokens are cached by installation instance plus tenant and refreshed once only after a definitive 401/NotActive; a generic 404 is not treated as an authentication signal.
  • Scope option search follows all cursor pages.
  • Tenant storage scans use the SDK's built-in primary-key query contract rather than a synthetic __key__ index.
  • Typographic JavaScript quote delimiters produce an exact replacement diagnostic.

Verification

  • Target-tenant acceptance: a zero-worklog 进行中 → 已完成 operation is rejected with the script reason; an unrelated transition is allowed; a real visible-key Dry Run completes successfully.
  • Focused real-callback/Dry Run/worklog regression: 29/29 passed.
  • Full backend: 1,308 passed, 0 failed, 1 expected skip.
  • Full Web: 256/256 passed.
  • Deployment-profile contracts: 10/10 passed.
  • Both newly built packages passed manifest re-read, backend VM load, lifecycle export, and Install.
  • Source commit: 51591e7e6deefa1871621abd0e529cb1fecd5359.
  • On-Premises package: 3,613,968 bytes.
  • SHA-256: 7b2e36ac6686ed5b23e8c42ce8eec799a628e1dc34ac4c54d9e382d8f4627fce.