Skip to content

resync#15

Open
sashyo wants to merge 40 commits intosashyo:mainfrom
tide-foundation:main
Open

resync#15
sashyo wants to merge 40 commits intosashyo:mainfrom
tide-foundation:main

Conversation

@sashyo
Copy link
Owner

@sashyo sashyo commented Feb 11, 2026

No description provided.

tideorg and others added 29 commits February 26, 2026 21:15
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Feature flag & types (server/config.ts, shared/schema.ts) — ENABLE_MULTI_TENANT env flag, DEFAULT_ORG_ID, OrgRole type, organizations/organizationUsers tables, organizationId column on all data tables

Database migrations (server/storage.ts) — Auto-migration for new tables + ALTER TABLE ADD COLUMN organization_id on 11 existing tables, default org seed

Auth layer (server/auth.ts, server/lib/auth/tideJWT.ts) — JWT organization_id/org_role extraction, getOrgId() helper, requireOrgAdmin(), requireGlobalAdmin() middleware

OrganizationStorage (server/storage.ts) — Full CRUD for orgs + membership management

Org-scoped storage (server/storage.ts) — All storage methods now accept orgId with WHERE organization_id = ? filtering

Route changes (server/routes.ts) — ~70+ storage calls updated with getOrgId(req), 9 new organization management endpoints (/api/admin/organizations/*)

Frontend (client/src/lib/api.ts, client/src/App.tsx, client/src/contexts/AuthContext.tsx) — Org API methods, admin gating updated for org-admin/global-admin, auth state includes org fields

Stripe per-org (server/routes.ts) — Checkout metadata includes organization_id, webhook extracts org from metadata
Deploy pre-compiled artifacts from GitHub Actions instead of
building on Azure. This ensures better-sqlite3 is compiled for
the correct Node version (20.x on Linux).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This reverts commit 6d10a93, reversing
changes made to 80edd8c.
Add npm rebuild better-sqlite3 after installing production dependencies
to ensure native modules are compiled for the correct Node version.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed NODE_VERSION from 22.x to 20.x in all workflows
- Changed azure runtime from NODE:22-lts to NODE:20-lts
- Updated package.json engines to >=20.0.0
- Removed unnecessary npm rebuild better-sqlite3 step

Node 20 works with the current setup and avoids native module
compilation issues with better-sqlite3.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated all workflows to NODE_VERSION: '22.x'
- Updated azure create-environment.sh to NODE:22-lts
- Updated package.json engines to >=22.0.0

Node 22 is required by Vite 7.x and provides longer LTS support.
Ensure Azure Web App runtime is also set to Node 22:
  az webapp config set --name keylessh --resource-group KeyleSSH --linux-fx-version "NODE:22-lts"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dockerfile: Multi-stage build with Node 22, optimized for production
- docker-build.sh: Build script with registry support
- docker-compose.yml: Local development and testing setup
- .dockerignore: Exclude unnecessary files from build context
- docker-build.yml: GitHub Actions workflow for building/pushing images

Usage:
  docker-compose up -d                    # Run locally
  ./docker-build.sh                       # Build image
  REGISTRY=ghcr.io/org PUSH=true ./docker-build.sh  # Build and push

Requires data volume mount with tidecloak.json before starting.
- Changed workflow to use Docker Hub instead of ghcr.io
- Updated docker-build.sh default to tideorg/keylessh
- Requires DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets in GitHub

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- azure/marketplace/main.bicep: Bicep template deploying:
  - Container Apps Environment
  - KeyleSSH Container App
  - TCP Bridge Container App
  - Azure Files for persistent storage
  - Log Analytics for monitoring

- azure/marketplace/createUiDefinition.json: Azure Portal UI wizard
- azure/marketplace/parameters.json: Default parameters
- azure/marketplace/deploy.sh: CLI deployment script
- azure/marketplace/README.md: Deployment documentation

- Updated docker-build.yml to build both images in parallel:
  - tideorg/keylessh (main app)
  - tideorg/keylessh-bridge (TCP bridge)
Azure Container Apps doesn't allow empty secret values.
Now Stripe secrets and env vars are only included when stripeSecretKey is provided.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- package.sh: Script to compile Bicep and create submission ZIP
- listing.md: Marketing content and asset checklist for Partner Center
- logo.svg: Source SVG logo
- generate-logos.sh: Script to convert SVG to required PNG sizes (48x48, 216x216)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Focus on three key differentiators:
- Decentralized key management by Tide (no central vault)
- Access anywhere securely (browser-based, no VPN)
- Quorum-based access control (no god-mode admin)

Includes comparison table vs traditional PAM solutions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gitguardian
Copy link

gitguardian bot commented Mar 2, 2026

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

Since your pull request originates from a forked repository, GitGuardian is not able to associate the secrets uncovered with secret incidents on your GitGuardian dashboard.
Skipping this check run and merging your pull request will create secret incidents on your GitGuardian dashboard.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
27716421 Triggered Generic Password 4c7a869 bridges/punchd-bridge/gateway/public/js/rdp-client.js View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants