Skip to content

Commit 8f9855a

Browse files
authored
Merge branch 'develop' into plugin-api-stage1
2 parents e364aa0 + 5d7e0aa commit 8f9855a

File tree

129 files changed

+8053
-3145
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+8053
-3145
lines changed

.github/workflows/main.yml

Lines changed: 16 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ on:
1818
paths-ignore: *ci_ignore_paths
1919
workflow_dispatch:
2020

21+
env:
22+
WASM_BINDGEN_VERSION: "0.2.105"
23+
2124
concurrency:
2225
group: ${{ github.workflow }}-${{ github.ref }}
2326
cancel-in-progress: true
@@ -74,39 +77,12 @@ jobs:
7477
- name: Install pnpm dependencies
7578
run: pnpm install
7679

77-
- name: Cache rewriter build artifacts
78-
uses: actions/cache@v4
79-
id: rewriter-cache
80-
with:
81-
path: |
82-
packages/scramjet/packages/core/rewriter/wasm/out
83-
packages/scramjet/packages/core/dist/scramjet.wasm
84-
key: rewriter-release-${{ hashFiles('packages/scramjet/packages/core/rewriter/**/Cargo.toml', 'packages/scramjet/packages/core/rewriter/**/*.rs', 'packages/scramjet/packages/core/rewriter/**/src/**/*.toml', 'packages/scramjet/packages/core/rewriter/**/src/**/*.json', 'packages/scramjet/packages/core/rewriter/**/src/**/*.md', 'packages/scramjet/packages/core/rewriter/**/*.sh') }}
85-
restore-keys: |
86-
rewriter-release-
87-
88-
- name: Cache Rust dependencies
89-
if: steps.rewriter-cache.outputs.cache-hit != 'true'
90-
uses: Swatinem/rust-cache@v2
80+
- name: Setup Rewriter Toolchain
81+
uses: ./packages/scramjet/.github/actions/setup-rewriter-toolchain
9182
with:
92-
workspaces: "rewriter"
93-
cache-all-crates: true
94-
95-
- name: Install wbg
96-
if: steps.rewriter-cache.outputs.cache-hit != 'true'
97-
uses: jetli/wasm-bindgen-action@v0.2.0
98-
with:
99-
version: "0.2.105"
100-
101-
- name: Setup Binaryen
102-
if: steps.rewriter-cache.outputs.cache-hit != 'true'
103-
uses: Aandreba/setup-binaryen@v1.0.0
104-
with:
105-
token: ${{ github.token }}
106-
107-
- name: Setup wasm-snip
108-
if: steps.rewriter-cache.outputs.cache-hit != 'true'
109-
run: "cargo install --git https://github.com/r58playz/wasm-snip"
83+
wasm-bindgen-version: ${{ env.WASM_BINDGEN_VERSION }}
84+
rewriter-path: packages/scramjet/packages/core/rewriter
85+
github-token: ${{ github.token }}
11086

11187
- name: Pack Scramjet
11288
run: pnpm pack
@@ -197,15 +173,6 @@ jobs:
197173
name: scramjet
198174
path: packages/scramjet/packages/core/dist
199175

200-
- name: Get cached rewriter build
201-
uses: actions/cache/restore@v4
202-
id: rewriter-cache
203-
with:
204-
path: |
205-
packages/scramjet/packages/core/rewriter/wasm/out
206-
packages/scramjet/packages/core/dist/scramjet.wasm
207-
key: rewriter-release-${{ hashFiles('packages/scramjet/packages/core/rewriter/**/Cargo.toml', 'packages/scramjet/packages/core/rewriter/**/*.rs', 'packages/scramjet/packages/core/rewriter/**/src/**/*.toml', 'packages/scramjet/packages/core/rewriter/**/src/**/*.json', 'packages/scramjet/packages/core/rewriter/**/src/**/*.md', 'packages/scramjet/packages/core/rewriter/**/*.sh') }}
208-
209176
- name: Get artifacts (scramjet/controller)
210177
uses: actions/download-artifact@v4
211178
with:
@@ -224,19 +191,11 @@ jobs:
224191
- name: Install Playwright Chromium
225192
if: steps.pw-browsers-cache.outputs.cache-hit != 'true'
226193
run: npx playwright install --with-deps chromium
227-
working-directory: packages/scramjet/packages/core
194+
working-directory: packages/scramjet/packages/runway
228195

229-
- name: Run Playwright tests
230-
run: pnpm test:integration
231-
working-directory: packages/scramjet/packages/core
232-
233-
- name: Upload artifacts
234-
uses: actions/upload-artifact@v4
235-
if: always()
236-
with:
237-
name: playwright-test-results
238-
path: packages/scramjet/packages/core/blob-report/*
239-
if-no-files-found: error
196+
- name: Run Runway tests
197+
run: pnpm test --parallel 4
198+
working-directory: packages/scramjet/packages/runway
240199

241200
rewritertests:
242201
name: Run Rewriter Tests
@@ -249,22 +208,12 @@ jobs:
249208
with:
250209
submodules: recursive
251210

252-
- name: Cache rewriter build artifacts
253-
uses: actions/cache@v4
254-
id: rewriter-cache
255-
with:
256-
path: |
257-
packages/scramjet/packages/core/rewriter/wasm/out
258-
packages/scramjet/packages/core/dist/scramjet.wasm
259-
key: rewriter-release-${{ hashFiles('packages/scramjet/packages/core/rewriter/**/Cargo.toml', 'packages/scramjet/packages/core/rewriter/**/*.rs', 'packages/scramjet/packages/core/rewriter/**/src/**/*.toml', 'packages/scramjet/packages/core/rewriter/**/src/**/*.json', 'packages/scramjet/packages/core/rewriter/**/src/**/*.md', 'packages/scramjet/packages/core/rewriter/**/*.sh') }}
260-
restore-keys: |
261-
rewriter-release-
262-
263-
- name: Cache Rust dependencies
211+
- name: Cache Rust compilation
264212
uses: Swatinem/rust-cache@v2
265213
with:
266-
workspaces: "rewriter"
214+
workspaces: "packages/scramjet/packages/core/rewriter -> target"
267215
cache-all-crates: true
216+
shared-key: "rewriter"
268217

269218
- name: Run Tests
270219
run: cargo test
@@ -335,7 +284,7 @@ jobs:
335284
- name: Build Frontend
336285
run: |
337286
SKIP_CORE=1 pnpm build
338-
VITE_PUTER_BRANDING=1 VITE_ISOLATION_ORIGIN="https://puter.zone" pnpm build:chrome
287+
VITE_SENTRY_URL="https://js.sentry-cdn.com/89b0486bec1f3d54d07953d81a046161.min.js" VITE_PUTER_BRANDING=1 VITE_ISOLATION_ORIGIN="https://puter.zone" pnpm build:chrome
339288
340289
- name: Upload Artifact (dist)
341290
uses: actions/upload-artifact@v4

.vscode/settings.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"editor.formatOnSave": true,
2+
"editor.formatOnSave": false,
33
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint",
44
"prettier.useEditorConfig": true,
55
"typescript.preferences.includePackageJsonAutoImports": "off",
@@ -57,5 +57,9 @@
5757
},
5858
"[typescriptreact]": {
5959
"editor.defaultFormatter": "vscode.typescript-language-features"
60+
},
61+
"search.exclude": {
62+
"external/playwright": true,
63+
"external/dreamlandjs": true
6064
}
6165
}

devserver.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import rspackConfig from "./rspack.config.ts";
1010
import { server as wisp } from "@mercuryworkshop/wisp-js/server";
1111
import {
1212
black,
13-
logSuccess,
1413
printBanner,
1514
resetSuccessLog,
1615
runRspack,
16+
normalizeWebsocketUrl,
1717
} from "./packages/scramjet/devlib.ts";
1818

1919
const image = await fs.readFile("./assets/icon.png");
@@ -38,7 +38,13 @@ const puterBranding = Boolean(process.env.VITE_PUTER_BRANDING);
3838
if (puterBranding) {
3939
process.env.VITE_ISOLATION_ORIGIN ||= `https://puter.zone`;
4040
} else {
41-
process.env.VITE_WISP_URL ||= `ws://localhost:${WISP_PORT}/`;
41+
if (process.env.VITE_WISP_URL) {
42+
process.env.VITE_WISP_URL = normalizeWebsocketUrl(
43+
process.env.VITE_WISP_URL
44+
);
45+
} else {
46+
process.env.VITE_WISP_URL = `ws://localhost:${WISP_PORT}/`;
47+
}
4248
process.env.VITE_ISOLATION_ORIGIN ||= `http://localhost:${ISOLATION_PORT}`;
4349
}
4450

