Commit Graph

1194 Commits (9c959f641227018bf4875540f90557419923a6aa)

Author SHA1 Message Date
Joca 9c959f6412
Revert "Chat: Add markdown preview toggle with client-side rendering and user preference"
This reverts commit ffe9f30c0a.
2026-01-15 23:33:03 -03:00
Joca ffe9f30c0a
Chat: Add markdown preview toggle with client-side rendering and user preference
- Add renderMarkdownPreview() function to app.js matching server-side Go implementation
- Support headers (#, ##, ###), bold (**text**), italic (*text*), code (`code`), code blocks (```lang), lists (* item), and @mentions
- Add Edit/Preview tab UI above chat textarea with active tab highlighting
- Preview updates in real-time with 300ms debounce while typing
- Respect user's markdown_preview_default preference from settings (edit or preview)
- Pass user preferences to chat template via ChatHandler
- Add markdown tab and preview container styles matching beige/blue/pink theme
- Preview shows formatted HTML identical to actual chat messages
- Support dark mode with appropriate color adjustments for tabs and preview
- Tabs use cyan accent for active state, orange for inactive hover

User can switch between editing markdown and seeing live preview of formatted output.
2026-01-15 23:26:37 -03:00
Joca e76049a353
Chat: Add draft auto-save to localStorage with restore and discard options
- Add draft management functions to app.js (saveDraft, loadDraft, clearDraft, getDraftTimestamp)
- Implement draft auto-save in chat that saves every 2 seconds after typing stops
- Show draft restoration banner on page load if draft exists and is less than 7 days old
- Display draft age with "X minutes/hours/days ago" format
- Add Restore and Discard buttons to draft indicator
- Clear draft automatically after successfully sending a message
- Add draft indicator styles matching beige/blue/pink theme with cyan restore button
- Support dark mode with appropriate color adjustments
- Draft indicator slides in from top with smooth animation

Draft key format: draft_chat_{boardId} for per-board draft storage.
2026-01-15 23:23:12 -03:00
Joca 309e516480
Preferences: Add user preferences system with database table and settings page
- Add user_preferences table to store per-user settings (auto_save_drafts, markdown_preview_default)
- Create UserPreferences model with GetUserPreferences, CreateDefaultPreferences, and UpdateUserPreferences functions
- Add PreferencesHandler for GET/POST requests to display and save user preferences
- Create preferences.html template with checkbox for draft auto-save and radio buttons for markdown preview default
- Add "Preferences" link to navbar for logged-in users
- Register /preferences/ route with login requirement

This establishes the foundation for advanced features like draft auto-save and markdown preview toggle, allowing users to customize their experience.
2026-01-15 23:21:03 -03:00
Joca 83113a563a
Chat: Fix message duplication by removing optimistic UI for sent messages
- Remove optimistic message rendering that was causing duplicates
- Messages now only appear after server broadcast confirmation
- Simplify appendMessage() to check for existing message IDs and prevent duplicates
- Remove message delivery status indicators (sending/sent/failed)
- Add user alert when attempting to send while disconnected

This fixes the issue where messages appeared twice - once as an optimistic
temporary message and again when the server broadcast was received.
2026-01-15 23:05:00 -03:00
Joca 935446280f
Chat: Add real-time connection status, typing indicators, smart scrolling, and message delivery status
Features added:
- Connection status indicator (green=connected, yellow=connecting, red=disconnected)
- Exponential backoff reconnection (1s → 2s → 4s → ... → 30s max)
- Typing indicators showing who is typing (up to 3 users, with overflow count)
- Message status (⋯ sending, ✓ sent, ✗ failed with retry option)
- Jump-to-bottom button with unread message count badge
- Smart scroll preservation (stays in place unless already at bottom)
- Optimistic UI for sent messages (appears immediately, updates with real status)
- Backend support for broadcasting typing events to other users
2026-01-15 23:00:31 -03:00
Joca d36d0d46fd
UI: Add breadcrumb navigation to chat page
- Breadcrumb bar above chat header (Home › Boards › Chat Name)
- Styled to match chat container with themed colors
- Includes dark mode support
2026-01-15 22:50:58 -03:00
Joca f7b8055062
UI: Add navigation improvements with breadcrumbs, back buttons, scroll-to-top, and keyboard shortcuts
- Breadcrumb navigation on board and thread pages (Home › Boards › Board › Thread)
- Back buttons to return to parent page (with arrow icon and hover effects)
- Scroll-to-top button appears after scrolling 300px (smooth animation)
- Keyboard shortcuts: Ctrl+Enter submits forms from textarea, Esc clears focus and closes notifications
- Optimistic UI for like/dislike buttons (immediate visual feedback with checkmark)
- Updated thread handler to pass board data for breadcrumb context
2026-01-15 22:49:54 -03:00
Joca 00185e6774
UI: Fix word wrapping for long text content
- Add word-wrap and overflow-wrap to all content areas
- Prevents horizontal overflow on long words/URLs
- Fixes layout breaking with continuous text (e.g., 'owohhh...')
- Applied to post content, chat messages, lists, and paragraphs
2026-01-15 22:44:49 -03:00
Joca 69a62f0ad5
Handlers: Add password confirmation validation to signup
- Server-side validation for password confirmation field
- Display error message if passwords don't match
- Complements client-side validation added in previous commit
2026-01-15 22:39:58 -03:00
Joca ca4268dfec
UI: Add Phase 1 QOL improvements
- Add loading spinners and disabled states for form submissions
- Implement client-side form validation with inline error messages
- Add Enter-to-submit functionality for single-line forms
- Implement relative timestamps (e.g., '2 hours ago')
- Add character counters for textareas
- Auto-resize textareas as users type
- Add toast notifications for success/error messages
- Improve form accessibility with autocomplete and max lengths
- Add password confirmation field to signup form
- Better error styling throughout the application
2026-01-15 22:39:30 -03:00
Joca b11b4fd0a6
Quick .gitignore update so this shit does not bother me anymore 2026-01-15 22:34:58 -03:00
Joca ef06bf160a
All: Enhance session management and security features
Using proper auth + security on login.
2025-12-21 21:26:02 -03:00
Joca 876ac33d1b
using bcrypt 2025-12-07 21:30:23 -03:00
Joca 7b934e00a6
Chat: Add Markdown support
Using RegEx because It's easier.
We will change to another solution if this proves to be a problem.
2025-09-05 22:09:17 -03:00
Joca 30f7cc7b82
Misc: Add DOCUMENTATION.md
Provides a complete overview of the project in a technical level. Should
be useful.
2025-09-04 19:01:21 -03:00
Joca adac250d86
Threads: Fix css of threads 2025-08-29 22:41:05 -03:00
Joca e18d7ba193
Chat: Highlight a message if the current user is mentioned 2025-08-29 14:48:38 -03:00
Joca 3a82e2a0d1
All: Migrate boards from global to board specific
Massive commit. Rewrites some of the chat logic to work individually
rather than a global chat.
2025-08-22 00:07:13 -03:00
Joca 5370611265
Board: Fix mismatch between schema and query 2025-08-21 23:42:03 -03:00
Joca b1db26af16
Chat: Highlight user mentions even after page reload 2025-08-09 21:05:01 -03:00
Joca d3db9723ec
chat: polish mention system
We now have a proper autocomplete. Next on the list is moving the chat page into it's proper place and add pop-ups for profiles.
2025-08-03 19:21:06 -03:00
Joca d2d64d69fc
handlers/app.go: Removed Strict IP and User-Agent Session Validation
So, turns out validating stuff with these parameters is not a good idea at all. FML honestly.
2025-06-29 21:24:28 -03:00
Joca 7b0528ef36
feat: Add file-based avatar system
- A new `files` table to store metadata about uploaded files, including original name and hash.
- The `users` table is updated to reference a `pfp_file_id` from the new `files` table, removing the insecure `pfp_url` field.
- A new `/file` endpoint and handler (`handlers/file.go`) are created to serve files securely based on their ID, preventing direct file system access.
- Profile editing (`handlers/profile_edit.go` and `templates/pages/profile_edit.html`) is updated to handle file uploads instead of URL inputs.
- The chat feature (`models/chat.go` and `templates/pages/chat.html`) is updated to work with the new file ID system, ensuring avatars are displayed correctly.
Should also fix #68.
2025-06-21 16:21:21 -03:00
Joca bdf81e7c68 Ask admin credentials on initialize instead of defining them on config.json 2025-06-15 02:48:43 +02:00
Joca c10535492b The initialize function now fails if any board already exists. 2025-06-15 02:48:43 +02:00
BodgeMaster e7567d0f08 README: rip out all the leftovers that are no longer relevant to the new implementation 2025-06-15 02:47:16 +02:00
BodgeMaster 8b95ec3e38 gitignore: add gitignore 2025-06-15 02:47:16 +02:00
BodgeMaster 869d974f71 config: rename files to better hint at what they’re used for 2025-06-15 02:47:16 +02:00
BodgeMaster 0bee74ab5b about page: move all page content into config/about.template, also rewrite most of said content 2025-06-15 02:47:16 +02:00
Joca cb9022d8bd Fixing that reply interface. 2025-06-15 02:47:16 +02:00
Joca 3b56c7e831 Initial implementation of the chat feature. 2025-06-15 02:47:16 +02:00
Joca e6f097d35c Add cli flag for initializing tables instead of creating them at startup 2025-06-15 02:44:03 +02:00
Joca b1c3f80afb Implemented features for creating and deleting boards and threads, removed thread types, enhanced CSS for boards and comments 2025-06-15 02:44:03 +02:00
Joca 4eb97f27d8 Create admin user, admin can edit news blotter 2025-06-15 02:41:36 +02:00
Joca 6b6ca1d85d Fix cookie banner 2025-06-15 02:41:19 +02:00
Joca 92fd9948eb Add config skeleton 2025-06-15 02:41:03 +02:00
Joca de1f442082 Refactor signup and login handlers, add auto table creation 2025-06-15 02:40:40 +02:00
Joca ba5ed6c182 Rewrite README.md 2025-06-15 02:39:56 +02:00
Joca 484f435ff2 Fix up user register 2025-06-15 02:39:35 +02:00
Joca eee9540bdc Initial Commit 2025-06-15 02:37:02 +02:00
BodgeMaster af91df4986 everything: Delete everything, full project reset. Keep a copy of variable_grabbler in case we ever need it. 2025-06-15 02:25:56 +02:00
BodgeMaster 8cc33a9727 deployment script: Remove READMEs from copied tree, add placeholder back 2023-01-07 01:07:35 +01:00
BodgeMaster b193cd00bc Stop removing READMEs when building
IIRC, this has been unnecessary since the project switched over to using the build directory

Also got rid of the useless README in /build so it doesn’t appear in the built page
2023-01-07 00:59:21 +01:00
BodgeMaster 3bc870bbe0 Mark executable 2023-01-07 00:55:46 +01:00
BodgeMaster b9aa1baf9c Exclude build directory 2023-01-07 00:50:50 +01:00
BodgeMaster a13d3e1242 Make README more readable on a terminal (also fix it up in some places) 2023-01-07 00:46:41 +01:00
BodgeMaster 98596e5695 fixed #31 2021-10-30 19:19:44 +02:00
BodgeMaster 4052787790 added entries for individual files 2021-10-29 06:57:31 +02:00
BodgeMaster e1cac20414 forgot to escape things 2021-10-29 05:27:12 +02:00