Workflow (流程) fields like 流转状态 are entirely outside the OpenAPI —
absent from record reads and silently ignored on writes (confirmed by
Feishu engineers in larksuite/openclaw-lark#35). To advance them without
leaving the app, the record page can now be rendered in an embedded
WKWebView window:
- FeishuWebView (persistent cookie store, feishu:// links routed to the
system) in a reusable 1100x800 window via AppDelegate.openWebWindow
- Entry points: "Open in App" toolbar button in the detail view and
"Open in App (Web)" in the popover row context menu
- Web content pins a min size — a bare WKWebView in a hosting controller
collapses the window to ~1px
Also:
- Info.plist now uses $(MARKETING_VERSION)/$(CURRENT_PROJECT_VERSION) so
the project generator is the single version source (it was hardcoded
and overrode build settings)
- Version 1.5 -> 1.6
Phase 1 — read-only detail experience:
- New main window (NavigationSplitView): searchable bug list sidebar with
Active/All filter, detail pane with full metadata, description, and
per-bug Open in Feishu / Copy Link
- Popover row click now opens the in-app detail (Open in Feishu kept via
context menu and footer)
- Display extra table fields: module, source, flow status, fix notes
(new field mappings with Chinese defaults), and screenshot attachments
with in-app thumbnails (media download with bitablePerm extra auth)
- FieldMappings now decodes tolerantly so older persisted configs survive
Phase 2 — editing (status, fix notes, screenshots):
- OAuth scope upgraded from bitable:app:readonly to bitable:app
(requires re-auth; permission errors prompt to reconnect)
- Status picker driven by live field metadata (option names + colors)
- Fix notes text editor with Save/Cancel
- Add screenshots: image picker -> media upload (upload_all) -> append
file tokens to the record
- AttachmentLoader and BugEditService share one field-metadata cache
Note: flow status (流转状态) is a Bitable workflow/Stage field and cannot
be written via the OpenAPI; it stays read-only.