Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
5f950f7
#387 route a deactivated live session to an explanatory screen
cielbellerose Aug 18, 2026
43a616e
#387 add admin-only page to reactivate deactivated accounts
cielbellerose Aug 18, 2026
3880d2b
#387 add authorization tests for reactivateUser
cielbellerose Aug 18, 2026
ad3ccb9
#387 address review feedback
cielbellerose Aug 18, 2026
f8e96d6
#387 remove in-app deactivated-user insight and reactivation
cielbellerose Aug 19, 2026
3e5a5b7
#387 address review feedback
cielbellerose Aug 19, 2026
c0d88ef
Bump @hookform/resolvers from 5.8.0 to 5.9.0
dependabot[bot] Aug 19, 2026
5d81747
#443 add edit name dialog to the user dropdown
cielbellerose Aug 18, 2026
242ba72
#443 drop redundant auth client sync from the sign-up name step
cielbellerose Aug 18, 2026
72b1a90
#443 snapshot applicant name on submission
cielbellerose Aug 19, 2026
964ed26
#443 fix rename warning copy and trim schema comment
cielbellerose Aug 19, 2026
172a3c1
#443 show current name beside a renamed applicant
cielbellerose Aug 19, 2026
86a08fb
#443 dedupe renamed-applicant check and show it everywhere
cielbellerose Aug 19, 2026
729b73d
Merge branch 'dev' into 387-add-account-deactivated-screen-and-admin-…
cielbellerose Aug 19, 2026
334713f
Merge pull request #498 from SGAOperations/443-let-users-edit-their-n…
cielbellerose Aug 19, 2026
d96c83d
Merge pull request #500 from SGAOperations/387-add-account-deactivate…
cielbellerose Aug 19, 2026
e69eef7
Merge pull request #507 from SGAOperations/dependabot/npm_and_yarn/ho…
b-at-neu Aug 19, 2026
a476f07
Bump @prisma/adapter-pg from 7.8.0 to 7.9.1
dependabot[bot] Aug 19, 2026
9136740
#364 add the application status transition graph to constants
cielbellerose Aug 18, 2026
32e5866
#364 enforce the status transition graph in application actions
cielbellerose Aug 18, 2026
9f4d9af
#364 replace the status dropdown with graph-driven quick actions
cielbellerose Aug 18, 2026
6e800b2
#364 add tests for the application status transition graph
cielbellerose Aug 18, 2026
a3200a2
#364 address review feedback
cielbellerose Aug 18, 2026
75af200
#364 fix bulk moves to back-only targets like applied
cielbellerose Aug 18, 2026
71f8cd9
#364 address review feedback
cielbellerose Aug 19, 2026
ce630b9
#364 apply human-directed status label, quick-action, and bulk copy f…
cielbellerose Aug 19, 2026
c4a5cc4
#364 fix bulk skip messaging to use forward-only sources
cielbellerose Aug 19, 2026
6971dad
#364 fix stale bulk-skip message assertion
cielbellerose Aug 19, 2026
06531be
#364 stop claiming skipped rows stay selected on a source mismatch
cielbellerose Aug 19, 2026
e9bdf2b
#513 gate the approval check on the claude label
b-at-neu Aug 19, 2026
82dceec
#514 make the applications page full width and codify page width tiers
b-at-neu Aug 19, 2026
1f066e0
Merge pull request #519 from SGAOperations/514-make-applications-page…
b-at-neu Aug 19, 2026
0cf9275
#513 trim the approval-check header comment
b-at-neu Aug 19, 2026
451fd6e
Merge pull request #499 from SGAOperations/364-add-application-status…
cielbellerose Aug 19, 2026
95a5388
Merge pull request #518 from SGAOperations/513-gate-the-approval-chec…
b-at-neu Aug 19, 2026
857852a
Merge pull request #506 from SGAOperations/dependabot/npm_and_yarn/pr…
b-at-neu Aug 19, 2026
d9f31ae
#503 route config tickets to an operator session via /implement
b-at-neu Aug 19, 2026
f019e79
#503 replace the operator route label with a SESSION REQUIRED body ma…
b-at-neu Aug 19, 2026
b15a8fa
#503 pass the claude label when /implement opens its PR
b-at-neu Aug 19, 2026
caa1c2b
#391 pin node 24 across engines, nvmrc, and ci
b-at-neu Aug 19, 2026
2a570da
#391 enable noUncheckedIndexedAccess and modernize tsconfig target
b-at-neu Aug 19, 2026
9dd1e03
#391 enable type-aware eslint rules and fix every violation
b-at-neu Aug 19, 2026
7a8d6b1
#391 modernize ci actions, npm ci, and prisma generate script
b-at-neu Aug 19, 2026
096544e
#391 add build, lockfile, audit, and codeql ci gates
b-at-neu Aug 19, 2026
28054a5
#391 add codeowners and pr template
b-at-neu Aug 19, 2026
23af52c
#391 harden migrate-db with dispatch, environment gate, and preflight
b-at-neu Aug 19, 2026
024287a
#391 address review feedback
b-at-neu Aug 19, 2026
0683e0e
#391 address human feedback on ci config
b-at-neu Aug 19, 2026
dac6803
#391 let @types/node float instead of pinning
b-at-neu Aug 19, 2026
7e21c4b
#391 trim workflow comments and drop codeql schedule trigger
b-at-neu Aug 19, 2026
bbba071
Merge pull request #517 from SGAOperations/391-strengthen-eslint-type…
b-at-neu Aug 19, 2026
f69fb68
Bump tailwindcss from 4.3.2 to 4.3.3
dependabot[bot] Aug 19, 2026
d06dfba
#393 share the reviewer scoping where in lib/auth/scopes.ts
b-at-neu Aug 19, 2026
70551f0
#503 add body to the gh queries in step 3 of the implement skill
b-at-neu Aug 19, 2026
3f80e7c
Merge pull request #523 from SGAOperations/393-share-remaining-author…
b-at-neu Aug 20, 2026
4030431
Merge pull request #508 from SGAOperations/dependabot/npm_and_yarn/ta…
b-at-neu Aug 20, 2026
db3aa3d
#503 make the cockpit's session-required handoff explicit
b-at-neu Aug 20, 2026
49c28e5
Merge pull request #520 from SGAOperations/503-implement-claude-confi…
b-at-neu Aug 20, 2026
c754e41
bump version to v1.7.0
b-at-neu Aug 20, 2026
c6a238a
Merge pull request #524 from SGAOperations/bump/v1.7.0
b-at-neu Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .claude/agents/impl-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,14 @@ gh issue edit N --repo SGAOperations/aplio --remove-label "plan approved" --add-
--title "#N <Ticket Title In Title Case>" \
--body-file .temp/pr-N.md \
--assignee "<issue-assignee-login>" \
--label "claude" \
--head N-ticket-name-in-kebab-case
```

`--assignee` is the **issue's assignee login recorded in pre-flight** (`@me` if the issue had none) — the PR must carry the same owner as its issue or it never shows up in that operator's `ready for review` query. **Substitute the literal login string you read in pre-flight; never `$(...)` command substitution** — it isn't allow-listed and would silently produce an empty argument.

`--label "claude"` is what **activates the approval gate**: `.github/workflows/approval-check.yml` runs only on PRs carrying `claude`, so a PR opened without it merges with **no** approval gate at all.

**Always target `dev`** (the integration branch) — never open feature PRs against `main`. Releases flow `dev → main` via the `/release` command.

Note the PR number returned.
Expand Down
8 changes: 8 additions & 0 deletions .claude/agents/plan-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ Construct the **full new issue body** (original ticket description preserved on
gh issue edit N --repo SGAOperations/aplio --body-file .temp/plan-N.md
```

