Repository navigation
feat(workstation): add configurable directory sharing - #1828
Merged
Merged
Conversation
Handle rejection from the settings write using the shared logger, matching other synchronous settings controls and satisfying the type-aware no-floating-promises gate. Verified 143 workstation/settings tests, six typed-lint harness tests, whole-project tsgo, and targeted formatting and ESLint checks.
Restore existing My Station comments, historical notes, UI labels, search aliases, and test captions. Keep Workstation naming in the new sharing settings row and preserve the directory-sharing implementation and promise-handling fix. Verification: 417 targeted tests across 54 files passed and whole-project tsgo passed. Bulk naming files match the pre-feature base exactly.
FresnelR27
marked this pull request as ready for review
September 15, 2026 08:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
My Station always selected a workspace by chat session, so chats in the same working directory had separate station tabs.
Solution
The final change covers 27 files focused on the sharing resolver, tab persistence, terminal selection, settings integration, localization, and supporting tests/audits.
Potential risks
repoPath, not a separateworktreePath; it normalizes separators/trailing slashes but does not resolve symlinks or case aliases.Verification
Scope follow-up
pnpm run typecheck:fast— passedgit diff --check— passedCI follow-up
The initial type-aware lint run identified one new
no-floating-promisesfinding in the Workstation sharing settings adapter. The adapter now handles rejected saves with the shared logger, preserving its synchronous control interface. No lint baseline or suppression was changed.pnpm exec vitest run --config config/vitest.config.ts src/store/workstation/tabs src/store/settings/settingsWatcherEcho.test.ts— 143 tests across 13 files passedpnpm test:typed-lint— all 6 lint-harness tests passedNODE_OPTIONS=--max-old-space-size=6144 pnpm check:typed-lint— passed: 1,102 existing findings, 0 new or increased findingspnpm run typecheck:fast— passedpnpm exec prettier --check src/store/workstation/tabs/workspaceScope.tsandpnpm exec eslint --max-warnings 0 src/store/workstation/tabs/workspaceScope.ts— passedgit -c core.hooksPath=.husky commit; lint-staged (Oxlint, ESLint, Prettier) and tsgo passedgit diff --check origin/develop...HEAD— passedOriginal feature verification
On the isolated branch based on
develop:pnpm run typecheck:fast— passed. Earlier shared-checkout errors were not present on the isolated branchpnpm exec eslint $(git diff --name-only --diff-filter=ACM origin/develop -- '*.ts' '*.tsx') --max-warnings 0— passed after staging the complete changegit diff --cached --check— passedExact targeted test command
pnpm test \ src/config/mainAppPaths.test.ts \ src/config/routes.test.ts \ src/config/settingsSchema/__tests__/chatPanelPosition.test.ts \ src/engines/ChatPanel/ChatPanelTabContextMenu.test.ts \ src/engines/ChatPanel/blocks/ToolCallBlock/cards/OrgtrackEnvelopeCard.test.ts \ src/engines/ChatPanel/components/SessionHeaderActionsMenu.test.ts \ src/hooks/navigation/useAppNavigation.test.ts \ src/hooks/navigation/useRoutineResultNavigation.test.ts \ src/modules/MainApp/WorkManagement/GitHubWorkItemControls.test.ts \ src/modules/ProjectManager/Projects/components/ProjectsPageHeader/ProjectsPageHeader.test.ts \ src/modules/ProjectManager/WorkItems/components/WorkItemsPageHeader/__tests__/WorkItemsHeaderContent.test.ts \ src/modules/WorkStation/AppShell/AgentStationTopHeader.test.ts \ src/modules/WorkStation/AppShell/AppShell.caption.test.ts \ src/modules/WorkStation/AppShell/PinnedWorkbenchChrome.test.ts \ src/modules/WorkStation/AppShell/WorkstationTabHeader.test.ts \ src/modules/WorkStation/AppShell/hooks/useAppShellSimulatorPanelSync.test.ts \ src/modules/WorkStation/AppShell/statusBarVisibility.test.ts \ src/modules/WorkStation/AppShell/useWorkstationTrailingSlot.visibility.test.ts \ src/modules/WorkStation/shared/SessionReplay/useSimulatorReplaySidebar.test.ts \ src/modules/WorkStation/shared/StationModePill/index.test.ts \ src/modules/WorkStation/shared/TabBar/components/SortableTab/__tests__/index.test.ts \ src/modules/shared/layouts/FocusedChatWorkstationRail/FocusedChatWorkstationRail.test.ts \ src/scaffold/NavigationSidebar/connectors/WorkstationSidebarConnector/cloudSessionNativeMenuItems.test.ts \ src/store/chatPanel/__tests__/chatPanelTabPlacementAtom.test.ts \ src/store/session/__tests__/viewAtom.test.ts \ src/store/workstation/stationWindowAtoms.test.ts \ src/store/workstation/tabRegistry/atoms.test.ts \ src/store/workstation/tabs/__tests__/workspaceScope.test.ts \ src/config/settingsSearch.test.ts \ src/modules/shared/layouts/blocks/SettingsSearchDropdown/settingsSearchIndex.test.ts \ src/features/Onboarding/OnboardingModal.test.ts \ src/store/workstation/tabs \ src/store/workstation/codeEditor/terminal/__tests__/terminalTargetAtom.test.ts \ src/services/context/collectors/AdeContextCollector.test.ts \ src/hooks/tabHost/useWorkStationTabs \ src/config/settingsSchemaConflict-resolution follow-up
develop(13f5caa4274ab016e12be155e6b0c6ca3a638c3c) into the PR head and resolved the sole conflict inGeneralSection.tsxby preserving both the Workstation sharing atom and the license-modal statepnpm test src/store/workstation/tabs src/config/settingsSchema src/config/settingsSearch.test.ts src/modules/shared/layouts/blocks/SettingsSearchDropdown/settingsSearchIndex.test.ts— 23 files / 184 tests passedpnpm run typecheck:fast— passed after refreshing the isolated worktree from the committed lockfile withpnpm install --frozen-lockfilepnpm exec prettier --check src/modules/MainApp/Settings/sections/GeneralSection.tsx— passedpnpm exec eslint --max-warnings 0 src/modules/MainApp/Settings/sections/GeneralSection.tsx— passedgit diff --checkandgit diff --cached --check— passed before the merge commit