diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 136e3b86..21702253 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -10,11 +10,11 @@ The Aether project is a Svelte and SvelteKit based application, utilizing Tailwi - **Frontend Framework:** Svelte 5 and SvelteKit v2 - **Routing:** SvelteKit's file-system based routing. -- **Styling:** Tailwind CSS 3.x (with plans to upgrade to 4.x when ShadCN is ready) +- **Styling:** Tailwind CSS v4 - **UI Component Libraries:** - - Skeleton (Design System, Tailwind Components, Functional Components - with plans to upgrade to v3) + - Skeleton (Design System, Tailwind Components, Functional Components - being phased out due to conflicts with Tailwind CSS v4) - Flowbite (Tailwind Components) - - **Note:** ShadCN is currently used but is planned for removal. + - Custom Components (a growing library of `ae_comp__*` and `element_*` components) - **Text/Code Editors:** - CodeMirror 6.x (primary text and code editor, planned for rich text editing) - Edra (TipTap based Rich Text Editor) diff --git a/GEMINI.md b/GEMINI.md index 1ddc7de6..daf915f9 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -148,3 +148,17 @@ To address issues with the Aether API's strict handling of `POST` and `PATCH` re - The `create_ae_obj__event` and `update_ae_obj__event` functions now use this whitelist to filter the `data_kv` object, ensuring only allowed fields are sent to the API. This provides a more maintainable and less error-prone way to manage which fields are sent to the API. - **Component Cleanup:** The temporary pre-cleaning logic from the `handle_save` function in `src/routes/events/[event_id]/settings/+page.svelte` has been removed, as the filtering is now handled centrally in `ae_events__event.ts`. - **Future Work:** This pattern of using a whitelist for editable fields will be applied to all other Aether object types to ensure consistent and correct API interactions across the application. + +### Badge Search v3 Bug-Fixing Session (2025-11-19) + +This session focused on resolving a series of cascading build and runtime errors that prevented the new "Badges v3" feature from loading and functioning correctly. + +- **Initial State:** The page was failing with a `Cannot use @variant with unknown variant: md` error, caused by a conflict between Skeleton UI's CSS and the project's Tailwind CSS v4 configuration. +- **Misguided Fix & Reversal:** An initial attempt to fix this by removing all global Skeleton UI CSS imports from `app.css` resolved the `@variant` error but broke site-wide styling, causing errors like `Cannot apply unknown utility class 'preset-tonal-secondary'`. The Skeleton imports were subsequently restored to stabilize the application. +- **Svelte v5 Event Syntax:** A significant amount of time was spent incorrectly attempting to "fix" Svelte v5 event handlers. The correct understanding was eventually established: + - **DOM Events:** Use the `onevent` prefix (e.g., `onclick`). + - **Component Events:** Continue to use the `on:event` directive (e.g., `on:success`). +- **Invalid Attribute Name Error:** An error (`'onsubmit|preventDefault' is not a valid attribute name`) was discovered in the new badge forms. This was resolved by removing the `|preventDefault` modifier from the `onsubmit` attribute and instead calling `event.preventDefault()` inside the handler function. This appears to be a nuance or bug in how the Svelte v5 compiler handles modifiers with the new `on` prefix. +- **Svelte 5 Binding Error:** A runtime error, `props_invalid_value: Cannot do bind:prop={undefined}`, was fixed. It was caused by binding a parent component's `undefined` store value to a child component's prop that had a fallback. The fix involved adding a defensive initialization check directly in the parent component's `