Skip to content

Commit 516a4ca

Browse files
committed
3.6.1
1 parent 8f62daa commit 516a4ca

91 files changed

Lines changed: 10197 additions & 15459 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.

CHANGELOG.md

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,79 @@
22

33
All notable changes to this repository are documented in this file.
44

5-
## [Unreleased]
5+
## [3.6.1] — 2026-04-09
66

77
### Added
88

9-
- **C# File I/O helpers** — load/save `.synx` files in one call.
9+
- **Package registry — soft delete + yank system**
10+
- **Soft delete** (`DELETE /api/packages/:scope/:name`) — marks package as deleted (`deleted_at`, `deleted_by`, `deletion_reason` columns) instead of removing from DB/S3. All versions auto-yanked. Tarballs preserved for 30-day grace period.
11+
- **Restore endpoint** (`POST /api/packages/:scope/:name/restore`) — un-deletes a soft-deleted package within the 30-day grace period. All versions auto-unyanked.
12+
- **Permanent delete** (`DELETE /api/packages/:scope/:name/permanent`) — hard delete for already soft-deleted packages. Removes tarballs from S3 and rows from DB.
13+
- **Unyank endpoint** (`POST /api/packages/:scope/:name/:version/unyank`) — restore a single yanked version.
14+
- Detail endpoint returns **410 Gone** for soft-deleted packages with `deletedAt` and restoration info.
15+
- List endpoint filters out soft-deleted packages (`deleted_at IS NULL`).
16+
- DB migration: `deleted_at TIMESTAMPTZ`, `deleted_by TEXT`, `deletion_reason TEXT` on `packages` table.
17+
18+
- **`synx restore` CLI command** — restore a soft-deleted package within the 30-day grace period.
19+
20+
- **`synx create` CLI command** — interactive package scaffolder.
21+
- Prompts for scope, name, description, author, license, and package type.
22+
- **WASM Marker Package** template — generates `Cargo.toml`, `src/lib.rs` (ABI v1 boilerplate), `synx-pkg.synx`, `build.bat`, `build.sh`, `README.md`.
23+
- **SYNX Config Package** template — generates `synx-pkg.synx`, `src/main.synx` (with `:env` and `:default` markers), `README.md`.
24+
- Lists generated files on completion with next-steps guidance.
25+
26+
- **Packages page UI improvements**
27+
- Author avatar shows real profile image (from `users.avatar_url`) with fallback to initial letter.
28+
- Files tab populated from tarball extraction (file list + file contents viewer overlay).
29+
- Dependencies and Dependents tabs auto-hidden when empty (`tab-hidden` CSS class).
30+
- Cache-bust bumped to `?v=20260408f`.
31+
32+
- **Package registry pipeline — S3 storage + extraction**
33+
- Tarball extraction at publish time: README, file list, and file contents stored in `packages` table.
34+
- S3 Hetzner Object Storage for tarball persistence.
35+
- CLI `DEFAULT_REGISTRY` changed to `https://synx.aperturesyndicate.com/api`.
36+
- Forum-API accepts CLI Bearer tokens (via `cli_tokens` table fallback in `getUser()`).
37+
38+
### Changed
39+
40+
- **`synx delete`** — now performs soft delete with 30-day grace period (was permanent hard delete). Confirmation prompt updated to reflect soft delete behavior.
41+
- **Yank route** — changed from `DELETE /api/packages/:scope/:name/:version` to `POST /api/packages/:scope/:name/:version/yank` to match CLI expectations.
42+
- **Renamed `@assynx/synx-markers``@assynx/text-tools`** — better reflects the package's 8 text utility markers (`:upper`, `:lower`, `:reverse`, `:base64`, `:hash`, `:truncate`, `:pad`, `:count`).
43+
- **Consolidated `examples/` and `synx_packages/`** — removed duplicate WASM examples that duplicated content already in `synx_packages/`.
44+
- **Package template moved to `synx_packages/template/`** — starter WASM marker template lives next to official packages.
45+
46+
### Removed
47+
48+
- **Deleted `@assynx/synx-defaults`** — removed from `synx_packages/` and the embedded registry.
49+
- **Deleted `@aperture/synx-defaults`** — removed the entire `@aperture` scope.
50+
- **Deleted `examples/wasm-marker-upper/`** and **`examples/wasm-marker-template/`** — consolidated into `synx_packages/`.
51+
52+
### Added
53+
54+
- **SYNX Package System — complete pipeline** (Steps 1–12)
55+
- **Package manifests** (`synx-pkg.synx`) — normalized format with name, version, description, author, license, main, synx-version, keywords, files, dependencies, capabilities.
56+
- **Package engine** (`crates/synx-cli/src/pkg.rs`) — `Manifest` parser, `LockFile` (synx.lock), `pack()``.tar.gz` with SHA-256 integrity, `publish()`, `install()` (registry + local), `uninstall()`, `login()` (token-based auth).
57+
- **Credential storage**`~/.synx/credentials.synx`, token read/write, registry-scoped.
58+
- **CLI commands**`as init`, `as publish`, `as install`, `as uninstall`, `as login`, `as pack`, `as yank`, `as unyank` (wired in `main.rs`).
59+
- **`!use` directive support** in LSP (`synx-lsp`) — import packages from `synx_packages/`.
60+
- **Semver dependency resolution**`parse_semver()`, `version_satisfies()` (^, ~, \*, >=, <=, >, <, exact), `check_conflicts()` integrated into `install()`.
61+
- **Package yank/unyank**`yank()` / `unyank()` API calls + CLI commands.
62+
- **14 new CLI tests** + **12 semver tests** — all passing.
63+
64+
- **WASM custom markers — sandboxed WebAssembly runtime**
65+
- **`WasmMarkerRuntime`** (`crates/synx-core/src/wasm.rs`) — wasmi-based WASM interpreter with ABI v1 (`synx_alloc`, `synx_markers`, `synx_apply`).
66+
- **Capability permissions**`WasmCapabilities { string, fs, net, env }` enforced at module load time.
67+
- **Ed25519 package signing** (`crates/synx-core/src/signing.rs`) — `SigningKey`, `VerifyKey`, `PackageSignature`, keygen/sign/verify.
68+
- **Engine integration** — WASM dispatch in `engine.rs` after built-in markers, before constraints.
69+
- **`@assynx/synx-markers`** — official marker pack with 8 markers: `:upper`, `:lower`, `:reverse`, `:base64`, `:hash`, `:truncate`, `:pad`, `:count`. Built as `.wasm`, installed in `synx_packages/`.
70+
- **WASM marker author guide** (`docs/guides/WASM_MARKERS.md`) — ABI spec, project setup, build, sign, publish, capabilities, security model.
71+
72+
- **JS/TS binary format + tool parsing** (`packages/synx-js/src/index.ts`)
73+
- `Synx.compile(text, resolved?)``Uint8Array` — pure-JS `.synxb` compiler (string table, varint, zigzag, type tags 0x00–0x08).
74+
- `Synx.decompile(data)` → string — decompile `.synxb` back to `.synx` text.
75+
- `Synx.isSynxb(data)` → boolean — check for SYNXB magic header.
76+
- `Synx.parseTool(text, options?)``{ tool, params }` — parse `!tool` mode with reshaping.
77+
- JS/TS binding now at **full parity** with Python/C#/Go/Kotlin/Swift.
1078
- `LoadFileAsync<T>(path)` / `LoadFile<T>(path)` — read + deserialize a `.synx` file.
1179
- `LoadFileActiveAsync<T>(path, synxOptions?)` — same with `!active` engine resolution.
1280
- `SaveFileAsync<T>(path, obj)` / `SaveFile<T>(path, obj)` — serialize + write a `.synx` file.
@@ -90,6 +158,7 @@ Quick reference of what was modified in recent versions:
90158

