Skip to content

Commit c8008a0

Browse files
authored
Merge pull request #582 from samternent/run
run.ternent.dev
2 parents 25cfdda + 6e71959 commit c8008a0

293 files changed

Lines changed: 32178 additions & 3236 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.changeset/wicked-mails-give.md‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"@ternent/identity": minor
3+
"@ternent/ledger": minor
4+
"@ternent/seal-cli": minor
5+
"@ternent/concord": minor
6+
"@ternent/armour": minor
7+
"@ternent/solid": minor
8+
"@ternent/rage": minor
9+
---
10+
11+
Final minor bump
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Release ledger.ternent.dev
2+
env:
3+
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
4+
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_LEDGER_PROJECT_ID }}
5+
PNPM_CACHE_PATH: ~/.pnpm-store
6+
PNPM_CACHE_NAME: pnpm-store-cache
7+
SEAL_IDENTITY: ${{ secrets.SEAL_IDENTITY }}
8+
on:
9+
push:
10+
tags:
11+
- "ledger-*.*.*"
12+
13+
jobs:
14+
Deploy-Production:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout repo
18+
uses: actions/checkout@master
19+
with:
20+
fetch-depth: 0
21+
persist-credentials: false
22+
23+
- name: Get branch name
24+
id: branch
25+
run: |
26+
echo "branch_name=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV
27+
28+
- name: Get node version
29+
id: nvmrc
30+
run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc)
31+
32+
- name: Setup PNPM
33+
uses: pnpm/action-setup@v2
34+
with:
35+
version: 8
36+
37+
- name: Install Vercel CLI
38+
run: pnpm install --global vercel@latest
39+
40+
- name: Install dependencies
41+
run: pnpm install --frozen-lockfile
42+
43+
- name: Build dependencies
44+
run: pnpm --filter ternent-utils --filter ternent-ui --filter ternent-identity --filter @ternent/identity --filter @ternent/rage --filter @ternent/armour --filter @ternent/seal-cli --filter @ternent/concord-protocol build
45+
46+
- name: Build ledger app
47+
run: pnpm --filter ledger build
48+
49+
- name: Link Vercel project
50+
run: vercel link --yes --cwd ${{ github.workspace }}/apps/ledger --token=${{ secrets.VERCEL_TOKEN }}
51+
52+
- name: Pull Vercel Environment Information
53+
run: vercel pull --yes --environment=production --cwd ${{ github.workspace }}/apps/ledger --token=${{ secrets.VERCEL_TOKEN }}
54+
55+
- name: Build Vercel Environment Information
56+
run: vercel build --prod --cwd ${{ github.workspace }}/apps/ledger --token=${{ secrets.VERCEL_TOKEN }}
57+
58+
- name: Generate sealed site artifacts
59+
uses: samternent/seal-action@v2
60+
with:
61+
assets-directory: apps/ledger/.vercel/output/static
62+
63+
- name: Deploy Project Artifacts to Vercel
64+
run: vercel deploy --prebuilt --prod --cwd ${{ github.workspace }}/apps/ledger --token=${{ secrets.VERCEL_TOKEN }}

‎.gitignore‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,8 @@ docker-compose.override.yaml
2929
.prompts
3030

3131

32-
k8s-*-kubeconfig.yaml
32+
k8s-*-kubeconfig.yaml
33+
34+
# Solid app generated artifacts
35+
apps/solid/.vite-ssg-temp/
36+
apps/solid/test-results/

‎CLAUDE.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# CLAUDE.md
2+
3+
Concord development ethos (workspace currently implemented under `apps/solid`):
4+
- Keep architecture ledger-first: commands append entries; replay builds state.
5+
- Prefer app-level fixes before core-runtime changes (`@ternent/concord`, `@ternent/ledger`).
6+
- Security defaults: signer/actor integrity, explicit authz in command handlers, deterministic replay.
7+
- Use typed boundaries: `useAppApi -> typed method -> plugin command`; avoid raw UI command calls.
8+
- Use `ternent-ui` for runtime surfaces and follow Concord principles over convenience hacks.

