Skip to content

Integrate remaining reviewed contribution backlog - #304

Merged
hamzamerzic merged 44 commits into
mobius-os:mainfrom
hamzamerzic:integration/post-visual-all-20260728
Jul 28, 2026
Merged

Integrate remaining reviewed contribution backlog#304
hamzamerzic merged 44 commits into
mobius-os:mainfrom
hamzamerzic:integration/post-visual-all-20260728

Conversation

@hamzamerzic

@hamzamerzic hamzamerzic commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

This integrates the remaining reviewed Möbius contribution backlog after the visual rollout, with each change reconciled against current main rather than stacking stale branches.

Reliability and provider parity

  • surface git stderr for diagnosable platform-update failures
  • wait for readiness only for bootstrap installs
  • recover every authenticated turn after planned restarts
  • preserve Codex web sources, native image views, helper lifecycles, usage costs, and Claude delegation parity
  • preserve replies across terminal persistence failures
  • keep per-provider effort selection explicit
  • isolate frontend validation from the served production build and give live app builds a dedicated workspace
  • refresh platform-update status from authoritative state

Shell and chat experience

  • add accessible code-block copy controls (from shell: copy button in the corner of every markdown code block #272, by @miljanm, with the follow-up line-clearance correction)
  • add “Close other tabs” (from shell: add 'Close all other tabs' to the tab context menu #273, by @miljanm)
  • stabilize retained Builder/Standard chat geometry, Q&A growth, device safe areas, tab labels/touch dragging, and handoff visibility
  • add the fuzzy slash-command menu
  • improve chat switching, image previews, stored image dimensions, and runtime-cache writes
  • add app sharing from the drawer
  • remeasure question cards after answers change width
  • reserve deferred Steer rows until their authoritative cut, with one dismissal path
  • preserve notification event time and history

Security, provenance, and diagnostics

  • add portable fail-closed background-agent isolation (from Add portable secure background-job executors #289, by @rgjordana), pinning the Trixie runtime required for Landlock-capable setpriv
  • make screenshot verification exact and cold-start safe
  • reconcile landed contributions by provenance
  • add an opt-in field performance probe without touch-scroll measurement overhead
  • classify Memory tool receipts structurally so excerpts remain useful without exposing raw envelopes

Summary-owned chat names

  • keep the existing chat_note.py publisher as the single naming lifecycle
  • capitalize generated names
  • publish the first generated name as soon as the first settled summary is committed
  • preserve a generated name through ordinary follow-ups, but allow it to change after a substantial recent topic switch
  • preserve manual titles and deterministic fallback behavior

Review notes

The original branches are intentionally consolidated so current main receives one coherent, conflict-resolved implementation. Authorship from #272, #273, and #289 is called out above and retained in commit trailers where appropriate.

Verification

  • git diff --check
  • full frontend unit/static suite (2,102 library/static + 66 hook checks)
  • production/PWA build after final rebase
  • focused backend suites covering jobs/sandboxing, restart recovery, Codex parity, chat naming, provenance, screenshots, and media/cache behavior (941 passed, 3 skipped)
  • public CI on the integration branch (running)

Supersedes #266, #270, #271, #272, #273, #276, #277, #278, #279, #283, #284, #289, #296, and #299 after this integration lands.

@hamzamerzic
hamzamerzic enabled auto-merge July 28, 2026 03:47
hamzamerzic and others added 29 commits July 28, 2026 04:10
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Miljan Martic <miljan.martic@pm.me>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Miljan Martic <miljan.martic@pm.me>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: rgjordana <309798046+rgjordana@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
… the scroller

Shell performance work is easy to get wrong because the environment that is
convenient to profile (headless desktop Chromium, software rasterization) is
structurally unable to observe what makes a phone slow: a tile-based GPU, a
3-5x slower CPU, touch input at digitizer rates, visualViewport events that
barely fire on desktop, and mobile flash latency.

Add a probe that reports what a real device sees. It uses only passive
PerformanceObserver entries and deliberately does NOT run a requestAnimationFrame
loop to count frames, since that would keep the compositor awake and manufacture
the very always-on cost such an investigation is usually looking for. Long
Animation Frames carry script attribution, so a report can name the module that
blocked rather than restating that something did.

It is off by default and zero-cost when off: perfMark returns immediately, no
observers register, and nothing is sent. Enrol a device with ?perf=1. Samples
land in a capped JSONL file via two owner-authenticated debug endpoints.

Instrumented paths were chosen for platform divergence: touchmove and wheel
under separate labels, visualViewport sync, the per-frame stream snapshot write,
and markdown tokenisation split into streaming and settled so 'a stopped chat
still feels slow' can be distinguished from 'streaming is expensive'.
Scroll-start latency is measured directly, touchstart to first moving frame,
because start-of-gesture lag is a different failure from steady-state jank.

The probe immediately found one: readerInputNeedsFrameRelease's argument object
was built eagerly at a call site bound to touchstart and touchmove as well as
wheel. It read scrollTop, scrollHeight and clientHeight, and the function's
second line discards all three for any type that is not 'wheel'. Reading
scrollHeight forces a synchronous layout, and the transcript is not virtualized,
so every touch event laid out the whole transcript for values it threw away.
Wheel needs them and fires once per notch; touch paid for nothing at 120-240Hz
from the first event of the gesture. Passing a thunk defers the reads to the
branch that consumes them. The test counts thunk invocations rather than return
values, because the eager form returned identical answers - only a test that
pins the cost can catch a regression to it.

Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Miljan Martic <miljan.martic@pm.me>
The Landlock fallback relies on util-linux 2.41 setpriv support. Pin both runtime stages to Debian Trixie so a floating slim tag cannot silently select a release that lacks the required flags.

Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
@hamzamerzic
hamzamerzic force-pushed the integration/post-visual-all-20260728 branch from 25f94d7 to 6b18217 Compare July 28, 2026 04:11
@hamzamerzic
hamzamerzic added this pull request to the merge queue Jul 28, 2026
Merged via the queue into mobius-os:main with commit 16fb1df Jul 28, 2026
4 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