Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
d9a9154
Add initial project code
Danil-Didkovskiy May 28, 2026
5a7588e
Update documentation
Danil-Didkovskiy May 28, 2026
e6a44e4
Add .claude to .gitignore
Danil-Didkovskiy May 28, 2026
1143bab
Implement application shell and theme management
Danil-Didkovskiy May 29, 2026
18026ba
Implement metrics IPC contract and service for snapshot streaming
Danil-Didkovskiy May 29, 2026
ae9db81
Implement metrics overview and card components for live data display
Danil-Didkovskiy Jun 1, 2026
b62ea15
Refactor application to enforce dark-only theme
Danil-Didkovskiy Jun 1, 2026
072d139
Implement metrics sampler and service for CPU, memory, and uptime rea…
Danil-Didkovskiy Jun 1, 2026
00f9d78
Implement disk metrics sampling and integrate into metrics service
Danil-Didkovskiy Jun 1, 2026
d31aa2a
Implement native network probe and integrate network throughput metrics
Danil-Didkovskiy Jun 1, 2026
d525ae6
Implement CPU temperature probe and integrate into metrics service
Danil-Didkovskiy Jun 1, 2026
b43ac28
Enhance metrics service to manage sampling cadence based on window vi…
Danil-Didkovskiy Jun 2, 2026
3e94503
Refactor UI components for improved layout and styling consistency
Danil-Didkovskiy Jun 2, 2026
81d16bb
Update CPU temperature label
Danil-Didkovskiy Jun 2, 2026
698ea52
Add "Always on Top" feature
Danil-Didkovskiy Jun 2, 2026
b7c25b1
Adjust window dimensions and refine layout spacing
Danil-Didkovskiy Jun 2, 2026
d422bf8
Add appGateway for IPC communication and "Always on Top" functionality
Danil-Didkovskiy Jun 2, 2026
96f8df5
Refine card component styling
Danil-Didkovskiy Jun 2, 2026
35eb4fa
Refactor metrics overview to use MetricRow component
Danil-Didkovskiy Jun 2, 2026
949ca3a
Add live update indicator to title bar
Danil-Didkovskiy Jun 2, 2026
ae40cce
Add live metrics snapshot support
Danil-Didkovskiy Jun 2, 2026
b2c0970
Simplify comment
Danil-Didkovskiy Jun 2, 2026
17327ef
Update font to Sora Variable
Danil-Didkovskiy Jun 2, 2026
6049d51
Enhance metric row colors with shadows
Danil-Didkovskiy Jun 2, 2026
165ec8b
Refactor pin toggle functionality and improve meter component accessi…
Danil-Didkovskiy Jun 2, 2026
6f99ffa
Refactor pin toggle functionality and improve meter component accessi…
Danil-Didkovskiy Jun 2, 2026
f5ce5ed
Remove unnecessary dev tools opening logic
Danil-Didkovskiy Jun 2, 2026
83d1255
Remove unused SetTheme RPC
Danil-Didkovskiy Jun 2, 2026
3e254d1
Update project description
Danil-Didkovskiy Jun 3, 2026
8f23be1
Add process explorer contracts and live process collection (I10, I11)
Danil-Didkovskiy Jun 3, 2026
8ea1724
Read native process collector directly, drop the adapter
Danil-Didkovskiy Jun 3, 2026
635efd7
Refactor process snapshot handling
Danil-Didkovskiy Jun 3, 2026
8c3be55
Revert last 3 commits
Danil-Didkovskiy Jun 3, 2026
55ec8b2
Update AGENTS.md
Danil-Didkovskiy Jun 3, 2026
8975511
Implement process explorer service and gateway for process management
Danil-Didkovskiy Jun 3, 2026
c0127b5
Implement process snapshot service and integrate with process explorer
Danil-Didkovskiy Jun 3, 2026
f3fab9d
Add process explorer view and active view management
Danil-Didkovskiy Jun 3, 2026
a3e5ccc
Refactor MetricsOverview to manage its own snapshot state and remove …
Danil-Didkovskiy Jun 3, 2026
cb98900
Refactor process components to use new directory structure and improv…
Danil-Didkovskiy Jun 3, 2026
73795d2
Refactor view management to keep components mounted and improve data …
Danil-Didkovskiy Jun 3, 2026
96a68da
Enhance CPU percentage formatting and processing logic for better acc…
Danil-Didkovskiy Jun 3, 2026
70e1577
Add scrollbar hiding for compact process list and limit displayed rows
Danil-Didkovskiy Jun 3, 2026
b11ac6f
Add scrollbar hiding for compact process list and limit displayed rows
Danil-Didkovskiy Jun 3, 2026
fbc976d
Optimize app icon handling with caching and improve command line argu…
Danil-Didkovskiy Jun 3, 2026
1ac08b0
Implement compact dropdown menu for process sorting and adjust layout…
Danil-Didkovskiy Jun 4, 2026
d819b9f
Clarify CPU usage calculation in proto definition to reflect Activity…
Danil-Didkovskiy Jun 4, 2026
892e1c2
Clean up
Danil-Didkovskiy Jun 4, 2026
39724a8
Move window resizing logic
Danil-Didkovskiy Jun 4, 2026
519641d
Handle window resizing when the window is not visible
Danil-Didkovskiy Jun 4, 2026
6ba6415
Update @mobrowser dependencies to version 2.9.0
Danil-Didkovskiy Jun 4, 2026
316c4f2
Refactor search field and sort control components to use class-varian…
Danil-Didkovskiy Jun 4, 2026
f961e75
Add icon resolution for executable paths to enhance non-GUI process r…
Danil-Didkovskiy Jun 4, 2026
cf601f7
Fix deprecation
Danil-Didkovskiy Jun 4, 2026
3876935
Revert MoBrowser update
Danil-Didkovskiy Jun 4, 2026
f8720fd
Enhance tray menu management
Danil-Didkovskiy Jun 4, 2026
6d11502
Add support for app bundle identification and grouping in process met…
Danil-Didkovskiy Jun 4, 2026
62f7cbb
Enhance process row search by including app bundle name for improved …
Danil-Didkovskiy Jun 4, 2026
c4283de
Enhance app bundle handling by adding exact bundle path resolution an…
Danil-Didkovskiy Jun 5, 2026
70e5a86
Scope ARC to Objective-C++ file for proper icon rasterization in app …
Danil-Didkovskiy Jun 5, 2026
269c92a
Add clipboard copy functionality for user-selected text in process de…
Danil-Didkovskiy Jun 5, 2026
9efebfb
Refactor process grouping logic to improve clarity and maintainability
Danil-Didkovskiy Jun 5, 2026
14f2ff3
Refactor selection handling in process views to support detailed row …
Danil-Didkovskiy Jun 6, 2026
51b6d35
Refactor process row and group search handling
Danil-Didkovskiy Jun 6, 2026
8faa94c
Refactor GUI app metadata enrichment logic
Danil-Didkovskiy Jun 6, 2026
680d38f
Refactor command line display to use a collapsible text disclosure co…
Danil-Didkovskiy Jun 6, 2026
8e284f4
Implement process actions
Danil-Didkovskiy Jun 6, 2026
5c9b91a
Refactor process action handling to enforce stable target identity ch…
Danil-Didkovskiy Jun 6, 2026
d8dda95
Refactor process action handling to define session-critical processes…
Danil-Didkovskiy Jun 6, 2026
4544b23
Refactor process action handling
Danil-Didkovskiy Jun 6, 2026
af73bae
Remove snapshot revision from action requests
Danil-Didkovskiy Jun 6, 2026
0b5fb76
Update icon for Force Quit action in process actions
Danil-Didkovskiy Jun 6, 2026
6bfbf74
Use DisclosureContent for improved animation and structure
Danil-Didkovskiy Jun 6, 2026
d0ec900
Add back to process list button and update props for navigation
Danil-Didkovskiy Jun 6, 2026
0271a35
Refactor imports and formatting across multiple files for consistency
Danil-Didkovskiy Jun 6, 2026
66a43d2
Improve formatting consistency
Danil-Didkovskiy Jun 6, 2026
63e005b
Improve structure and organization
Danil-Didkovskiy Jun 6, 2026
1c42f13
Remove back to list button and related props
Danil-Didkovskiy Jun 6, 2026
ccd7e30
FIx icon resolving
Danil-Didkovskiy Jun 7, 2026
5ea9420
Fix icon handling logic
Danil-Didkovskiy Jun 7, 2026
f63a4c2
Simplify icon handling logic and improve metadata docs
Danil-Didkovskiy Jun 7, 2026
d8eab73
Clarify CPU usage calculation
Danil-Didkovskiy Jun 7, 2026
240cba8
Refactor disclosure components to streamline path and command line di…
Danil-Didkovskiy Jun 7, 2026
fdc75f4
Add ScrollFade component for enhanced horizontal scrolling experience
Danil-Didkovskiy Jun 7, 2026
dec68f8
Enhance destructive button styling
Danil-Didkovskiy Jun 7, 2026
0a80ed9
Add CPU time formatting and user/thread count details to process metrics
Danil-Didkovskiy Jun 7, 2026
9d2d67e
Refactor HeaderStats component for improved layout and readability
Danil-Didkovskiy Jun 7, 2026
8e9d498
Memoize MemberRow component for performance optimization
Danil-Didkovskiy Jun 7, 2026
fd558af
Add fallback mechanisms for process information retrieval using BSD s…
Danil-Didkovskiy Jun 7, 2026
4d05413
Refactor process grouping logic
Danil-Didkovskiy Jun 7, 2026
3475e81
Remove comment
Danil-Didkovskiy Jun 7, 2026
793be22
Add Vitest configuration and tests
Danil-Didkovskiy Jun 7, 2026
8964ad2
Add tests for ProcessSnapshotService
Danil-Didkovskiy Jun 7, 2026
ab8f6c0
Rework temperature probe implementation
Danil-Didkovskiy Jun 8, 2026
fda5169
Improve button styling for process actions
Danil-Didkovskiy Jun 8, 2026
b13dfc5
Reorganize source files in `native`
Danil-Didkovskiy Jun 8, 2026
2ff7885
Refactor temperature probe documentation and improve code clarity
Danil-Didkovskiy Jun 8, 2026
d1470cc
Enhance documentation clarity and improve code comments across applic…
Danil-Didkovskiy Jun 8, 2026
03ea9aa
Refactor metric processing functions for clarity and consistency
Danil-Didkovskiy Jun 8, 2026
3036e6a
Add tests for new metrics handling and edge cases in CPU and memory s…
Danil-Didkovskiy Jun 8, 2026
f8cc26e
Add CI workflows for build, static analysis, and unit tests
Danil-Didkovskiy Jun 8, 2026
d415ad1
Implement macOS application menu and update README.md
Danil-Didkovskiy Jun 8, 2026
c58645f
Improve documentation clarity
Danil-Didkovskiy Jun 8, 2026
ecac518
Simplify README.md
Danil-Didkovskiy Jun 8, 2026
9f35045
Adjust layout spacing and refine dark mode color tokens
Danil-Didkovskiy Jun 9, 2026
75b07a4
Refine color tokens for metric status indicators in index.css
Danil-Didkovskiy Jun 9, 2026
f690adc
Refactor process grouping logic to maintain singleton rows for non-bu…
Danil-Didkovskiy Jun 9, 2026
0f71fb4
Refactor icon handling to use a deduplicated icon table, updating rel…
Danil-Didkovskiy Jun 9, 2026
3684c1e
Increase process collection interval
Danil-Didkovskiy Jun 9, 2026
f0a9975
Implement caching for stable process fields to optimize performance d…
Danil-Didkovskiy Jun 9, 2026
e30d78c
Refactor HID CPU-core temperature reading to cache sensor availability
Danil-Didkovskiy Jun 9, 2026
cd5f6a1
Refactor Meter component
Danil-Didkovskiy Jun 9, 2026
42c2bfe
Refactor process icon handling to track failed image sources
Danil-Didkovskiy Jun 9, 2026
cad3a62
Add PathContainsAppBundle function and refactor command line caching
Danil-Didkovskiy Jun 9, 2026
d9793af
Add clearSelection callback and update useProcessActions to handle pr…
Danil-Didkovskiy Jun 9, 2026
93bf75f
Refactor selection handling to pop invalid entries after termination
Danil-Didkovskiy Jun 9, 2026
bf0b1aa
Refactor icon handling to improve caching and pruning logic
Danil-Didkovskiy Jun 9, 2026
6272c31
Refactor icon handling to improve caching and pruning logic
Danil-Didkovskiy Jun 9, 2026
1589dfe
Update popAfterTerminate to exclude terminated processes and modify o…
Danil-Didkovskiy Jun 9, 2026
0d0d38e
Enhance selection handling to prune invalid entries and improve navig…
Danil-Didkovskiy Jun 9, 2026
916fe8f
Refactor format functions to return structured value and unit parts f…
Danil-Didkovskiy Jun 9, 2026
98fa3b5
Implement pinGroupOrder function to maintain row order during live re…
Danil-Didkovskiy Jun 9, 2026
b2bec02
Update color variables for metric status to improve accessibility and…
Danil-Didkovskiy Jun 9, 2026
c58f7af
Add TrayController's Launch at Login functionality
Danil-Didkovskiy Jun 9, 2026
860f811
Enhance process detail and search functionality with keyboard navigat…
Danil-Didkovskiy Jun 9, 2026
7773287
Add background color to process list
Danil-Didkovskiy Jun 9, 2026
4d3ce24
Remove tray tests
Danil-Didkovskiy Jun 9, 2026
e7560b9
Implement GetProcessIcons RPC and update icon handling in process sna…
Danil-Didkovskiy Jun 10, 2026
8e3cc0f
Refactor icon resolution to return content key directly and update re…
Danil-Didkovskiy Jun 10, 2026
ca6c97b
Add support for synthetic System group in process detail and list views
Danil-Didkovskiy Jun 10, 2026
d6a7721
Enhance process action handling to check affected count on termination
Danil-Didkovskiy Jun 10, 2026
6f85eda
Increase maximum height of member list in process detail view
Danil-Didkovskiy Jun 10, 2026
fca8458
Update elevated threshold for metric usage state from 70% to 75%
Danil-Didkovskiy Jun 10, 2026
d6ceca4
Refactor application to use centralized DISPLAY_NAME from branding mo…
Danil-Didkovskiy Jun 10, 2026
1adeb66
Clarify comments
Danil-Didkovskiy Jun 10, 2026
6355df2
Disable content zoom and block trackpad pinch-to-zoom on the application
Danil-Didkovskiy Jun 10, 2026
c2bd40c
Remove touch-action property
Danil-Didkovskiy Jun 10, 2026
3df518b
Update aria-label for search input
Danil-Didkovskiy Jun 10, 2026
5a24b54
Show load average in CPU row
Danil-Didkovskiy Jun 10, 2026
ba374d1
Remove model and core count, and clarify comments
Danil-Didkovskiy Jun 10, 2026
28b3ff1
Add memory composition metrics and update styles for segmented memory…
Danil-Didkovskiy Jun 10, 2026
6d70a4d
Extract MemoryRow component
Danil-Didkovskiy Jun 10, 2026
8d77112
Implement CPU usage graph and metrics; remove load average references
Danil-Didkovskiy Jun 10, 2026
44257f5
Refactor metric display styles and enhance memory total representation
Danil-Didkovskiy Jun 10, 2026
bb23dbb
Extract Disk and Network metrics rows; adjust layout and remove unuse…
Danil-Didkovskiy Jun 10, 2026
cefb850
Refactor metric row components to use a unified MetricRowHeader; add …
Danil-Didkovskiy Jun 10, 2026
b7c0cdc
Clean up AGENTS.md
Danil-Didkovskiy Jun 10, 2026
8da6eea
Remove transition styles
Danil-Didkovskiy Jun 10, 2026
e1d0eb1
Refactor `main` and `renderer`
Danil-Didkovskiy Jun 10, 2026
a692a96
Remove unnecessary entries from .gitignore
Danil-Didkovskiy Jun 10, 2026
cd6a8e7
Update network metrics handling
Danil-Didkovskiy Jun 11, 2026
b98d18a
Add area-layer components for CPU and network graphs
Danil-Didkovskiy Jun 11, 2026
85d8cc1
Update segmented meter styles for improved responsiveness
Danil-Didkovskiy Jun 11, 2026
b033b39
Enhance metric row components with improved tooltip handling and valu…
Danil-Didkovskiy Jun 11, 2026
8a0096a
Refactor MemoryRow component to enhance value display and state-based…
Danil-Didkovskiy Jun 11, 2026
3398dce
Remove delta logic and simplify snapshot retrieval
Danil-Didkovskiy Jun 11, 2026
233409f
Add Baseline component for improved graph visualization in CPU and ne…
Danil-Didkovskiy Jun 11, 2026
dce7c4d
Cache static process data via content-addressed assets, unifying icon…
Danil-Didkovskiy Jun 12, 2026
c42d5aa
Add responsiveness tracking for GUI apps to indicate "Not Responding"…
Danil-Didkovskiy Jun 12, 2026
e236f4b
Refactor process action styles to simplify hover and focus states for…
Danil-Didkovskiy Jun 12, 2026
31f44fb
Update README
Danil-Didkovskiy Jun 12, 2026
f9ee7a3
Minor cleanup
Danil-Didkovskiy Jun 12, 2026
ba24352
Remove redundant state management
Danil-Didkovskiy Jun 12, 2026
090d08d
Set Members section to start expanded by default
Danil-Didkovskiy Jun 12, 2026
656e410
Add macOS-specific configurations and rename workflow files
Danil-Didkovskiy Jun 15, 2026
cf4e308
Add clang-tidy configuration and update CI workflow for macOS
Danil-Didkovskiy Jun 15, 2026
fc7ab31
Refactor segmented meter component and clean up entitlements
Danil-Didkovskiy Jun 15, 2026
f65e8ce
Use local opaque pointer tags for IOKit HID symbols
Danil-Didkovskiy Jun 15, 2026
05c676d
Add codesignKeychain configuration to mobrowser.conf.json
Danil-Didkovskiy Jun 15, 2026
527d6d5
Update macOS requirements in README and add conditional for release d…
Danil-Didkovskiy Jun 15, 2026
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
13 changes: 13 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
# clang-tidy configuration for the MoStats native module.
# Keep this focused on correctness checks for the macOS system probes.

