The first-use directory name and its stored title came from the Client's startup language, so one product decision carried two incompatible requirements: a path addressed by shell commands, tool arguments, @path references, and session logs, and a label a reader reads. The controller now owns the fixed `default-workspace` directory name and the registry titles the Workspace after that same segment, so `workspace.initializeDefault` takes no request at all — WorkspaceInitializeDefaultRequest and its name validation are gone, and the registry resolver returns a path instead of a path and title. No language reaches the Host. Browser consumers label a Workspace through the new `workspaceDisplayTitle`: a title still equal to the automatic one reads as the localized default name from the `common` namespace, every other title reads verbatim. The Workspace browser resolves it once at the store read, so rows, hover card, search meta, and the rename and delete dialogs inherit it; the hero picker and the Conversation chip resolve it too. Confirming a rename stores the text on screen, which is what stops a row following the language.
31 lines
1.4 KiB
TypeScript
31 lines
1.4 KiB
TypeScript
/**
|
|
* Fixed first-use Workspace naming, shared by the Host that creates the
|
|
* directory and by browser consumers that label the resulting row. A pure fold
|
|
* with no imports, so client bundles inline it instead of requesting a
|
|
* module-table row this package does not publish.
|
|
* @module @deepseek-ai/dsh-api-workspace-controller/default-workspace
|
|
*/
|
|
|
|
/**
|
|
* Leaf directory name of the first-use Workspace under
|
|
* `<Documents>/deepseek-harness`. Language-neutral, so one installation keeps
|
|
* one on-disk path across language switches. The registry derives the initial
|
|
* title from this same segment, which is the title
|
|
* {@link workspaceDisplayTitle} recognizes as automatic.
|
|
*/
|
|
export const DEFAULT_WORKSPACE_DIRECTORY = 'default-workspace'
|
|
|
|
/**
|
|
* The text one Workspace is labeled with. A Workspace still carrying the
|
|
* automatic first-use title reads as the caller's localized default name; every
|
|
* other title reads verbatim in every language. A title the user typed as
|
|
* exactly {@link DEFAULT_WORKSPACE_DIRECTORY} is labeled as the default too;
|
|
* nothing else depends on the distinction.
|
|
* @param title - stored Workspace title.
|
|
* @param localizedDefault - the default Workspace name in the active language.
|
|
* @returns the title to display.
|
|
*/
|
|
export function workspaceDisplayTitle(title: string, localizedDefault: string): string {
|
|
return title === DEFAULT_WORKSPACE_DIRECTORY ? localizedDefault : title
|
|
}
|