Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
3e2439a
fix build id for tauri builds, fixed oauth/auth on tauri app, tweaked…
Lycoon Apr 24, 2026
adce3b8
Merge pull request #153 from Lycoon/dev
Lycoon Apr 24, 2026
f564772
fixed missing initial migration and workflows
Lycoon Apr 24, 2026
334de98
added benchmark run to github actions workflow
Lycoon Apr 24, 2026
ffdaad0
improved perf of benchmark workflow
Lycoon Apr 24, 2026
9b1c280
Merge pull request #154 from Lycoon/dev
Lycoon Apr 24, 2026
927c289
fixed cors for staging deployment, started migration logic for local …
Lycoon Apr 25, 2026
0890618
Merge pull request #155 from Lycoon/dev
Lycoon Apr 25, 2026
1fc2252
fixed tauri plugin iap
Apr 25, 2026
9862e98
Merge pull request #156 from Lycoon/dev
Lycoon Apr 25, 2026
aa20ca4
fixed apple build
Apr 25, 2026
07fa1d7
Merge pull request #157 from Lycoon/dev
Lycoon Apr 25, 2026
0c38282
trying to fix staging tauri app
Apr 26, 2026
2220a61
Merge pull request #158 from Lycoon/dev
Lycoon Apr 26, 2026
56eaa5f
debug build for tauri app on macos
Apr 26, 2026
3470399
Merge pull request #159 from Lycoon/dev
Lycoon Apr 26, 2026
3b96c27
updated github action packages
Apr 26, 2026
5edd363
Merge pull request #160 from Lycoon/dev
Lycoon Apr 26, 2026
82b1e8c
updated backend to upload macos pkg to transporter
Lycoon Apr 26, 2026
17fe660
fixed debug build in tauri-windows-bundle package
Lycoon Apr 26, 2026
e65bb06
Merge pull request #161 from Lycoon/dev
Lycoon Apr 26, 2026
5f839ee
trying ci/cd for macos with altool
Lycoon Apr 26, 2026
0dc3e7e
Merge pull request #162 from Lycoon/dev
Lycoon Apr 26, 2026
79b8ba9
trying to fix cors
Apr 26, 2026
734a959
Merge pull request #163 from Lycoon/dev
Lycoon Apr 26, 2026
abdf086
removed staging basic auth
Apr 26, 2026
6f5bd2e
Merge pull request #164 from Lycoon/dev
Lycoon Apr 26, 2026
044e334
fixed apple oauth for desktop app
Apr 26, 2026
f998f84
Merge pull request #165 from Lycoon/dev
Lycoon Apr 26, 2026
2a92f76
fixing apple oauth on desktop app
Apr 27, 2026
66a543f
Merge pull request #166 from Lycoon/dev
Lycoon Apr 27, 2026
2702073
trying to fix apple oauth on desktop app again
Apr 27, 2026
3b5a4c2
Merge pull request #167 from Lycoon/dev
Lycoon Apr 27, 2026
dd75492
fixed dockerfile
Apr 27, 2026
c83999e
Merge pull request #168 from Lycoon/dev
Lycoon Apr 27, 2026
a794bcd
fixed compilation
Apr 27, 2026
d2ec494
Merge pull request #169 from Lycoon/dev
Lycoon Apr 27, 2026
bd3ff3a
tweaked transaction api for payments, fixed db seeding
Apr 27, 2026
638c99d
Merge pull request #170 from Lycoon/dev
Lycoon Apr 27, 2026
ebb241a
refreshed database
Apr 27, 2026
4f30032
Merge pull request #171 from Lycoon/dev
Lycoon Apr 27, 2026
76c155e
fixed proxy
Lycoon Apr 27, 2026
2065a6a
Merge pull request #172 from Lycoon/dev
Lycoon Apr 27, 2026
f10eed6
refactored authentication and deleted generated/client folder from pr…
Lycoon Apr 27, 2026
d4c7501
Merge pull request #173 from Lycoon/dev
Lycoon Apr 27, 2026
b459709
added logging utility, refaxctored some auth-related files
Lycoon Apr 27, 2026
4854513
Merge pull request #174 from Lycoon/dev
Lycoon Apr 27, 2026
067c70b
tweaked apple IAP UX
Apr 27, 2026
9fd57e0
added missing prisma generate in ci
Apr 27, 2026
652d22c
Merge pull request #175 from Lycoon/dev
Lycoon Apr 27, 2026
6c84c20
refactored oauth buttons
Lycoon Apr 29, 2026
3373760
visual tweaks to homepage, hidden sidebars by default, updates admin …
Apr 30, 2026
ba5c33d
Merge pull request #176 from Lycoon/dev
Lycoon Apr 30, 2026
b9a5e9f
fixed dropdown width, cloud project sync fix, payment workflow fix, v…
Lycoon Apr 30, 2026
30e1e86
updated deployment for cloud durable object
Lycoon Apr 30, 2026
2625b65
Merge pull request #177 from Lycoon/dev
Lycoon Apr 30, 2026
1886d3d
fixed compilation
Lycoon May 1, 2026
d892d4e
Merge pull request #178 from Lycoon/dev
Lycoon May 1, 2026
6bda637
visual tweaks to dropdown, added missing translations, fixed cloudfla…
Lycoon May 1, 2026
e522579
Merge pull request #179 from Lycoon/dev
Lycoon May 1, 2026
6331c60
fixed cloudflare durable object deployment
Lycoon May 1, 2026
e109060
Merge pull request #180 from Lycoon/dev
Lycoon May 1, 2026
79a8225
added midnight theme, fixed shelve item logic in dropdown, fixes to S…
Lycoon May 1, 2026
0a190eb
Merge pull request #181 from Lycoon/dev
Lycoon May 1, 2026
713c960
lots of visual tweaks, added cloud project sync from local-only project
Lycoon May 2, 2026
004d3c8
Merge pull request #182 from Lycoon/dev
Lycoon May 2, 2026
a7bfc5a
fixed clipboard handling and web search for desktop apps
May 2, 2026
b50c083
updating tauri window theme on theme change, added missing fixes
May 2, 2026
d2eabda
Merge pull request #183 from Lycoon/dev
Lycoon May 2, 2026
f10eb4a
fixing missing capability for theme update on tauri, removed ci requi…
May 2, 2026
b0d73d7
Merge pull request #184 from Lycoon/dev
Lycoon May 2, 2026
332ff1b
disabled apple iap, wired migration logic to avoid sync issues, fixed…
May 3, 2026
0fde295
Merge pull request #185 from Lycoon/dev
Lycoon May 3, 2026
5c5091d
added missing ci file
May 3, 2026
50a573f
added missing ci file
May 3, 2026
5440185
Merge pull request #186 from Lycoon/dev
Lycoon May 3, 2026
73fde53
updated Dockerfile for websocket cloud URL
May 3, 2026
0b41fe5
Merge pull request #187 from Lycoon/dev
Lycoon May 3, 2026
5dacb67
fixing cloud sync issues
Lycoon May 3, 2026
6f4ce9e
fixed cloud sync issues after idle, fixed wrangler.toml for dev envir…
Lycoon May 6, 2026
3c6ca03
fixed compilation
Lycoon May 7, 2026
043e501
Merge pull request #188 from Lycoon/dev
Lycoon May 7, 2026
f006765
refactoring of project state, cloud logic, configured viewer role lim…
Lycoon May 9, 2026
422a9e2
Merge pull request #189 from Lycoon/dev
Lycoon May 9, 2026
c9b4249
fixed is-empty css on cloud sync, collab caret, added durable object …
Lycoon May 10, 2026
e022ad8
Merge pull request #190 from Lycoon/dev
Lycoon May 10, 2026
c1a2fa7
fixed editor sync in read-only, added comments navigation to sidebar,…
Lycoon May 10, 2026
194a87a
Merge pull request #191 from Lycoon/dev
Lycoon May 10, 2026
d728446
added missing translations
Lycoon May 10, 2026
a880556
Merge pull request #192 from Lycoon/dev
Lycoon May 10, 2026
b0b6ab4
fixed shelving logic for nodes with comments
Lycoon May 12, 2026
2ca7d65
added production logic for scene numbering locking
May 19, 2026
e57147d
optimized scene locking
May 23, 2026
68576fe
moved production settings in its own yjs entry, added letter skipping…
May 23, 2026
8b0853b
started page locking feature
May 25, 2026
0008089
fixed page locking, fixed page numbering in pdf export
Lycoon May 25, 2026
9f9130b
Merge pull request #193 from Lycoon/dev
Lycoon May 25, 2026
4e716f4
fixes to page locking, fixing to last page in pagination, fix to redi…
Lycoon May 27, 2026
0821553
scene omit tweaks, tweaked translations, etc
Lycoon May 28, 2026
79e089a
fixed pagination issue because of font lazy loading, removed top marg…
Lycoon May 31, 2026
8e618cf
added a centralized draft locking button, added a settings button to …
Lycoon Jun 1, 2026
e3299b4
Merge pull request #194 from Lycoon/dev
Lycoon Jun 1, 2026
cb0856d
page locking, fixed scene omitting, etc
Lycoon Jun 8, 2026
d9172ad
added document hierarchy
Lycoon Jun 8, 2026
df23f92
Merge pull request #195 from Lycoon/dev
Lycoon Jun 8, 2026
c3d1df5
improved document and view management, added outline feature
Lycoon Jun 9, 2026
9bd59a5
Merge pull request #196 from Lycoon/dev
Lycoon Jun 9, 2026
6f40b47
refactored view options, improved panel splitting behaviour, fixed el…
Lycoon Jun 10, 2026
17303be
Merge pull request #197 from Lycoon/dev
Lycoon Jun 10, 2026
a622dc8
asset handling wip for boards, added advanced section to production p…
Lycoon Jun 10, 2026
e31a258
changed .scriptio file format to zipped folder, fixed image handling …
Lycoon Jun 10, 2026
423f115
added voice recording handling to boards, tweaked some board styling
Lycoon Jun 11, 2026
3f64492
Merge pull request #198 from Lycoon/dev
Lycoon Jun 11, 2026
e611312
removed hints of board canvas
Lycoon Jun 11, 2026
10d0af8
Merge pull request #199 from Lycoon/dev
Lycoon Jun 11, 2026
440681a
fixing ci, pagination perf...
Lycoon Jun 13, 2026
37cbb33
fixed pagination issues with straddling nodes and performance
Lycoon Jun 14, 2026
7a74001
tweaked visual for document sidebar
Lycoon Jun 14, 2026
0472d35
Merge pull request #200 from Lycoon/dev
Lycoon Jun 14, 2026
8c6227e
refactoring comments, context menu, outline visuals, search behaviour…
Lycoon Jun 15, 2026
4b04e55
Merge pull request #201 from Lycoon/dev
Lycoon Jun 15, 2026
d41592e
fixed pagination for locked pages, added lock icons to locked pages
Lycoon Jun 16, 2026
1b2ed74
Merge pull request #202 from Lycoon/dev
Lycoon Jun 16, 2026
ce2c0b8
fixed page break logic and page number rendering
Lycoon Jun 19, 2026
bb1d2c6
assets syncing to cloud, added manual page break, english spellchecke…
Lycoon Jun 21, 2026
9fa85ae
added fadein and writersolo importers, fixed page number rendering, f…
Lycoon Jun 22, 2026
e040095
Merge pull request #203 from Lycoon/dev
Lycoon Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 1 addition & 2 deletions .env.template
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
NODE_ENV=development

NEXT_PUBLIC_API_URL=https://scriptio.app
NEXT_PUBLIC_COLLAB_WEBSOCKET_URL=ws://127.0.0.1:8787
NEXT_PUBLIC_CLOUD_URL=http://127.0.0.1:8787

# Secrets
AUTH_SECRET=
Expand All @@ -18,7 +18,6 @@ DB_NAME=scriptio

# Basic Auth (htpasswd format, escape $ as $$ in this file)
PROD_AUTH_USERS=
STAGING_AUTH_USERS=
MONITORING_AUTH_USERS=

# Monitoring
Expand Down
11 changes: 9 additions & 2 deletions .github/actions/apply-version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,26 @@ runs:
SEMVER=$(echo "$INPUT_VERSION" | cut -d. -f1-3)
MAJOR=$(echo "$INPUT_VERSION" | cut -d. -f1)
MINOR=$(echo "$INPUT_VERSION" | cut -d. -f2)
PATCH=$(echo "$INPUT_VERSION" | cut -d. -f3)
REVISION=$(echo "$INPUT_VERSION" | cut -d. -f4)

if [[ "$INPUT_STAGING" == "true" ]]; then
PRODUCT_NAME="Scriptio (Staging)"
WINDOW_TITLE="Scriptio (Staging)"
APPSTORE_IDENTIFIER="app.scriptio.staging"
WINDOWS_IDENTIFIER="ArkoLogic.ScriptioStaging"
MSIX_VERSION="${MAJOR}.${MINOR}.${GITHUB_RUN_NUMBER:-1}.0"
# MS Store reserves the 4th version field (must stay 0). Staging's
# build counter (REVISION) sits in that slot, so fold PATCH+REVISION
# into the 3rd field to keep MSIX versions strictly increasing
# across staging pushes and release bumps.
MSIX_VERSION="${MAJOR}.${MINOR}.$(( PATCH * 10000 + REVISION )).0"
else
PRODUCT_NAME="Scriptio"
WINDOW_TITLE="Scriptio"
APPSTORE_IDENTIFIER="app.scriptio"
WINDOWS_IDENTIFIER="ArkoLogic.Scriptio"
MSIX_VERSION="$INPUT_VERSION"
# Release builds carry REVISION=0, so the app version is Store-legal as-is.
MSIX_VERSION="${MAJOR}.${MINOR}.${PATCH}.0"
fi

