MAstodon posts fixed
Build LinkLog Development Image / development-image (push) Successful in 11s

This commit is contained in:
2026-08-26 09:26:16 +02:00
parent 333aab8e8a
commit 22add753fe
12 changed files with 682831 additions and 35 deletions
+117
View File
@@ -511,3 +511,120 @@ Add the creation of an xpi bundle for the webextention to the Makefile
### Assistant outcome
Added a portable `xpi` Makefile target that regenerates logo assets and packages the Firefox extension into `LinkLog.xpi`, excluding metadata and minified artifacts. Added README instructions, ignored the generated XPI, and verified the archive contents and integrity with `unzip -tq`.
### User
Correct: A signed XPI will be generated manually and checked into the repository under XPI/signed
### Assistant outcome
Defined the release workflow around a manually checked-in signed XPI and added version/update-manifest validation, Docker image publishing, and Gitea release asset handling.
### User
The "data_collection_permissions" property is missing from the plugin
### Assistant outcome
Added Firefox `data_collection_permissions` requiring `websiteActivity`, with no optional categories, and enforced the declaration in release validation.
### User
Validate the XPI during the make process of the unsigned xpi
### Assistant outcome
Added unsigned-XPI validation to the Makefile. The validator checks ZIP integrity, required files, macOS metadata, and exact manifest parity.
### User
pressing remove still does not remove a user.
### Assistant outcome
Fixed admin user removal behavior, added server-side self-protection, improved browser error reporting, and updated the admin cache-busting version.
### User
Trying to remove user alice: Could not remove alice: Internal Server Error
### Assistant outcome
Found the SQLite foreign-key failure caused by Alice-owned tokens, links, and plugin configuration. User deletion now removes dependent records transactionally before deleting the user. Full validation passed.
### User
Create a Gitea Action for every update to main that creates a Docker image tagged development
### Assistant outcome
Added `.gitea/workflows/development.yml`, publishing `git.kolkman.org/olaf/link-log:development` on every push to `main`, with manual dispatch support.
### User
Use an access token to publish to registry, not username and password
### Assistant outcome
Changed release and development workflows to use `REGISTRY_TOKEN` as the Docker registry credential while retaining `REGISTRY_USERNAME` as the login identity.
### User
Add SMTP capabilities and email validation links
### Assistant outcome
Added SMTP delivery, email verification tokens, verification-link handling, and environment configuration for SMTP.
### User
Do not configure default users at bootstrap. Present a configuration page when no administrator exists.
### Assistant outcome
Removed default-user bootstrap, added a first-run setup page, persisted SMTP settings, created the first administrator through setup, and added an SMTP test-mail step.
### User
Separate saving configuration from sending test mail, allow five sends with 20-second intervals, then hold for two minutes with a visual timer.
### Assistant outcome
Split setup into Save configuration, Send test mail, and Complete setup actions. Added persistent server-side throttling, reload-safe countdown state, a five-send limit, and a two-minute cooldown.
### User
Use `.env` defaults during initial configuration.
### Assistant outcome
The setup status endpoint now exposes effective environment SMTP defaults, and the setup form populates blank fields from them. Persisted setup values take precedence after saving.
### User
Use OAuth to register with the Mastodon account and obtain access to post.
### Assistant outcome
Added Mastodon OAuth app registration, authorization and callback endpoints, one-time OAuth state storage, and per-user access-token persistence.
### User
Allow the user to enter the Mastodon server to authenticate to.
### Assistant outcome
The profile now requires an explicit Mastodon server, saves that server before OAuth, and authenticates against the selected instance.
### User
Clicking authenticate with this server for social.secret-wg.org generates a 502 error.
### Assistant outcome
Confirmed the Mastodon instance was returning HTTP 429 during app registration. OAuth app credentials are now cached per instance, and upstream rate-limit responses are passed through with retry information instead of being reported as generic 502 errors.
### User
When a password is mistyped, send a password reset link.
### Assistant outcome
Added hashed, expiring, single-use password-reset tokens, SMTP reset mail, a reset-password page, generic login errors, and session revocation after reset.
### User
Log the unlogged chat and prompt in the VIBE directory.
### Assistant outcome
Appended the previously unlogged feature work and this request to `VIBE/PROMPTS.md` and `VIBE/CHAT_LOG.md`.
### User
Continue to log prompts and chats in VIBE
### User
Use the VIBE directory in the current workspace.
### Assistant outcome
Confirmed the current workspace is `/home/olaf/LinkLog_Dev` and appended both requests and this outcome to the VIBE logs located at `VIBE/PROMPTS.md` and `VIBE/CHAT_LOG.md`.
### User
Posting to Mastodon seems to fail, try to fix, add debug logging.
### Assistant outcome
Changed Mastodon status publishing to form-encoded API requests, added safe configurable logging for skipped, successful, and failed posts, included upstream HTTP response details without logging access tokens, and wired `LINKLOG_LOG_LEVEL` through the environment and Compose configuration. Updated the posting regression test. The focused test and complete Dockerized backend suite passed with 22 tests.
### User
`LINKLOG_PUBLIC_URL` and `TRAEFIK_HOST` are the same and can be merged. Use `LINKLOG_PUBLIC_URL` in Docker Compose.
### Assistant outcome
Removed the duplicate `TRAEFIK_HOST` configuration, changed both Traefik router rules to use `LINKLOG_PUBLIC_URL`, standardized the value as a host name, and normalized scheme-less values to valid HTTP/HTTPS backend callback URLs. Compose validation, URL normalization, and the complete Dockerized backend suite passed with 22 tests.