Conversation
resolveRealUser used to return null after a valid session had already resolved, silently bouncing a deactivated user back to /login forever. Distinguishes that case and sends it to /login/deactivated instead. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deactivation was previously one-way, with no way to restore access. Adds Users → Deactivated accounts, listing soft-deleted rows with a reactivate action scoped by the existing authorization helpers, and points createUser's duplicate-email error at it. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
#387 was rescoped: reactivation stays a database operation, so this drops the admin-only deactivated-accounts page/table, the reactivateUser action and its query, the entry point link, and the now-unused type. Copy that referenced the removed page is updated to point at contacting an administrator instead. Extends the authorization test suite to assert deactivated users are excluded from admin-facing queries. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Points admin-facing deactivation copy at the real remediation (database change, contact engineering) instead of "an administrator," trims an over-length comment, and fixes deactivated-screen text hierarchy. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 5.8.0 to 5.9.0. - [Release notes](https://github.com/react-hook-form/resolvers/releases) - [Commits](react-hook-form/resolvers@v5.8.0...v5.9.0) --- updated-dependencies: - dependency-name: "@hookform/resolvers" dependency-version: 5.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Reuses the existing setUserName action and nameSchema; warns that a rename propagates to every application, submitted and decided alike. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Better Auth's updateUser writes the same public.User row through the Prisma adapter, so it was a no-op round trip that only failed for bypass users. setUserName is the single write path now. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Editable profile names mean a display name can drift after a user applies. Freeze it on Application.applicantName at submit time, same pattern as GlobalApplicationAnswer.questionLabel, and prefer it over the live profile name on reviewer-facing read paths. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ticket #443 now documents the applicant-name snapshot as intended behavior, so update the dialog's warning to match: renaming applies going forward only, and already-submitted applications keep the name on file at the time. Also trims an over-length schema comment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Application.applicantName freezes the name at submission time; show it inline as "Snapshot (Current)" wherever the applicant name appears so a rename since submission stays visible without losing the snapshot. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Extracts the applicantName/user.name comparison into lib/utils.ts's getRenamedTo, reused in the application detail page and both table layouts, and adds the same "(current name)" cue to the activity feed and recent-applications widget so it's consistent across every surface that renders a rename-eligible applicant name. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ame-from-the-user-dropdown #443 Let Users Edit Their Name From The User Dropdown
…d-screen-and-admin-reactivation #387 Add an Account Deactivated Screen and Admin Reactivation
…okform/resolvers-5.9.0 Bump @hookform/resolvers from 5.8.0 to 5.9.0
Bumps [@prisma/adapter-pg](https://github.com/prisma/prisma/tree/HEAD/packages/adapter-pg) from 7.8.0 to 7.9.1. - [Release notes](https://github.com/prisma/prisma/releases) - [Commits](https://github.com/prisma/prisma/commits/7.9.1/packages/adapter-pg) --- updated-dependencies: - dependency-name: "@prisma/adapter-pg" dependency-version: 7.9.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Single source of truth for the six-status pipeline direction, so the server guard and the rendered quick actions can't drift apart. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
updateApplicationStatus and updateApplicationStatuses now scope their writes to the graph's legal source states, so an illegal move fails even from a forged request or a stale tab. Bulk failures and concurrent-change misses now return a user-facing error naming the target instead of throwing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ApplicationStatusActions renders only the legal next moves for the current status — primary/secondary forward buttons, a destructive Reject, and explicit move-back controls — as a roomy panel on the review detail page and a constrained menu in the per-position table. Accept and Reject route through the shared confirm dialog. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Unit tests assert the graph invariants (totality, no self-loops, rejected reachability, source/target inversion). DB tests replace the old "every target reachable from applied" loop with the full 6x6 source x target matrix and add mixed-selection bulk cases. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Scope bulk status updates to forward-only sources so a batch move can't silently walk an already-decided row backward, matching the PR's stated bulk behavior. Also closes the confirm dialog on a failed move and trims two comments to the one/two-line rule. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
getApplicationStatusForwardSources returned [] for 'applied' since no state's forward list ever contains it, making bulk moves to Applied always no-op. Fall back to back-sources when a target has no forward source at all. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds direct unit invariants for getApplicationStatusForwardSources' back-only fallback, per R3-L1. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ixes Reword interview_scheduled to a status label, wire the compact quick- actions menu into the live applications table, and name reachable source statuses in bulk-move error/toast copy. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The bulk "unreachable target" copy computed sources with the full source set instead of the forward-only set that actually scopes the updateMany where-clause, so it could list back-only statuses as valid bulk targets. Match the message to the query and update the stale test assertion. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
getApplicationStatusForwardSources('reviewing') resolves to
[applied, reached_out, interview_scheduled] now that the action uses
forward-only sources; the test still expected the old two-source text.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The bulk-status toast said skipped rows were "still selected", but onApplied only retains ids skipped for a non-reviewable status — rows skipped for a forward-source mismatch (e.g. applied -> interview_scheduled) are deselected, making the claim false. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The gate exists to stop mid-pipeline PRs merging early, not to enforce review universally, so PRs outside the pipeline now skip it — which also unblocks Dependabot with no special case. Skipping at the job level still reports the required check as `skipped`; filtering the trigger would leave it pending forever. Trade-off is fail-open: a pipeline PR missing `claude` loses its gate, so impl-agent applies the label at `gh pr create` and the cockpit sweeps for tracked PRs without it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…k-on-the-claude-label #513 Gate The Approval Check On The Claude Label
…isma/adapter-pg-7.9.1 Bump @prisma/adapter-pg from 7.8.0 to 7.9.1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rker One marker string in the issue plan and the PR description, read from the body field the cockpit's trigger queries already return. Names the routing rather than the cause, so future non-.claude categories reuse it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#513 gated approval-check.yml on the claude label, so an operator-run PR opened without it would merge with no approval gate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reconciles the three-way local/CI/README disagreement so node-version-file: package.json in CI actually resolves to something. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
target ES2017 -> ES2022; add noUncheckedIndexedAccess, noUnusedLocals, noUnusedParameters and fix every access site the flags surfaced. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds no-floating-promises, no-misused-promises, no-unnecessary-type-assertion, no-unnecessary-condition, switch-exhaustiveness-check, and a no-restricted-imports guard on @/lib/prisma reaching non-data/action code. lib/prisma.ts gets import 'server-only' as the guard's runtime twin. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
checkout/setup-node to v7 with node-version-file + npm cache, npm ci over npm install, concurrency cancel-in-progress on every PR workflow, and tsc-check's forbidden npx prisma generate swapped for the script. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New non-required-by-default checks: run-build-check (real postgres + npm run build), run-lockfile-check + run-audit-check, and CodeQL. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds workflow_dispatch (target: dev|production) for a staging dry run, an environment gate for a required-reviewer approval on production, a migrate-status preflight that fails on drift before anything applies, and a rollback runbook in the header comment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Exclude bundled sub-dependencies from the lockfile pinning check, and fail closed on migrate-db preflight errors instead of treating any non-"drift detected" exit as safe to apply. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- keep build-check.yml unchanged - drop run-audit-check and the schedule trigger from lockfile-check.yml (formerly dependency-check.yml), renamed to match file/job naming convention - remove .github/CODEOWNERS - consolidate node version pinning to package.json engines; drop .nvmrc and point README at engines instead of restating the version, keeping the dependabot @types/node major-bump guardrail Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Drop the dependabot ignore rule for @types/node major bumps and widen its package.json range to * so tsc/tests catch mismatches instead of a sync-check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cut lockfile-check.yml and migrate-db.yml header/inline comments down to terse, load-bearing notes matching the rest of the repo's workflows; drop codeql.yml's weekly cron, pull_request only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…script-and-ci-configuration #391 Strengthen ESLint, TypeScript, And CI Configuration
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.3.2 to 4.3.3. - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss) --- updated-dependencies: - dependency-name: tailwindcss dependency-version: 4.3.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
buildApplicationWhere/buildApplicationScopeWhere/buildReviewablePositionWhere replace the file-private buildBaseWhere and the two hand-rolled manager clauses in actions/applications.ts; the 'listable' | 'reviewable' argument replaces the per-caller withdrawn patches, and the omitted status key on the scope builder makes overwriting the manager scope a type error rather than a "merge, don't overwrite" comment. /applications search params are now zod-parsed instead of cast. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Step 3 checks the item's body for the SESSION REQUIRED marker but the gh pr view / gh issue view calls above it didn't request the body field, so there was nothing to inspect at that point. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ization-scope-copies #393 Share The Remaining Authorization Scope Copies In Application Actions
…ilwindcss-4.3.3 Bump tailwindcss from 4.3.2 to 4.3.3
Announcing was a caveat buried in the dispatch table, not a tick step, and nothing said the human must run /implement in a session other than the cockpit's own. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…g-tickets-from-an-operator-session #503 Implement .claude Config Tickets From an Operator Session
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
bump version to v1.7.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v1.7.0
Changes
Dependabot
Testing plan
claudelabel → the approval check is skipped rather than blocking