Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Patch apply branch#3

Open
s3cr1z wants to merge 4 commits intomainfrom
patch-apply-branch
Open

Patch apply branch#3
s3cr1z wants to merge 4 commits intomainfrom
patch-apply-branch

Conversation

@s3cr1z
Copy link
Copy Markdown
Owner

@s3cr1z s3cr1z commented May 29, 2025

Summary by cubic

Added the initial vsskin web app with theme browsing, preview, and installation features, using the IBM Carbon Design System for the UI. Included all core app code, sample data, documentation, and project configuration.

  • New Features
    • Users can browse, preview, and install VS Code themes based on popular tech brands.
    • Supports light and dark modes, favorites, and personalized theme recommendations.
    • Includes full documentation, TypeScript types, and VSIX packaging for theme export.

s3cr1z and others added 3 commits May 29, 2025 10:12
- Added comprehensive project plan for vsskin web app
- Defined MVP scope including theme browsing, preview, and installation
- Outlined architecture using IBM Carbon Design System
- Included user journey and mermaid diagram for system flow
- Documented deferred features for future development
- Remove trailing colons from markdown headers
- Add blank lines before bullet points for better readability
- Improve documentation formatting consistency
- Added VSIXExporter class to handle the creation of VSIX packages for themes.
- Implemented methods to generate package.json, theme JSON, README, and CHANGELOG.
- Included functionality to generate an icon for the theme.
- Added utility functions for color adjustments and contrast calculations.

style: Add Carbon Design System styles

- Integrated Carbon Design System styles into the application.
- Defined custom theme tokens for vsskin and set up dark/light theme overrides.
- Created responsive grid styles for theme display.

types: Define core theme types and interfaces

- Created TypeScript interfaces for Theme, Brand, ThemeColors, and related structures.
- Added types for theme installation, metadata, and API responses.

chore: Configure TypeScript settings

- Set up tsconfig.json with appropriate compiler options for the project.
- Included paths for module resolution and specified included/excluded files.
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

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

cubic found 17 issues across 39 files. Review them in cubic.dev

React with 👍 or 👎 to teach cubic. Tag @cubic-dev-ai to give specific feedback.

reader.onload = (e) => {
try {
const imported = JSON.parse(e.target?.result as string);
const validated = { ...defaultPreferences, ...imported };
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Insufficient validation of imported user preferences data

Comment thread vsskin-app/README.md

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Incorrect file path reference. The project structure shows pages are in src/app/ directory, not in app/ directory.

Suggested change
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
You can start editing the page by modifying `src/app/page.tsx`. The page auto-updates as you edit the file.

Comment thread vsskin-app/README.md

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

README mentions Geist font but the PR description states the app uses IBM Carbon Design System, which is inconsistent.

Suggested change
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
This project uses the [IBM Carbon Design System](https://carbondesignsystem.com/) for its UI components and styling.

Comment thread vsskin-app/tsconfig.json
@@ -0,0 +1,27 @@
{
"compilerOptions": {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing 'forceConsistentCasingInFileNames' option which helps prevent issues on case-sensitive file systems

4. **Installation:** Users install the theme with a single click.

## Mermaid Diagram:
```mermaid
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The mermaid diagram is missing the closing code block backticks at the end of the file

<Button kind="secondary">
Request Feature
</Button>
<Button kind="tertiary">
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Button lacks an onClick handler or href attribute, making it non-interactive. All buttons should have a defined action.

Suggested change
<Button kind="tertiary">
<Button kind="tertiary" onClick={() => window.open('https://discord.gg/your-discord-invite', '_blank')}>

<Button kind="primary" renderIcon={LogoGithub}>
Report Issue
</Button>
<Button kind="secondary">
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Button lacks an onClick handler or href attribute, making it non-interactive. All buttons should have a defined action.

Suggested change
<Button kind="secondary">
<Button kind="secondary" onClick={() => window.open('https://github.com/your-repo/issues/new?template=feature_request.md', '_blank')}>

localStorage.setItem('vsskin-settings', JSON.stringify(settings));
setHasChanges(false);
setSavedNotification(true);
setTimeout(() => setSavedNotification(false), 3000);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The setTimeout is not cleaned up if the component unmounts, potentially causing a memory leak or state update on an unmounted component.

return await zip.generateAsync({ type: 'blob' });
}

static downloadVSIX(theme: Theme, options: VSIXOptions = {}) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Browser-specific code in downloadVSIX method that will fail in non-browser environments.

`;
}

private static generateIcon(theme: Theme): Promise<string> {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Browser-specific code in a file that might be used in Node.js environments. The document.createElement API is browser-specific and will fail in Node.js.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant