Skip to content

Main#403

Merged
yehorscode merged 2 commits into
developfrom
main
Jan 23, 2026
Merged

Main#403
yehorscode merged 2 commits into
developfrom
main

Conversation

@yehorscode

Copy link
Copy Markdown
Member

update

yehorscode and others added 2 commits January 23, 2026 07:28
* Refactor addon components for improved functionality and code clarity

* Refactor error handling and improve default value assignment in ProfileSettings and ProtectedRoute components

* Refactor ESLint directives for improved clarity and consistency in main and preload scripts

* Refactor user store to improve data mapping and error handling; make providerId optional in user schema

* Refactor handleCollectionAction to return the result of the add/remove addon operation

* Refactor DevinsBadges component to use type for badge categories and improve type checking

* Refactor useToast hook to replace string literals with constants for action types, improving maintainability and type safety

* Refactor CategorySelectors component to use useMemo for form values, improving performance and reducing unnecessary re-renders

* Implement toolbox with upload, addons and profile links

This commit introduces a toolbox feature with links to upload schematics, browse addons, and view the user profile. It also includes a theme toggle and styling for the buttons.

* Refactor imports to use 'type' for type-only imports, enhancing clarity and consistency across the codebase

* Refactor imports to use 'type' for type-only imports and enhance consistency across components

* Fix: Add axios, cron-parser, and update addon claiming

This commit adds axios and cron-parser as dependencies. It also updates the addon claiming process to use the `updateAddon` mutation instead of `saveAddon`. Additionally, it fixes an issue with image uploads and user data loading.

* Fix: Correctly handle addon collection actions and fetch profiles

This commit addresses two issues:

1.  Ensures that addon collection actions (add/remove) are handled correctly, even when the slug is undefined.
2.  Adds `.then()` to `fetchProfile()` and `fetchModrinthProjects()` calls to ensure promises are handled, preventing potential unhandled promise rejections.

* Refactor WhatIsBlueprint component to simplify structure, replace FeatureIcon with direct JSX, and enhance logo click handling with Button component

* Refactor VersionsDisplay component to use version as key in map function, improving uniqueness and preventing potential rendering issues

* Refactor ProfileSettings component to improve avatar file ID extraction using regex and enhance input accessibility with a title attribute

* Refactor BlogTagsDisplay and TagSelector components to enhance tag rendering with improved class and style handling, and update props to be readonly for better immutability

* Refactor ContributorCard and ContributorsSection components to improve props handling, add a skeleton loader for loading state, and enhance accessibility with consistent class usage.

* Refactor TimerProgress component to update intervalRef type for better type safety and clarity.

* Refactor ScrollingAddonBackground component to initialize dimensions with window size, improve loading state handling, and enhance grid generation logic for better performance and user experience.

* Refactor UserSchematicList component to use nullish coalescing operator for safer user ID handling in fetch call.

* Re-organize functions for logical handling

* Refactor ImageUploader component to separate type imports for improved clarity and organization.

* Refactor DevinsBadges component to remove unused variable linting directive and adjust badge category constants for improved clarity.

* Remove unused linting directives and global variable comments from configuration and main files for cleaner code.

* Add .hintrc configuration file to extend development settings and disable inline styles hint

* Use nullish coalescing operator for fallback values in ScrollingAddonBackground and TimerProgress components

* chore: upgrade vite config, fix eslint configuration, and update tsconfig files

* refactor: simplify ItemSkeleton and enhance ItemGrid props with readonly modifiers

* refactor: update responsive classes for improved layout on larger screens

* refactor: enhance type safety by adding readonly modifiers to props and update ESLint configuration

* Refactor: Remove unnecessary console log and simplify background color logic in ContributorCard

* Implement beta tester settings section

This commit adds a new "Beta tester" section to the settings page.
The section includes basic structure for future beta testing features.
It also imports and uses the BugIcon from lucide-react.

* feat: Add issue templates for documentation, hotfix, feature, design, and infrastructure

* docs: Update contributing guidelines and add issue guidelines document

* chore: Remove title prefixes from issue templates

* feat: Add new pull request templates for improved clarity and structure

* chore: Update bug template and remove priority field from feature template

* feat: Add workflow to assign priority labels to issues based on body content

* Update PR template

* chore: Remove outdated pull request templates

* feat: Implement feature flag management system with hooks and store

