Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/svg+xml" href="/forge.svg" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"
Expand All @@ -12,7 +12,7 @@
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined&display=block"
rel="stylesheet"
/>
<title>Tauri + React + Typescript</title>
<title>Forge</title>
</head>

<body>
Expand Down
6 changes: 5 additions & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.7.51"
description = "A Tauri App"
authors = ["you"]
edition = "2021"
default-run = "codex-monitor"
default-run = "forge"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

Expand All @@ -18,6 +18,10 @@ custom-protocol = ["tauri/custom-protocol"]
name = "codex_monitor_lib"
crate-type = ["staticlib", "cdylib", "rlib"]

[[bin]]
name = "forge"
path = "src/main.rs"

[build-dependencies]
tauri-build = { version = "2", features = [] }

Expand Down
4 changes: 2 additions & 2 deletions src-tauri/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Codex Monitor</string>
<string>Forge</string>
<key>CFBundleName</key>
<string>Codex Monitor</string>
<string>Forge</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allow access to the microphone for dictation.</string>
</dict>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/64x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square107x107Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square142x142Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square150x150Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square284x284Logo.png
Binary file modified src-tauri/icons/Square30x30Logo.png
Binary file modified src-tauri/icons/Square310x310Logo.png
Binary file modified src-tauri/icons/Square44x44Logo.png
Binary file modified src-tauri/icons/Square71x71Logo.png
Binary file modified src-tauri/icons/Square89x89Logo.png
Binary file modified src-tauri/icons/StoreLogo.png
Binary file modified src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
Binary file modified src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
Binary file modified src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
Binary file modified src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
Binary file modified src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
Binary file modified src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
Binary file modified src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
Binary file modified src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
Binary file modified src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
Binary file modified src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
Binary file modified src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
Binary file modified src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
Binary file modified src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
Binary file modified src-tauri/icons/icon.icns
Binary file not shown.
Binary file modified src-tauri/icons/icon.ico
Binary file not shown.
Binary file modified src-tauri/icons/icon.png
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ between tasks - everything you need is below.

## Runtime contract (read first)

`Forge` is the CodexMonitor backend orchestrator driving this loop.
`Forge` is the Forge backend orchestrator driving this loop.

- Forge selects the current task/phase from `plans/{{plan_id}}/state.json`.
- Forge starts fresh task-scoped threads, runs backend checks, and manages final task commits.
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/src/backend/app_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fn build_initialize_params(client_version: &str) -> Value {
json!({
"clientInfo": {
"name": "codex_monitor",
"title": "Codex Monitor",
"title": "Forge",
"version": client_version
},
"capabilities": {
Expand Down
4 changes: 2 additions & 2 deletions src-tauri/src/menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ pub(crate) fn build_menu<R: tauri::Runtime>(
handle: &tauri::AppHandle<R>,
) -> tauri::Result<Menu<R>> {
let registry = handle.state::<MenuItemRegistry<R>>();
let app_name = handle.package_info().name.clone();
let app_name = "Forge".to_string();
let about_item =
MenuItemBuilder::with_id("about", format!("About {app_name}")).build(handle)?;
let check_updates_item =
Expand Down Expand Up @@ -329,7 +329,7 @@ pub(crate) fn handle_menu_event<R: tauri::Runtime>(
return;
}
let _ = WebviewWindowBuilder::new(app, "about", WebviewUrl::App("index.html".into()))
.title("About Codex Monitor")
.title("About Forge")
.resizable(false)
.inner_size(360.0, 240.0)
.center()
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/src/shared/forge_templates_core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ fn walk_files_recursive(dir: &Path, out: &mut Vec<PathBuf>) -> Result<(), String

/// Best-effort: mirror Forge template skills into Codex's repository skill directory.
///
/// Forge templates install skills into `.agent/skills/*` (CodexMonitor internal). Codex discovers
/// Forge templates install skills into `.agent/skills/*` (Forge internal). Codex discovers
/// repo-scoped skills under `.agents/skills/*` (note the plural `.agents`). This sync step bridges
/// those two layouts so skills are visible to Codex (e.g. `skills/list` and `@skill` resolution).
///
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/src/shared/orbit_core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ pub(crate) async fn orbit_sign_in_start_core(
let requested_name = runner_name
.map(str::trim)
.filter(|value| !value.is_empty())
.unwrap_or("CodexMonitor");
.unwrap_or("Forge");

let response = client
.post(&endpoint)
Expand Down
6 changes: 3 additions & 3 deletions src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "Codex Monitor",
"productName": "Forge",
"version": "0.7.51",
"identifier": "com.dimillian.codexmonitor",
"build": {
Expand All @@ -13,7 +13,7 @@
"macOSPrivateApi": true,
"windows": [
{
"title": "Codex Monitor",
"title": "Forge",
"width": 1200,
"height": 700,
"minWidth": 360,
Expand Down Expand Up @@ -64,7 +64,7 @@
"updater": {
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEY0QTgzQUU0QTc2MEVBNDMKUldSRDZtQ241RHFvOURJbm1KeC81aEZaOXlhZHlHd2NEZVpPVWs5NjdjOFNhUFEyZGJpTkV0S2YK",
"endpoints": [
"https://github.com/Dimillian/CodexMonitor/releases/latest/download/latest.json"
"https://github.com/simonperegrinvs/forge/releases/latest/download/latest.json"
]
}
}
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.linux.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"app": {
"windows": [
{
"title": "Codex Monitor",
"title": "Forge",
"width": 1200,
"height": 700,
"minWidth": 360,
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.windows.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"app": {
"windows": [
{
"title": "Codex Monitor",
"title": "Forge",
"width": 1200,
"height": 700,
"minWidth": 360,
Expand Down
8 changes: 4 additions & 4 deletions src/features/about/components/AboutView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import { getVersion } from "@tauri-apps/api/app";
import { openUrl } from "@tauri-apps/plugin-opener";

const GITHUB_URL = "https://github.com/Dimillian/CodexMonitor";
const GITHUB_URL = "https://github.com/simonperegrinvs/forge";
const TWITTER_URL = "https://x.com/dimillian";

export function AboutView() {
Expand Down Expand Up @@ -43,10 +43,10 @@ export function AboutView() {
<div className="about-header">
<img
className="about-icon"
src="/app-icon.png"
alt="Codex Monitor icon"
src="/forge.svg"
alt="Forge icon"
/>
<div className="about-title">Codex Monitor</div>
<div className="about-title">Forge</div>
</div>
<div className="about-version">
{version ? `Version ${version}` : "Version —"}
Expand Down
2 changes: 1 addition & 1 deletion src/features/app/hooks/useUpdaterController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export function useUpdaterController({
}
void sendNotification(
"Test Notification",
"This is a test notification from CodexMonitor.",
"This is a test notification from Forge.",
).catch((error) => {
onDebug({
id: `${Date.now()}-client-notification-test-error`,
Expand Down
2 changes: 1 addition & 1 deletion src/features/home/components/Home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ export function Home({
return (
<div className="home">
<div className="home-hero">
<div className="home-title">Codex Monitor</div>
<div className="home-title">Forge</div>
<div className="home-subtitle">
Orchestrate agents across your local projects.
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/features/mobile/components/MobileServerSetupWizard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export function MobileServerSetupWizard({
<h2 className="mobile-setup-wizard-title">Connect to your desktop backend</h2>
<p className="mobile-setup-wizard-subtitle">
Complete this setup before using the app. Use the same connection details configured on
your desktop CodexMonitor server settings.
your desktop Forge server settings.
</p>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ export function useAgentResponseRequiredNotifications({
const text = String(item.text ?? "").trim();
const body = text
? truncateText(text.split("\n")[0] ?? text, MAX_BODY_LENGTH)
: "Plan is ready. Open CodexMonitor to respond.";
: "Plan is ready. Open Forge to respond.";
const extra = {
kind: "response_required",
type: "plan",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ export function SettingsCodexSection({
<section className="settings-section">
<div className="settings-section-title">Codex</div>
<div className="settings-section-subtitle">
Configure the Codex CLI used by CodexMonitor and validate the install.
Configure the Codex CLI used by Forge and validate the install.
</div>
<div className="settings-field">
<label className="settings-field-label" htmlFor="codex-path">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export function SettingsServerSection({
<div className="settings-section-subtitle">
{isMobileSimplified
? "Choose TCP or Orbit, fill in the connection endpoint and token from your desktop setup, then run a connection test."
: "Configure how CodexMonitor exposes backend access for mobile and remote clients. Desktop usage remains local unless you explicitly connect through remote mode."}
: "Configure how Forge exposes backend access for mobile and remote clients. Desktop usage remains local unless you explicitly connect through remote mode."}
</div>

{!isMobileSimplified && (
Expand Down Expand Up @@ -199,7 +199,7 @@ export function SettingsServerSection({
<div>
<div className="settings-toggle-title">Keep daemon running after app closes</div>
<div className="settings-toggle-subtitle">
If disabled, CodexMonitor stops managed TCP and Orbit daemon processes before exit.
If disabled, Forge stops managed TCP and Orbit daemon processes before exit.
</div>
</div>
<button
Expand Down Expand Up @@ -259,7 +259,7 @@ export function SettingsServerSection({
</div>
<div className="settings-help">
{isMobileSimplified
? "Use the Tailscale host from your desktop CodexMonitor app (Server section), for example `macbook.your-tailnet.ts.net:4732`."
? "Use the Tailscale host from your desktop Forge app (Server section), for example `macbook.your-tailnet.ts.net:4732`."
: "This host/token is used by mobile clients and desktop remote-mode testing."}
</div>
</div>
Expand Down Expand Up @@ -713,9 +713,9 @@ export function SettingsServerSection({
<div className="settings-help">
{isMobileSimplified
? appSettings.remoteBackendProvider === "tcp"
? "Use your own infrastructure only. On iOS, get the Tailscale hostname and token from your desktop CodexMonitor setup."
: "Use your own infrastructure only. On iOS, use the Orbit websocket URL and token configured on your desktop CodexMonitor setup."
: "Mobile access should stay scoped to your own infrastructure (tailnet or self-hosted Orbit). CodexMonitor does not provide hosted backend services."}
? "Use your own infrastructure only. On iOS, get the Tailscale hostname and token from your desktop Forge setup."
: "Use your own infrastructure only. On iOS, use the Orbit websocket URL and token configured on your desktop Forge setup."
: "Mobile access should stay scoped to your own infrastructure (tailnet or self-hosted Orbit). Forge does not provide hosted backend services."}
</div>
</section>
);
Expand Down
4 changes: 2 additions & 2 deletions src/features/workspaces/hooks/useWorkspaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ export function useWorkspaces(options: UseWorkspacesOptions = {}) {
: "";

const confirmed = await ask(
`Are you sure you want to delete "${workspaceName}"?\n\nThis will remove the workspace from CodexMonitor.${detail}`,
`Are you sure you want to delete "${workspaceName}"?\n\nThis will remove the workspace from Forge.${detail}`,
{
title: "Delete Workspace",
kind: "warning",
Expand Down Expand Up @@ -849,7 +849,7 @@ export function useWorkspaces(options: UseWorkspacesOptions = {}) {
const workspaceName = workspace?.name || "this worktree";

const confirmed = await ask(
`Are you sure you want to delete "${workspaceName}"?\n\nThis will close the agent, remove its worktree, and delete it from CodexMonitor.`,
`Are you sure you want to delete "${workspaceName}"?\n\nThis will close the agent, remove its worktree, and delete it from Forge.`,
{
title: "Delete Worktree",
kind: "warning",
Expand Down