Commit Graph

272 Commits

Author SHA1 Message Date
SaelixCode 79fde6e2bd fix(editor): bundle Monaco locally to fix stuck Loading state and CSP block
- Add monaco-editor to frontend deps and configure @monaco-editor/react
  to use the local bundle via loader.config({ monaco }) instead of
  fetching from cdn.jsdelivr.net (blocked by CSP scriptSrc: self)
- Wire editorWorker via Vite ?worker syntax — blob: URLs already
  permitted by existing workerSrc CSP directive, no CSP changes needed
- fix(ci): use DOCS_REPO_TOKEN in release-please so tag creation
  cascades to docker-publish.yml (GITHUB_TOKEN cannot trigger workflows)
- fix(ci): auto-merge screenshots PR via gh pr merge --auto --squash
2026-03-24 19:43:55 -04:00
Anso f93d5bd194 Merge pull request #87 from AnsoCode/chore/refresh-screenshots
docs: refresh screenshots
2026-03-24 19:14:53 -04:00
AnsoCode c56b244f58 docs: refresh screenshots 2026-03-24 23:08:45 +00:00
Anso ea57cbe97f fix(ci): correct release-please changelog section names and tag format
fix(ci): correct release-please changelog section names and tag format
2026-03-24 19:06:31 -04:00
SaelixCode e653bc2210 fix(ci): correct release-please changelog section names and tag format 2026-03-24 19:06:19 -04:00
Anso c2d5d37be4 feat(ci): add release-please automated versioning workflow
feat(ci): add release-please automated versioning workflow
2026-03-24 19:03:51 -04:00
SaelixCode c294def7cc feat(ci): add release-please automated versioning workflow 2026-03-24 19:01:09 -04:00
Anso c8047c209c fix(ci): trigger docker-publish on v* tag push instead of GitHub Release event
fix(ci): trigger docker-publish on v* tag push instead of GitHub Release event
2026-03-24 18:48:41 -04:00
SaelixCode 6c911fd67f fix(ci): trigger docker-publish on v* tag push instead of GitHub Release event 2026-03-24 18:48:21 -04:00
Anso 2c78dd4d10 Merge pull request #83 from AnsoCode/chore/refresh-screenshots
docs: refresh screenshots
2026-03-24 18:19:35 -04:00
AnsoCode 2c13d7c37d docs: refresh screenshots 2026-03-24 22:02:46 +00:00
SaelixCode a1b944ca14 chore(release): structure CHANGELOG for v0.1.0 2026-03-24 18:00:44 -04:00
Anso cf19390fd5 feat(docker): add linux/arm64 platform support via xx cross-compilation
feat(docker): add linux/arm64 platform support via xx cross-compilation
2026-03-24 17:56:11 -04:00
Anso 83dd6541cb docs: refresh screenshots (#81) 2026-03-24 11:34:41 -04:00
Anso 381701ee25 fix(docker): fix xx cross-compilation sysroot for native modules (#80)
* fix(docker): fix xx cross-compilation sysroot for node-pty and C++ modules

Three issues in the prod-deps cross-compilation stage:

1. xx-apk had `gcc` (C only) instead of `g++` — all three native modules
   (bcrypt, better-sqlite3, node-pty) use C++, so libstdc++ headers must
   be present in the target sysroot for xx-clang++ to link against them.

2. Missing `linux-headers` in the target sysroot — node-pty requires
   <pty.h> and <termios.h> which live in the Linux kernel headers package.

3. Missing AR=xx-ar — node-gyp uses `ar` to create static archives during
   the native build; without this override it falls back to the host ar
   (amd64), producing wrong-arch .a files that fail at the link step.

* fix(docker): use native g++ for same-platform builds, xx-clang only for cross

xx-clang introduces sysroot flags that break node-gyp header resolution on
Alpine when TARGETARCH == BUILDARCH (e.g. the docker-validate CI job which
builds amd64-only). The native path now uses the standard g++ toolchain
(identical to what worked before the xx refactor). The cross-compilation
path (amd64 → arm64) continues to use xx-clang / xx-clang++ / xx-ar with
the target sysroot populated via xx-apk.
2026-03-24 09:32:58 -04:00
SaelixCode f23d8c660d fix(docker): use native g++ for same-platform builds, xx-clang only for cross
xx-clang introduces sysroot flags that break node-gyp header resolution on
Alpine when TARGETARCH == BUILDARCH (e.g. the docker-validate CI job which
builds amd64-only). The native path now uses the standard g++ toolchain
(identical to what worked before the xx refactor). The cross-compilation
path (amd64 → arm64) continues to use xx-clang / xx-clang++ / xx-ar with
the target sysroot populated via xx-apk.
2026-03-24 09:25:06 -04:00
SaelixCode 518b0afb85 fix(docker): fix xx cross-compilation sysroot for node-pty and C++ modules
Three issues in the prod-deps cross-compilation stage:

1. xx-apk had `gcc` (C only) instead of `g++` — all three native modules
   (bcrypt, better-sqlite3, node-pty) use C++, so libstdc++ headers must
   be present in the target sysroot for xx-clang++ to link against them.

2. Missing `linux-headers` in the target sysroot — node-pty requires
   <pty.h> and <termios.h> which live in the Linux kernel headers package.

3. Missing AR=xx-ar — node-gyp uses `ar` to create static archives during
   the native build; without this override it falls back to the host ar
   (amd64), producing wrong-arch .a files that fail at the link step.
2026-03-24 09:20:09 -04:00
Anso 6338122253 docs: refresh screenshots (#79) 2026-03-24 09:19:21 -04:00
Anso 1e0014e183 fix(docker): replace QEMU npm execution with tonistiigi/xx cross-compilation (#78)
Node.js v20 uses ARMv8.1 LSE atomic instructions that the GitHub Actions
QEMU version does not support, causing SIGILL / "Illegal instruction" core
dumps when npm ci runs inside the arm64 emulated layer.

Solution: add a dedicated prod-deps build stage that runs on $BUILDPLATFORM
(amd64, native) and uses tonistiigi/xx + xx-clang to cross-compile native
modules (bcrypt, better-sqlite3, node-pty) for the TARGET architecture
without ever executing Node.js under QEMU. The final runtime stage simply
copies the pre-compiled node_modules from prod-deps.

Stage breakdown:
  xx            - cross-compilation helper (provides xx-clang, xx-apk)
  frontend-builder  - $BUILDPLATFORM, vite build (no native modules)
  backend-builder   - $BUILDPLATFORM, tsc compilation
  prod-deps         - $BUILDPLATFORM + xx-clang cross-compiles for $TARGET
  final             - TARGET platform, no compilation at all
2026-03-24 08:29:52 -04:00
Anso aecb311cbb docs: refresh screenshots (#77) 2026-03-24 08:07:37 -04:00
Anso 278f7f18d9 fix(ci): add linux/arm64 Docker build support with QEMU optimization (#76)
- Add docker/setup-qemu-action@v3 to docker-publish.yml (was missing,
  causing multi-platform builds to hang indefinitely)
- Add platforms: linux/amd64,linux/arm64 to build-push-action step
- Optimize Dockerfile with --platform=$BUILDPLATFORM on builder stages
  so TypeScript compilation runs at native amd64 speed; only the lean
  npm ci --omit=dev step runs under QEMU in the final stage, compiling
  the three native modules (bcrypt, better-sqlite3, node-pty) for the
  correct target architecture — reduces arm64 build time from 6+ hours
  to ~15-30 minutes
2026-03-24 07:50:33 -04:00
Anso b7a39ce597 docs: refresh screenshots (#75) 2026-03-24 07:27:28 -04:00
Anso 12467c3fc1 fix: add linux/arm64 platform to Docker build for ARM server support 2026-03-23 16:58:25 -04:00
Anso b25574a427 feat(ui): theme-aware sidebar logo with dark/light variants (#74)
Replace single sencho-logo.png with dark and light variants that
auto-switch based on the active theme (dark/light/auto system pref).
2026-03-23 12:11:23 -04:00
Anso a4e8dceacb Merge pull request #73 from AnsoCode/chore/refresh-screenshots
docs: refresh screenshots
2026-03-23 12:03:52 -04:00
AnsoCode 5825c0686c docs: refresh screenshots 2026-03-23 15:54:48 +00:00
Anso 119336b582 Merge pull request #72 from AnsoCode/chore/migrate-to-docs-json
chore(docs): migrate from mint.json to docs.json (Mintlify v2)
2026-03-23 11:52:38 -04:00
Anso 2379650e03 Merge pull request #71 from AnsoCode/chore/refresh-screenshots
docs: refresh screenshots
2026-03-23 08:37:55 -04:00
SaelixCode 2e69c8ec75 chore(docs): migrate from mint.json to docs.json
Mintlify v2 requires docs.json; mint.json is deprecated and causes
"docs.json not found" errors in the Mintlify dashboard editor.

Changes:
- Add docs/docs.json with v2 schema: navigation wrapped in { groups: [] },
  theme field, logo/favicon placeholder paths at /images/logo/
- Delete docs/mint.json
2026-03-23 08:36:15 -04:00
AnsoCode 719b7d73a9 docs: refresh screenshots 2026-03-23 12:12:10 +00:00
Anso aefeb7a35f Merge pull request #70 from AnsoCode/fix/sync-docs-rsync-excludes-git
fix(ci): exclude .git from rsync --delete in sync-docs
2026-03-23 08:09:51 -04:00
SaelixCode 8902f6fb4c fix(ci): exclude .git from rsync --delete in sync-docs
rsync --delete removes everything in the destination that is absent from
the source. sencho/docs/ has no .git directory, so rsync was deleting
sencho-docs/.git/ on every run. The commit step then had no git repo to
work with, giving 'fatal: not in a git directory'.

Fix: add --exclude='.git' to the rsync invocation.
2026-03-23 08:02:42 -04:00
Anso 4844e51714 Merge pull request #69 from AnsoCode/chore/refresh-screenshots
docs: refresh screenshots
2026-03-23 07:55:50 -04:00
AnsoCode 70e08f2763 docs: refresh screenshots 2026-03-23 04:36:17 +00:00
Anso 392a49e0bd Merge pull request #68 from AnsoCode/fix/ci-docs-jobs-v2
fix(ci): fix update-screenshots token and sync-docs empty-repo handling
2026-03-23 00:34:12 -04:00
SaelixCode b24863db66 fix(ci): fix update-screenshots token and sync-docs empty-repo handling
update-screenshots:
- Add pull-requests: write to job permissions (required by
  peter-evans/create-pull-request to open a PR)
- Switch checkout and create-pull-request from GITHUB_TOKEN to
  DOCS_REPO_TOKEN (classic PAT with repo scope); GITHUB_TOKEN is
  blocked from creating PRs against protected branches

sync-docs:
- Replace actions/checkout + init fallback with a single bash step that
  runs git clone and falls back to git init on failure; actions/checkout
  on an empty repo creates a .git in a broken state (no HEAD/branch),
  which the previous [ ! -d .git ] guard never caught, leaving the
  commit step with no valid working tree
- Drop --global safe.directory config (no longer needed once we own
  the git setup ourselves)
2026-03-23 00:28:47 -04:00
Anso bed63f8b47 Merge pull request #67 from AnsoCode/fix/ci-docs-jobs
fix(ci): fix sync-docs empty-repo crash and update-screenshots protected-branch push
2026-03-23 00:15:11 -04:00
SaelixCode 9505132aaf fix(ci): fix sync-docs empty-repo crash and update-screenshots protected-branch push
update-screenshots: replace direct git push to develop (blocked by branch
protection) with peter-evans/create-pull-request@v6, which opens or
updates a chore/refresh-screenshots PR instead.

sync-docs: add continue-on-error on the sencho-docs checkout so an empty
repo doesn't abort the job. A new init step runs git init -b main and
re-adds the remote when .git is missing. Final push uses
git push origin HEAD:main to work on both first-run (empty repo) and
subsequent runs (existing branch).
2026-03-23 00:09:31 -04:00
Anso 3302fe75f3 Merge pull request #66 from AnsoCode/feature/bootstrap-docs
docs: bootstrap user-facing documentation from codebase audit
2026-03-22 23:56:08 -04:00
SaelixCode 932e7780ea docs: add Tier 3 reference and operations pages
- reference/settings: complete settings hub reference (all 7 tabs —
  Account, System Limits, Notifications, Appearance, Developer, Nodes,
  App Store)
- operations/troubleshooting: 1:1 path rule failures, Docker socket
  permissions, login errors, WebSocket proxy config, offline remote
  nodes, password reset, health endpoint, container logs
- operations/backup: what to back up (DATA_DIR SQLite + COMPOSE_DIR),
  hot backup via sqlite3, cron example, restore steps, host migration
  walkthrough
- mint.json: populate Reference and Operations nav groups
2026-03-22 23:25:15 -04:00
SaelixCode 7c120c671c docs: add Tier 2 feature pages
- dashboard: container stats, system stats, historical charts, docker run converter
- resources: disk footprint widget, images/volumes/networks/unmanaged tabs, prune scopes
- app-store: template grid, category filter, deploy sheet (env vars/volumes/ports), custom registry
- global-observability: unified log stream, standard vs SSE mode, filters, capacity limits
- host-console: PTY terminal, shell type, security model, common uses
- mint.json: add all 5 new pages to Features nav group
2026-03-22 22:43:53 -04:00
SaelixCode 98910c4117 docs: bootstrap user-facing documentation from codebase audit
- Add 5 new Tier 1 doc pages: configuration, stack-management, editor,
  multi-node, and alerts-notifications
- Update introduction, quickstart, and features/overview to reflect
  current feature set and link to new pages
- Restructure mint.json with Getting Started / Features / Reference /
  Operations navigation groups
- Add Playwright-captured screenshots for all major UI screens
2026-03-22 22:39:06 -04:00
Anso dfa93c0bba Merge pull request #65 from AnsoCode/fix/ci-yaml-and-sync-docs
fix(ci): YAML syntax error and sync-docs git directory failure
2026-03-22 22:15:13 -04:00
SaelixCode b0e2b2d025 fix(e2e): use button role for Resources nav item in screenshots spec 2026-03-22 22:12:13 -04:00
SaelixCode 353fd253e9 fix(ci): add load: true to buildx so Trivy can find the built image 2026-03-22 22:07:32 -04:00
SaelixCode f5c5eda30a fix(ci): use double-quoted string for if condition to fix YAML parse error 2026-03-22 22:04:49 -04:00
SaelixCode dc79683b01 fix(ci): YAML syntax error in if condition and safe.directory for sync-docs 2026-03-22 22:00:57 -04:00
Anso eaf217720c Merge pull request #64 from AnsoCode/feature/ci-screenshot-refresh
feat: auto-refresh doc screenshots on develop push
2026-03-22 21:52:17 -04:00
SaelixCode ed8b8e33b6 feat: add update-screenshots CI job and screenshot capture spec 2026-03-22 21:28:20 -04:00
Anso 05a6b93af0 Merge pull request #63 from AnsoCode/feature/docs-pipeline
feat: automated docs pipeline
2026-03-22 21:20:42 -04:00