<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rachit Chawla</title>
    <description>The latest articles on DEV Community by Rachit Chawla (@rachit1313).</description>
    <link>https://dev.to/rachit1313</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1156102%2Fd1cc2ef1-fae6-4772-a6c5-fdeb3c924ce7.png</url>
      <title>DEV Community: Rachit Chawla</title>
      <link>https://dev.to/rachit1313</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rachit1313"/>
    <language>en</language>
    <item>
      <title>ChatCraft v2.0.0</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Sat, 20 Apr 2024 15:06:49 +0000</pubDate>
      <link>https://dev.to/rachit1313/chatcraft-v200-1min</link>
      <guid>https://dev.to/rachit1313/chatcraft-v200-1min</guid>
      <description>&lt;p&gt;Finally, Its the last week of semester and we had our last class of Open Source Development Project with &lt;a href="https://github.com/humphd"&gt;David Humphrey&lt;/a&gt;. I would like to thank David for being my professor and mentor. I've taken 30 courses in Seneca and I would like to say that the three courses by David Humphrey were the one in which I learnt the most, i.e two open source courses which enhanced my github profile, gained confidence in git skills. Also before the courses ,I always wanted to contribute in Open Source but had no idea where to start from. I would also like to thank &lt;a href="https://github.com/tarasglek"&gt;Taras Glek&lt;/a&gt; for giving me an opportunity to work on &lt;a href="https://chatcraft.org/"&gt;ChatCraft.org&lt;/a&gt;. Working on ChatCraft has been the biggest project I've ever worked on till date. &lt;/p&gt;

&lt;h2&gt;
  
  
  This week contributions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  PR 600
&lt;/h3&gt;

&lt;p&gt;This &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/600"&gt;PR&lt;/a&gt; was a small one but It became very difficult for me as I got stuck with focus stuff on it.&lt;/p&gt;

&lt;p&gt;The goal of this PR was to have a search bar to search between models and have pointer to currently selected model. It was glad to see that everyone wanted this PR to be merged as this was very benificial for selecting models in providers such as OpenRouter which have many models to select from.&lt;/p&gt;

&lt;p&gt;The changes look like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcy9x8fyfmvyiuuyxfunf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcy9x8fyfmvyiuuyxfunf.png" alt="Img" width="250" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hurdle in merging this PR:&lt;/p&gt;

&lt;p&gt;The major issue this PR had was &lt;strong&gt;Input&lt;/strong&gt; bar going out of focus when the menu was rendered again based on the query entered in the search bar. Resizing of the menu changed our mouse cursor to somewhere else, on another &lt;strong&gt;MenuItem&lt;/strong&gt; which caused focus to go away from input. This was the default behavior of how ChakraUI/ ChakraMenu behaves so we coudn't modify it. After trying many options possible and still not able to get that. At the end David helped us to solve this by setting input to focus again on keyDown event.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Review 597
&lt;/h3&gt;

&lt;p&gt;Apart from merging the PR above, i also reviewed another &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/597"&gt;PR&lt;/a&gt; of my classmate Katie which was based on an issue suggested by me while reviewing one of her previous PRs.&lt;/p&gt;

&lt;p&gt;After testing the functionality and looking at the code structure, I approved the PR so that she could merge it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overall Contributions to ChatCraft over the past 3 months
&lt;/h2&gt;

&lt;p&gt;At first when I was first told that I'll be working on ChatCraft, I was scared thinking that how would I understand a codebase of such a big project. &lt;br&gt;
Till date, I merged &lt;strong&gt;11 PRs with addition of over 650 lines of code&lt;/strong&gt; which is pretty good for someone who just started with this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc8vz28f4ywz7cyfl2qcl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc8vz28f4ywz7cyfl2qcl.png" alt="PRS" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ended this course with building many cool features for ChatCraft including share message functionality, made it easier to switch between providers, fixed some bugs, search bar for models and many more.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>typescript</category>
      <category>react</category>
    </item>
    <item>
      <title>Release v1.9.0 - ChatCraft.org</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Wed, 17 Apr 2024 20:36:11 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-v190-chatcraftorg-a0</link>
      <guid>https://dev.to/rachit1313/release-v190-chatcraftorg-a0</guid>
      <description>&lt;h2&gt;
  
  
  Sheriff duties this week
&lt;/h2&gt;

&lt;p&gt;This week being the sheriff, I had several duties including conduct triage meeting, actively respond to any mentions in PRs or ChatCraft's discord server in order to get all the PRs in the milestone merged before the release time.&lt;/p&gt;

&lt;p&gt;In order to achieve the above, I accomplished the below in this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/tarasglek/chatcraft.org/pull/580"&gt;PR 580 Merged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarasglek/chatcraft.org/pull/584"&gt;PR 584 Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarasglek/chatcraft.org/pull/577"&gt;PR 577 Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarasglek/chatcraft.org/pull/573"&gt;PR 573 Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarasglek/chatcraft.org/releases/tag/v1.9.0"&gt;Release v1.9.0&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  PR 580
&lt;/h2&gt;

&lt;p&gt;The PR_580 is fixing an issue related to &lt;strong&gt;import&lt;/strong&gt; command with trailing backslash for github blob URLS. So this is not a chatcraft related issue but this a URL behavior issue. &lt;/p&gt;

&lt;p&gt;The issue was that when users tried to run &lt;strong&gt;/import&lt;/strong&gt; command with a github blob Url with trailing backslash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/import https://github.com/tarasglek/chatcraft.org/blob/main/.eslintignore/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This would return us 400 error whereas if same was passed without / at the end&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/import https://github.com/tarasglek/chatcraft.org/blob/main/.eslintignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It would return us the expected output i.e contents of the file.&lt;/p&gt;

&lt;p&gt;Later while debugging, I found that if github blob urls dont support trailing backslash, If there's a trailing backslash it returns bad request.&lt;/p&gt;

&lt;p&gt;I fixed the issue by adding a replace function with regex to remove / if its at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  PR Reviews
&lt;/h2&gt;

&lt;p&gt;This week I reviewed 3 other Pull requests for ChatCraft. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final Release
&lt;/h2&gt;

&lt;p&gt;The Final and most exciting part for the week was releasing v1.9.0. After merging all the approved PRs and closing the milestone. I went forward and release v1.9.0 with Release notes for the merged PRs between v1.8.0 and now.&lt;/p&gt;

