Compare commits

...
6 Commits
9 changed files with 21 additions and 13 deletions
+2 -2
View File
@@ -11,13 +11,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- New shared TypeScript package `@cryptgeon/shared` as single source of truth for crypto, content codec and API client (crypto + compression + payload + types).
- Shared payload codec: `packContent` / `unpackContent` (encode → LZ4 → XChaCha20-Poly1305 and reverse).
- New `pg`-backend storage of note hashes in the cache.
- Cache-backed note storage using hashes (valkey/redis) with atomic view counting.
### Changed
- Encryption from AES to **XChaCha20-Poly1305** (client-side); dropped `occulto`.
- All API bodies switched to **MessagePack**.
- Frontend migrated to SvelteKit + `@cryptgeon/shared`.
- Frontend uses `@cryptgeon/shared` for crypto + payload codec (replacing the previous local `cryptgeon/shared`); heavy pack/unpack runs in a web worker.
- CLI rebuilt with `vite-plus` (bundles all deps) and imports from `@cryptgeon/shared`.
### Breaking changes
+4
View File
@@ -169,6 +169,10 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md).
Please refer to the security section [here](./SECURITY.md).
## Usage of LLMs
Starting from V3, I used LLMs heavily to implement _my own ideas_. This means that the direction and architecture choices are human. A lot of the implementation that derives from that, is automated with an LLM.
---
_Attributions_
+4
View File
@@ -151,6 +151,10 @@ Ver [CONTRIBUTING.md](./CONTRIBUTING.md).
Por favor dirígete a la sección de seguridad [aquí](./SECURITY.md).
## Uso de LLMs
A partir de la V3, utilicé LLMs de forma intensiva para implementar _mis propias ideas_. Esto significa que la dirección y las decisiones de arquitectura son humanas. Gran parte de la implementación que deriva de eso está automatizada con un LLM.
---
_Atribuciones_
+4
View File
@@ -149,6 +149,10 @@ services:
参见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
## LLM 的使用
从 V3 开始,我大量使用 LLM 来实现_我自己的想法_。这意味着项目的方向和架构选择均由人类决定。由此衍生的大部分实现由 LLM 自动完成。
###### Attributions
- 测试数据:
+1 -1
View File
@@ -252,7 +252,7 @@ dependencies = [
[[package]]
name = "cryptgeon"
version = "3.0.0-rc.3"
version = "3.0.0-rc.4"
dependencies = [
"axum",
"bs62",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "cryptgeon"
version = "3.0.0-rc.3"
version = "3.0.0-rc.4"
authors = ["cupcakearmy <hi@nicco.io>"]
edition = "2024"
rust-version = "1.95"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "cryptgeon",
"version": "3.0.0-rc.3",
"version": "3.0.0-rc.4",
"homepage": "https://github.com/cupcakearmy/cryptgeon",
"repository": {
"type": "git",
+3 -3
View File
@@ -46,11 +46,11 @@ async function downloadFile(file: FileDTO) {
files = note.contents
}
})
let download = $derived(() => {
function downloadAll() {
for (const file of files) {
downloadFile(file)
}
})
}
let links = $derived(typeof note.contents === 'string' ? note.contents.match(RE_URL) : [])
</script>
@@ -92,7 +92,7 @@ async function downloadFile(file: FileDTO) {
{/key}
{/if}
{/each}
<Button onclick={download}>{$t('show.download_all')}</Button>
<Button onclick={downloadAll}>{$t('show.download_all')}</Button>
{/if}
</div>
+1 -5
View File
@@ -8,11 +8,7 @@ const contract: WorkerConract = {
return transfer(content, [content.data.buffer, content.extra.buffer, content.key.buffer])
},
unpack(data, key) {
const content = unpackContent(data, key)
return transfer(
content,
typeof content.data === 'string' ? [] : content.data.map((f) => f.data.buffer)
)
return unpackContent(data, key)
},
}