Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 22 additions & 0 deletions app/e2e/visual/fixtures/constellation.doc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Copernicus #copernicus.color_yellow
heliocentrism: Galileo #galileo.color_blue
telescope evidence: Newton #newton.color_yellow
Principia: Laplace #laplace.color_blue
optics: Maxwell #maxwell.color_red
gravitation: Halley #halley
elliptical orbits: Kepler #kepler.color_green
planetary laws: (#newton)
Tycho Brahe #brahe
star charts: (#kepler)
Descartes #descartes.color_purple
analytic geometry: (#newton)
Leibniz #leibniz.color_purple
calculus dispute: (#newton)
Euler #euler.color_green
celestial mechanics: (#laplace)
Faraday #faraday.color_orange
field theory: (#maxwell)

=====
{"themeEditor":{"layoutName":"cose","direction":"DOWN","spacingFactor":1.5,"background":"#0a0e1f","fontFamily":"Satoshi","shape":"ellipse","nodeBackground":"#e8c26a","nodeForeground":"#f5edda","padding":10,"borderWidth":0,"borderColor":"#e8c26a","textMaxWidth":120,"lineHeight":1.25,"textMarginY":8,"useFixedHeight":true,"fixedHeight":26,"curveStyle":"bezier","edgeWidth":1,"edgeColor":"#2c3654","sourceArrowShape":"none","targetArrowShape":"none","sourceDistanceFromNode":2,"targetDistanceFromNode":2,"arrowScale":1,"edgeTextSize":0.875,"rotateEdgeLabel":false},"cytoscapeStyle":"@import url('/fonts/Satoshi.css');\n\n$bg: #0a0e1f;\n$gold: #e8c26a;\n$goldLight: #ffe9b3;\n$goldDark: #3a3320;\n$warmWhite: #f5edda;\n$line: #2c3654;\n$red: #d98a8a;\n$orange: #e0975c;\n$yellow: #f0d080;\n$green: #8fae8b;\n$blue: #9db8e8;\n$purple: #af97d8;\n$grey: #a8b0c4;\n\n/* Stars: small glowing points, labels beneath.\n Size, colors, border and margins come from the FFTheme object so the\n theme editor stays in control; only knob-free props live here. */\n:childless {\n width: 26;\n background-fill: radial-gradient;\n background-gradient-stop-colors: $goldLight $gold $goldDark;\n background-gradient-stop-positions: 0 45 100;\n text-valign: bottom;\n text-halign: center;\n font-weight: 400;\n text-outline-color: $bg;\n text-outline-width: 2;\n text-outline-opacity: 0.85;\n underlay-color: $gold;\n underlay-opacity: 0.14;\n underlay-padding: 8;\n underlay-shape: ellipse;\n}\n\n/* Hubs: heavily-connected stars shine bigger and brighter */\n:childless[in_degree > 2] {\n width: 34;\n height: 34;\n font-size: 18;\n underlay-opacity: 0.22;\n underlay-padding: 10;\n}\n:childless[out_degree > 2] {\n width: 34;\n height: 34;\n font-size: 18;\n underlay-opacity: 0.22;\n underlay-padding: 10;\n}\n\n/* Constellation lines */\nedge {\n source-endpoint: outside-to-node;\n target-endpoint: outside-to-node;\n color: #8a93ad;\n font-weight: 400;\n text-background-opacity: 1;\n text-background-padding: 4;\n}\n\n:parent {\n background-opacity: 0.4;\n border-width: 1;\n border-style: dashed;\n border-color: $line;\n corner-radius: 24;\n color: #8a93ad;\n font-size: 14;\n padding: 20;\n}\n\n:childless:selected {\n underlay-color: $gold;\n underlay-opacity: 0.35;\n underlay-padding: 10;\n opacity: 1;\n}\n\nedge:selected {\n line-color: $gold;\n target-arrow-color: $gold;\n opacity: 1;\n width: 2;\n}\n\n/* Star hues: each class retints the radial gradient */\n:childless.color_red {\n background-gradient-stop-colors: #f0c4c4 $red #4a2424;\n underlay-color: $red;\n}\n:childless.color_orange {\n background-gradient-stop-colors: #ffd9ae $orange #4a3117;\n underlay-color: $orange;\n}\n:childless.color_yellow {\n background-gradient-stop-colors: #fff3cf $yellow #4a3f1d;\n underlay-color: $yellow;\n}\n:childless.color_green {\n background-gradient-stop-colors: #cfe3cc $green #263a24;\n underlay-color: $green;\n}\n:childless.color_blue {\n background-gradient-stop-colors: #d3e1f7 $blue #22304f;\n underlay-color: $blue;\n}\n:childless.color_purple {\n background-gradient-stop-colors: #ddd0f0 $purple #322648;\n underlay-color: $purple;\n}\n:childless.color_grey {\n background-gradient-stop-colors: #e8ecf4 $grey #2e3442;\n underlay-color: $grey;\n}\n\n:parent.color_white {\n background-color: $warmWhite;\n background-opacity: 0.08;\n}\n:parent.color_grey {\n background-color: #1a2340;\n background-opacity: 0.6;\n}\n","expires":"2026-07-24T18:07:48.814Z","customCssOnly":false,"nodePositions":{"copernicus":{"x":-300.9853286494548,"y":-21.913886827842227},"galileo":{"x":-159.61882966259157,"y":-70.02111365885315},"newton":{"x":-13.254982480370966,"y":26.4145977721532},"laplace":{"x":-45.023299195673005,"y":-149.11590396030357},"maxwell":{"x":165.1403415113931,"y":162.86996022394368},"halley":{"x":104.76780526074067,"y":71.6495303988184},"kepler":{"x":-167.29202285013722,"y":90.62202652568118},"brahe":{"x":-179.07871468529603,"y":240.43793513282893},"descartes":{"x":158.99194898215038,"y":-31.673089154043545},"leibniz":{"x":59.985346026674485,"y":-107.29632372186603},"euler":{"x":104.43184132268894,"y":-220.43793513282893},"faraday":{"x":300.9853286494548,"y":37.484728125865196}}}
=====
21 changes: 21 additions & 0 deletions app/e2e/visual/fixtures/ink-mindmap.doc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Plan the team offsite
Location .color_orange
Mountain lodge
Beach house
Agenda .color_blue
Workshops
Team retro
2027 roadmap
Food .color_green
Local caterer
Group cooking night
Fun .color_purple
Big hike
Trivia night
Budget .color_yellow
Travel costs
Lodging

=====
{"themeEditor":{"layoutName":"cose","direction":"DOWN","spacingFactor":1.2,"background":"#faf7f0","fontFamily":"Open Runde","shape":"roundrectangle","nodeBackground":"#fffdf8","nodeForeground":"#4b3317","padding":12,"borderWidth":2,"borderColor":"#bb7125","textMaxWidth":140,"lineHeight":1.3,"textMarginY":0,"useFixedHeight":false,"fixedHeight":50,"curveStyle":"bezier","edgeWidth":2.5,"edgeColor":"#c9a06a","sourceArrowShape":"none","targetArrowShape":"none","sourceDistanceFromNode":6,"targetDistanceFromNode":6,"arrowScale":1,"edgeTextSize":0.875,"rotateEdgeLabel":false},"cytoscapeStyle":"@import url('/fonts/OpenRunde.css');\n\n$ink: #4b3317;\n$paper: #fffdf8;\n$accent: #bb7125;\n$red: #c55347;\n$orange: #d98137;\n$yellow: #e5b83c;\n$green: #648f7b;\n$blue: #46658c;\n$purple: #7d5a78;\n$grey: #efe9dd;\n\n:childless {\n corner-radius: 999;\n font-weight: 500;\n}\n\n/* The root idea: filled sienna, bigger, round */\n:childless[in_degree < 1] {\n shape: ellipse;\n background-color: $accent;\n border-color: #9c5c1c;\n color: $paper;\n font-size: 20;\n font-weight: 600;\n padding: 20;\n}\n\nedge {\n source-endpoint: outside-to-node;\n target-endpoint: outside-to-node;\n text-background-padding: 4;\n color: #8a6f4d;\n font-weight: 500;\n}\n\n:parent {\n corner-radius: 20;\n border-width: 2;\n border-color: #e2d7c2;\n background-opacity: 0.6;\n color: #8a6f4d;\n font-size: 15;\n padding: 18;\n}\n\n:childless:selected {\n underlay-color: $accent;\n underlay-opacity: 0.25;\n underlay-padding: 6;\n underlay-shape: round-rectangle;\n opacity: 1;\n border-color: $accent;\n}\n\nedge:selected {\n line-color: $accent;\n target-arrow-color: $accent;\n opacity: 1;\n width: 3;\n}\n\n:childless.color_red {\n background-color: #f7e5e1;\n border-color: $red;\n color: $ink;\n}\n:childless.color_orange {\n background-color: #f9ecdc;\n border-color: $orange;\n color: $ink;\n}\n:childless.color_yellow {\n background-color: #faf1d6;\n border-color: $yellow;\n color: $ink;\n}\n:childless.color_green {\n background-color: #e7efe9;\n border-color: $green;\n color: $ink;\n}\n:childless.color_blue {\n background-color: #e4e9f0;\n border-color: $blue;\n color: $ink;\n}\n:childless.color_purple {\n background-color: #efe6ee;\n border-color: $purple;\n color: $ink;\n}\n:childless.color_grey {\n background-color: $grey;\n border-color: #cfc4ab;\n color: $ink;\n}\n\n:parent.color_white {\n background-color: white;\n}\n:parent.color_grey {\n background-color: $grey;\n}\n","expires":"2026-07-24T18:07:44.102Z","customCssOnly":false,"nodePositions":{"n1":{"x":-3.6109320815028467,"y":-21.858377853490506},"n2":{"x":38.5560657566158,"y":160.93813913307037},"n3":{"x":142.864796768456,"y":259.5072072415701},"n4":{"x":-136.3320040056654,"y":239.22956898194025},"n5":{"x":-94.49251447267262,"y":-164.83194306745096},"n6":{"x":199.21468454964702,"y":-182.42449382121856},"n7":{"x":42.489014215053146,"y":-252.2519356787781},"n8":{"x":-223.96769353456338,"y":-259.5072072415701},"n9":{"x":-20.03070307592419,"y":95.95724343832237},"n10":{"x":272.0375009789857,"y":38.11176096425583},"n11":{"x":294.988786313034,"y":144.17202324901842},"n12":{"x":-309.6645735952521,"y":44.27619013442382},"n13":{"x":-498.59219560574724,"y":119.50773827702645},"n14":{"x":-600.3430524122833,"y":-15.271219789830933},"n15":{"x":308.60273302319325,"y":-61.19713449676052},"n16":{"x":545.9573646631833,"y":9.613584656035878},"n17":{"x":600.3430524122834,"y":-116.91078063637805}}}
=====
14 changes: 0 additions & 14 deletions app/e2e/visual/fixtures/mindmap-dark.doc.txt

This file was deleted.

16 changes: 0 additions & 16 deletions app/e2e/visual/fixtures/mindmap.doc.txt

This file was deleted.

29 changes: 0 additions & 29 deletions app/e2e/visual/fixtures/playful-mindmap.doc.txt

This file was deleted.

12 changes: 3 additions & 9 deletions app/e2e/visual/frozen-templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,10 @@ import { compressToEncodedURIComponent } from "lz-string";
* document string with meta.nodePositions populated. Generated by
* `generate-frozen-fixtures` (see scripts/), regenerate if a template changes.
*
* Populated empirically after the first all-live stability run: these three
* mindmap templates (force-directed cose layout) failed the same comparison on
* two consecutive runs; the other 10 — including the two cose network-diagram
* templates and the ELK stress one — rendered stably and use the live path.
* The two force-directed (cose) templates in the current lineup use frozen
* fixtures; the other 8 use deterministic layouts and render live.
*/
export const FROZEN_TEMPLATES: string[] = [
"mindmap",
"playful-mindmap",
"mindmap-dark",
];
export const FROZEN_TEMPLATES: string[] = ["ink-mindmap", "constellation"];

const ORIGIN = process.env.E2E_START_URL || "http://localhost:3000";

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 4 additions & 2 deletions app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "app",
"version": "1.66.0",
"version": "1.67.0",
"main": "module/module.js",
"license": "MIT",
"scripts": {
Expand Down Expand Up @@ -29,7 +29,8 @@
"analyze": "source-map-explorer 'build/static/js/*.js'",
"autotranslations": "node scripts/autotranslations.mjs",
"theme:schema:generate": "pnpx ts-json-schema-generator --path 'src/lib/FFTheme.ts' --type 'FFTheme' -f tsconfig.json --strict-tuples -o src/lib/FFTheme.schema.json --minify --no-top-ref",
"screenshot-templates": "node scripts/screenshot-templates.mjs"
"screenshot-templates": "node scripts/screenshot-templates.mjs",
"font:previews": "node scripts/generate-font-previews.mjs"
},
"dependencies": {
"@formkit/auto-animate": "1.0.0-beta.6",
Expand Down Expand Up @@ -196,6 +197,7 @@
"jsdom": "^20.0.3",
"minimist": "^1.2.5",
"msw": "^1.2.3",
"opentype.js": "^2.0.0",
"playwright": "1.45.2",
"source-map-explorer": "^2.5.2",
"supabase": "^1.82.1",
Expand Down
Loading
Loading