&lt;p&gt;Link to the Release: &lt;a href="https://github.com/tarasglek/chatcraft.org/releases/tag/v1.9.0"&gt;v1.9.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next week, Its a Major release for ChatCraft v2.0.0. Working towards making some meaningful contributions for that.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Release 1.8 Contributions : ChatCraft.org🤖</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Mon, 08 Apr 2024 19:10:45 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-18-contributions-chatcraftorg-4la0</link>
      <guid>https://dev.to/rachit1313/release-18-contributions-chatcraftorg-4la0</guid>
      <description>&lt;h2&gt;
  
  
  Pull Request #559
&lt;/h2&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/559"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Updated regex to ignore backslash
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#559&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/559"&gt;&lt;time&gt;Apr 04, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #427&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Changes Made:&lt;/h3&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Updated regex to ignore backslash in github commands.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How to test:&lt;/h3&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Both the links with backslash at the end or without would recieve diff when a link of github PR is imported using /import command.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/559"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;For this week, I worked on a smaller issue which came out be a small fix but also finding another issue for me solve. Previously our &lt;code&gt;/import&lt;/code&gt; command was sensitive to trailing backslash which would result in not triggering out rewriters for github i.e &lt;/p&gt;

&lt;p&gt;When we used to send chatcraft a link to pull request with trailing backslash, it would return us html for that page which was not our expected behaviour for importing PRs. Our expected behavior was that it should have similar response as on without backslash i.e importing the &lt;strong&gt;patch/diff&lt;/strong&gt; . We had a rewriter setup which helped us to change our URLs from request to .patch URLs to return us the changes made in the PR.&lt;/p&gt;

&lt;p&gt;I checked the regex and found that it was missing the required &lt;code&gt;?/&lt;/code&gt; so I modified it with just 6 lines of code and got my work through. &lt;/p&gt;

&lt;p&gt;In the testing for the above, I received feedback that a trailing backslash at the end  of github blob URLs is returning another 400 server error. For the above I filed another issue to work on for the coming week.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/568"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Import command used on github blob URLs with a trailing backslash return 400 Bad request
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#568&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/568"&gt;&lt;time&gt;Apr 05, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Follow up issue from #559&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/568"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  PR Reviews
&lt;/h2&gt;

&lt;p&gt;For this week, I reviewed 2 PRs&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/558"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Fixed logo of FreeModelProvider auto
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#558&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/kliu57"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s---woZC-z---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/98062538%3Fv%3D4" alt="kliu57 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/kliu57"&gt;kliu57&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/558"&gt;&lt;time&gt;Apr 04, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;This PR fixes a logo bug.
&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/98062538/a187e797-f058-442b-8bdf-101fce4fd4b6"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i6169s-s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/98062538/a187e797-f058-442b-8bdf-101fce4fd4b6" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bug:&lt;/strong&gt; FreeModelProvider's model, "auto", shows white logo&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reason for bug:&lt;/strong&gt; In &lt;code&gt;ModelAvatar.tsx&lt;/code&gt;, I was setting all models with the word "free" in them with the default green bg colour, but this misses the model that is called "auto" which does not have the word free in it. The logo itself is white which means white on a white bg shows us a white logo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;ModelAvatar.tsx&lt;/code&gt;, add the check for the "auto" model and and give it the green bg.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testing:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No longer showing the white logo.
&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/98062538/c20c64b1-faf6-4f14-8450-ac0393178469"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DwRJOSwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/98062538/c20c64b1-faf6-4f14-8450-ac0393178469" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/558"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The above PR was a minor change which looked good to me and I approved it after testing. The PR was closed and the change was done in some other commit in a bigger PR.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/545"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        swap default model to auto for free provider
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#545&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/tarasglek"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ftZUWbb5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/857083%3Fv%3D4" alt="tarasglek avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/tarasglek"&gt;tarasglek&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/545"&gt;&lt;time&gt;Apr 02, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;@humphd or someone else, can you help me fix the blank circle?&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/857083/e134212b-4e03-401c-be05-89b957127853"&gt;&lt;img width="249" alt="image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--mIDxw7qV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/857083/e134212b-4e03-401c-be05-89b957127853"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/545"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The above PR was by chatcraft's repo owner, Taras Glek, He by mistake pushed the automatic change done by vscode in settings.json which was something we didn't want in the repo.&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>regex</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Release 1.7 Contributions : ChatCraft.org🤖</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Tue, 02 Apr 2024 16:21:39 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-17-contributions-chatcraftorg-4enl</link>
      <guid>https://dev.to/rachit1313/release-17-contributions-chatcraftorg-4enl</guid>
      <description>&lt;p&gt;For this week I worked on improving the flow to switching providers for LLMs for chatcraft.org. For the above we already had issue filed which I assigned to myself and started working on:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/510"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Make it easier to switch between providers
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#510&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/humphd"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ol0-8Egz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/427398%3Fv%3D4" alt="humphd avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/humphd"&gt;humphd&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/510"&gt;&lt;time&gt;Mar 17, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Currently, we assume that the user only ever wants to use a single provider. For example, the "Ask" menu shows models for the current provider:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/427398/4951e561-c1bc-41f3-8457-8b18b4999abb"&gt;&lt;img width="1009" alt="Screenshot 2024-03-17 at 5 22 20 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y8YnNa9v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/427398/4951e561-c1bc-41f3-8457-8b18b4999abb"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, @kliu57 has been doing awesome work to add support for multiple providers.  Now that we support 3 providers, and soon arbitrary providers (see #440), it would be interesting if the "Ask" menu allowed you to easily switch to another of your configured providers and use those models.&lt;/p&gt;
&lt;p&gt;I wonder if this would be a good UX:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;+--------------+
| model-1      |
| model-2      |
| ...          |
|--------------|
| ✔️ Provider 1 |
|   Provider 2 |
|   Provider 3 |
+--------------+
Ask
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the wireframe above, the models for the current provider (i.e., "Provider 1") are shown.  In addition, the other providers are also available, and clicking on "Provider 2" or "Provider 3" would cause the list of models to change.&lt;/p&gt;
&lt;p&gt;There might be a better UX for this, but that's one option.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/510"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Pull Request 535
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Previous Flow:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwp7ezuunvkcw1v3udkv.png" alt="1st prev" width="354" height="231"&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1l8yz9o3qdwueq0a8w4.png" alt="2nd prev" width="620" height="230"&gt;&lt;/li&gt;
&lt;li&gt;going back to the ask menu to choose model to work on.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  New Flow:
&lt;/h3&gt;

