Merge branch 'develop' into all-record

This commit is contained in:
Karishma Shukla
2025-04-30 19:39:00 +05:30
committed by GitHub
8 changed files with 120 additions and 41 deletions

90
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,90 @@
name: Bug Report
description: Report a bug to help us improve
title: "[Bug]: "
labels: [bug]
assignees: []
body:
- type: dropdown
id: environment
attributes:
label: Where are you using the app?
options:
- Cloud (Hosted by Us)
- Self-Hosted (OSS) with Docker
- Self-Hosted (OSS) without Docker
validations:
required: true
- type: input
id: app_version
attributes:
label: App Version
description: Enter the version number you are using (if known).
placeholder: "e.g., v1.2.3"
validations:
required: false
- type: input
id: browser
attributes:
label: Browser
description: Which browser are you using?
placeholder: "e.g., Chrome 124, Firefox 115, Safari 17"
validations:
required: true
- type: input
id: operating_system
attributes:
label: Operating System
description: Your operating system and version.
placeholder: "e.g., Windows 11, macOS Sonoma, Ubuntu 22.04"
validations:
required: true
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to Reproduce
description: How can we reproduce the problem?
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: true
- type: textarea
id: expected_behavior
attributes:
label: Expected Behavior
description: What did you expect to happen instead?
validations:
required: true
- type: textarea
id: actual_behavior
attributes:
label: Actual Behavior
description: What actually happened?
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant Logs or Screenshots
description: Please paste any logs, screenshots, or console errors if available.
placeholder: "Paste logs or upload screenshots."
validations:
required: false
- type: textarea
id: additional_context
attributes:
label: Additional Context
description: Anything else we should know?
validations:
required: false

View File

@@ -6,7 +6,7 @@
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using Vite"
content="Maxun is an open-source no-code web data extraction platform. Train a robot in 2 minutes to extract data on auto-pilot!"
/>
<link rel="icon" type="image/png" href="src/assets/maxunlogo.png">
<title>Maxun | Open Source No Code Web Data Extraction Platform</title>

View File

@@ -1,45 +1,24 @@
server {
listen 80;
server_name _;
root /var/www/maxun;
index index.html;
# Serve the frontend
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:8080;
# Proxy for backend
location ^/(auth|storage|record|workflow|robot|proxy|api-docs|api)(/|$) {
proxy_pass http://localhost:8080; # change as per your setup
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Add timeout configurations
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Add error handling
proxy_intercept_errors on;
error_page 502 503 504 /50x.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/(record|workflow|storage|auth|integration|proxy|api-docs) {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'keep-alive'; # Ensure connections remain open
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Timeout configurations
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Error handling for these routes
proxy_intercept_errors on;
error_page 502 503 504 /50x.html;
}
}
}

View File

@@ -224,9 +224,15 @@ const onMousemove = async (socket: AuthenticatedSocket, coordinates: Coordinates
*/
const handleMousemove = async (generator: WorkflowGenerator, page: Page, { x, y }: Coordinates) => {
try {
if (page.isClosed()) {
logger.log('debug', `Ignoring mousemove event: page is closed`);
return;
}
await page.mouse.move(x, y);
throttle(async () => {
await generator.generateDataForHighlighter(page, { x, y });
if (!page.isClosed()) {
await generator.generateDataForHighlighter(page, { x, y });
}
}, 100)();
logger.log('debug', `Moved over position x:${x}, y:${y}`);
} catch (e) {
@@ -402,7 +408,7 @@ const handleChangeUrl = async (generator: WorkflowGenerator, page: Page, url: st
if (url) {
await generator.onChangeUrl(url, page);
try {
await page.goto(url);
await page.goto(url, { waitUntil: 'networkidle', timeout: 10000 });
logger.log('debug', `Went to ${url}`);
} catch (e) {
const { message } = e as Error;
@@ -514,4 +520,4 @@ const registerInputHandlers = (socket: Socket) => {
socket.on("action", (data) => onGenerateAction(authSocket, data));
};
export default registerInputHandlers;
export default registerInputHandlers;

View File

@@ -93,7 +93,7 @@ async function resetBrowserState(browser: RemoteBrowser): Promise<boolean> {
}
// Navigate to blank page to reset state
await currentPage.goto('about:blank');
await currentPage.goto('about:blank', { waitUntil: 'networkidle', timeout: 10000 });
// Clear browser storage
await currentPage.evaluate(() => {

View File

@@ -10,6 +10,7 @@ import {
getRemoteBrowserCurrentUrl,
getRemoteBrowserCurrentTabs,
getActiveBrowserIdByState,
destroyRemoteBrowser,
} from '../browser-management/controller';
import { chromium } from 'playwright-extra';
import stealthPlugin from 'puppeteer-extra-plugin-stealth';
@@ -146,8 +147,8 @@ router.get('/stop/:browserId', requireSignIn, async (req: AuthenticatedRequest,
});
if (!jobId) {
const browserId = initializeRemoteBrowserForRecording(req.user.id);
return res.send( browserId );
await destroyRemoteBrowser(req.params.browserId, req.user.id);
return res.send(false);
}
logger.log('info', `Queued browser destruction job: ${jobId}, waiting for completion...`);

View File

@@ -441,6 +441,8 @@ export const RightSidePanel: React.FC<RightSidePanelProps> = ({ onFinishCapture
}
});
resetListState();
stopPaginationMode();
stopLimitMode();
setShowPaginationOptions(false);
setShowLimitOptions(false);
setCaptureStage('initial');

View File

@@ -147,6 +147,7 @@ export const ActionProvider = ({ children }: { children: ReactNode }) => {
const stopGetList = () => {
setGetList(false);
socket?.emit('setGetList', { getList: false });
setPaginationType('');
setLimitType('');
setCustomLimit('');