Skip to content

Integrate mobile, session and file preview updates for v1.0.23 - #176

Merged
tmoonlight merged 1 commit into
masterfrom
codex/integrate-v1.0.23
Nov 9, 2026
Merged

tmoonlight merged 1 commit into
masterfrom
codex/integrate-v1.0.23

Conversation

@tmoonlight

Copy link
Copy Markdown
Owner

Changes

  • Move file preview controls into the breadcrumb overflow menu. The menu and the file content context menu both open the current file in the desktop file manager.
  • Integrate the Android host, phone controls and narrow-screen UI, session and background-task updates, browser tab ownership, and Windows installer fixes.

Verification

  • Web tests and production build passed.
  • Chromium exercised both folder entry points, wrap, draft copying, Markdown, slide controls, keyboard navigation, and narrow breadcrumb alignment.
  • 78 focused native tests passed, including the updater, authentication, installer shell and reserved session ID cases.
  • Android phone MCP protocol test, tracked documentation paths, strict OpenSpec validation and staged diff checks passed.

OpenSpec change file-detail-actions-menu.

Copilot AI balanced review requested due to automatic review settings November 9, 2026 17:20
@tmoonlight
tmoonlight merged commit ee6a230 into master Nov 9, 2026
4 checks passed
@tmoonlight tmoonlight mentioned this pull request Nov 9, 2026

Copilot AI 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.

🟡 Changes recommended

Concurrent duplicate-ID requests can share a session and mix conversations, Android defaults bypass the headless MCP allowlist, and unrelated settings updates can erase failed-write retry state.

3 open issues
What changed in this PR

Integrates v1.0.23 updates across Android hosting, the responsive Web UI, session handling, file previews, and the Windows installer.

Changes:

  • Consolidates file-preview controls into the breadcrumb overflow menu and shares file-manager actions with context menus.
  • Adds Android runtime integration, phone controls, clipboard access, and narrow-screen layouts.
  • Updates session ownership, transcripts, follow-up prompts, and simulator controls.
  • Updates authentication, installer COM handling, tests, and documentation.

This pull request requires changes.

Unresolved issues:

  • Critical — 3 votes: src/apps/web/server_helpers.cpp:2592: Concurrent requests can create the same reserved session ID and submit an initial message to another request’s conversation. Reserve IDs atomically in the registry, return 409 for duplicates, and add concurrent regression coverage.
  • Critical — 1 vote: src/base/config/mcp_config.cpp:400: Android defaults reintroduce phone tools after headless MCP allowlist filtering. Apply defaults before capability selection and preserve the filtered configuration in connection and policy code.
  • Moderate — 3 votes: web/src/lib/androidPhoneSettings.js:18: Successful unrelated mutations clear failed settings and their retry targets while leaving unsaved drafts selected. Preserve failures until the corresponding setting succeeds or is explicitly superseded.
  • Moderate — 1 vote: web/src/lib/mobileShell.js:52: Body-dispatched Escape bypasses element-level dismissal handlers, allowing Android Back to report success without closing the active submenu. Target the focused/topmost layer or use explicit dismissal hooks.
  • Moderate — 1 vote: web/src/lib/mobileShell.js:33: Back handling misses slash-command and @-reference listboxes, causing host navigation instead of picker dismissal. Include those picker roots.
  • Moderate — 1 vote: web/src/lib/systemClipboard.js:85: Overlapping reads overwrite handlers on onmessage-only bridges, causing answered requests to time out. Serialize reads or dispatch replies through a shared ID-based handler, and cover this bridge branch.
