Skip to content
Open
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9f0c08b
feat(alpha.5): SPA mode + client router + desktop proof
Jun 25, 2026
77442ca
fix alpha5 spa review and ci issues
Jun 25, 2026
7d0346a
fix alpha5 codeql review followups
Jun 25, 2026
fc44aa7
fix router params codeql sink
Jun 25, 2026
a2270d2
test alpha5 review edge cases
Jun 25, 2026
f5ee690
docs: add alpha5 desktop reader practice plan
Jun 25, 2026
5c86b50
docs: detail alpha5 desktop reader plan
Jun 25, 2026
976bdb1
fix alpha5 router race and reader differentiation
Jun 25, 2026
39cbf7c
fix: bot review final round — dead catch, build tasks, comments
Jun 25, 2026
9969c19
fix: restore outer try/catch — needed for sync throws in onChange
Jun 25, 2026
2fc334b
feat(alpha.5): Desktop Reader — full product dogfood app
Jun 25, 2026
04f3012
fix(reader): fixtures fallback for PDFs, workspace-relative imports
Jun 25, 2026
58383ac
chore: commit workspace changes (desktop-reader smoke task + spa rout…
Jun 25, 2026
0d831fd
fix(reader): serve app/* static files with correct MIME types
Jun 25, 2026
fe1c950
feat(reader): self-contained SPA runtime + esbuild bundle
Jun 25, 2026
65aa121
fix(reader): remove invalid desktop config fields (title, width, height)
Jun 25, 2026
21a7519
fix(reader): add --allow-env --allow-read --allow-net to desktop build
Jun 25, 2026
f14be41
fix(reader): lazy search index — don't block Deno.serve() startup
Jun 25, 2026
94bbd59
fix(reader): catch all handler errors, proper Uint8Array wrappers
Jun 25, 2026
c104b3b
fix(reader): /dist/ path resolution — double dist/ bug
Jun 25, 2026
4872ae5
fix(reader): --include flags embed all assets in desktop build
Jun 25, 2026
ae10fbd
fix(reader): auto-call bootReader() — module loaded but never executed
Jun 25, 2026
75580ff
fix(reader): call setRouter(app) so book cards navigate
Jun 25, 2026
f94a1bd
feat(alpha.5): SPA mode in adapter-vite + Reader full rebuild
Jun 25, 2026
e3ac086
fix(reader): restore fixtures + README
Jun 25, 2026
ad2f9e9
fix(reader): add --include dist to desktop build
Jun 25, 2026
fb2c3aa
fix alpha5 reader ci and review comments
Jun 25, 2026
cdcf3bc
fix reader route test crypto mock
Jun 25, 2026
567be77
fix spa shell html metadata
Jun 25, 2026
02f4c75
fix ci deno formatting
Jun 25, 2026
71c271d
tighten reader dogfood and spa form handling
Jun 25, 2026
5375f81
harden consumer local nitro cleanup
Jun 25, 2026
3a77e64
fix(reader): add --include fixtures to desktop build (PDF serving)
Jun 25, 2026
db9bfd5
fix(reader): auto-call Reader() in bundle — was exported but never ex…
Jun 25, 2026
f0ee56a
fix(reader): replace client-entry.js with reader bundle in SPA shell
Jun 26, 2026
a231eb5
fix(reader): client-entry.js → reader bundle + gitignore .app
Jun 26, 2026
b150330
fix(spa): renderToDom — VNode→DOM in renderComponent
Jun 26, 2026
3b50c07
refactor(reader): OpenElement-native routes — shadow DOM + UI CE + th…
Jun 26, 2026
1b4b201
fix(reader): CDN third-party CE + full OpenElement-native build
Jun 26, 2026
8f4bda4
fix(spa): OpenElement tagName support + restore defineApp in reader
Jun 26, 2026
dd5b660
fix(reader): inject Preact island client entry into SPA shell
Jun 26, 2026
a702478
fix(reader): inject CSS stylesheet into SPA HTML
Jun 26, 2026
773eea8
fix(reader): inline styles in bookshelf shadow DOM
Jun 26, 2026
ba516a0
fix(reader): use <open-card> <open-button> with inline styles — no ha…
Jun 26, 2026
bccb294
debug(reader): add loading... fallback text to root div
Jun 26, 2026
f76d452
fix(reader): import default exports to prevent tree-shaking customEle…
Jun 26, 2026
4d39c48
fix(reader): pick largest reader-*.js (not 0KB chunk) + tree-shake fix
Jun 26, 2026
80af290
fix(reader): remove CDN Shoelace+MWC (bare specifier error), clean wc…
Jun 26, 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
7 changes: 6 additions & 1 deletion deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
],
"imports": {
"@std/fs/walk": "jsr:@std/fs@^1.0.0/walk",
"@std/assert": "jsr:@std/assert@^1.0.0",
"hono": "npm:hono@^4.12",
"@hono/vite-dev-server": "npm:@hono/vite-dev-server@^0.25.3",
"vite": "npm:vite@8.0.10",
Expand All @@ -26,7 +27,10 @@
"preact": "npm:preact@^10.28.0",
"preact-render-to-string": "npm:preact-render-to-string@^6.5.0",
"@preact/signals-core": "npm:@preact/signals-core@^1.12.1",
"flexsearch": "npm:flexsearch@^0.7"
"@preact/signals": "npm:@preact/signals@^2.9.0",
"flexsearch": "npm:flexsearch@^0.7",
"@shoelace-style/shoelace": "npm:@shoelace-style/shoelace@^2.19.0",
"@material/web/checkbox/checkbox.js": "npm:@material/web@^2.0.0/checkbox/checkbox.js"
},
"vendor": true,
"nodeModulesDir": "manual",
Expand All @@ -53,6 +57,7 @@
"consumer:local": "deno run --allow-read --allow-write --allow-run --allow-env --allow-net tools/consumer-local.ts",
"consumer:packaged": "deno run --allow-read --allow-write --allow-run --allow-env --allow-net tools/consumer-local.ts --packaged-import-map-check",
"third-party-wc:smoke": "deno run --allow-read --allow-write --allow-run --allow-env --allow-net --allow-sys tools/third-party-wc-smoke.ts",
"desktop-reader:smoke": "cd examples/deno-desktop-reader && deno test -A --no-check app/__tests__/",
"package-artifacts:check": "deno run --allow-read --allow-write --allow-run --allow-net --allow-env tools/check-package-artifacts.ts",
"publish:jsr:core": "cd packages/core && deno publish",
"pack": "deno task generate:ui-manifest && deno run --allow-read --allow-write --allow-run tools/publish-npm.ts pack",
Expand Down
4 changes: 4 additions & 0 deletions deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions docs/adr/0036-ocean-island-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ LessJS components (`@openelement/ui`) are built on **Lit + DsdLitElement**:
```typescript
// 当前:Lit 依赖
class LessButton extends DsdLitElement {
static override styles = [lessDesignTokens, css`...`]; // Lit CSSResult
static override styles = [lessDesignTokens, css`...`]; // Lit CSSResult
override render() {
if (this._dsdHydrated) return nothing; // hack!
return html`<button @click=${fn}>...`; // Lit TemplateResult
if (this._dsdHydrated) return nothing; // hack!
return html`<button @click=${fn}>...`; // Lit TemplateResult
}
}
```
Expand Down
20 changes: 13 additions & 7 deletions docs/current/VERSION_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ interoperability. The release is staged through four alphas and one beta:
- **alpha.3–4** (merged): Cross-Framework WC Integration —
consume Lit/Shoelace/MWC + client runtime for Deno Fresh
interop proof; pure-ESM/ECMAScript npm gates.
- **alpha.5**: SPA mode + Deno Desktop shell proof (Deno canary).
- **alpha.5**: SPA mode + Deno Desktop reader proof (Deno canary).
- **alpha.6**: Mastodon/GoToSocial read-only practice app.
- **alpha.7**: Mastodon/GoToSocial authenticated mutations practice app.
- **beta.1**: Stabilization and surface freeze before stable v0.41.0.

## Context
Expand Down Expand Up @@ -94,9 +96,12 @@ merge, alpha.4 is not called released until `main` CI is green and the approved
release workflow records npm publish plus post-publish npm consumer smoke
evidence.

alpha.5 remains the next implementation target after alpha.4 release closure:
SPA mode + Deno Desktop shell proof (Deno canary). React/Vue/Svelte adapters stay out of
alpha.5 unless they are required to validate SPA navigation disposal semantics.
alpha.5 is the current implementation target: SPA mode + Deno Desktop reader
proof (Deno canary). The reader is a
WeRead-style desktop practice app backed by local/open fixtures; it must not use
WeRead private APIs, account cookies, scraping, or copyrighted book content.
React/Vue/Svelte adapters stay out of alpha.5 unless they are required to
validate SPA navigation disposal semantics.

## Non-Goals

Expand All @@ -112,10 +117,11 @@ The active work is tracked in per-alpha plan files:

- `docs/release/v0.41.0-alpha.2-plan.md` — Signal-DOM Deepening
- `docs/release/v0.41.0-alpha.5-plan.md` — Cross-Framework Web Components Integration
- `docs/release/v0.41.0-alpha.5-plan.md` — SPA Mode + Desktop Shell Proof
- `docs/release/v0.41.0-alpha.5-plan.md` — SPA Mode + Deno Desktop Reader Proof

The stabilization phase will be recorded in `docs/release/v0.41.0-beta.1-plan.md`
when alpha.5 is complete.
Alpha.6 and alpha.7 Mastodon/GoToSocial practice plans will be recorded in
dedicated files when those lines start. The stabilization phase will be recorded
in `docs/release/v0.41.0-beta.1-plan.md` when alpha.7 is complete.

## Governance Rules

Expand Down
Loading
Loading