* Fix discord links (#330)

* feat: Extend Appwrite Document structures with Addon, Schematic, Blog, Tag, User, and AdminLog interfaces

* feat: Refactor user model to extend Appwrite's User and Preferences, and remove deprecated upload utility

* refactor: Simplify User model definition by using type alias for extended user interface

* refactor: Rename FeatureFlagDocument to FeatureFlag and update related types

* refactor: Remove unnecessary comment in fetchFeatureFlag function

* feat: Add Meilisearch types and migrate schematic types to Appwrite models

* fix: Allow useFetchSchematic to handle undefined ID gracefully

* Update src/schemas/schematic.schema.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Clean up comments and improve type imports in useSearchSchematics and Meilisearch types

* refactor: Migrate Addon types to use Appwrite document models

* Defined interface, defined a schema defined exports

* Added useFunctions

* Added toasts

* initial working condition?

* Define Blog and related types without Zod schemas

* Add JSON field parsing/serialization utilities for Blog data

* Update blog hooks to use JSON field utilities instead of Zod parsing

* Update Meilisearch integration to use consistent Blog types

* Update UI components to use new BlogTag type (was ParsedTag)

* Update type barrel file with proper exports for new type system

* Update addon component imports to use centralized type barrel

* Update dependency component imports to use centralized type barrel

* Update version component imports to use centralized type barrel

* Update API endpoint imports to use centralized type barrel

* Update utility and hook imports to use centralized type barrel

* Update blog schema to reflect new type system and improve documentation

* Refactor featured addon types and schemas; add validation for form values

* refactor: Implement Appwrite types for tags

* docs: Add documentation for Appwrite Model integration

* docs: Add Zod validation guide for Appwrite user model integration

* feat: Update models and schemas for addon management

* refactor: reorganize API directory structure into logical domains (appwrite, external, meilisearch)

* refactor: reorganize project structure with proper directory organization

* refactor: update import paths to use new directory structure

* refactor: remove files from old locations after restructuring

* chore: update configuration files for new project structure

* refactor: remove unused schema files to clean up project structure

* refactor: simplify type exports and improve import paths for better clarity

* refactor: update import paths for useToast to use hooks directory

* refactor: update import paths for toast to use hooks directory

* Update issue-guidelines.md

* Render gallery only if images exist

* Ignore package-lock.json

* Add zod import to types index

This allows for easier access to zod types throughout the project.

* Fix: Adjust HeroLayout height to 100%

This commit modifies the HeroLayout component to set its height to 100% instead of h-screen. This ensures the layout fills the available vertical space without being limited to the viewport height.

* Refactor featured addon schemas and types for clarity and consistency

* Rename 'groups' to 'teams' in feature flag schemas and related functions for consistency

* Update dependencies and infrastructure for user management

* Add RouteErrorBoundary component and integrate error handling in routes

* Implement user management API hooks

* Create user management UI components

* Integrate user management into admin panel

* Fetch user team memberships from admin function

Adds teamIds to the AdminUser type and fetches user team memberships from the listUsers admin function.  Updates the UserManagement table to no longer display the lastAccessedAt column.  Improves error handling and type safety in the useUsers hook.  Removes unnecessary comments and console logs.

* Added Admin forms to manage Featured Addons & More (#357)

* Update my branch (#355)

* Implement beta tester settings section

This commit adds a new "Beta tester" section to the settings page.
The section includes basic structure for future beta testing features.
It also imports and uses the BugIcon from lucide-react.

* feat: Implement feature flag management system with hooks and store

* feat: Extend Appwrite Document structures with Addon, Schematic, Blog, Tag, User, and AdminLog interfaces

* feat: Refactor user model to extend Appwrite's User and Preferences, and remove deprecated upload utility

* refactor: Simplify User model definition by using type alias for extended user interface

* refactor: Rename FeatureFlagDocument to FeatureFlag and update related types

* refactor: Remove unnecessary comment in fetchFeatureFlag function

* feat: Add Meilisearch types and migrate schematic types to Appwrite models

* fix: Allow useFetchSchematic to handle undefined ID gracefully

* Update src/schemas/schematic.schema.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Clean up comments and improve type imports in useSearchSchematics and Meilisearch types

* refactor: Migrate Addon types to use Appwrite document models

* Define Blog and related types without Zod schemas

* Add JSON field parsing/serialization utilities for Blog data

* Update blog hooks to use JSON field utilities instead of Zod parsing

* Update Meilisearch integration to use consistent Blog types

* Update UI components to use new BlogTag type (was ParsedTag)

* Update type barrel file with proper exports for new type system

* Update addon component imports to use centralized type barrel

* Update dependency component imports to use centralized type barrel

* Update version component imports to use centralized type barrel

* Update API endpoint imports to use centralized type barrel

* Update utility and hook imports to use centralized type barrel

* Update blog schema to reflect new type system and improve documentation

* Refactor featured addon types and schemas; add validation for form values

* refactor: Implement Appwrite types for tags

* docs: Add documentation for Appwrite Model integration

* docs: Add Zod validation guide for Appwrite user model integration

* feat: Update models and schemas for addon management

* refactor: reorganize API directory structure into logical domains (appwrite, external, meilisearch)

* refactor: reorganize project structure with proper directory organization

* refactor: update import paths to use new directory structure

* refactor: remove files from old locations after restructuring

* chore: update configuration files for new project structure

* refactor: remove unused schema files to clean up project structure

* refactor: simplify type exports and improve import paths for better clarity

* refactor: update import paths for useToast to use hooks directory

* refactor: update import paths for toast to use hooks directory

* Update issue-guidelines.md

* Render gallery only if images exist

* Ignore package-lock.json

* Add zod import to types index

This allows for easier access to zod types throughout the project.

* Fix: Adjust HeroLayout height to 100%

This commit modifies the HeroLayout component to set its height to 100% instead of h-screen. This ensures the layout fills the available vertical space without being limited to the viewport height.

---------

Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add Sample Featured Addons, add improvements, Fix HTML errors

* Added one more sample data addon

* Added clicking interactions to the slideshow elements

* Fixed mobile slideshow + fixed sample addons featured

* Added comprehensive documentation

* Improve the docs

* GUI functionality for featured addons

* tried to get the normalurl, didnt work

* Moved the admin panel Featured addons sections into a separate tab

* Fix validation schema by removing redundant min constraints for addonid, title, and slug fields

---------

Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor/admin-panel (#356)

* refactor admin dashboard

refactor the admin dashboard with tabs for Addons, Schematics, Blog, and Analytics. Each tab displays relevant information and quick actions.  Refactors the sidebar navigation to support the new dashboard structure. Updates the AddonsSlideshow component with a console log for debugging.

* Add admin blog management page

Creates a new admin blog management page that allows creating new blog posts and viewing existing ones.  Updates routes and sidebar navigation to reflect these changes.

* Refactor: Improve Admin Blog Editor layout and styling

Updates the layout of the admin blog editor for better responsiveness and improved user experience.  Adds labels to input fields and restructures the component using a more logical layout with a dedicated sidebar for metadata.  Removes unnecessary console logs and simplifies the save handler.

* Refactor: Implement Addons tabbed view in Admin Panel

Adds a tabbed interface to the Addons section of the Admin Panel, separating all addons from featured addons.  Updates routing and sidebar navigation to reflect these changes.

* Refactor: Update FeaturesAddonsTable

Updates the FeaturesAddonsTable component to use new API data fields, replaces icons, and adds an "Add Addon" button.  Also simplifies pagination controls.

* Refactor: Update featured addons management

Updates the `useUpdateFeaturedAddon` hook to accept an ID and partial addon data.
Simplifies updating addon status in the admin panel.
Removes unnecessary `isChecked` property.
Adds types for `UpdateFeaturedAddonArgs`.

* Add filter to fetch all featured addons

Adds a boolean parameter to `useFetchFeaturedAddons` to control filtering by active status.
This allows the admin panel to display all addons, regardless of their active status.
Updates `FeaturedAddonsTable` to use the new parameter and fetch all addons.

* Refactor: Improve admin addons table

Improves the admin addons table with search, pagination, and styling enhancements.  Updates the `useFetchAddons` hook to include total page count and simplifies the table structure for better readability.  Also updates the featured addons slideshow to use a new parameter for fetching featured addons.  Removes unnecessary name filter from addon checks table.

* Implement pagination for admin addons table

Adds pagination to the admin addons table, fetching all addons initially and then handling pagination client-side. Improves search functionality by resetting the page to 1 when the search query changes. Updates the displayed page count to handle empty search results.

* Refactor: Improve addon management table

Reimplements the addons table with enhanced features:

- Adds infinite scrolling with a fixed table height.
- Implements separate review and enable/disable controls.
- Improves filtering with tabs for "All Addons" and "Needs Review".
- Adds loading and error states with retry functionality.
- Improves overall styling and accessibility.
- Adds animations for smoother transitions.
- Auto-marks addons as reviewed when enabled.
- Includes more informative messages and tooltips.

* feat: Add context menu and schematics table components

* feat: Add Admin Users display and update sidebar navigation

---------

Co-authored-by: Yehor <omelianenkoegor@gmail.com>

* docs(links): Update links to new repo & site (#358)

* docs(readme): Update links to new repo

* docs(links): Update links to new repo & site
Updated links that were still pointing to the old gh repo or old site.

* Add conami code easter egg

* Added conami esater egg

* Make animation, move components

* Fix Admin Routes

* refactor(routes): consolidate schematic routes into index and remove unused file

* fix(schematics): remove redundant import of ContextMenuLabel from @radix-ui/react-context-menu

* feat(ui): add accent variant to badge and button components; update tooltip styles

* refactor(typography, components): restructure Typography and Components sections into Card components for improved layout and consistency

* refactor(components): update styling in UsefulLinks and WhatIsBlueprint for improved readability and consistency

* refactor(css): update CSS variables for improved color consistency and readability

* refactor(Design): remove redundant separators for cleaner layout

* refactor(Footer): update layout and navigation links to use Button components for improved usability

* refactor(Home): simplify structure by removing unnecessary section wrapper around WhatIsBlueprint

* refactor(Components): add Select component for improved input options and layout

* refactor(SelectFilter): streamline loading state handling and improve placeholder styles

* refactor(Select): update SelectContent styles for improved visibility and consistency

* refactor(Home): enhance background styles for improved readability and aesthetics

* chore: update dependencies and devDependencies to latest versions

- Upgraded various packages including @hookform/resolvers, @radix-ui components, axios, react, and others.
- Updated devDependencies such as eslint, typescript, and prettier to their latest versions.
- Improved compatibility and performance with the latest releases.

* refactor(SchematicsDetails): enhance layout and structure for improved readability

* refactor: update badge variants for consistency and improve layout in various components

* refactor(Tabs): update styles for TabsList and TabsTrigger for improved visibility

* refactor(SchematicsDetails): improve component structure and enhance VersionsDisplay usage

* refactor: export components in SchematicsDetails for improved modularity

* refactor: update heading elements for consistency and improve styling across components

* refactor: reorganize Konami Code Easter Egg implementation and enhance fireworks animation

* refactor: remove unused collection store and related components for cleaner codebase

* Update package.json

* Update AddonCard.tsx

* fix AddFeaturedAddon path

* Refactor: Improve Addon Description Rendering & Component Exports (#366)

* refactor: add addon-markdown styles for improved markdown content presentation

* refactor: simplify AddonDetailsDescription component and improve markdown processing

* refactor: change component exports to default for AddonStats, ModPageLinks, and VersionBadges

* refactor: remove unused ChevronDown icon import from VersionsTabContent component

* refactor: convert named exports to default exports for addon details components

* refactor: update background color for TabsList component

* refactor: convert named imports to default imports for AddonDetails components

* oops!

* Refactors UI elements for improved aesthetics

Updates the color scheme and styling of various UI components
to enhance the overall visual appeal and user experience.

- Modifies the LoadingOverlay text color for better readability.
- Adjusts schematic card download button to use navigate instead of link.
- Modifies CSS variables for a cleaner, more consistent look.

* fix(CategorySelectors): Categories can now be selected (#367)

Thanks for contributing!

* design(cogScroll): Cog spins faster when scrolling (#369)

* design(cogScroll): Cog spins faster when scrolling

* design(cogScroll): Now also on other pages

* refactor: replace MultiImageViewer with Gallery component across multiple files

* refactor(Lightbox): replace Carousel with Gallery component for improved image display

* feat(Gallery): add showNavigation prop and improve Carousel item styling

* feat(Carousel): update CarouselPrevious and CarouselNext to use semi-ghost button variant

* fix(Gallery): correct CarouselNext closing tag and simplify Lightbox props

* refactor: update CSS variable syntax for consistency

* feat(Gallery, Lightbox): add initialIndex prop for better carousel synchronization

* feat: add useListPageFilters hook for shared search functionality

- Create reusable hook for common list page search patterns
- Provides consistent search state management across components
- Includes callback support for filter change notifications
- Foundation for standardized mobile list page UI

* feat: create MobileSearchFilterDrawer component

- Add dedicated mobile search and filter drawer component
- Implements sticky search bar at bottom with upward-expanding filters
- Uses custom positioning instead of problematic drawer overlays
- Includes dynamic height based on content (no fixed viewport heights)
- Provides visual indicators for active filters
- Supports click-outside-to-close functionality
- Eliminates navigation blocking issues with proper z-index management

* feat: refactor ListPageLayout to unified mobile/desktop component

- Replace separate ListPageFilters/ListPageContent components with unified layout
- Integrate MobileSearchFilterDrawer for consistent mobile experience
- Add comprehensive props API for search, filters, and header content
- Provide desktop sidebar filters alongside mobile drawer
- Support active filter state visualization
- Eliminate need for manual mobile filter implementation per page
- Maintain backward compatibility while enabling new standardized pattern

* refactor: migrate all list pages to unified mobile UI pattern

- Refactor Blog, Addons, and Schematics pages to use new ListPageLayout
- Eliminate 200+ lines of duplicated mobile filter boilerplate across pages
- Integrate useListPageFilters hook for consistent search functionality
- Maintain all existing filter capabilities while reducing code complexity
- Achieve 40% average code reduction per page while adding mobile functionality

Blog.tsx: Simplified to search-only pattern, removed manual filter layout
AddonList.tsx: Integrated with useListPageFilters, removed mobile drawer code
SchematicsList.tsx: Preserved complex filter logic, moved upload to header

* fix: correct blog page import path in routes

- Update import from BlogDetails to Blog to match refactored component
- Ensures proper routing to the unified blog list page

* refactor: remove unused effect for closing filters in MobileSearchFilterDrawer

* feat: consolidate Terms and Privacy into unified Legal page

- Create new unified Legal page with tab navigation
- Extract Terms and Privacy content into reusable components
- Add redirects from /terms and /privacy for backward compatibility
- Update routing to support new legal page structure

* feat: add 'legal' translation key across all locales

- Add 'legal' navigation item to all 13 supported languages
- Supports new unified legal page navigation

* feat: implement compact two-tier footer design

- Redesign footer with improved space utilization
- Add GitHub and bug report links with icons
- Enhance visual hierarchy and mobile responsiveness

* feat: upgrade LanguageSwitcher to popover-based design

- Replace dropdown with modern Command+Popover pattern
- Add search functionality for better UX
- Improve accessibility and visual consistency

* refactor: minor component positioning and layout improvements

- Adjust cogwheel positioning
- Fine-tune header and layout spacing
- Small UX enhancements

* feat(SocialSharing): add EnhancedSocialSharing and SocialSharingDialog components with examples

* feat(SocialSharing): replace EnhancedSocialSharing with SocialSharing in dialog and update sharing functionality

* feat: add BlueprintCard component with responsive design and grid overlay

* refactor(SocialSharing): remove SocialSharingDialogExamples component

* Update ListPageLayout.tsx

* Update src/components/ui/blueprint-card.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: enhance environment configuration with APP_BASE_URL and APP_PORT variables

* fix(navigate): Fix navigation links in footer (#381)

Navigation links in footer led to relative paths (most of the time, not 100%, weird), now absolute.

Co-authored-by: Yehor <111529536+yehorscode@users.noreply.github.com>

* Yehors test revamp (#382)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Yehors test revamp (#383)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Yehors test revamp (#384)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revamp made by yehor (#385)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

* updates

* Made the authors display correctly on the addon cards

* updated the schematics to make them work and added debug modes

* updates

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Yehors test revamp (#386)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

* updates

* Made the authors display correctly on the addon cards

* updated the schematics to make them work and added debug modes

* updates

* updates to ui

* redeploy test

* fixed errors

* add headers for cloduflare

* e

* r

* add headers

* fix npm errors

* fix npm v2

* trigger redeploy

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Improve type safety and array handling for addons and blog operations

This commit standardizes array handling across addons and blogs (e.g., `minecraft_versions`, `categories`, `authors`) to support both single and multiple values. It introduces type refinements for addons and blogs, improves mutation logic by excluding unnecessary fields (e.g., `$id`, `$permissions`), and adjusts components and utilities for better type safety and consistency. Additionally, redundant types and comments are cleaned up.

* Exclude unused metadata fields in API mutation operations

This commit consistently removes unnecessary fields (e.g., `$id`, `$permissions`) across blog, addon, and schematic mutation functions. Improves code readability by streamlining deserialization logic and annotation.

* Add new `build:ci` script and adjust `build` for increased memory allocation

This commit introduces a `build:ci` script with a reduced memory limit for CI environments and updates the `build` script to allocate more memory for local builds, improving compatibility and preventing potential memory-related build issues.

* Add `_headers` file and prebuild assets for deployment

This commit adds a `_headers` file to the dist folder to define custom headers for specific files. Prebuilt assets are generated to support deployment requirements.

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* this commit add to much features

* feat: Implement in-app feedback widget with admin dashboard (#376)

* feat: implement feedback feature with submission, admin management, and UI components

* Update src/hooks/useFeedback.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/api/appwrite/useFeedback.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Yehor <111529536+yehorscode@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Yehor <omelianenkoegor@gmail.com>

* Refactor and organize project files; add new components for blog editing and user management + total refactor of the admin panel

* Refactor and organize project files; add new components for blog editing and user management + total refactor of the admin panel

* Enhance performance by optimizing hit tracking and preventing duplicate addon entries; refactor scrolling behavior for smoother animations

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* Add user badge schema and update storage bucket constants; enhance deployment scripts

* feat: Enhance Schematic Upload and Editor with new features and improvements

* Made a quick fix to the review mode and Made the wording better (#390)

* Made a quick fix to the review mode and Made the wording better

* cleanup left out debug points

* Rewrite of the site (#391)

* Started doing a rewrite

* Add more fixes

* Pain setting up routers from the last version of the site...

* Added basic navbar and routing

* Add old function commands (not modifying them)

* Delete un-needed tar.gz files

* Nothing much

* Added a theme switcher

* Added a placeholder /addons page

* Add types and remove unsafe env

* Added the first test of fetching addons

* Added basic addon list stuff

* Delete any curseforge_raw and modrinth_raw usage

* Add new readme and disclosement of contribution

* Add addon update hook & Added basic login (doesnt save the session yet)

* Add huge new functionality that is too long to describe

* api will be moved to separate repo

* Tweak site and add vercel.json

* Update readme

* Remove about icon

* add discord link (#392)

* Feature/betteradmin (#393)

* add discord link

* Refactor authentication handling and improve admin access management

* Made addons clickable in admin (#394)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* Expanded addon view & fixes to admin page (#395)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Update src/pages/Home/Home.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove broken py-

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix redundant Error | any type annotations in AuthManagerPage (#396)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Initial plan

* Fix redundant Error | any type annotations

Co-authored-by: yehorscode <111529536+yehorscode@users.noreply.github.com>

---------

Co-authored-by: Yehor <omelianenkoegor@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yehorscode <111529536+yehorscode@users.noreply.github.com>

* Feature/expanded addon view (#397)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Update src/pages/Home/Home.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove broken py-

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add basic expanded addons framework

* Added basic formatting! [ported from v2]

* e

* Add slugs to search

* Add Vercel analytics

* Fix insights

* Add meta keywords

* Fix images being too large

* Add prototype tabs for expanded addons

* help

* note

* Update src/components/ui/pagination.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix cardheader

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Test commit (#398)

* Tried to switch everything to surface tags. The theme is yet to be fixed (#399)

* Tried to switch everything to surface tags. The theme is yet to be fixed

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: Timiliris_420 <103514954+timiliris@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: ElectricSteve <96793824+electricsteve@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Refactor addon components for improved functionality and code clarity

* Refactor error handling and improve default value assignment in ProfileSettings and ProtectedRoute components

* Refactor ESLint directives for improved clarity and consistency in main and preload scripts

* Refactor user store to improve data mapping and error handling; make providerId optional in user schema

* Refactor handleCollectionAction to return the result of the add/remove addon operation

* Refactor DevinsBadges component to use type for badge categories and improve type checking

* Refactor useToast hook to replace string literals with constants for action types, improving maintainability and type safety

* Refactor CategorySelectors component to use useMemo for form values, improving performance and reducing unnecessary re-renders

* Implement toolbox with upload, addons and profile links

This commit introduces a toolbox feature with links to upload schematics, browse addons, and view the user profile. It also includes a theme toggle and styling for the buttons.

* Refactor imports to use 'type' for type-only imports, enhancing clarity and consistency across the codebase

* Refactor imports to use 'type' for type-only imports and enhance consistency across components

* Fix: Add axios, cron-parser, and update addon claiming

This commit adds axios and cron-parser as dependencies. It also updates the addon claiming process to use the `updateAddon` mutation instead of `saveAddon`. Additionally, it fixes an issue with image uploads and user data loading.

* Fix: Correctly handle addon collection actions and fetch profiles

This commit addresses two issues:

1.  Ensures that addon collection actions (add/remove) are handled correctly, even when the slug is undefined.
2.  Adds `.then()` to `fetchProfile()` and `fetchModrinthProjects()` calls to ensure promises are handled, preventing potential unhandled promise rejections.

* Refactor WhatIsBlueprint component to simplify structure, replace FeatureIcon with direct JSX, and enhance logo click handling with Button component

* Refactor VersionsDisplay component to use version as key in map function, improving uniqueness and preventing potential rendering issues

* Refactor ProfileSettings component to improve avatar file ID extraction using regex and enhance input accessibility with a title attribute

* Refactor BlogTagsDisplay and TagSelector components to enhance tag rendering with improved class and style handling, and update props to be readonly for better immutability

* Refactor ContributorCard and ContributorsSection components to improve props handling, add a skeleton loader for loading state, and enhance accessibility with consistent class usage.

* Refactor TimerProgress component to update intervalRef type for better type safety and clarity.

* Refactor ScrollingAddonBackground component to initialize dimensions with window size, improve loading state handling, and enhance grid generation logic for better performance and user experience.

* Refactor UserSchematicList component to use nullish coalescing operator for safer user ID handling in fetch call.

* Re-organize functions for logical handling

* Refactor ImageUploader component to separate type imports for improved clarity and organization.

* Refactor DevinsBadges component to remove unused variable linting directive and adjust badge category constants for improved clarity.

* Remove unused linting directives and global variable comments from configuration and main files for cleaner code.

* Add .hintrc configuration file to extend development settings and disable inline styles hint

* Use nullish coalescing operator for fallback values in ScrollingAddonBackground and TimerProgress components

* chore: upgrade vite config, fix eslint configuration, and update tsconfig files

* refactor: simplify ItemSkeleton and enhance ItemGrid props with readonly modifiers

* refactor: update responsive classes for improved layout on larger screens

* refactor: enhance type safety by adding readonly modifiers to props and update ESLint configuration

* Refactor: Remove unnecessary console log and simplify background color logic in ContributorCard

* Implement beta tester settings section

This commit adds a new "Beta tester" section to the settings page.
The section includes basic structure for future beta testing features.
It also imports and uses the BugIcon from lucide-react.

* feat: Add issue templates for documentation, hotfix, feature, design, and infrastructure

* docs: Update contributing guidelines and add issue guidelines document

* chore: Remove title prefixes from issue templates

* feat: Add new pull request templates for improved clarity and structure

* chore: Update bug template and remove priority field from feature template

* feat: Add workflow to assign priority labels to issues based on body content

* Update PR template

* chore: Remove outdated pull request templates

* feat: Implement feature flag management system with hooks and store

* Fix discord links (#330)

* feat: Extend Appwrite Document structures with Addon, Schematic, Blog, Tag, User, and AdminLog interfaces

* feat: Refactor user model to extend Appwrite's User and Preferences, and remove deprecated upload utility

* refactor: Simplify User model definition by using type alias for extended user interface

* refactor: Rename FeatureFlagDocument to FeatureFlag and update related types

* refactor: Remove unnecessary comment in fetchFeatureFlag function

* feat: Add Meilisearch types and migrate schematic types to Appwrite models

* fix: Allow useFetchSchematic to handle undefined ID gracefully

* Update src/schemas/schematic.schema.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Clean up comments and improve type imports in useSearchSchematics and Meilisearch types

* refactor: Migrate Addon types to use Appwrite document models

* Defined interface, defined a schema defined exports

* Added useFunctions

* Added toasts

* initial working condition?

* Define Blog and related types without Zod schemas

* Add JSON field parsing/serialization utilities for Blog data

* Update blog hooks to use JSON field utilities instead of Zod parsing

* Update Meilisearch integration to use consistent Blog types

* Update UI components to use new BlogTag type (was ParsedTag)

* Update type barrel file with proper exports for new type system

* Update addon component imports to use centralized type barrel

* Update dependency component imports to use centralized type barrel

* Update version component imports to use centralized type barrel

* Update API endpoint imports to use centralized type barrel

* Update utility and hook imports to use centralized type barrel

* Update blog schema to reflect new type system and improve documentation

* Refactor featured addon types and schemas; add validation for form values

* refactor: Implement Appwrite types for tags

* docs: Add documentation for Appwrite Model integration

* docs: Add Zod validation guide for Appwrite user model integration

* feat: Update models and schemas for addon management

* refactor: reorganize API directory structure into logical domains (appwrite, external, meilisearch)

* refactor: reorganize project structure with proper directory organization

* refactor: update import paths to use new directory structure

* refactor: remove files from old locations after restructuring

* chore: update configuration files for new project structure

* refactor: remove unused schema files to clean up project structure

* refactor: simplify type exports and improve import paths for better clarity

* refactor: update import paths for useToast to use hooks directory

* refactor: update import paths for toast to use hooks directory

* Update issue-guidelines.md

* Render gallery only if images exist

* Ignore package-lock.json

* Add zod import to types index

This allows for easier access to zod types throughout the project.

* Fix: Adjust HeroLayout height to 100%

This commit modifies the HeroLayout component to set its height to 100% instead of h-screen. This ensures the layout fills the available vertical space without being limited to the viewport height.

* Refactor featured addon schemas and types for clarity and consistency

* Rename 'groups' to 'teams' in feature flag schemas and related functions for consistency

* Update dependencies and infrastructure for user management

* Add RouteErrorBoundary component and integrate error handling in routes

* Implement user management API hooks

* Create user management UI components

* Integrate user management into admin panel

* Fetch user team memberships from admin function

Adds teamIds to the AdminUser type and fetches user team memberships from the listUsers admin function.  Updates the UserManagement table to no longer display the lastAccessedAt column.  Improves error handling and type safety in the useUsers hook.  Removes unnecessary comments and console logs.

* Added Admin forms to manage Featured Addons & More (#357)

* Update my branch (#355)

* Implement beta tester settings section

This commit adds a new "Beta tester" section to the settings page.
The section includes basic structure for future beta testing features.
It also imports and uses the BugIcon from lucide-react.

* feat: Implement feature flag management system with hooks and store

* feat: Extend Appwrite Document structures with Addon, Schematic, Blog, Tag, User, and AdminLog interfaces

* feat: Refactor user model to extend Appwrite's User and Preferences, and remove deprecated upload utility

* refactor: Simplify User model definition by using type alias for extended user interface

* refactor: Rename FeatureFlagDocument to FeatureFlag and update related types

* refactor: Remove unnecessary comment in fetchFeatureFlag function

* feat: Add Meilisearch types and migrate schematic types to Appwrite models

* fix: Allow useFetchSchematic to handle undefined ID gracefully

* Update src/schemas/schematic.schema.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Clean up comments and improve type imports in useSearchSchematics and Meilisearch types

* refactor: Migrate Addon types to use Appwrite document models

* Define Blog and related types without Zod schemas

* Add JSON field parsing/serialization utilities for Blog data

* Update blog hooks to use JSON field utilities instead of Zod parsing

* Update Meilisearch integration to use consistent Blog types

* Update UI components to use new BlogTag type (was ParsedTag)

* Update type barrel file with proper exports for new type system

* Update addon component imports to use centralized type barrel

* Update dependency component imports to use centralized type barrel

* Update version component imports to use centralized type barrel

* Update API endpoint imports to use centralized type barrel

* Update utility and hook imports to use centralized type barrel

* Update blog schema to reflect new type system and improve documentation

* Refactor featured addon types and schemas; add validation for form values

* refactor: Implement Appwrite types for tags

* docs: Add documentation for Appwrite Model integration

* docs: Add Zod validation guide for Appwrite user model integration

* feat: Update models and schemas for addon management

* refactor: reorganize API directory structure into logical domains (appwrite, external, meilisearch)

* refactor: reorganize project structure with proper directory organization

* refactor: update import paths to use new directory structure

* refactor: remove files from old locations after restructuring

* chore: update configuration files for new project structure

* refactor: remove unused schema files to clean up project structure

* refactor: simplify type exports and improve import paths for better clarity

* refactor: update import paths for useToast to use hooks directory

* refactor: update import paths for toast to use hooks directory

* Update issue-guidelines.md

* Render gallery only if images exist

* Ignore package-lock.json

* Add zod import to types index

This allows for easier access to zod types throughout the project.

* Fix: Adjust HeroLayout height to 100%

This commit modifies the HeroLayout component to set its height to 100% instead of h-screen. This ensures the layout fills the available vertical space without being limited to the viewport height.

---------

Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add Sample Featured Addons, add improvements, Fix HTML errors

* Added one more sample data addon

* Added clicking interactions to the slideshow elements

* Fixed mobile slideshow + fixed sample addons featured

* Added comprehensive documentation

* Improve the docs

* GUI functionality for featured addons

* tried to get the normalurl, didnt work

* Moved the admin panel Featured addons sections into a separate tab

* Fix validation schema by removing redundant min constraints for addonid, title, and slug fields

---------

Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor/admin-panel (#356)

* refactor admin dashboard

refactor the admin dashboard with tabs for Addons, Schematics, Blog, and Analytics. Each tab displays relevant information and quick actions.  Refactors the sidebar navigation to support the new dashboard structure. Updates the AddonsSlideshow component with a console log for debugging.

* Add admin blog management page

Creates a new admin blog management page that allows creating new blog posts and viewing existing ones.  Updates routes and sidebar navigation to reflect these changes.

* Refactor: Improve Admin Blog Editor layout and styling

Updates the layout of the admin blog editor for better responsiveness and improved user experience.  Adds labels to input fields and restructures the component using a more logical layout with a dedicated sidebar for metadata.  Removes unnecessary console logs and simplifies the save handler.

* Refactor: Implement Addons tabbed view in Admin Panel

Adds a tabbed interface to the Addons section of the Admin Panel, separating all addons from featured addons.  Updates routing and sidebar navigation to reflect these changes.

* Refactor: Update FeaturesAddonsTable

Updates the FeaturesAddonsTable component to use new API data fields, replaces icons, and adds an "Add Addon" button.  Also simplifies pagination controls.

* Refactor: Update featured addons management

Updates the `useUpdateFeaturedAddon` hook to accept an ID and partial addon data.
Simplifies updating addon status in the admin panel.
Removes unnecessary `isChecked` property.
Adds types for `UpdateFeaturedAddonArgs`.

* Add filter to fetch all featured addons

Adds a boolean parameter to `useFetchFeaturedAddons` to control filtering by active status.
This allows the admin panel to display all addons, regardless of their active status.
Updates `FeaturedAddonsTable` to use the new parameter and fetch all addons.

* Refactor: Improve admin addons table

Improves the admin addons table with search, pagination, and styling enhancements.  Updates the `useFetchAddons` hook to include total page count and simplifies the table structure for better readability.  Also updates the featured addons slideshow to use a new parameter for fetching featured addons.  Removes unnecessary name filter from addon checks table.

* Implement pagination for admin addons table

Adds pagination to the admin addons table, fetching all addons initially and then handling pagination client-side. Improves search functionality by resetting the page to 1 when the search query changes. Updates the displayed page count to handle empty search results.

* Refactor: Improve addon management table

Reimplements the addons table with enhanced features:

- Adds infinite scrolling with a fixed table height.
- Implements separate review and enable/disable controls.
- Improves filtering with tabs for "All Addons" and "Needs Review".
- Adds loading and error states with retry functionality.
- Improves overall styling and accessibility.
- Adds animations for smoother transitions.
- Auto-marks addons as reviewed when enabled.
- Includes more informative messages and tooltips.

* feat: Add context menu and schematics table components

* feat: Add Admin Users display and update sidebar navigation

---------

Co-authored-by: Yehor <omelianenkoegor@gmail.com>

* docs(links): Update links to new repo & site (#358)

* docs(readme): Update links to new repo

* docs(links): Update links to new repo & site
Updated links that were still pointing to the old gh repo or old site.

* Add conami code easter egg

* Added conami esater egg

* Make animation, move components

* Fix Admin Routes

* refactor(routes): consolidate schematic routes into index and remove unused file

* fix(schematics): remove redundant import of ContextMenuLabel from @radix-ui/react-context-menu

* feat(ui): add accent variant to badge and button components; update tooltip styles

* refactor(typography, components): restructure Typography and Components sections into Card components for improved layout and consistency

* refactor(components): update styling in UsefulLinks and WhatIsBlueprint for improved readability and consistency

* refactor(css): update CSS variables for improved color consistency and readability

* refactor(Design): remove redundant separators for cleaner layout

* refactor(Footer): update layout and navigation links to use Button components for improved usability

* refactor(Home): simplify structure by removing unnecessary section wrapper around WhatIsBlueprint

* refactor(Components): add Select component for improved input options and layout

* refactor(SelectFilter): streamline loading state handling and improve placeholder styles

* refactor(Select): update SelectContent styles for improved visibility and consistency

* refactor(Home): enhance background styles for improved readability and aesthetics

* chore: update dependencies and devDependencies to latest versions

- Upgraded various packages including @hookform/resolvers, @radix-ui components, axios, react, and others.
- Updated devDependencies such as eslint, typescript, and prettier to their latest versions.
- Improved compatibility and performance with the latest releases.

* refactor(SchematicsDetails): enhance layout and structure for improved readability

* refactor: update badge variants for consistency and improve layout in various components

* refactor(Tabs): update styles for TabsList and TabsTrigger for improved visibility

* refactor(SchematicsDetails): improve component structure and enhance VersionsDisplay usage

* refactor: export components in SchematicsDetails for improved modularity

* refactor: update heading elements for consistency and improve styling across components

* refactor: reorganize Konami Code Easter Egg implementation and enhance fireworks animation

* refactor: remove unused collection store and related components for cleaner codebase

* Update package.json

* Update AddonCard.tsx

* fix AddFeaturedAddon path

* Refactor: Improve Addon Description Rendering & Component Exports (#366)

* refactor: add addon-markdown styles for improved markdown content presentation

* refactor: simplify AddonDetailsDescription component and improve markdown processing

* refactor: change component exports to default for AddonStats, ModPageLinks, and VersionBadges

* refactor: remove unused ChevronDown icon import from VersionsTabContent component

* refactor: convert named exports to default exports for addon details components

* refactor: update background color for TabsList component

* refactor: convert named imports to default imports for AddonDetails components

* oops!

* Refactors UI elements for improved aesthetics

Updates the color scheme and styling of various UI components
to enhance the overall visual appeal and user experience.

- Modifies the LoadingOverlay text color for better readability.
- Adjusts schematic card download button to use navigate instead of link.
- Modifies CSS variables for a cleaner, more consistent look.

* fix(CategorySelectors): Categories can now be selected (#367)

Thanks for contributing!

* design(cogScroll): Cog spins faster when scrolling (#369)

* design(cogScroll): Cog spins faster when scrolling

* design(cogScroll): Now also on other pages

* refactor: replace MultiImageViewer with Gallery component across multiple files

* refactor(Lightbox): replace Carousel with Gallery component for improved image display

* feat(Gallery): add showNavigation prop and improve Carousel item styling

* feat(Carousel): update CarouselPrevious and CarouselNext to use semi-ghost button variant

* fix(Gallery): correct CarouselNext closing tag and simplify Lightbox props

* refactor: update CSS variable syntax for consistency

* feat(Gallery, Lightbox): add initialIndex prop for better carousel synchronization

* feat: add useListPageFilters hook for shared search functionality

- Create reusable hook for common list page search patterns
- Provides consistent search state management across components
- Includes callback support for filter change notifications
- Foundation for standardized mobile list page UI

* feat: create MobileSearchFilterDrawer component

- Add dedicated mobile search and filter drawer component
- Implements sticky search bar at bottom with upward-expanding filters
- Uses custom positioning instead of problematic drawer overlays
- Includes dynamic height based on content (no fixed viewport heights)
- Provides visual indicators for active filters
- Supports click-outside-to-close functionality
- Eliminates navigation blocking issues with proper z-index management

* feat: refactor ListPageLayout to unified mobile/desktop component

- Replace separate ListPageFilters/ListPageContent components with unified layout
- Integrate MobileSearchFilterDrawer for consistent mobile experience
- Add comprehensive props API for search, filters, and header content
- Provide desktop sidebar filters alongside mobile drawer
- Support active filter state visualization
- Eliminate need for manual mobile filter implementation per page
- Maintain backward compatibility while enabling new standardized pattern

* refactor: migrate all list pages to unified mobile UI pattern

- Refactor Blog, Addons, and Schematics pages to use new ListPageLayout
- Eliminate 200+ lines of duplicated mobile filter boilerplate across pages
- Integrate useListPageFilters hook for consistent search functionality
- Maintain all existing filter capabilities while reducing code complexity
- Achieve 40% average code reduction per page while adding mobile functionality

Blog.tsx: Simplified to search-only pattern, removed manual filter layout
AddonList.tsx: Integrated with useListPageFilters, removed mobile drawer code
SchematicsList.tsx: Preserved complex filter logic, moved upload to header

* fix: correct blog page import path in routes

- Update import from BlogDetails to Blog to match refactored component
- Ensures proper routing to the unified blog list page

* refactor: remove unused effect for closing filters in MobileSearchFilterDrawer

* feat: consolidate Terms and Privacy into unified Legal page

- Create new unified Legal page with tab navigation
- Extract Terms and Privacy content into reusable components
- Add redirects from /terms and /privacy for backward compatibility
- Update routing to support new legal page structure

* feat: add 'legal' translation key across all locales

- Add 'legal' navigation item to all 13 supported languages
- Supports new unified legal page navigation

* feat: implement compact two-tier footer design

- Redesign footer with improved space utilization
- Add GitHub and bug report links with icons
- Enhance visual hierarchy and mobile responsiveness

* feat: upgrade LanguageSwitcher to popover-based design

- Replace dropdown with modern Command+Popover pattern
- Add search functionality for better UX
- Improve accessibility and visual consistency

* refactor: minor component positioning and layout improvements

- Adjust cogwheel positioning
- Fine-tune header and layout spacing
- Small UX enhancements

* feat(SocialSharing): add EnhancedSocialSharing and SocialSharingDialog components with examples

* feat(SocialSharing): replace EnhancedSocialSharing with SocialSharing in dialog and update sharing functionality

* feat: add BlueprintCard component with responsive design and grid overlay

* refactor(SocialSharing): remove SocialSharingDialogExamples component

* Update ListPageLayout.tsx

* Update src/components/ui/blueprint-card.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: enhance environment configuration with APP_BASE_URL and APP_PORT variables

* fix(navigate): Fix navigation links in footer (#381)

Navigation links in footer led to relative paths (most of the time, not 100%, weird), now absolute.

Co-authored-by: Yehor <111529536+yehorscode@users.noreply.github.com>

* Yehors test revamp (#382)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Yehors test revamp (#383)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Yehors test revamp (#384)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revamp made by yehor (#385)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

* updates

* Made the authors display correctly on the addon cards

* updated the schematics to make them work and added debug modes

* updates

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Yehors test revamp (#386)

* test revamp

* fix every freaking db usage

* Fixes were made and now the site works properly with new Meilisearch and with some new appwrite changes

* Fix lint

* Update src/components/features/admin/addons/AutoAddFeaturedAddon.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix ts

* updates

* Made the authors display correctly on the addon cards

* updated the schematics to make them work and added debug modes

* updates

* updates to ui

* redeploy test

* fixed errors

* add headers for cloduflare

* e

* r

* add headers

* fix npm errors

* fix npm v2

* trigger redeploy

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Improve type safety and array handling for addons and blog operations

This commit standardizes array handling across addons and blogs (e.g., `minecraft_versions`, `categories`, `authors`) to support both single and multiple values. It introduces type refinements for addons and blogs, improves mutation logic by excluding unnecessary fields (e.g., `$id`, `$permissions`), and adjusts components and utilities for better type safety and consistency. Additionally, redundant types and comments are cleaned up.

* Exclude unused metadata fields in API mutation operations

This commit consistently removes unnecessary fields (e.g., `$id`, `$permissions`) across blog, addon, and schematic mutation functions. Improves code readability by streamlining deserialization logic and annotation.

* Add new `build:ci` script and adjust `build` for increased memory allocation

This commit introduces a `build:ci` script with a reduced memory limit for CI environments and updates the `build` script to allocate more memory for local builds, improving compatibility and preventing potential memory-related build issues.

* Add `_headers` file and prebuild assets for deployment

This commit adds a `_headers` file to the dist folder to define custom headers for specific files. Prebuilt assets are generated to support deployment requirements.

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* this commit add to much features

* feat: Implement in-app feedback widget with admin dashboard (#376)

* feat: implement feedback feature with submission, admin management, and UI components

* Update src/hooks/useFeedback.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/api/appwrite/useFeedback.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Yehor <111529536+yehorscode@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Yehor <omelianenkoegor@gmail.com>

* Refactor and organize project files; add new components for blog editing and user management + total refactor of the admin panel

* Refactor and organize project files; add new components for blog editing and user management + total refactor of the admin panel

* Enhance performance by optimizing hit tracking and preventing duplicate addon entries; refactor scrolling behavior for smoother animations

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Optimize hit tracking by creating stable identifiers to prevent unnecessary re-renders; refactor data fetching logic to avoid duplicates

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* Add configuration files for local environment setup and update build scripts

* Add user badge schema and update storage bucket constants; enhance deployment scripts

* feat: Enhance Schematic Upload and Editor with new features and improvements

* Made a quick fix to the review mode and Made the wording better (#390)

* Made a quick fix to the review mode and Made the wording better

* cleanup left out debug points

* Rewrite of the site (#391)

* Started doing a rewrite

* Add more fixes

* Pain setting up routers from the last version of the site...

* Added basic navbar and routing

* Add old function commands (not modifying them)

* Delete un-needed tar.gz files

* Nothing much

* Added a theme switcher

* Added a placeholder /addons page

* Add types and remove unsafe env

* Added the first test of fetching addons

* Added basic addon list stuff

* Delete any curseforge_raw and modrinth_raw usage

* Add new readme and disclosement of contribution

* Add addon update hook & Added basic login (doesnt save the session yet)

* Add huge new functionality that is too long to describe

* api will be moved to separate repo

* Tweak site and add vercel.json

* Update readme

* Remove about icon

* add discord link (#392)

* Feature/betteradmin (#393)

* add discord link

* Refactor authentication handling and improve admin access management

* Made addons clickable in admin (#394)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* Expanded addon view & fixes to admin page (#395)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Update src/pages/Home/Home.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove broken py-

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix redundant Error | any type annotations in AuthManagerPage (#396)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Initial plan

* Fix redundant Error | any type annotations

Co-authored-by: yehorscode <111529536+yehorscode@users.noreply.github.com>

---------

Co-authored-by: Yehor <omelianenkoegor@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yehorscode <111529536+yehorscode@users.noreply.github.com>

* Feature/expanded addon view (#397)

* add discord link

* Refactor authentication handling and improve admin access management

* made the reviewing addons clickable and the theme switch show on load

* add readme

* IMPORTANT fix admin addons

* Update src/pages/Home/Home.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove broken py-

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add basic expanded addons framework

* Added basic formatting! [ported from v2]

* e

* Add slugs to search

* Add Vercel analytics

* Fix insights

* Add meta keywords

* Fix images being too large

* Add prototype tabs for expanded addons

* help

* note

* Update src/components/ui/pagination.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix cardheader

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Test commit (#398)

* Tried to switch everything to surface tags. The theme is yet to be fixed (#399)

* Tried to switch everything to surface tags. The theme is yet to be fixed

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: spencerfrost <s.s.frost@gmail.com>
Co-authored-by: Spencer Frost <34923439+spencerfrost@users.noreply.github.com>
Co-authored-by: Timiliris_420 <timothydetournay@gmail.com>
Co-authored-by: Timiliris_420 <103514954+timiliris@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: ElectricSteve <96793824+electricsteve@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings January 23, 2026 06:30
@vercel

vercel Bot commented Jan 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
blueprint-create Ready Ready Preview, Comment Jan 23, 2026 6:30am

@yehorscode yehorscode merged commit 1e04cc8 into develop Jan 23, 2026
7 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR represents a major rewrite of the Blueprint project from a static HTML/CSS/JS site to a modern React + TypeScript application using Vite, TailwindCSS, and Appwrite for the backend.

Changes:

  • Complete migration from static HTML pages to React SPA
  • Introduction of TypeScript for type safety
  • New authentication system with Appwrite integration
  • Modern UI component library (shadcn/ui)

Reviewed changes

Copilot reviewed 112 out of 209 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
package.json Defines project dependencies and scripts with critical version error
src/lib/appwrite.ts Configures Appwrite client without proper validation
src/types/addons.ts Zod schemas with incompatible API calls
src/utils/useAuth.tsx Authentication utilities with logic errors
src/pages/Auth/Login/LoginPage.tsx Login page missing input validation
vite.config.ts Vite configuration for build process
tsconfig.*.json TypeScript configuration files
src/routes/index.tsx Application routing setup
Multiple UI components Modern React components using shadcn/ui

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/lib/appwrite.ts
Comment on lines +3 to +8
const endpoint = import.meta.env.VITE_APPWRITE_ENDPOINT;
const projectId = import.meta.env.VITE_APPWRITE_PROJECT_ID;

const client = new Client()
.setEndpoint(endpoint)
.setProject(projectId);

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The appwrite endpoint and project ID are not validated before use. If these environment variables are undefined or empty, the Appwrite client will be initialized with invalid values, causing all API calls to fail silently or with unclear errors. Add validation to check these values are defined and throw meaningful errors if missing.

Copilot uses AI. Check for mistakes.
Comment thread src/utils/useAuth.tsx
Comment on lines +92 to +99
const session = await account.getSession({ sessionId: 'current' });

if (!session) {
cache.isAuthenticated = false;
cache.timestamp = Date.now();
if (requiredRole) cache.hasRequiredRole[requiredRole] = false;
return { isAuthenticated: false, hasRequiredRole: false, user: null };
}

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The getSession API call does not handle the case where the session doesn't exist gracefully. It will throw an error that gets caught, but returning null in line 94 after checking !session on line 94 is unreachable because if session doesn't exist, an exception will be thrown. The error handling logic should be restructured to properly handle missing sessions versus actual errors.

Copilot uses AI. Check for mistakes.
Comment thread src/types/addons.ts

export const Addon = z.object({
$id: z.string(),
name: z.string().max(150).nonempty(),

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The .nonempty() method does not exist in zod v3.x (the valid version). It has been replaced with .min(1) for strings and arrays. This will cause runtime errors. Replace all .nonempty() calls with .min(1) throughout this file.

Copilot uses AI. Check for mistakes.
Comment thread src/types/addons.ts
downloads: z.number().default(0),
loaders: z.array(z.string()).max(64),
create_versions: z.array(z.string()).max(32).optional().nullable(),
minecraft_versions: z.array(z.string()).nonempty().max(32),

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The .nonempty() method does not exist in zod v3.x. Replace with .min(1) for arrays.

Copilot uses AI. Check for mistakes.
Comment thread src/types/addons.ts
$id: z.string(),
slug: z.string().max(100),
addon_id: z.string(),
title: z.string().max(150).nonempty(),

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The .nonempty() method does not exist in zod v3.x. Replace with .min(1) for strings.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +38
async function handleLogin() {
setIsLoading(true);

const loginPromise = account.createEmailPasswordSession({
email: username,
password: password,
});
const delayPromise = new Promise((resolve) => setTimeout(resolve, 2000));

try {
const [result] = await Promise.all([loginPromise, delayPromise]);

if (result.$id) {
toast.success('Login successful!');
window.location.href = '/';
} else {
toast.error('Login failed. Please check your credentials and try again.');
}
} catch (error) {
toast.error('Login failed. Please check your credentials and try again.');
console.error('Login error:', error);
}

setIsLoading(false);
}

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The login form has no client-side validation. Users can submit empty credentials which will cause an API error. Add validation to check that username and password are not empty before calling handleLogin().

Copilot uses AI. Check for mistakes.
Comment thread src/types/addons.ts
updated_at: z.string().nullable(), // is an appwrite date
isValid: z.boolean(),
isChecked: z.boolean(),
sources: z.array(z.string()).nonempty().max(20),

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The .nonempty() method does not exist in zod v3.x. Replace with .min(1) for arrays.

Copilot uses AI. Check for mistakes.
Comment thread src/types/addons.ts
loaders: z.array(z.string()).max(64),
create_versions: z.array(z.string()).max(32).optional().nullable(),
minecraft_versions: z.array(z.string()).nonempty().max(32),
authors: z.array(z.string()).nonempty().max(100),

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

The .nonempty() method does not exist in zod v3.x. Replace with .min(1) for arrays.

Copilot uses AI. Check for mistakes.
Comment thread .dependency-cruiser.cjs
comment:
'This module depends on an npm package that is declared as an optional dependency ' +
"in your package.json. As this makes sense in limited situations only, it's flagged here. " +
"If you're using an optional dependency here by design - add an exception to your" +

Copilot AI Jan 23, 2026

Copy link

Choose a reason for hiding this comment

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

This string appears to be missing a space after 'your'.

Suggested change
"If you're using an optional dependency here by design - add an exception to your" +
"If you're using an optional dependency here by design - add an exception to your " +

Copilot uses AI. Check for mistakes.
yehorscode added a commit that referenced this pull request Jan 23, 2026
This reverts commit 1e04cc8.
@yehorscode yehorscode mentioned this pull request Jan 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants