<?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: KC</title>
    <description>The latest articles on DEV Community by KC (@orangelckc).</description>
    <link>https://dev.to/orangelckc</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%2F2585592%2F2c2b2277-bfb0-49e5-9071-817220bd83cf.jpeg</url>
      <title>DEV Community: KC</title>
      <link>https://dev.to/orangelckc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/orangelckc"/>
    <language>en</language>
    <item>
      <title>Unlocking Copilot’s Full Potential: How I Built a Cross-Platform Chat History Exporter in Just 8 Hours</title>
      <dc:creator>KC</dc:creator>
      <pubDate>Sun, 19 Jan 2025 01:45:58 +0000</pubDate>
      <link>https://dev.to/orangelckc/unlocking-copilots-full-potential-how-i-built-a-cross-platform-chat-history-exporter-in-just-8-3glg</link>
      <guid>https://dev.to/orangelckc/unlocking-copilots-full-potential-how-i-built-a-cross-platform-chat-history-exporter-in-just-8-3glg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my submission for the &lt;a href="https://dev.to/challenges/github"&gt;GitHub Copilot Challenge &lt;/a&gt;: Transitions and Transformations&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;copilot-chat-helper&lt;/strong&gt;: A cross-platform desktop application designed to export and preserve GitHub Copilot Chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dSbv-1KGu2U&amp;amp;t=142s" rel="noopener noreferrer"&gt;Live demo: GitHub Copilot in Visual Studio Code&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In a recent YouTube video, Cathy demonstrated how GitHub Copilot can respond in the user's native language. While this is a fantastic feature, it raises an important question: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;how can we easily share these chat conversations—often technical and detailed—with team members who primarily communicate in English?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvjuaq5ryu81pecvy80b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvjuaq5ryu81pecvy80b.png" alt="Translted History" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, when users interact with Copilot during project development, the chat history is saved within the project itself. However, once the project is deleted, these valuable conversations become inaccessible. Fortunately, since chat histories are stored locally, they can be retrieved and saved before deletion. &lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;copilot-chat-helper&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/yLEK79x0TKI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;For users interested in trying out the functionality, you can visit the GitHub repository's &lt;a href="https://github.com/orangelckc/copilot-chat-helper/releases" rel="noopener noreferrer"&gt;Releases&lt;/a&gt; page to download and test the app. &lt;/p&gt;

&lt;p&gt;Currently, it supports macOS and Windows platforms. &lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/orangelckc" rel="noopener noreferrer"&gt;
        orangelckc
      &lt;/a&gt; / &lt;a href="https://github.com/orangelckc/copilot-chat-helper" rel="noopener noreferrer"&gt;
        copilot-chat-helper
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Desktop application for exporting GitHub Copilot Chat history.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Copilot Chat Helper&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A desktop application for exporting GitHub Copilot Chat history.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/orangelckc/copilot-chat-helper./README.zh.md" rel="noopener noreferrer"&gt;中文文档&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🔍 Automatically scan and read Copilot Chat records from VS Code workspaces&lt;/li&gt;
&lt;li&gt;💾 Export to Markdown format&lt;/li&gt;
&lt;li&gt;🔄 Smart caching mechanism for improved loading speed&lt;/li&gt;
&lt;li&gt;🌍 Support for English and Chinese interfaces&lt;/li&gt;
&lt;li&gt;🎨 Beautiful UI design&lt;/li&gt;
&lt;li&gt;📱 Responsive design for different screen sizes&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tech Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Frontend: Vue 3 + TypeScript&lt;/li&gt;
&lt;li&gt;Desktop Framework: Tauri&lt;/li&gt;
&lt;li&gt;UI Components: Custom components&lt;/li&gt;
&lt;li&gt;Internationalization: Vue I18n&lt;/li&gt;
&lt;li&gt;Markdown Rendering: vue-markdown-render&lt;/li&gt;
&lt;li&gt;Code Highlighting: highlight.js&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prerequisites&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Node.js &amp;gt;= 16&lt;/li&gt;
&lt;li&gt;Rust &amp;gt;= 1.70&lt;/li&gt;
&lt;li&gt;pnpm &amp;gt;= 8.0&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Install dependencies&lt;/span&gt;
pnpm install

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Run in development mode&lt;/span&gt;
pnpm tauri dev

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Build application&lt;/span&gt;
pnpm tauri build&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Project Structure&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;src/
├── components/         # Components directory
│   ├── workspace/     # Workspace-related components
│   └── chat/         # Chat-related components
├── i18n/             # Internationalization config
├── types/            # TypeScript type definitions
├── App.vue          # Main application component
└── main.ts         #&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/orangelckc/copilot-chat-helper" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Copilot Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  App Development Process
&lt;/h3&gt;

&lt;p&gt;Here’s an overview of the steps I followed to develop this app:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Framework Selection:&lt;/strong&gt; I used &lt;code&gt;Tauri&lt;/code&gt; to build a lightweight, cross-platform application architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workspace Retrieval:&lt;/strong&gt; Retrieved all non-empty chat workspaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Access:&lt;/strong&gt; Used a Rust crate to interact with SQLite databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Querying:&lt;/strong&gt; Queried data from each workspace's &lt;code&gt;state.vscdb&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Cleansing:&lt;/strong&gt; Removed invalid or incomplete records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readable Format:&lt;/strong&gt; Converted the raw JSON data into readable Markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Display:&lt;/strong&gt; Rendered the results with proper formatting and syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Platform Builds:&lt;/strong&gt; Implemented CI pipelines to automate building the app for multiple platforms.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Copilot's Role in Development
&lt;/h3&gt;

&lt;p&gt;GitHub Copilot played a significant role in this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For &lt;strong&gt;Rust development&lt;/strong&gt;, Copilot recommended useful crates to handle SQLite integration. While some suggestions were outdated, by providing Copilot with hints or the correct documentation, I was able to quickly adjust and resolve issues.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;frontend&lt;/strong&gt;, Copilot’s autocomplete feature was invaluable, often completing functional code once I provided the function name or intent.&lt;/li&gt;
&lt;li&gt;The frontend also allows users to select code directly in the editor and ask Copilot questions about it, with responses conveniently applied to the relevant areas.&lt;/li&gt;
&lt;li&gt;During &lt;strong&gt;editing&lt;/strong&gt;, the new edit mode allowed for stable, automated modifications across multiple files. This streamlined repetitive tasks, such as adjusting CSS, and saved a significant amount of time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite occasional errors, Copilot excelled at interpreting detailed prompts and learning from corrections. By interacting with the model and leveraging its strengths, I could focus on creative and complex tasks while Copilot handled repetitive or tedious work.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Models
&lt;/h2&gt;

&lt;p&gt;During the prototyping phase, I turned to Copilot for advice on accessing SQLite in Rust. While some of its initial suggestions were outdated, the recommendations still provided valuable starting points, saving me time by narrowing down potential solutions. By combining Copilot's guidance with additional research, I was able to quickly find the correct documentation and implement a working solution.&lt;/p&gt;

&lt;p&gt;In my experience, different models excel in distinct areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4o&lt;/strong&gt; shines when it comes to discussions and brainstorming complex topics. It provides well-rounded suggestions and insights that are especially helpful during ideation and problem-solving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude 3.5&lt;/strong&gt;, on the other hand, is particularly strong in handling logical workflows and writing task logic. It’s efficient at generating structured code and handling implementation details with clarity and precision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While there were differences in response speed and expertise between models, each brought unique strengths that enhanced the overall development process. By leveraging their capabilities strategically, I could address a wide range of challenges more effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;After just 8 hours of pair programming, this project went from idea to a fully functional app. It was an incredibly efficient development experience, highlighting the potential of AI-assisted programming to simplify even the most tedious tasks.&lt;/p&gt;

&lt;p&gt;One of the standout features of Copilot was its ability to quickly resolve issues like CSS bugs in a single chat and its edit mode, which streamlined updates across files without requiring repetitive copy-pasting.&lt;/p&gt;

&lt;p&gt;This project showcases potential future directions for AI programming: smarter systems with updated knowledge bases and broader support for tasks beyond code.&lt;/p&gt;

&lt;p&gt;By enabling the permanent preservation of Copilot chat histories, &lt;strong&gt;copilot-chat-helper&lt;/strong&gt; enhances both individual productivity and team collaboration. With this tool, developers can revisit and share meaningful conversations, boosting Copilot's utility beyond a code assistance tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclde2qqyvb9b8yb83tb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclde2qqyvb9b8yb83tb6.png" alt="WakaTime" width="780" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PS
&lt;/h2&gt;

&lt;p&gt;It’s worth noting that due to the limited number of interactions available during this Copilot experience, there may be additional features and capabilities that I haven’t fully explored yet. As I continue using Copilot in future projects, I’ll share any new insights or discoveries in the comments section.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
