- Introduced a new optional callback for editor readiness in the markdown editor configuration, allowing for better integration with the component lifecycle.
- Implemented a fallback timer to manage the editor's readiness state, ensuring it reflects visibility accurately.
- Enhanced the component to check for the editor's visibility before marking it as ready, improving user experience during initialization.
These changes enhance the responsiveness and reliability of the markdown editor, providing clearer feedback on its loading state.
- Introduced a loading overlay that displays while the markdown editor is being initialized, enhancing user experience during the loading phase.
- Added a reactive property to manage the editor's readiness state, ensuring the UI reflects the editor's status accurately.
- Updated the component structure to accommodate the new loading state, improving visual feedback for users.
These changes improve the usability of the markdown editor by providing clear indications of its loading status.
- Added components for tag input and display, allowing users to create and manage tags for posts.
- Implemented backend support for tag persistence and filtering in post lists, enabling OR/AND logic for tag-based queries.
- Updated various pages and components to integrate tag functionality, including post creation, editing, and display in lists.
- Enhanced database schema to support tags and their relationships with posts.
These changes provide a comprehensive tagging system that improves content organization and discoverability across the application.
- Updated the media upload process to store files in the new `static/media` directory instead of `public/upload`.
- Adjusted related components and tests to reflect the new media URL structure, ensuring all references to media assets are consistent with the new path.
- Enhanced the environment configuration to support dynamic directory settings for media uploads and static assets.
- Improved documentation to outline the changes in media asset management and URL handling.
These changes streamline media management and improve the organization of static assets within the project.
- Updated the Vditor configuration to support real-time rendering and improved upload handling with error management.
- Introduced a new post preview draft feature, allowing users to preview posts in a new window before publishing.
- Enhanced the user interface for mobile responsiveness and added utility functions for managing post preview drafts.
These changes improve the markdown editing experience and streamline the post creation workflow.
Replace md-editor-v3 in the post markdown editor with Vditor, preserving v-model and upload flow while adding responsive desktop/mobile configuration and stability tests for init, sync, and viewport remount behavior.
Made-with: Cursor
- Introduced a new configuration option `showDiscoverInHeaderForGuest` to control the visibility of the "Discover" navigation link for guests.
- Updated the AppShell component to conditionally render the "Discover" link based on the user's login status and the new config option.
- Modified global configuration handling to include the new option, ensuring it is fetched and saved correctly.
- Enhanced middleware to allow guest access to the "Discover" route if the new config option is enabled.
These changes improve the user experience by providing guests with access to discover content while maintaining control over navigation visibility.
Add ReaderLayout and ShowcaseLayout components to enhance the public profile page, allowing for modular display of posts, timeline, and reading sections. This change establishes a unified navigation hub, improving user experience with structured content previews and consistent API handling.
Made-with: Cursor
Unify public profile aggregation and route canonical handling so the home page acts as a navigation hub with consistent public-only counts, safer external links, and backward-compatible API fields.
Made-with: Cursor
- Added commented-out styles for code blocks to enhance presentation and usability.
- Updated markdown configuration to disable HTML rendering for improved security.
- Introduced a function to handle path not found errors in the error logger for better error management.
These changes prepare the codebase for future enhancements in markdown rendering and error handling.
- Added `ensureClientMeSynced` function to synchronize client session with server, improving user experience by reducing unnecessary API calls.
- Updated `AppShell`, `public.vue`, and other components to utilize the new synchronization method instead of the previous refresh mechanism.
- Introduced a new API endpoint for session handling, ensuring consistent user state across client and server.
- Refactored `useAuthSession` to manage client session state more effectively, enhancing overall authentication flow.
This update streamlines the authentication process and enhances the reliability of user session management.
- Introduced `GuestHomeSection` and `LoggedInHomeSection` components to provide tailored content for guests and logged-in users.
- Added a quick create button for logged-in users to facilitate easy post creation.
- Updated the AppShell component to include computed properties for visibility of the quick create button based on user login status.
- Refactored the main index page to utilize the new components, improving the overall layout and user engagement.
- Implemented a new utility function for normalizing post slugs to ensure consistent URL formatting.
This update significantly enhances the homepage experience for both guests and registered users, promoting user interaction and content creation.
Expose login-state comment notify warnings in comment composer and show incomplete SMTP config status in admin settings to prevent misleading mail-send expectations.
Made-with: Cursor
Add guest email validation with anonymous-mode exceptions and persist guestEmail/guestIsAnonymous in comment creation. Update comment form to collect anonymous and email fields for guests and reset them after successful submit.
Made-with: Cursor
- Added ImageCropModal component for cropping images before upload.
- Updated profile page to handle image cropping for avatar and header icon.
- Included vue-advanced-cropper as a dependency in package.json and bun.lock.
Made-with: Cursor
- Changed DATABASE_URL in .env.example to use SQLite file.
- Modified refresh function calls in AppShell.vue and public.vue to remove unnecessary parameter.
- Enhanced run.sh to include seeding script execution.
- Improved seed.js to ensure proper SQLite file path resolution and directory creation.
- Introduced db-bun.ts for Bun compatibility with SQLite.
- Updated db.ts to handle better-sqlite3 integration and path management.
- Adjusted paths.ts to ensure reliable package root resolution for production.
- Added site name configuration to global settings.
- Improved public home layout with dynamic header and navigation.
- Introduced detailed view for posts and timeline with visibility controls.
- Implemented admin interface for site configuration management.
- Enhanced user experience with responsive design adjustments and improved loading states.
Introduce a new error handling component to display user-friendly error messages based on HTTP status codes. Implement global configuration management to control registration availability across the application. Update various components and pages to utilize the new configuration, ensuring consistent behavior for registration links and error handling. Enhance middleware to bypass authentication for specific paths and improve overall user experience.
Introduce a new AppShell component to encapsulate the main application layout, including header, footer, and menu items. Refactor existing layouts (default and not-login) to utilize the new AppShell component, enhancing code reusability and maintainability. Update the blank layout for a simplified structure. Modify index, login, and register pages for consistent styling and improved user experience.