From 68adf463766ebfef1ddac65d1ca0280659a17e7b Mon Sep 17 00:00:00 2001 From: percs Date: Sat, 25 Oct 2025 01:51:32 -0500 Subject: [PATCH 1/4] [scramjet] move rewriter_demo to scramjet package --- .../packages}/rewriter_demo/.gitignore | 0 .../packages}/rewriter_demo/index.html | 1 - .../packages}/rewriter_demo/package.json | 0 .../packages}/rewriter_demo/public/vite.svg | 0 .../packages}/rewriter_demo/src/main.js | 11 ++++++-- .../packages}/rewriter_demo/src/style.css | 0 packages/scramjet/pnpm-workspace.yaml | 2 ++ pnpm-lock.yaml | 28 +++++++++++++++++++ pnpm-workspace.yaml | 2 ++ 9 files changed, 40 insertions(+), 4 deletions(-) rename packages/{ => scramjet/packages}/rewriter_demo/.gitignore (100%) rename packages/{ => scramjet/packages}/rewriter_demo/index.html (87%) rename packages/{ => scramjet/packages}/rewriter_demo/package.json (100%) rename packages/{ => scramjet/packages}/rewriter_demo/public/vite.svg (100%) rename packages/{ => scramjet/packages}/rewriter_demo/src/main.js (96%) rename packages/{ => scramjet/packages}/rewriter_demo/src/style.css (100%) diff --git a/packages/rewriter_demo/.gitignore b/packages/scramjet/packages/rewriter_demo/.gitignore similarity index 100% rename from packages/rewriter_demo/.gitignore rename to packages/scramjet/packages/rewriter_demo/.gitignore diff --git a/packages/rewriter_demo/index.html b/packages/scramjet/packages/rewriter_demo/index.html similarity index 87% rename from packages/rewriter_demo/index.html rename to packages/scramjet/packages/rewriter_demo/index.html index e05fcdea..8d19f69f 100644 --- a/packages/rewriter_demo/index.html +++ b/packages/scramjet/packages/rewriter_demo/index.html @@ -5,7 +5,6 @@ Vite App -
diff --git a/packages/rewriter_demo/package.json b/packages/scramjet/packages/rewriter_demo/package.json similarity index 100% rename from packages/rewriter_demo/package.json rename to packages/scramjet/packages/rewriter_demo/package.json diff --git a/packages/rewriter_demo/public/vite.svg b/packages/scramjet/packages/rewriter_demo/public/vite.svg similarity index 100% rename from packages/rewriter_demo/public/vite.svg rename to packages/scramjet/packages/rewriter_demo/public/vite.svg diff --git a/packages/rewriter_demo/src/main.js b/packages/scramjet/packages/rewriter_demo/src/main.js similarity index 96% rename from packages/rewriter_demo/src/main.js rename to packages/scramjet/packages/rewriter_demo/src/main.js index de59c5f6..375e23ba 100644 --- a/packages/rewriter_demo/src/main.js +++ b/packages/scramjet/packages/rewriter_demo/src/main.js @@ -7,8 +7,8 @@ import { setConfig, ScramjetClient, rewriteJs, - asyncSetWasm, } from "@mercuryworkshop/scramjet/bundled"; + setConfig({ wisp: "ws://localhost", prefix: "/scramjet/", @@ -211,5 +211,10 @@ App.style = css` overflow: auto; } `; - -app.replaceWith(html`<${App}>`); +const root = document.getElementById("app"); +try { + root.replaceWith(html`<${App} />`); +} catch (e) { + root.replaceWith(document.createTextNode("" + e)); + throw e; +} diff --git a/packages/rewriter_demo/src/style.css b/packages/scramjet/packages/rewriter_demo/src/style.css similarity index 100% rename from packages/rewriter_demo/src/style.css rename to packages/scramjet/packages/rewriter_demo/src/style.css diff --git a/packages/scramjet/pnpm-workspace.yaml b/packages/scramjet/pnpm-workspace.yaml index a77ec48e..d72b04a8 100644 --- a/packages/scramjet/pnpm-workspace.yaml +++ b/packages/scramjet/pnpm-workspace.yaml @@ -4,3 +4,5 @@ packages: - "packages/bare-mux-custom" - "packages/epoxy-transport" - "packages/libcurl-transport" + - "packages/demo" + - "packages/rewriter_demo" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34661cd9..d936d410 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -494,6 +494,25 @@ importers: specifier: ^0.7.1 version: 0.7.2 + packages/scramjet/packages/rewriter_demo: + dependencies: + '@mercuryworkshop/scramjet': + specifier: workspace:* + version: link:../core + dreamland: + specifier: workspace:* + version: link:../../../../external/dreamlandjs + monaco-editor: + specifier: ^0.52.2 + version: 0.52.2 + vite-plugin-static-copy: + specifier: ^3.1.1 + version: 3.1.1(vite@7.1.11(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1)) + devDependencies: + vite: + specifier: ^7.1.2 + version: 7.1.11(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1) + packages/scramjet/packages/scramjetserver: dependencies: '@mercuryworkshop/scramjet': @@ -11736,6 +11755,15 @@ snapshots: tinyglobby: 0.2.15 vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1) + vite-plugin-static-copy@3.1.1(vite@7.1.11(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1)): + dependencies: + chokidar: 3.6.0 + fs-extra: 11.3.1 + p-map: 7.0.3 + picocolors: 1.1.1 + tinyglobby: 0.2.15 + vite: 7.1.11(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1) + vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.25.8 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9d3c0885..bd20f435 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -14,3 +14,5 @@ packages: - "packages/scramjet/packages/bare-mux-custom" - "packages/scramjet/packages/epoxy-transport" - "packages/scramjet/packages/libcurl-transport" + - "packages/scramjet/packages/demo" + - "packages/scramjet/packages/rewriter_demo" From ab21312739703afb5738e2eb9a4502d206b6c992 Mon Sep 17 00:00:00 2001 From: percs Date: Sat, 25 Oct 2025 02:14:23 -0500 Subject: [PATCH 2/4] [chrome] fix about page, work on making settings more functional --- packages/chrome/src/App.tsx | 4 +- packages/chrome/src/Browser.tsx | 17 +++-- packages/chrome/src/assets/favicon.ts | 2 +- .../chrome/src/components/BookmarkPopup.tsx | 32 +++------- .../chrome/src/components/BookmarksStrip.tsx | 6 +- packages/chrome/src/pages/AboutPage.tsx | 5 +- packages/chrome/src/pages/DownloadsPage.tsx | 2 +- packages/chrome/src/pages/HistoryPage.tsx | 2 +- packages/chrome/src/pages/PlaygroundPage.tsx | 2 +- packages/chrome/src/pages/SettingsPage.tsx | 64 ++++++------------- .../scramjet/packages/core/src/global.d.ts | 3 +- .../packages/core/src/shared/index.ts | 8 ++- packages/scramjet/packages/core/src/types.ts | 6 +- packages/scramjet/rspack.config.ts | 7 +- 14 files changed, 69 insertions(+), 91 deletions(-) diff --git a/packages/chrome/src/App.tsx b/packages/chrome/src/App.tsx index e75aba54..dd076fc6 100644 --- a/packages/chrome/src/App.tsx +++ b/packages/chrome/src/App.tsx @@ -5,7 +5,7 @@ import type { Tab } from "./Tab"; import { BookmarksStrip } from "./components/BookmarksStrip"; import { Omnibar } from "./components/Omnibar/Omnibar"; -export function App(_, cx: ComponentContext) { +export function App(props: {}, cx: ComponentContext) { const applyTheme = () => { let theme = browser.settings.theme; @@ -45,7 +45,7 @@ export function App(_, cx: ComponentContext) { }} /> - {use(browser.activetab.url, browser.settings.bookmarksPinned) + {use(browser.activetab.url, browser.settings.showBookmarksBar) .map(([u, pinned]) => pinned || u.href === "puter://newtab") .andThen()}
diff --git a/packages/chrome/src/Browser.tsx b/packages/chrome/src/Browser.tsx index 26ed0db0..161afaef 100644 --- a/packages/chrome/src/Browser.tsx +++ b/packages/chrome/src/Browser.tsx @@ -62,7 +62,6 @@ export type Settings = { startupPage: "new-tab" | "continue"; defaultZoom: number; showBookmarksBar: boolean; - bookmarksPinned: boolean; defaultSearchEngine: | "google" | "bing" @@ -98,7 +97,6 @@ export class Browser extends StatefulClass { startupPage: "new-tab", defaultZoom: 100, showBookmarksBar: true, - bookmarksPinned: false, defaultSearchEngine: "google", searchSuggestionsEnabled: true, blockTrackers: true, @@ -219,11 +217,16 @@ export class Browser extends StatefulClass { state.deserialize(s); return state; }); - for (let detab of de.tabs) { - let tab = this.newTab(); - tab.deserialize(detab); - tab.history.justTriggeredNavigation = true; - tab.history.go(0, false); + + if (de.settings.startupPage === "continue") { + for (let detab of de.tabs) { + let tab = this.newTab(); + tab.deserialize(detab); + tab.history.justTriggeredNavigation = true; + tab.history.go(0, false); + } + } else { + this.tabs[0] = this.newTab(); } this.activetab = this.tabs[0]; this.bookmarks = de.bookmarks.map(createState); diff --git a/packages/chrome/src/assets/favicon.ts b/packages/chrome/src/assets/favicon.ts index fa519c95..c74a6145 100644 --- a/packages/chrome/src/assets/favicon.ts +++ b/packages/chrome/src/assets/favicon.ts @@ -1,3 +1,3 @@ -import defaultFavicon from "../../public/defaultfavicon.png"; +import defaultFavicon from "/defaultfavicon.png"; export const defaultFaviconUrl = defaultFavicon; diff --git a/packages/chrome/src/components/BookmarkPopup.tsx b/packages/chrome/src/components/BookmarkPopup.tsx index fabf392c..0b3870a3 100644 --- a/packages/chrome/src/components/BookmarkPopup.tsx +++ b/packages/chrome/src/components/BookmarkPopup.tsx @@ -5,56 +5,44 @@ import { Input } from "./Input"; import { closeMenu } from "./Menu"; import { Button } from "./Button"; -export function BookmarkPopup(s: { +export function BookmarkPopup(props: { bookmark: Stateful; new: boolean; }) { return (
-
{s.new ? "Add Bookmark" : "Edit Bookmark"}
+
{props.new ? "Add Bookmark" : "Edit Bookmark"}
- - (s.bookmark.title = (e.target as HTMLInputElement).value) - } - /> +
- - (s.bookmark.url = (e.target as HTMLInputElement).value) - } - /> +
diff --git a/packages/chrome/src/components/BookmarksStrip.tsx b/packages/chrome/src/components/BookmarksStrip.tsx index cad6daf5..1e6ee6ca 100644 --- a/packages/chrome/src/components/BookmarksStrip.tsx +++ b/packages/chrome/src/components/BookmarksStrip.tsx @@ -5,7 +5,7 @@ import { browser, type BookmarkEntry } from "../Browser"; import { createMenu, createMenuCustom, setContextMenu } from "./Menu"; import { BookmarkPopup } from "./BookmarkPopup"; -export function BookmarksStrip(_, cx: ComponentContext) { +export function BookmarksStrip(props: {}, cx: ComponentContext) { cx.mount = () => { setContextMenu(cx.root, [ { @@ -15,11 +15,11 @@ export function BookmarksStrip(_, cx: ComponentContext) { }, { label: "Pin Bookmarks Strip", - checkbox: use(browser.settings.bookmarksPinned), + checkbox: use(browser.settings.showBookmarksBar), }, ]); }; - + console.log(browser.bookmarks); return (
); diff --git a/packages/chrome/src/pages/DownloadsPage.tsx b/packages/chrome/src/pages/DownloadsPage.tsx index 8eb35f98..b34b3252 100644 --- a/packages/chrome/src/pages/DownloadsPage.tsx +++ b/packages/chrome/src/pages/DownloadsPage.tsx @@ -6,7 +6,7 @@ import { Icon } from "../components/Icon"; import { formatBytes } from "../utils"; import { defaultFaviconUrl } from "../assets/favicon"; -export function DownloadsPage(s: { tab: Tab }) { +export function DownloadsPage(props: { tab: Tab }) { return (