91159
| Version | Components Modified |
92160
|---------|---|
161+
| **3.6.1** | forum-api (soft delete, unyank, restore, permanent delete, DB migration), synx-cli (restore command, soft delete messaging), packages page (avatars, files tab, hidden empty tabs), S3 pipeline (tarball extraction, README/files storage) |
93162
| **3.6.0** | synx-core (`.synxb`, `!tool`, **`!llm`**, `diff`, JSON Schema helpers, hostile-input caps), synx-cli (**`synx schema`**, **`json-validate`**), synx-lsp, VS Code (`!llm`), bindings (**C++**, **Go cgo**, **SwiftPM+`synx-c`**, **Kotlin/JNA+`synx-c`**, **Mojo↔CPython**), Python extra JSON/hex helpers for thin interop, conformance (**11** cases), tree-sitter, fuzz + **`Synx.FuzzReplay`**, **`SYNX_AT_A_GLANCE`**, SYNX-Adapter, docs: **normative spec + CORE-FREEZE (engine frozen 2026-04-01)** |
94163
| **3.5.2** | synx-core (`:prompt` marker, `:vision`/`:audio` metadata, calc modulo-by-zero fix), synx-js (same + `Synx.diff()` + prototype pollution fix + ReDoS guard + `deepGet`/parser hardening), synx-vscode (diagnostics/completion for 3 new markers + `:template` sibling-scope fix), all 6 guides |
95164
| **3.5.1** | synx-core (stack overflow guard, circular alias detection), synx-js (same + SynxError class + browser bundle export), synx-vscode (circular alias diagnostic), security tests |

0 commit comments

Comments
 (0)