Repository navigation
feat: slim desktop updates, cached capabilities, and current CE features - #223
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| p = Path(value) | ||
| text = p.read_text(encoding="utf-8") if p.is_file() else value |
There was a problem hiding this comment.
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 👍 / 👎.
| if tax_id and inv.get("buyer_tax_id") and inv["buyer_tax_id"].upper() != tax_id: | ||
| issues.append(f"税号不符:{inv['buyer_tax_id']}") |
There was a problem hiding this comment.
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 👍 / 👎.
| 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)] |
There was a problem hiding this comment.
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 👍 / 👎.
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
Validation