-
Notifications
You must be signed in to change notification settings - Fork 0
Batch 1: Bootstrap reconciled release/2.1 onto 2.0 base (#758) #768
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
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
c309ee1
chore(release-2.1): batch 1 — bootstrap reconciled branch
alfredorubin96 0f77519
fix: migration guard fail-closed on jq errors, SSO var count typo
alfredorubin96 080d0f6
ci: trigger CI on PRs targeting feat/* branches
alfredorubin96 3ee243d
fix(connection): jest config — transform ESM uuid in testcontainers c…
alfredorubin96 c84fac6
fix(connection): also skip dist/ in jest.testPathIgnorePatterns
alfredorubin96 29da491
fix(connection): use @jest/globals in errors test (was importing vitest)
alfredorubin96 ced5911
fix(app): refresh-button no-op + write-route raw error leak (#778, #779)
alfredorubin96 d471a89
test(e2e): serialize widget-lab consumption tests to prevent template…
alfredorubin96 9fab4ce
test(component): bump selection-count DataGrid test timeout to 15s
alfredorubin96 86943b4
fix(test): clear fullscreen-ready timer on unmount
alfredorubin96 1c588bb
test(dashboard-container): cover fullscreen-timer cleanup branches
alfredorubin96 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| #!/bin/bash | ||
| set -euo pipefail | ||
| # Hook: Prevent editing existing migration files (forward-only migrations) | ||
| # Rule: "Forward-only. Idempotent." — CLAUDE.md | ||
| INPUT=$(cat) | ||
| FILE_PATH=$(echo "$INPUT" | jq -er '.tool_input.file_path // .tool_input.filePath // empty') || { | ||
| echo "BLOCKED: invalid hook payload (missing/invalid tool_input.file_path)" >&2 | ||
| exit 2 | ||
| } | ||
| [ -z "$FILE_PATH" ] && exit 0 | ||
|
|
||
| # Only check migration files | ||
| case "$FILE_PATH" in | ||
| *migrations/*.sql|*migrations/*.ts) | ||
| # Allow creating NEW migration files (Write tool with no existing file) | ||
| TOOL_NAME=$(echo "$INPUT" | jq -er '.tool_name // empty') || TOOL_NAME="" | ||
| if [ "$TOOL_NAME" = "Write" ] && [ ! -f "$FILE_PATH" ]; then | ||
| exit 0 | ||
| fi | ||
| # Block editing existing migration files | ||
| if [ -f "$FILE_PATH" ]; then | ||
| echo "BLOCKED: Cannot edit existing migration file: $(basename "$FILE_PATH")" >&2 | ||
| echo "Rule: Migrations are forward-only. Create a new migration instead." >&2 | ||
| echo "Use: npm run db:generate" >&2 | ||
| exit 2 | ||
| fi | ||
| ;; | ||
| esac | ||
|
|
||
| exit 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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| # NeoBoard — Environment Variables | ||
| # Copy to app/.env.local and fill in values. | ||
| # For dev setup, scripts/setup.sh generates these automatically. | ||
|
|
||
| # PostgreSQL connection (required) | ||
| DATABASE_URL=postgresql://neoboard:neoboard@localhost:5432/neoboard | ||
|
|
||
| # 32-byte hex key for AES-256-GCM credential encryption (required) | ||
| # Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | ||
| # WARNING: losing this key makes all stored credentials unrecoverable. | ||
| ENCRYPTION_KEY= | ||
|
|
||
| # Previous encryption key — set this when rotating ENCRYPTION_KEY (optional) | ||
| # Rotation flow: 1) copy current ENCRYPTION_KEY to ENCRYPTION_KEY_OLD, | ||
| # 2) generate and set a new ENCRYPTION_KEY, 3) restart the app, | ||
| # 4) call POST /api/admin/rotate-key (admin only) to re-encrypt all credentials, | ||
| # 5) remove ENCRYPTION_KEY_OLD after successful rotation. | ||
| # ENCRYPTION_KEY_OLD= | ||
|
|
||
| # Auth.js session secret (required) | ||
| # Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | ||
| NEXTAUTH_SECRET= | ||
|
|
||
| # Application URL (required) | ||
| NEXTAUTH_URL=http://localhost:3000 | ||
|
|
||
| # One-time token for creating the first admin account via /signup (optional, dev only) | ||
| # Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | ||
| ADMIN_BOOTSTRAP_TOKEN= | ||
|
|
||
| # HMAC secret for API key hashing — required if using API keys (optional) | ||
| # Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | ||
| API_KEY_HMAC_SECRET= | ||
|
|
||
| # Self-registration toggle — set to "false" to disable /signup (optional, default: true) | ||
| # REGISTRATION_ENABLED=true | ||
|
|
||
| # Tenant ID — defaults to "default" if unset (optional) | ||
| # TENANT_ID=default | ||
|
|
||
| # Session max age in seconds — defaults to 28800 (8 hours) if unset (optional) | ||
| # SESSION_MAX_AGE=28800 | ||
|
|
||
| # Log level — one of: fatal, error, warn, info, debug, trace (optional, default: info) | ||
| # LOG_LEVEL=info | ||
|
|
||
| # Per-user query rate limit — max queries per minute per user (optional, default: 60) | ||
| # QUERY_RATE_LIMIT=60 | ||
|
|
||
| # ── SSO / OIDC (optional) ──────────────────────────────────────────────────── | ||
| # Set all four required vars to enable a single OIDC provider via env. | ||
| # Requires NEOBOARD_EDITION=enterprise. | ||
| # For multiple providers, use the Admin UI (Settings > Authentication). | ||
|
|
||
| # Required (all four must be set to activate SSO) | ||
| # NEOBOARD_EDITION=enterprise | ||
| # OIDC_ISSUER=https://myorg.okta.com | ||
| # OIDC_CLIENT_ID=neoboard | ||
| # OIDC_CLIENT_SECRET=your-client-secret | ||
|
|
||
| # Optional | ||
| # OIDC_DISPLAY_NAME=Company SSO | ||
| # OIDC_SCOPES=openid profile email | ||
| # OIDC_CLAIM_KEY=groups | ||
| # OIDC_ADMIN_VALUE=neoboard-admins | ||
| # OIDC_CREATOR_VALUE=neoboard-editors | ||
| # OIDC_READER_VALUE=neoboard-viewers | ||
| # OIDC_AUTO_PROVISION=true | ||
| # OIDC_DEFAULT_ROLE=creator | ||
| # OIDC_ENFORCE_SSO=false | ||
|
|
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,3 @@ | ||
| [submodule "enterprise"] | ||
| path = enterprise | ||
| url = https://github.com/alfredo1996/neoboard-enterprise.git |
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
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
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.
Uh oh!
There was an error while loading. Please reload this page.