‎apps/CLAUDE.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# CLAUDE.md
2+
3+
`apps/*` conventions:
4+
- Treat `apps/solid` as the active Concord workspace implementation.
5+
- Preserve shared contracts (`/w/:appId/:surfaceId?`, typed app APIs, plugin-driven state).
6+
- Keep features modular: system domains (users/permissions) feed app domains (tasks, etc.).
7+
- Do not fork crypto models per app; use runtime-native encryption/decryption flows.

‎apps/_templates/ternent-vue-app/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "__APP_ID__",
3-
"version": "0.0.19",
43
"private": true,
4+
"version": "0.0.19",
55
"type": "module",
66
"scripts": {
77
"dev": "vite --host",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// vite.config.ts
2+
import { defineConfig } from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/rolldown-vite@7.2.5_@types+node@24.10.4_yaml@2.5.0/node_modules/rolldown-vite/dist/node/index.js";
3+
import { resolve } from "path";
4+
import vue from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/@vitejs+plugin-vue@6.0.3_rolldown-vite@7.2.5_vue@3.5.26/node_modules/@vitejs/plugin-vue/dist/index.mjs";
5+
import tailwindcss from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/@tailwindcss+vite@4.1.18_rolldown-vite@7.2.5/node_modules/@tailwindcss/vite/dist/index.mjs";
6+
import Markdown from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/vite-plugin-vue-markdown@0.23.8_rolldown-vite@7.2.5/node_modules/vite-plugin-vue-markdown/dist/index.mjs";
7+
import { ViteEjsPlugin } from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/vite-plugin-ejs@1.7.0_rolldown-vite@7.2.5/node_modules/vite-plugin-ejs/index.js";
8+
import svgLoader from "file:///Users/sam/dev/samternent/home/node_modules/.pnpm/vite-svg-loader@5.1.0_vue@3.5.26/node_modules/vite-svg-loader/index.js";
9+
10+
// package.json
11+
var version = "0.3.80";
12+
13+
// vite.config.ts
14+
var __vite_injected_original_dirname = "/Users/sam/dev/samternent/home/apps/concord-demo";
15+
var vite_config_default = defineConfig({
16+
resolve: {
17+
alias: [],
18+
},
19+
build: {
20+
assetsInlineLimit: 0,
21+
rollupOptions: {
22+
input: {
23+
main: resolve(__vite_injected_original_dirname, "index.html"),
24+
spa: resolve(__vite_injected_original_dirname, "spa.html"),
25+
pixpax: resolve(__vite_injected_original_dirname, "pixpax.html"),
26+
},
27+
},
28+
},
29+
server: {
30+
proxy: {
31+
"/v1": {
32+
target: "http://localhost:8001",
33+
changeOrigin: true,
34+
},
35+
},
36+
},
37+
plugins: [
38+
ViteEjsPlugin(() => ({
39+
__APP_VERSION__: version,
40+
})),
41+
vue({ include: [/\.vue$/, /\.md$/] }),
42+
tailwindcss(),
43+
Markdown({ wrapperClasses: "prose dark:prose-invert" }),
44+
svgLoader(),
45+
],
46+
ssgOptions: {
47+
includedRoutes(paths) {
48+
return paths.filter((p) => !p.startsWith("/workspace"));
49+
},
50+
},
51+
});
52+
export { vite_config_default as default };
53+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAicGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3NhbS9kZXYvc2FtdGVybmVudC9ob21lL2FwcHMvY29uY29yZC1kZW1vXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvc2FtL2Rldi9zYW10ZXJuZW50L2hvbWUvYXBwcy9jb25jb3JkLWRlbW8vdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3NhbS9kZXYvc2FtdGVybmVudC9ob21lL2FwcHMvY29uY29yZC1kZW1vL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHZ1ZSBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tdnVlXCI7XG5pbXBvcnQgdGFpbHdpbmRjc3MgZnJvbSBcIkB0YWlsd2luZGNzcy92aXRlXCI7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSBcInZpdGUtcGx1Z2luLXZ1ZS1tYXJrZG93blwiO1xuaW1wb3J0IHsgVml0ZUVqc1BsdWdpbiB9IGZyb20gXCJ2aXRlLXBsdWdpbi1lanNcIjtcbmltcG9ydCBzdmdMb2FkZXIgZnJvbSBcInZpdGUtc3ZnLWxvYWRlclwiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuL3BhY2thZ2UuanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICByZXNvbHZlOiB7XG4gICAgYWxpYXM6IFtdLFxuICB9LFxuICBidWlsZDoge1xuICAgIGFzc2V0c0lubGluZUxpbWl0OiAwLFxuICAgIHJvbGx1cE9wdGlvbnM6IHtcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIG1haW46IHJlc29sdmUoX19kaXJuYW1lLCBcImluZGV4Lmh0bWxcIiksXG4gICAgICAgIHNwYTogcmVzb2x2ZShfX2Rpcm5hbWUsIFwic3BhLmh0bWxcIiksXG4gICAgICAgIHBpeHBheDogcmVzb2x2ZShfX2Rpcm5hbWUsIFwicGl4cGF4Lmh0bWxcIiksXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHNlcnZlcjoge1xuICAgIHByb3h5OiB7XG4gICAgICBcIi92MVwiOiB7XG4gICAgICAgIHRhcmdldDogXCJodHRwOi8vbG9jYWxob3N0OjgwMDFcIixcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwbHVnaW5zOiBbXG4gICAgVml0ZUVqc1BsdWdpbigoKSA9PiAoe1xuICAgICAgX19BUFBfVkVSU0lPTl9fOiB2ZXJzaW9uLFxuICAgIH0pKSxcbiAgICB2dWUoeyBpbmNsdWRlOiBbL1xcLnZ1ZSQvLCAvXFwubWQkL10gfSksXG4gICAgdGFpbHdpbmRjc3MoKSxcbiAgICBNYXJrZG93bih7IHdyYXBwZXJDbGFzc2VzOiBcInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0XCIgfSksXG4gICAgc3ZnTG9hZGVyKCksXG4gIF0sXG4gIHNzZ09wdGlvbnM6IHtcbiAgICBpbmNsdWRlZFJvdXRlcyhwYXRocykge1xuICAgICAgLy8gZXhjbHVkZSBhcHAtb25seSByb3V0ZXMgZnJvbSBwcmUtcmVuZGVyXG4gICAgICByZXR1cm4gcGF0aHMuZmlsdGVyKChwKSA9PiAhcC5zdGFydHNXaXRoKFwiL3dvcmtzcGFjZVwiKSk7XG4gICAgfSxcbiAgfSxcbn0pO1xuIiwgIntcbiAgXCJuYW1lXCI6IFwiY29uY29yZC1kZW1vXCIsXG4gIFwicHJpdmF0ZVwiOiB0cnVlLFxuICBcInZlcnNpb25cIjogXCIwLjMuODBcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJkZXZcIjogXCJ2aXRlXCIsXG4gICAgXCJidWlsZFwiOiBcInZpdGUtc3NnIGJ1aWxkXCIsXG4gICAgXCJwcmV2aWV3XCI6IFwidml0ZSBwcmV2aWV3XCIsXG4gICAgXCJ0ZXN0XCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGlucnVwdC9zb2xpZC1jbGllbnRcIjogXCJeMy4wLjBcIixcbiAgICBcIkBpbnJ1cHQvc29saWQtY2xpZW50LWF1dGhuLWJyb3dzZXJcIjogXCJeMy4xLjFcIixcbiAgICBcIkBiZXR0ZXItYXV0aC9wYXNza2V5XCI6IFwiXjEuNC4xOFwiLFxuICAgIFwiQHRhaWx3aW5kY3NzL3R5cG9ncmFwaHlcIjogXCJeMC41LjE0XCIsXG4gICAgXCJAdGFpbHdpbmRjc3Mvdml0ZVwiOiBcIl40LjEuMThcIixcbiAgICBcIkB0ZXJuZW50L2NvbmNvcmQtcHJvdG9jb2xcIjogXCJ3b3Jrc3BhY2U6XlwiLFxuICAgIFwiQHZ1ZXVzZS9jb3JlXCI6IFwiXjEwLjExLjFcIixcbiAgICBcImJldHRlci1hdXRoXCI6IFwiXjEuNC4xOFwiLFxuICAgIFwidGFpbHdpbmRjc3NcIjogXCJeNC4xLjE4XCIsXG4gICAgXCJ0ZXJuZW50LWVuY3J5cHRcIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwidGVybmVudC1pZGVudGl0eVwiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJ0ZXJuZW50LWxlZGdlclwiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJ0ZXJuZW50LWxlZGdlci12dWVcIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwidGVybmVudC11aVwiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJ0ZXJuZW50LXV0aWxzXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcInZpdGUtcGx1Z2luLWVqc1wiOiBcIl4xLjcuMFwiLFxuICAgIFwidml0ZS1zdmctbG9hZGVyXCI6IFwiXjUuMS4wXCIsXG4gICAgXCJ2dWVcIjogXCJeMy41LjI0XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjQuMTAuMVwiLFxuICAgIFwiQHVuaGVhZC92dWVcIjogXCJeMi4xLjFcIixcbiAgICBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiOiBcIl42LjAuMVwiLFxuICAgIFwiZ3JheS1tYXR0ZXJcIjogXCJeNC4wLjNcIixcbiAgICBcIm1hcmtkb3duLWl0XCI6IFwiXjE0LjEuMFwiLFxuICAgIFwidml0ZVwiOiBcIm5wbTpyb2xsZG93bi12aXRlQDcuMi41XCIsXG4gICAgXCJ2aXRlLXBsdWdpbi12dWUtbWFya2Rvd25cIjogXCJeMC4yMy44XCIsXG4gICAgXCJ2aXRlLXNzZ1wiOiBcIl4yOC4yLjJcIixcbiAgICBcInZpdGVzdFwiOiBcIl4xLjYuMFwiLFxuICAgIFwidnVlLXJvdXRlclwiOiBcIl40LjQuM1wiXG4gIH0sXG4gIFwib3ZlcnJpZGVzXCI6IHtcbiAgICBcInZpdGVcIjogXCJucG06cm9sbGRvd24tdml0ZUA3LjIuNVwiXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBa1UsU0FBUyxvQkFBb0I7QUFDL1YsU0FBUyxlQUFlO0FBQ3hCLE9BQU8sU0FBUztBQUNoQixPQUFPLGlCQUFpQjtBQUN4QixPQUFPLGNBQWM7QUFDckIsU0FBUyxxQkFBcUI7QUFDOUIsT0FBTyxlQUFlOzs7QUNIcEIsY0FBVzs7O0FESGIsSUFBTSxtQ0FBbUM7QUFTekMsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUztBQUFBLElBQ1AsT0FBTyxDQUFDO0FBQUEsRUFDVjtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsbUJBQW1CO0FBQUEsSUFDbkIsZUFBZTtBQUFBLE1BQ2IsT0FBTztBQUFBLFFBQ0wsTUFBTSxRQUFRLGtDQUFXLFlBQVk7QUFBQSxRQUNyQyxLQUFLLFFBQVEsa0NBQVcsVUFBVTtBQUFBLFFBQ2xDLFFBQVEsUUFBUSxrQ0FBVyxhQUFhO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sT0FBTztBQUFBLE1BQ0wsT0FBTztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsY0FBYztBQUFBLE1BQ2hCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLGNBQWMsT0FBTztBQUFBLE1BQ25CLGlCQUFpQjtBQUFBLElBQ25CLEVBQUU7QUFBQSxJQUNGLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUUsQ0FBQztBQUFBLElBQ3BDLFlBQVk7QUFBQSxJQUNaLFNBQVMsRUFBRSxnQkFBZ0IsMEJBQTBCLENBQUM7QUFBQSxJQUN0RCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0EsWUFBWTtBQUFBLElBQ1YsZUFBZSxPQUFPO0FBRXBCLGFBQU8sTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxZQUFZLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0Y7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=

0 commit comments

Comments
 (0)