Skip to content

[to test AI review bots] Add editor app for editing blogs and job posts (#880)#7

Open
brendanator wants to merge 1 commit into
base-sha/15b5a8b86277dc9a917eaa6e3728dd79130e956bfrom
head-sha/f7c59e67c9a589a39c480bf5eb2fab4d6e793245/2025-05-11T17-06-01/b6fe8a
Open

[to test AI review bots] Add editor app for editing blogs and job posts (#880)#7
brendanator wants to merge 1 commit into
base-sha/15b5a8b86277dc9a917eaa6e3728dd79130e956bfrom
head-sha/f7c59e67c9a589a39c480bf5eb2fab4d6e793245/2025-05-11T17-06-01/b6fe8a

Conversation

@brendanator

@brendanator brendanator commented May 11, 2025

Copy link
Copy Markdown

User description


Important

Introduces a new editor app for managing blogs and job posts with Markdown editing, Airtable integration, and deployment configuration.

  • New Features:
    • Introduced editor app for managing blogs and job posts with Markdown editing and image upload (MarkdownEditor.tsx, BodyEditor.tsx).
    • Implemented Airtable integration for blogs and jobs with CRUD API routes (index.ts in api/blogs and api/jobs).
    • Added presigned S3 upload functionality for file handling (presigned-upload.ts).
  • Infrastructure:
    • Added Dockerfile and Kubernetes service definition for deployment (Dockerfile, serviceDefinitions.ts).
    • Configured environment variables for local and test environments (.env.local.template, .env.test).
  • Styling:
    • Moved prose utility styles to shared UI library and removed from website app (tailwind.css, globals.css).
  • Testing:
    • Added unit tests and Storybook stories for MarkdownEditor (MarkdownEditor.test.tsx, MarkdownEditor.stories.tsx).
    • Added test for status API endpoint (status.test.ts).
  • Documentation:
    • Added README with setup and deployment instructions (README.md).

This description was created by Ellipsis for f7c59e6. You can customize this summary. It will automatically update as commits are pushed.



CodeAnt-AI Description

  • Introduced a new editor app for managing and editing blogs and job postings, including all core pages, API routes, and components.
  • Added a robust Markdown editor with image upload support, Storybook stories, and comprehensive unit tests.
  • Implemented Airtable integration for blogs and jobs, including schema definitions and API endpoints for CRUD operations.
  • Added file upload support via presigned S3 URLs and integrated environment variable validation.
  • Provided Kubernetes service definition, Dockerfile, and configuration files for deployment and local development.
  • Moved prose utility styles to the shared UI library for consistent styling and removed redundant styles from the website app.
  • Updated documentation with setup and deployment instructions.

This PR introduces a full-featured editor app for BlueDot staff to manage content, including a custom Markdown editor with image upload, Airtable integration, and all necessary infrastructure for deployment and testing. It also improves code sharing and styling consistency across the codebase.


Changes walkthrough

Relevant files
Enhancement
23 files
MarkdownEditor.tsx
Add image upload and embed support to MarkdownEditor component 

apps/editor/src/components/MarkdownEditor.tsx

  • Added support for image uploads via a new toolbar button and
    uploadFile prop.
  • Enhanced Markdown serialization/deserialization for embedded images.
  • Improved toolbar and editor styling.
  • Exported MarkdownEditorProps type.
  • +52/-11 
    BodyEditor.tsx
    Add BodyEditor component with file upload and save logic             

    apps/editor/src/components/BodyEditor.tsx

  • Introduced a new BodyEditor component for editing and saving markdown
    content.
  • Integrated file upload functionality using presigned S3 uploads.
  • Added unsaved changes warning and save button with loading state.
  • +105/-0 
    BaseLayout.tsx
    Add BaseLayout component with navigation                                             

    apps/editor/src/components/BaseLayout.tsx

  • Added a BaseLayout component with navigation for blogs and job
    postings.
  • Used BlueDot UI components for layout and navigation.
  • +21/-0   
    index.ts
    Add API route for listing blog posts                                                     

    apps/editor/src/pages/api/blogs/index.ts

  • Added API route to fetch all blogs, sorted by publish date.
  • Excluded blog body from summary responses.
  • +32/-0   
    index.ts
    Add API route for fetching and updating single blog post             

    apps/editor/src/pages/api/blogs/[slug]/index.ts

  • Added API route to fetch and update a single blog post by slug.
  • Supported GET and PUT methods with validation.
  • +63/-0   
    index.ts
    Add API route for listing job postings                                                 

    apps/editor/src/pages/api/jobs/index.ts

  • Added API route to fetch all job postings, sorted alphabetically.
  • Excluded job body from summary responses.
  • +30/-0   
    index.ts
    Add API route for fetching and updating single job posting         

    apps/editor/src/pages/api/jobs/[slug]/index.ts

  • Added API route to fetch and update a single job posting by slug.
  • Supported GET and PUT methods with validation.
  • +63/-0   
    presigned-upload.ts
    Add presigned S3 upload API route for file uploads                         

    apps/editor/src/pages/api/presigned-upload.ts

  • Added API route for generating S3 presigned upload URLs for file
    uploads.
  • Integrated AWS S3 client and presigned post logic.
  • +58/-0   
    status.ts
    Add status API endpoint                                                                               

    apps/editor/src/pages/api/status.ts

    • Added a status API endpoint returning online status.
    +11/-0   
    index.tsx
    Add blog posts listing page with edit links                                       

    apps/editor/src/pages/blogs/index.tsx

  • Added page to list all blog posts with edit links.
  • Integrated API call and error/loading handling.
  • +49/-0   
    [slug].tsx
    Add blog post editor page                                                                           

    apps/editor/src/pages/blogs/[slug].tsx

  • Added page to edit a single blog post using BodyEditor.
  • Integrated API calls for fetching and saving blog content.
  • +62/-0   
    index.tsx
    Add job postings listing page with edit links                                   

    apps/editor/src/pages/jobs/index.tsx

  • Added page to list all job postings with edit links.
  • Integrated API call and error/loading handling.
  • +49/-0   
    [slug].tsx
    Add job posting editor page                                                                       

    apps/editor/src/pages/jobs/[slug].tsx

  • Added page to edit a single job posting using BodyEditor.
  • Integrated API calls for fetching and saving job content.
  • +62/-0   
    index.tsx
    Add home page redirect to blogs                                                               

    apps/editor/src/pages/index.tsx

    • Added redirect from home page to blogs listing.
    +12/-0   
    index.tsx
    Add login redirect page                                                                               

    apps/editor/src/pages/login/index.tsx

    • Added login redirect page using BlueDot UI login preset.
    +3/-0     
    oauth-callback.tsx
    Add OAuth callback page for login                                                           

    apps/editor/src/pages/login/oauth-callback.tsx

    • Added OAuth callback page for login flow.
    +3/-0     
    index.ts
    Add AirtableTs database instance                                                             

    apps/editor/src/lib/api/db/index.ts

    • Added AirtableTs database instance with environment configuration.
    +6/-0     
    tables.ts
    Define Airtable schemas for blogs and job postings                         

    apps/editor/src/lib/api/db/tables.ts

    • Defined Airtable table schemas for blogs and job postings.
    +68/-0   
    env.ts
    Add environment variable validation for API                                       

    apps/editor/src/lib/api/env.ts

  • Added environment variable validation for required API keys and
    secrets.
  • +12/-0   
    makeApiRoute.ts
    Add helper for authenticated API routes                                               

    apps/editor/src/lib/api/makeApiRoute.ts

  • Added helper to create authenticated API routes with environment and
    token verification.
  • +8/-0     
    _app.tsx
    Add custom App component with layout and SSR config                       

    apps/editor/src/pages/_app.tsx

  • Added custom App component with BaseLayout and dynamic SSR disabling.
  • Set up global styles and page title.
  • +27/-0   
    tailwind.css
    Move prose utility styles to shared UI library                                 

    libraries/ui/src/default-config/tailwind.css

  • Moved prose utility styles from website to shared UI library.
  • Ensured consistent prose styling across apps.
  • +46/-0   
    globals.css
    Remove prose utility styles from website globals                             

    apps/website/src/globals.css

    • Removed prose utility styles (now moved to shared UI library).
    +0/-45   
    Tests
    3 files
    MarkdownEditor.test.tsx
    Add unit tests for MarkdownEditor component                                       

    apps/editor/src/components/MarkdownEditor.test.tsx

  • Added comprehensive tests for the MarkdownEditor component.
  • Tested rendering, content updates, toolbar buttons, and formatting
    actions.
  • +124/-1 
    MarkdownEditor.stories.tsx
    Add Storybook stories for MarkdownEditor component                         

    apps/editor/src/components/MarkdownEditor.stories.tsx

  • Added Storybook stories for MarkdownEditor with sample markdown
    content.
  • Demonstrated formatting, code blocks, and list support.
  • +69/-1   
    status.test.ts
    Add test for status API endpoint                                                             

    apps/editor/src/pages/api/status.test.ts

    • Added test for the status API endpoint to verify online response.
    +21/-0   
    Configuration changes
    12 files
    next.config.js
    Add Next.js configuration file                                                                 

    apps/editor/next.config.js

    • Added Next.js configuration using BlueDot UI default config.
    +3/-0     
    postcss.config.js
    Add PostCSS configuration for Tailwind CSS                                         

    apps/editor/postcss.config.js

    • Added PostCSS configuration with Tailwind CSS plugin.
    +5/-0     
    globals.css
    Add global CSS imports for Tailwind and typography                         

    apps/editor/src/globals.css

    • Added global CSS imports for Tailwind and typography.
    +6/-0     
    package.json
    Add package.json for editor app dependencies and scripts             

    apps/editor/package.json

  • Added package.json with dependencies, scripts, and devDependencies for
    the editor app.
  • +57/-0   
    tsconfig.json
    Add TypeScript configuration for editor app                                       

    apps/editor/tsconfig.json

    • Added TypeScript configuration extending BlueDot's Next.js config.
    +8/-0     
    vitest.config.mjs
    Add Vitest configuration for editor app                                               

    apps/editor/vitest.config.mjs

  • Added Vitest configuration with inline dependency for
    tiptap-starter-kit.
  • +12/-0   
    Dockerfile
    Add Dockerfile for editor app deployment                                             

    apps/editor/Dockerfile

  • Added Dockerfile for building and running the editor app in
    production.
  • +31/-0   
    .env.local.template
    Add .env.local.template for environment variables                           

    apps/editor/.env.local.template

    • Added environment variable template for local development.
    +14/-0   
    .env.test
    Add .env.test for test environment variables                                     

    apps/editor/.env.test

    • Added test environment variable file for testing.
    +11/-0   
    next-env.d.ts
    Add Next.js type definitions                                                                     

    apps/editor/next-env.d.ts

    • Added Next.js type definitions file.
    +5/-0     
    serviceDefinitions.ts
    Add Kubernetes service definition for bluedot-editor app             

    apps/infra/src/k8s/serviceDefinitions.ts

  • Added service definition for bluedot-editor app in Kubernetes.
  • Configured environment variables and host for deployment.
  • +18/-0   
    vitest.config.mjs
    Simplify Vitest config for website app                                                 

    apps/website/vitest.config.mjs

  • Simplified Vitest config by removing inline dependency for
    tiptap-starter-kit.
  • +1/-10   
    Documentation
    1 files
    README.md
    Add README for editor app setup and deployment                                 

    apps/editor/README.md

  • Added README with setup and deployment instructions for the editor
    app.
  • +13/-0   
    Dependencies
    1 files
    package.json
    Remove markdown editor dependencies from website package.json   

    apps/website/package.json

  • Removed tiptap and react-markdown dependencies from website
    package.json.
  • +0/-5     
    💡 Usage Guide

    Checking Your Pull Request

    Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

    Talking to CodeAnt AI

    Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

    @codeant-ai ask: Your question here
    

    This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

    Retrigger review

    Ask CodeAnt AI to review the PR again, by typing:

    @codeant-ai: review
    

    Check Your Repository Health

    To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

    Summary by Sourcery

    Create a new editor app for managing blogs and job posts, providing a comprehensive content management interface with Markdown editing, file uploads, and Airtable integration

    New Features:

    • Introduced a new editor app for managing blogs and job postings
    • Added Markdown editor with image upload support
    • Created API routes for fetching and updating blog and job content
    • Implemented file upload functionality via presigned S3 URLs

    Enhancements:

    • Moved prose utility styles to shared UI library
    • Added comprehensive authentication and API route handling
    • Implemented unsaved changes warning in content editor

    Deployment:

    • Added Dockerfile for editor app
    • Configured Kubernetes service definition
    • Added environment variable templates

    Documentation:

    • Created README with setup and deployment instructions

    Tests:

    • Added unit tests for MarkdownEditor component
    • Created Storybook stories for MarkdownEditor
    • Added status API endpoint test

    Chores:

    • Removed markdown editor dependencies from website package
    • Simplified Vitest configuration

    Summary by CodeRabbit

    • New Features

      • Introduced a new content editor app for managing blogs and job postings, featuring authenticated access, markdown editing with image upload, and integration with Airtable and AWS S3.
      • Added dedicated pages for listing and editing blogs and jobs, including save functionality and navigation.
      • Implemented API endpoints for fetching and updating blog and job data, as well as generating presigned upload URLs for assets.
      • Provided login and OAuth callback pages with Google authentication.
    • Bug Fixes

      • None.
    • Documentation

      • Added comprehensive README and environment variable templates for setup and deployment guidance.
    • Style

      • Applied new global and prose-specific styling for consistent typography and UI appearance.
    • Chores

      • Added Docker, TypeScript, PostCSS, and Vitest configurations for streamlined development, testing, and deployment.
      • Updated infrastructure to deploy the editor app with required environment variables and service definitions.
    • Refactor

      • Removed unused Tiptap and markdown-related dependencies and styles from the website app to streamline codebase.

    @brendanator

    Copy link
    Copy Markdown
    Author

    This is a benchmark review for experiment bluedot.
    Run ID: bluedot/benchmark_2025-05-11T17-06-01_v1-36-0-13-gc38b234d7-dirty.

    This pull request was cloned from https://github.com/bluedotimpact/bluedot/pull/909. (Note: the URL is not a link to avoid triggering a notification on the original pull request.)

    Experiment configuration
    review_config:
      # User configuration for the review
      # - benchmark - use the user config from the benchmark reviews
      # - <value> - use the value directly
      user_review_config:
        enable_ai_review: true
        enable_rule_comments: false
    
        enable_complexity_comments: benchmark
        enable_security_comments: benchmark
        enable_tests_comments: benchmark
        enable_comment_suggestions: benchmark
    
        enable_pull_request_summary: benchmark
        enable_review_guide: benchmark
    
        enable_approvals: true
    
      ai_review_config:
        # The model responses to use for the experiment
        # - benchmark - use the model responses from the benchmark reviews
        # - llm - call the language model to generate responses
        model_responses:
          comments_model: benchmark
          comment_validation_model: benchmark
          comment_suggestion_model: benchmark
          complexity_model: benchmark
          security_model: benchmark
          tests_model: benchmark
          pull_request_summary_model: benchmark
          review_guide_model: benchmark
          overall_comments_model: benchmark
    
    # The pull request dataset to run the experiment on
    pull_request_dataset:
    - https://github.com/bluedotimpact/bluedot/pull/909
    
    # Questions to ask to label the review comments
    review_comment_labels: []
    # - label: correct
    #   question: Is this comment correct?
    
    # Benchmark reviews generated by running
    #   python -m scripts.experiment benchmark <experiment_name>
    benchmark_reviews: []
    

    @SourceryAI SourceryAI left a comment

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    Hey @brendanator - I've reviewed your changes - here's some feedback:

    • In apps/editor/src/pages/api/jobs/[slug]/index.ts, the PUT response returns { blog: updatedJob } instead of { job: updatedJob }, which may cause confusion or bugs in consumers expecting a 'job' key.
    • Consider extracting the Airtable base and table IDs in apps/editor/src/lib/api/db/tables.ts to environment variables or a shared config to avoid hardcoding sensitive or environment-specific values.
    Here's what I looked at during the review
    • 🟡 General issues: 5 issues found
    • 🟢 Security: all looks good
    • 🟢 Testing: all looks good
    • 🟢 Documentation: all looks good

    LangSmith trace

    Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

    const upload = (file: File) => {
    return new Promise<UploaderData>((resolve) => {
    const reader = new FileReader();
    reader.addEventListener('load', () => {

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    suggestion: Consider handling FileReader error events during file uploads.

    Attach an 'error' event listener to reject the promise on read failures and improve upload resiliency.

    Suggested implementation:

                return new Promise<UploaderData>((resolve, reject) => {
                  const reader = new FileReader();
                  reader.addEventListener('error', () => {
                    reject(new Error('FileReader failed to read file'));
                  });
                  reader.addEventListener('load', () => {
                    uploadFile(reader.result as ArrayBuffer, file.type).then(({ url }) => {
                      resolve({
                        name: '',
                        type: file.type,
                        size: file.size,
                        url,
                      });
                    });
                  }, false);

    Comment on lines +30 to +34
    const handleBeforeUnload = (e: BeforeUnloadEvent) => {
    if (hasUnsavedChanges) {
    e.preventDefault();
    }
    };

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    suggestion (bug_risk): Set returnValue on beforeunload events to ensure browsers show the unsaved changes prompt.

    Some browsers ignore preventDefault() alone; you must explicitly set e.returnValue (e.g., "" ) to trigger the prompt.

    Suggested change
    const handleBeforeUnload = (e: BeforeUnloadEvent) => {
    if (hasUnsavedChanges) {
    e.preventDefault();
    }
    };
    const handleBeforeUnload = (e: BeforeUnloadEvent) => {
    if (hasUnsavedChanges) {
    e.preventDefault();
    e.returnValue = "";
    }
    };

    });
    return {
    type: 'success' as const,
    blog: updatedJob,

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    issue: Return a property named 'job' instead of 'blog' for the job update response.

    Use 'job' to match the endpoint’s type definition and prevent consumer confusion.

    Comment on lines +194 to +196
    .replace(
    /!\[[^\]]*\]\((?<filename>.*?)(?="|\))(?<optionalpart>".*")?\)/g,
    (match: string, filename: string) => `<Embed url="${filename.trim()}" />\n`,

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    question (bug_risk): Review the regex callback parameters for embed transformations.

    Use the callback’s groups property to access both filename and optionalpart, ensuring all parts are handled.

    Comment thread apps/editor/README.md

    ## Deployment

    This app is deployed onto the K8s cluster as a standard Next.js app in docker.

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    suggestion (typo): Capitalize 'Docker' as it is a proper noun.

    Capitalize “docker” to “Docker” in that sentence.

    Suggested change
    This app is deployed onto the K8s cluster as a standard Next.js app in docker.
    This app is deployed onto the K8s cluster as a standard Next.js app in Docker.

    @ellipsis-dev ellipsis-dev Bot left a comment

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    Caution

    Changes requested ❌

    Reviewed everything up to f7c59e6 in 2 minutes and 13 seconds. Click for details.
    • Reviewed 1450 lines of code in 40 files
    • Skipped 2 files when reviewing.
    • Skipped posting 8 draft comments. View those below.
    • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
    1. apps/editor/src/pages/api/jobs/[slug]/index.ts:55
    • Draft comment:
      Return object key mismatch: in PUT case, use 'job' instead of 'blog'.
    • Reason this comment was not posted:
      Marked as duplicate.
    2. apps/editor/package.json:19
    • Draft comment:
      Avoid using '*' for dependency versions; specify explicit version ranges to prevent unexpected breaking changes.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 20% vs. threshold = 50% While using "" for dependencies can be risky, this appears to be an internal package within a monorepo (given the @bluedot scope and other similar internal dependencies). In monorepos, it's common practice to use "" for internal package dependencies to ensure you're always using the latest version. The comment seems to be applying a general best practice without considering the monorepo context. The comment could be correct if this isn't actually a monorepo setup, or if there's a specific reason to pin internal package versions in this project. The presence of multiple @bluedot/* packages and the consistent use of "" for internal dependencies strongly suggests this is a monorepo where "" is the intended version specifier. The comment should be deleted as it's suggesting a change that goes against common monorepo practices and the apparent intentional pattern in this codebase.
    3. apps/editor/src/components/MarkdownEditor.tsx:120
    • Draft comment:
      The 'Insert image' toolbar button triggers setImage with an empty src; consider integrating a file-selection prompt or clearer upload flow.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment suggests there's an issue with the empty src, but looking at the full implementation, this appears to be handled by the Uploader component. The Uploader is properly configured to handle file selection and uploading. The empty setImage call is likely just a placeholder that gets filled in by the Uploader's functionality. I could be wrong about how the Uploader interacts with the setImage call. Maybe these are separate flows that don't work together. The presence of the configured Uploader extension with detailed file handling logic strongly suggests this is the intended flow for image uploads. The empty setImage is likely part of this flow. The comment should be deleted as it appears to misunderstand the implementation. The image upload flow is actually handled by the Uploader component.
    4. apps/editor/src/pages/api/jobs/[slug]/index.ts:55
    • Draft comment:
      Returned property key is 'blog' in the PUT case; it should be 'job' to match the expected response type.
    • Reason this comment was not posted:
      Marked as duplicate.
    5. apps/editor/src/pages/api/blogs/[slug]/index.ts:30
    • Draft comment:
      TODO: Remove the unnecessary cast used in the filterByFormula when array support is dropped; consider revisiting for improved type safety.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment is redundant with the existing TODO comment. The suggestion to remove the cast without addressing the underlying array support issue could potentially cause type errors. Since this is a new file, the TODO comment was added intentionally as part of the implementation. Maybe the comment is trying to encourage addressing the TODO sooner rather than later? Perhaps the type safety concern is valid and worth highlighting separately from the TODO? The existing TODO already acknowledges the type safety issue, and removing the cast without addressing the underlying array support would be premature. The comment doesn't provide additional actionable value. Delete the comment as it's redundant with the existing TODO and its suggestion could introduce type errors if implemented without addressing the underlying array support issue.
    6. apps/editor/README.md:11
    • Draft comment:
      Consider capitalizing 'docker' to 'Docker' for consistency with the product's branding.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While technically correct about Docker's official branding, this is an extremely minor stylistic issue in a documentation file. It doesn't affect functionality, readability, or understanding. The rules specifically say not to make purely informative comments and to avoid unimportant issues. Docker's official branding could be considered important for professional documentation. Some might argue consistency matters for company image. While branding consistency is nice, this is an internal README file, not customer-facing documentation. The benefit is too minor to warrant a PR comment. This comment should be deleted as it's too minor and purely informative, not suggesting any meaningful code changes.
    7. apps/editor/vitest.config.mjs:7
    • Draft comment:
      Typographical/lexical discrepancy: The comment on line 7 refers to "tippy.js", but the dependency specified in line 8 is '@syfxlin/tiptap-starter-kit'. Please verify whether the comment should match the actual dependency to avoid confusion.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment is technically correct that there's a mismatch, but this seems like an overly pedantic point. The comment might be referring to tippy.js because it's a dependency within tiptap-starter-kit causing the issue. Without access to the full codebase and dependency tree, we can't know for sure. More importantly, this kind of minor comment text improvement doesn't affect functionality. The comment could be pointing out a genuine documentation issue that might confuse future developers about which package is actually causing the problem. While accurate documentation is good, this level of nitpicking about internal comments doesn't meet the bar of "clearly a code change required" and falls into the category of being unimportant. This comment should be deleted as it's overly pedantic and doesn't suggest an important or necessary code change.
    8. libraries/ui/src/default-config/tailwind.css:139
    • Draft comment:
      Typo: 'psuedoelement' should be corrected to 'pseudoelement' for clarity.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.

    Workflow ID: wflow_ebAkicLzHOAHC12T

    You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

    useEffect(() => {
    const handleBeforeUnload = (e: BeforeUnloadEvent) => {
    if (hasUnsavedChanges) {
    e.preventDefault();

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    Consider setting e.returnValue in the beforeunload handler for better browser support.

    Suggested change
    e.preventDefault();
    e.returnValue = '';

    });
    return {
    type: 'success' as const,
    blog: updatedJob,

    Copy link
    Copy Markdown

    Choose a reason for hiding this comment

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

    Typographical Error: The returned object in the PUT case uses the property blog (line 56) instead of job as defined in the response type and the GET case. This inconsistency should be corrected to maintain consistent naming across the endpoint responses.

    Suggested change
    blog: updatedJob,
    job: updatedJob,

    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.

    3 participants