Skip to content

Product page at graph-explorer.net, and the web app moves to /app - #51

Merged
jpablo merged 4 commits into
viewerfrom
app-website
Sep 28, 2026
Merged

jpablo merged 4 commits into
viewerfrom
app-website

Conversation

@jpablo

@jpablo jpablo commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Summary

Most new work now goes to the desktop app, but graph-explorer.net showed only the web app. This PR adds a product page at /. The page tells what Graph Explorer does, links the downloads of the latest release, and links the web app. The web app moves to /app, and the README is new.

Changes

Product page (site/)

  • A second Vite entry. The build puts it in dist/site/index.html, and Netlify serves it at /. The desktop embeds dist/ too, but it never loads this page.
  • The page uses the colors of the app's drafting theme, and the workbench theme in dark mode.
  • It has a real app screenshot with numbered callouts, the features, a diagram of how the desktop app, gx, and your files connect (you can select its boxes), a desktop and web table, a gx section with the agent skill, and a download table for each platform.
  • site.js gets the latest release from the GitHub API and links the exact files with their sizes. If the API call fails, each link goes to the releases page. The page also works without the script.
  • The web app button always says "Open the web app". A visitor who has diagrams in the web app also sees the number of diagrams under the buttons, and a bar that says "The web app moved to graph-explorer.net/app". The bar has a close button, and it stays closed in that browser.
  • site/flow.dot is the source of the diagram, and site/flow-svg.py makes its inline SVG.

The web app moves to /app

  • _redirects sends / to site/index.html. The rule needs !, because index.html exists at /.
  • Router.homePath is /app. The router still reads / as the library, because the desktop loads /. A desktop reload at /app also works, because Tauri falls back to index.html.
  • Links to /diagrams/<id>, ?dot=, /example/<slug>, and /documents/<id> do not change.
  • The key of the app entry in vite.config.js stays index, because scripts/build-local-capabilities-release.sh looks for dist/assets/index-*.js.

Share links from the desktop

  • "Share URL" built the link from window.location.origin. In the desktop, that is the webview origin (tauri://localhost, or http://tauri.localhost on Windows), so nobody else could open the link. The desktop now uses https://graph-explorer.net. The web keeps its own origin.

README

  • New. It tells what the three parts do, how to install the desktop app and gx, what each platform lacks, how to build from source, and how the site is hosted.
  • It removes the old list of planned features. Two of its items (Mermaid and keyboard navigation) ship now.

Tests

  • sbt viewer/testFull: 239 passed, 0 failed, on this branch after the rebase onto The screen follows the record, and a canvas edit keeps the file whole #50.
  • New: HomeRouteSpec (the /app and / paths), and two cases in ShareUrlSpec (desktop and web). The desktop case failed before the fix.
  • DocumentConflictSpec expected / after a navigation to the library. It now expects Router.homePath.
  • npm run build makes dist/index.html, dist/site/index.html, and dist/assets/index-*.js.
  • The page was checked in Chromium at 1440 px (light and dark) and 390 px: no console errors, and no horizontal scroll.

Check after the deploy

The Netlify rules cannot run locally. After the deploy, check these:

  • https://graph-explorer.net/ shows the product page.
  • https://graph-explorer.net/app shows the library, and a reload stays there.
  • An old share link (/diagrams/<id>?dot=...) still opens the diagram.

For review

  • Analytics: the page uses the same Google Analytics property as the app, and it sends a download event for each download click.
  • Stated limits: the page and the README say these things.
    • The macOS build is for Apple silicon only (checked with file on the v0.9.5 binaries).
    • The Windows and Linux files are not signed and have no installer.
    • Files open only through gx open.
    • The desktop app does not update itself.
  • Preview image: og-image.jpg (117 KB) is in the public folder, so it also goes into the desktop build.

jpablo added 4 commits September 28, 2026 08:46
The site at graph-explorer.net was only the web app. Most new work now
goes to the desktop app, so the site needs a page that tells what the
product does, where to download it, and where the web app is.

site/index.html is a second Vite entry. The build puts it in
dist/site/index.html. The desktop embeds dist/ too, but it never loads
this page. The key of the app entry stays `index`, because
scripts/build-local-capabilities-release.sh looks for
dist/assets/index-*.js.

The page uses the colors of the app's drafting theme, and the workbench
theme in dark mode. site.js gets the latest release from the GitHub API
and links the exact files, with a fallback to the releases page. It also
shows "Open your library" to a visitor who has a web library, and it
runs the diagram in the desktop section. site/flow.dot is the source of
that diagram, and site/flow-svg.py makes its inline SVG.

The screenshots come from the web build. og-image.jpg is the social
preview. It is in the public folder, because og:image needs a fixed URL.
Netlify now sends `/` to site/index.html. The rule needs `!`, because
index.html exists at `/` and Netlify serves a file before a plain rule.

The library is at `/app` (Router.homePath). A library at `/` would show
the product page after a reload. The router still reads `/` as the
library, because the desktop loads `/`. A desktop reload at `/app` also
works: Tauri tries app, app.html, and app/index.html, then index.html.

Links to /diagrams/<id>, ?dot=, /example/<slug>, and /documents/<id>
do not change.

HomeRouteSpec records the new paths. DocumentConflictSpec expected `/`
after a navigation to the library, and now expects Router.homePath.
The README described only the web app, and its list of planned features
included Mermaid and keyboard navigation, which ship now. The new README
tells what the three parts do, how to install the desktop app and gx on
each platform, and what each platform lacks. It also tells how to build
from source and how the site is hosted.

The facts come from the code and from the v0.9.5 release. The macOS
files are for Apple silicon only (checked with `file`). The Windows and
Linux files are not signed. Share URL is a command, not a toolbar icon.
"Share URL" built the link from window.location.origin. In the desktop
app, that origin is the webview: tauri://localhost, or
http://tauri.localhost on Windows. Only the same computer can open it, so
nobody could use a link copied from the desktop.

Now the desktop uses https://graph-explorer.net (ShareUrl.publicOrigin).
The web keeps the origin of the page, so local dev and previews still
link to themselves.

The check is DesktopIpc.available, which looks for the invoke function
that the shell installs. Library.isDesktop is not correct here: it is
false when the desktop library fails to install, but the page still runs
on the webview origin. A check on the URL scheme also fails, because the
Windows origin uses http.

ShareUrlSpec has a desktop case, which failed before this change, and a
web case, which keeps the old behavior.

The command description said "(local only)". The link holds the full
diagram and opens anywhere, so it now says "Copy a link that holds this
diagram". The product page and the README no longer say that only the
web app can share a link.
@netlify

netlify Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for graph-explorer-net ready!

Name Link
🔨 Latest commit 6fe2d8e
🔍 Latest deploy log https://app.netlify.com/projects/graph-explorer-net/deploys/6aba8cd543a1e50008be435f
😎 Deploy Preview https://deploy-preview-51--graph-explorer-net.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@jpablo
jpablo merged commit fd5aabe into viewer Sep 28, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant