Skip to content

fix(web): show text input for adding projects on Linux desktop - #1075

Merged
juliusmarminge merged 2 commits into
pingdotgg:mainfrom
eggfriedrice24:feat/linux-manual-project-path
Mar 19, 2026
Merged

juliusmarminge merged 2 commits into
pingdotgg:mainfrom
eggfriedrice24:feat/linux-manual-project-path

Conversation

@eggfriedrice24

@eggfriedrice24 eggfriedrice24 commented Mar 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

On Linux/Wayland, the GTK file picker is broken for folder selection in Electron apps, completely blocking adding projects. This shows the web-style text input on Linux desktop instead of immediately opening the native file picker.

Closes #966
Closes #270

Changes

  • Skip the immediate file picker open on Linux desktop (isElectron && /linux/i.test(navigator.platform))
  • Linux users now see the path text input with an Add button (same UX as web mode)
  • Mac/Windows behavior is unchanged

Test plan

  • On Linux desktop: clicking "+" shows text input instead of opening file picker
  • On Mac/Windows desktop: clicking "+" still opens native file picker immediately
  • On web: behavior unchanged
  • Typing a path and pressing Enter adds the project

Note

Show text input for adding projects on Linux desktop in Sidebar

On Linux Electron, the native file browser dialog cannot be used to add projects, so the text input path entry is shown instead. Adds isLinuxPlatform to utils.ts and uses it in Sidebar.tsx to set shouldBrowseForProjectImmediately to false on Linux Electron.

Macroscope summarized 9757ff5.

image

@coderabbitai

coderabbitai Bot commented Mar 14, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 870fc8f7-e9a7-457e-9693-ea4ec40fa73c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actions github-actions Bot added size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Mar 14, 2026
@eggfriedrice24

Copy link
Copy Markdown
Contributor Author

@juliusmarminge sorry for tagging I know you are busy but can you take a look at this? One line change, closes 2 issues and helps linux users, thanks...