&lt;p&gt;The user can change the providers with a single click where selecting models and select the new model there itself based on the providers selected:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9kf35ozgcts7pslv9kh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9kf35ozgcts7pslv9kh.png" alt="new flow" width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Changes:
&lt;/h3&gt;

&lt;p&gt;To achieve the above I had to use &lt;strong&gt;settings.providers&lt;/strong&gt; as in chatcraft, we store all the providers list and api keys in the browser's local storage. To use them we have another lib settings.ts created which helps us access the data from local storage. Apart from that, we're using &lt;strong&gt;currentProvider&lt;/strong&gt; object in local storage to specify the selected provider which can be trigger using a function created :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;setSettings(...settings,currentProvider: &amp;lt;provider&amp;gt;);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The above function is helping me retain all my previous settings, additionally changing the provider currently selected.&lt;/p&gt;

&lt;p&gt;For better UI and differentiating between models and providers list, I used &lt;a href="https://chakra-ui.com/docs/components/menu#menugroup"&gt;MenuGroup&lt;/a&gt; component which allowed me explicitly name the list headers to models and providers respectively. Thanks to Amnish for suggesting me this component.&lt;/p&gt;

&lt;p&gt;After I was done with above research, I implemented the change and added MenuDivider second MenuList to support the implementation above.&lt;/p&gt;
&lt;h3&gt;
  
  
  Pull Request
&lt;/h3&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/535"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Add the Providers selection Menu Group to easy switch between providers
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#535&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/535"&gt;&lt;time&gt;Mar 27, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #510&lt;/p&gt;
&lt;p&gt;Tasks Completed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] Enable switching between providers from the ask menu for Desktop Prompt&lt;/li&gt;
&lt;li&gt;[x] Enable switching between providers from the ask menu for Mobile Prompt&lt;/li&gt;
&lt;li&gt;[x] Use MenuGroup from Chakra UI to group models and providers distinctly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Files Changed:
PromptForm.tsx&lt;/p&gt;
&lt;p&gt;Screenshots:
&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/58596563/1f4a411b-1876-4df5-8c98-a9daee82bbbe"&gt;&lt;img width="809" alt="image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--r4m9Fsn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/58596563/1f4a411b-1876-4df5-8c98-a9daee82bbbe"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/535"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;On the above, I received some feedback from my professor David Humphrey regarding the indentation which I fixing by adding a span with some custom css attributes to maintain padding and an extra space for chevron icon which was also suggested by him.&lt;br&gt;
Another major feedback for this PR was to refactor the code for lesser lines of code and more efficiency. Thanks to Katie for the feedback as the code change made the code look a lot cleaner too as in the screenshot below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly9lakbpioquo8b2rhqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly9lakbpioquo8b2rhqf.png" alt="commit" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all for this week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Coding&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>react</category>
      <category>opensource</category>
      <category>ui</category>
    </item>
    <item>
      <title>Release 1.6 Contributions: ChatCraft.org</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Tue, 26 Mar 2024 23:19:48 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-16-contributions-chatcraftorg-2501</link>
      <guid>https://dev.to/rachit1313/release-16-contributions-chatcraftorg-2501</guid>
      <description>&lt;h2&gt;
  
  
  Issue #443
&lt;/h2&gt;

&lt;p&gt;For this week, I worked on making some UI fixes to Menu Components I created before :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkvu90bwh6c0fjsmpf6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkvu90bwh6c0fjsmpf6p.png" alt="before" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was supposed to make the changes to my PR based on the issue &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/443"&gt;#443&lt;/a&gt;. &lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/443"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Fix icons in new Menu
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#443&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/humphd"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ol0-8Egz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/427398%3Fv%3D4" alt="humphd avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/humphd"&gt;humphd&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/443"&gt;&lt;time&gt;Feb 13, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;The way the icons are being done in the new Menu component isn't right.  Here's how it looks in ChakraUI:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/427398/db85d8e8-21be-4f24-ae75-09d7768292c6"&gt;&lt;img width="238" alt="Screenshot 2024-02-12 at 9 00 52 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TJU-OQhb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/427398/db85d8e8-21be-4f24-ae75-09d7768292c6"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And in the new Menu:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/427398/652f0c13-52b2-46ea-9113-d561d6adb01c"&gt;&lt;img width="276" alt="Screenshot 2024-02-12 at 9 01 04 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--WUQpkR3I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/427398/652f0c13-52b2-46ea-9113-d561d6adb01c"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Icons should be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On the left&lt;/li&gt;
&lt;li&gt;Same colour as the font for the menu item&lt;/li&gt;
&lt;li&gt;Smaller&lt;/li&gt;
&lt;li&gt;Not a button you click (the whole menu item should be clickable)&lt;/li&gt;
&lt;/ul&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/443"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  The Fix - PR #516
&lt;/h2&gt;

&lt;p&gt;The first thing I started in this PR to work on resolving the icons being separately clickable as buttons in MenuItem which didn't look appropriate. I changed all the IconButtons passed in the icon prop with icons from the react library instead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6gf93j227thbs8nfm86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6gf93j227thbs8nfm86.png" alt="button fix" width="800" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next Step for fixing the alignment and sizing, I modified the custom MenuItem component to be wrapped in divs with CSS properties hardcoded for proper alignment and switched the icons to be on the left of label with a padding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqupcqov0lx7qwadfrt4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqupcqov0lx7qwadfrt4b.png" alt="css" width="461" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These things properly helped me resolve the issue and reflected the appropriate changes required which led the Menu to look like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0wroomg9g46qhq2zxes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0wroomg9g46qhq2zxes.png" alt="final" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Final PR:&lt;/strong&gt;&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/516"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Fixed icons in the Menu
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#516&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/516"&gt;&lt;time&gt;Mar 20, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #443&lt;/p&gt;
&lt;p&gt;Based on the issue, Icons should be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] On the left&lt;/li&gt;
&lt;li&gt;[x] Same colour as the font for the menu item&lt;/li&gt;
&lt;li&gt;[x] Smaller/ same size as the text&lt;/li&gt;
&lt;li&gt;[x] Not a button you click (the whole menu item should be clickable)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Steps Taken to resolve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updated MessageBase component with icon prop to have icons and not IconButtons&lt;/li&gt;
&lt;li&gt;Updated MenuItem component to be in a div aligned to centre and flex for proper alignment and sizing&lt;/li&gt;
&lt;li&gt;Updated color of delete button icon to be similar to the ChakraUI red.400 text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Screenshots:
&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/58596563/ce48a01c-0126-4451-91b3-21a05d6361b3"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iUl6QY6Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/58596563/ce48a01c-0126-4451-91b3-21a05d6361b3" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/516"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Feedback from Peers
&lt;/h2&gt;

