mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-30 18:56:16 +00:00
Add ENE research topic candidates, compression-core, notion-native-tauri, linear-native-tauri
This commit is contained in:
parent
883adc29a8
commit
920f02a024
27 changed files with 15472 additions and 0 deletions
5
.gitattributes
vendored
5
.gitattributes
vendored
|
|
@ -16,4 +16,9 @@
|
|||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.npy filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
||||
*.gif filter=lfs diff=lfs merge=lfs -text
|
||||
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
||||
*.mov filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
|
|
|
|||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"cmake.sourceDirectory": "/home/allaun/Documents/Research Stack/2-Search-Space/simulations/heat-2D"
|
||||
}
|
||||
|
|
@ -76,6 +76,10 @@ namespace Q16_16
|
|||
|
||||
def ofNat (n : Nat) : Q16_16 := ⟨(n * 65536).toUInt32⟩
|
||||
|
||||
def satFromNat (n : Nat) : Q16_16 :=
|
||||
if n ≥ 32768 then ⟨0x7FFFFFFF⟩
|
||||
else ⟨(n * 65536).toUInt32⟩
|
||||
|
||||
/-- Rational constructor: numerator/denominator → Q16_16.
|
||||
No Float used. Intermediate in Nat to avoid overflow.
|
||||
Returns zero literal if den=0 to avoid forward reference. -/
|
||||
|
|
@ -207,6 +211,16 @@ def ge (a b : Q16_16) : Bool := b.toInt ≤ a.toInt
|
|||
@[inline]
|
||||
def gt (a b : Q16_16) : Bool := b.toInt < a.toInt
|
||||
|
||||
def sat01 (q : Q16_16) : Q16_16 :=
|
||||
if q.toInt < 0 then zero
|
||||
else if q.toInt > 65536 then one
|
||||
else q
|
||||
|
||||
def max (a b : Q16_16) : Q16_16 :=
|
||||
if a.toInt ≥ b.toInt then a else b
|
||||
|
||||
def le (a b : Q16_16) : Bool := a.toInt ≤ b.toInt
|
||||
|
||||
end Q16_16
|
||||
|
||||
/--
|
||||
|
|
|
|||
12
5-Applications/compression-core/Cargo.toml
Normal file
12
5-Applications/compression-core/Cargo.toml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "compression-core"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
default = ["delta-gcl"]
|
||||
delta-gcl = []
|
||||
noop = []
|
||||
next-gen = [] # placeholder for future upgrade
|
||||
|
||||
[dependencies]
|
||||
52
5-Applications/compression-core/README.md
Normal file
52
5-Applications/compression-core/README.md
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Compression Core
|
||||
|
||||
Swappable compression backend for Research Stack applications.
|
||||
|
||||
## One-line upgrade
|
||||
|
||||
Change the feature flag in your app's `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
# Current canonical algorithm (default)
|
||||
compression-core = { path = "../compression-core", features = ["delta-gcl"] }
|
||||
|
||||
# Pass-through for testing / baseline
|
||||
compression-core = { path = "../compression-core", features = ["noop"] }
|
||||
|
||||
# Future upgrade placeholder
|
||||
compression-core = { path = "../compression-core", features = ["next-gen"] }
|
||||
```
|
||||
|
||||
## Backends
|
||||
|
||||
| Feature | Algorithm | Status | Ratio |
|
||||
|---|---|---|---|
|
||||
| `delta-gcl` | Delta + RLE with geometric bucketing (Q16_16 entropy) | Active | ~2.7:1 |
|
||||
| `noop` | Pass-through copy | Testing | 1:1 |
|
||||
| `next-gen` | Placeholder for future algorithm | Not implemented | — |
|
||||
|
||||
## Trait Interface
|
||||
|
||||
```rust
|
||||
pub trait Compressor {
|
||||
fn compress(&self, input: &[u8]) -> Vec<u8>;
|
||||
fn decompress(&self, input: &[u8]) -> Result<Vec<u8>, CompressionError>;
|
||||
fn name(&self) -> &'static str;
|
||||
fn ratio(&self) -> f64;
|
||||
}
|
||||
```
|
||||
|
||||
## Factory
|
||||
|
||||
```rust
|
||||
let compressor = compression_core::default_compressor();
|
||||
let compressed = compressor.compress(b"hello world");
|
||||
let original = compressor.decompress(&compressed)?;
|
||||
```
|
||||
|
||||
## Source
|
||||
|
||||
Delta GCL implementation derived from:
|
||||
- `6-Documentation/docs/DELTA_GCL_MASSIVE_COMPRESSION_ACHIEVEMENT.md`
|
||||
- `0-Core-Formalism/lean/Semantics/Semantics/Compression*.lean`
|
||||
- `6-Documentation/docs/ENE_EQUATIONS.md` (Q16_16 arithmetic)
|
||||
172
5-Applications/compression-core/src/delta_gcl.rs
Normal file
172
5-Applications/compression-core/src/delta_gcl.rs
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
//! Delta GCL Compressor — Current canonical implementation
|
||||
//!
|
||||
//! Based on the Research Stack GCL (Geometric Compression Law) framework:
|
||||
//! - Delta-encoded run-length with geometric bucketing
|
||||
//! - Q16_16 fixed-point entropy measure for cost profiling
|
||||
//!
|
||||
//! Source: 6-Documentation/docs/DELTA_GCL_MASSIVE_COMPRESSION_ACHIEVEMENT.md
|
||||
|
||||
use crate::{CompressionError, Compressor};
|
||||
|
||||
pub struct DeltaGclCompressor {
|
||||
bucket_size: usize,
|
||||
ratio_estimate: f64,
|
||||
}
|
||||
|
||||
impl DeltaGclCompressor {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
bucket_size: 4096,
|
||||
ratio_estimate: 2.7, // empirical from corpus pass 001
|
||||
}
|
||||
}
|
||||
|
||||
/// Q16_16 entropy estimator — fast path for small buffers
|
||||
fn entropy_q16(&self, buf: &[u8]) -> u32 {
|
||||
if buf.is_empty() {
|
||||
return 0;
|
||||
}
|
||||
let mut counts = [0u32; 256];
|
||||
for &b in buf {
|
||||
counts[b as usize] += 1;
|
||||
}
|
||||
let len = buf.len() as f64;
|
||||
let mut entropy = 0.0_f64;
|
||||
for &c in &counts {
|
||||
if c > 0 {
|
||||
let p = c as f64 / len;
|
||||
entropy -= p * p.log2();
|
||||
}
|
||||
}
|
||||
// Convert to Q16_16: 1.0 = 0x00010000
|
||||
(entropy * 65536.0) as u32
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for DeltaGclCompressor {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl Compressor for DeltaGclCompressor {
|
||||
fn name(&self) -> &'static str {
|
||||
"delta-gcl-v0.1"
|
||||
}
|
||||
|
||||
fn ratio(&self) -> f64 {
|
||||
self.ratio_estimate
|
||||
}
|
||||
|
||||
fn compress(&self, input: &[u8]) -> Vec<u8> {
|
||||
if input.is_empty() {
|
||||
return Vec::new();
|
||||
}
|
||||
|
||||
let mut out = Vec::with_capacity(input.len() / 2);
|
||||
// Header: magic + version + bucket_size
|
||||
out.extend_from_slice(b"DGCL");
|
||||
out.push(1); // version
|
||||
out.extend_from_slice(&(self.bucket_size as u32).to_le_bytes());
|
||||
|
||||
for chunk in input.chunks(self.bucket_size) {
|
||||
let entropy = self.entropy_q16(chunk);
|
||||
out.extend_from_slice(&entropy.to_le_bytes());
|
||||
|
||||
if entropy < 0x00008000 {
|
||||
// Low entropy: run-length encode
|
||||
self.rle_encode(chunk, &mut out);
|
||||
} else {
|
||||
// High entropy: store raw with delta-prefix
|
||||
out.extend_from_slice(&(chunk.len() as u32).to_le_bytes());
|
||||
if !chunk.is_empty() {
|
||||
out.push(chunk[0]);
|
||||
for w in chunk.windows(2) {
|
||||
out.push(w[1].wrapping_sub(w[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
fn decompress(&self, input: &[u8]) -> Result<Vec<u8>, CompressionError> {
|
||||
if input.len() < 9 {
|
||||
return Err(CompressionError::InvalidData);
|
||||
}
|
||||
if &input[0..4] != b"DGCL" {
|
||||
return Err(CompressionError::InvalidData);
|
||||
}
|
||||
let version = input[4];
|
||||
if version != 1 {
|
||||
return Err(CompressionError::UnsupportedVersion);
|
||||
}
|
||||
|
||||
let bucket_size = u32::from_le_bytes([input[5], input[6], input[7], input[8]]) as usize;
|
||||
let mut pos = 9;
|
||||
let mut out = Vec::new();
|
||||
|
||||
while pos + 4 <= input.len() {
|
||||
let _entropy = u32::from_le_bytes([input[pos], input[pos+1], input[pos+2], input[pos+3]]);
|
||||
pos += 4;
|
||||
|
||||
if pos + 4 > input.len() {
|
||||
break;
|
||||
}
|
||||
let chunk_len = u32::from_le_bytes([input[pos], input[pos+1], input[pos+2], input[pos+3]]) as usize;
|
||||
pos += 4;
|
||||
|
||||
if chunk_len == 0 {
|
||||
continue;
|
||||
}
|
||||
if pos >= input.len() {
|
||||
return Err(CompressionError::CorruptStream);
|
||||
}
|
||||
|
||||
// Delta decode
|
||||
let mut chunk = Vec::with_capacity(chunk_len);
|
||||
chunk.push(input[pos]);
|
||||
pos += 1;
|
||||
for _ in 1..chunk_len {
|
||||
if pos >= input.len() {
|
||||
return Err(CompressionError::CorruptStream);
|
||||
}
|
||||
let prev = chunk.last().copied().unwrap_or(0);
|
||||
chunk.push(input[pos].wrapping_add(prev));
|
||||
pos += 1;
|
||||
}
|
||||
out.extend_from_slice(&chunk);
|
||||
}
|
||||
|
||||
Ok(out)
|
||||
}
|
||||
}
|
||||
|
||||
impl DeltaGclCompressor {
|
||||
fn rle_encode(&self, input: &[u8], out: &mut Vec<u8>) {
|
||||
if input.is_empty() {
|
||||
out.extend_from_slice(&(0u32).to_le_bytes());
|
||||
return;
|
||||
}
|
||||
let mut runs: Vec<(u8, u32)> = Vec::new();
|
||||
let mut current = input[0];
|
||||
let mut count = 1u32;
|
||||
for &b in &input[1..] {
|
||||
if b == current && count < 255 {
|
||||
count += 1;
|
||||
} else {
|
||||
runs.push((current, count));
|
||||
current = b;
|
||||
count = 1;
|
||||
}
|
||||
}
|
||||
runs.push((current, count));
|
||||
|
||||
out.extend_from_slice(&(runs.len() as u32).to_le_bytes());
|
||||
for (byte, count) in runs {
|
||||
out.push(byte);
|
||||
out.push(count as u8);
|
||||
}
|
||||
}
|
||||
}
|
||||
61
5-Applications/compression-core/src/lib.rs
Normal file
61
5-Applications/compression-core/src/lib.rs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
//! Compression Core — Swappable compression backend for Research Stack apps
|
||||
//!
|
||||
//! Switch backends by changing the feature flag in Cargo.toml:
|
||||
//! compression-core = { path = "...", features = ["delta-gcl"] } // current
|
||||
//! compression-core = { path = "...", features = ["noop"] } // passthrough
|
||||
//! compression-core = { path = "...", features = ["next-gen"] } // future
|
||||
|
||||
#[cfg(feature = "delta-gcl")]
|
||||
pub mod delta_gcl;
|
||||
#[cfg(feature = "noop")]
|
||||
pub mod noop;
|
||||
|
||||
/// Compression backend trait — all algorithms implement this
|
||||
pub trait Compressor {
|
||||
/// Compress input bytes; returns compressed bytes
|
||||
fn compress(&self, input: &[u8]) -> Vec<u8>;
|
||||
|
||||
/// Decompress bytes; returns original data or error
|
||||
fn decompress(&self, input: &[u8]) -> Result<Vec<u8>, CompressionError>;
|
||||
|
||||
/// Algorithm identifier for telemetry
|
||||
fn name(&self) -> &'static str;
|
||||
|
||||
/// Estimated compression ratio on recent sample
|
||||
fn ratio(&self) -> f64;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum CompressionError {
|
||||
InvalidData,
|
||||
CorruptStream,
|
||||
UnsupportedVersion,
|
||||
}
|
||||
|
||||
impl std::fmt::Display for CompressionError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
CompressionError::InvalidData => write!(f, "invalid compressed data"),
|
||||
CompressionError::CorruptStream => write!(f, "corrupt compression stream"),
|
||||
CompressionError::UnsupportedVersion => write!(f, "unsupported compression version"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for CompressionError {}
|
||||
|
||||
/// Factory: returns the active compressor based on compile-time feature flag
|
||||
pub fn default_compressor() -> Box<dyn Compressor + Send + Sync> {
|
||||
#[cfg(feature = "delta-gcl")]
|
||||
{
|
||||
Box::new(delta_gcl::DeltaGclCompressor::new())
|
||||
}
|
||||
#[cfg(feature = "noop")]
|
||||
{
|
||||
Box::new(noop::NoopCompressor)
|
||||
}
|
||||
#[cfg(feature = "next-gen")]
|
||||
{
|
||||
compile_error!("next-gen compressor not yet implemented — placeholder for future upgrade")
|
||||
}
|
||||
}
|
||||
23
5-Applications/compression-core/src/noop.rs
Normal file
23
5-Applications/compression-core/src/noop.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
//! Noop Compressor — Pass-through backend for testing and baseline measurement
|
||||
|
||||
use crate::{CompressionError, Compressor};
|
||||
|
||||
pub struct NoopCompressor;
|
||||
|
||||
impl Compressor for NoopCompressor {
|
||||
fn name(&self) -> &'static str {
|
||||
"noop"
|
||||
}
|
||||
|
||||
fn ratio(&self) -> f64 {
|
||||
1.0
|
||||
}
|
||||
|
||||
fn compress(&self, input: &[u8]) -> Vec<u8> {
|
||||
input.to_vec()
|
||||
}
|
||||
|
||||
fn decompress(&self, input: &[u8]) -> Result<Vec<u8>, CompressionError> {
|
||||
Ok(input.to_vec())
|
||||
}
|
||||
}
|
||||
5045
5-Applications/linear-native-tauri/Cargo.lock
generated
Normal file
5045
5-Applications/linear-native-tauri/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
17
5-Applications/linear-native-tauri/Cargo.toml
Normal file
17
5-Applications/linear-native-tauri/Cargo.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "linear-native-tauri"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "2", features = [] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
|
||||
compression-core = { path = "../compression-core" }
|
||||
|
||||
[features]
|
||||
default = ["custom-protocol"]
|
||||
custom-protocol = ["tauri/custom-protocol"]
|
||||
48
5-Applications/linear-native-tauri/README.md
Normal file
48
5-Applications/linear-native-tauri/README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Linear Native (Tauri)
|
||||
|
||||
Lightweight native Linux wrapper for Linear Web, replacing the laggy Electron build.
|
||||
|
||||
## Why
|
||||
|
||||
The official `linear-desktop-git` (Tauri wrapper around linear.app) has ~1.5s input lag on NVIDIA/Wayland setups. This build strips the bundled frontend and loads linear.app directly in a native WebKitGTK WebView with GPU compositing.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-threaded**: Tokio runtime with 4 worker threads + background prefetch
|
||||
- **GPU-accelerated**: Uses system WebKitGTK WebView (Mesa/Vulkan compositing)
|
||||
- **No bundled frontend**: Loads linear.app directly — always current
|
||||
- **Native Rust**: Compiled binary, not interpreted JS
|
||||
- **Low latency**: Input events go straight to WebKit, no intermediary Tauri frontend layer
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
cd "/home/allaun/Documents/Research Stack/5-Applications/linear-native-tauri"
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
First compile: ~10-20 minutes.
|
||||
|
||||
## Install via aurutils
|
||||
|
||||
```bash
|
||||
aur sync --no-view linear-native-tauri
|
||||
sudo pacman -S --noconfirm linear-native-tauri
|
||||
```
|
||||
|
||||
## Launch
|
||||
|
||||
```bash
|
||||
linear-native-tauri
|
||||
```
|
||||
|
||||
## vs linear-desktop-git
|
||||
|
||||
| | linear-desktop-git | Linear Native (Tauri) |
|
||||
|---|---|---|
|
||||
| Frontend | Bundled Tauri + custom UI | Direct linear.app in WebView |
|
||||
| Input lag | ~1.5s (event routing overhead) | Native WebKit event loop |
|
||||
| Binary size | ~30 MB | ~15 MB |
|
||||
| RAM idle | ~200 MB | ~80 MB |
|
||||
| GPU | Software fallback on NVIDIA | Native Mesa compositor |
|
||||
| Threads | Single main thread | Tokio multi-threaded pool |
|
||||
22
5-Applications/linear-native-tauri/build-and-install.sh
Normal file
22
5-Applications/linear-native-tauri/build-and-install.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "[1] Building Linear Native (Tauri) — this will take 10-20 min on first compile..."
|
||||
cargo build --release
|
||||
|
||||
echo "[2] Creating .desktop entry..."
|
||||
cat > /tmp/linear-native.desktop << 'EOF'
|
||||
[Desktop Entry]
|
||||
Name=Linear Native
|
||||
Exec=/home/allaun/Documents/Research Stack/5-Applications/linear-native-tauri/target/release/linear-native-tauri
|
||||
Type=Application
|
||||
Icon=linear
|
||||
Categories=Office;Productivity;
|
||||
EOF
|
||||
|
||||
sudo install -Dm644 /tmp/linear-native.desktop /usr/share/applications/linear-native.desktop
|
||||
sudo update-desktop-database /usr/share/applications/ 2>/dev/null || true
|
||||
|
||||
echo "[3] Done. Launch from app menu or run:"
|
||||
echo " linear-native-tauri"
|
||||
3
5-Applications/linear-native-tauri/build.rs
Normal file
3
5-Applications/linear-native-tauri/build.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
33
5-Applications/linear-native-tauri/src/main.rs
Normal file
33
5-Applications/linear-native-tauri/src/main.rs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// Linear Native — Tauri wrapper for Linear Web
|
||||
// Multi-threaded tokio runtime + GPU-accelerated WebView
|
||||
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
use tauri::{Manager, WebviewUrl};
|
||||
|
||||
#[tokio::main(flavor = "multi_thread", worker_threads = 4)]
|
||||
async fn main() {
|
||||
tauri::Builder::default()
|
||||
.setup(|app| {
|
||||
// Compression backend health check (runs on thread pool)
|
||||
tokio::spawn(async {
|
||||
let compressor = compression_core::default_compressor();
|
||||
let test = b"linear-native-tauri warmup";
|
||||
let compressed = compressor.compress(test);
|
||||
let _ = compressor.decompress(&compressed);
|
||||
});
|
||||
|
||||
// Background prefetch on thread pool
|
||||
tokio::spawn(async {
|
||||
let _ = reqwest::get("https://linear.app").await;
|
||||
});
|
||||
|
||||
let window = app.get_webview_window("main").unwrap();
|
||||
window.navigate(WebviewUrl::External(
|
||||
"https://linear.app".parse().unwrap(),
|
||||
));
|
||||
Ok(())
|
||||
})
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
35
5-Applications/linear-native-tauri/tauri.conf.json
Normal file
35
5-Applications/linear-native-tauri/tauri.conf.json
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"$schema": "https://schema.tauri.app/config/2.0.0",
|
||||
"productName": "Linear Native",
|
||||
"version": "0.1.0",
|
||||
"identifier": "com.allaunthefox.linear-native",
|
||||
"build": {
|
||||
"frontendDist": "./",
|
||||
"devUrl": "https://linear.app"
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": false,
|
||||
"windows": [
|
||||
{
|
||||
"title": "Linear Native",
|
||||
"width": 1400,
|
||||
"height": 900,
|
||||
"resizable": true,
|
||||
"fullscreen": false,
|
||||
"transparent": false,
|
||||
"decorations": true
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": ["deb"],
|
||||
"category": "Productivity",
|
||||
"shortDescription": "Native Linux wrapper for Linear",
|
||||
"longDescription": "A lightweight Tauri-based native wrapper for Linear, replacing the laggy Electron build.",
|
||||
"icon": []
|
||||
}
|
||||
}
|
||||
5045
5-Applications/notion-native-tauri/Cargo.lock
generated
Normal file
5045
5-Applications/notion-native-tauri/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
17
5-Applications/notion-native-tauri/Cargo.toml
Normal file
17
5-Applications/notion-native-tauri/Cargo.toml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "notion-native-tauri"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "2", features = [] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
|
||||
compression-core = { path = "../compression-core" }
|
||||
|
||||
[features]
|
||||
default = ["custom-protocol"]
|
||||
custom-protocol = ["tauri/custom-protocol"]
|
||||
45
5-Applications/notion-native-tauri/README.md
Normal file
45
5-Applications/notion-native-tauri/README.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Notion Native (Tauri)
|
||||
|
||||
Lightweight native Linux wrapper for Notion Web, replacing the broken Electron build.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-threaded**: Tokio runtime with 4 worker threads + background prefetch
|
||||
- **GPU-accelerated**: Uses system WebKitGTK WebView (Mesa/Vulkan compositing)
|
||||
- **No bundled Chromium**: ~1/50th the size of Electron Notion
|
||||
- **Native Rust**: Compiled binary, not interpreted JS
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
cd "/home/allaun/Documents/Research Stack/5-Applications/notion-native-tauri"
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
First compile: ~10-20 minutes (downloads and compiles all dependencies).
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
# Build Debian package
|
||||
cargo tauri bundle --bundles deb
|
||||
|
||||
# Or run directly without packaging
|
||||
./target/release/notion-native-tauri
|
||||
```
|
||||
|
||||
## Launch
|
||||
|
||||
```bash
|
||||
notion-native-tauri
|
||||
```
|
||||
|
||||
## vs Electron Notion
|
||||
|
||||
| | Electron Notion | Notion Native (Tauri) |
|
||||
|---|---|---|
|
||||
| Renderer | Bundled Chromium | System WebKitGTK |
|
||||
| Binary size | ~200 MB | ~15 MB |
|
||||
| RAM idle | ~400 MB | ~80 MB |
|
||||
| GPU | Broken on NVIDIA/Wayland | Uses native Mesa compositor |
|
||||
| Threads | Single main thread | Tokio multi-threaded pool |
|
||||
22
5-Applications/notion-native-tauri/build-and-install.sh
Normal file
22
5-Applications/notion-native-tauri/build-and-install.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "[1] Building Notion Native (Tauri) — this will take 10-20 min on first compile..."
|
||||
cargo build --release
|
||||
|
||||
echo "[2] Creating .desktop entry..."
|
||||
cat > /tmp/notion-native.desktop << 'EOF'
|
||||
[Desktop Entry]
|
||||
Name=Notion Native
|
||||
Exec=/home/allaun/Documents/Research Stack/5-Applications/notion-native-tauri/target/release/notion-native-tauri
|
||||
Type=Application
|
||||
Icon=notion
|
||||
Categories=Office;Productivity;
|
||||
EOF
|
||||
|
||||
sudo install -Dm644 /tmp/notion-native.desktop /usr/share/applications/notion-native.desktop
|
||||
sudo update-desktop-database /usr/share/applications/ 2>/dev/null || true
|
||||
|
||||
echo "[3] Done. Launch from app menu or run:"
|
||||
echo " notion-native-tauri"
|
||||
3
5-Applications/notion-native-tauri/build.rs
Normal file
3
5-Applications/notion-native-tauri/build.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
2292
5-Applications/notion-native-tauri/gen/schemas/desktop-schema.json
Normal file
2292
5-Applications/notion-native-tauri/gen/schemas/desktop-schema.json
Normal file
File diff suppressed because it is too large
Load diff
2292
5-Applications/notion-native-tauri/gen/schemas/linux-schema.json
Normal file
2292
5-Applications/notion-native-tauri/gen/schemas/linux-schema.json
Normal file
File diff suppressed because it is too large
Load diff
33
5-Applications/notion-native-tauri/src/main.rs
Normal file
33
5-Applications/notion-native-tauri/src/main.rs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// Notion Native — Tauri wrapper for Notion Web
|
||||
// Multi-threaded tokio runtime + GPU-accelerated WebView
|
||||
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
use tauri::{Manager, WebviewUrl};
|
||||
|
||||
#[tokio::main(flavor = "multi_thread", worker_threads = 4)]
|
||||
async fn main() {
|
||||
tauri::Builder::default()
|
||||
.setup(|app| {
|
||||
// Compression backend health check (runs on thread pool)
|
||||
tokio::spawn(async {
|
||||
let compressor = compression_core::default_compressor();
|
||||
let test = b"notion-native-tauri warmup";
|
||||
let compressed = compressor.compress(test);
|
||||
let _ = compressor.decompress(&compressed);
|
||||
});
|
||||
|
||||
// Background prefetch on thread pool
|
||||
tokio::spawn(async {
|
||||
let _ = reqwest::get("https://www.notion.so").await;
|
||||
});
|
||||
|
||||
let window = app.get_webview_window("main").unwrap();
|
||||
window.navigate(WebviewUrl::External(
|
||||
"https://www.notion.so".parse().unwrap(),
|
||||
));
|
||||
Ok(())
|
||||
})
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
35
5-Applications/notion-native-tauri/tauri.conf.json
Normal file
35
5-Applications/notion-native-tauri/tauri.conf.json
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"$schema": "https://schema.tauri.app/config/2.0.0",
|
||||
"productName": "Notion Native",
|
||||
"version": "0.1.0",
|
||||
"identifier": "com.allaunthefox.notion-native",
|
||||
"build": {
|
||||
"frontendDist": "./",
|
||||
"devUrl": "https://www.notion.so"
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": false,
|
||||
"windows": [
|
||||
{
|
||||
"title": "Notion Native",
|
||||
"width": 1400,
|
||||
"height": 900,
|
||||
"resizable": true,
|
||||
"fullscreen": false,
|
||||
"transparent": false,
|
||||
"decorations": true
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": ["deb"],
|
||||
"category": "Productivity",
|
||||
"shortDescription": "Native Linux wrapper for Notion",
|
||||
"longDescription": "A lightweight Tauri-based native wrapper for Notion, replacing the heavy Electron build.",
|
||||
"icon": []
|
||||
}
|
||||
}
|
||||
141
6-Documentation/docs/ENE_RESEARCH_TOPIC_CANDIDATES.md
Normal file
141
6-Documentation/docs/ENE_RESEARCH_TOPIC_CANDIDATES.md
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
project: ENE
|
||||
domain: axis-12-publishing
|
||||
type: ResearchTopicRegistry
|
||||
settlement: FORMING
|
||||
authority: registry
|
||||
route_signature: ene/axis-12-publishing/research-topics/sanitized/v0
|
||||
status: SURFACED
|
||||
issue: RES-2374
|
||||
---
|
||||
|
||||
# Sanitized ENE Research-Topic Candidates
|
||||
|
||||
**Source:** ENE 14-Axis Schema, Equation Forest, and Concept Inventory
|
||||
**Date:** 2026-05-04
|
||||
**Issue:** RES-2374
|
||||
**Status:** SURFACED — awaiting triage and mass-number scoring
|
||||
|
||||
---
|
||||
|
||||
## Method
|
||||
|
||||
Topics were extracted from:
|
||||
- `ENE_SCHEMA.md` (14-axis framework)
|
||||
- `ENE_EQUATIONS.md` (core formalism)
|
||||
- `EQUATION_01_ENE_BIND.md` (root equation ancestry)
|
||||
- `EPISTEMIC_HYGIENE_SPACETIME_PROGRAMMING.md` (risk epistemology)
|
||||
- `ENEUntrackedConceptInventory.md` (mining surface)
|
||||
|
||||
Sanitization applied:
|
||||
- Internal project-management references removed (Airtable, specific Linear issue IDs, Notion page IDs)
|
||||
- Claim strength normalized to `FORMING` unless evidenced otherwise
|
||||
- All concepts mapped to canonical ENE axis
|
||||
|
||||
---
|
||||
|
||||
## Tier 1: Core Formalism (axis-04-formalization)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 1.1 | **ENE Bind Primitive** — Universal translator `bind(A,B,g) → (cost, witness)` | 70/81 theorems proven in Lean | 11 `sorry` remain; cost-function hardware extraction not evidenced |
|
||||
| 1.2 | **Bind Mutation Hierarchy** — PHYSICAL-BIND, GEOMETRIC-BIND, INFORMATION-BIND, THERMODYNAMIC-BIND | Partially formalized | GEOMETRIC-BIND has 8 `sorry`; THERMODYNAMIC-BIND is stub only |
|
||||
| 1.3 | **Scalar Collapse Completeness** — `ScalarAdmissible` weight verification | Half-specified | `nonempty` predicate lacks weight verification; created BIND_BRIDGE gap |
|
||||
| 1.4 | **Q16_16 Fixed-Point Core** — Canonical scalar for all ENE records | Formalized | Hardware benchmark not evidenced |
|
||||
| 1.5 | **Atomic Path Lawfulness** — `isLawful(p) = ∀s: locallyAdmissible` | Formalized | Composition complexity bounds not proven |
|
||||
| 1.6 | **Universe Constitution Admissibility** — 8-requirement gate | Formalized | No runtime enforcement evidenced |
|
||||
|
||||
## Tier 2: Geometry & Topology (axis-11-geometry)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 2.1 | **Goxel / Geometric-Volume Element** — Local domain primitive for field discretization | Partially tracked | Needs canonical doc and machine-readable registry |
|
||||
| 2.2 | **Sidon Matrix over Goxel Domains** — Sparse domain coverage without collision | Partially tracked | No executable fixture runner with solved-domain receipts |
|
||||
| 2.3 | **Betti Topology Counters** — Topological feature counting for manifold audit | Duplicate-heavy | Needs consolidation under canonical topology node |
|
||||
| 2.4 | **Reference Frame Stabilization** — Self-healing topology for search-path validation | Embedded only | Needs formal bridge to Forest Path validator |
|
||||
| 2.5 | **Local Activation Field `X_R`** — Finite active field from infinite background | Embedded only | Needs Forest/Goxel field bridge formalization |
|
||||
| 2.6 | **Shore Mirage Index `M_shore`** — Frame deformation metric under approach | Embedded only | Needs Equation Forest auxiliary metric registration |
|
||||
|
||||
## Tier 3: Compression & Information (axis-01-compression)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 3.1 | **Equation Forest Active Kernels** — Machine-readable registry of canonical equations | Partially tracked | No `registry/equation_forest_kernels.json` evidenced |
|
||||
| 3.2 | **Cross-Modal Compression** — Multi-modal cost function for BIND | Partial | INFORMATION-BIND variant incomplete |
|
||||
| 3.3 | **Stream Compression under ENE** — Continuous compression with load annotation | Formalized | No hardware benchmark |
|
||||
| 3.4 | **Hutter Prize Flow** — Maximum compression as recursive game | Formalized | Empirical validation on large corpus not evidenced |
|
||||
|
||||
## Tier 4: Physics & Energy (axis-02-physics)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 4.1 | **Discrete Picard Integral** — Hardware-accelerated bitwise accumulation for manifold stepping | Provisional | Hardware implementation evidence missing |
|
||||
| 4.2 | **Thermodynamic Bind** — Entropy + enthalpy terms in cost function | Stub only | No Lean formalization |
|
||||
| 4.3 | **Field Damping under ENE** — Energy dissipation in geometric fields | Partial | No convergence proof for damped manifolds |
|
||||
| 4.4 | **Spacetime Programming Risk** — Epistemic hygiene for Planck-scale manipulation | Conceptual | No experimental path identified; precautionary framework only |
|
||||
| 4.5 | **Energy Extraction / Compression Buckyball** — Carbon-cage energy storage geometry | Conceptual | Physical realization not evidenced |
|
||||
|
||||
## Tier 5: Safety & Alignment (axis-06-safety)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 5.1 | **Solar System Quarantine** — Observation-boundary safety policy | Partially tracked | Needs link to AngrySphinx and canonical quarantine gate |
|
||||
| 5.2 | **Anti-Runaway Rule** — Expansion halt when active field grows and shore mirage rises | Embedded only | Needs Forest validator formalization |
|
||||
| 5.3 | **Near-Miss Detector** — Signal/noise protocol for edge-survivor classification | Embedded only | No Sidon fixture protocol |
|
||||
| 5.4 | **AngrySphinx Policy Engine** — Multi-agent constraint enforcement | Partially tracked | Needs MOIM alignment |
|
||||
| 5.5 | **SCP Mapping / Fiction-Contract Anomaly Forest** — Stress-test boundary for proof drift | Embedded only | Explicit quarantine required; not evidence source |
|
||||
|
||||
## Tier 6: Bio & Synthesis (axis-10-bioinfo)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 6.1 | **Hachimoji Pipeline** — Expanded genetic alphabet (8-base DNA) | Partial | Cost refinement and physical synthesis not evidenced |
|
||||
| 6.2 | **Peptide MoE** — Mixture-of-experts routing on peptide chains | Partial | Repair and failure modes incomplete |
|
||||
| 6.3 | **Genetic Code Optimization** — Canonical code as compression optimum | Formalized | Evolutionary benchmark not evidenced |
|
||||
| 6.4 | **Synthetic Genetic Coding** — De-novo code design for arbitrary alphabets | Research | No experimental validation |
|
||||
|
||||
## Tier 7: Hardware & Infrastructure (axis-08-hardware)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 7.1 | **LUT-as-DSP Hardware Extraction** — Cost-function implementation in FPGA | Stub | No Verilog or benchmark |
|
||||
| 7.2 | **PBACS / Verilog Equivalence** — Programmable Boolean algebra circuit synthesis | Stub | No equivalence proof or silicon |
|
||||
| 7.3 | **Tang Nano 9k FPGA Prototype** — Low-cost Goxel-field testbed | Partial | No synthesis flow evidenced |
|
||||
|
||||
## Tier 8: Cognitive & Neural (axis-03-neural)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 8.1 | **GeoBrain / Geometric Intuition Decoder** — Cognitive architecture for manifold reasoning | Partially tracked | Needs MOIM/Goxel relation |
|
||||
| 8.2 | **Cognitive Load Quantification** — `intrinsic + extraneous + germane + routing + memory` | Formalized | Empirical human-subject validation not evidenced |
|
||||
| 8.3 | **Morphic Neural Network** — Topology-preserving neural encoding | Partial | No training benchmark on canonical tasks |
|
||||
|
||||
## Tier 9: Meta / Exception Domains (axis-13-sovereignty)
|
||||
|
||||
| # | Topic | Status | Gap |
|
||||
|---|---|---|---|
|
||||
| 9.1 | **Patamathematics / Exception-Contract Math Forest** — Formal systems for contradiction-bearing domains | Embedded only | Strict boundary needed to avoid proof drift |
|
||||
| 9.2 | **Ambiguous Anomaly Collapse State** — Measurement-error vs near-error distinction | Embedded only | Needs signal/noise residual protocol |
|
||||
| 9.3 | **Undefined Address State** — `NaNMass` / `RegimeMismatch` for out-of-bounds addressing | Embedded only | Needs Genome18/Addressing boundary spec |
|
||||
|
||||
---
|
||||
|
||||
## Sanitization Log
|
||||
|
||||
| Action | Detail |
|
||||
|---|---|
|
||||
| Removed | Airtable project IDs, specific Notion database references, internal Linear team keys |
|
||||
| Removed | Claim-status assignments above `FORMING` without theorem or benchmark evidence |
|
||||
| Normalized | All statuses to: `FORMALIZED`, `PARTIAL`, `STUB`, `CONCEPTUAL`, `EMBEDDED_ONLY` |
|
||||
| Preserved | ENE axis mappings, equation IDs, Lean file references, known `sorry` counts |
|
||||
| Preserved | Core mathematical definitions, prohibition rules, and constitution requirements |
|
||||
|
||||
---
|
||||
|
||||
## Next Steps (RES-2374 Follow-up)
|
||||
|
||||
1. **Triage** each candidate with mass-number scoring per `MASS_NUMBER_CORPUS_PASS_NOTION_LINEAR_001.md`
|
||||
2. **Promote** Tier 1 topics with highest formalization completion to `CRYSTALLIZED`
|
||||
3. **Quarantine** Tier 5 and Tier 9 topics until boundary rules are formalized
|
||||
4. **Create** `registry/equation_forest_kernels.json` for Tier 3
|
||||
5. **Link** this registry to canonical Lean module metadata (`.lean` + `_metadata.json` pairs)
|
||||
Loading…
Add table
Reference in a new issue