Skip to content

feat: persistent sandbox snapshots and design workflow skills - #222

Merged
Luhaozhu merged 1 commit into
mainfrom
sync/ce-20261104-sandbox-design
Nov 6, 2026
Merged

Luhaozhu merged 1 commit into
mainfrom
sync/ce-20261104-sandbox-design

Conversation

@Luhaozhu

@Luhaozhu Luhaozhu commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

This sync updates the generated Community Edition with persistent sandbox snapshot jobs, new design and office workflow skills, configurable login branding, and clearer Personal Agent questions and recovery actions.

Changes:

  • Persist snapshot attempts and deletion retries; keep idle sessions alive while snapshots run and discard snapshots when the conversation becomes active again.
  • Add eleven design and workflow marketplace skills, their licensed assets, and regression tests. Retire twenty-four skill packages and seventeen agent templates, and remove stale capability references.
  • Configure login logos and backgrounds from page settings, and load cached branding before the first rendered frame.
  • Display task questions in the chat question card and queue recoverable failures for individual action.
  • Include the CE migration for snapshot jobs and update bilingual sandbox configuration documentation.

Validation:

  • CE required-file, forbidden-content, reviewed binary hash, brand, and license gates passed.
  • Isolated CE import/OpenAPI/ORM and CE release regression checks passed. The Python checks bypass the development editable install so private edition modules cannot leak into the check environment.
  • CE frontend production build passed with Node 22.
  • Targeted sandbox, design/workflow, and login checks: 65 passed. Marketplace checks: 28 passed. Personal Agent attention browser regression passed.
  • Full frontend lint retains the existing baseline of 245 errors and 21 warnings.
  • A separate full local-profile run reports an existing stale assertion that core.auth.edition must be absent. The CE intentionally provides its single-owner adapter at that module; the dedicated CE isolation contracts pass.

Generated from the private source using the standard CE manifest and overlay. Only the derived CE tree is included. No private deployment configuration or credentials are published.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 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-03T15:48:45.656411Z f4d0c3d 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: f4d0c3dcfc

ℹ️ 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 +93 to +96
spent[cat] = round(spent.get(cat, 0.0) + total, 2)
limit = limits.get(cat)
if limit is not None and spent[cat] > float(limit):
issues.append(f"超标:{cat}累计 {spent[cat]} 元,限额 {limit} 元")

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 Exclude over-limit invoices from the accepted running total

When an invoice exceeds its category limit, its amount remains in spent even though the invoice is marked 需处理 and excluded from the reimbursable total. For example, with a limit of 100 and otherwise valid invoices for 80, 30, and 10, the script rejects both 30 and 10, although the accepted invoices could total 90. This contradicts the adjacent rule that problematic invoices should not consume the category allowance and understates the reported reimbursable amount. Calculate the prospective total first and update spent only if the invoice passes the limit check.

Useful? React with 👍 / 👎.

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 probing it as a filesystem path

In the Python 3.11 script-runner environment defined in docker/sandbox/Dockerfile.script-runner, passing a documented inline JSON array to --items or --updates raises OSError: [Errno 36] File name too long once the string exceeds the filesystem's filename limit. A normal three-item array is sufficient to reproduce this; Chinese text can reach the byte limit even sooner. Path.is_file() propagates this error on Python 3.11, and main() does not catch it, so the command aborts instead of processing the meeting. Detect inline JSON before performing the path lookup, or handle filesystem errors and fall back to JSON parsing.

Useful? React with 👍 / 👎.

@Luhaozhu
Luhaozhu merged commit a82a882 into main Nov 6, 2026
4 of 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