File Description
web/​src/​styles/​file-breadcrumbs.css Separates scrolling breadcrumbs from fixed actions.
web/​src/​main.jsx Installs the Android Back bridge.
web/​src/​lib/​useResponsiveSidebars.js Tracks coarse-pointer input for drawer layout.
web/​src/​lib/​useNarrowLayout.js Adds reactive narrow-viewport detection.
web/​src/​lib/​useFollowUpPrompt.js Exposes recommendation-generation suppression.
web/​src/​lib/​topBarQuickActions.test.js Covers Android quick-action filtering.
web/​src/​lib/​topBarQuickActions.js Filters desktop-only actions on Android.
web/​src/​lib/​timestamps.js Infers missing historical message timestamps.
web/​src/​lib/​systemClipboard.test.js Covers Android clipboard reads and failures.
web/​src/​lib/​systemClipboard.js Adds Android clipboard bridge support.
web/​src/​lib/​subagentPanelSplitArchitecture.test.js Updates background-task visibility assertions.
web/​src/​lib/​steerWithdrawal.js Restores withdrawn messages into composer state.
web/​src/​lib/​settingsNavigation.test.js Covers Android and narrow settings navigation.
web/​src/​lib/​settingsNavigation.js Adds shell-specific settings navigation helpers.
web/​src/​lib/​sessionTranscript.js Infers timestamps before filtering history.
web/​src/​lib/​sessionTitleActions.test.js Covers browser availability on the homepage.
web/​src/​lib/​sessionTitleActions.js Enables homepage browser access.
web/​src/​lib/​sessionCreationActionGuardsArchitecture.test.js Updates completion-summary copy assertions.
web/​src/​lib/​runTests.js Registers additional regression suites.
web/​src/​lib/​responsiveSidebars.test.js Covers touch-screen drawer decisions.
web/​src/​lib/​responsiveSidebars.js Prevents sidebar docking on phones.
web/​src/​lib/​previewWorkbenchArchitecture.test.js Updates preview-menu architecture assertions.
web/​src/​lib/​previewTabs.test.js Covers draft browser-tab transfers.
web/​src/​lib/​previewTabs.js Transfers browser tabs when ownership matches.
web/​src/​lib/​presentationPreview.test.js Updates slide and zoom action assertions.
web/​src/​lib/​officePreviewInteractions.test.js Updates Office zoom-menu assertions.
web/​src/​lib/​modelSettingsArchitecture.test.js Covers narrow model dialogs and paste controls.
web/​src/​lib/​mobileShell.js Adds Android detection and Back handling.
web/​src/​lib/​iosSimulatorSettings.test.js Covers device-specific shutdown API calls.
web/​src/​lib/​iosSimulator.test.js Covers power-action device-list fallback.
web/​src/​lib/​iosSimulator.js Preserves device state after listing failures.
web/​src/​lib/​followUpPrompt.test.js Covers recommendation retention during editing.
web/​src/​lib/​followUpPrompt.js Separates suppression from explicit consumption.
web/​src/​lib/​desktopContextMenu.js Adds preview folder-navigation actions.
web/​src/​lib/​conversationLivenessArchitecture.test.js Updates activity-detail text assertions.
web/​src/​lib/​conversationActivity.test.js Updates background activity expectations.
web/​src/​lib/​conversationActivity.js Removes redundant background-status detail.
web/​src/​lib/​composerSessionControlsArchitecture.test.js Covers touch-sized composer controls.
web/​src/​lib/​assistantRunDirectives.test.js Covers combined answer-and-summary copying.
web/​src/​lib/​assistantRunDirectives.js Supplies completion-summary copy content.
web/​src/​lib/​androidPhoneSettings.js Serializes native phone settings requests.
web/​src/​lib/​androidPhone.js Adds phone requests, activity, and approvals.
web/​src/​lib/​anchoredMenuPosition.js Supports end-aligned menus.
web/​src/​lib/​agentBrowserArchitecture.test.js Updates draft browser ownership assertions.
web/​src/​lib/​agentBrowser.test.js Covers reserved session-ID generation.
web/​src/​lib/​agentBrowser.js Generates draft browser owner IDs.
web/​src/​components/​TranscriptItems.jsx Uses combined completion-summary copy text.
web/​src/​components/​TopBar.jsx Marks navigation-history controls.
web/​src/​components/​ToolRewriteSettings.jsx Adapts rewrite rows to narrow screens.
web/​src/​components/​SummaryPanel.jsx Hides empty background-task sections.
web/​src/​components/​SpeechRecognitionSettings.jsx Adds Android API-key paste support.
web/​src/​components/​SidebarQuickMenu.jsx Applies Android quick-menu filtering.
web/​src/​components/​SettingsConfigSection.jsx Hides daemon self-update on Android.
web/​src/​components/​SecurityCenterSettings.jsx Allows security tabs to wrap.
web/​src/​components/​PreviewDetailsPanel.jsx Hosts actions beside file breadcrumbs.
web/​src/​components/​PresentationPreview.jsx Moves slide and zoom controls into menus.
web/​src/​components/​openTargetInExplorer.js Shares file-manager dispatch and feedback.
web/​src/​components/​OfficePreviewControls.jsx Exports bounded zoom-menu actions.
web/​src/​components/​model-settings/​SavedModelList.jsx Adapts model search to narrow screens.
web/​src/​components/​model-settings/​ProviderCatalogPicker.jsx Supports separate narrow provider/detail panes.
web/​src/​components/​LoopPage.jsx Adapts scheduling controls to narrow screens.
web/​src/​components/​InputBar.jsx Preserves ready recommendations during edits.
web/​src/​components/​ImageGenerationSettings.jsx Adds Android API-key paste support.
web/​src/​components/​FilePreviewMenu.jsx Adds the file-actions overflow menu.
web/​src/​components/​ComposerSessionControls.jsx Uses configurable minimum control widths.
web/​src/​components/​ClipboardPasteButton.jsx Adds an Android-only paste button.
web/​src/​components/​ChannelsSettings.jsx Adds paste controls for secret credentials.
web/​src/​components/​AnchoredMenu.jsx Passes menu alignment into positioning.
web/​src/​App.jsx Connects Android activity and approval hooks.
web/​scripts/​test-preview-presentation.mjs Exercises preview actions and folder dispatch.
web/​scripts/​test-follow-up-prompts.mjs Exercises recommendation restoration after clearing.
web/​scripts/​test-file-breadcrumbs.mjs Exercises narrow overflow-menu positioning.
web/​scripts/​i18n-en-overrides.mjs Adds English UI translations.
tests/​web/​web_server_smoke_test.cpp Covers reserved session-ID validation and collisions.
tests/​web/​auth_test.cpp Covers mandatory loopback authentication.
tests/​prompt/​system_prompt_test.cpp Covers Android host environment text.
tests/​installer/​windows_shell_test.cpp Covers shortcuts on uninitialized COM threads.
tests/​daemon/​cli_parse_test.cpp Covers the local-token CLI flag.
src/​engine/​prompt/​system_prompt.cpp Describes the Android host and Ubuntu guest.
src/​base/​config/​mcp_config.hpp Declares runtime host MCP defaults.
src/​base/​config/​mcp_config.cpp Adds Android phone MCP defaults.
src/​apps/​web/​server.hpp Adds mandatory local-token configuration.
src/​apps/​web/​server_helpers.cpp Applies authentication and reserved-ID validation.
src/​apps/​web/​auth.hpp Extends the authentication interface.
src/​apps/​web/​auth.cpp Supports disabling loopback token exemption.
src/​apps/​installer/​windows_shell.cpp Initializes COM around shortcut operations.
src/​apps/​installer/​installer_strings.hpp Removes obsolete ACEModel-key fields.
src/​apps/​installer/​installer_strings.cpp Removes obsolete ACEModel-key strings.
src/​apps/​installer/​acemodel_seed.hpp Removes the installer seeding header.
src/​apps/​daemon/​worker.hpp Adds the worker local-token option.
src/​apps/​daemon/​worker.cpp Forwards authentication configuration to Web.
src/​apps/​daemon/​cli.hpp Adds parsed local-token state.
src/​apps/​daemon/​cli.cpp Parses and forwards the local-token flag.
src/​adapters/​tool/​mcp_manager.cpp Applies Android defaults during MCP setup.
openspec/​changes/​file-detail-actions-menu/​tasks.md Records implementation and verification tasks.
openspec/​changes/​file-detail-actions-menu/​specs/​file-preview-wrap-toggle/​spec.md Specifies menu-based wrap controls.
openspec/​changes/​file-detail-actions-menu/​specs/​file-detail-actions/​spec.md Specifies shared file-detail actions.
openspec/​changes/​file-detail-actions-menu/​proposal.md Describes preview-action consolidation.
openspec/​changes/​file-detail-actions-menu/​design.md Documents action-slot ownership and dispatch.
openspec/​changes/​file-detail-actions-menu/​.openspec.yaml Adds change metadata.
openspec/​changes/​add-ios-simulator/​verification.md Records shutdown checks and runtime limitations.
openspec/​changes/​add-ios-simulator/​tasks.md Records preview-shutdown implementation tasks.
openspec/​changes/​add-ios-simulator/​specs/​ios-simulator/​spec.md Specifies device-targeted shutdown behavior.
openspec/​changes/​add-ios-simulator/​design.md Documents shutdown resource cleanup.
openspec/​changes/​add-composer-follow-up-prompts/​tasks.md Records recommendation-restoration verification.
openspec/​changes/​add-composer-follow-up-prompts/​specs/​composer-follow-up-prompts/​spec.md Specifies restoring cached recommendations.
openspec/​changes/​add-composer-follow-up-prompts/​design.md Documents recommendation retention during editing.
docs/​windows-installer.md Documents COM handling and installer changes.
docs/​ios-simulator.md Documents preview shutdown and reboot controls.
docs/​daemon-api.md Documents local authentication and reserved IDs.
docs/​agent-browser.md Documents draft browser ownership transfer.
android/​settings.gradle Defines the Android project and repositories.
android/​runtime/​test_phone_mcp.py Covers the phone MCP stdio protocol.
android/​runtime/​rootfs/​Dockerfile Defines the bundled Ubuntu runtime.
android/​runtime/​pins.json Pins runtime packages and checksums.
android/​gradlew.bat Adds the Windows Gradle launcher.
android/​gradle/​wrapper/​gradle-wrapper.properties Configures the Gradle wrapper distribution.
android/​gradle.properties Configures Android build defaults.
android/​build.gradle Declares the Android application plugin.
android/​app/​src/​test/​java/​dev/​acecode/​android/​ProotCommandTest.kt Covers daemon launch arguments and environments.
android/​app/​src/​test/​java/​dev/​acecode/​android/​ClipboardBridgeTest.kt Covers clipboard replies and escaping.
android/​app/​src/​main/​res/​xml/​phone_accessibility.xml Declares accessibility service capabilities.
android/​app/​src/​main/​res/​xml/​network_security_config.xml Allows cleartext access to localhost.
android/​app/​src/​main/​res/​values/​themes.xml Defines native themes and button styles.
android/​app/​src/​main/​res/​values/​strings.xml Adds English native UI strings.
android/​app/​src/​main/​res/​values/​dimens.xml Defines native layout dimensions.
android/​app/​src/​main/​res/​values/​colors.xml Defines light-theme color resources.
android/​app/​src/​main/​res/​values/​bools.xml Configures light system bars.
android/​app/​src/​main/​res/​values-zh/​strings.xml Adds Chinese native UI strings.
android/​app/​src/​main/​res/​values-v27/​themes.xml Configures navigation-bar appearance.
android/​app/​src/​main/​res/​values-night/​themes.xml Configures night-theme system bars.
android/​app/​src/​main/​res/​values-night/​colors.xml Defines dark-theme color resources.
android/​app/​src/​main/​res/​values-night/​bools.xml Configures dark system bars.
android/​app/​src/​main/​res/​layout/​status_panel.xml Defines runtime progress and retry UI.
android/​app/​src/​main/​res/​layout/​phone_approval.xml Defines phone-action approval controls.
android/​app/​src/​main/​res/​layout/​activity_main.xml Hosts the WebView and runtime status.
android/​app/​src/​main/​res/​drawable/​ic_notification.xml Adds the runtime notification icon.
android/​app/​src/​main/​res/​drawable/​ace_card.xml Defines native card styling.
android/​app/​src/​main/​res/​drawable/​ace_button_secondary.xml Defines secondary button styling.
android/​app/​src/​main/​res/​drawable/​ace_button_primary.xml Defines primary button styling.
android/​app/​src/​main/​java/​dev/​acecode/​android/​RuntimePaths.kt Defines runtime and persistent data paths.
android/​app/​src/​main/​java/​dev/​acecode/​android/​ProotCommand.kt Builds authenticated guest daemon commands.
android/​app/​src/​main/​java/​dev/​acecode/​android/​PhoneApproval.kt Displays background phone-action approval overlays.
android/​app/​src/​main/​java/​dev/​acecode/​android/​ClipboardBridge.kt Encodes native clipboard bridge replies.
android/​app/​src/​main/​java/​dev/​acecode/​android/​AndroidFsOps.kt Implements Android runtime filesystem operations.
android/​app/​src/​main/​assets/​phone/​phone_mcp.py Relays MCP tools to Android operations.
android/​app/​src/​main/​AndroidManifest.xml Declares app permissions and components.
android/​.gitignore Excludes build output and signing secrets.

Review effort: Balanced

Comment on lines +2592 to +2594
if (!opts.preset_session_id.empty() &&
(find_session_meta_for_workspace(ws, opts.preset_session_id) ||
(deps.session_registry && deps.session_registry->acquire(opts.preset_session_id)))) {
Comment on lines +400 to +404
if (getenv_utf8("ACECODE_ANDROID_HOST") == "1") {
McpServerConfig phone;
phone.command = "/usr/bin/python3";
phone.args = {"/opt/acecode/android/phone_mcp.py"};
servers.emplace("phone", std::move(phone));
try {
const status = await request(action, fields);
// A background refresh must not erase a failed write or its retry target.
const clearFailure = action !== 'status' || snapshot.failed?.action === 'status';
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