18 KiB
18 KiB
Prompt Log
2026-08-24
- I want to build a firefox plugin as specified in the REQUIREMENTS.md file.
- I want this written in python where possible.
- Start implementation.
- Make the frontend page and the Docker setup.
- Continue.
- go.
- continue.
- Continue.
- Create a folder called VIBE and log our chat and promts. Previous and future.
- implement next step.
- continue implementation
- Fix the Starlette/httpx deprecation by using an alternative
- Clean up and create a README that includes full install instructions
- Review Docker setup and configuration
- Make sure all configurateion can be set using a .env file with docker
- Execute all TODOs
- Add authenticated admin/user configuration
- Make sure the link-log page is responsive
- next
- Make the layout modern based on catpuccino mocha theme
- docker compose up fails with Jinja2 errors
- put the avatar and the username on the top right hand side, and wrap all other text around it.
- add a login button on the top right of the page
- add a link to the administrator page to the user configuration for users that have admin privilige
- add the ability to add and remove users to the admin interface
- Only show the add user interface when logged in as admin and only show 'Administrator sign-in required' when an administrator is not signed in. Also add a checkbox to users in the admin to assign admin rights.
- /admin shows 'sign out' while the users has been signed out.
- Show a login button when nobody is logged in for /admin
- The signin and signout button are not still not visible
- It seems that the session is not maintained. I want Login buttons when a user has logged in and logout buttons when a user has logged out. If an authenticated user tries to load the admin page without authorization it should say that the user has no authorization
- When a logged in user gets to the profile page their username should be printed - it is inmutable. Available defaults should prepopulte the fields.
- The username doesn't load. The firefox console reports: Uncaught SyntaxError: redeclaration of const logoutButton
- Check the whole authentication flow as it seems broken.
- In the admin interface allow to toggle administrative rights for users. But always enforce there to be at least one user with admin rights
- remove default for bio and email in the profile page
- Don't use an avatar URL but allow the user to upload an avatar
- Show the avatar with all posts
- Show the avatar with each entry on the home page. On the specific // page don't show the avatar and user name with each entry
- For the user filter create a dropdown of all users that are available on the server
- If I select a user filter I want the appropriate page to be opened (e.g. /user/ for user of / -home- for all-users)
- git commit the whole lot
- version the sql schema and make sure it can be upgraded in the future.
- allow editing of individual links - add a edit button for the links owned by the authenticated user - otherwise do not show a link
- Add authenticated link editing
- Expose ownership if feed data
- Render edit action for owned links
- On every page, when a user has authenticated show its avatar and name in the header next to a sign out putton.
- execute next todo
- execute final todo (nummer 3)
- Pressing signout (on the home page) does not log the user out
- Instead of the buttons on the top of the page create a 'hamburger' dropdown menu. The menu items are sign in, profile, admin, and sign out with authenticated visibility rules.
- The menu items on the dropdown render behind
- The menu should not show the profile, admin and signout items when nobody is authenticated.
- Add one entry on top of the hamburger menu 'home' that always directs to the home page.
- where the hamburger menu shows the avatar and username, replace by username only and link to the /user/ page
- Change both the plugin and the backed to allow a logged link to be tagged witn zero or more tags (10 max). In the pluggin tags can be selected from existing tags and new ones can be created. Add the ability to sort on tags on the front page.
- The seed list is: #Internet #Cybersecurity #Fediverse #Food #Photography #Music #AI
- The seed list is: #Internet, #Cybersecurity, #Fediverse, #Food, #Photography, #Music, #AI
- On the home page allow filtering on tags
- when editing lables I want to be able to selec multiple tags or add one myself.
- Make the tags filtering case incensitive (but maintain case of tags)
- Display the date as "2026 June 18 - 20:22"
- Create a page where users can add, delete, or edit labels - Labels can be edited and deleted by the same user that created them. The administrator can delete any label.
- The profile page shows in red: "can't access property "classList", document.querySelector(...) is null"
- The post prefix is now 'From my #LinkLog: "' make that 'From my #LinkLog: '
- Use the logo.svg in both the plugin as well as on the web page
- use the logo as the logo on the dropdown for firefox extensions but put it on a dark background
- Make sure that the logo is used in the toolbar
- For the logo in the toolbar make the background dark
- Make sure the addon conforms to Firefox guidelines
- Create a make file that will regenerate the logo and icon files from LinkLog.svg
- Make sure the addon conforms to Firefox guidelines
- How come when te container starts after docker compose down -v the database is still populated with old links
- Refine the Plugins Settings page. When the user is logged in it shows all " logged in at " and a sign-out button. If the user is not logged in it shows the form as is now.
- On the plugin, next to the logo, create a link of the form: LinkLog
- Use the Asset Font from google foundry as font for the LinkLog text
- Create an about page and add an entry in the hamburger menu. The about page explains what the linklog does
- On the bottom of all files add a copyright statement (Olaf Kolkman) and a link to the git.kolkman.org/LinkLog repository in small print
- the link in the site footer must be underlined and in the same color as the other text
- Add copyright sign and 2026 to the copyright notices
- in the footer make the link the same color as the mother text, when clicked use a tint from the Catpuccin theme
- Add a GNU License file
- Add a copyright statement to source files refer to GNU license
- Add the version to the name of the resulting xpi
- Set the version number of the backend to 0.1.0
- Add the creation of an xpi bundle for the webextention to the Makefile
- Correct: A signed XPI will be generated manually and checked into the repository under XPI/signed
- The "data_collection_permissions" property is missing from the plugin
- Validate the XPI during the make process of the unsigned xpi
- pressing remove still does not remove a user.
- Trying to remove user alice: Could not remove alice: Internal Server Error
- create a gitea action that is ran every time main is updated and that creates a docker image tagged development
- Use an access token to publish to registry, not username and password
- Add SMTP capabilities to the backend. Use it to validate the email addresses using a validation link in mail
- Do not configure default users at bootstrap. Instead present a configuration page (only present if no administrator is configured). The configuration page asks for the admin users credetials and allows to configure the SMTP settings and sends a test mail after configuration
- After saving the configuration - add link to home page together with "LinkLog is configured and the SMTP test mail was sent."
- In the confiuration seperate the safe and send mail functionality. Allow the user to resend test mail 5 times with a 20 seconds interval and then hold back for 2 minutes - show a visual timer counting down.
- when running the initial config use the defaults from the .env file when available
- Use oauth to register with the mastodon account and obtain access to post
- Allow user to enter the mastodon server to authenticate to
- Clicking authenticate with this server (social.secret-wg.org) generates 502 error
- Log the unlogged chat and promt in the VIBE directory
- when password is mistyped send a password reset link
- when running the initial config use the defaults from the .env file when available
- After saving the configuration - add link to home page together with "LinkLog is configured and the SMTP test mail was sent."
- In the confiuration seperate the safe and send mail functionality. Allow the user to resend test mail 5 times with a 20 seconds interval and then hold back for 2 minutes - show a visual timer counting down.
- Use oauth to register with the mastodon account and obtain access to post
- Allow user to enter the mastodon server to authenticate to
- Log the unlogged chat and promt in the VIBE directory
- Continue to log prompts and chats in VIBE
- use VIVE that is in the current directory
- Posting to mastodon seems to fail, try to fix, add debug logging
- LINKLOG_PUBLIC_URL and TRAEFIK_HOST are the same and can be merged. (use LINKLOG_PUBLIC_URL), fix docker-compose to use said variable
- Format mastodon posts like From my #LinkLog: Title, optional comment, and from: URL
- Only print the 'from' line if there is no title. Put the title directly behind the colon, and put all tags on the last line.
- In the frontend do not show edit buttons on the home page even when a user is logged in. On the // page show the edit button on the right of the entry. Also add a delete button.
- Put the buttons on the right hand side of the link item, make the buttons smaller and same color scheme
- Put the mastodon button on the lower right corner of the log entry
- Make sure that the makefile also rebuilds XPI if any of its source files are changed
- Change that location to be immediately below the edit and delete button
- When the user is authorized and on its // page show a Mastodon post button with logo; after posting keep it functional but change its color.
- Continue to log interactions to the VIBE directory.
- On the home page, when clicking on the avatar or the user, show the profile information.
- Localize the firefox plugin.
- Create a spanish, german, french and dutch locale.
- On the admin page add the SMTP settings (with the validation button).
- Populate the SMTP fields with the current values except for the password. Send the testmail to the currently authenticated admin user. Only use updated fields when testing. Use the same logic as in the configuration page to restrict endless testing.
- Report any errors that may occur from the SMTP module to the user.
- In the admin screen allow to select multiple themes for the backend. Create at least one plain day and one night theme, and add in all catpuccin themes for good measure.
- For the day and latte themes the contrast on the link items is too low.
- Add 3 other of the most popular themes.
- Show the tags in the linklog on the bottom left, move the date to the bottom right - horizontally align the tags with the date.
- Continue todos.
- Do not show 'no comment provided' but leave empty when no comment has been provided.
- Decrease the space between link-log items.
- Perform the next items on the todo list.
- Correct: move the sort and filter toolbar underneath the theme and menu, in the header, on the home page and on the pages.
- Run frontend and style checks.
- Keep the sort and filter bar left of the logo and pack it snug against the menu and theme selector.
- Correction: the feed header should have the sort and filter bar to the right of the LinkLog logo, compact and underneath the theme selector and menu.
- When a log entry is deleted then all mastodon posts are deleted too.
- Don't forget to update the plugin to work with OTP.
- When the user is not logged in then the plugin should just display no form fields but warn the user that they have to log in with a link to settings.
- Remove DEFAULT_BACKEND setting in the plugin.
- Change the title of the field "One-time password" to "One-time password (when configured)".
- The plugin settings still show 'emailLabel'; make that 'email' as title for the email field.
- When a URL with the same title is already in the database, warn the user, allow comment and hashtag changes, and retrigger plugins such as Mastodon reposting.
- Display any errors that occur during posting.
- When the plugin is activated and the link already exists, show "This link already exists. Comment and tags can be updated, and by submitting publishing will be retriggered."
- When pressing save link the plugin should display "Link saved to " and hide all other information. It should only refresh when the plugin is opened again
- Remove any leading and trailing spaces when entering fields in the settings page of the plugin.
- Do a full security audit document in what you have done in detail in Security-audit.md
- Address issue 1. and improve password storage
- The login page should ask for OTP password
- For the new password in the user setting add a validation field to make sure they are the same before submitting
- Change so that authentication is based on email address rather than username - maintain the username for presentation purposes
- Make sure the web plugin follows same logic
- Implement the recommendation for ### SA-002: Bearer tokens accepted in query strings
- Change so that authentication is based on email address rather than username - maintain the username for presentation purposes
- Make sure the web plugin follows same logic
- In the plugin emailLabel should read: Email
- Allow addition of secondary or tertiary email addresses; validate them before authentication and support profile status/resend controls with holdback.
- Enable the user to change primary email address and remove the original one while maintaining access and rights.
- Choose primary email from already verified alternative email addresses and increase the number of alternative email addresses allowed to 5.
- Make sure an email can only be selected when it has been validated.
- Remove the entire "New primary email address" block; keep only selecting an existing alternative as primary.
- Remove the “New primary email address” functionality and keep only selecting an existing alternative as primary.
- Address SA-003 by using a dedicated secret key supplied through a protected environment/secret file, encrypt sensitive values before SQLite storage
- Address SA-004 by validating Mastodon instances as HTTPS public hostnames, rejecting unsafe DNS/IP ranges including mapped IPv6, and blocking redirects
- Implement SA-005: login endpoint lacks rate limiting and lockout
- Address SA-004 by validating Mastodon instances as HTTPS public hostnames, rejecting unsafe DNS/IP ranges including mapped IPv6, and blocking redirects.
- When the user is logged in the webplugin should not display "Please sign in to use LinkLog."
- When the user is signed in the plugin should not display "Please sign in to use LinkLog." and the link to the settings
- The plugin still does not behave as expected. It still shows that the user should sign in.
- In the popup show that the user has logged in.
- Address SA-003 by using a dedicated secret key supplied through a protected environment/secret file, encrypt sensitive values before SQLite storage
- The popup still shows the sign-in block even though the authenticated session text is displayed; show the block only when signed out.
- The authenticated session text and sign-in block are still shown together.
- Use the VIBE directory to log interactions.
- Implement SA-006: remove broad Firefox extension host access and unnecessary tabs permission, request exact configured backend origin access, and keep page capture behind activeTab.
- Continue to document every prompt and chat in the VIBE directory.
- Continue SA-006: store session credentials in the narrowest available extension storage, minimize token lifetime, support refresh-token rotation, and clear all session material on logout or token invalidation.
- Also allow an admin to reset (disable) OTP for any user.
- Fix SA-009: TOTP enrollment has no recovery codes or reset workflow.
- Address SA-007 and use linklog.example.com as the default LINKLOG_PUBLIC_URL.
- Run full backend and frontend test suites.
- Solve SA-010: Avatar validation trusts the client MIME type.
- Fix SA-015: Some destructive and administrative operations lack audit logging.
- Format sent mail in the website style and include the logo.
- Set the email logo to 120px wide and center it at the top.
- Make the email logo 50px by 50px, place it top-left, and put "Hello" to its right in the Asset font.
- Replace the email greeting with "Hello a message from ", linking the hostname to the LinkLog server.
- Put the email header text to the right of the logo, align it at the top, and add a comma after Hello.
- Put the email greeting in a separate top-aligned cell to the right of the logo.
- Reduce the email greeting font size somewhat.
- Replace LINKLOG_TOKEN_EXPIRY_DAYS with LINKLOG_TOKEN_EXPIRY_MINUTES, add LINKLOG_REFRESH_TOKEN_EXPIRY_DAYS to production Compose, and add a CI configuration consistency test.
- Update SA-012 and README for the implemented refresh-token lifecycle, revocation behavior, and refresh endpoint.
Future entries
Append each new user prompt here with its date and preserve the chronological order.