Skip to content
Open
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
Binary file added branding_assets/100_percent/product_logo_16.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 added branding_assets/100_percent/product_logo_16_root.png
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 added branding_assets/100_percent/product_logo_32.png
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 added branding_assets/200_percent/product_logo_16.png
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 added branding_assets/200_percent/product_logo_32.png
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 added branding_assets/common/favicon_ntp_100.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 added branding_assets/common/favicon_ntp_200.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 added branding_assets/mac/app-temp.icns
Binary file not shown.
Binary file added branding_assets/mac/app.icns
Binary file not shown.
4 changes: 4 additions & 0 deletions branding_assets/ntp_icons/black_logo.svg
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 added branding_assets/product_logo_128.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 added branding_assets/product_logo_16.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 added branding_assets/product_logo_22_mono.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 added branding_assets/product_logo_24.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 added branding_assets/product_logo_256.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 added branding_assets/product_logo_48.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 added branding_assets/product_logo_64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
77 changes: 77 additions & 0 deletions branding_assets/side_panel_icons/mini_new_tab_page.svg
4 changes: 4 additions & 0 deletions branding_assets/svg/product_logo.svg
2 changes: 1 addition & 1 deletion chromium-extension/public/options.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<title>OpenBrowser Options</title>
Expand Down
2 changes: 1 addition & 1 deletion chromium-extension/public/sidebar.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
Expand Down
32 changes: 17 additions & 15 deletions chromium-extension/src/background/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -387,24 +387,26 @@ const eventHandlers: Record<
};

// Message listener
chrome.runtime.onMessage.addListener(
async function (request, sender, sendResponse) {
const requestId = request.requestId;
const type = request.type;
const data = request.data;
chrome.runtime.onMessage.addListener(async function (
request,
sender,
sendResponse
) {
const requestId = request.requestId;
const type = request.type;
const data = request.data;

if (!chatAgent) {
await init();
}
if (!chatAgent) {
await init();
}

const handler = eventHandlers[type];
if (handler) {
handler(requestId, data).catch((error) => {
printLog(`Error handling ${type}: ${error}`, "error");
});
}
const handler = eventHandlers[type];
if (handler) {
handler(requestId, data).catch((error) => {
printLog(`Error handling ${type}: ${error}`, "error");
});
}
);
});

function printLog(message: string, level?: "info" | "success" | "error") {
chrome.runtime.sendMessage({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,9 @@ export const AgentExecutionCard: React.FC<AgentExecutionCardProps> = ({
label: (
<div className="flex items-center gap-2 w-full overflow-hidden">
<div
className={`flex-1 min-w-0 ${isCollapsed ? "truncate" : "whitespace-normal"}`}
className={`flex-1 min-w-0 ${
isCollapsed ? "truncate" : "whitespace-normal"
}`}
>
<Text strong className="text-sm text-theme-primary">
{agentNode.task || agentNode.name}
Expand Down
7 changes: 5 additions & 2 deletions chromium-extension/src/sidebar/components/ChatInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
PaperClipOutlined,
PlusOutlined,
HistoryOutlined,
SettingOutlined,
SettingOutlined
} from "@ant-design/icons";
import type { UploadedFile } from "../types";
import { Button, Space, Image, Typography } from "antd";
Expand Down Expand Up @@ -90,7 +90,10 @@ export const ChatInput: React.FC<ChatInputProps> = ({
)}

{/* Floating Chat Input Box */}
<div className="bg-theme-input border-theme-input relative shadow-sm hover:shadow-md transition-shadow radius-8px" style={{borderWidth: '1px', borderStyle: 'solid', overflow: 'hidden'}}>
<div
className="bg-theme-input border-theme-input relative shadow-sm hover:shadow-md transition-shadow radius-8px"
style={{ borderWidth: "1px", borderStyle: "solid", overflow: "hidden" }}
>
<input
ref={fileInputRef}
type="file"
Expand Down
15 changes: 12 additions & 3 deletions chromium-extension/src/sidebar/components/SessionHistory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ export const SessionHistory: React.FC<SessionHistoryProps> = ({
className={`cursor-pointer transition-colors hover:bg-selected radius-8px ${
session.id === currentSessionId ? "bg-selected" : ""
}`}
style={{paddingLeft: '8px', marginLeft: '4px'}}
style={{ paddingLeft: "8px", marginLeft: "4px" }}
onClick={() => handleSelectSession(session.id)}
actions={[
<Button
Expand All @@ -121,7 +121,12 @@ export const SessionHistory: React.FC<SessionHistoryProps> = ({
]}
>
<List.Item.Meta
avatar={<MessageOutlined className="fill-theme-icon" style={{marginLeft: '4px'}} />}
avatar={
<MessageOutlined
className="fill-theme-icon"
style={{ marginLeft: "4px" }}
/>
}
title={
<Text
strong={session.id === currentSessionId}
Expand All @@ -131,7 +136,11 @@ export const SessionHistory: React.FC<SessionHistoryProps> = ({
</Text>
}
description={
<Text type="secondary" className="text-xs text-theme-primary" style={{opacity: 0.7}}>
<Text
type="secondary"
className="text-xs text-theme-primary"
style={{ opacity: 0.7 }}
>
{formatDate(session.updatedAt)}
</Text>
}
Expand Down
16 changes: 11 additions & 5 deletions chromium-extension/src/sidebar/components/ToolCallItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,17 @@ export const ToolCallItem: React.FC<ToolCallItemProps> = ({ item }) => {
{item.result.content.map((part, index) => {
if (part.type === "text") {
return isJsonStr(part.text) ? (
<pre key={index} className="tool-json-pre text-xs text-theme-primary">
<pre
key={index}
className="tool-json-pre text-xs text-theme-primary"
>
{JSON.stringify(JSON.parse(part.text), null, 2)}
</pre>
) : (
<div key={index} className="text-sm text-theme-primary">
<div
key={index}
className="text-sm text-theme-primary"
>
<MarkdownRenderer content={part.text} />
</div>
);
Expand All @@ -116,9 +122,9 @@ export const ToolCallItem: React.FC<ToolCallItemProps> = ({ item }) => {
src={
part.data.startsWith("http")
? part.data
: `data:${part.mimeType || "image/png"};base64,${
part.data
}`
: `data:${
part.mimeType || "image/png"
};base64,${part.data}`
}
alt="Tool result"
className="max-w-full mt-2 rounded border-theme-input"
Expand Down
4 changes: 2 additions & 2 deletions chromium-extension/src/sidebar/hooks/useThemeColors.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState, useEffect } from 'react';
import { useState, useEffect } from "react";

interface ThemeColors {
kColorSysBase?: string;
Expand All @@ -19,7 +19,7 @@ export function useThemeColors() {

useEffect(() => {
// Check if chrome.themeColors API is available
if (typeof chrome !== 'undefined' && chrome.themeColors) {
if (typeof chrome !== "undefined" && chrome.themeColors) {
chrome.themeColors.get((themeColors: ThemeColors) => {
if (themeColors) {
setColors(themeColors);
Expand Down
4 changes: 2 additions & 2 deletions chromium-extension/src/sidebar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ const AppRun = () => {
level === "error"
? AntdMessage.error
: level === "success"
? AntdMessage.success
: AntdMessage.info;
? AntdMessage.success
: AntdMessage.info;
showMessage({
content: msg,
className: "toast-text-black"
Expand Down
26 changes: 26 additions & 0 deletions chromium/config/patches.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# OpenBrowser Patches - Apply in this order
# Lines starting with # are comments and will be ignored
# Empty lines will be ignored

# Theme and UI changes
patches/theme/theme-color-system.patch
patches/ui/ui-layout-changes.patch

# Branding assets and styling
patches/branding/branding-assets.patch
patches/theme/theme-styling.patch

# Settings UI changes
patches/ui/settings_ui_changes.patch

# Branding URL changes
patches/branding/branding_url_changes.patch

# Tab radius updates
patches/ui/updated-tab-radius.patch

# Theme colors API
patches/theme_api/theme-colors-api.patch

# OpenBrowser Assistant integration
patches/openbrowser_integration/openbrowser-assistant-integration.patch
Loading