Checks: >
bugprone-*,
clang-analyzer-*,
-bugprone-easily-swappable-parameters,
-clang-analyzer-nullability.*,
-clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker

WarningsAsErrors: "*"
HeaderFilterRegex: "^src/native/(?!gen/).*"
75 changes: 75 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Check

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
check:
name: Check
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm

- name: Install
run: npm ci

- name: Generate
run: npm run gen

- name: Lint
run: npm run lint

- name: Typecheck
run: npm run typecheck

native:
name: Native
runs-on: macos-latest

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm

- name: Install
run: npm ci

- name: Generate
run: npm run gen

- name: Configure
shell: bash
run: |
set -euo pipefail
sdk_path="$(xcrun --sdk macosx --show-sdk-path)"
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_OSX_SYSROOT="${sdk_path}" -B build -S .

- name: Setup LLVM
uses: KyleMayes/install-llvm-action@v2
with:
version: "20"

- name: Lint native
shell: bash
run: |
set -euo pipefail
clang_tidy_version="$(clang-tidy --version)"
if [[ "$clang_tidy_version" == *"version 20."* ]]; then
run-clang-tidy -checks=-cppcoreguidelines-avoid-const-or-ref-data-members -source-filter='^.*/src/native/(?!gen/).*' -p build
else
run-clang-tidy -source-filter='^.*/src/native/(?!gen/).*' -p build
fi
101 changes: 101 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Release