jq --arg v "$SEMVER" --arg t "$WINDOW_TITLE" --arg n "$PRODUCT_NAME" \
Expand Down
4 changes: 4 additions & 0 deletions .github/actions/compute-version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ outputs:
git_tag:
description: Tag to create on release (e.g. 2.0.1). Empty on other branches.
value: ${{ steps.compute.outputs.git_tag }}
commit_sha:
description: Short git commit SHA.
value: ${{ steps.compute.outputs.commit_sha }}

runs:
using: composite
Expand Down Expand Up @@ -69,3 +72,4 @@ runs:
echo "short_version=$SHORT_VERSION" >> $GITHUB_OUTPUT
echo "revision=$REVISION" >> $GITHUB_OUTPUT
echo "git_tag=$GIT_TAG" >> $GITHUB_OUTPUT
echo "commit_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
4 changes: 2 additions & 2 deletions .github/actions/setup-desktop-build/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Setup Desktop Build Toolchain
description: Installs Node.js, Rust with platform-appropriate targets, MSIX bundler on Windows, and runs npm install.
description: Installs Node.js, Rust with platform-appropriate targets, MSIX bundler on Windows, and runs npm ci.

inputs:
platform:
Expand Down Expand Up @@ -39,4 +39,4 @@ runs:

- name: Install dependencies
shell: bash
run: npm install
run: npm ci
105 changes: 103 additions & 2 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ jobs:
cache: "npm"