&lt;p&gt;On the above PR, I received feedback from Amnish, another developer from ChatCraft and my classmate, to make some changes on it in order to make code resuable and for optimization i.e passing labels( text in MenuItems) as children. I appreciate his feedback and made the changes required, committed the changes to the branch. For the above I had to modify the format of all the MenuItem components used and luckily, for now they were all in a single file.&lt;/p&gt;

&lt;p&gt;That's all for the week!&lt;/p&gt;

&lt;p&gt;Happy Coding&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Release 1.5 Contributions : ChatCraft.org</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Mon, 18 Mar 2024 04:47:42 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-15-contributions-chatcraftorg-1f7</link>
      <guid>https://dev.to/rachit1313/release-15-contributions-chatcraftorg-1f7</guid>
      <description>&lt;h2&gt;
  
  
  Follow Up Issue - Issue #489
&lt;/h2&gt;

&lt;p&gt;Based on a feedback on my previous &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;PR #481&lt;/a&gt;, I received a feedback from my peers regarding the functionality to share a single message in addition to the previous feature to share a chat. The issue was shared chat when shared via Share message button , the shared message on shared chat had the time of when the chat was shared. For example, Lets suppose I share a message from 2 days ago, I would see the time on shared chat of today(when I shared the chat).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ljtpge8yqit77vnp0s1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ljtpge8yqit77vnp0s1.png" alt="diff" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Follow Up Issue: Shared Chat (via message) must have the same time as in the original chat
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#489&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;&lt;time&gt;Mar 08, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Refer #481 for more details.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Pull Request - PR #490
&lt;/h2&gt;

&lt;p&gt;For the above issue, I did some research on ChatCraftChat component that how the messages and mainly the time is being rendered in it. Based on my logic for this functionality, I was using message id to select the message I wanted to share and clone the only message into the messages array which is being rendered in a chat. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqz6k5uex020bpj6b83y7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqz6k5uex020bpj6b83y7.png" alt="Fix" width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found that the clone function is creating a new object of the message which is storing the current time when object was created. I fixed the logic by just removing the clone and passing the original message object to the array for the chat.&lt;/p&gt;

&lt;p&gt;Created the Pull Request Below&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/490"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Shared Chat message should have same time as original chatcraft message
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#490&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/490"&gt;&lt;time&gt;Mar 10, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #489&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/490"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Debugging a bug - Issue #480
&lt;/h2&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Chatcraft crashes when trying to access shared chats
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#480&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;&lt;time&gt;Feb 22, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/58596563/9a37003a-aec8-4e5e-a735-8af40f400af0"&gt;&lt;img width="1427" alt="image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--H2mtPUX_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/58596563/9a37003a-aec8-4e5e-a735-8af40f400af0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Console error:&lt;/p&gt;