on:
push:
tags:
- 'v*'
workflow_dispatch:

permissions:
contents: write

jobs:
build:
name: Build
runs-on: macos-latest

env:
# Base64-encoded Developer ID Application certificate (.p12).
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
# Password used to export the .p12 certificate from Keychain Access.
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
# Password for the temporary CI keychain created during the build.
MACOS_KEYCHAIN_PWD: ${{ secrets.MACOS_KEYCHAIN_PWD }}
# Signing identity string, e.g. "Developer ID Application: Your Name (TEAMID)".
MACOS_CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
# Apple Developer Team ID (10-character string from developer.apple.com).
MACOS_TEAM_ID: ${{ secrets.MACOS_TEAM_ID }}
# Apple ID email used for notarization.
MACOS_APPLE_ID: ${{ secrets.MACOS_APPLE_ID }}
# App-specific password generated at appleid.apple.com for notarization.
MACOS_APPLE_PASSWORD: ${{ secrets.MACOS_APPLE_PASSWORD }}

steps:
- uses: actions/checkout@v6

- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm

- name: Install dependencies
run: npm ci

- name: Set up macOS code signing
run: |
KEYCHAIN_PATH=$RUNNER_TEMP/build.keychain
security create-keychain -p "$MACOS_KEYCHAIN_PWD" "$KEYCHAIN_PATH"
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
security unlock-keychain -p "$MACOS_KEYCHAIN_PWD" "$KEYCHAIN_PATH"

