Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

svg feedback messed up #152

Merged
merged 37 commits into from
Jan 17, 2025
Merged

svg feedback messed up #152

merged 37 commits into from
Jan 17, 2025

Conversation

voodoohop
Copy link
Member

No description provided.

mentatbot bot and others added 30 commits January 16, 2025 23:13
Created a new React app for the prompt guessing game that will:
- Generate creative prompts using text.pollinations.ai
- Create images from prompts using image.pollinations.ai
- Let users guess the prompts and provide feedback

Next steps:
1. Integrate with text.pollinations.ai for prompt generation
2. Integrate with image.pollinations.ai for image generation
3. Implement prompt similarity checking for guess evaluation

Closes # 140

Mentat precommits passed. Log: https://mentat.ai/log/da1bbadf-deed-4d43-b60e-4fdf03101e21
- Added utility functions for:
  - Generating creative prompts using text.pollinations.ai
  - Creating images from prompts using image.pollinations.ai
  - Evaluating guess similarity
- Enhanced UI with loading and error states
- Added disabled states for inputs during loading
- Improved feedback system for user guesses
- Added loading animation and error styling

Closes # 140

Mentat precommits passed. Log: https://mentat.ai/log/81a96ae5-98dc-4628-985c-a96846c045de
- Added clear instructions for players
- Implemented hint system after 5 attempts
- Show actual prompt after successful guess
- Added game won state to prevent further guesses
- Improved UI feedback and styling
- Added loading and disabled states for better UX

Closes # 140

Mentat precommits passed. Log: https://mentat.ai/log/10c53bb0-aa10-4fdf-9153-ba6aff1b73bc
- Added proper Vite configuration
- Fixed directory structure to match Vite requirements
- Added missing index.css file
- Updated build settings
- Successfully building to dist directory

The build is now working correctly and generating the necessary files.

Mentat precommits passed. Log: https://mentat.ai/log/549d3bf4-9953-43bc-8d8a-e879e2a81697
Copy link
Contributor

devloai bot commented Jan 17, 2025

Automatic code review is enabled for this repository. Reviewing this PR now.

@voodoohop voodoohop merged commit ed5b20e into main Jan 17, 2025
Copy link
Contributor

🚀 PR Preview deployed!

Preview URL: https://pollinations.github.io/hive/pr-152/

1 similar comment
Copy link
Contributor

🚀 PR Preview deployed!

Preview URL: https://pollinations.github.io/hive/pr-152/

Copy link
Contributor

Testing .mentat

Testing ai-chat

Testing static HTML app: ai-chat

Testing graphics-editor

Testing static HTML app: graphics-editor

Testing llm-feedback

Testing static HTML app: llm-feedback

Testing millionaire-game

Testing static HTML app: millionaire-game

Testing placeholder-generator

Testing Node.js app: placeholder-generator

Installing dependencies



added 273 packages, and audited 274 packages in 9s

108 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.

ℹ️ No tests found

Building



> placeholder-generator@0.0.0 build
> vite build