- name: Install dependencies
run: npm install
run: npm ci

- name: Lint
run: npm run lint
continue-on-error: true

- name: Typecheck
run: npx tsc --noEmit
run: npx prisma generate && npx tsc --noEmit

build-macos:
runs-on: macos-latest
Expand Down Expand Up @@ -59,3 +59,104 @@ jobs:

- name: Build Docker image
run: docker compose build app-prod

benchmark:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chromium, webkit]
steps:
- uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "25.2.1"
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Get Playwright version
id: pw-version
run: echo "version=$(node -e "console.log(require('./node_modules/playwright-core/package.json').version)")" >> $GITHUB_OUTPUT

- name: Cache Playwright browser
uses: actions/cache@v4
id: pw-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ matrix.browser }}-${{ steps.pw-version.outputs.version }}

- name: Install Playwright browser and system deps
if: steps.pw-cache.outputs.cache-hit != 'true'
run: npx playwright install --with-deps ${{ matrix.browser }}

- name: Install Playwright system deps only
if: steps.pw-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps ${{ matrix.browser }}

- name: Run benchmarks
run: npx vitest bench --project ${{ matrix.browser }}

- name: Upload benchmark results
uses: actions/upload-artifact@v4
with:
name: bench-results-${{ matrix.browser }}
path: bench-results.json
retention-days: 90
overwrite: true

benchmark-compare:
runs-on: ubuntu-latest
needs: benchmark
steps:
- uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "25.2.1"
cache: "npm"

- name: Download chromium results
uses: actions/download-artifact@v4
with:
name: bench-results-chromium
path: bench-current-chromium

- name: Download webkit results
uses: actions/download-artifact@v4
with:
name: bench-results-webkit
path: bench-current-webkit

- name: Merge current results
run: node scripts/merge-bench.mjs bench-current-chromium/bench-results.json bench-current-webkit/bench-results.json > bench-results.json

- name: Download previous benchmark baseline
uses: dawidd6/action-download-artifact@v9
continue-on-error: true
with:
name: bench-results
path: bench-baseline
workflow: checks.yaml
branch: ${{ github.ref_name }}
if_no_artifact_found: warn

- name: Compare and report
run: |
if [ -f bench-baseline/bench-results.json ]; then
node scripts/compare-bench.mjs bench-baseline/bench-results.json bench-results.json >> $GITHUB_STEP_SUMMARY
else
echo "<h2>Benchmark Results</h2><p>No baseline found — results uploaded as the new baseline.</p>" >> $GITHUB_STEP_SUMMARY
fi
continue-on-error: true

