Skip to content

feat: slim desktop updates, cached capabilities, and current CE features - #223

Merged
Luhaozhu merged 1 commit into
mainfrom
sync/ce-20261105-desktop-updates
Nov 6, 2026
Merged

Luhaozhu merged 1 commit into
mainfrom
sync/ce-20261105-desktop-updates

Conversation

@Luhaozhu

@Luhaozhu Luhaozhu commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Sync the current CE-derived tree with public main. Desktop updates can ship a slim package while preserving a complete offline installer. Restarts restore accepted capability manifests, and disconnected cloud sessions show a reconnect notice. Automatically disabled automations can be enabled again.

Also includes changes from the still-open #222: persistent sandbox snapshot jobs, design and workflow skills, personal-agent task questions, and configurable login branding. This PR is a complete cumulative alternative to #222; review their overlap before merging.

Public repository comparison

  • Generated from private development commit 39f72a3fb using the standard CE manifest, pruning, overlays, and publication gates.
  • Compared against public main 00cac9a.
  • Replaces older marketplace skills and agent definitions with the current curated catalog. Most added lines and files are upstream design-skill resources, references, and licensed fonts.
  • Adds strict JSON persistence for retirement evidence and excludes public credential-provenance enums from secret scanning.
  • Updates release publication fixtures to use real macOS archives without weakening archive validation.
  • Does not include enterprise-only modules, local runbooks, environment files, or product-specific desktop signing configuration.

Validation

  • CE brand, forbidden-artifact, binary-allowlist, and license gates passed.
  • Isolated CE import/OpenAPI/ORM checks and CE release regressions passed.
  • 47 focused credential-safety and retirement tests passed.
  • 18 automation and capability-cache/readiness tests passed.
  • 8 desktop publication tests and 20 Node desktop-script tests passed.
  • CE frontend production build passed with Node 22.23.2.
  • Existing full-tree frontend lint reports 245 errors and 21 warnings; no lint cleanup is included.
  • Existing upstream skill/license resources contain whitespace flagged by diff checks; their original text is preserved.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T00:54:51.239601Z ffb09a6 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ffb09a6ea9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +50 to +51
p = Path(value)
text = p.read_text(encoding="utf-8") if p.is_file() else value

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Parse inline JSON before treating it as a filesystem path

On Python 3.11, the version bundled by the desktop runtime, passing a normal multi-item JSON array to --items or --updates can make Path.is_file() raise OSError: [Errno 36] File name too long before JSON parsing occurs. I reproduced this with five short meeting items. Both commands advertise inline JSON input, so ordinary meeting batches fail without updating the ledger. Parse recognizable inline JSON first, or catch filesystem errors when probing whether the argument is a filename.

Useful? React with 👍 / 👎.

Comment on lines +75 to +76
if tax_id and inv.get("buyer_tax_id") and inv["buyer_tax_id"].upper() != tax_id:
issues.append(f"税号不符:{inv['buyer_tax_id']}")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Flag a missing buyer tax ID when the policy requires one

When policy.tax_id is configured but an invoice has no buyer_tax_id, this condition silently skips the policy check. Since buyer_tax_id is also absent from REQUIRED, an otherwise complete invoice is marked 通过 and included in the reimbursable amount despite its tax identity never being verified. This is a supported input: the skill explicitly tells users to leave fields empty when the original invoice does not provide them. Record a missing-field issue when the policy requires a tax ID rather than treating the missing value as a successful check.

Useful? React with 👍 / 👎.

Comment on lines +116 to +119
unmatched = [d for d in facts["doc_no"] if d not in haystack]
unmatched += [t for t in facts["title"] if norm_num(t) not in haystack
and norm_num(t.strip("《》")) not in haystack]
unmatched += [n for n in facts["number"] if not number_in(n, haystack)]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include extracted dates in citation mismatch checks

For sentences containing a cited date, hard_facts() extracts the date and removes it from the remaining numeric facts, but this comparison never checks facts["date"]. Consequently, a sentence claiming publication in 2027年5月 is marked 已溯源 with no problems even when its only source explicitly says 2024年5月; I reproduced that case through check(). Compare the extracted dates against the cited sources before declaring the sentence verified, otherwise the report silently approves incorrect years and deadlines.

Useful? React with 👍 / 👎.

@Luhaozhu
Luhaozhu merged commit ed9253e into main Nov 6, 2026
5 checks passed
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.

1 participant