445 lines
24 KiB
Markdown
445 lines
24 KiB
Markdown
# TODO
|
||
|
||
This file tracks larger Lumi work that cannot safely be completed in one pass. Keep pending work under the relevant category and move completed items to the Done section with a short note.
|
||
|
||
## OKF Knowledge System
|
||
|
||
- Add `knowledge/core`, `knowledge/plugins`, `knowledge/community`, and `knowledge/corrections` directories with documented ownership rules.
|
||
- Implement OKF Markdown/frontmatter parsing with stable IDs, scopes, status, priority, tags, generated/editable flags, and timestamps.
|
||
- Generate fixed core/plugin OKF from routes, commands, schemas, plugin metadata, README docs, and defaults.
|
||
- Add admin-editable community OKF for community names, owner/admin names, bot name, currency, items, roles, lore, links, moderation rules, command rules, and local terminology.
|
||
- Add corrections OKF files created only through admin review.
|
||
- Implement safe placeholder resolution for core/plugin OKF references such as `{{community.currency.primary_name}}`.
|
||
- Preserve source metadata for every retrieved OKF chunk: path, id, heading, score, and excerpt.
|
||
|
||
## OKF Retrieval and Indexing
|
||
|
||
- Implement or adapt an OKF indexer that chunks Markdown by heading.
|
||
- Re-index only changed OKF files when possible.
|
||
- Enforce retrieval priority: active corrections, community OKF, plugin OKF, core OKF.
|
||
- Add retrieval boosts for corrections.
|
||
- Ensure missing placeholders never crash context injection.
|
||
|
||
## Feedback Loop
|
||
|
||
- Add thumbs up/down controls to Lumi chat answers.
|
||
- Store feedback payloads with rating, prompt, response, retrieved context, optional comment, model/provider, timestamp, and review status.
|
||
- Show an optional comment field for thumbs down and keep thumbs up lightweight.
|
||
- Ensure feedback never directly modifies OKF.
|
||
|
||
## Admin Feedback Review
|
||
|
||
- Add an admin feedback review page or section.
|
||
- Show prompt, response, rating, comment, retrieved OKF sources, model/provider, and timestamp for each feedback item.
|
||
- Add review actions: reviewed/no action, good, bad retrieval, bad response, missing knowledge, archive/delete.
|
||
- Add correction creation UI with title, tags, affected topic/file, and Markdown body.
|
||
- Save approved corrections as OKF files and re-index after save.
|
||
- Add links from feedback rows to generated correction files.
|
||
|
||
## Storage and Preservation
|
||
|
||
- Store feedback queue, review status, source context snapshots, and correction links in SQLite or existing app storage.
|
||
- Keep community OKF, corrections OKF, feedback/review data, and source metadata preserved across updates.
|
||
- Ensure generated OKF is reproducible and not accidentally overwritten by admin edits.
|
||
|
||
## Homepage Hero Embed Requirements
|
||
|
||
- Continue improving service-specific "why unavailable" messages where external providers expose enough signal.
|
||
|
||
### Discord Server Widget Hero
|
||
|
||
- Add optional Discord invite-to-server-ID lookup support if Discord server IDs are not known.
|
||
|
||
### Twitch Stream Hero
|
||
|
||
- Support additional configured parent domains for alternate hostnames.
|
||
- Support stream-only and stream-with-chat layouts.
|
||
- Respect Twitch minimum player size requirements.
|
||
- If live-only mode is enabled, check live status or gracefully hide/fallback when offline.
|
||
- Show a clear admin warning when the Twitch embed fails due to missing or incorrect parent domain.
|
||
- Add admin helper text explaining that Twitch embeds require the site domain to be allowed as a parent domain.
|
||
|
||
### YouTube Live Hero
|
||
|
||
- Support YouTube live video URLs, raw video IDs, and optional channel-based live lookup.
|
||
- For static live heroes, extract and use the provided live video ID.
|
||
- For automatic channel live detection, require YouTube API configuration.
|
||
- Cache live lookup results to avoid excessive API calls.
|
||
- Support optional live-only mode.
|
||
- Support optional YouTube live chat only when a valid live video ID exists.
|
||
- Support autoplay and muted settings.
|
||
- If live-only mode is enabled and no active stream is found, skip the hero or show fallback content.
|
||
- Show fallback/error states for private, removed, age-restricted, embedding-disabled, unavailable, or not-yet-live videos.
|
||
- Add admin helper text explaining that YouTube Live requires either a live video link or API-based channel lookup.
|
||
|
||
### YouTube Video Hero
|
||
|
||
- Show fallback/error states for private, removed, age-restricted, unavailable, or embedding-disabled videos.
|
||
- Detect embedding-disabled videos before save when a YouTube API key or another reliable server-side signal is available.
|
||
|
||
### External Embedded Content Hero
|
||
|
||
- Support generic external iframe embeds only for sites that explicitly allow embedding.
|
||
- Detect or gracefully handle sites that block embedding through `X-Frame-Options` or CSP `frame-ancestors`.
|
||
- Show an admin warning when an external site refuses to be embedded.
|
||
|
||
### Hero Embed Admin UX
|
||
|
||
- Show “why unavailable” information in the admin UI when a hero cannot render.
|
||
|
||
## Update Page UX Improvements
|
||
|
||
- Add async in-place checks for the older `/admin` and `/admin/settings` update buttons, matching `/admin/updates`.
|
||
- Continue simplifying advanced update terminology without hiding recovery-critical detail.
|
||
|
||
## Homepage Hero System
|
||
|
||
- Improve handling of live-only Twitch heroes and live-state detection.
|
||
- Add explicit Discord invite-to-widget guidance or lookup support if Discord server IDs are not known.
|
||
|
||
## Homepage Hero UX Improvements
|
||
|
||
- Review all homepage builder forms for non-technical usability.
|
||
- Add tooltips and inline explanations where appropriate.
|
||
|
||
## UI Text and Button Language
|
||
|
||
- Review all button labels, field labels, headings, helper text, warnings, empty states, and confirmation dialogs across Lumi.
|
||
- Replace technical/internal wording with clearer user-facing wording where possible.
|
||
- Keep AI-related wording precise enough for admins to understand model, provider, context, retrieval, embeddings, feedback, corrections, and OKF behavior.
|
||
- Review the update pages and simplify labels such as `Check plugin`, `Apply safe target`, and `Disable for recovery`.
|
||
- Prefer clear action labels such as `Check for updates`, `Update plugin`, `Use recommended version`, `Disable temporarily`, and `Start recovery mode`.
|
||
- Add short helper text below advanced or risky update actions explaining what will happen.
|
||
- Replace implementation-focused wording with task-focused wording wherever practical.
|
||
- Avoid exposing Git, branch, commit, target, repository, cache, migration, or rollback terms unless the user needs them.
|
||
- When technical terms are unavoidable, add short tooltips or inline explanations.
|
||
- Standardize common action wording across all pages: save, update, check, review, restore, disable, enable, archive, delete, retry, import, export, cancel, and confirm.
|
||
- Ensure destructive or system-changing actions have clear confirmation text.
|
||
- Ensure error messages explain both what went wrong and what the admin can try next.
|
||
- Review plugin management, core settings, update pages, homepage management, OKF management, feedback review, and AI configuration for inconsistent wording.
|
||
- Split highly technical pages into simple and advanced sections where practical.
|
||
- Hide rarely needed expert controls behind expandable advanced sections.
|
||
- Add examples for fields that expect URLs, model names, provider names, paths, selectors, or structured values.
|
||
- Ensure labels and helper text are suitable for non-technical admins without removing important admin-level specificity.
|
||
- Review localization/translation keys if present so simplified wording remains consistent across languages.
|
||
|
||
## Core Feedback System
|
||
|
||
First implementation pass completed 2026-06-18. Remaining feedback work is mainly optional screenshot capture/storage, richer duplicate detection, date/plugin/area admin filters, issue creation, OKF correction conversion, and deeper attachment/DOM snapshot handling. Keep the detailed checklist below as the remaining reference for hardening and follow-up passes.
|
||
|
||
- Implement a general core feedback system available to logged-in users only.
|
||
- Add a persistent feedback entry point somewhere logical in the UI.
|
||
- Add `/feedback` under the Community navbar section for logged-in users.
|
||
- Add `/admin/feedback` as the admin review entry point.
|
||
- Ensure the feedback system is core-level functionality and can cover any area, scope, feature, page, plugin, or UI element.
|
||
- Keep the AI Improvement Center separate from this system; it should continue handling AI reply quality feedback.
|
||
- Add a `wrong tool` classification to the AI Improvement Center for cases where the AI used the wrong tool, action, integration, or capability.
|
||
|
||
### Feedback Categories and Scope
|
||
|
||
- Use generic feedback categories based on issue type rather than feature-specific categories.
|
||
- Suggested categories:
|
||
- bug
|
||
- confusing wording
|
||
- broken interaction
|
||
- visual/layout issue
|
||
- accessibility issue
|
||
- missing feature
|
||
- improvement suggestion
|
||
- performance issue
|
||
- permission/access issue
|
||
- unexpected behavior
|
||
- other
|
||
- Allow feedback to target:
|
||
- the whole page
|
||
- a specific clicked UI element
|
||
- the current feature/page
|
||
- a plugin
|
||
- a broad system area
|
||
- other/custom scope
|
||
- Encourage users to submit one feedback item per issue.
|
||
- Add helper text explaining that small, specific feedback reports are preferred over broad combined reports.
|
||
|
||
### Feedback Submission UI
|
||
|
||
- Add a feedback modal for creating feedback.
|
||
- The modal should be accessible from the persistent feedback button and from the custom context menu.
|
||
- Require logged-in user identity for all feedback submissions.
|
||
- Allow the user to enter:
|
||
- short summary/title
|
||
- category
|
||
- severity/priority
|
||
- scope/target
|
||
- detailed description
|
||
- optional steps to reproduce
|
||
- optional expected behavior
|
||
- optional actual behavior
|
||
- Support severity/priority values such as:
|
||
- minor
|
||
- confusing
|
||
- broken
|
||
- urgent
|
||
- security/sensitive
|
||
- suggestion
|
||
- Pre-fill feedback scope based on the current page or clicked element when available.
|
||
- Allow users to change the auto-detected scope before submitting.
|
||
- Show clear confirmation after feedback is submitted.
|
||
|
||
### Site-Wide Custom Context Menu
|
||
|
||
- Replace the standard browser right-click context menu across Lumi with a custom site-wide context menu.
|
||
- Include the following actions:
|
||
- Back
|
||
- Forward
|
||
- Copy
|
||
- Cut
|
||
- Paste
|
||
- Link to here
|
||
- Hard reload
|
||
- Feedback
|
||
- Ensure context menu actions respect browser permissions and limitations.
|
||
- Ensure copy, cut, and paste only appear or work where appropriate.
|
||
- Implement “Link to here” by creating a URL to the current page and, when possible, the clicked element or section.
|
||
- Implement “Hard reload” as a cache-bypassing reload comparable to a developer hard refresh where possible.
|
||
- Add the Feedback action to open the feedback modal with the clicked element as the target.
|
||
- Preserve keyboard accessibility and provide fallback behavior if custom context menu features are unavailable in a browser.
|
||
|
||
### Element-Targeted Feedback
|
||
|
||
- When feedback is opened from the context menu, capture the clicked element as the feedback target.
|
||
- Store safe metadata about the clicked element, such as:
|
||
- selector or generated stable path
|
||
- element tag
|
||
- visible text snippet
|
||
- aria-label/title/role when available
|
||
- nearest form label or heading
|
||
- page URL
|
||
- page title
|
||
- viewport size
|
||
- Do not store sensitive field values from passwords, tokens, secrets, or private inputs.
|
||
- Allow users to choose whether feedback is about the clicked element, the whole page, the current feature, a plugin, or another scope.
|
||
- Highlight the selected target while the feedback modal is open when practical.
|
||
- Remove the highlight when the modal closes.
|
||
|
||
### Optional Screenshot Support
|
||
|
||
- Add optional browser-generated screenshot support.
|
||
- Screenshots must be opt-in by the submitting user.
|
||
- Do not require screenshots for feedback submission.
|
||
- Support full-page screenshots where technically possible.
|
||
- Support cropped/section-only screenshots where technically possible.
|
||
- Temporarily hide feedback buttons, feedback modals, context menus, and feedback overlays while capturing screenshots.
|
||
- Restore hidden feedback UI immediately after capture.
|
||
- Store screenshots only when explicitly attached by the user.
|
||
- Clearly warn users not to include sensitive information in screenshots.
|
||
- Allow users to remove an attached screenshot before submitting.
|
||
|
||
### Optional Diagnostic Data
|
||
|
||
- Automatically attach basic non-sensitive context:
|
||
- user ID
|
||
- current URL
|
||
- page title
|
||
- timestamp
|
||
- selected scope
|
||
- target metadata if element-targeted
|
||
- Make browser/user agent and screenshot/DOM snapshot optional opt-in fields.
|
||
- If DOM snapshot support is added, sanitize it before storage.
|
||
- Do not capture sensitive form values, passwords, tokens, secrets, private messages, or hidden data.
|
||
- Clearly label optional diagnostic data so users understand what they are submitting.
|
||
|
||
### Feedback Visibility for Users
|
||
|
||
- On `/feedback`, show logged-in users a general list of current and past feedback that has not been deleted.
|
||
- Public/general feedback list should only show basic non-identifying information:
|
||
- summary
|
||
- category
|
||
- general scope
|
||
- status
|
||
- created date
|
||
- last updated date
|
||
- Do not expose submitter identity in the general feedback list.
|
||
- Allow users to see their own feedback in detail.
|
||
- Make it easy to distinguish the current user’s own feedback from general feedback.
|
||
- Consider a separate “My feedback” section or a clear badge/label in the shared list.
|
||
- Allow users to add comments to their own feedback when follow-up is needed.
|
||
- Allow users to see admin replies that are visible to the submitter.
|
||
|
||
### User Feedback Notifications
|
||
|
||
- Add per-user feedback notification badges.
|
||
- Show a green badge/sphere with the number of the user’s feedback items solved since they last opened the feedback center.
|
||
- Show a red badge/sphere with the number of the user’s feedback items marked as needing more context.
|
||
- Show a grey badge/sphere with the number of the user’s feedback items marked as declined, rejected, duplicate, won’t fix, not planned, or otherwise not being worked on.
|
||
- Reset or update badge counts when the user opens the feedback center and views the relevant items.
|
||
- Ensure notification badges only reflect the logged-in user’s own feedback.
|
||
|
||
### Feedback Statuses
|
||
|
||
- Support feedback statuses such as:
|
||
- new
|
||
- reviewed
|
||
- accepted
|
||
- planned
|
||
- in progress
|
||
- fixed
|
||
- solved
|
||
- needs more context
|
||
- duplicate
|
||
- rejected
|
||
- not planned
|
||
- won’t fix
|
||
- archived
|
||
- deleted
|
||
- Allow admins to change status from the admin review UI.
|
||
- Store status history with timestamps and actor information.
|
||
- Show user-friendly status names and explanations on `/feedback`.
|
||
|
||
### Replies, Comments, and Work Notes
|
||
|
||
- Allow admins to reply to feedback.
|
||
- Allow submitters to comment on their own feedback.
|
||
- Allow admins to add private internal work notes that are not visible to normal users.
|
||
- Allow admins to mark feedback as “needs more context”.
|
||
- When feedback is marked “needs more context”, notify the submitter through the red feedback badge.
|
||
- Allow the submitter to add additional context/comments after the request.
|
||
- Distinguish clearly between public/admin replies, submitter comments, and private admin work notes.
|
||
|
||
### Admin Feedback Review
|
||
|
||
- Add `/admin/feedback` for admin feedback review.
|
||
- Admins should be able to view full feedback details, including:
|
||
- submitter
|
||
- summary
|
||
- description
|
||
- category
|
||
- severity
|
||
- scope
|
||
- target metadata
|
||
- current URL
|
||
- browser/user agent if submitted
|
||
- screenshot if submitted
|
||
- DOM snapshot if submitted
|
||
- comments/replies
|
||
- work notes
|
||
- status history
|
||
- Add filters for:
|
||
- status
|
||
- category
|
||
- severity
|
||
- scope
|
||
- plugin/area
|
||
- submitter
|
||
- date
|
||
- needs admin action
|
||
- Add sorting by newest, oldest, severity, status, and last activity.
|
||
- Add admin actions:
|
||
- change status
|
||
- assign category
|
||
- change severity
|
||
- reply to submitter
|
||
- add internal work note
|
||
- request more context
|
||
- mark duplicate
|
||
- archive
|
||
- delete
|
||
- convert to TODO
|
||
- convert to issue
|
||
- convert to OKF correction where relevant
|
||
- link to existing TODO/issue/correction
|
||
|
||
### TODO and Issue Conversion
|
||
|
||
- Allow admins to convert feedback into a TODO entry.
|
||
- Support injecting generated TODO entries into `TODO.md`.
|
||
- Preserve the existing TODO format when injecting new entries.
|
||
- Allow admins to edit the generated TODO text before saving.
|
||
- Add enough context to generated TODO items to be useful for later Codex work.
|
||
- Allow admins to convert feedback into a GitHub/Gitea issue if configured.
|
||
- Allow admins to link feedback to manually created TODOs or issues.
|
||
- Store links between feedback items and generated TODOs/issues.
|
||
- Do not automatically create TODOs or issues without admin confirmation.
|
||
|
||
### OKF and AI Improvement Integration
|
||
|
||
- Keep this feedback system separate from AI reply feedback.
|
||
- Do not use this feedback system to rate individual AI replies.
|
||
- Use the AI Improvement Center for AI answer quality, wrong answers, bad context, and correction review.
|
||
- Add `wrong tool` as a classification in the AI Improvement Center.
|
||
- Allow core feedback to cover AI features, AI UI, AI configuration, and AI workflow problems.
|
||
- Allow admins to convert relevant core feedback into OKF corrections only when the feedback concerns documentation, feature behavior, terminology, or community/system knowledge.
|
||
- Do not automatically modify OKF based on general feedback.
|
||
|
||
### Rate Limits and Abuse Prevention
|
||
|
||
- Add moderate rate limits for feedback submissions.
|
||
- Rate limits should prevent spam without blocking normal use.
|
||
- Encourage one feedback item per issue.
|
||
- Add validation to prevent empty or extremely vague feedback.
|
||
- Add optional duplicate detection based on similar title, scope, and page.
|
||
- If similar existing feedback exists, suggest adding a comment or upvote/support instead of creating a duplicate.
|
||
- Allow admins to delete or archive abusive/spam feedback.
|
||
|
||
### Data Storage and Preservation
|
||
|
||
- Store feedback data in SQLite or the existing app storage system.
|
||
- Store screenshots and optional attachments in a protected feedback uploads/storage directory.
|
||
- Preserve feedback data across repo updates, ZIP updates, migrations, and recovery operations.
|
||
- Include feedback data in the protected user-data list for backups and update preservation.
|
||
- Never overwrite feedback data during core/plugin updates.
|
||
- Include feedback data in backup/restore planning.
|
||
- Store enough metadata for auditability:
|
||
- created_at
|
||
- updated_at
|
||
- submitter_id
|
||
- assigned_admin_id if used
|
||
- status history
|
||
- comments/replies
|
||
- linked TODOs/issues/corrections
|
||
|
||
### Privacy and Safety
|
||
|
||
- Do not expose submitter identity in the general feedback list.
|
||
- Only admins should see submitter identity and full diagnostic details.
|
||
- Users should only see full detail for their own feedback.
|
||
- Sanitize all submitted HTML/text before rendering.
|
||
- Avoid capturing sensitive form values.
|
||
- Make optional diagnostic capture transparent to users.
|
||
- Add admin controls for deleting sensitive feedback, screenshots, or diagnostic data.
|
||
- Ensure permissions are enforced server-side, not only in the UI.
|
||
|
||
### Acceptance Criteria
|
||
|
||
- Logged-in users can submit general feedback from a persistent UI entry point.
|
||
- Logged-in users can submit targeted feedback from the custom right-click context menu.
|
||
- Right-click context menu includes Back, Forward, Copy, Cut, Paste, Link to here, Hard reload, and Feedback.
|
||
- Feedback modal can target the whole page, clicked element, current feature/page, plugin, broad system area, or custom scope.
|
||
- Users can optionally attach browser-generated screenshots while feedback UI is hidden during capture.
|
||
- `/feedback` appears under the Community navbar section for logged-in users.
|
||
- `/feedback` shows general non-identifying feedback summaries and detailed feedback for the current user’s own submissions.
|
||
- Users see per-user notification badges for solved, needs-context, and not-worked-on feedback.
|
||
- Admins can review and manage feedback at `/admin/feedback`.
|
||
- Admins can reply, add work notes, request more context, change statuses, and convert feedback to TODOs/issues/corrections.
|
||
- Feedback data is preserved across updates and included in protected user data.
|
||
- AI reply feedback remains handled by the AI Improvement Center, with an added `wrong tool` classification.
|
||
|
||
## Done
|
||
|
||
- 2026-06-18: Added a core feedback system first pass on `experimental-feedback-system`: SQLite feedback entries/comments/status history/view state, logged-in `/feedback`, admin `/admin/feedback`, persistent feedback modal, site-wide custom context menu with element-targeted feedback, per-user notification badges, admin replies/work notes/status changes/TODO conversion, and AI Improvement Center `wrong_tool_usage` confirmed present.
|
||
- 2026-06-17: Added Economy cleanup for fallback-name artifact users such as `SammyCat-2`, merging them into matching real platform users and making Economy stats tolerate missing/mid-migration tables; bumped Economy Framework to v0.2.9.
|
||
- 2026-06-17: Fixed update metadata for renamed Economy plugins so legacy installed rows are folded into canonical `economy-*` plugin update rows instead of appearing as separate installs; bumped core to v0.1.8.
|
||
- 2026-06-17: Renamed all remaining Economy internals from the old misspelled IDs/paths/tables to `economy-*`, added startup migration for legacy plugin rows, settings, command usage IDs, tables, uploads, asset paths, old URLs, and bumped core/plugin patch versions.
|
||
- 2026-06-17: Fixed user-facing Economy spelling, restored `/stats/{username}` Compare toggling, linked Top commands run leaderboard entries to `/commands`, and bumped core/plugin patch versions.
|
||
- 2026-06-17: Fixed custom command Edit buttons and `/commands` Copy Link / expand buttons with delegated handlers, clipboard fallback, and v0.1.5 patch bump.
|
||
- 2026-06-17: Fixed repo-based core updates deleting `data/update-cache/repo` during apply, added a verification guard, and bumped core package version to v0.1.4.
|
||
- 2026-06-17: Bumped core package version to v0.1.3.
|
||
- 2026-06-17: Completed homepage hero embed pass for Discord widgets, YouTube video playback options, external embed fallback/sandbox controls, admin validation, platform-specific fields, and Test preview behavior.
|
||
- 2026-06-17: Fixed core update snapshots for large ZIP-origin installs by replacing the full-install ZIP backup with a filesystem snapshot directory, avoiding the 2 GiB ZIP limit for large preserved files such as local AI models.
|
||
- 2026-06-17: Completed `/admin/updates` UX pass: viewport-fixed dismissible notifications, auto-dismiss for non-critical results, async core/plugin check actions without page refresh or scroll jumps, in-place update-card data refresh, loading states, and collapsed advanced Manual ZIP fallback below repo update containers.
|
||
- 2026-06-17: Completed homepage hero reliability pass: server-side hero validation before save, admin-visible validation errors, home-page fallback message for broken legacy heroes, automatic YouTube/Twitch/Discord embed derivation, correct Twitch parent host at render time, and image/embed conflict handling.
|
||
- 2026-06-17: Completed homepage hero builder UX pass: friendlier labels, contextual help text, normal URL paste support, automatic embed filling, per-row readiness messages, and test preview support.
|
||
- 2026-06-17: Fixed homepage links to support local Lumi paths such as `/commands`, and made unavailable live-only heroes fall through to lower-priority heroes instead of blocking the homepage.
|
||
- 2026-06-17: Completed update-page wording cleanup for common actions such as check, update, restore previous version, disable temporarily, and ZIP rollback wording.
|
||
- 2026-06-17: Added permanent repo-update architecture for ZIP-origin installs using `data/update-cache/repo`, non-live-git metadata checks, snapshot-copy apply, update-state recording, and preservation of user-owned paths.
|
||
- 2026-06-17: Separated Lumi AI `tool_info.json` tools from normal plugin update rows and rendered tools under the `lumi_ai` plugin row.
|