@@ -66,6 +72,9 @@ const server = await createServer({
6672

6773
await server.listen();
6874

75+
wisp.options.allow_loopback_ips = true;
76+
wisp.options.allow_private_ips = true;
77+
6978
const accent = (text: string) => chalk.hex("#4799f1").bold(text);
7079
const highlight = (text: string) => chalk.hex("#ffffff").bold(text);
7180
const urlColor = (text: string) => chalk.hex("#64DFDF").underline(text);

external/dreamlandjs

Submodule dreamlandjs updated 60 files

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"preinstall": "npx only-allow pnpm"
1818
},
1919
"devDependencies": {
20-
"@mercuryworkshop/wisp-js": "^0.4.0",
20+
"@mercuryworkshop/wisp-js": "catalog:",
2121
"@rsdoctor/rspack-plugin": "^1.4.0",
2222
"@rspack/cli": "^1.5.8",
2323
"@rspack/core": "^1.5.8",

packages/chrome/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<body class="light-mode">
1313
<!--ssr-body-->
14-
<!--<div id="app"></div>-->
15-
<script type="module" src="/src/main-client.ts"></script>
14+
<div id="app"></div>
15+
<script type="module" src="/src/main.tsx"></script>
1616
</body>
1717
</html>

packages/chrome/src/App.tsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
import type { ComponentContext } from "dreamland/core";
1+
import type { FC } from "dreamland/core";
22
import { css } from "dreamland/core";
3-
import { TabStrip } from "./components/TabStrip/TabStrip";
3+
import { TabStrip } from "@components/TabStrip/TabStrip";
44
import { browser } from "./Browser";
55
import { Tab } from "./Tab";
6-
import { BookmarksStrip } from "./components/BookmarksStrip";
7-
import { Omnibar } from "./components/Omnibar/Omnibar";
6+
import { BookmarksStrip } from "@components/BookmarksStrip";
7+
import { Omnibar } from "@components/Omnibar/Omnibar";
88
import { getTheme } from "./themes";
99
import { contexts } from "./proxy/scramjet";
10+
import { INTERNAL_URL_PROTOCOL } from "./consts";
1011

11-
export function App(props: {}, cx: ComponentContext) {
12+
export function App(
13+
this: FC<{
14+
children: any;
15+
}>
16+
) {
1217
const applyTheme = () => {
1318
const appearance = browser.settings.appearance;
1419
const themeId = browser.settings.themeId;
1520
const theme = getTheme(themeId);
1621

22+
console.log("applyin");
23+
1724
// Determine if we should use light mode
1825
let isLight = false;
1926
if (appearance === "system") {
@@ -51,7 +58,7 @@ export function App(props: {}, cx: ComponentContext) {
5158
use(browser.settings.appearance).listen(applyTheme);
5259
use(browser.settings.themeId).listen(applyTheme);
5360

54-
cx.mount = () => {
61+
this.cx.mount = () => {
5562
applyTheme();
5663
};
5764

@@ -61,18 +68,21 @@ export function App(props: {}, cx: ComponentContext) {
6168
tabs={use(browser.tabs)}
6269
activetab={use(browser.activetab)}
6370
addTab={() => {
64-
browser.newTab(new URL("puter://newtab"), true);
71+
browser.newTab(new URL(`${INTERNAL_URL_PROTOCOL}//newtab`), true);
6572
}}
6673
destroyTab={(tab: Tab) => {
6774
browser.destroyTab(tab);
6875
}}
6976
/>
7077
<Omnibar tab={use(browser.activetab)} />
7178
{use(browser.activetab.url, browser.settings.showBookmarksBar)
72-
.map(([u, pinned]) => pinned || u.href === "puter://newtab")
73-
.andThen(<BookmarksStrip />)}
79+
.map(
80+
([u, pinned]) =>
81+
pinned || u.href === `${INTERNAL_URL_PROTOCOL}//newtab`
82+
)
83+
.and(<BookmarksStrip />)}
7484
<div class="separator"></div>
75-
{cx.children}
85+
{this.children}
7686
</div>
7787
);
7888
}

0 commit comments

Comments
 (0)