Commit Graph
26 Commits
Author SHA1 Message Date
retoor 262f5e0461 feat: add twinkling star background with CSS animation and JS generation
Add a new sandbox.css stylesheet defining absolute-positioned star elements with a twinkle keyframe animation, and a sandbox.html template that generates 200 randomized stars (position, size, animation duration/delay) via JavaScript. Include both files in app.html via link and include directive.
2025-05-17 15:46:59 +00:00
retoor 7f0aea4afd feat: replace inline chat-input with custom element and migrate autocomplete logic
Refactor the chat input area in web.html to use the new ChatInputElement custom component instead of inline HTML. Move autocomplete handler from a function-based getInputField() to directly attaching to the chat-input element's autoCompletions property. Remove the legacy initInputField function and its associated keydown/input event listeners, consolidating all input behavior into the component. Add the chat-input.js module script to app.html to ensure the custom element is registered globally.
2025-05-16 22:54:15 +00:00
retoor 10b0c3448a feat: add MessageList and UserList web components with load balancer and sync module
Implement MessageList custom element with real-time message text updates and typing glow animation, add UserList component with relative time formatting, introduce LoadBalancer class for backend process management, create DatasetWebSocketView for key-value sync over WebSocket, override save method in ChannelMessageService to render HTML templates, and return channel_message object from ChatService instead of boolean.
2025-05-15 11:18:53 +00:00
retoor 82f1259cfc feat: add DriveApiView and HTML drive page, extract shared repository form template, and update file-manager styling 2025-05-10 13:03:50 +00:00
retoor 7fbb06fdbf feat: add repository browsing routes, drive availability flag, and user lookup service
- Register RepositoryView and DriveView routes for repository and drive browsing
- Add `is_available` boolean field to DriveItemModel with default True
- Implement `get_by_username` method in UserService for username-based queries
- Comment out repository deletion logic in GitApplication
- Include file-manager.js script and Font Awesome CDN stylesheet in app template
- Fix repository URL paths in settings template to use correct attribute access
- Refactor DriveView with full directory listing and file serving capabilities
- Pass user object to repositories index template for template rendering
2025-05-09 12:08:46 +00:00
retoor a1038ee72b feat: add auth middleware, user property model, and settings views with navigation link
Introduce an authentication middleware that attaches the user object to requests based on session data, register the UserPropertyMapper and UserPropertyModel in the service layer, replace the monolithic SettingsView with dedicated SettingsIndexView and SettingsProfileView, update the settings template to remove inline Monaco editor, delete the old sidebar_settings partial, and wire the settings gear icon in the app navigation to /settings/index.html.
2025-04-03 06:34:25 +00:00
retoor 86d54768a3 fix: set nav to full width and remove redundant float style in header
- Added `width:100%` to anchor element in base.css to ensure full-width layout
- Removed `float:right` from nav element in app.html to prevent layout overflow issues
2025-04-02 13:02:55 +00:00
retoor 976f0eeb68 feat: add request id to context and cache-bust static assets with rid query param 2025-04-02 12:55:18 +00:00
retoor f1f118963f feat: add Promise.withResolvers polyfill and load it in app and base templates
Create a new polyfill script at src/snek/static/polyfills/Promise.withResolvers.js that provides a fallback implementation of Promise.withResolvers for environments lacking native support. Include the polyfill as a module script in both app.html and base.html templates, ensuring it is loaded before app.js to guarantee availability at runtime.
2025-03-17 21:09:55 +00:00
BordedDev bf8ca3c69b feat: add Promise.withResolvers polyfill and include it in app and base templates
The polyfill provides a static method on Promise that returns an object with resolve and reject functions exposed, enabling external resolution of a promise. It is loaded as a module script in both app.html and base.html to ensure compatibility before app.js runs.
2025-03-17 21:05:46 +00:00
retoor ff34706546 feat: replace static logo with dynamic header text block in app layout
- Split header padding into individual properties (top, left, right) in base.css
- Reduce logo font size from 1.5em to 1.2em in base.css
- Hide static "Snek" logo div with inline display:none in app.html
- Add new logo div with block header_text template block in app.html
- Move chat header h2 from web.html into the new header_text block in app.html
2025-03-17 16:01:01 +00:00
retoor 33496b1134 feat: add umami analytics tracking script to all main templates
Inject the umami analytics script with website ID d127c3e4-dc70-4041-a1c8-bcc32c2492ea into app.html, base.html, and index.html templates for visitor tracking
2025-03-16 18:46:15 +00:00
BordedDev e12d3b7c5d feat: convert JavaScript classes to ES modules with export/import across app and templates
Convert all JavaScript classes in app.js and schedule.js from implicit globals to ES module exports, add import statements in template scripts for the app instance, and mark all script tags with type="module" to enable module scoping. Also fix a potential null reference in web.html by using optional chaining on lastMessage.scrollIntoView and hoist the lastMessage variable to outer scope for proper closure behavior.
2025-03-15 18:10:52 +00:00
retoor b95510c4ed feat: add ThreadsView route and model methods for channel members and last message retrieval 2025-03-07 19:59:11 +00:00
retoor 51bc07dddc fix: extract sidebar channels into partial template and fix DM channel uid reference 2025-02-22 00:21:44 +00:00
retoor 7f91e7925b feat: add database indexes, update CSS container styles, and enhance RPC query security
- Add unique index on username column in user table and composite indexes on channel_member and channel_message tables during app initialization
- Introduce .container CSS class with flex layout, padding, and nested styling for links and lists in base.css
- Change PWA manifest scope from /web.html to / to cover entire app
- Remove commented-out YouTube embed code from template.py and add .jpg to supported image extensions
- Rename "Chat Rooms" heading to "Channels" in app.html template
- Restructure search_user.html template with proper indentation and container class for form and results
- Strip sensitive fields (email, password, message, html) from RPC query results before returning them
2025-02-20 04:56:31 +00:00
retoor 24d2243afb feat: add manifest metadata fields and enable install prompt button in app template
- Extend manifest.json with id, orientation, scope, theme/background colors, related_applications, screenshots, dir, lang, launch_path, display_override, and short_name for full PWA compliance
- Move manifest link element to head section and add missing rel attribute
- Comment out push.js script tag to disable legacy push functionality
- Refactor beforeinstallprompt handler: remove preventDefault call, show install button immediately on event, and clean up nested DOMContentLoaded listener
2025-02-17 21:31:17 +00:00
retoor c9eb6fb129 feat: add channel list with DM user names and fix message scroll behavior
- Add get_other_dm_user method to ChannelMemberService to retrieve the other participant in a DM channel
- Update WebView to display DM partner's nickname instead of channel label in sidebar
- Change sidebar links to use channel uid and name from the new channel list structure
- Fix message offset query to silently handle errors instead of crashing
- Replace scroll-to-bottom with scrollIntoView on last message for smoother UX
- Increase initial layout update delay from 200ms to 1000ms for better timing
2025-02-13 19:21:34 +00:00
retoor 06107c2c92 feat: add dynamic channel list rendering and get_for_user service method
Implement `ChannelService.get_for_user` to fetch non-banned, non-deleted channels for a given user by iterating through channel memberships. Replace hardcoded sidebar links in `app.html` with Jinja2 template loop rendering channels from the context, enabling dynamic display of user-accessible chat rooms.
2025-02-13 18:47:05 +00:00
retoor 0272c2ab85 feat: add user color to message context and implement offset-based message pagination with extended dict
Add `color` field to message template context in ChannelMessageService. Implement `to_extended_dict` method to return full message data including user color and username. Add `offset` method for paginated message queries with descending order by creation time. Fix WebSocket event emission in app.js to use correct event name. Add `timeDescription` and `timeAgo` utility functions for client-side timestamp formatting. Enable scrollable chat messages container with overflow-y auto. Add CSS rules for message content block display and responsive image sizing. Fix scrollIntoView behavior to align to block end. Correct service worker registration path. Fix upload button to use local channelUid attribute. Strip trailing dots from link hrefs and exclude trailing dots from URL regex. Remove redundant script imports from app.html template. Uncomment message HTML template structure with proper time element. Replace chat-window element with server-rendered message list in web.html template. Refactor RPC get_messages to use new offset-based query with extended message dict.
2025-02-09 11:35:38 +00:00
retoor 11afd5ea40 fix: add no-select class to nav element in app.html template 2025-02-09 00:38:01 +00:00
retoor cb3c1b3497 feat: add no-select class to chat title and logo elements to prevent text selection 2025-02-09 00:34:02 +00:00
retoor 23e2a4fbe5 feat: add no-select CSS class and apply it to UI elements to prevent text selection
Add a reusable `.no-select` CSS class with cross-browser user-select: none properties
and apply it to navigation links, sidebar headings, chat room links, and avatar
elements in the message list to improve UI consistency and prevent accidental
text selection during interaction.
2025-02-09 00:31:34 +00:00
retoor ad8cc9d11a feat: add user search page with styled form, result list, and fancy-button submit
- Replace generic-form with custom form containing text input and fancy-button
- Add CSS for anchor links, chat-area list items, and text input styling
- Update search_user view to handle query parameter and render user results
- Register fancy-button and generic-form scripts in app.html template
- Modify fancy-button to support form submission via 'submit' url attribute
2025-02-08 20:54:46 +00:00
retoor 74247d562c feat: add search user page with push notification service worker support
Add SearchUserView with HTML and JSON endpoints, create search-user.html template extending app.html with navigation link, implement push.js for service worker registration and push subscription handling, add service-worker.js for push event display and notification click handling, and fix install prompt event listener registration in app.html
2025-02-08 16:31:03 +00:00
retoor 87f21b6a49 feat: add app.html template with chat UI layout and PWA install prompt
Create the main application template for the Snek chat interface, including header navigation with home, install, users, settings, and logout links, a sidebar listing chat rooms (General, Development, Support, Random), and a chat-window component in the main content area. Include script references for push, upload-button, html-frame, schedule, app, models, message-list, message-list-manager, chat-input, and chat-window modules, along with base.css stylesheet and manifest.json for PWA support. Add a beforeinstallprompt event listener that stores the install prompt event and displays an alert for triggering the PWA installation flow.
2025-02-08 16:09:05 +00:00