Skip to content

Ajit/macos - #35

Draft
deadlyjack wants to merge 17 commits into
devfrom
ajit/macos
Draft

Ajit/macos#35
deadlyjack wants to merge 17 commits into
devfrom
ajit/macos

Conversation

@deadlyjack

@deadlyjack deadlyjack commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Change Analytics

Metric Value
Changed files 341
Additions 49,441
Deletions 2,832
Changed lines 52,273
pie showData
    title Changed Lines by Module
    "Desktop workbench" : 19747
    "macOS native" : 12006
    "Editor" : 3415
    "Shared libraries" : 2644
    "Context menus" : 1895
    "Other pages" : 1559
    "Shared components" : 1548
    "Mobile tabs" : 1534
    "Other" : 7925
Loading
Rank Module Files Additions Deletions Changed lines Share
1 Desktop workbench 94 19,747 0 19,747 37.8%
2 macOS native 34 12,006 0 12,006 23.0%
3 Editor 10 2,291 1,124 3,415 6.5%
4 Shared libraries 34 2,444 200 2,644 5.1%
5 Context menus 11 1,895 0 1,895 3.6%
6 Other pages 21 1,391 168 1,559 3.0%
7 Shared components 18 1,493 55 1,548 3.0%
8 Mobile tabs 22 1,164 370 1,534 2.9%
9 Browser 10 1,350 4 1,354 2.6%
10 State & connections 11 1,093 188 1,281 2.5%
11 Themes 7 867 44 911 1.7%
12 macOS dev launcher 7 764 0 764 1.5%
13 Chat 12 449 304 753 1.4%
14 Files 4 481 240 721 1.4%
15 Git UI 5 676 26 702 1.3%
Other 41 1,330 109 1,439 2.8%

Changed lines = additions + deletions.

@biraj21
biraj21 marked this pull request as draft July 16, 2026 03:41
biraj21 and others added 13 commits July 20, 2026 21:54
* feat: add HostQrSheet component for displaying connection QR codes in SavedHostItem

* chore: update iOS project configuration for development build

- Changed AUTH_CALLBACK_SCHEME for dev version in Info.plist to use a variable for flexibility.
- Updated project.pbxproj to reflect new display name and bundle identifier for the dev version.
- Modified auth.tsx to clarify handling of auth callback schemes for both Android and iOS development builds.

* chore: add qr code generator

* refactor: remove ConnectionStatus.scss and integrate styles directly into ConnectionStatus component

- Deleted the ConnectionStatus.scss file.
- Moved styles into the ConnectionStatus component using Tailwind CSS classes.
- Enhanced the connection status UI to provide clearer messaging during reconnection attempts and CLI updates.
- Added logic to manage reconnect attempts and host updating state.

* fix(auth): enhance error handling and session recovery logic

- Introduced AuthRequestError type to carry HTTP status in authentication errors.
- Added logic to retain session on transient network/server failures, preventing unnecessary sign-outs.
- Implemented retry mechanism for session refresh when the device comes back online.
- Updated refresh logic to handle backoff for failed refresh attempts, improving user experience during connectivity issues.

* chore: bump version to 0.0.37 for release
…pagination

improve chat ui, add reverse pagination, fix login
Opening a new chat no longer spawns an agent session up front — it is
created by the first send, so starting a chat and backing out costs
nothing on the host. This also fixes the new chat hanging on its loading
skeleton: the eager path set loading before an async create whose
`.then`
bailed on a cancelled closure, and the attach that followed
`session/new`
pushed the CLI down its cold-miss path, emitting `syncing: "messages"`
and clearing it before the subscription existed.

`session/new` returns everything needed to prompt, so no attach follows
it — per ACP, `session/load` resumes a *previous* conversation, and a
session created moments ago has no history to replay.

A draft chat renders its composer from the agent's host-cached session
config, since ACP only exposes models, modes, and slash commands once a
session exists. Config picks made before the first send are held locally
and replayed onto the real session once it is created.
* fix(chat): preserve draft config picks and pass them at session create

A draft chat has no ACP session, so mode/model picks made before the
first send were kept in local state and replayed afterwards. Two gaps
made them get lost or apply late:

- The draft effect reset configOptions from the host-cached agent config
  on every run, clobbering picks the user had already made. Skip the
  reset while pending changes exist.
- Agent metadata is only loaded on connection, so a draft opened after
  another chat populated the CLI's config cache rendered a stale
  toolbar. Refresh agents once per draft.

Also send configOptions with AI_SESSION_CREATE so the first turn starts
with the chosen config instead of the agent default, and bump
@shellular/protocol to 0.0.31 for the field.

* fix: re-use ticket on re-connects for speed

* fix: new chat prompt should not get cleared on reconnect

* fix(chat): stop selection jumping and copy burying the answer

Two issues reported on Android with a long OpenCode response:

Selecting text and dragging down jumped the selection to the top of the
conversation. A selection drag is auto-scrolled by the WebView, which
fires `scroll` but not `wheel`/`touchmove` — the events wired to
scroll-intent — so the top sentinel came into view, prepended ~30 older
messages, and corrected scrollTop out from under the drag. Suppress
load-more, auto-scroll, and stick-to-bottom while a selection is active
in the transcript.

Copying a response also copied the reasoning and every tool call with
its full JSON input/output, burying the actual answer. The message copy
button now emits only the answer; each folded section (reasoning, tool
call, tool-call group, command) carries its own copy button, so nothing
became unreachable.
* feat: git tree view for changes

* chore: update diffs & increment version

---------

Co-authored-by: Biraj <biraj.pub@gmail.com>
* feat(agent chat): prompt queueing

* fix(cli): recover externally owned agent session

* chore: update version
* feat(chat): add inline Git review workflow

* fix(chat): prevent duplicate optimistic user messages

---------

Co-authored-by: Biraj <biraj.pub@gmail.com>
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.

3 participants