# Import the Apple public certificates the signing chain needs.
curl https://www.apple.com/certificateauthority/AppleRootCA-G3.cer -o AppleRootCA-G3.cer
curl https://www.apple.com/certificateauthority/AppleWWDRCAG6.cer -o AppleWWDRCAG6.cer
curl https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer -o DeveloperIDG2CA.cer

security import ./AppleRootCA-G3.cer -k $KEYCHAIN_PATH
security import ./AppleWWDRCAG6.cer -k $KEYCHAIN_PATH
security import ./DeveloperIDG2CA.cer -k $KEYCHAIN_PATH

# Import the private signing certificate.
echo "$MACOS_CERTIFICATE" | base64 --decode > $RUNNER_TEMP/certificate.p12
security import "$RUNNER_TEMP/certificate.p12" -k "$KEYCHAIN_PATH" -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k "$MACOS_KEYCHAIN_PWD" "$KEYCHAIN_PATH"
# Putting the temp keychain on the user search list is what lets
# codesign find the imported identity during the build step.
security list-keychain -d user -s "$KEYCHAIN_PATH"

- name: Build release package
run: npm run build

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: MoStats-macos-arm64
path: build/dist/mac-arm64/pack/*.dmg

release:
name: Create GitHub Release Draft
runs-on: ubuntu-latest
needs: [build]
if: startsWith(github.ref, 'refs/tags/')

steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: dist/

- name: Collect DMGs
run: |
mkdir -p dist/macos-arm64
mv dist/MoStats-macos-arm64/*.dmg dist/macos-arm64/

- name: Create Release draft
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1
with:
files: |
dist/macos-arm64/*.dmg
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: true
29 changes: 29 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Test

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
test:
name: Unit Tests
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm

- name: Install
run: npm ci

- name: Generate
run: npm run gen

- name: Test
run: npm run test
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Node dependencies.
node_modules/

# Build output.
build/
dist/
out/

# Generated code.
gen/

# macOS metadata.
.DS_Store

.idea
.claude
56 changes: 56 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Main",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/mobrowser",
"runtimeArgs": [
"dev",
"--inspect=5858",
"--remote-debugging-port=9222"
],
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/out/main/**/*.js"
],
"preLaunchTask": "vite: build main",
"env": {
"NODE_ENV": "development"
},
"console": "integratedTerminal",
"skipFiles": [
"<node_internals>/**"
]
},
{
"name": "Debug Renderer",
"type": "chrome",
"request": "attach",
"port": 9222,
"webRoot": "${workspaceFolder}/src/renderer",
"timeout": 60000,
"sourceMaps": true,
"sourceMapPathOverrides": {
"/@fs/*": "/*"
},
"presentation": {
"hidden": true
}
}
],
"compounds": [
{
"name": "Debug All",
"configurations": [
"Debug Main",
"Debug Renderer"
],
"presentation": {
"order": 1
}
}
]
}
11 changes: 11 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"command": "npx vite build --mode main",
"problemMatcher": [],
"label": "vite: build main"
}
]
}
19 changes: 19 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!-- BEGIN:mobrowser-agent-rules -->

# Do not rely on training data for MōBrowser

Your training data for MōBrowser is outdated. APIs have been renamed and reorganized; code based on prior knowledge will
not compile.

**Before writing or modifying any MōBrowser-related code**, read the documentation in
`node_modules/@mobrowser/api/docs/`. In the docs, you will find two folders:

- `node_modules/@mobrowser/api/docs/guides/` - contains detailed documentation about architecture, project structure,
multiple process model, Inter-Process Communication (IPC), native C++ module, features, guides, examples, and more.
- `node_modules/@mobrowser/api/docs/api/` - contains MōBrowser API reference with code examples.

Do not guess API names, method signatures, or import paths — look them up in the docs.

If the `docs/` directory is missing, ask the user to run `npm run gen`. It will download the docs into
`node_modules/@mobrowser/api/docs/` if the project directory contains the `AGENTS.md` file.
<!-- END:mobrowser-agent-rules -->
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
Loading
Loading