fix(identity): treat CLA as signed across username/github/public-id aliases - #2169
Conversation
Replace the bottom-left Share Feedback and Changelog controls with a baked short SHA + build date so onprem can match Harbor image tags.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ae3b9b768c
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| .get_or_create_status(username) | ||
| .await?; | ||
| // Heal transitional CL authors (username/github_login) after a public-id sign. | ||
| if model.cla_signed { |
There was a problem hiding this comment.
Check aliases before returning unsigned CLA status
When a user has an existing signed CLA row under a previous username or GitHub login and now hits /cla/status with their Campsite public id, get_or_create_status(username) creates/reads the new public-id row as unsigned and this branch is skipped, so the API returns cla_signed: false even though ClaSignChecker would pass via any_signed(&aliases). That leaves the settings/merge UI prompting already-signed users to sign again; resolve aliases and check any_signed before deciding the returned status is unsigned.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5523d8174b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| ENV NEXT_PUBLIC_APP_VERSION=${GIT_SHA} | ||
| ENV NEXT_PUBLIC_APP_BUILD_TIME=${BUILD_TIME} |
There was a problem hiding this comment.
Include version env vars in Turbo's build hash
When this Docker build runs for a commit that does not otherwise change @gitmono/web inputs, npx turbo run build --filter=@gitmono/web can replay the cached .next output even though these new NEXT_PUBLIC_* values changed, because moon/apps/web/turbo.json lists the build env inputs on lines 6-30 and does not include NEXT_PUBLIC_APP_VERSION or NEXT_PUBLIC_APP_BUILD_TIME. In that case the sidebar bundle can keep showing the previous SHA/build time; add these vars to the Turbo build hash or avoid baking them through a cached task.
Useful? React with 👍 / 👎.
…liases Web edits were persisting Campsite username as CL author while CLA rows use campsite public id, so signed users still failed merge checks.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a5669d4246
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| self.ctx.storage(), | ||
| MemberIdentityProfile { | ||
| campsite_user_id: campsite_user_id.to_string(), | ||
| username: login.clone().unwrap_or_default(), |
There was a problem hiding this comment.
Preserve synced Campsite usernames when only GitHub login is known
When the session only provides a GitHub login, this writes that login into the identity table's username field. CampsiteMemberIdentityStorage::upsert treats any non-empty incoming username as authoritative and overwrites an existing synced Campsite username, so a user whose Campsite username differs from their GitHub login loses the old-handle alias after hitting /approval-status; subsequent CLA/author alias checks no longer include pre-backfill rows stored under that old username. Leave username empty unless the true Campsite username is known, and set only github_login/display fields from the session login.
Useful? React with 👍 / 👎.
| user: &LoginUser, | ||
| _client_author: Option<String>, | ||
| ) -> Result<String, ApiError> { | ||
| Ok(collaboration_actor(user)?.to_string()) |
There was a problem hiding this comment.
Look up existing web-edit CLs across author aliases
For web edits made by a user who already has an open CL authored under their pre-migration Campsite username/GitHub login, forcing the request author to the public id means CodeEditService::update_or_create_cl calls the exact get_open_cl_by_path(path, username) lookup with a different actor string. If actor backfill has not rewritten that old row yet (or is skipped on installs without the Campsite internal secret), the old CL is missed and a duplicate open CL is created for the same path instead of updating it; resolve author aliases in the open-CL lookup before falling back to create_new_cl.
Useful? React with 👍 / 👎.
No description provided.