Repository navigation
Add organization logo controls and read-only domains - #406
Conversation
mintuhouse
commented
Oct 29, 2026
- Add organization logo upload, removal, and refresh controls using the existing storage and background workflow services.
- Store a required, read-only organization domain from email addresses and backfill existing organizations in one SQL migration without a database default.
- Use “Organization slug” consistently in settings and organization creation.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
website-astralbeam-ai | 2ea81bd | Commit Preview URL Branch Preview URL |
Oct 29 2026, 04:21 AM |
|
Validation results for
The live-refresh polling suggestion remains open with the enqueue-only tradeoff documented. Refresh requests background work; the imported logo appears on the next settings reload. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 72b8e60335
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| await refreshOrganizationLogo({ data: { organizationSlug } }) | ||
| toast.add({ title: "Logo refresh requested", type: "success" }) |
There was a problem hiding this comment.
Update the displayed logo after the refresh workflow completes
When a refresh successfully imports a logo, this page continues showing the initials fallback and the Refresh button because organization.logoFileId comes from the settings route loader, and this handler neither reloads that data nor polls for workflow completion. refreshOrganizationLogo only queues the workflow with discard: true, so even an immediate invalidation would race the import. Observe completion and then invalidate the loader and organization queries so the new logo and Remove action appear without requiring a manual page reload.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Retaining the enqueue-only behavior requested for this change. Refresh submits a best-effort background job and explicitly reports “Logo refresh requested”; the imported logo appears when settings next reloads. Live completion updates would require polling or additional job-status handling, so that UX expansion is intentionally deferred. Leaving this thread open to make the tradeoff visible.
|
Walkthrough with disposable seed data: create an organization, inspect its read-only domain, upload a logo, confirm persistence after reload, remove it, and request a refresh. video.webm |
|
UI proof at
organization-logo-fetch-proof.webm |
|
Updated logo UX at avatar-style-logo-upload.webm |