**Session-required declaration.** Some tickets can't be handed to a dispatched agent at all. Today that means any plan whose **## Changes** touches `CLAUDE.md` or `.claude/**` — the harness blocks a subagent's `Edit` there — but the marker is deliberately about the _routing_, not the cause, so future categories reuse it. For those plans, the body's **first line, directly under the `## Implementation Plan` heading and before `## Overview`**, is the marker, with the reason after the colon:

```
> **SESSION REQUIRED:** touches `CLAUDE.md` / `.claude/**` — a dispatched agent can't edit those
```

The literal string `SESSION REQUIRED` is what the cockpit greps for — **never reword it**. The reason after the colon is free text and is the part that generalizes. Emit it in **revision mode** too, since a revised plan can change the routing, and never emit it for a plan that doesn't need a session. Full rules: `.claude/docs/PIPELINE.md` → "Session-required tickets".

**Use the fixed structure** in `.claude/docs/PIPELINE.md` → "Implementation plan" — the canonical section list, order, and writing style. Think through how the feature should actually work and look (it's a product/UX design, not just a file checklist), but write it tight: bullets, short sentences, **don't restate the ticket**, omit sections that don't apply. The plan must still _decide_ the substance — even though it's brief:

- **Design each UX state** (happy + unhappy/edge), layout/hierarchy, key interactions, and the actual **copy** — in the **## UX states** section (only if there's UI).
Expand Down
10 changes: 9 additions & 1 deletion .claude/docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,15 @@ Any change to a brand/status token must keep ≥4.5:1 contrast against its paire

- **Radius:** `--radius: 0.75rem`. Use `rounded-md`/`rounded-lg`/`rounded-xl` (derived from the scale); don't use arbitrary radii. Inputs/buttons/cards inherit the shadcn defaults.
- **Spacing:** Tailwind 4-point scale. Card padding `p-6` (compact `p-4`); stack gaps `gap-4`/`gap-6`; form field gap `gap-2`. Be consistent rather than pixel-tuning.
- **Containers:** constrain reading width (`max-w-*`), center with `mx-auto`; full-bleed only for tables/dashboards.
- **Page width tiers:** every route inside the app shell picks exactly one tier for its top-level container. `app-shell.tsx` supplies only `p-6`, so the page owns the width.

| Tier | Container classes | Use for |
| -------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Full-bleed** | none (no `max-w`) | list, table and dashboard pages — `/`, `/positions`, `/users`, `/applications`, `/my-applications`, `/global-questions` |
| **Wide** | `mx-auto max-w-5xl` | two-column review/detail pages — `/applications/[id]`, `/my-applications/[id]` |
| **Narrow** | `mx-auto max-w-2xl` | single-column forms and reading views — `/profile`, `/positions/[id]/apply`, `/positions/[id]/edit` |

There is no fourth tier: `max-w-6xl`/`4xl`/`3xl` on a page container is a bug. Inside a full-bleed page, constraining an individual prose block (`max-w-2xl` on a description) is correct and not a tier violation — see `/positions/[id]`. A route's `loading.tsx` must use the same tier as its `page.tsx`, or the skeleton shifts on resolve. Routes outside the app shell (`(legal)`, `login`) set their own width.

## 5. Components

Expand Down
Loading
Loading