-
Notifications
You must be signed in to change notification settings - Fork 0
feat(reporting): build Stage 09 reporting foundations #47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Andreas-Froyland
wants to merge
373
commits into
main
Choose a base branch
from
support-platform
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
373 commits
Select commit
Hold shift + click to select a range
f459d04
Merge remote-tracking branch 'origin/support-platform' into agent1/st…
Andreas-Froyland c23a8a5
merge: ratify Stage 04 parallel-agents split (agent1/stage-04 docs)
Andreas-Froyland 7740503
feat(support): extend the email layer and give ChannelDriver an outbo…
Andreas-Froyland ded1976
docs(support): correct the pinned attachment type and record SUP-04-1…
Andreas-Froyland 0e8ba96
feat(support): add lib/support-email.ts composition helpers (SUP-04-2)
Andreas-Froyland bbf250d
merge: sync origin/support-platform (SUP-04-2 landed)
Andreas-Froyland e62d887
merge: integrate agent1/stage-04 (SUP-04-1 corrected) into support-pl…
Andreas-Froyland db896c5
chore(todo): check off SUP-04-1, SUP-04-2 -- integrated into support-…
Andreas-Froyland ebe8d1d
feat(support): per-inbox From/Reply-To/signature + sending authorizat…
Andreas-Froyland c165315
chore(todo): check off SUP-04-6
Andreas-Froyland cc8c476
docs(support): record SUP-04-6 landing for Agent 1's SUP-04-4
Andreas-Froyland e7fddc1
feat(support): add supportOutboundDelivery outbox + claim/retry worke…
Andreas-Froyland 7edf2c8
merge: sync origin/support-platform (SUP-04-6 landed)
Andreas-Froyland a8cae92
feat(support): add resetOutboundDeliveryForRetry for SUP-04-10's retr…
Andreas-Froyland dd16d28
docs(support): record SUP-04-3 landing for Agent 1's SUP-04-4 and Age…
Andreas-Froyland 8d94454
merge: integrate agent1/stage-04 (SUP-04-3) into support-platform
Andreas-Froyland 0bbafcb
chore(todo): check off SUP-04-3 -- integrated into support-platform
Andreas-Froyland 504ee57
feat(support): agent attachment upload via presign, size cap + type a…
Andreas-Froyland 2258133
chore(todo): check off SUP-04-7
Andreas-Froyland c588879
wip(support): SUP-04-4 outgoing-reply wiring, before reconciling SUP-…
Andreas-Froyland 9ea4615
merge: sync origin/support-platform (SUP-04-7 landed)
Andreas-Froyland d4c0f91
fix(support): align SUP-04-4's attachment handling with SUP-04-7's re…
Andreas-Froyland 233ada8
docs(support): record SUP-04-4/04-5 landing for Agent 2's SUP-04-10/0…
Andreas-Froyland b16ddff
feat(support): add auto-reply with all four guards (SUP-04-8)
Andreas-Froyland e3caac7
docs(support): record SUP-04-8 landing and two Stage 06 judgment calls
Andreas-Froyland 14dc2e6
merge: integrate agent1/stage-04 (SUP-04-4, 04-5, 04-8) into support-…
Andreas-Froyland c9c21f0
chore(todo): check off SUP-04-4, SUP-04-5, SUP-04-8 -- integrated int…
Andreas-Froyland d57b595
feat(support): delivery status in the thread UI + retry action (SUP-0…
Andreas-Froyland 4e6022b
chore(todo): check off SUP-04-10
Andreas-Froyland 68d104b
test(support): E2E for the outbound round trip -- inbound -> agent re…
Andreas-Froyland d0a9b15
chore(todo): check off SUP-04-11
Andreas-Froyland 2f0503c
feat(support): delivery/bounce webhook, keyed on supportDeliveryEvent…
Andreas-Froyland fd01de5
docs(support): record SUP-04-9 landing -- Stage 04's biggest open risk
Andreas-Froyland 61ba2b4
fix(test): clean up leftover pending outbox rows in integration tests
Andreas-Froyland 5231919
merge: integrate agent1/stage-04 (SUP-04-9) into support-platform
Andreas-Froyland 3f8058c
chore(todo): check off SUP-04-9 -- Stage 04 complete, 11/11
Andreas-Froyland 83603d2
fix(support): recover outbound deliveries after restart
Andreas-Froyland dbfe74e
docs(support): define stage 1-4 hardening
Andreas-Froyland f72ecf3
fix(support): harden stage 1-4 review findings
Andreas-Froyland 0ae4d13
docs(support): plan stage 1-4 hardening implementation
Andreas-Froyland 5abb5f6
feat(support): add hardening data contracts
Andreas-Froyland 6bff25e
fix(support): defer unsafe index cutovers
Andreas-Froyland d6a2096
feat(support): rank inbox access
Andreas-Froyland df7cbdd
fix(support): harden ranked inbox access
Andreas-Froyland ceb6820
feat(support): enforce inbox roles
Andreas-Froyland 7d8bb8f
test(support): execute route authorization inventory
Andreas-Froyland c1c18e6
test(support): make route inventory assertions exact
Andreas-Froyland 5e071f8
fix(support): preserve joined inbox access
Andreas-Froyland 025d205
feat(support): reflect inbox permissions in the UI
Andreas-Froyland 7402bb9
fix(support): harden permission recovery and fixtures
Andreas-Froyland 2e74a5b
fix(support): close stale context recovery races
Andreas-Froyland 8fa5d7c
fix(support): guard final stale recovery writes
Andreas-Froyland 2db2d33
fix(support): close remaining recovery races
Andreas-Froyland af8d1a2
test(support): stabilize team-switch recovery proof
Andreas-Froyland f4d3f47
test(support): prove stale contact recovery isolation
Andreas-Froyland 4a97882
feat(support): auto-link authenticated feedback
Andreas-Froyland 4ac6380
fix(support): close auto-link race windows
Andreas-Froyland e8973e3
docs(support): finalize auto-link verification report
Andreas-Froyland 43939e4
test(support): keep auto-link fixture lint-clean
Andreas-Froyland 20bff19
docs(support): record final auto-link lint count
Andreas-Froyland a899276
fix(support): serialize contact identity lifecycle
Andreas-Froyland afbe6f7
fix(support): serialize contact unlinking
Andreas-Froyland a20950d
test(support): prove cross-team lock independence
Andreas-Froyland 82cd6f5
feat(support): bound contact timelines
Andreas-Froyland 36aa8f3
fix(support): harden timeline pagination races
Andreas-Froyland c20ea61
feat(support): own attachment upload sessions
Andreas-Froyland a0145b4
feat(support): finalize attachment messages
Andreas-Froyland 035e237
feat(support): clean attachment upload sessions
Andreas-Froyland c3c19b1
docs(support): re-cut Stage 05 for a 1-3 agent MVP
Andreas-Froyland 5b82348
docs(support): link Stage 05 backlog to issues #37-#46
Andreas-Froyland fc20edf
chore(support): checkpoint stage 1-4 review
Andreas-Froyland f19de54
docs(support): preserve task 5 review history
Andreas-Froyland 6863374
docs(support): finalize migration handoff
Andreas-Froyland 9212e5a
fix(support): keep attachment upload phases reactive
Andreas-Froyland 8ac2051
docs(support): hand off completed attachment review
Andreas-Froyland 610b578
fix(support): scope email threading to inboxes
Andreas-Froyland 6049e9c
docs(support): hand off completed threading review
Andreas-Froyland 47ae7f4
fix(support): correlate delivery events through outbox
Andreas-Froyland 1780caf
docs(support): hand off completed delivery audit
Andreas-Froyland 3ced66d
fix(support): schedule bounded outbound retries
Andreas-Froyland 1fcece2
docs(support): hand off completed retry audit
Andreas-Froyland f75cc74
chore(build): make database operations explicit
Andreas-Froyland 86a4cb9
docs(support): hand off completed build audit
Andreas-Froyland ac95c41
test(support): prove multi-instance realtime
Andreas-Froyland ec8937f
fix(auth): pin secure-cookie selection
Andreas-Froyland 0ac0472
chore(dev): make Vite dev allowed hosts env-driven
Andreas-Froyland e0ea08f
docs(support): record task 15 and its production defect
Andreas-Froyland 6a89fe2
chore(support): record hardening observability
Andreas-Froyland 1069580
fix(test): make the worktree E2E path run against its own server
Andreas-Froyland 41cecd5
docs(support): close out the stage 01-04 hardening tasks
Andreas-Froyland ddb1716
fix(support): close the review gate's important findings
Andreas-Froyland ab572af
docs(support): record the final review gate outcome
Andreas-Froyland 3375287
fix(support): resolve the review gate's minor findings
Andreas-Froyland 393ad47
docs(support): record the minor findings as resolved
Andreas-Froyland ec9f8df
chore: stop tracking generated SDD review packages
Andreas-Froyland 4a19726
merge: integrate stage 01-04 hardening review
Andreas-Froyland e92c638
docs(support): mark the stage 01-04 hardening integrated
Andreas-Froyland 56484fe
chore(support): queue stage 05a work
Andreas-Froyland f005c24
docs(support): record stage 05a execution ledger
Andreas-Froyland 20df161
feat(support): add conversation claim assignment
Andreas-Froyland b94c2e7
fix(support): make explicit claims atomic
Andreas-Froyland c02e2d2
merge: integrate SUP-05A-1 claim assignment
Andreas-Froyland 1a70cb5
chore(support): complete SUP-05A-1
Andreas-Froyland b411689
feat(support): add per-agent conversation read state
Andreas-Froyland c9b5f18
fix(support): harden conversation read state races
Andreas-Froyland 53e372f
fix(support): standardize read-state missing conversation error
Andreas-Froyland d198a00
chore(support): remove misplaced task report
Andreas-Froyland a570a1d
merge: integrate SUP-05A-2 read state
Andreas-Froyland 2fee359
chore(support): complete SUP-05A-2
Andreas-Froyland f8ea7c1
feat(support): add fixed inbox views
Andreas-Froyland 5da3d57
test(support): cover fixed view review cases
Andreas-Froyland b7ecf4b
merge: integrate SUP-05A-3 fixed views
Andreas-Froyland 9960b58
chore(support): complete SUP-05A-3
Andreas-Froyland 8ae0c2f
feat(support): persist local conversation drafts
Andreas-Froyland 716928c
fix(support): clear submitted draft after stale send
Andreas-Froyland 96faf33
merge: integrate SUP-05A-4 local drafts
Andreas-Froyland f6cf346
chore(support): complete SUP-05A-4
Andreas-Froyland e85e0ee
feat(support): add team canned responses
Andreas-Froyland 0a2194e
merge: integrate SUP-05A-5 canned responses
Andreas-Froyland 3943c07
chore(support): complete SUP-05A-5
Andreas-Froyland ceb8405
feat(support): add global conversation search
Andreas-Froyland 26d218a
merge: integrate SUP-05A-6 global search
Andreas-Froyland d07ecef
chore(support): complete SUP-05A-6
Andreas-Froyland bcf0255
feat(support): add keyboard shortcuts
Andreas-Froyland f929fc8
fix(support): stabilize keyboard shortcuts e2e flow
Andreas-Froyland c461222
merge: integrate SUP-05A-7 keyboard shortcuts
Andreas-Froyland 372ad4e
fix(support): guard shortcut controls and updates
Andreas-Froyland 5161226
merge: integrate SUP-05A-7 shortcut fixes
Andreas-Froyland e093aff
chore(support): complete SUP-05A-7
Andreas-Froyland b83019f
docs(support): record SUP-05A-7 brief
Andreas-Froyland f82a802
docs(support): add SUP-05A-8 brief
Andreas-Froyland 074e635
test(support): add Stage 05A acceptance coverage
Andreas-Froyland ca892cb
test(support): strengthen Stage 05A acceptance assertions
Andreas-Froyland 22f85bf
merge: integrate SUP-05A-8 acceptance coverage
Andreas-Froyland 9cc51c9
chore(support): complete SUP-05A-8
Andreas-Froyland b5c79cf
docs(todo): brief SUP-X-3 OpenAPI scanner
Andreas-Froyland c35e47a
docs(todo): brief SUP-X-6 format gate
Andreas-Froyland 0fbad79
chore(ci): add format check to harness
Andreas-Froyland 7d3ed22
style: normalize files for format gate
Andreas-Froyland 70f1192
merge: integrate SUP-X-6 format gate
Andreas-Froyland 6d5a372
feat(api): generate OpenAPI paths at build time
Andreas-Froyland 03b7de3
merge: integrate SUP-X-3 OpenAPI scanner
Andreas-Froyland 8943e9b
chore(todo): close open cross-cutting items
Andreas-Froyland 97f7575
fix(settings): restrict team module toggles to admins
Andreas-Froyland f69283a
chore(todo): close SUP-X-4
Andreas-Froyland 2a39ad8
feat(support): ship feedback bridge
Andreas-Froyland ace5fa5
feat(sla): add business hours foundations
Andreas-Froyland 1d2a2be
feat(sla): match policies when creating conversations
Andreas-Froyland 4daf92e
feat(sla): pause and resume conversation timers
Andreas-Froyland 629aac2
feat(sla): add idempotent breach sweeper
Andreas-Froyland 3597dee
feat(sla): expose countdowns and breaching view
Andreas-Froyland 669ff68
feat(sla): add team SLA settings
Andreas-Froyland d3e68d4
fix(sla): keep thread countdown helpers as methods
Andreas-Froyland f82ea9d
docs(sla): mark stage 06 complete
Andreas-Froyland 82b3b4c
feat(automation): add rule schema and condition evaluator
Andreas-Froyland d71b4c8
feat(automation): isolate action execution failures
Andreas-Froyland 19e8b6e
feat(automation): evaluate rules after support events
Andreas-Froyland e6afae3
feat(automation): schedule time-based rule evaluation
Andreas-Froyland 698ae58
feat(automation): add rule management surfaces
Andreas-Froyland 214127b
feat(csat): add durable survey dispatch
Andreas-Froyland 69a662c
feat(csat): add public response flow
Andreas-Froyland d88eda0
feat(csat): add survey configuration
Andreas-Froyland b7d79d0
feat(csat): add live score surfaces
Andreas-Froyland 9884c76
feat(reporting): add daily metric foundation
Andreas-Froyland 39de1fe
feat(reporting): record conversation status events
Andreas-Froyland 0bd04ff
test(reporting): cover status event transaction wiring
Andreas-Froyland 2eaf999
docs(reporting): record status event slice
Andreas-Froyland 02d5553
feat(reporting): close status event write paths
Andreas-Froyland c97769e
docs(reporting): close status event coverage
Andreas-Froyland f20f009
docs(reporting): record status event verification
Andreas-Froyland c74ff2b
fix(reporting): harden csat summary scope
Andreas-Froyland 88d4b4f
fix(reporting): constrain csat inbox ownership
Andreas-Froyland f596c36
docs(reporting): record csat hardening
Andreas-Froyland cc37da1
feat(reporting): persist timezone and csat scale semantics
Andreas-Froyland 1aa94da
docs(reporting): record semantics contract
Andreas-Froyland e9d9e2f
docs(reporting): clean plan prose
Andreas-Froyland afeaba7
merge: resolve main into support-platform
Andreas-Froyland d5282dd
test(build): cover domain backfill lifecycle
Andreas-Froyland 99f3a33
fix(review): address PR findings and CI runtime
Andreas-Froyland 1288dab
ci: resolve Neon branch URL within e2e job
Andreas-Froyland adc9ba8
ci: configure upload token for e2e server
Andreas-Froyland acb0863
test(e2e): click product heading for settings navigation
Andreas-Froyland ac0ca40
test(e2e): assert product card destination
Andreas-Froyland af053ea
fix(feedback): restore table sort filter
Andreas-Froyland d665359
test(e2e): allow time for hosted feedback workflow
Andreas-Froyland 301153c
fix(review): address PR runtime and deployment findings
Andreas-Froyland 2823cd2
fix(review): address latest hosted feedback findings
Andreas-Froyland cd1ce85
test(feedback): stabilize comment edit workflow
Andreas-Froyland 2502290
fix(review): close Cubic runtime and deployment findings
Andreas-Froyland 499eefb
test(e2e): isolate unauthenticated upload request
Andreas-Froyland f794a4e
test(e2e): use exact feedback back button locator
Andreas-Froyland 1a3e531
test(e2e): stabilize multi-step feedback navigation
Andreas-Froyland 16d1f31
test(e2e): wait for created product before rendering
Andreas-Froyland 256ac6c
test(e2e): await browser product data before rendering
Andreas-Froyland 7e59af0
test(e2e): use exact single-product back locator
Andreas-Froyland 3e31e8e
fix(domains): activate localhost custom domains
Andreas-Froyland 85ff625
test(seed): enable roadmap for demo project
Andreas-Froyland e8ac472
test(e2e): configure roadmap navigation fixture
Andreas-Froyland aa88f65
test(e2e): fix anonymous vote count locator
Andreas-Froyland 1659e88
test(e2e): isolate public feedback rate limits
Andreas-Froyland b99c0e0
test(e2e): preserve public-host auth cookies
Andreas-Froyland df88835
fix(auth): use host-only cookies for local subdomains
Andreas-Froyland 69b44fd
fix(auth): hand off local cross-host redirects
Andreas-Froyland bd1e382
fix(public): label feedback details dialog
Andreas-Froyland 96e5ef6
test(e2e): configure GitHub OAuth fixtures
Andreas-Froyland 0c0c30b
test(e2e): track breaching conversation view
Andreas-Froyland 7e0a9ab
test(e2e): disable Nuxt devtools in Playwright server
Andreas-Froyland 3c8faf0
test(e2e): wait for onboarding hydration
Andreas-Froyland 82ab769
test(e2e): wait for products hydration
Andreas-Froyland e7963df
test(e2e): use preview server in CI
Andreas-Froyland 1c39ad2
test(e2e): accept secure Better Auth cookies
Andreas-Froyland cf4eeee
test(e2e): allow cold preview startup
Andreas-Froyland b19b7eb
test(e2e): wait for login controls to hydrate
Andreas-Froyland 07d71dd
test(e2e): avoid private Vue hydration probes
Andreas-Froyland ac164a5
test(e2e): wait for onboarding hydration
Andreas-Froyland 094a67b
test(e2e): wait for products hydration
Andreas-Froyland c594e5d
test(e2e): target product dialog heading
Andreas-Froyland f21a504
test(e2e): wait for settings hydration
Andreas-Froyland c831565
fix(reporting): harden csat window and feedback sorting
Andreas-Froyland cec1b8d
fix(realtime): harden reconnect and shared rate limit clients
Andreas-Froyland 8bb6ed0
fix(security): harden domain and webhook guards
Andreas-Froyland 14fbb87
fix(review): harden public privacy and deployment guards
Andreas-Froyland a020160
fix(review): close latest cubic findings
Andreas-Froyland d57f581
fix(review): validate Redis integration schemes
Andreas-Froyland a975e4d
test(e2e): establish workspace for settings tabs
Andreas-Froyland b5c5714
test(e2e): reflect beta billing visibility
Andreas-Froyland 6dcbc9e
test(e2e): allow sidebar active team lookup
Andreas-Froyland ba79a12
fix(settings): refresh team panel after sidebar switches
Andreas-Froyland 733a898
fix(settings): refresh organization on team replay
Andreas-Froyland ea26219
test(e2e): use organization logo removal control
Andreas-Froyland 4d96194
test(e2e): assert organization logo removal
Andreas-Froyland a23eac2
test(e2e): target product settings headings
Andreas-Froyland 2c1572d
test(e2e): reload product settings deep links
Andreas-Froyland a22f49e
test(e2e): wait for sidebar hydration before resizing
Andreas-Froyland feb0c2d
test(e2e): seed deterministic sidebar width
Andreas-Froyland 5e0fbe1
test(e2e): wait for sidebar resize hydration
Andreas-Froyland 81d3869
fix(ui): keep sidebar resize handle above rail
Andreas-Froyland 2507d61
test(e2e): reuse page request authentication
Andreas-Froyland 3ec57cd
test(e2e): use configured Playwright base URL
Andreas-Froyland 2b7ac48
fix(support): reconcile drafts after delayed sends
Andreas-Froyland ba53bbf
test(e2e): allow time for support flow setup
Andreas-Froyland d00ceb4
test(e2e): use anonymous requests for public feedback
Andreas-Froyland 5246edf
test(e2e): reuse page authentication for attachment flow
Andreas-Froyland f833a73
fix(products): restore default status workflow guidance
Andreas-Froyland 14a5c54
test(e2e): allow Neon claim fixture latency
Andreas-Froyland 9054bd5
test(e2e): gate proxy upload phase assertion
Andreas-Froyland 7e7959e
test(e2e): bound proxy upload wait
Andreas-Froyland 976bcad
test(e2e): handle claim dialog during click
Andreas-Froyland 291f8f7
test(e2e): allow Neon SLA detail load
Andreas-Froyland 41587d1
test(e2e): phase team switch mock
Andreas-Froyland File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| node_modules | ||
| .output | ||
| .data | ||
| .nuxt | ||
| .nitro | ||
| .cache | ||
| dist | ||
| .git | ||
| .github | ||
| .vscode | ||
| .idea | ||
| .fleet | ||
| .claude | ||
| .agents | ||
| .cursor | ||
| docs | ||
| playwright-report | ||
| test-results | ||
| tests | ||
| *.log | ||
| .env | ||
| .env.* | ||
| !.env.example | ||
| .DS_Store | ||
| README.md | ||
| export-*.csv |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # Shell scripts must keep LF line endings regardless of core.autocrlf so | ||
| # they run correctly inside Linux containers (a CRLF shebang breaks `/bin/sh`). | ||
| *.sh text eol=lf | ||
| Caddyfile text eol=lf |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,7 +26,7 @@ jobs: | |
| name: Create Neon Branch | ||
| outputs: | ||
| db_url: ${{ steps.create_neon_branch.outputs.db_url }} | ||
| db_url_with_pooler: ${{ steps.create_neon_branch.outputs.db_url_with_pooler }} | ||
| db_url_pooled: ${{ steps.create_neon_branch.outputs.db_url_pooled }} | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: Custom agent: Flag AI Slop and Fabricated Changes After this output rename, the workflow comments still instruct users to consume Prompt for AI agents |
||
| needs: setup | ||
| if: | | ||
| github.event_name == 'pull_request' && ( | ||
|
|
@@ -57,14 +57,39 @@ jobs: | |
| || github.event.action == 'reopened') | ||
| runs-on: ubuntu-latest | ||
| env: | ||
| DATABASE_URL: ${{ needs.create_neon_branch.outputs.db_url_with_pooler }} | ||
| BETTER_AUTH_URL: http://localhost:4173 | ||
| UPLOAD_TOKEN_SECRET: playwright-e2e-upload-secret | ||
| # The OAuth test only validates the generated GitHub authorization URL; | ||
| # these placeholder credentials keep the provider enabled without using | ||
| # a real GitHub application or secret in CI. | ||
| GITHUB_CLIENT_ID: playwright-e2e-github-client | ||
| GITHUB_CLIENT_SECRET: playwright-e2e-github-secret | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| # Job outputs containing connection strings are treated as secrets by | ||
| # GitHub and are not reliably forwarded between jobs. Resolve the | ||
| # already-created branch again in this job so its pooled URL is available | ||
| # to the migration, seed, and Playwright steps without crossing a job | ||
| # boundary. | ||
| - name: Resolve Neon branch connection | ||
| id: resolve_neon_branch | ||
| uses: neondatabase/create-branch-action@v6 | ||
| with: | ||
| project_id: ${{ vars.NEON_PROJECT_ID }} | ||
| branch_name: preview/pr-${{ github.event.number }}-${{ needs.setup.outputs.branch }} | ||
| api_key: ${{ secrets.NEON_API_KEY }} | ||
| role: neondb_owner | ||
| database: neondb | ||
| ssl: require | ||
| suspend_timeout: 0 | ||
|
|
||
| - name: Export Neon database URL | ||
| run: echo "DATABASE_URL=${{ steps.resolve_neon_branch.outputs.db_url_pooled }}" >> "$GITHUB_ENV" | ||
|
|
||
| - uses: actions/setup-node@v5 | ||
| with: | ||
| node-version: '20' | ||
| node-version: '22' | ||
| cache: yarn | ||
|
|
||
| - run: yarn install --frozen-lockfile | ||
|
|
@@ -103,15 +128,15 @@ jobs: | |
| # You may want to do something with the new branch, such as run migrations, run tests | ||
| # on it, or send the connection details to a hosting platform environment. | ||
| # The branch DATABASE_URL is available to you via: | ||
| # "${{ steps.create_neon_branch.outputs.db_url_with_pooler }}". | ||
| # "${{ steps.create_neon_branch.outputs.db_url_pooled }}". | ||
| # It's important you don't log the DATABASE_URL as output as it contains a username and | ||
| # password for your database. | ||
| # For example, you can uncomment the lines below to run a database migration command: | ||
| # - name: Run Migrations | ||
| # run: npm run db:migrate | ||
| # env: | ||
| # # to use pooled connection | ||
| # DATABASE_URL: "${{ steps.create_neon_branch.outputs.db_url_with_pooler }}" | ||
| # DATABASE_URL: "${{ steps.create_neon_branch.outputs.db_url_pooled }}" | ||
| # # OR to use unpooled connection | ||
| # # DATABASE_URL: "${{ steps.create_neon_branch.outputs.db_url }}" | ||
|
|
||
|
|
||
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,3 +4,4 @@ node_modules | |
| dist | ||
| .cache | ||
| server/database/migrations | ||
| server/generated/openapi-routes.ts | ||
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: In the self-hosted Docker deployment, these support settings never reach the app because
docker-compose.ymldoes not forward anySUPPORT_*variables. Add the provider and credential variables to the app environment, otherwise configured Postmark or Mailgun webhooks are rejected.Prompt for AI agents