Comment thread apps/web/src/components/Sidebar.tsx Outdated
@@ -305,7 +305,8 @@ export default function Sidebar() {
const clearSelection = useThreadSelectionStore((s) => s.clearSelection);
const removeFromSelection = useThreadSelectionStore((s) => s.removeFromSelection);
const setSelectionAnchor = useThreadSelectionStore((s) => s.setAnchor);
const shouldBrowseForProjectImmediately = isElectron;
const isLinuxDesktop = isElectron && /linux/i.test(navigator.platform);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

extract Linux matcher to helper. We already have for Windows and Mac

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@juliusmarminge one more time please 🙏 thanks and sorry again for tagging

@eggfriedrice24
eggfriedrice24 force-pushed the feat/linux-manual-project-path branch from 7a794ef to 9757ff5 Compare March 18, 2026 01:58
@eggfriedrice24

Copy link
Copy Markdown
Contributor Author

rebased on latest main, ready for another look

@juliusmarminge
juliusmarminge merged commit fb18b2d into pingdotgg:main Mar 19, 2026
9 checks passed
aaditagrawal pushed a commit to aaditagrawal/t3code that referenced this pull request Mar 20, 2026
apexsloth pushed a commit to apexslothforks/t3code that referenced this pull request Mar 26, 2026
dcherrera pushed a commit to dcherrera/t3code that referenced this pull request Jul 7, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
aorwall added a commit to aorwall/t3code that referenced this pull request Oct 12, 2026
Merges `pingdotgg/t3code` `c9fa1367ca` (99 commits from `0f09627a11`)
into the fork. No open merge PR to stack on; branches from `main`.

## Merge

- Landed 940 files against 939 in the upstream range (the extra is
`docs/fork/inventory.json`); fork delta 775 files.
- 8 conflicts, resolved by their preflight verdicts — details in the
`docs/fork/upstream-merge-log.md` entry. The ones worth a reviewer's
eye:
- `ProviderSettingsPanel.tsx`: upstream moved Add provider into
`titleAction` (pingdotgg#17152); the `FEATURES.providerConfiguration` gate moved
with it.
- `PreviewView.tsx` (`decide`): fork's framed `navigate` kept beside
upstream's move-tab/`close`.
- `ChatMarkdown.tsx`: upstream's markdown pipeline moved to
`@t3tools/shared/markdownPipeline`; only the Moatless Artifact imports
re-applied.
- `pnpm-lock.yaml` re-derived by install (fork `moatless-api` edge
present).
- Contract: `UnsupportedMethodError` added to
`orchestration.searchThread`, `orchestration.searchThreadStream`,
`preview.reportProfiles`; dropped from `projects.mutate` (served by the
backend since moatless pingdotgg#1075).
- `AppRoot.test.tsx` (fork-only) updated for upstream's new
`<BrowserProfileReporter />` child.

## Verification

`verify.mjs`: duplicate-adds, tripwires, resolution-check,
unsupported-methods, lockfile, fmt, lint, typecheck and build all pass.
Test: `@t3tools/web` had one failure (`AppRoot.test.tsx`), fixed and
re-run green. Still red and confirmed failing alone — the same four as
the 2026-10-08 merge, recorded there as machine rather than code:
`ServerBrowserPage`, `AcpAdapterV2`, `OrchestratorReplayFixtures`
(server) and `OpenCodeServerLedger` (now in
`@t3tools/provider-opencode`). The full pass was not re-run after the
`AppRoot` test fix; the web package re-run and that file alone were.

## Usable as-is

- Thread-find match tints, timeline marker room, sidebar drag fix,
collapsed-composer spacing, centered scroller fix, PR panel layout fixes
(pingdotgg#17263, pingdotgg#17372, pingdotgg#17373, pingdotgg#17016, pingdotgg#17077, pingdotgg#15560–pingdotgg#15588, pingdotgg#16162).
- Compact-before-send chip with token count (pingdotgg#17127); quote chips show
your note (pingdotgg#15703); projectless threads show their machine (pingdotgg#17022);
short messages with quotes/links no longer collapse (pingdotgg#16624); copy
button position (pingdotgg#17137).
- File preview fixes: downloads, in-page links, repo paths, favicons no
longer leak internal hosts (pingdotgg#16950); previews before a thread's first
message (pingdotgg#17352).
- Terminal scrollback navigation (pingdotgg#17091).
- Usage page filters and performance (pingdotgg#16970, pingdotgg#17147) — only where the
fork exposes Usage.
- Mobile, desktop and relay fixes (many) — not fork targets, taken
as-is.
- Provider package extraction
(`packages/provider-{core,acp,cursor,grok,muse,opencode,pi,testing}`) —
internal refactor, no fork impact beyond the new web deps.

## Unsupported in Moatless / needs implementation

- **Find in thread** (pingdotgg#10439) — `orchestration.searchThread`,
`orchestration.searchThreadStream`; client gated on the `threadFind` /
`threadFindProgressive` capabilities, which Moatless does not report, so
it toasts "unavailable on this server". Needs a backend search over
projected messages plus the capability. Added to `docs/fork/gaps.md`.
- **Browser profiles for server-hosted tabs** (pingdotgg#16956,
`BrowserProfileReporter`) — `preview.reportProfiles`; sent only to
`serverBrowser` environments, so never sent here. Extends the
server-hosted-browser gap.
- **Connection permissions / session lifetime** (pingdotgg#17370) —
`SessionPermissions.tsx` renders inside the Connections page, which
`FEATURES.connections` hides.
- **CLI-update-unlocks-model hint** (pingdotgg#17307) — needs provider snapshot
fields Moatless does not publish.
- **Muse Code native provider** (pingdotgg#17082), **JetBrains over SSH**
(pingdotgg#17271) — upstream server/desktop runtime.

## Backend behavior to consider reproducing in Moatless

- Settle as soon as branch status sees the PR merge (pingdotgg#17148,
`ThreadSettlementReactor.ts`); an agent can settle its own thread at
turn end (pingdotgg#17145).
- A message sent during a rollback no longer undoes it (pingdotgg#17079); held
queued wakes no longer keep delegated tasks running (pingdotgg#17028).
- Long-thread message sync paged faster (pingdotgg#17387); shell snapshot decode
no longer blocks other DB reads (pingdotgg#17141); ACP tool updates no longer
persist a snapshot per chunk (pingdotgg#16682).
- Agent browser tools stop bloating history and respect tab ownership
(pingdotgg#16956); authenticated GitHub Enterprise hosts recognised (pingdotgg#11059);
session lifetime enforced (pingdotgg#17370).

All recorded in `docs/fork/gaps.md`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---
Moatless task:
https://moatless.soaplabstest.com/tasks/571512c6-b6a0-4727-943d-231929222fc2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: allow manual directory path entry when adding projects Stuck on "Picking folder..." and "Adding..." when selecting project

3 participants