�[36mvite v5.4.11 �[32mbuilding for production...�[36m�[39m
transforming...
�[32m✓�[39m 32 modules transformed.
rendering chunks...
computing gzip size...
�[2mdist/�[22m�[32mindex.html                 �[39m�[1m�[2m  0.45 kB�[22m�[1m�[22m�[2m │ gzip:  0.28 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[35mindex-Xy5EDiQ3.css  �[39m�[1m�[2m  1.25 kB�[22m�[1m�[22m�[2m │ gzip:  0.61 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[36mindex-BAcusHwb.js   �[39m�[1m�[2m144.97 kB�[22m�[1m�[22m�[2m │ gzip: 46.73 kB�[22m
�[32m✓ built in 816ms�[39m


Testing pollinations-image-show

Testing Node.js app: pollinations-image-show

Installing dependencies



added 314 packages, and audited 315 packages in 12s

118 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


ℹ️ No tests found

Building



> pollinations-image-show@0.0.0 build
> vite build

�[36mvite v6.0.7 �[32mbuilding for production...�[36m�[39m
transforming...
�[32m✓�[39m 969 modules transformed.
rendering chunks...
computing gzip size...
�[2mdist/�[22m�[32mindex.html                 �[39m�[1m�[2m  0.46 kB�[22m�[1m�[22m�[2m │ gzip:   0.29 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[35mindex-Ck1XBn8h.css  �[39m�[1m�[2m  0.56 kB�[22m�[1m�[22m�[2m │ gzip:   0.32 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[36mindex-COrGKCAO.js   �[39m�[1m�[2m311.91 kB�[22m�[1m�[22m�[2m │ gzip: 104.05 kB�[22m
�[32m✓ built in 2.74s�[39m


Testing prompt-guessing-game

Testing Node.js app: prompt-guessing-game

Installing dependencies



added 61 packages, and audited 62 packages in 2s

7 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


ℹ️ No tests found

Building



> prompt-guessing-game@0.1.0 build
> vite build

�[36mvite v5.4.11 �[32mbuilding for production...�[36m�[39m
transforming...
�[32m✓�[39m 33 modules transformed.
rendering chunks...
computing gzip size...
�[2mdist/�[22m�[32mindex.html                 �[39m�[1m�[2m  0.46 kB�[22m�[1m�[22m�[2m │ gzip:  0.29 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[35mindex-Dcj2S7H_.css  �[39m�[1m�[2m  1.71 kB�[22m�[1m�[22m�[2m │ gzip:  0.76 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[36mindex-DycsOj9-.js   �[39m�[1m�[2m146.36 kB�[22m�[1m�[22m�[2m │ gzip: 47.33 kB�[22m
�[32m✓ built in 805ms�[39m


Testing svg-feedback

Testing static HTML app: svg-feedback

❌ HTML tests failed for svg-feedback

Testing tarot-reader

Testing Node.js app: tarot-reader

Installing dependencies



added 324 packages, and audited 325 packages in 3s

155 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


ℹ️ No tests found

Building



> tarot-reader@0.0.0 build
> vite build

�[36mvite v6.0.7 �[32mbuilding for production...�[36m�[39m
transforming...
�[32m✓�[39m 34 modules transformed.
rendering chunks...
computing gzip size...
�[2mdist/�[22m�[32mindex.html                 �[39m�[1m�[2m  0.56 kB�[22m�[1m�[22m�[2m │ gzip:  0.33 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[35mindex-tTF554dA.css  �[39m�[1m�[2m  2.48 kB�[22m�[1m�[22m�[2m │ gzip:  1.03 kB�[22m
�[2mdist/�[22m�[2massets/�[22m�[36mindex-BxXiSpNq.js   �[39m�[1m�[2m149.43 kB�[22m�[1m�[22m�[2m │ gzip: 48.71 kB�[22m
�[32m✓ built in 902ms�[39m


Copy link
Contributor

@mentatbot mentatbot bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes in this PR improve the seed handling mechanism in the SVG feedback system in several important ways:

  1. Simplified Seed Management: The code now uses currentSeed directly instead of checking elements.seed.value each time, making the seed handling more consistent and predictable throughout the generation process.

  2. Proper Initial Seed Handling: Added proper initialization of initialSeed when starting evolution, which only updates if a valid seed value is provided in the input field. This ensures better control over the starting point of generations.

  3. Improved Preset System: Modified preset saving to store initialSeed instead of currentSeed, ensuring that when loading a preset, it starts from the intended seed value. This improves reproducibility when sharing or reusing presets.

These changes should fix issues with SVG feedback consistency and make the system more reliable for users who want to reproduce specific results or share their presets with others.

The PR has been merged and the changes look good. The modifications are focused and address the specific issue with seed handling without introducing unnecessary changes to other parts of the system.

Thanks for using MentatBot. Give comments a 👍 or 👎 to help me improve!
You can change my review settings on my settings page.

Copy link
Contributor

@mentatbot mentatbot bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While the seed handling changes in this PR look good, the automated tests indicate there's an HTML validation issue in the svg-feedback app:

❌ HTML tests failed for svg-feedback

This could be due to HTML validation issues in the index.html file. Some potential areas to check:

  1. XML declaration compatibility with HTML5
  2. Proper nesting of SVG elements
  3. Valid attribute values and quotes
  4. Proper closing of all tags

Would you like me to do a detailed HTML validation check to identify the specific issues?

Thanks for using MentatBot. Give comments a 👍 or 👎 to help me improve!
You can change my review settings on my settings page.

Copy link
Contributor

@devloai devloai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've reviewed the SVG feedback changes and found several issues that need attention. The most critical is a security vulnerability with unsanitized SVG injection that could lead to XSS attacks. Additionally, there are issues with the retry mechanism's seed handling and error reporting that should be addressed for better reliability and debugging.

const seed = parseInt(elements.seed.value) >= 0 ?
parseInt(elements.seed.value) :
currentSeed++; // Use and increment the current seed
const seed = currentSeed;// + retryCount; // Increment seed based on retry count
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commented out code // + retryCount suggests there was an intention to increment the seed based on retry count, but it's not being used. This could lead to generating the same SVG on retries since the seed remains unchanged until after the error. Consider either removing the commented code or implementing the retry seed increment properly.


if (!svgContent.includes('</svg>')) {
if (!svgContent || !svgContent.includes('</svg>')) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error handling here combines two checks into one condition, but the error message doesn't reflect which specific validation failed. This makes debugging harder. Consider separating the checks with specific error messages. Here's how:

// Separate the checks for better error reporting
if (!svgContent) {
    throw new Error('No valid SVG content found in response');
}
if (!svgContent.includes('</svg>')) {
    throw new Error('Incomplete SVG content');
}

@@ -304,11 +303,8 @@
const svgContent = extractSvgContent(text);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The SVG content is being directly inserted into the DOM without sanitization (see usage in updateFrame). SVG can contain script tags and event handlers that could lead to XSS attacks. Consider using DOMParser and sanitizing the SVG content before insertion:

function sanitizeAndInsertSvg(svgString, container) {
    const parser = new DOMParser();
    const doc = parser.parseFromString(svgString, 'image/svg+xml');
    // Remove potentially dangerous elements/attributes
    const sanitized = sanitizeSvgElement(doc.documentElement);
    container.replaceChildren(sanitized);
}

Copy link
Contributor

@mentatbot mentatbot bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the detailed review. These are important issues that should be addressed in a follow-up PR. Here's how we should handle each one:

  1. XSS Security Vulnerability
    The suggestion to implement SVG sanitization is critical for security. We should definitely implement the suggested sanitizeAndInsertSvg function to prevent potential XSS attacks through malicious SVG content.

  2. Retry Mechanism
    You're right about the commented-out retry seed increment. We should either:

  • Remove the commented code to avoid confusion, or
  • Properly implement the retry seed increment to ensure different results on retries
  1. Error Handling
    Agreed on separating the SVG validation checks for better error reporting. This will make debugging much easier.

Would you like me to create a follow-up PR implementing these security and quality improvements? The changes would be:

  1. Add SVG sanitization
  2. Fix the retry mechanism
  3. Improve error handling with specific messages

Thanks for using MentatBot. Give comments a 👍 or 👎 to help me improve!
You can change my review settings on my settings page.

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