Rebranding

This commit is contained in:
Andrin 2026-03-07 09:25:44 +01:00
parent 17e7a5b152
commit bbd55d417b
33 changed files with 160 additions and 160 deletions

View file

@ -1,9 +1,9 @@
---
name: Issue
about: Submit an Issue to Void
about: Submit an Issue to HelvetiCode
title: For VSCode-related issues (eg builds), please start the title with `[App]`. Otherwise, start it with `[Bug]` or `[Feature]`.
---
1. Press `Cmd+Shift+P` in Void, and type `Help: About`. Please paste the information here. Also let us know any other relevant details, like the model and provider you're using if applicable.
1. Press `Cmd+Shift+P` in HelvetiCode, and type `Help: About`. Please paste the information here. Also let us know any other relevant details, like the model and provider you're using if applicable.
2. Describe the issue/feature here!

View file

@ -1,19 +1,19 @@
# Welcome to Void.
# Welcome to HelvetiCode.
<div align="center">
<img
src="./src/vs/workbench/browser/parts/editor/media/slice_of_void.png"
alt="Void Welcome"
alt="HelvetiCode Welcome"
width="300"
height="300"
/>
</div>
Void is the open-source Cursor alternative.
HelvetiCode is the open-source Cursor alternative.
Use AI agents on your codebase, checkpoint and visualize changes, and bring any model or host locally. Void sends messages directly to providers without retaining your data.
Use AI agents on your codebase, checkpoint and visualize changes, and bring any model or host locally. HelvetiCode sends messages directly to providers without retaining your data.
This repo contains the full sourcecode for Void. If you're new, welcome!
This repo contains the full sourcecode for HelvetiCode. If you're new, welcome!
- 🧭 [Website](https://voideditor.com)
@ -24,15 +24,15 @@ This repo contains the full sourcecode for Void. If you're new, welcome!
## Note
We've paused work on the Void IDE (this repo) to explore a few novel coding ideas. We want to focus on innovation over feature-parity. Void will continue running, but without maintenance some existing features might stop working over time. Depending on the direction of our new work, we might not resume Void as an IDE.
We've paused work on the HelvetiCode IDE (this repo) to explore a few novel coding ideas. We want to focus on innovation over feature-parity. HelvetiCode will continue running, but without maintenance some existing features might stop working over time. Depending on the direction of our new work, we might not resume Void as an IDE.
We won't be actively reviewing Issues and PRs, but we will respond to all [email](mailto:hello@voideditor.com) inquiries on building and maintaining your own version of Void while we're paused.
We won't be actively reviewing Issues and PRs, but we will respond to all [email](mailto:hello@voideditor.com) inquiries on building and maintaining your own version of HelvetiCode while we're paused.
## Reference
Void is a fork of the [vscode](https://github.com/microsoft/vscode) repository. For a guide to the codebase, see [VOID_CODEBASE_GUIDE](https://github.com/voideditor/void/blob/main/VOID_CODEBASE_GUIDE.md).
HelvetiCode is a fork of the [vscode](https://github.com/microsoft/vscode) repository. For a guide to the codebase, see [VOID_CODEBASE_GUIDE](https://github.com/voideditor/void/blob/main/VOID_CODEBASE_GUIDE.md).
For a guide on how to develop your own version of Void, see [HOW_TO_CONTRIBUTE](https://github.com/voideditor/void/blob/main/HOW_TO_CONTRIBUTE.md) and [void-builder](https://github.com/voideditor/void-builder).
For a guide on how to develop your own version of HelvetiCode, see [HOW_TO_CONTRIBUTE](https://github.com/voideditor/void/blob/main/HOW_TO_CONTRIBUTE.md) and [void-builder](https://github.com/voideditor/void-builder).

View file

@ -1,37 +1,37 @@
{
"nameShort": "Void",
"nameLong": "Void",
"nameShort": "HelvetiCode",
"nameLong": "HelvetiCode",
"voidVersion": "1.4.9",
"voidRelease": "0044",
"applicationName": "void",
"dataFolderName": ".void-editor",
"win32MutexName": "voideditor",
"applicationName": "helveticode",
"dataFolderName": ".helveticode",
"win32MutexName": "helveticode",
"licenseName": "MIT",
"licenseUrl": "https://github.com/voideditor/void/blob/main/LICENSE.txt",
"serverLicenseUrl": "https://github.com/voideditor/void/blob/main/LICENSE.txt",
"serverGreeting": [],
"serverLicense": [],
"serverLicensePrompt": "",
"serverApplicationName": "void-server",
"serverDataFolderName": ".void-server",
"tunnelApplicationName": "void-tunnel",
"win32DirName": "Void",
"win32NameVersion": "Void",
"win32RegValueName": "VoidEditor",
"serverApplicationName": "helveticode-server",
"serverDataFolderName": ".helveticode-server",
"tunnelApplicationName": "helveticode-tunnel",
"win32DirName": "HelvetiCode",
"win32NameVersion": "HelvetiCode",
"win32RegValueName": "HelvetiCode",
"win32x64AppId": "{{9D394D01-1728-45A7-B997-A6C82C5452C3}",
"win32arm64AppId": "{{0668DD58-2BDE-4101-8CDA-40252DF8875D}",
"win32x64UserAppId": "{{8BED5DC1-6C55-46E6-9FE6-18F7E6F7C7F1}",
"win32arm64UserAppId": "{{F6C87466-BC82-4A8F-B0FF-18CA366BA4D8}",
"win32AppUserModelId": "Void.Editor",
"win32ShellNameShort": "V&oid",
"win32TunnelServiceMutex": "void-tunnelservice",
"win32TunnelMutex": "void-tunnel",
"darwinBundleIdentifier": "com.voideditor.code",
"linuxIconName": "void-editor",
"win32AppUserModelId": "HelvetiCode.Editor",
"win32ShellNameShort": "H&elvetiCode",
"win32TunnelServiceMutex": "helveticode-tunnelservice",
"win32TunnelMutex": "helveticode-tunnel",
"darwinBundleIdentifier": "com.helveticode.app",
"linuxIconName": "helveticode",
"licenseFileName": "LICENSE.txt",
"reportIssueUrl": "https://github.com/voideditor/void/issues/new",
"nodejsRepository": "https://nodejs.org",
"urlProtocol": "void",
"urlProtocol": "helveticode",
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"itemUrl": "https://marketplace.visualstudio.com/items"

View file

@ -170,7 +170,7 @@ function getTelemetryLevelSettingDescription(): string {
const restartString = !isWeb ? localize('telemetry.restart', 'Microsoft says \"Some third party extensions might not respect this setting. Consult the specific extension\'s documentation to be sure. A full restart of the application is necessary for crash reporting changes to take effect.\"') : '';
// Void removed these
// HelvetiCode removed these
// const crashReportsHeader = localize('telemetry.crashReports', "Crash Reports");
// const errorsHeader = localize('telemetry.errors', "Error Telemetry");
// const usageHeader = localize('telemetry.usage', "Usage Data");
@ -191,7 +191,7 @@ ${telemetryText}
${restartString}
Void separately records basic usage like the number of messages people are sending. If you'd like to disable Void metrics, you may do so in Void's Settings.
HelvetiCode separately records basic usage like the number of messages people are sending. If you'd like to disable HelvetiCode metrics, you may do so in HelvetiCode's Settings.
`;
return telemetryDescription;

View file

@ -27,7 +27,7 @@ const auxiliaryBarLeftOffIcon = registerIcon('auxiliarybar-left-off-layout-icon'
export class ToggleAuxiliaryBarAction extends Action2 {
static readonly ID = 'workbench.action.toggleAuxiliaryBar';
static readonly LABEL = localize2('toggleAuxiliaryBar', "Toggle Void Side Bar Visibility");
static readonly LABEL = localize2('toggleAuxiliaryBar', "Toggle HelvetiCode Side Bar Visibility");
constructor() {
super({
@ -35,14 +35,14 @@ export class ToggleAuxiliaryBarAction extends Action2 {
title: ToggleAuxiliaryBarAction.LABEL,
toggled: {
condition: AuxiliaryBarVisibleContext,
title: localize('closeSecondarySideBar', 'Hide Void Side Bar'),
title: localize('closeSecondarySideBar', 'Hide HelvetiCode Side Bar'),
icon: closeIcon,
mnemonicTitle: localize({ key: 'secondary sidebar mnemonic', comment: ['&& denotes a mnemonic'] }, "Secondary Si&&de Bar"),
},
icon: closeIcon, // Ensures no flickering when using toggled.icon
category: Categories.View,
metadata: {
description: localize('openAndCloseAuxiliaryBar', 'Open/Show and Close/Hide Void Side Bar'),
description: localize('openAndCloseAuxiliaryBar', 'Open/Show and Close/Hide HelvetiCode Side Bar'),
},
f1: true,
keybinding: {
@ -81,7 +81,7 @@ registerAction2(class extends Action2 {
constructor() {
super({
id: 'workbench.action.closeAuxiliaryBar',
title: localize2('closeSecondarySideBar', 'Hide Void Side Bar'),
title: localize2('closeSecondarySideBar', 'Hide HelvetiCode Side Bar'),
category: Categories.View,
precondition: AuxiliaryBarVisibleContext,
f1: true,
@ -95,7 +95,7 @@ registerAction2(class extends Action2 {
registerAction2(class FocusAuxiliaryBarAction extends Action2 {
static readonly ID = 'workbench.action.focusAuxiliaryBar';
static readonly LABEL = localize2('focusAuxiliaryBar', "Focus into Void Side Bar");
static readonly LABEL = localize2('focusAuxiliaryBar', "Focus into HelvetiCode Side Bar");
constructor() {
super({
@ -128,7 +128,7 @@ MenuRegistry.appendMenuItems([
group: '2_pane_toggles',
command: {
id: ToggleAuxiliaryBarAction.ID,
title: localize('toggleSecondarySideBar', "Toggle Void Side Bar"),
title: localize('toggleSecondarySideBar', "Toggle HelvetiCode Side Bar"),
toggled: { condition: AuxiliaryBarVisibleContext, icon: auxiliaryBarLeftIcon },
icon: auxiliaryBarLeftOffIcon,
},
@ -141,7 +141,7 @@ MenuRegistry.appendMenuItems([
group: '2_pane_toggles',
command: {
id: ToggleAuxiliaryBarAction.ID,
title: localize('toggleSecondarySideBar', "Toggle Void Side Bar"),
title: localize('toggleSecondarySideBar', "Toggle HelvetiCode Side Bar"),
toggled: { condition: AuxiliaryBarVisibleContext, icon: auxiliaryBarRightIcon },
icon: auxiliaryBarRightOffIcon,
},
@ -154,7 +154,7 @@ MenuRegistry.appendMenuItems([
group: '3_workbench_layout_move',
command: {
id: ToggleAuxiliaryBarAction.ID,
title: localize2('hideAuxiliaryBar', 'Hide Void Side Bar'),
title: localize2('hideAuxiliaryBar', 'Hide HelvetiCode Side Bar'),
},
when: ContextKeyExpr.and(AuxiliaryBarVisibleContext, ContextKeyExpr.equals('viewContainerLocation', ViewContainerLocationToString(ViewContainerLocation.AuxiliaryBar))),
order: 2
@ -166,7 +166,7 @@ registerAction2(class extends SwitchCompositeViewAction {
constructor() {
super({
id: 'workbench.action.previousAuxiliaryBarView',
title: localize2('previousAuxiliaryBarView', 'Previous Void Side Bar View'),
title: localize2('previousAuxiliaryBarView', 'Previous HelvetiCode Side Bar View'),
category: Categories.View,
f1: true
}, ViewContainerLocation.AuxiliaryBar, -1);
@ -177,7 +177,7 @@ registerAction2(class extends SwitchCompositeViewAction {
constructor() {
super({
id: 'workbench.action.nextAuxiliaryBarView',
title: localize2('nextAuxiliaryBarView', 'Next Void Side Bar View'),
title: localize2('nextAuxiliaryBarView', 'Next HelvetiCode Side Bar View'),
category: Categories.View,
f1: true
}, ViewContainerLocation.AuxiliaryBar, 1);

View file

@ -232,9 +232,9 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart {
actions.push(...[
new Separator(),
new SubmenuAction('workbench.action.panel.position', localize('activity bar position', "Activity Bar Position"), positionActions),
toAction({ id: ToggleSidebarPositionAction.ID, label: currentPositionRight ? localize('move second side bar left', "Move Void Side Bar Left") : localize('move second side bar right', "Move Void Side Bar Right"), run: () => this.commandService.executeCommand(ToggleSidebarPositionAction.ID) }),
toAction({ id: ToggleSidebarPositionAction.ID, label: currentPositionRight ? localize('move second side bar left', "Move HelvetiCode Side Bar Left") : localize('move second side bar right', "Move HelvetiCode Side Bar Right"), run: () => this.commandService.executeCommand(ToggleSidebarPositionAction.ID) }),
toggleShowLabelsAction,
toAction({ id: ToggleAuxiliaryBarAction.ID, label: localize('hide second side bar', "Hide Void Side Bar"), run: () => this.commandService.executeCommand(ToggleAuxiliaryBarAction.ID) })
toAction({ id: ToggleAuxiliaryBarAction.ID, label: localize('hide second side bar', "Hide HelvetiCode Side Bar"), run: () => this.commandService.executeCommand(ToggleAuxiliaryBarAction.ID) })
]);
}

View file

@ -204,7 +204,7 @@ export class PaneCompositeBar extends Disposable {
private createMoveAction(viewContainer: ViewContainer, newLocation: ViewContainerLocation, defaultLocation: ViewContainerLocation): IAction {
return toAction({
id: `moveViewContainerTo${newLocation}`,
label: newLocation === ViewContainerLocation.Panel ? localize('panel', "Panel") : newLocation === ViewContainerLocation.Sidebar ? localize('sidebar', "Primary Side Bar") : localize('auxiliarybar', "Void Side Bar"),
label: newLocation === ViewContainerLocation.Panel ? localize('panel', "Panel") : newLocation === ViewContainerLocation.Sidebar ? localize('sidebar', "Primary Side Bar") : localize('auxiliarybar', "HelvetiCode Side Bar"),
run: () => {
let index: number | undefined;
if (newLocation !== defaultLocation) {

View file

@ -355,14 +355,14 @@ class MoveViewsBetweenPanelsAction extends Action2 {
}
}
// --- Move Panel Views To Void Side Bar
// --- Move Panel Views To HelvetiCode Side Bar
class MovePanelToSidePanelAction extends MoveViewsBetweenPanelsAction {
static readonly ID = 'workbench.action.movePanelToSidePanel';
constructor() {
super(ViewContainerLocation.Panel, ViewContainerLocation.AuxiliaryBar, {
id: MovePanelToSidePanelAction.ID,
title: localize2('movePanelToSecondarySideBar', "Move Panel Views To Void Side Bar"),
title: localize2('movePanelToSecondarySideBar', "Move Panel Views To HelvetiCode Side Bar"),
category: Categories.View,
f1: false
});
@ -374,7 +374,7 @@ export class MovePanelToSecondarySideBarAction extends MoveViewsBetweenPanelsAct
constructor() {
super(ViewContainerLocation.Panel, ViewContainerLocation.AuxiliaryBar, {
id: MovePanelToSecondarySideBarAction.ID,
title: localize2('movePanelToSecondarySideBar', "Move Panel Views To Void Side Bar"),
title: localize2('movePanelToSecondarySideBar', "Move Panel Views To HelvetiCode Side Bar"),
category: Categories.View,
f1: true
});
@ -384,7 +384,7 @@ export class MovePanelToSecondarySideBarAction extends MoveViewsBetweenPanelsAct
registerAction2(MovePanelToSidePanelAction);
registerAction2(MovePanelToSecondarySideBarAction);
// --- Move Void Side Bar Views To Panel
// --- Move HelvetiCode Side Bar Views To Panel
class MoveSidePanelToPanelAction extends MoveViewsBetweenPanelsAction {
static readonly ID = 'workbench.action.moveSidePanelToPanel';
@ -392,7 +392,7 @@ class MoveSidePanelToPanelAction extends MoveViewsBetweenPanelsAction {
constructor() {
super(ViewContainerLocation.AuxiliaryBar, ViewContainerLocation.Panel, {
id: MoveSidePanelToPanelAction.ID,
title: localize2('moveSidePanelToPanel', "Move Void Side Bar Views To Panel"),
title: localize2('moveSidePanelToPanel', "Move HelvetiCode Side Bar Views To Panel"),
category: Categories.View,
f1: false
});
@ -405,7 +405,7 @@ export class MoveSecondarySideBarToPanelAction extends MoveViewsBetweenPanelsAct
constructor() {
super(ViewContainerLocation.AuxiliaryBar, ViewContainerLocation.Panel, {
id: MoveSecondarySideBarToPanelAction.ID,
title: localize2('moveSidePanelToPanel', "Move Void Side Bar Views To Panel"),
title: localize2('moveSidePanelToPanel', "Move HelvetiCode Side Bar Views To Panel"),
category: Categories.View,
f1: true
});

View file

@ -509,7 +509,7 @@ const registry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Con
'type': 'string',
'enum': ['left', 'right'],
'default': 'left',
'description': localize('sideBarLocation', "Controls the location of the primary side bar and activity bar. They can either show on the left or right of the workbench. The Void side bar will show on the opposite side of the workbench.")
'description': localize('sideBarLocation', "Controls the location of the primary side bar and activity bar. They can either show on the left or right of the workbench. The HelvetiCode side bar will show on the opposite side of the workbench.")
},
'workbench.panel.showLabels': {
'type': 'boolean',
@ -547,12 +547,12 @@ const registry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Con
'type': 'string',
'enum': ['default', 'top', 'bottom', 'hidden'],
'default': 'default',
'markdownDescription': localize({ comment: ['This is the description for a setting'], key: 'activityBarLocation' }, "Controls the location of the Activity Bar relative to the Primary and Void Side Bars."), // Void side bar
'markdownDescription': localize({ comment: ['This is the description for a setting'], key: 'activityBarLocation' }, "Controls the location of the Activity Bar relative to the Primary and HelvetiCode Side Bars."), // HelvetiCode side bar
'enumDescriptions': [
localize('workbench.activityBar.location.default', "Show the Activity Bar on the side of the Primary Side Bar and on top of the Void Side Bar."), // Void side bar
localize('workbench.activityBar.location.top', "Show the Activity Bar on top of the Primary and Void Side Bars."), // Void side bar
localize('workbench.activityBar.location.bottom', "Show the Activity Bar at the bottom of the Primary and Void Side Bars."), // Void side bar
localize('workbench.activityBar.location.hide', "Hide the Activity Bar in the Primary and Void Side Bars.") // Void side bar
localize('workbench.activityBar.location.default', "Show the Activity Bar on the side of the Primary Side Bar and on top of the HelvetiCode Side Bar."), // HelvetiCode side bar
localize('workbench.activityBar.location.top', "Show the Activity Bar on top of the Primary and HelvetiCode Side Bars."), // HelvetiCode side bar
localize('workbench.activityBar.location.bottom', "Show the Activity Bar at the bottom of the Primary and HelvetiCode Side Bars."), // HelvetiCode side bar
localize('workbench.activityBar.location.hide', "Hide the Activity Bar in the Primary and HelvetiCode Side Bars.") // HelvetiCode side bar
],
},
'workbench.activityBar.iconClickBehavior': {
@ -612,7 +612,7 @@ const registry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Con
'description': localize('workbench.hover.delay', "Controls the delay in milliseconds after which the hover is shown for workbench items (ex. some extension provided tree view items). Already visible items may require a refresh before reflecting this setting change."),
// Testing has indicated that on Windows and Linux 500 ms matches the native hovers most closely.
// On Mac, the delay is 1500.
'default': 300, // Void changed this from isMacintosh ? 1500 : 500,
'default': 300, // HelvetiCode changed this from isMacintosh ? 1500 : 500,
'minimum': 0
},
'workbench.reduceMotion': {

View file

@ -151,7 +151,7 @@ export class ViewQuickAccessProvider extends PickerQuickAccessProvider<IViewQuic
// Viewlets / Panels
addPaneComposites(ViewContainerLocation.Sidebar, localize('views', "Side Bar"));
addPaneComposites(ViewContainerLocation.Panel, localize('panels', "Panel"));
addPaneComposites(ViewContainerLocation.AuxiliaryBar, localize('Void side bar', "Void Side Bar"));
addPaneComposites(ViewContainerLocation.AuxiliaryBar, localize('Void side bar', "HelvetiCode Side Bar"));
const addPaneCompositeViews = (location: ViewContainerLocation) => {
const paneComposites = this.paneCompositeService.getPaneComposites(location);

View file

@ -284,7 +284,7 @@ class EditCodeService extends Disposable implements IEditCodeService {
// secondary: [{
// id: 'void.onerror.opensettings',
// enabled: true,
// label: `Open Void's settings`,
// label: `Open HelvetiCode's settings`,
// tooltip: '',
// class: undefined,
// run: () => { this._commandService.executeCommand(VOID_OPEN_SETTINGS_ACTION_ID) }
@ -743,7 +743,7 @@ class EditCodeService extends Disposable implements IEditCodeService {
const elt: IUndoRedoElement = {
type: UndoRedoElementType.Resource,
resource: uri,
label: 'Void Agent',
label: 'HelvetiCode Agent',
code: 'undoredo.editCode',
undo: async () => { opts?.onWillUndo?.(); await this._restoreVoidFileSnapshot(uri, beforeSnapshot) },
redo: async () => { if (afterSnapshot) await this._restoreVoidFileSnapshot(uri, afterSnapshot) }
@ -1968,7 +1968,7 @@ class EditCodeService extends Disposable implements IEditCodeService {
const blocks = extractSearchReplaceBlocks(fullText)
if (blocks.length === 0) {
this._notificationService.info(`Void: We ran Fast Apply, but the LLM didn't output any changes.`)
this._notificationService.info(`HelvetiCode: We ran Fast Apply, but the LLM didn't output any changes.`)
}
this._writeURIText(uri, originalFileCode, 'wholeFileRange', { shouldRealignDiffAreas: true })

View file

@ -195,10 +195,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
if (fromEditor === 'VS Code') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Code', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Code', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.vscode', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -207,10 +207,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Cursor') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Cursor', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Cursor', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.cursor', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -219,10 +219,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Windsurf') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Windsurf', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Windsurf', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, 'Library', 'Application Support', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.windsurf', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -238,10 +238,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
if (fromEditor === 'VS Code') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Code', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Code', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.vscode', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -250,10 +250,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Cursor') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Cursor', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Cursor', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.cursor', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -262,10 +262,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Windsurf') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Windsurf', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Windsurf', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.config', 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.windsurf', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), homeDir, '.void-editor', 'extensions'),
@ -283,10 +283,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
if (fromEditor === 'VS Code') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Code', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Code', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.vscode', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.void-editor', 'extensions'),
@ -295,10 +295,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Cursor') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Cursor', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Cursor', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.cursor', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.void-editor', 'extensions'),
@ -307,10 +307,10 @@ const transferTheseFilesOfOS = (os: 'mac' | 'windows' | 'linux' | null, fromEdit
} else if (fromEditor === 'Windsurf') {
return [{
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Windsurf', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'settings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'settings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Windsurf', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'Void', 'User', 'keybindings.json'),
to: URI.joinPath(URI.from({ scheme: 'file' }), appdata, 'HelvetiCode', 'User', 'keybindings.json'),
}, {
from: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.windsurf', 'extensions'),
to: URI.joinPath(URI.from({ scheme: 'file' }), userprofile, '.void-editor', 'extensions'),

View file

@ -17,7 +17,7 @@ class FilePromptActionService extends Action2 {
constructor() {
super({
id: FilePromptActionService.VOID_COPY_FILE_PROMPT_ID,
title: localize2('voidCopyPrompt', 'Void: Copy Prompt'),
title: localize2('voidCopyPrompt', 'HelvetiCode: Copy Prompt'),
menu: [{
id: MenuId.ExplorerContext,
group: '8_void',

View file

@ -38,7 +38,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_CTRL_K_ACTION_ID,
f1: true,
title: localize2('voidQuickEditAction', 'Void: Quick Edit'),
title: localize2('voidQuickEditAction', 'HelvetiCode: Quick Edit'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyCode.KeyK,
weight: KeybindingWeight.VoidExtension,

View file

@ -351,14 +351,14 @@ const ApplyButtonsForEdit = ({
setApplying(newApplyingUri)
if (!applyDonePromise) {
notificationService.info(`Void Error: We couldn't run Apply here. ${uri === 'current' ? 'This Apply block wants to run on the current file, but you might not have a file open.' : `This Apply block wants to run on ${uri.fsPath}, but it might not exist.`}`)
notificationService.info(`HelvetiCode Error: We couldn't run Apply here. ${uri === 'current' ? 'This Apply block wants to run on the current file, but you might not have a file open.' : `This Apply block wants to run on ${uri.fsPath}, but it might not exist.`}`)
}
// catch any errors by interrupting the stream
applyDonePromise?.catch(e => {
const uri = getUriBeingApplied(applyBoxId)
if (uri) editCodeService.interruptURIStreaming({ uri: uri })
notificationService.info(`Void Error: There was a problem running Apply: ${e}.`)
notificationService.info(`HelvetiCode Error: There was a problem running Apply: ${e}.`)
})
metricsService.capture('Apply Code', { length: codeStr.length }) // capture the length only

View file

@ -246,7 +246,7 @@ const _registerAccessor = (accessor: ServicesAccessor) => {
// -- services --
export const useAccessor = () => {
if (!reactAccessor_) {
throw new Error(`⚠️ Void useAccessor was called before _registerServices!`)
throw new Error(`⚠️ HelvetiCode useAccessor was called before _registerServices!`)
}
return { get: <S extends keyof ReactAccessor,>(service: S): ReactAccessor[S] => reactAccessor_![service] }

View file

@ -275,7 +275,7 @@ const AddProvidersPage = ({ pageIndex, setPageIndex }: { pageIndex: number, setP
// OnboardingPage
// title:
// div
// "Welcome to Void"
// "Welcome to HelvetiCode"
// image
// content:<></>
// title
@ -285,7 +285,7 @@ const AddProvidersPage = ({ pageIndex, setPageIndex }: { pageIndex: number, setP
// OnboardingPage
// title:
// div
// "How would you like to use Void?"
// "How would you like to use HelvetiCode?"
// content:
// ModelQuestionContent
// |
@ -547,7 +547,7 @@ const VoidOnboardingContent = () => {
voidMetricsService.capture('Completed Onboarding', { selectedProviderName, wantToUseOption })
}}
ringSize={voidSettingsState.globalSettings.isOnboardingComplete ? 'screen' : undefined}
>Enter the Void</PrimaryActionButton>
>Enter HelvetiCode</PrimaryActionButton>
</div>
</div>
@ -563,7 +563,7 @@ const VoidOnboardingContent = () => {
// can be md
const detailedDescOfWantToUseOption: { [wantToUseOption in WantToUseOption]: string } = {
smart: "Most intelligent and best for agent mode.",
private: "Private-hosted so your data never leaves your computer or network. [Email us](mailto:founders@voideditor.com) for help setting up at your company.",
private: "Private-hosted so your data never leaves your computer or network. [Email us](mailto:hello@helveticode.ch) for help setting up at your company.",
cheap: "Use great deals like Gemini 2.5 Pro, or self-host a model with Ollama or vLLM for free.",
all: "",
}
@ -596,9 +596,9 @@ const VoidOnboardingContent = () => {
0: <OnboardingPageShell
content={
<div className='flex flex-col items-center gap-8'>
<div className="text-5xl font-light text-center">Welcome to Void</div>
<div className="text-5xl font-light text-center">Welcome to HelvetiCode</div>
{/* Slice of Void image */}
{/* Slice of HelvetiCode image */}
<div className='max-w-md w-full h-[30vh] mx-auto flex items-center justify-center'>
{!isLinux && <VoidIcon />}
</div>

View file

@ -321,10 +321,10 @@ const SimpleModelSettingsDialog = ({
{/* Display model recognition status */}
<div className="text-sm text-void-fg-3 mb-4">
{type === 'default' ? `${modelName} comes packaged with Void, so you shouldn't need to change these settings.`
{type === 'default' ? `${modelName} comes packaged with HelvetiCode, so you shouldn't need to change these settings.`
: isUnrecognizedModel
? `Model not recognized by Void.`
: `Void recognizes ${modelName} ("${recognizedModelName}").`}
? `Model not recognized by HelvetiCode.`
: `HelvetiCode recognizes ${modelName} ("${recognizedModelName}").`}
</div>
@ -831,7 +831,7 @@ export const OllamaSetupInstructions = ({ sayWeAutoDetect }: { sayWeAutoDetect?:
>
<ChatMarkdownRender string={`3. Run \`ollama pull your_model\` to install a model.`} chatMessageLocation={undefined} />
</div>
{sayWeAutoDetect && <div className=' pl-6'><ChatMarkdownRender string={`Void automatically detects locally running models and enables them.`} chatMessageLocation={undefined} /></div>}
{sayWeAutoDetect && <div className=' pl-6'><ChatMarkdownRender string={`HelvetiCode automatically detects locally running models and enables them.`} chatMessageLocation={undefined} /></div>}
</div>
}
@ -1064,12 +1064,12 @@ export const Settings = () => {
if (t === 'Chats') {
// Export chat threads
dataStr = JSON.stringify(chatThreadsService.state, null, 2)
downloadName = 'void-chats.json'
downloadName = 'helveticode-chats.json'
}
else if (t === 'Settings') {
// Export user settings
dataStr = JSON.stringify(voidSettingsService.state, null, 2)
downloadName = 'void-settings.json'
downloadName = 'helveticode-settings.json'
}
else {
dataStr = ''
@ -1161,7 +1161,7 @@ export const Settings = () => {
<div className='max-w-3xl'>
<h1 className='text-2xl w-full'>{`Void's Settings`}</h1>
<h1 className='text-2xl w-full'>{`HelvetiCode's Settings`}</h1>
<div className='w-full h-[1px] my-2' />
@ -1189,7 +1189,7 @@ export const Settings = () => {
<div className={shouldShowTab('localProviders') ? `` : 'hidden'}>
<ErrorBoundary>
<h2 className={`text-3xl mb-2`}>Local Providers</h2>
<h3 className={`text-void-fg-3 mb-2`}>{`Void can access any model that you host locally. We automatically detect your local models by default.`}</h3>
<h3 className={`text-void-fg-3 mb-2`}>{`HelvetiCode can access any model that you host locally. We automatically detect your local models by default.`}</h3>
<div className='opacity-80 mb-4'>
<OllamaSetupInstructions sayWeAutoDetect={true} />
@ -1203,7 +1203,7 @@ export const Settings = () => {
<div className={shouldShowTab('providers') ? `` : 'hidden'}>
<ErrorBoundary>
<h2 className={`text-3xl mb-2`}>Main Providers</h2>
<h3 className={`text-void-fg-3 mb-2`}>{`Void can access models from Anthropic, OpenAI, OpenRouter, and more.`}</h3>
<h3 className={`text-void-fg-3 mb-2`}>{`HelvetiCode can access models from Anthropic, OpenAI, OpenRouter, and more.`}</h3>
<VoidProviderSettings providerNames={nonlocalProviderNames} />
</ErrorBoundary>
@ -1343,7 +1343,7 @@ export const Settings = () => {
<div className='w-full'>
<h4 className={`text-base`}>Editor</h4>
<div className='text-sm text-void-fg-3 mt-1'>{`Settings that control the visibility of Void suggestions in the code editor.`}</div>
<div className='text-sm text-void-fg-3 mt-1'>{`Settings that control the visibility of HelvetiCode suggestions in the code editor.`}</div>
<div className='my-2'>
{/* Auto Accept Switch */}
@ -1396,7 +1396,7 @@ export const Settings = () => {
<div>
<ErrorBoundary>
<h2 className='text-3xl mb-2'>One-Click Switch</h2>
<h4 className='text-void-fg-3 mb-4'>{`Transfer your editor settings into Void.`}</h4>
<h4 className='text-void-fg-3 mb-4'>{`Transfer your editor settings into HelvetiCode.`}</h4>
<div className='flex flex-col gap-2'>
<OneClickSwitchButton className='w-48' fromEditor="VS Code" />
@ -1409,7 +1409,7 @@ export const Settings = () => {
{/* Import/Export section */}
<div>
<h2 className='text-3xl mb-2'>Import/Export</h2>
<h4 className='text-void-fg-3 mb-4'>{`Transfer Void's settings and chats in and out of Void.`}</h4>
<h4 className='text-void-fg-3 mb-4'>{`Transfer HelvetiCode's settings and chats in and out of HelvetiCode.`}</h4>
<div className='flex flex-col gap-8'>
{/* Settings Subcategory */}
<div className='flex flex-col gap-2 max-w-48 w-full'>
@ -1470,7 +1470,7 @@ export const Settings = () => {
{/* Metrics section */}
<div className='max-w-[600px]'>
<h2 className={`text-3xl mb-2`}>Metrics</h2>
<h4 className={`text-void-fg-3 mb-4`}>Very basic anonymous usage tracking helps us keep Void running smoothly. You may opt out below. Regardless of this setting, Void never sees your code, messages, or API keys.</h4>
<h4 className={`text-void-fg-3 mb-4`}>Very basic anonymous usage tracking helps us keep HelvetiCode running smoothly. You may opt out below. Regardless of this setting, HelvetiCode never sees your code, messages, or API keys.</h4>
<div className='my-2'>
{/* Disable All Metrics Switch */}
@ -1496,7 +1496,7 @@ export const Settings = () => {
<h4 className={`text-void-fg-3 mb-4`}>
<ChatMarkdownRender inPTag={true} string={`
System instructions to include with all AI requests.
Alternatively, place a \`.voidrules\` file in the root of your workspace.
Alternatively, place a \`.helveticoderules\` file in the root of your workspace.
`} chatMessageLocation={undefined} />
</h4>
<ErrorBoundary>
@ -1519,7 +1519,7 @@ Alternatively, place a \`.voidrules\` file in the root of your workspace.
</div>
</ErrorBoundary>
<div className='text-void-fg-3 text-xs mt-1'>
{`When disabled, Void will not include anything in the system message except for content you specified above.`}
{`When disabled, HelvetiCode will not include anything in the system message except for content you specified above.`}
</div>
</div>
</div>

View file

@ -64,7 +64,7 @@ export const roundRangeToLines = (range: IRange | null | undefined, options: { e
const VOID_OPEN_SIDEBAR_ACTION_ID = 'void.sidebar.open'
registerAction2(class extends Action2 {
constructor() {
super({ id: VOID_OPEN_SIDEBAR_ACTION_ID, title: localize2('voidOpenSidebar', 'Void: Open Sidebar'), f1: true });
super({ id: VOID_OPEN_SIDEBAR_ACTION_ID, title: localize2('voidOpenSidebar', 'HelvetiCode: Open Sidebar'), f1: true });
}
async run(accessor: ServicesAccessor): Promise<void> {
const viewsService = accessor.get(IViewsService)
@ -81,7 +81,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_CTRL_L_ACTION_ID,
f1: true,
title: localize2('voidCmdL', 'Void: Add Selection to Chat'),
title: localize2('voidCmdL', 'HelvetiCode: Add Selection to Chat'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyCode.KeyL,
weight: KeybindingWeight.VoidExtension
@ -240,7 +240,7 @@ registerAction2(class extends Action2 {
constructor() {
super({
id: 'void.settingsAction',
title: `Void's Settings`,
title: `HelvetiCode's Settings`,
icon: { id: 'settings-gear' },
menu: [{ id: MenuId.ViewTitle, group: 'navigation', when: ContextKeyExpr.equals('view', VOID_VIEW_ID), }]
});

View file

@ -98,7 +98,7 @@ class SidebarViewPane extends ViewPane {
// ---------- Register viewpane inside the void container ----------
// const voidThemeIcon = Codicon.symbolObject;
// const voidViewIcon = registerIcon('void-view-icon', voidThemeIcon, localize('voidViewIcon', 'View icon of the Void chat view.'));
// const voidViewIcon = registerIcon('void-view-icon', voidThemeIcon, localize('voidViewIcon', 'View icon of the HelvetiCode chat view.'));
// called VIEWLET_ID in other places for some reason
export const VOID_VIEW_CONTAINER_ID = 'workbench.view.void'
@ -108,7 +108,7 @@ export const VOID_VIEW_ID = VOID_VIEW_CONTAINER_ID
const viewContainerRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
const container = viewContainerRegistry.registerViewContainer({
id: VOID_VIEW_CONTAINER_ID,
title: nls.localize2('voidContainer', 'Chat'), // this is used to say "Void" (Ctrl + L)
title: nls.localize2('voidContainer', 'Chat'), // this is used to say "HelvetiCode" (Ctrl + L)
ctorDescriptor: new SyncDescriptor(ViewPaneContainer, [VOID_VIEW_CONTAINER_ID, {
mergeViewWithContainerWhenSingleView: true,
orientation: Orientation.HORIZONTAL,
@ -154,7 +154,7 @@ registerAction2(class extends Action2 {
constructor() {
super({
id: VOID_OPEN_SIDEBAR_ACTION_ID,
title: 'Open Void Sidebar',
title: 'Open HelvetiCode Sidebar',
})
}
run(accessor: ServicesAccessor): void {

View file

@ -53,13 +53,13 @@ export const ITerminalToolService = createDecorator<ITerminalToolService>('Termi
export const persistentTerminalNameOfId = (id: string) => {
if (id === '1') return 'Void Agent'
return `Void Agent (${id})`
if (id === '1') return 'HelvetiCode Agent'
return `HelvetiCode Agent (${id})`
}
export const idOfPersistentTerminalName = (name: string) => {
if (name === 'Void Agent') return '1'
if (name === 'HelvetiCode Agent') return '1'
const match = name.match(/Void Agent \((\d+)\)/)
const match = name.match(/HelvetiCode Agent \((\d+)\)/)
if (!match) return null
if (Number.isInteger(match[1]) && Number(match[1]) >= 1) return match[1]
return null
@ -297,7 +297,7 @@ export class TerminalToolService extends Disposable implements ITerminalToolServ
const cmdCap = await this._waitForCommandDetectionCapability(terminal)
// if (!cmdCap) throw new Error(`There was an error using the terminal: CommandDetection capability did not mount yet. Please try again in a few seconds or report this to the Void team.`)
// if (!cmdCap) throw new Error(`There was an error using the terminal: CommandDetection capability did not mount yet. Please try again in a few seconds or report this to the HelvetiCode team.`)
// Prefer the structured command-detection capability when available

View file

@ -538,7 +538,7 @@ export class ToolsService implements IToolsService {
}
// normal command
if (resolveReason.type === 'timeout') {
return `${result_}\nTerminal command ran, but was automatically killed by Void after ${MAX_TERMINAL_INACTIVE_TIME}s of inactivity and did not finish successfully. To try with more time, open a persistent terminal and run the command there.`
return `${result_}\nTerminal command ran, but was automatically killed by HelvetiCode after ${MAX_TERMINAL_INACTIVE_TIME}s of inactivity and did not finish successfully. To try with more time, open a persistent terminal and run the command there.`
}
throw new Error(`Unexpected internal error: Terminal command did not resolve with a valid reason.`)
},

View file

@ -572,7 +572,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_ACCEPT_DIFF_ACTION_ID,
f1: true,
title: localize2('voidAcceptDiffAction', 'Void: Accept Diff'),
title: localize2('voidAcceptDiffAction', 'HelvetiCode: Accept Diff'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.Enter,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.Enter },
@ -615,7 +615,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_REJECT_DIFF_ACTION_ID,
f1: true,
title: localize2('voidRejectDiffAction', 'Void: Reject Diff'),
title: localize2('voidRejectDiffAction', 'HelvetiCode: Reject Diff'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.Backspace,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.Backspace },
@ -656,7 +656,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_GOTO_NEXT_DIFF_ACTION_ID,
f1: true,
title: localize2('voidGoToNextDiffAction', 'Void: Go to Next Diff'),
title: localize2('voidGoToNextDiffAction', 'HelvetiCode: Go to Next Diff'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.DownArrow,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.DownArrow },
@ -683,7 +683,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_GOTO_PREV_DIFF_ACTION_ID,
f1: true,
title: localize2('voidGoToPrevDiffAction', 'Void: Go to Previous Diff'),
title: localize2('voidGoToPrevDiffAction', 'HelvetiCode: Go to Previous Diff'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.UpArrow,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.UpArrow },
@ -710,7 +710,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_GOTO_NEXT_URI_ACTION_ID,
f1: true,
title: localize2('voidGoToNextUriAction', 'Void: Go to Next File with Diffs'),
title: localize2('voidGoToNextUriAction', 'HelvetiCode: Go to Next File with Diffs'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.RightArrow,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.RightArrow },
@ -737,7 +737,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_GOTO_PREV_URI_ACTION_ID,
f1: true,
title: localize2('voidGoToPrevUriAction', 'Void: Go to Previous File with Diffs'),
title: localize2('voidGoToPrevUriAction', 'HelvetiCode: Go to Previous File with Diffs'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.LeftArrow,
mac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.LeftArrow },
@ -764,7 +764,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_ACCEPT_FILE_ACTION_ID,
f1: true,
title: localize2('voidAcceptFileAction', 'Void: Accept All Diffs in Current File'),
title: localize2('voidAcceptFileAction', 'HelvetiCode: Accept All Diffs in Current File'),
keybinding: {
primary: KeyMod.Alt | KeyMod.Shift | KeyCode.Enter,
weight: KeybindingWeight.VoidExtension,
@ -795,7 +795,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_REJECT_FILE_ACTION_ID,
f1: true,
title: localize2('voidRejectFileAction', 'Void: Reject All Diffs in Current File'),
title: localize2('voidRejectFileAction', 'HelvetiCode: Reject All Diffs in Current File'),
keybinding: {
primary: KeyMod.Alt | KeyMod.Shift | KeyCode.Backspace,
weight: KeybindingWeight.VoidExtension,
@ -826,7 +826,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_ACCEPT_ALL_DIFFS_ACTION_ID,
f1: true,
title: localize2('voidAcceptAllDiffsAction', 'Void: Accept All Diffs in All Files'),
title: localize2('voidAcceptAllDiffsAction', 'HelvetiCode: Accept All Diffs in All Files'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Enter,
weight: KeybindingWeight.VoidExtension,
@ -851,7 +851,7 @@ registerAction2(class extends Action2 {
super({
id: VOID_REJECT_ALL_DIFFS_ACTION_ID,
f1: true,
title: localize2('voidRejectAllDiffsAction', 'Void: Reject All Diffs in All Files'),
title: localize2('voidRejectAllDiffsAction', 'HelvetiCode: Reject All Diffs in All Files'),
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Backspace,
weight: KeybindingWeight.VoidExtension,

View file

@ -186,9 +186,9 @@ class GenerateCommitMessageAction extends Action2 {
constructor() {
super({
id: 'void.generateCommitMessageAction',
title: localize2('voidCommitMessagePrompt', 'Void: Generate Commit Message'),
title: localize2('voidCommitMessagePrompt', 'HelvetiCode: Generate Commit Message'),
icon: ThemeIcon.fromId('sparkle'),
tooltip: localize2('voidCommitMessagePromptTooltip', 'Void: Generate Commit Message'),
tooltip: localize2('voidCommitMessagePromptTooltip', 'HelvetiCode: Generate Commit Message'),
f1: true,
menu: [{
id: MenuId.SCMInputBox,
@ -208,9 +208,9 @@ class LoadingGenerateCommitMessageAction extends Action2 {
constructor() {
super({
id: 'void.loadingGenerateCommitMessageAction',
title: localize2('voidCommitMessagePromptCancel', 'Void: Cancel Commit Message Generation'),
title: localize2('voidCommitMessagePromptCancel', 'HelvetiCode: Cancel Commit Message Generation'),
icon: ThemeIcon.fromId('stop-circle'),
tooltip: localize2('voidCommitMessagePromptCancelTooltip', 'Void: Cancel Commit Message Generation'),
tooltip: localize2('voidCommitMessagePromptCancelTooltip', 'HelvetiCode: Cancel Commit Message Generation'),
f1: false, //Having a cancel command in the command palette is more confusing than useful.
menu: [{
id: MenuId.SCMInputBox,

View file

@ -49,7 +49,7 @@ class VoidSettingsInput extends EditorInput {
}
override getName(): string {
return nls.localize('voidSettingsInputsName', 'Void\'s Settings');
return nls.localize('voidSettingsInputsName', 'HelvetiCode\'s Settings');
}
override getIcon() {
@ -112,7 +112,7 @@ class VoidSettingsPane extends EditorPane {
// register Settings pane
Registry.as<IEditorPaneRegistry>(EditorExtensions.EditorPane).registerEditorPane(
EditorPaneDescriptor.create(VoidSettingsPane, VoidSettingsPane.ID, nls.localize('VoidSettingsPane', "Void\'s Settings Pane")),
EditorPaneDescriptor.create(VoidSettingsPane, VoidSettingsPane.ID, nls.localize('VoidSettingsPane', "HelvetiCode\'s Settings Pane")),
[new SyncDescriptor(VoidSettingsInput)]
);
@ -123,7 +123,7 @@ registerAction2(class extends Action2 {
constructor() {
super({
id: VOID_TOGGLE_SETTINGS_ACTION_ID,
title: nls.localize2('voidSettings', "Void: Toggle Settings"),
title: nls.localize2('voidSettings', "HelvetiCode: Toggle Settings"),
icon: Codicon.settingsGear,
menu: [
{
@ -172,7 +172,7 @@ registerAction2(class extends Action2 {
constructor() {
super({
id: VOID_OPEN_SETTINGS_ACTION_ID,
title: nls.localize2('voidSettingsAction2', "Void: Open Settings"),
title: nls.localize2('voidSettingsAction2', "HelvetiCode: Open Settings"),
f1: true,
icon: Codicon.settingsGear,
});
@ -202,7 +202,7 @@ MenuRegistry.appendMenuItem(MenuId.GlobalActivity, {
group: '0_command',
command: {
id: VOID_TOGGLE_SETTINGS_ACTION_ID,
title: nls.localize('voidSettingsActionGear', "Void\'s Settings")
title: nls.localize('voidSettingsActionGear', "HelvetiCode\'s Settings")
},
order: 1
});

View file

@ -21,7 +21,7 @@ import { IAction } from '../../../../base/common/actions.js';
const notifyUpdate = (res: VoidCheckUpdateRespose & { message: string }, notifService: INotificationService, updateService: IUpdateService): INotificationHandle => {
const message = res?.message || 'This is a very old version of Void, please download the latest version! [Void Editor](https://voideditor.com/download-beta)!'
const message = res?.message || 'This is a very old version of HelvetiCode, please download the latest version!'
let actions: INotificationActions | undefined
@ -85,7 +85,7 @@ const notifyUpdate = (res: VoidCheckUpdateRespose & { message: string }, notifSe
primary.push({
id: 'void.updater.site',
enabled: true,
label: `Void Site`,
label: `HelvetiCode Site`,
tooltip: '',
class: undefined,
run: () => {
@ -127,7 +127,7 @@ const notifyUpdate = (res: VoidCheckUpdateRespose & { message: string }, notifSe
// })
}
const notifyErrChecking = (notifService: INotificationService): INotificationHandle => {
const message = `Void Error: There was an error checking for updates. If this persists, please get in touch or reinstall Void [here](https://voideditor.com/download-beta)!`
const message = `HelvetiCode Error: There was an error checking for updates. If this persists, please get in touch or reinstall HelvetiCode!`
const notifController = notifService.notify({
severity: Severity.Info,
message: message,
@ -147,21 +147,21 @@ const performVoidCheck = async (
const metricsTag = explicit ? 'Manual' : 'Auto'
metricsService.capture(`Void Update ${metricsTag}: Checking...`, {})
metricsService.capture(`HelvetiCode Update ${metricsTag}: Checking...`, {})
const res = await voidUpdateService.check(explicit)
if (!res) {
const notifController = notifyErrChecking(notifService);
metricsService.capture(`Void Update ${metricsTag}: Error`, { res })
metricsService.capture(`HelvetiCode Update ${metricsTag}: Error`, { res })
return notifController
}
else {
if (res.message) {
const notifController = notifyUpdate(res, notifService, updateService)
metricsService.capture(`Void Update ${metricsTag}: Yes`, { res })
metricsService.capture(`HelvetiCode Update ${metricsTag}: Yes`, { res })
return notifController
}
else {
metricsService.capture(`Void Update ${metricsTag}: No`, { res })
metricsService.capture(`HelvetiCode Update ${metricsTag}: No`, { res })
return null
}
}
@ -177,7 +177,7 @@ registerAction2(class extends Action2 {
super({
f1: true,
id: 'void.voidCheckUpdate',
title: localize2('voidCheckUpdate', 'Void: Check for Updates'),
title: localize2('voidCheckUpdate', 'HelvetiCode: Check for Updates'),
});
}
async run(accessor: ServicesAccessor): Promise<void> {

View file

@ -59,7 +59,7 @@ registerAction2(class extends Action2 {
super({
id: 'voidDebugInfo',
f1: true,
title: localize2('voidMetricsDebug', 'Void: Log Debug Info'),
title: localize2('voidMetricsDebug', 'HelvetiCode: Log Debug Info'),
});
}
async run(accessor: ServicesAccessor): Promise<void> {
@ -68,6 +68,6 @@ registerAction2(class extends Action2 {
const debugProperties = await metricsService.getDebuggingProperties()
console.log('Metrics:', debugProperties)
notifService.info(`Void Debug info:\n${JSON.stringify(debugProperties, null, 2)}`)
notifService.info(`HelvetiCode Debug info:\n${JSON.stringify(debugProperties, null, 2)}`)
}
})

View file

@ -105,7 +105,7 @@ export class LLMMessageService extends Disposable implements ILLMMessageService
// throw an error if no model/provider selected (this should usually never be reached, the UI should check this first, but might happen in cases like Apply where we haven't built much UI/checks yet, good practice to have check logic on backend)
if (modelSelection === null) {
const message = `Please add a provider in Void's Settings.`
const message = `Please add a provider in HelvetiCode's Settings.`
onError({ message, fullError: null })
return null
}

View file

@ -121,7 +121,7 @@ export const subTextMdOfProviderName = (providerName: ProviderName): string => {
if (providerName === 'xAI') return 'Get your [API Key here](https://console.x.ai).'
if (providerName === 'mistral') return 'Get your [API Key here](https://console.mistral.ai/api-keys).'
if (providerName === 'openAICompatible') return `Use any provider that's OpenAI-compatible (use this for llama.cpp and more).`
if (providerName === 'googleVertex') return 'You must authenticate before using Vertex with Void. Read more about endpoints [here](https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/call-vertex-using-openai-library), and regions [here](https://cloud.google.com/vertex-ai/docs/general/locations#available-regions).'
if (providerName === 'googleVertex') return 'You must authenticate before using Vertex with HelvetiCode. Read more about endpoints [here](https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/call-vertex-using-openai-library), and regions [here](https://cloud.google.com/vertex-ai/docs/general/locations#available-regions).'
if (providerName === 'microsoftAzure') return 'Read more about endpoints [here](https://learn.microsoft.com/en-us/rest/api/aifoundry/model-inference/get-chat-completions/get-chat-completions?view=rest-aifoundry-model-inference-2024-05-01-preview&tabs=HTTP), and get your API key [here](https://learn.microsoft.com/en-us/azure/search/search-security-api-keys?tabs=rest-use%2Cportal-find%2Cportal-query#find-existing-keys).'
if (providerName === 'awsBedrock') return 'Connect via a LiteLLM proxy or the AWS [Bedrock-Access-Gateway](https://github.com/aws-samples/bedrock-access-gateway). LiteLLM Bedrock setup docs are [here](https://docs.litellm.ai/docs/providers/bedrock).'
if (providerName === 'ollama') return 'Read more about custom [Endpoints here](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-expose-ollama-on-my-network).'

View file

@ -101,7 +101,7 @@ const newOpenAICompatibleSDK = async ({ settingsOfProvider, providerName, includ
apiKey: thisConfig.apiKey,
defaultHeaders: {
'HTTP-Referer': 'https://voideditor.com', // Optional, for including your app on openrouter.ai rankings.
'X-Title': 'Void', // Optional. Shows in rankings on openrouter.ai.
'X-Title': 'HelvetiCode', // Optional. Shows in rankings on openrouter.ai.
},
...commonPayloadOpts,
})
@ -372,7 +372,7 @@ const _sendOpenAICompatibleChat = async ({ messages, onText, onFinalMessage, onE
}
// on final
if (!fullTextSoFar && !fullReasoningSoFar && !toolName) {
onError({ message: 'Void: Response from model was empty.', fullError: null })
onError({ message: 'HelvetiCode: Response from model was empty.', fullError: null })
}
else {
const toolCall = rawToolCallObjOfParamsStr(toolName, toolParamsStr, toolId)
@ -620,7 +620,7 @@ const sendMistralFIM = ({ messages, onFinalMessage, onError, settingsOfProvider,
// ------------ OLLAMA ------------
const newOllamaSDK = ({ endpoint }: { endpoint: string }) => {
// if endpoint is empty, normally ollama will send to 11434, but we want it to fail - the user should type it in
if (!endpoint) throw new Error(`Ollama Endpoint was empty (please enter ${defaultProviderSettings.ollama.endpoint} in Void if you want the default url).`)
if (!endpoint) throw new Error(`Ollama Endpoint was empty (please enter ${defaultProviderSettings.ollama.endpoint} in HelvetiCode if you want the default url).`)
const ollama = new Ollama({ host: endpoint })
return ollama
}
@ -817,7 +817,7 @@ const sendGeminiChat = async ({
// on final
if (!fullTextSoFar && !fullReasoningSoFar && !toolName) {
onError({ message: 'Void: Response from model was empty.', fullError: null })
onError({ message: 'HelvetiCode: Response from model was empty.', fullError: null })
} else {
if (!toolId) toolId = generateUuid() // ids are empty, but other providers might expect an id
const toolCall = rawToolCallObjOfParamsStr(toolName, toolParamsStr, toolId)

View file

@ -78,7 +78,7 @@ export const sendLLMMessage = async ({
// handle failed to fetch errors, which give 0 information by design
if (errorMessage === 'TypeError: fetch failed')
errorMessage = `Failed to fetch from ${displayInfoOfProviderName(providerName).title}. This likely means you specified the wrong endpoint in Void's Settings, or your local model provider like Ollama is powered off.`
errorMessage = `Failed to fetch from ${displayInfoOfProviderName(providerName).title}. This likely means you specified the wrong endpoint in HelvetiCode's Settings, or your local model provider like Ollama is powered off.`
captureLLMEvent(`${loggingName} - Error`, { error: errorMessage })
onError_({ message: errorMessage, fullError })

View file

@ -40,7 +40,7 @@ export class MetricsMainService extends Disposable implements IMetricsService {
private _initProperties: object = {}
// helper - looks like this is stored in a .vscdb file in ~/Library/Application Support/Void
// helper - looks like this is stored in a .vscdb file in ~/Library/Application Support/HelvetiCode
private _memoStorage(key: string, target: StorageTarget, setValIfNotExist?: string) {
const currVal = this._appStorage.get(key, StorageScope.APPLICATION)
if (currVal !== undefined) return currVal
@ -125,7 +125,7 @@ export class MetricsMainService extends Disposable implements IMetricsService {
const didOptOut = this._appStorage.getBoolean(OPT_OUT_KEY, StorageScope.APPLICATION, false)
console.log('User is opted out of basic Void metrics?', didOptOut)
console.log('User is opted out of basic HelvetiCode metrics?', didOptOut)
if (didOptOut) {
this.client.optOut()
}
@ -135,7 +135,7 @@ export class MetricsMainService extends Disposable implements IMetricsService {
}
console.log('Void posthog metrics info:', JSON.stringify(identifyMessage, null, 2))
console.log('HelvetiCode posthog metrics info:', JSON.stringify(identifyMessage, null, 2))
}

View file

@ -79,7 +79,7 @@ export class VoidMainUpdateService extends Disposable implements IVoidUpdateServ
if (this._updateService.state.type === StateType.Ready) {
// Update is ready
return { message: 'Restart Void to update!', action: 'restart' } as const
return { message: 'Restart HelvetiCode to update!', action: 'restart' } as const
}
if (this._updateService.state.type === StateType.Disabled) {
@ -112,11 +112,11 @@ export class VoidMainUpdateService extends Disposable implements IVoidUpdateServ
if (explicit) {
if (response.ok) {
if (!isUpToDate) {
message = 'A new version of Void is available! Please reinstall (auto-updates are disabled on this OS) - it only takes a second!'
message = 'A new version of HelvetiCode is available! Please reinstall (auto-updates are disabled on this OS) - it only takes a second!'
action = 'reinstall'
}
else {
message = 'Void is up-to-date!'
message = 'HelvetiCode is up-to-date!'
}
}
else {
@ -127,7 +127,7 @@ export class VoidMainUpdateService extends Disposable implements IVoidUpdateServ
// not explicit
else {
if (response.ok && !isUpToDate) {
message = 'A new version of Void is available! Please reinstall (auto-updates are disabled on this OS) - it only takes a second!'
message = 'A new version of HelvetiCode is available! Please reinstall (auto-updates are disabled on this OS) - it only takes a second!'
action = 'reinstall'
}
else {