- name: Upload merged benchmark results as new baseline
uses: actions/upload-artifact@v4
with:
name: bench-results
path: bench-results.json
retention-days: 90
overwrite: true
36 changes: 30 additions & 6 deletions .github/workflows/deploy-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
short_version: ${{ steps.version.outputs.short_version }}
revision: ${{ steps.version.outputs.revision }}
git_tag: ${{ steps.version.outputs.git_tag }}
commit_sha: ${{ steps.version.outputs.commit_sha }}
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -27,7 +28,7 @@ jobs:

publish-macos:
runs-on: macos-latest
needs: prepare
needs: [prepare, deploy-web]
env:
APP_PATH: src-tauri/target/universal-apple-darwin/release/bundle/macos/Scriptio.app
PKG_PATH: Scriptio.pkg
Expand All @@ -41,7 +42,7 @@ jobs:
p12-password: ${{ secrets.APPLE_CERT_PASSWORD }}

- name: Download provisioning profile
uses: apple-actions/download-provisioning-profiles@v5
uses: apple-actions/download-provisioning-profiles@v6
with:
bundle-id: "app.scriptio"
profile-type: "MAC_APP_STORE"
Expand All @@ -52,7 +53,6 @@ jobs:
- name: Copy provisioning profile to known path
run: |
PROFILE=$(ls "$HOME/Library/MobileDevice/Provisioning Profiles/"*.provisionprofile \
"$HOME/Library/MobileDevice/Provisioning Profiles/"*.mobileprovision \
2>/dev/null | head -n 1)
cp "$PROFILE" src-tauri/embedded.provisionprofile

Expand All @@ -71,7 +71,9 @@ jobs:
env:
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
NEXT_PUBLIC_API_URL: https://scriptio.app
NEXT_PUBLIC_CLOUD_URL: https://cloud.scriptio.app
NEXT_PUBLIC_APP_VERSION: ${{ needs.prepare.outputs.version }}
NEXT_PUBLIC_COMMIT_SHA: ${{ needs.prepare.outputs.commit_sha }}

- name: Build signed .pkg installer
run: |
Expand All @@ -81,17 +83,18 @@ jobs:
"$PKG_PATH"

- name: Upload to App Store Connect
uses: apple-actions/upload-testflight-build@v3
uses: apple-actions/upload-testflight-build@v5
with:
app-path: ${{ env.PKG_PATH }}
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_KEY_P8 }}
backend: "altool"
app-type: "macos"

publish-windows:
runs-on: windows-latest
needs: prepare
needs: [prepare, deploy-web]
env:
APP_PATH: src-tauri/target/msix/Scriptio.msixbundle
steps:
Expand All @@ -111,7 +114,9 @@ jobs:
run: npm run build:windows
env:
NEXT_PUBLIC_API_URL: https://scriptio.app
NEXT_PUBLIC_CLOUD_URL: https://cloud.scriptio.app
NEXT_PUBLIC_APP_VERSION: ${{ needs.prepare.outputs.version }}
NEXT_PUBLIC_COMMIT_SHA: ${{ needs.prepare.outputs.commit_sha }}

- name: Rename output to fixed name
run: |
Expand All @@ -130,6 +135,24 @@ jobs:
- name: Publish to Microsoft Store
run: msstore publish "$env:APP_PATH" -id "9P4M1XPHJKS1"

deploy-cloud:
runs-on: ubuntu-latest
needs: prepare
steps:
- uses: actions/checkout@v6

- uses: actions/setup-node@v6
with:
node-version: "25.2.1"
cache: "npm"

- run: npm ci

- name: Deploy Cloudflare Worker (production)
run: npm run cloud:deploy:prod
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

deploy-web:
runs-on: ubuntu-latest
needs: prepare
Expand Down Expand Up @@ -161,6 +184,7 @@ jobs:
${{ env.IMAGE_NAME }}:${{ needs.prepare.outputs.version }}
build-args: |
NEXT_PUBLIC_API_URL=https://scriptio.app
NEXT_PUBLIC_CLOUD_URL=https://cloud.scriptio.app
NEXT_PUBLIC_COMMIT_SHA=${{ env.COMMIT_SHA }}
NEXT_PUBLIC_APP_VERSION=${{ needs.prepare.outputs.version }}

Expand Down Expand Up @@ -190,7 +214,7 @@ jobs:

tag-release:
runs-on: ubuntu-latest
needs: [prepare, publish-macos, publish-windows, deploy-web]
needs: [prepare, deploy-web]
steps:
- uses: actions/checkout@v6
with:
Expand Down
Loading
Loading