Skip to content

feat: enhance session status, file previews, open-with feature, web browser, and turn timing#1189

Merged
su8su merged 15 commits into
mainfrom
dev-zx
Jul 23, 2026
Merged

feat: enhance session status, file previews, open-with feature, web browser, and turn timing#1189
su8su merged 15 commits into
mainfrom
dev-zx

Conversation

@z0gSh1u

@z0gSh1u z0gSh1u commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Shows loading / finished status in session list
  • Introduces a simple webview-based single tab web browser
  • Supports "Open With" applications and built-in browser in both attachment and file activity cards
  • Supports docx and pptx files preview
  • Supports showing AI turn time duration in live and session history
  • Prevents potential session title flashing to be ACP
  • Preserves line breaks in user message paragraphs

Related Issue(s)

N/A

Type of Change

  • Bug fix
  • New feature
  • Documentation
  • Refactor
  • Other

Validation

Checklist

  • I ran relevant checks/tests locally.
  • I updated docs if behavior or interfaces changed.
  • I verified there are no unrelated changes in this PR.

z0gSh1u added 14 commits July 22, 2026 00:05
test(harness): specify sidebar session attention

feat(chat): add persisted session attention state

feat(gateway): synchronize sidebar session status

fix(gateway): preserve session catalog recovery

fix(gateway): close session recovery races

feat(ui): show sidebar session attention

test(chat): cover sidebar session attention

test(chat): distinguish session visibility transitions

test(gateway): isolate session event reload assertion

fix(gateway): harden session catalog integration

fix(gateway): align failed session recovery

fix(chat): preserve delete recreate ordering

fix(chat): isolate recreated label hydration

test(harness): cover label hydration regressions

# Conflicts:
#	README.ja-JP.md
#	README.md
#	README.zh-CN.md
#	harness/reference/chat-workspace-and-navigation.md
#	harness/specs/scenarios/chat-workspace-and-navigation.md
#	src/components/layout/Sidebar.tsx
docs(harness): specify attachment open-with flow

docs(harness): tighten attachment open-with safety

feat: add attachment open-with platform service

fix: harden attachment open-with service

test: require Windows default open handler

feat: expose secure attachment open-with actions

feat(chat): add attachment open-with menu

fix(chat): bind open handlers to attachment ref

test(e2e): cover attachment open-with menu

docs: describe attachment open-with behavior

test(e2e): wait for typed file tree invocation

fix: open with app icons

# Conflicts:
#	tests/e2e/fixtures/electron.ts
docs: clarify web browser navigation policy

docs: define web browser proxy behavior

docs: add web browser implementation plan

test: define web browser harness contract

feat: add web browser host contract

feat: harden web browser guest contents

feat: configure web browser session policy

feat: register web browser host service

fix: gate browser activation on initialization

test: verify both browser clear operations await

feat: add web browser artifact tab

feat: add web browser navigation controls

feat: keep web browser guest alive globally

fix: harden web browser async lifecycle

fix: keep aborted browser navigation silent

fix: handle aborted browser navigation in Main

fix: isolate overlapping browser address submissions

test: cover web browser navigation

test: harden browser navigation assertions

test: cover web browser lifecycle

test: harden browser lifecycle assertions

test: cover web browser session policy

test: harden web browser policy coverage

docs: document web browser behavior

# Conflicts:
#	harness/reference/chat-workspace-and-navigation.md
#	harness/specs/scenarios/chat-workspace-and-navigation.md

# Conflicts:
#	harness/reference/chat-workspace-and-navigation.md
#	harness/specs/rules/ui-i18n-design-tokens.md
#	harness/specs/scenarios/chat-workspace-and-navigation.md
#	harness/specs/scenarios/gateway-backend-communication.md
#	tests/unit/harness-specs.test.ts
refactor: html preview UI
docs: refine PPTX viewer lifecycle

test: define Office preview harness contract

feat: classify DOCX and PPTX previews

feat: add isolated DOCX preview viewer

fix: harden DOCX preview lifecycle

fix: invalidate stale DOCX renders on commit

feat: add single-instance PPTX preview viewer

fix: serialize PPTX renders across lifetimes

feat: integrate Office previews into artifact panel

test: cover Office document previews end to end

test: verify PPTX backing resize

docs: document Office preview support

fix: harden Office preview lifecycles

fix: terminate superseded PPTX render failures
# Conflicts:
#	harness/specs/scenarios/chat-workspace-and-navigation.md
# Conflicts:
#	README.ja-JP.md
#	README.md
#	README.zh-CN.md
#	harness/reference/chat-workspace-and-navigation.md
#	harness/specs/rules/session-workspace-authority.md
#	harness/specs/scenarios/chat-workspace-and-navigation.md
#	src/components/layout/Sidebar.tsx
#	src/stores/chat.ts
# Conflicts:
#	harness/reference/acp-attachment-access-control.md
#	harness/specs/rules/ui-i18n-design-tokens.md
#	harness/specs/scenarios/acp-chat-experience.md
#	harness/specs/scenarios/acp-file-activity.md

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

Copy link
Copy Markdown
Contributor

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: 5644312e5f

ℹ️ 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 +100 to +102
const cancelEditing = () => {
setEditing(false);
};

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Badge Invalidate pending address submissions on cancel

When a URL submission is still pending, the blur/Escape path calls this cancellation helper without changing latestSubmissionRef. If the user clicks away or starts a new draft before the previous onNavigate promise settles, that older promise can still pass the latest-submission check and close/refocus the newer edit state, so rejected loads may no longer remain editable and stale navigations can clobber the active draft. Incrementing/canceling the submission token when leaving edit mode avoids that race.

Useful? React with 👍 / 👎.

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

Copy link
Copy Markdown
Contributor

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: a45c3e3066

ℹ️ 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 +70 to +71
&& params.allowpopups === true
&& params.preload === '';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Badge Accept the real webview attachment parameters

When the browser tab mounts its <webview>, Electron passes will-attach-webview params as attribute strings (and omitted attributes are not guaranteed to appear), while the renderer sets allowpopups="" and no preload attribute. This exact check rejects the only intended browser webview before it can attach, so opening the new web browser tab leaves no registered guest and all toolbar/address navigations fail with “guest is unavailable”.

Useful? React with 👍 / 👎.

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

Copy link
Copy Markdown
Contributor

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: 916cb3d255

ℹ️ 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 +255 to +258
const recoveryUrl = pendingRecoveryUrlRef.current;
pendingRecoveryUrlRef.current = null;
if (!recoveryUrl) return;
void runNavigation(recoveryUrl, false);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Badge Preserve requested crash-recovery navigation

If a new browser navigation is requested while the webview is on the crash screen, recovery still stores the stale lastAllowedUrl; when the replacement attaches, consumeRequestedNavigation() runs first and then this recovery load immediately navigates back to the old crashed URL. This affects flows like choosing “open in built-in browser” from a file card after a webview crash and then pressing Recover, where the explicit file URL is overwritten instead of being loaded.

Useful? React with 👍 / 👎.

@su8su
su8su merged commit 7cb6eb2 into main Jul 23, 2026
7 checks passed
@su8su
su8su deleted the dev-zx branch July 23, 2026 03:06
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.

2 participants