Skip to content

Make pnpm dev work in a standalone checkout and behind a localhost tunnel - #64

Merged
biraj21 merged 19 commits into
shellular-org:devfrom
jankarres:jan/dev-server-remote
Aug 20, 2026
Merged

Make pnpm dev work in a standalone checkout and behind a localhost tunnel#64
biraj21 merged 19 commits into
shellular-org:devfrom
jankarres:jan/dev-server-remote

Conversation

@jankarres

@jankarres jankarres commented Aug 19, 2026

Copy link
Copy Markdown

A plain clone cannot run pnpm dev at all right now, and a dev server that only ever binds the LAN IP cannot be reached when the editor sits on another machine. This fixes both, in three files and without changing a single default, so the phone-on-the-same-Wi-Fi flow stays exactly as it is. Closes #63.

  • The protocol alias is conditional now. existsSync on ../packages/protocol/dist/index.js decides whether to alias at all; present and it behaves exactly as before, absent and webpack resolves @shellular/protocol from node_modules the way the production build already does.
  • dev/start.js takes --host, --port, --http and --headless, with SHELLULAR_DEV_HOST and SHELLULAR_DEV_PORT as environment equivalents. Unset, getIp() and getPort() decide as before.
  • https becomes a webpack env flag. It used to be derived from platform === "browser" in three separate places, the dev-server server option, the HMR webSocketURL protocol and the ORIGIN that boot.ts redirects to, which is why turning TLS off needed one flag rather than three.
  • dev/browser/start.js prints the URL and honours open: false, so a headless box tells you where the server is instead of failing to launch a browser.

Testing

pnpm dev browser unchanged: LAN IP, port 7977, https, browser opens. pnpm dev android unchanged.

pnpm dev browser --host 127.0.0.1 --port 7977 --http --headless

binds loopback, serves plain HTTP, prints the URL, HMR connects over ws, and the app boots through a VS Code Remote forwarded port with window.isSecureContext true, so OPFS and WebCrypto work.

Before you merge

If anything here should be different, tell me and I will take care of it. Part of this touches your own daily workflow, so I would rather change it than have it sit.

biraj21 and others added 17 commits June 15, 2026 19:11
* feat: show CLI version and update status

* feat: add shift to terminal keyboard toolbar & update terminal input handling

* feat: add Reach Out page and integrate with About and More tabs

* feat: enhance in-app browser's new tab page

Kevin (a user) said that he didn't "feel" that he opened a browser when he went to our in-app browser.

* feat: enhance EmptyState with description across multiple tabs

* feat: simplify bookmarked sessions state management

* feat: add isSettledSessionStatus function & FIX permission handling in ChatConversationPage

* chore: v0.0.29
v0.0.38: Merge pull request shellular-org#47 from shellular-org/biraj/session-msgs-reverse-…
fix(v0.0.39): create chat sessions lazily on first message (shellular-org#50)
* Biraj/fixes (shellular-org#52)

* 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: Add git tree view for changes (shellular-org#46)

* feat: git tree view for changes

* chore: update diffs & increment version

---------

Co-authored-by: Biraj <biraj.pub@gmail.com>

---------

Co-authored-by: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com>
v0.0.41: prompt queue & check git changes from chat page
@biraj21
biraj21 changed the base branch from main to dev August 20, 2026 18:06
Comment thread dev/start.js Outdated
@biraj21
biraj21 merged commit d56f7ce into shellular-org:dev Aug 20, 2026
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.

Make pnpm dev work in a plain clone, and behind a localhost tunnel

2 participants