synthos 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/default-pages/application/page.html +42 -0
- package/default-pages/application/page.json +10 -0
- package/default-pages/elevenlabs_effects_studio/page.html +1363 -0
- package/default-pages/elevenlabs_effects_studio/page.json +11 -0
- package/default-pages/elevenlabs_voice_studio/page.html +801 -0
- package/default-pages/elevenlabs_voice_studio/page.json +11 -0
- package/default-pages/{json_tools.html → json_tools/page.html} +13 -11
- package/default-pages/json_tools/page.json +10 -0
- package/default-pages/my_notes/notes/a1b2c3d4-e5f6-7890-abcd-ef1234567890.json +5 -0
- package/default-pages/my_notes/page.html +132 -0
- package/default-pages/{my_notes.json → my_notes/page.json} +2 -2
- package/default-pages/neon_asteroids/files/Ambient_Space.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ambient_Space2.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ambient_Space3.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Asteroid_Explosion.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Hyperspace_Jump.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Laser_Fire.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Menu_Navigate.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Power_Up_Collect.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Saucer_Alert.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ship_Thrust.mp3 +0 -0
- package/default-pages/neon_asteroids/files/effects.json +74 -0
- package/default-pages/neon_asteroids/page.html +1803 -0
- package/default-pages/{neon_asteroids.json → neon_asteroids/page.json} +3 -3
- package/default-pages/{oregon_trail.html → oregon_trail/page.html} +16 -30
- package/default-pages/{oregon_trail.json → oregon_trail/page.json} +2 -2
- package/default-pages/retro_game_starter/page.html +1308 -0
- package/default-pages/retro_game_starter/page.json +12 -0
- package/default-pages/{sidebar_page.html → sidebar_page/page.html} +12 -10
- package/default-pages/sidebar_page/page.json +10 -0
- package/default-pages/{solar_explorer.html → solar_explorer/page.html} +15 -12
- package/default-pages/{solar_explorer.json → solar_explorer/page.json} +2 -2
- package/default-pages/{solar_tutorial.html → solar_tutorial/page.html} +12 -10
- package/default-pages/solar_tutorial/page.json +10 -0
- package/default-pages/{two-panel_page.html → two-panel_page/page.html} +13 -11
- package/default-pages/two-panel_page/page.json +10 -0
- package/default-pages/{us_map.html → us_map/page.html} +193 -192
- package/default-pages/{us_map.json → us_map/page.json} +12 -12
- package/default-pages/{us_map_1850.html → us_map_1850/page.html} +326 -325
- package/default-pages/{us_map_1850.json → us_map_1850/page.json} +12 -12
- package/default-pages/{western_cities_1850.html → western_cities_1850/page.html} +527 -526
- package/default-pages/{western_cities_1850.json → western_cities_1850/page.json} +12 -12
- package/default-themes/aurora-dawn.json +19 -0
- package/default-themes/aurora-dawn.v3.css +198 -0
- package/default-themes/aurora-dusk.json +19 -0
- package/default-themes/aurora-dusk.v3.css +200 -0
- package/default-themes/cosmos-dawn.json +19 -0
- package/default-themes/cosmos-dawn.v3.css +198 -0
- package/default-themes/cosmos-dusk.json +19 -0
- package/default-themes/cosmos-dusk.v3.css +200 -0
- package/default-themes/high-contrast-dark.json +19 -0
- package/default-themes/high-contrast-dark.v3.css +200 -0
- package/default-themes/high-contrast-light.json +19 -0
- package/default-themes/high-contrast-light.v3.css +198 -0
- package/default-themes/nebula-dawn.v2.css +110 -0
- package/default-themes/nebula-dawn.v3.css +199 -0
- package/default-themes/nebula-dusk.v2.css +104 -0
- package/default-themes/nebula-dusk.v3.css +201 -0
- package/default-themes/solar-flare-dawn.json +19 -0
- package/default-themes/solar-flare-dawn.v3.css +198 -0
- package/default-themes/solar-flare-dusk.json +19 -0
- package/default-themes/solar-flare-dusk.v3.css +200 -0
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/openclaw/gatewayManager.d.ts +4 -0
- package/dist/agents/openclaw/gatewayManager.d.ts.map +1 -1
- package/dist/agents/openclaw/gatewayManager.js +27 -11
- package/dist/agents/openclaw/gatewayManager.js.map +1 -1
- package/dist/agents/openclaw/openclawProvider.d.ts.map +1 -1
- package/dist/agents/openclaw/openclawProvider.js +2 -4
- package/dist/agents/openclaw/openclawProvider.js.map +1 -1
- package/dist/agents/openclaw/sshTunnelManager.d.ts +2 -0
- package/dist/agents/openclaw/sshTunnelManager.d.ts.map +1 -1
- package/dist/agents/openclaw/sshTunnelManager.js +31 -12
- package/dist/agents/openclaw/sshTunnelManager.js.map +1 -1
- package/dist/builders/anthropic.d.ts +31 -0
- package/dist/builders/anthropic.d.ts.map +1 -0
- package/dist/builders/anthropic.js +227 -0
- package/dist/builders/anthropic.js.map +1 -0
- package/dist/builders/fireworksai.d.ts +9 -0
- package/dist/builders/fireworksai.d.ts.map +1 -0
- package/dist/builders/fireworksai.js +57 -0
- package/dist/builders/fireworksai.js.map +1 -0
- package/dist/builders/index.d.ts +13 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +31 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/openai.d.ts +8 -0
- package/dist/builders/openai.d.ts.map +1 -0
- package/dist/builders/openai.js +87 -0
- package/dist/builders/openai.js.map +1 -0
- package/dist/builders/types.d.ts +54 -0
- package/dist/builders/types.d.ts.map +1 -0
- package/dist/builders/types.js +211 -0
- package/dist/builders/types.js.map +1 -0
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +3 -2
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/registry.d.ts +2 -1
- package/dist/connectors/registry.d.ts.map +1 -1
- package/dist/connectors/registry.js +31 -8
- package/dist/connectors/registry.js.map +1 -1
- package/dist/customizer/Customizer.d.ts +62 -0
- package/dist/customizer/Customizer.d.ts.map +1 -0
- package/dist/customizer/Customizer.js +134 -0
- package/dist/customizer/Customizer.js.map +1 -0
- package/dist/customizer/index.d.ts +4 -0
- package/dist/customizer/index.d.ts.map +1 -0
- package/dist/customizer/index.js +9 -0
- package/dist/customizer/index.js.map +1 -0
- package/dist/files.d.ts +16 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +60 -1
- package/dist/files.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +12 -6
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +150 -133
- package/dist/init.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +23 -10
- package/dist/migrations.js.map +1 -1
- package/dist/models/anthropic.d.ts +4 -2
- package/dist/models/anthropic.d.ts.map +1 -1
- package/dist/models/anthropic.js +33 -6
- package/dist/models/anthropic.js.map +1 -1
- package/dist/models/fireworksai.d.ts.map +1 -1
- package/dist/models/fireworksai.js +9 -1
- package/dist/models/fireworksai.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/openai.d.ts +1 -1
- package/dist/models/openai.d.ts.map +1 -1
- package/dist/models/openai.js +24 -3
- package/dist/models/openai.js.map +1 -1
- package/dist/models/types.d.ts +20 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +6 -1
- package/dist/models/types.js.map +1 -1
- package/dist/pages.d.ts +34 -10
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +229 -79
- package/dist/pages.js.map +1 -1
- package/dist/service/createCompletePrompt.d.ts +2 -1
- package/dist/service/createCompletePrompt.d.ts.map +1 -1
- package/dist/service/createCompletePrompt.js +2 -2
- package/dist/service/createCompletePrompt.js.map +1 -1
- package/dist/service/requiresSettings.d.ts +2 -1
- package/dist/service/requiresSettings.d.ts.map +1 -1
- package/dist/service/requiresSettings.js +3 -3
- package/dist/service/requiresSettings.js.map +1 -1
- package/dist/service/server.d.ts +2 -1
- package/dist/service/server.d.ts.map +1 -1
- package/dist/service/server.js +37 -8
- package/dist/service/server.js.map +1 -1
- package/dist/service/transformPage.d.ts +47 -20
- package/dist/service/transformPage.d.ts.map +1 -1
- package/dist/service/transformPage.js +514 -293
- package/dist/service/transformPage.js.map +1 -1
- package/dist/service/useAgentRoutes.d.ts +2 -1
- package/dist/service/useAgentRoutes.d.ts.map +1 -1
- package/dist/service/useAgentRoutes.js +17 -14
- package/dist/service/useAgentRoutes.js.map +1 -1
- package/dist/service/useApiRoutes.d.ts +2 -1
- package/dist/service/useApiRoutes.d.ts.map +1 -1
- package/dist/service/useApiRoutes.js +287 -172
- package/dist/service/useApiRoutes.js.map +1 -1
- package/dist/service/useConnectorRoutes.js +17 -17
- package/dist/service/useConnectorRoutes.js.map +1 -1
- package/dist/service/useDataRoutes.d.ts.map +1 -1
- package/dist/service/useDataRoutes.js +13 -10
- package/dist/service/useDataRoutes.js.map +1 -1
- package/dist/service/useFileRoutes.d.ts +4 -0
- package/dist/service/useFileRoutes.d.ts.map +1 -0
- package/dist/service/useFileRoutes.js +122 -0
- package/dist/service/useFileRoutes.js.map +1 -0
- package/dist/service/usePageRoutes.d.ts +2 -1
- package/dist/service/usePageRoutes.d.ts.map +1 -1
- package/dist/service/usePageRoutes.js +671 -74
- package/dist/service/usePageRoutes.js.map +1 -1
- package/dist/service/useSharedDataRoutes.d.ts +4 -0
- package/dist/service/useSharedDataRoutes.d.ts.map +1 -0
- package/dist/service/useSharedDataRoutes.js +107 -0
- package/dist/service/useSharedDataRoutes.js.map +1 -0
- package/dist/service/useSharedFileRoutes.d.ts +4 -0
- package/dist/service/useSharedFileRoutes.d.ts.map +1 -0
- package/dist/service/useSharedFileRoutes.js +121 -0
- package/dist/service/useSharedFileRoutes.js.map +1 -0
- package/dist/settings.d.ts +5 -3
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +12 -10
- package/dist/settings.js.map +1 -1
- package/dist/storage/FsStorageProvider.d.ts +25 -0
- package/dist/storage/FsStorageProvider.d.ts.map +1 -0
- package/dist/storage/FsStorageProvider.js +103 -0
- package/dist/storage/FsStorageProvider.js.map +1 -0
- package/dist/storage/StorageProvider.d.ts +31 -0
- package/dist/storage/StorageProvider.d.ts.map +1 -0
- package/dist/storage/StorageProvider.js +3 -0
- package/dist/storage/StorageProvider.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/synthos-cli.d.ts.map +1 -1
- package/dist/synthos-cli.js +4 -3
- package/dist/synthos-cli.js.map +1 -1
- package/dist/themes.d.ts +1 -0
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +65 -28
- package/dist/themes.js.map +1 -1
- package/migration-rules/v1-to-v2.md +193 -0
- package/migration-rules/v2-to-v3.md +481 -0
- package/package.json +11 -10
- package/required-pages/builder/page.html +43 -0
- package/required-pages/builder/page.json +10 -0
- package/required-pages/{pages.html → pages/page.html} +238 -233
- package/required-pages/pages/page.json +10 -0
- package/required-pages/{settings.html → settings/page.html} +389 -275
- package/required-pages/settings/page.json +10 -0
- package/required-pages/synthos_apis/page.html +846 -0
- package/required-pages/synthos_apis/page.json +10 -0
- package/required-pages/{synthos_scripts.html → synthos_scripts/page.html} +13 -11
- package/required-pages/synthos_scripts/page.json +10 -0
- package/src/agents/index.ts +1 -1
- package/src/agents/openclaw/gatewayManager.ts +22 -11
- package/src/agents/openclaw/openclawProvider.ts +2 -4
- package/src/agents/openclaw/sshTunnelManager.ts +19 -11
- package/src/builders/anthropic.ts +283 -0
- package/src/builders/fireworksai.ts +59 -0
- package/src/builders/index.ts +33 -0
- package/src/builders/openai.ts +89 -0
- package/src/builders/types.ts +261 -0
- package/src/connectors/index.ts +1 -1
- package/src/connectors/registry.ts +28 -8
- package/src/customizer/Customizer.ts +163 -0
- package/src/customizer/index.ts +5 -0
- package/src/files.ts +57 -0
- package/src/index.ts +3 -1
- package/src/init.ts +195 -145
- package/src/migrations.ts +30 -10
- package/src/models/anthropic.ts +40 -10
- package/src/models/fireworksai.ts +9 -2
- package/src/models/index.ts +1 -1
- package/src/models/openai.ts +26 -6
- package/src/models/types.ts +31 -1
- package/src/pages.ts +230 -77
- package/src/service/createCompletePrompt.ts +3 -2
- package/src/service/requiresSettings.ts +4 -3
- package/src/service/server.ts +36 -9
- package/src/service/transformPage.ts +557 -326
- package/src/service/useAgentRoutes.ts +19 -14
- package/src/service/useApiRoutes.ts +208 -84
- package/src/service/useConnectorRoutes.ts +18 -18
- package/src/service/useDataRoutes.ts +13 -10
- package/src/service/useFileRoutes.ts +128 -0
- package/src/service/usePageRoutes.ts +730 -81
- package/src/service/useSharedDataRoutes.ts +109 -0
- package/src/service/useSharedFileRoutes.ts +127 -0
- package/src/settings.ts +14 -10
- package/src/storage/FsStorageProvider.ts +87 -0
- package/src/storage/StorageProvider.ts +34 -0
- package/src/storage/index.ts +2 -0
- package/src/synthos-cli.ts +4 -3
- package/src/themes.ts +64 -27
- package/static-files/favicon.svg +12 -0
- package/static-files/fluentlm-instructions.llmd +868 -0
- package/static-files/fluentlm-instructions.md +1595 -0
- package/static-files/fluentlm.css +4844 -0
- package/static-files/fluentlm.js +3602 -0
- package/static-files/fluentlm.min.css +1 -0
- package/static-files/fluentlm.min.js +1 -0
- package/{page-scripts/helpers-v2.js → static-files/helpers.v3.js} +82 -0
- package/static-files/page.v3.js +1290 -0
- package/static-files/recommended-frameworks.llmd +81 -0
- package/static-files/recommended-frameworks.md +137 -0
- package/static-files/retro-game.js +877 -0
- package/static-files/shell.css +797 -0
- package/static-files/theme-dark.css +169 -0
- package/static-files/theme-light.css +169 -0
- package/tests/builders.spec.ts +139 -0
- package/tests/pages.spec.ts +54 -84
- package/tests/transformPage.spec.ts +299 -360
- package/default-pages/application.html +0 -40
- package/default-pages/application.json +0 -1
- package/default-pages/json_tools.json +0 -1
- package/default-pages/my_notes.html +0 -33
- package/default-pages/neon_asteroids.html +0 -77
- package/default-pages/sidebar_page.json +0 -1
- package/default-pages/solar_tutorial.json +0 -1
- package/default-pages/two-panel_page.json +0 -1
- package/dist/service/useGatewayRoutes.d.ts +0 -4
- package/dist/service/useGatewayRoutes.d.ts.map +0 -1
- package/dist/service/useGatewayRoutes.js +0 -168
- package/dist/service/useGatewayRoutes.js.map +0 -1
- package/page-scripts/page-v2.js +0 -656
- package/required-pages/builder.html +0 -48
- package/required-pages/builder.json +0 -1
- package/required-pages/pages.json +0 -1
- package/required-pages/settings.json +0 -1
- package/required-pages/synthos_apis.html +0 -327
- package/required-pages/synthos_apis.json +0 -1
- package/required-pages/synthos_scripts.json +0 -1
- package/src/connectors/airtable/connector.json +0 -27
- package/src/connectors/alpha-vantage/connector.json +0 -26
- package/src/connectors/brave-search/connector.json +0 -26
- package/src/connectors/cloudinary/connector.json +0 -27
- package/src/connectors/deepl/connector.json +0 -28
- package/src/connectors/elevenlabs/connector.json +0 -30
- package/src/connectors/giphy/connector.json +0 -27
- package/src/connectors/github/connector.json +0 -29
- package/src/connectors/huggingface/connector.json +0 -27
- package/src/connectors/imgur/connector.json +0 -29
- package/src/connectors/instagram/connector.json +0 -43
- package/src/connectors/jira/connector.json +0 -28
- package/src/connectors/mapbox/connector.json +0 -26
- package/src/connectors/nasa/connector.json +0 -27
- package/src/connectors/newsapi/connector.json +0 -27
- package/src/connectors/notion/connector.json +0 -28
- package/src/connectors/open-exchange-rates/connector.json +0 -27
- package/src/connectors/openweathermap/connector.json +0 -26
- package/src/connectors/pexels/connector.json +0 -27
- package/src/connectors/resend/connector.json +0 -29
- package/src/connectors/rss2json/connector.json +0 -27
- package/src/connectors/sendgrid/connector.json +0 -27
- package/src/connectors/spoonacular/connector.json +0 -28
- package/src/connectors/stability-ai/connector.json +0 -27
- package/src/connectors/twilio/connector.json +0 -28
- package/src/connectors/unsplash/connector.json +0 -27
- package/src/connectors/wolfram-alpha/connector.json +0 -26
- package/src/connectors/youtube-data/connector.json +0 -30
- /package/{dist/connectors → service-connectors}/airtable/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/alpha-vantage/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/brave-search/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/cloudinary/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/deepl/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/elevenlabs/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/giphy/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/github/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/huggingface/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/imgur/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/instagram/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/jira/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/mapbox/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/nasa/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/newsapi/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/notion/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/open-exchange-rates/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/openweathermap/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/pexels/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/resend/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/rss2json/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/sendgrid/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/spoonacular/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/stability-ai/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/twilio/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/unsplash/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/wolfram-alpha/connector.json +0 -0
- /package/{dist/connectors → service-connectors}/youtube-data/connector.json +0 -0
|
@@ -7,25 +7,27 @@
|
|
|
7
7
|
<style>.dialog-title{font-size:22px;font-weight:700;min-height:var(--header-min-height);padding:var(--header-padding-vertical) var(--header-padding-horizontal);line-height:var(--header-line-height);display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff;border-radius:12px;width:100%;max-width:800px;box-shadow:0 6px 25px var(--accent-glow);position:relative;z-index:1}.dialog-content{font-size:14px;color:rgba(224,224,224,.8);padding:15px 0;flex-grow:1;width:100%;max-width:800px;position:relative;z-index:1;overflow-y:auto;display:flex;flex-direction:column;gap:15px}.conversion-select{width:100%;padding:12px 15px;border-radius:10px;border:1px solid var(--border-color);background:rgba(15,15,35,.8);color:var(--text-primary);font-size:14px;cursor:pointer;transition:.3s}.conversion-select:focus{outline:0;border-color:var(--text-secondary);box-shadow:0 0 15px var(--accent-glow)}.conversion-select option{background:var(--bg-tertiary);color:var(--text-primary)}.multi-line-input{width:100%;min-height:220px;padding:15px;border-radius:10px;border:1px solid var(--border-color);background:rgba(15,15,35,.8);color:var(--text-primary);font-size:14px;font-family:'Courier New',monospace;resize:vertical;transition:.3s}.multi-line-input:focus{outline:0;border-color:var(--text-secondary);box-shadow:0 0 15px var(--accent-glow)}.button-group{display:flex;justify-content:space-between;align-items:center;gap:10px}.button-group div{display:flex;gap:10px}.action-btn{padding:12px 24px;border:none;border-radius:25px;font-size:14px;font-weight:600;cursor:pointer;transition:.3s;letter-spacing:1px}.convert-btn{background:linear-gradient(135deg,var(--accent-primary) 0,var(--accent-secondary) 100%);color:#fff;box-shadow:0 4px 20px var(--accent-glow)}.convert-btn:hover{transform:translateY(-2px);box-shadow:0 6px 25px rgba(102,126,234,.6)}.reset-btn{background:rgba(102,126,234,.2);color:var(--text-secondary);border:1px solid var(--border-color)}.reset-btn:hover{background:rgba(102,126,234,.3);color:var(--accent-tertiary)}.copy-btn{background:linear-gradient(135deg,rgba(240,147,251,.3) 0,rgba(118,75,162,.3) 100%);color:var(--text-secondary);border:1px solid var(--border-color)}.copy-btn:hover:not(:disabled){background:linear-gradient(135deg,rgba(240,147,251,.5) 0,rgba(118,75,162,.5) 100%);color:var(--accent-tertiary)}.copy-btn:disabled{opacity:.5;cursor:not-allowed}.result-panel{width:100%;min-height:220px;max-height:350px;padding:15px;border-radius:10px;border:1px solid var(--border-color);background:rgba(15,15,35,.8);color:var(--accent-tertiary);font-size:13px;font-family:'Courier New',monospace;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.light-mode .dialog-content{color:rgba(45,38,64,.8)}.light-mode .conversion-select,.light-mode .multi-line-input,.light-mode .result-panel{background:rgba(255,255,255,.8)}</style>
|
|
8
8
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js"></script>
|
|
9
9
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/14.1.1/marked.min.js"></script>
|
|
10
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
|
10
11
|
</head>
|
|
11
12
|
|
|
12
13
|
<body>
|
|
14
|
+
<div class="shell-toolbar" data-locked="true">
|
|
15
|
+
<button class="shell-toolbar-btn" id="builderToggle" aria-label="Page Builder" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M7 18.5H6.2c-1.77 0-3.2-1.43-3.2-3.2V7.7C3 5.93 4.43 4.5 6.2 4.5h11.6c1.77 0 3.2 1.43 3.2 3.2v7.6c0 1.77-1.43 3.2-3.2 3.2H12l-4.2 3.2c-.5.38-1.2.02-1.2-.6V18.5Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><circle cx="8.5" cy="11.5" r="1" fill="currentColor"/><circle cx="12" cy="11.5" r="1" fill="currentColor"/><circle cx="15.5" cy="11.5" r="1" fill="currentColor"/></svg></button>
|
|
16
|
+
<button class="shell-toolbar-btn" id="pagesBtn" aria-label="View All Pages" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none"><rect x="3" y="3" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M6 7.5h5M6 10h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="18" y="3" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M21 7.5h5M21 10h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="3" y="18" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M6 22.5h5M6 25h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="18" y="18" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M21 22.5h5M21 25h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
|
|
17
|
+
<button class="shell-toolbar-btn" id="saveBtn" aria-label="Save Page" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M17 21v-8H7v8" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M7 3v5h8" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></button>
|
|
18
|
+
<div class="shell-toolbar-spacer" data-locked="true"></div>
|
|
19
|
+
<button class="shell-toolbar-btn" id="settingsBtn" aria-label="Settings" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" stroke="currentColor" stroke-width="1.8"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
|
|
20
|
+
</div>
|
|
13
21
|
<div class="chat-panel" data-locked="true">
|
|
14
|
-
<div class="chat-header" data-locked="true">
|
|
22
|
+
<div class="chat-header" data-locked="true"><span>Page Builder</span><button class="chat-header-close" id="builderClose" aria-label="Close builder" data-locked="true">×</button></div>
|
|
15
23
|
<div class="chat-messages" id="chatMessages" data-locked="true">
|
|
16
24
|
<div class="chat-message">
|
|
17
25
|
<p><strong>SynthOS:</strong> You can use the dropdown to select a conversion type, enter your text, and click
|
|
18
26
|
"Convert" to see the result.</p>
|
|
19
27
|
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<div class="link-group" data-locked="true">
|
|
22
|
-
<a href="#" id="saveLink" data-locked="true">Save</a>
|
|
23
|
-
<a href="/pages" id="pagesLink" data-locked="true">Pages</a>
|
|
24
|
-
<a href="#" id="resetLink" data-locked="true">Reset</a>
|
|
25
|
-
</div>
|
|
28
|
+
</div>
|
|
26
29
|
<form action="/" method="POST" id="chatForm" data-locked="true">
|
|
27
|
-
<
|
|
28
|
-
<button type="submit" class="chat-submit" data-locked="true">Send</button>
|
|
30
|
+
<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..." data-locked="true"></textarea>
|
|
29
31
|
</form>
|
|
30
32
|
</div>
|
|
31
33
|
<div class="viewer-panel" id="viewerPanel" style="display: flex; flex-direction: column;">
|
|
@@ -84,6 +86,6 @@ settings:
|
|
|
84
86
|
<div id="instructions" style="display: none;" data-locked="true"></div>
|
|
85
87
|
<div id="thoughts" style="display: none;" data-locked="true"></div>
|
|
86
88
|
<script id="json-tools-logic">document.getElementById("copyButton").addEventListener("click",function(){const resultPanel=document.getElementById("resultPanel");navigator.clipboard.writeText(resultPanel.innerText).then(()=>alert("Text copied to clipboard!"),err=>console.error("Could not copy text: ",err))}),document.getElementById("convertButton").addEventListener("click",function(){const userInput=document.getElementById("userInput").value,conversionType=document.getElementById("conversionType").value;let result="";try{"escape"===conversionType?result=JSON.stringify(userInput):"unescape"===conversionType?result=JSON.parse(userInput):"format"===conversionType?result=JSON.stringify(JSON.parse(userInput),null,2):"unformat"===conversionType?result=JSON.stringify(JSON.parse(userInput)):"toYaml"===conversionType?result=jsyaml.dump(JSON.parse(userInput),{indent:2}):"fromYaml"===conversionType&&(result=JSON.stringify(jsyaml.load(userInput),null,2))}catch(e){result="Invalid input: "+e.message}document.getElementById("resultPanel").innerText=result,document.getElementById("copyButton").disabled=!1}),document.getElementById("resetButton").addEventListener("click",function(){document.getElementById("userInput").value="",document.getElementById("resultPanel").innerText="",document.getElementById("copyButton").disabled=!0});</script>
|
|
87
|
-
<script id="page-helpers" src="/api/page-helpers.js?v=
|
|
88
|
-
<script id="page-script" src="/api/page-script.js?v=
|
|
89
|
+
<script id="page-helpers" src="/api/page-helpers.js?v=3" data-locked="true"></script>
|
|
90
|
+
<script id="page-script" src="/api/page-script.js?v=3" data-locked="true"></script>
|
|
89
91
|
</body></html>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
3
|
+
"title": "Getting Started with My Notes",
|
|
4
|
+
"content": "# Getting Started with My Notes\n\nWelcome to **My Notes** — your personal note-taking space inside SynthOS.\n\n$$toc\n$$\n\n## Creating Notes\n\nClick the **+ New Note** button in the sidebar to create a fresh note. Give it a title in the field at the top, then start writing in the editor below.\n\n## Rich Text Editing\n\nThe editor supports full Markdown formatting:\n\n* **Bold**, *italic*, and ~~strikethrough~~\n* Headings (H1–H6)\n* Bullet lists, numbered lists, and task lists\n* Code blocks, block quotes, and horizontal rules\n* Tables, links, and images\n\nSwitch between the visual (WYSIWYG) editor and the Markdown source using the tabs at the top of the editor.\n\n## Searching and Filtering\n\nUse the **Search** box at the top of the sidebar to filter notes by title. As you type, the list narrows to matching notes.\n\n## Saving and Deleting\n\nAfter editing, click **Save** to persist your changes. To remove a note, click **Delete** — you'll be asked to confirm before anything is removed.\n\n## Table of Contents\n\nFor longer notes, click the **Table of Contents** icon (the indented list icon at the end of the toolbar) to insert an auto-updating TOC. The TOC is scoped to the section where you place it — if inserted under an H1, it lists all H2/H3/etc. children; under an H2, it lists H3/H4/etc. children of that section. The list updates automatically as you add, edit, or remove headings.\n\n***\n\n*Feel free to edit or delete this note — it's here to help you get started!*"
|
|
5
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head>
|
|
2
|
+
<meta charset="UTF-8">
|
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
4
|
+
<title>SynthOS - Notes</title>
|
|
5
|
+
<script id="theme-info" src="/api/theme-info.js" data-locked="true"></script>
|
|
6
|
+
<link id="theme-css" rel="stylesheet" href="/api/theme.css" data-locked="true">
|
|
7
|
+
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css">
|
|
8
|
+
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/theme/toastui-editor-dark.min.css">
|
|
9
|
+
<script src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js"></script>
|
|
10
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
|
11
|
+
<style id="notes-layout">
|
|
12
|
+
/* Layout-only styles — all component styling comes from FluentLM */
|
|
13
|
+
.notes-app {
|
|
14
|
+
display: flex;
|
|
15
|
+
height: 100%;
|
|
16
|
+
width: 100%;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
}
|
|
19
|
+
.notes-sidebar {
|
|
20
|
+
width: 280px;
|
|
21
|
+
min-width: 280px;
|
|
22
|
+
background: var(--defaultStateBackground);
|
|
23
|
+
border-right: 2px solid var(--neutralLight);
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
}
|
|
27
|
+
.notes-sidebar-header {
|
|
28
|
+
padding: 16px;
|
|
29
|
+
border-bottom: 1px solid var(--neutralLight);
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-wrap: wrap;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: 10px;
|
|
35
|
+
}
|
|
36
|
+
.notes-main {
|
|
37
|
+
flex: 1;
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
min-width: 0;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
background: var(--bodyBackground);
|
|
43
|
+
}
|
|
44
|
+
.notes-list {
|
|
45
|
+
flex: 1;
|
|
46
|
+
overflow-y: auto;
|
|
47
|
+
padding: 8px;
|
|
48
|
+
}
|
|
49
|
+
.notes-editor {
|
|
50
|
+
flex: 1;
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
padding: 20px;
|
|
54
|
+
min-width: 0;
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
}
|
|
57
|
+
.notes-instructions {
|
|
58
|
+
flex: 1;
|
|
59
|
+
display: flex;
|
|
60
|
+
flex-direction: column;
|
|
61
|
+
align-items: center;
|
|
62
|
+
justify-content: center;
|
|
63
|
+
text-align: center;
|
|
64
|
+
padding: 40px;
|
|
65
|
+
}
|
|
66
|
+
.notes-instructions .instructions-icon {
|
|
67
|
+
font-size: 64px;
|
|
68
|
+
margin-bottom: 20px;
|
|
69
|
+
opacity: 0.6;
|
|
70
|
+
}
|
|
71
|
+
.note-actions {
|
|
72
|
+
display: flex;
|
|
73
|
+
gap: 12px;
|
|
74
|
+
margin-top: 16px;
|
|
75
|
+
justify-content: flex-end;
|
|
76
|
+
}
|
|
77
|
+
#editor-container {
|
|
78
|
+
flex: 1;
|
|
79
|
+
display: flex;
|
|
80
|
+
flex-direction: column;
|
|
81
|
+
min-height: 0;
|
|
82
|
+
}
|
|
83
|
+
#editor-container .toastui-editor-defaultUI {
|
|
84
|
+
border: none !important;
|
|
85
|
+
border-radius: 10px !important;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
flex: 1;
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-direction: column;
|
|
90
|
+
}
|
|
91
|
+
#editor-container .toastui-editor-main {
|
|
92
|
+
flex: 1;
|
|
93
|
+
}
|
|
94
|
+
.toastui-editor-mode-switch {
|
|
95
|
+
display: none !important;
|
|
96
|
+
}
|
|
97
|
+
.save-toast {
|
|
98
|
+
opacity: 0;
|
|
99
|
+
transform: translateY(4px);
|
|
100
|
+
transition: opacity .3s, transform .3s;
|
|
101
|
+
pointer-events: none;
|
|
102
|
+
}
|
|
103
|
+
.save-toast.show {
|
|
104
|
+
opacity: 1;
|
|
105
|
+
transform: translateY(0);
|
|
106
|
+
pointer-events: auto;
|
|
107
|
+
}
|
|
108
|
+
</style></head>
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
<body>
|
|
112
|
+
<div class="shell-toolbar" data-locked="true">
|
|
113
|
+
<button class="shell-toolbar-btn" id="builderToggle" aria-label="Page Builder" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M7 18.5H6.2c-1.77 0-3.2-1.43-3.2-3.2V7.7C3 5.93 4.43 4.5 6.2 4.5h11.6c1.77 0 3.2 1.43 3.2 3.2v7.6c0 1.77-1.43 3.2-3.2 3.2H12l-4.2 3.2c-.5.38-1.2.02-1.2-.6V18.5Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><circle cx="8.5" cy="11.5" r="1" fill="currentColor"/><circle cx="12" cy="11.5" r="1" fill="currentColor"/><circle cx="15.5" cy="11.5" r="1" fill="currentColor"/></svg></button>
|
|
114
|
+
<button class="shell-toolbar-btn" id="pagesBtn" aria-label="View All Pages" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none"><rect x="3" y="3" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M6 7.5h5M6 10h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="18" y="3" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M21 7.5h5M21 10h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="3" y="18" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M6 22.5h5M6 25h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><rect x="18" y="18" width="11" height="12" rx="1.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M21 22.5h5M21 25h3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
|
|
115
|
+
<button class="shell-toolbar-btn" id="saveBtn" aria-label="Save Page" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M17 21v-8H7v8" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M7 3v5h8" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></button>
|
|
116
|
+
<div class="shell-toolbar-spacer" data-locked="true"></div>
|
|
117
|
+
<button class="shell-toolbar-btn" id="settingsBtn" aria-label="Settings" data-locked="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" stroke="currentColor" stroke-width="1.8"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
|
|
118
|
+
</div>
|
|
119
|
+
<div class="chat-panel" data-locked="true">
|
|
120
|
+
<div class="chat-header" data-locked="true"><span>Page Builder</span><button class="chat-header-close" id="builderClose" aria-label="Close builder" data-locked="true">×</button></div>
|
|
121
|
+
<div class="chat-messages" id="chatMessages" data-locked="true"><div class="chat-message"><p><strong>SynthOS:</strong> Welcome to <strong>My Notes</strong> — a simple note-taking app! Your notes are listed in the sidebar on the left. Click any note to view or edit it, or tap "+ New Note" to create a fresh one. Each note has a rich text editor with formatting tools, and you can save or delete notes using the buttons below the editor. Use the search box to filter notes by title or content. What would you like to do?</p></div></div>
|
|
122
|
+
<form action="/" method="POST" id="chatForm" data-locked="true">
|
|
123
|
+
<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..." data-locked="true"></textarea>
|
|
124
|
+
</form>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="viewer-panel" id="viewerPanel" style="justify-content: flex-start; align-items: stretch;"><div class="notes-app"><div class="notes-sidebar"><div class="notes-sidebar-header"><span class="flm-text flm-text--large flm-text--bold">My Notes</span><button class="flm-button flm-button--primary" id="addNoteBtn" data-icon="Add">New Note</button><div class="flm-searchbox" style="width:100%;margin-top:8px;"><input class="flm-searchbox-input" id="notesFilterInput" type="text" placeholder="Search notes..."></div></div><div class="notes-list flm-list flm-list--bordered" id="notesList"></div></div><div class="notes-main"><div class="notes-instructions" id="notesInstructions"><div class="instructions-icon"><i class="flm-icon flm-icon--large" data-icon="Edit" style="font-size:64px;opacity:0.6;"></i></div><span class="flm-text flm-text--xLarge flm-text--bold flm-text--block" style="margin-bottom:12px;">Welcome to Notes</span><span class="flm-text flm-text--secondary flm-text--block" style="max-width:300px;line-height:1.5;">Select a note from the sidebar to view or edit it, or click "+ New Note" to create a new one.</span></div><div class="notes-editor" id="notesEditor" style="display: none;"><div class="flm-textfield" style="margin-bottom:12px;"><input class="flm-textfield-input" id="noteTitleInput" placeholder="Note title..." style="font-size:24px;font-weight:600;"></div><div id="editor-container"></div><div id="saveToast" class="flm-messagebar flm-messagebar--success save-toast"></div><div class="note-actions"><button class="flm-button" id="noteDeleteBtn" data-icon="Delete" style="color:var(--errorText);">Delete</button><button class="flm-button" id="noteSaveBtn" data-icon="Save">Save</button></div></div></div></div><div id="deleteConfirmDialog" class="flm-dialog-overlay" data-light-dismiss><div class="flm-dialog" style="max-width:400px;width:90%;"><div class="flm-dialog-header"><h2 class="flm-dialog-title">Delete Note</h2></div><div class="flm-dialog-body"><p class="flm-text">Are you sure you want to delete this note? This action cannot be undone.</p></div><div class="flm-dialog-footer"><div style="flex:1;"></div><button class="flm-button" id="deleteConfirmCancel">Cancel</button><button class="flm-button" id="deleteConfirmOk" style="color:var(--errorText);">Delete</button></div></div></div><div id="unsavedDialog" class="flm-dialog-overlay" data-light-dismiss><div class="flm-dialog" style="max-width:400px;width:90%;"><div class="flm-dialog-header"><h2 class="flm-dialog-title">Unsaved Changes</h2></div><div class="flm-dialog-body"><p class="flm-text">You have unsaved changes. Do you want to discard them?</p></div><div class="flm-dialog-footer"><div style="flex:1;"></div><button class="flm-button" id="unsavedStayBtn">Stay</button><button class="flm-button" id="unsavedDiscardBtn" style="color:var(--errorText);">Discard</button></div></div></div><div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div></div>
|
|
127
|
+
<div id="instructions" style="display: none;" data-locked="true"></div>
|
|
128
|
+
<div id="thoughts" style="display: none;" data-locked="true"></div>
|
|
129
|
+
<script id="notes-app-logic">var currentNoteId=null,notes=[],editor=null;var isDirty=false,_loadingNote=false,_pendingNoteId=null;function updateSaveBtn(){var btn=document.getElementById("noteSaveBtn");if(isDirty)btn.classList.add("flm-button--primary");else btn.classList.remove("flm-button--primary")}function showSaveToast(){var t=document.getElementById("saveToast");t.textContent="Note saved";t.classList.add("show");setTimeout(function(){t.classList.remove("show")},2500)}var _tocViews=[];function tocPlugin(ctx){ctx.eventEmitter.listen("change",function(){setTimeout(function(){_tocViews.forEach(function(v){v.rebuild()})},0)});return{toHTMLRenderers:{toc:function(node){return[{type:"openTag",tagName:"div",outerNewLine:true,attributes:{"data-toc":"true"}},{type:"html",content:"<em>Table of Contents</em>"},{type:"closeTag",tagName:"div",outerNewLine:true}]}},wysiwygNodeViews:{customBlock:function(node,view,getPos){if(node.attrs.info!=="toc"){var pre=document.createElement("pre");pre.textContent=node.textContent;return{dom:pre,contentDOM:null,update:function(n){if(n.type.name==="customBlock"&&n.attrs.info!=="toc"){pre.textContent=n.textContent;return true}return false},destroy:function(){},stopEvent:function(){return false}}}var tocDiv=document.createElement("div");tocDiv.setAttribute("data-toc","true");tocDiv.contentEditable="false";tocDiv.style.cssText="padding:4px 0;user-select:none;";var tocView={dom:tocDiv,contentDOM:null,rebuild:function(){var pm=tocDiv.closest(".ProseMirror");if(!pm)return;var blocks=Array.from(pm.children);var idx=blocks.indexOf(tocDiv);if(idx<0)return;var parentLevel=0;for(var i=idx-1;i>=0;i--){var tag=blocks[i].tagName;if(/^H[1-6]$/.test(tag)){parentLevel=parseInt(tag.charAt(1));break}}var items=[];for(var i=idx+1;i<blocks.length;i++){var tag=blocks[i].tagName;if(/^H[1-6]$/.test(tag)){var lvl=parseInt(tag.charAt(1));if(parentLevel>0&&lvl<=parentLevel)break;var txt=blocks[i].textContent.trim();if(txt)items.push({level:lvl,text:txt})}}tocDiv.innerHTML="";if(items.length===0){var p=document.createElement("p");p.style.cssText="color:var(--bodySubtext);font-style:italic;margin:0;font-size:13px;";p.textContent="No headings found in this section";tocDiv.appendChild(p);return}var minLvl=Math.min.apply(null,items.map(function(it){return it.level}));var ul=document.createElement("ul");ul.style.cssText="list-style:none;padding:0;margin:0;";items.forEach(function(it){var li=document.createElement("li");var indent=it.level-minLvl;li.style.cssText="padding:2px 0;"+(indent>0?"margin-left:"+(indent*20)+"px;":"");var slug=it.text.toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");var a=document.createElement("a");a.href="#"+slug;a.textContent=it.text;a.style.cssText="color:var(--themePrimary);text-decoration:none;";li.appendChild(a);ul.appendChild(li)});tocDiv.appendChild(ul)},update:function(n){if(n.type.name!=="customBlock"||n.attrs.info!=="toc")return false;tocView.rebuild();return true},destroy:function(){var i=_tocViews.indexOf(tocView);if(i>=0)_tocViews.splice(i,1)},stopEvent:function(e){return e.type==="mousedown"||e.type==="click"}};_tocViews.push(tocView);setTimeout(function(){tocView.rebuild()},0);return tocView}}}}function initEditor(){var tocBtn=document.createElement("button");tocBtn.className="toastui-editor-toolbar-icons";tocBtn.style.cssText="background-image:none;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;margin:0;border:none;cursor:pointer;";tocBtn.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" width="18" height="18" style="display:block;flex-shrink:0;"><rect x="2" y="3" width="2" height="2" rx="0.5" fill="currentColor"/><line x1="6" y1="4" x2="18" y2="4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><rect x="4" y="8" width="2" height="2" rx="0.5" fill="currentColor"/><line x1="8" y1="9" x2="18" y2="9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/><rect x="4" y="13" width="2" height="2" rx="0.5" fill="currentColor"/><line x1="8" y1="14" x2="18" y2="14" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>';tocBtn.title="Insert Table of Contents";tocBtn.type="button";tocBtn.addEventListener("click",function(){if(!editor)return;var wasWysiwyg=!editor.isMarkdownMode();if(wasWysiwyg)editor.changeMode("markdown");editor.replaceSelection("\n$$toc\n$$\n\n");if(wasWysiwyg)editor.changeMode("wysiwyg")});editor=new toastui.Editor({el:document.querySelector("#editor-container"),height:"100%",initialEditType:"wysiwyg",previewStyle:"vertical",theme:"light"===window.themeInfo.mode?"light":"dark",placeholder:"Start writing your note...",plugins:[[tocPlugin]],toolbarItems:[["heading","bold","italic","strike"],["hr","quote"],["ul","ol","task","indent","outdent"],["table","link","image"],["code","codeblock"],[{el:tocBtn,tooltip:"Insert Table of Contents",name:"toc"}]]});editor.on("change",function(){if(!_loadingNote){isDirty=true;updateSaveBtn()}});var wwEl=document.querySelector(".toastui-editor-ww-container .ProseMirror");if(wwEl)wwEl.addEventListener("click",function(e){var a=e.target.closest("a");if(!a)return;var href=a.getAttribute("href");if(!href||href.charAt(0)!=="#")return;e.preventDefault();e.stopPropagation();var slug=href.slice(1),headings=wwEl.querySelectorAll("h1,h2,h3,h4,h5,h6");for(var i=0;i<headings.length;i++){var hSlug=headings[i].textContent.toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");if(hSlug===slug){headings[i].scrollIntoView({behavior:"smooth",block:"start"});break}}})}async function loadNotes(){try{notes=await synthos.data.list("notes"),renderNotesList()}catch(e){console.error("Failed to load notes:",e),notes=[],renderNotesList()}}function renderNotesList(){var list=document.getElementById("notesList"),filter=(document.getElementById("notesFilterInput").value||"").toLowerCase();list.innerHTML="";var filtered=filter?notes.filter(function(n){return(n.title||"").toLowerCase().includes(filter)}):notes;if(filtered.length===0){list.innerHTML='<div style="padding:20px;text-align:center;color:var(--bodySubtext);font-size:13px;">'+(filter?"No matching notes.":'No notes yet.<br>Click "+ New Note" to create one.')+"</div>"}else{filtered.forEach(function(note){var item=document.createElement("div");item.className="flm-list-item"+(currentNoteId===note.id?" flm-list-item--selected":"");item.style.cssText="cursor:pointer;padding:12px 14px;";item.innerHTML='<div class="flm-list-item-content"><span class="flm-list-item-primary flm-text--semibold flm-text--nowrap">'+escapeHtml(note.title||"Untitled")+"</span></div>";item.onclick=function(){selectNote(note.id)};list.appendChild(item)})}}function escapeHtml(text){var div=document.createElement("div");return div.textContent=text,div.innerHTML}function selectNote(id){if(isDirty&&id!==currentNoteId){_pendingNoteId=id;document.getElementById("unsavedDialog").classList.add("flm-dialog-overlay--open");return}currentNoteId=id;var note=notes.find(function(n){return n.id===id});if(note){document.getElementById("notesInstructions").style.display="none";document.getElementById("notesEditor").style.display="flex";document.getElementById("noteTitleInput").value=note.title||"";if(editor){_loadingNote=true;editor.setMarkdown(note.content||"");_loadingNote=false;setTimeout(function(){var ww=document.querySelector(".toastui-editor-ww-container .ProseMirror");if(ww)ww.scrollTop=0;var sc=document.querySelector(".toastui-editor-ww-container");if(sc)sc.scrollTop=0},0)}isDirty=false;updateSaveBtn();renderNotesList()}}function showInstructions(){currentNoteId=null;document.getElementById("notesInstructions").style.display="flex";document.getElementById("notesEditor").style.display="none";renderNotesList()}document.getElementById("addNoteBtn").onclick=async function(){var newNote={id:crypto.randomUUID(),title:"",content:""};try{var saved=await synthos.data.save("notes",newNote);notes.unshift(saved);selectNote(saved.id)}catch(e){console.error("Failed to create note:",e)}};document.getElementById("noteSaveBtn").onclick=async function(){if(!currentNoteId)return;var title=document.getElementById("noteTitleInput").value,content=editor?editor.getMarkdown():"";try{var updated=await synthos.data.save("notes",{id:currentNoteId,title:title,content:content}),idx=notes.findIndex(function(n){return n.id===currentNoteId});if(idx>=0)notes[idx]=updated;isDirty=false;updateSaveBtn();showSaveToast();renderNotesList()}catch(e){console.error("Failed to save note:",e)}};document.getElementById("noteDeleteBtn").onclick=function(){if(currentNoteId){document.getElementById("deleteConfirmDialog").classList.add("flm-dialog-overlay--open")}};document.getElementById("deleteConfirmCancel").onclick=function(){document.getElementById("deleteConfirmDialog").classList.remove("flm-dialog-overlay--open")};document.getElementById("deleteConfirmOk").onclick=async function(){document.getElementById("deleteConfirmDialog").classList.remove("flm-dialog-overlay--open");if(currentNoteId){try{await synthos.data.remove("notes",currentNoteId);notes=notes.filter(function(n){return n.id!==currentNoteId});showInstructions()}catch(e){console.error("Failed to delete note:",e)}}};document.getElementById("notesFilterInput").addEventListener("input",renderNotesList);document.getElementById("unsavedStayBtn").onclick=function(){document.getElementById("unsavedDialog").classList.remove("flm-dialog-overlay--open");_pendingNoteId=null};document.getElementById("unsavedDiscardBtn").onclick=function(){document.getElementById("unsavedDialog").classList.remove("flm-dialog-overlay--open");isDirty=false;var target=_pendingNoteId;_pendingNoteId=null;selectNote(target)};document.getElementById("noteTitleInput").addEventListener("input",function(){if(!_loadingNote){isDirty=true;updateSaveBtn()}});initEditor();loadNotes();</script>
|
|
130
|
+
<script id="page-helpers" src="/api/page-helpers.js?v=3" data-locked="true"></script>
|
|
131
|
+
<script id="page-script" src="/api/page-script.js?v=3" data-locked="true"></script>
|
|
132
|
+
</body></html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"effects": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Laser_Fire",
|
|
5
|
+
"file": "Laser_Fire.mp3",
|
|
6
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
7
|
+
"duration": 0.5,
|
|
8
|
+
"influence": 35
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Asteroid_Explosion",
|
|
12
|
+
"file": "Asteroid_Explosion.mp3",
|
|
13
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
14
|
+
"duration": 1.2,
|
|
15
|
+
"influence": 40
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "Ship_Thrust",
|
|
19
|
+
"file": "Ship_Thrust.mp3",
|
|
20
|
+
"loop": { "enabled": true, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
21
|
+
"duration": 15,
|
|
22
|
+
"influence": 30
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "Hyperspace_Jump",
|
|
26
|
+
"file": "Hyperspace_Jump.mp3",
|
|
27
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
28
|
+
"duration": 1.5,
|
|
29
|
+
"influence": 45
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "Power_Up_Collect",
|
|
33
|
+
"file": "Power_Up_Collect.mp3",
|
|
34
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
35
|
+
"duration": 0.8,
|
|
36
|
+
"influence": 35
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "Saucer_Alert",
|
|
40
|
+
"file": "Saucer_Alert.mp3",
|
|
41
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
42
|
+
"duration": 1,
|
|
43
|
+
"influence": 40
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "Menu_Navigate",
|
|
47
|
+
"file": "Menu_Navigate.mp3",
|
|
48
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
49
|
+
"duration": 0,
|
|
50
|
+
"influence": 30
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "Ambient_Space",
|
|
54
|
+
"file": "Ambient_Space.mp3",
|
|
55
|
+
"loop": { "enabled": true, "ambient": true, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
56
|
+
"duration": 15,
|
|
57
|
+
"influence": 25
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "Ambient_Space2",
|
|
61
|
+
"file": "Ambient_Space2.mp3",
|
|
62
|
+
"loop": { "enabled": false, "ambient": false, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
63
|
+
"duration": 15,
|
|
64
|
+
"influence": 30
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "Ambient_Space3",
|
|
68
|
+
"file": "Ambient_Space3.mp3",
|
|
69
|
+
"loop": { "enabled": true, "ambient": true, "minDelay": 0, "maxDelay": 0, "repeat": 0 },
|
|
70
|
+
"duration": 15,
|
|
71
|
+
"influence": 30
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|