&lt;div class="highlight highlight-source-json js-code-highlight"&gt;
&lt;pre&gt;{&lt;span class="pl-ii"&gt;status: 404, statusText: 'Not Found', internal: true, data: 'Error: No route matches URL "/api/share/Rachit1313/juWInjaLnUTnbj9ApOdTe"', error: Error: No route matches URL "/api/share/Rachit1313/juWInjaLnUTnbj9ApOdTe"&lt;/span&gt;
    &lt;span class="pl-ii"&gt;at Do (https://chatcr…&lt;/span&gt;}
    &lt;span class="pl-ii"&gt;```&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Apart from the contributions above, I started working with one of my peers to find the cause of the bug and fix it. I brought this up in triage meeting for ChatCraft with all the contributors including the professor and shared my screen. I learnt some of browser debugging approaches including &lt;strong&gt;debugger;&lt;/strong&gt; . This bug was something which we could not figure out yet but the outcome we came to from that meeting was this is something wrong with routing probably because when we try to open the same URL in the browser we are getting redirected properly but when its trying to getting loaded in react-dom component i.e chatcraft's web app, Its not redirecting and hence failing to find the route returning a 404 NOT FOUND error.&lt;/p&gt;

&lt;p&gt;That's all for this week.&lt;/p&gt;

&lt;p&gt;Happy Coding&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Release 1.4 Contributions : ChatCraft.org 🤖</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Sun, 10 Mar 2024 22:11:45 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-14-contributions-chatcraftorg-4jib</link>
      <guid>https://dev.to/rachit1313/release-14-contributions-chatcraftorg-4jib</guid>
      <description>&lt;h2&gt;
  
  
  Release 1.4 Contributions
&lt;/h2&gt;

&lt;p&gt;In the latest release 1.4 of ChatCraft, I had the opportunity to contribute significantly towards enhancing the user experience and functionality of our platform. One of the key features I worked on was the ability to share individual messages from a chat, a much-requested feature by our users. This feature allows for more granular sharing, providing users with the flexibility to share specific pieces of information without exposing entire chat histories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull Request #481: Sharing Individual Messages
&lt;/h2&gt;

&lt;p&gt;The journey to implementing this feature began with Pull Request &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;#481&lt;/a&gt;, where I introduced the functionality to share a single message from a chat. The implementation involved creating a new function &lt;code&gt;shareSingleMessage&lt;/code&gt; within the &lt;code&gt;ChatCraftChat&lt;/code&gt; class. This function clones the chat but only includes the specified message to be shared, leveraging our existing sharing logic to generate a shareable URL.&lt;/p&gt;

&lt;p&gt;To make this feature accessible from the UI, I modified the &lt;code&gt;MessageBase.tsx&lt;/code&gt; component, adding a new menu item "Share Message". This addition required fetching the current user and chat context, for which I utilized the &lt;code&gt;useUser&lt;/code&gt; hook and &lt;code&gt;useLiveQuery&lt;/code&gt; to dynamically fetch the necessary data.&lt;/p&gt;

&lt;p&gt;Upon merging this pull request, I received valuable feedback from my peers, leading to an enhancement where the shared URL link could be copied to the clipboard. This improvement was facilitated by the React &lt;code&gt;copytoclipboard&lt;/code&gt; hook, streamlining the sharing process for our users.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Added functionality to share a message vs chat
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#481&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;&lt;time&gt;Feb 22, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #388&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Issue #489: Date Mismatch in Shared Chats
&lt;/h2&gt;

&lt;p&gt;Following the release, we identified a discrepancy in the dates displayed for shared chats. The shared chat showed the date when the message was shared, rather than when the original message was sent. This led to confusion among users, as the context of the shared message could be misunderstood. To address this, I filed a follow-up issue &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;#489&lt;/a&gt; to correct the date display, ensuring that the original message's sent date is accurately reflected in shared chats.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Follow Up Issue: Shared Chat (via message) must have the same time as in the original chat
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#489&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;&lt;time&gt;Mar 08, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Refer #481 for more details.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/489"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Peer Review: Pull Request #483
&lt;/h2&gt;

&lt;p&gt;In addition to my contributions, I also had the opportunity to review the work of my peers. One notable pull request I reviewed was &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/483"&gt;#483&lt;/a&gt;, which introduced a loading spinner for image compression. This feature enhances the user experience by providing visual feedback during the image compression process, especially useful when uploading large images. I tested this feature using the branch deploy URL provided by the Cloudflare action, ensuring its functionality and integration within our platform.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/483"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Add loading indicator for the image compression
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#483&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/mingming-ma"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--qfvZ3bKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/133393905%3Fv%3D4" alt="mingming-ma avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/mingming-ma"&gt;mingming-ma&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/483"&gt;&lt;time&gt;Feb 23, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Explanation&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;I set the &lt;code&gt;imageUrl&lt;/code&gt; to empty string firstly inside the process image functions and then update it with real url result when compression is done. If it is empty, the &lt;code&gt;spinner&lt;/code&gt; in a square box will be rendered as loading status.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Result&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Desktop&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/133393905/0ef78a46-923e-485e-b298-4fedf179c144"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--arkcX7nK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/133393905/0ef78a46-923e-485e-b298-4fedf179c144" alt="image"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/133393905/930182a5-6d2d-4455-b1b4-5622e0d6e407"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_ZtsovFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/133393905/930182a5-6d2d-4455-b1b4-5622e0d6e407" alt="image"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Fixes: #467&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/483"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;The contributions and collaborative efforts in Release 1.4 have significantly improved ChatCraft, making it more user-friendly and functional. I am proud to be part of a team that values feedback and continuously strives to enhance our platform. Stay tuned for more updates, and as always, happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Continuing Contributions to ChatCraft.org</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Mon, 26 Feb 2024 13:28:21 +0000</pubDate>
      <link>https://dev.to/rachit1313/continuing-contributions-to-chatcraftorg-9nd</link>
      <guid>https://dev.to/rachit1313/continuing-contributions-to-chatcraftorg-9nd</guid>
      <description>&lt;h2&gt;
  
  
  Found a Bug - Filed an issue #480
&lt;/h2&gt;

&lt;p&gt;This week while working on another feature, to share a message vs the whole chat which we have currently. I found a bug that chatcraft crashes with the error below when we try to access any of shared chats through the sidebar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vbg63hflrubaseqmj1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vbg63hflrubaseqmj1p.png" alt="crashed" width="696" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon checking the console logs I found that the error is similar to one of the bug previously encountered and filed the issue for the same.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Chatcraft crashes when trying to access shared chats
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#480&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;&lt;time&gt;Feb 22, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tarasglek/chatcraft.org/assets/58596563/9a37003a-aec8-4e5e-a735-8af40f400af0"&gt;&lt;img width="1427" alt="image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--H2mtPUX_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/tarasglek/chatcraft.org/assets/58596563/9a37003a-aec8-4e5e-a735-8af40f400af0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Console error:&lt;/p&gt;
&lt;div class="highlight highlight-source-json js-code-highlight"&gt;
&lt;pre&gt;{&lt;span class="pl-ii"&gt;status: 404, statusText: 'Not Found', internal: true, data: 'Error: No route matches URL "/api/share/Rachit1313/juWInjaLnUTnbj9ApOdTe"', error: Error: No route matches URL "/api/share/Rachit1313/juWInjaLnUTnbj9ApOdTe"&lt;/span&gt;
    &lt;span class="pl-ii"&gt;at Do (https://chatcr…&lt;/span&gt;}
    &lt;span class="pl-ii"&gt;```&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/issues/480"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Pull Request #481
&lt;/h2&gt;

&lt;p&gt;As advised above, I was working towards implementing another feature of sharing a message for which I had to understand the previous sharing logic. Once I understood, how the functionality of sharing the whole chat is working, I found that there was a function in &lt;strong&gt;ChatCraftChat&lt;/strong&gt;  which was calling the sharing lib and generating URL and stuff and it was sharing the chat as &lt;strong&gt;this&lt;/strong&gt; object. Based on the structure of ChatCraftChat, It had an list of another object &lt;strong&gt;ChatCraftMessage&lt;/strong&gt; from which I got the idea to use messageId to specify the chat i.e not including any other messages except the one I need in the chat.&lt;/p&gt;

&lt;p&gt;I created this function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt; &lt;span class="c1"&gt;//function to share single message&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;shareSingleMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;messageId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Find the message to be shared&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;messageToShare&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;messageId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;messageToShare&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Clone the chat but only include the specified message&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ChatCraftChat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;messageToShare&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;clone&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;
      &lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// You might want to adjust the summary for the shared content&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Use the existing sharing logic to share the cloned chat&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shareUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createDataShareUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createShare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shared&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SharedChatCraftChat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;shareUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;clonedChatWithSingleMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Cache this locally in your db as well&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;shared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toDB&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;shared&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then comes the next part - UI for sharing a single message. For that I had to edit &lt;strong&gt;MessageBase.tsx&lt;/strong&gt; component which has the Menu for each message and I added another &lt;strong&gt;MenuItem&lt;/strong&gt; named &lt;strong&gt;Share Message&lt;/strong&gt; which on click called another function to handle sharing logic:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;                &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;MenuDivider&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;MenuItem&lt;/span&gt;
                  &lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Share Message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
                  &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handleShareMessage&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;
                  &lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;IconButton&lt;/span&gt;
                      &lt;span class="nx"&gt;variant&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ghost&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
                      &lt;span class="c1"&gt;// icon={&amp;lt;YourShareIcon /&amp;gt;} // Replace YourShareIcon with the actual icon you want to use for sharing&lt;/span&gt;
                      &lt;span class="nx"&gt;aria&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Share message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
                      &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Share message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
                    &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Based on the function, I created I had to call the function in the object of the current chat, id of the message and the user who's logged in. Now my component didn't have an object of the chat or user so I had to do some research and see how those things are working in other files and found that we have an hook created named &lt;strong&gt;useUser&lt;/strong&gt;. I imported the hook into my MessageBase component and used it to get the user.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useUser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The second hurdle was to get the chat object for which I used &lt;strong&gt;useLiveQuery()&lt;/strong&gt; and the find method of &lt;strong&gt;ChatCraftChat&lt;/strong&gt; object to fetch the chat object as we already have the ChatId in the MessageBase component's props.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useLiveQuery&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;ChatCraftChat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chatId&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;chatId&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Finally, I created a pull request for the above and awaiting feedback from the team regarding the functionality and ideas to display the URL of the shared chat.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Added functionality to share a message vs chat
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#481&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Rachit1313"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xZG9ehX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://avatars.githubusercontent.com/u/58596563%3Fv%3D4" alt="Rachit1313 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Rachit1313"&gt;Rachit1313&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;&lt;time&gt;Feb 22, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Closes #388&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tarasglek/chatcraft.org/pull/481"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Till the time. Stay Tuned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Coding&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Release 1.3 Contributions: ChatCraft.org</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Sat, 17 Feb 2024 17:56:37 +0000</pubDate>
      <link>https://dev.to/rachit1313/release-13-contributions-chatcraftorg-44ji</link>
      <guid>https://dev.to/rachit1313/release-13-contributions-chatcraftorg-44ji</guid>
      <description>&lt;h2&gt;
  
  
  Continuing sheriff duties
&lt;/h2&gt;

&lt;p&gt;Till Wednesday, I had to keep up my role of being a sheriff and actively monitoring PRs and issues, keeping a track of showstoppers, actively checking discord or GitHub mentions in case someone needs help. Overall, it was a great experience for being a sheriff. Got some feedback to work on for more actively checking for mentions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue 388 - Allow sharing a Message vs. Chat
&lt;/h2&gt;

&lt;p&gt;Started work on &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/388"&gt;#388&lt;/a&gt;. Had to read the source code to find out the flow of the functions and how stuff is working for share chat function. Started looking from the UI file &lt;a href="https://github.com/tarasglek/chatcraft.org/blob/ca5ef709661bfc7415638d1708a1e539d7a858aa/src/Chat/ChatHeader.tsx#L185"&gt;ChatHeader.tsx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohrzgcgz821d8obfd1bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohrzgcgz821d8obfd1bx.png" alt="185" width="800" height="27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Found that at the end its using &lt;strong&gt;&lt;a href="https://chakra-ui.com/docs/hooks/use-disclosure"&gt;useDisclosure()&lt;/a&gt;&lt;/strong&gt; function to trigger ShareModal component accordingly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x05wygn83s9ge2cs7jl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x05wygn83s9ge2cs7jl.png" alt="Share modal" width="800" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Further, this &lt;strong&gt;ShareModal&lt;/strong&gt; component was calling share function which was a method of ChatCraftChat model&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8zdskyyb00co07vld4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8zdskyyb00co07vld4h.png" alt="share function called" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Share function from ChatCraftChat model below was calling another &lt;strong&gt;createShare()&lt;/strong&gt; function which was another lib created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09jxwvkdhtxm3rakmn3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09jxwvkdhtxm3rakmn3s.png" alt="share func" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Found the logic for creating shared chat - &lt;a href="https://github.com/tarasglek/chatcraft.org/blob/main/src/lib/share.ts"&gt;share.ts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till the time I got here, and understood the function, I got to know that there is another showstopper which would also be required to fix before I could work on sharing chat and actually test it. As I already had a look through the share logic I assigned the bug fix to myself and started working on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue 446 - ChatCraft 'crashes' when accessing Shared Chats or Searchbar
&lt;/h2&gt;

&lt;p&gt;Had to stop working on the previous issue and start debugging for the bug fix &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/446"&gt;#446&lt;/a&gt; .&lt;br&gt;
The steps I followed for debugging were:&lt;/p&gt;
&lt;h3&gt;
  
  
  Checking the console logs
&lt;/h3&gt;

&lt;p&gt;After reviewing console logs at the time of bug I found the below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Not Found"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"internal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Error: No route matches URL &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;/api/share/Rachit1313/&amp;lt;chatId&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;whereas my professor confirmed that the chatId is correct and it exists in the R2 bucket.&lt;br&gt;
Also, there was another error found while trying to access the shared chat through the link generated&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"_e"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DataError"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; DataError: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"inner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"stack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Error: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at https://chatcraft.org/assets/index-sGYt3Ste.js:425:30652&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at Kq (https://chatcraft.org/assets/index-sGYt3Ste.js:424:3694)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at new Be (https://chatcraft.org/assets/index-sGYt3Ste.js:424:3190)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at Object.get (https://chatcraft.org/assets/index-sGYt3Ste.js:425:30599)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at c.&amp;lt;computed&amp;gt; [as get] (https://chatcraft.org/assets/index-sGYt3Ste.js:425:51078)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at https://chatcraft.org/assets/index-sGYt3Ste.js:425:6066&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at s (https://chatcraft.org/assets/index-sGYt3Ste.js:425:5768)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at https://chatcraft.org/assets/index-sGYt3Ste.js:425:4706&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at m0 (https://chatcraft.org/assets/index-sGYt3Ste.js:425:3473)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    at qc (https://chatcraft.org/assets/index-sGYt3Ste.js:425:2313)"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Checking the PRs preview URL
&lt;/h3&gt;

&lt;p&gt;Going further, I started checking the all the recent PRs preview to test which PR broke the sharing chat functionality. Found out to be &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/431"&gt;#431&lt;/a&gt;. I wasn't able to produce this bug locally as I had no idea how to be loggedIn to ChatCraft while accessing locally. One of my classmate helped me out and told me that we can access ChatCraft locally as logged in user by using the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dev-functions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before I could go ahead, My professor, David Humphrey found the issue and made a PR &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/469"&gt;#469&lt;/a&gt; and the bug was fixed. The issue he found was :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The way the data was being passed down from the new loader is different (the old way meant it received a chat id, the new way gets an object)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  PR461 - show delete submenu only when there is more than 1 delete option
&lt;/h2&gt;

&lt;p&gt;Another issue I worked on this week was &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/444"&gt;#444&lt;/a&gt;. This is was a small one and an easy UI related fix. I recently implemented Delete SubMenus and we had 3 different types of delete buttons : Delete before, Delete After, Delete message. The issue wanted to me add a condition that don't show a submenu if there's just one delete possible i.e Delete message. I added the condition and made a PR &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/461"&gt;#461&lt;/a&gt;. just had to take some feedback for a better code approach and made the changes, got this merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue 453 - Chat Area and Prompt Menu are not aligned perfectly
&lt;/h2&gt;

&lt;p&gt;Based on the issue, We had a misalignment of around 5px in &lt;strong&gt;Chat messages&lt;/strong&gt; and the &lt;strong&gt;PromptForm&lt;/strong&gt;. &lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0i6qnlcn4l68ootbz5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0i6qnlcn4l68ootbz5f.png" alt="align" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found that I could not reproduce this issue in my mac but could see this in a monitor with a windows. Tried fixing it with PR &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/462"&gt;#462 &lt;/a&gt;. Later Amnish found that this issue is due to scroll bar and we won't be able to fix it as its based on platform and scroll bar size. We just closed the issue as it coudn't be fixed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue 377 - Integrate scrape2md into CloudFlare proxy function
&lt;/h2&gt;

&lt;p&gt;ChatCraft's owner created another lib &lt;strong&gt;scrape2md&lt;/strong&gt; which helped us convert URLs to markdown for chatcraft or any other llms to be able to parse the data. As a first step to this integration, I had to publish the &lt;strong&gt;scrape2md&lt;/strong&gt; lib to npm to be able to import and use it. I created a PR &lt;a href="https://github.com/tarasglek/scrape2md-old/pull/1"&gt;scrape2md-old #1&lt;/a&gt; which setup its package.json accordingly to be published to npm, a workflow which would build, test and publish the package to npm using &lt;strong&gt;NPM_TOKEN&lt;/strong&gt; which taras(ChatCraft's owner) had to setup in the repo's secret. In addition to that I added unbuild as a devDependencies to the project to build that in js dist folder to be able to published to npm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Coding🚀🚀&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ChatCraft Release 1.2 Contribution Recap</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Sat, 10 Feb 2024 13:08:50 +0000</pubDate>
      <link>https://dev.to/rachit1313/chatcraft-release-12-contribution-recap-p2j</link>
      <guid>https://dev.to/rachit1313/chatcraft-release-12-contribution-recap-p2j</guid>
      <description>&lt;h2&gt;
  
  
  Pull Request #406: Refining the Delete Section
&lt;/h2&gt;

&lt;p&gt;In PR &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/406"&gt;#406&lt;/a&gt;, I embarked on refining the delete section's functionality by integrating the SubMenu and MenuItem components I had previously developed. Additionally, I was tasked with enhancing user experience by incorporating icons into specific MenuItems. This required a structural modification of the component to accommodate the icon tag of type ReactNode.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiw25u5708vnx96drnsc1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiw25u5708vnx96drnsc1.png" alt="changed files" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon submitting the PR, I diligently addressed feedback received during the review process, ensuring all requested changes were implemented. However, during the final stages, conflicts arose between the main branch and my delete-menu branch, necessitating a rebase. Given the complexity of the process, I sought the guidance of another project contributor, Katie, whose expertise proved invaluable in navigating through the challenges. &lt;/p&gt;

&lt;p&gt;Key Changes Made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated the SubMenu component to accept className for Chakra Red, facilitating color customization, particularly for the delete button.&lt;/li&gt;
&lt;li&gt;Modified MessageBase to present delete options in a separate SubMenu, enhancing organization and accessibility.&lt;/li&gt;
&lt;li&gt;Enhanced the MenuItem component to accommodate the icon prop with type ReactNode, enabling the seamless integration of icons.&lt;/li&gt;
&lt;li&gt;Introduced icons for copy, edit, and delete buttons, augmenting user interaction and visual clarity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PR Review and Issue Management
&lt;/h2&gt;

&lt;p&gt;In addition to my contributions, I undertook the responsibility of reviewing PRs, ensuring code quality and adherence to project standards. PR &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/404"&gt;#404&lt;/a&gt; warranted meticulous scrutiny, involving comprehensive code review and testing using the cloudflare preview URL. Following a thorough evaluation, the PR was approved for merging, reflecting our unwavering commitment to excellence.&lt;/p&gt;

&lt;p&gt;Furthermore, I encountered an unforeseen issue, identified as &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/398"&gt;#398&lt;/a&gt;, wherein a horizontal scroll bar intermittently appeared upon opening the menu. Recognizing the significance of swift resolution, I promptly initiated an issue and delegated the task to Amnish, a contributor who is proficient with CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Triage Meeting and Release Management
&lt;/h2&gt;

&lt;p&gt;Assuming the role of the "sheriff" for the week, I spearheaded the triage meeting, a pivotal checkpoint to assess project progress and address any impending challenges. Key priorities included identifying showstopper issues, ensuring PR readiness, and facilitating timely resolution of bottlenecks. As the release deadline approached, meticulous coordination ensured the seamless integration of all pending PRs, marking a milestone in our journey.&lt;/p&gt;

&lt;p&gt;Concluding our efforts, I asked for guidance from my professor, David Humphprey and We setup a teams meeting for this. Leveraging GitHub's features, we closed the milestone and generated comprehensive release notes, encapsulating the essence of our collective contributions.&lt;/p&gt;

&lt;p&gt;In retrospection, &lt;a href="https://github.com/tarasglek/chatcraft.org/releases/tag/v1.2.0"&gt;Release 1.2&lt;/a&gt; stands as a testament to our collaborative spirit and unwavering commitment to excellence. As we set our sights on future endeavors, let us forge ahead with renewed vigor, embracing the challenges that lie ahead and celebrating the victories that pave our path towards innovation and progress.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Reflecting on My Contribution to ChatCraft: Release 1.1</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Sun, 04 Feb 2024 13:12:33 +0000</pubDate>
      <link>https://dev.to/rachit1313/reflecting-on-my-contribution-to-chatcraft-release-11-53pm</link>
      <guid>https://dev.to/rachit1313/reflecting-on-my-contribution-to-chatcraft-release-11-53pm</guid>
      <description>&lt;p&gt;This week has been quite a journey filled with learning, teamwork, and overcoming challenges as I worked on enhancing ChatCraft for the upcoming Release 1.1. Here's a detailed look at what I've experienced and discovered along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  PR Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pull Request: &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/374"&gt;#374&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Description: Created a React-menu component and migrated the MessageBase menu to utilize this new component.&lt;/li&gt;
&lt;li&gt;Lines of Code Changed: 

&lt;ul&gt;
&lt;li&gt;Modified: 470 lines&lt;/li&gt;
&lt;li&gt;Added: 520 new lines&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Refactoring: Some files underwent refactoring to align with the new changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with React-menu Components
&lt;/h2&gt;

&lt;p&gt;My task was to create a new &lt;a href="https://szhsin.github.io/react-menu"&gt;React-menu&lt;/a&gt; component wrapped in ChakraUI's theme and update the existing MessageBase menu to use this new component. While it sounded straightforward at first, I soon realized there was much to learn and figure out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Together with Amnish
&lt;/h2&gt;

&lt;p&gt;One of the best parts of this experience was collaborating with Amnish, a skilled developer and a classmate of mine. I being pretty weak at CSS part wasn't able to figure out ChakraUI's themeing. Amnish was able to help me fix the CSS part. It was a great opportunity to grow and learn from each other. Collaborating on the same pull request came with its own set of challenges. We had to make sure our changes didn't conflict, so we made it a habit to regularly update our code from the 'react-menu' branch. This helped us avoid headaches and kept our work in sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull Request Feedbacks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The PR underwent extensive review and feedback iterations.&lt;/li&gt;
&lt;li&gt;Initial feedback addressed hover highlighting, submenu handling, borders, and theming.&lt;/li&gt;
&lt;li&gt;Subsequent adjustments involved dividing the menu into separate components for enhanced declarative usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;Reflecting on this experience, I've learned a few important lessons and more knowledge about React, CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Teamwork Matters:&lt;/strong&gt; Working closely with others can be incredibly rewarding and can help you grow faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Git in Check:&lt;/strong&gt; Regularly updating your code and managing branches properly can save a lot of time and headaches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embrace Challenges:&lt;/strong&gt; Even when things get tough, facing challenges can lead to valuable learning opportunities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Release 1.1
&lt;/h2&gt;

&lt;p&gt;1.1 for ChatCraft was released this friday and I personally had 2 pull requests merged in this one.&lt;br&gt;
For full change information : &lt;a href="https://github.com/tarasglek/chatcraft.org/releases/tag/v1.1.0"&gt;Click here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates as we continue to shape ChatCraft together!&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

&lt;p&gt;Feel free to share your own thoughts and experiences!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Reflecting on a Week with ChatCraft: My Open Source Journey</title>
      <dc:creator>Rachit Chawla</dc:creator>
      <pubDate>Mon, 29 Jan 2024 01:20:49 +0000</pubDate>
      <link>https://dev.to/rachit1313/reflecting-on-a-week-with-chatcraft-my-open-source-journey-1n1h</link>
      <guid>https://dev.to/rachit1313/reflecting-on-a-week-with-chatcraft-my-open-source-journey-1n1h</guid>
      <description>&lt;h4&gt;
  
  
  &lt;strong&gt;Engagement with ChatCraft&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Last week marked another chapter in my journey with ChatCraft, an open-source project I've been actively involved in. One of the key tasks I tackled was the migration of menus within the framework—from ChakraUI to React-menu, encapsulated within the ChakraUI Box component. It was a challenging but rewarding endeavor that allowed me to delve deeper into the project's architecture and functionality.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Balancing Commitments and Contributions&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Despite facing constraints due to personal commitments, including travel back to my home country, I remained steadfast in my commitment to ChatCraft. Although my contribution may have been somewhat limited during those days, I continued to immerse myself in the project, finding new ways to integrate it into my academic and professional pursuits. ChatCraft has become not just a project I work on but a tool I rely on for various projects and coursework, a testament to its versatility and utility.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Insights from Collaborative Sessions&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Participating in the weekly triage meeting provided invaluable insights into the collaborative nature of open-source development. One notable aspect was my review of Pull Request #372, where I meticulously assessed the code for formatting, syntax, and functionality. Leveraging Cloudflare's deploy preview URL, I conducted thorough UI testing to ensure that the proposed changes integrated seamlessly with ChatCraft's interface. This experience not only honed my technical skills but also deepened my understanding of the collaborative review process.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Looking Forward: Embracing Leadership Responsibilities&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;As I look ahead to the coming week, I find myself preparing to take on a new role within the ChatCraft community. Assigned as the leader of the triage meeting, I am tasked with facilitating discussions, ensuring tasks are assigned and reviewed promptly, and fostering a collaborative environment conducive to progress. It's an exciting opportunity to contribute in a different capacity and to further engage with the vibrant community that drives ChatCraft forward.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Gratitude and Reflection&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Reflecting on my journey with ChatCraft fills me with gratitude for the opportunity to be part of such a dynamic and supportive community. Each contribution, no matter how small, contributes to the collective effort of innovation and improvement. As I continue to navigate the ever-evolving landscape of open source, I am inspired by the passion, dedication, and camaraderie that define our shared pursuit of excellence.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For updates and discussions on ChatCraft, visit our GitHub repository &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/359"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pull Request #372 &lt;a href="https://github.com/tarasglek/chatcraft.org/pull/372"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Issue #359 &lt;a href="https://github.com/tarasglek/chatcraft.org/issues/359"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
