Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
12fb1b6
feat(core): Initialize core models
ilaborie Jul 15, 2025
884e10f
feat(server): Provide health, api/talk, and api/slides endpoints
ilaborie Jul 15, 2025
c2ea72c
🚧 WIP
ilaborie Jul 19, 2025
c741b0a
🚧 WIP
ilaborie Jul 20, 2025
e55ac15
🚧 WIP
ilaborie Jul 20, 2025
76e9bbc
🚧 WIP
ilaborie Jul 20, 2025
d5eaa34
🚧 WIP
ilaborie Jul 20, 2025
1b2b71a
🚧 WIP
ilaborie Jul 20, 2025
d2600d4
feat(wasm): implement secure, performant WASM presentation client
ilaborie Jul 20, 2025
c0346ca
feat(server): comprehensive improvements for production readiness
ilaborie Jul 20, 2025
d49d7fd
🚧 WIP
ilaborie Jul 25, 2025
98bcb51
🚧 WIP
ilaborie Jul 25, 2025
efdc60f
🚧 WIP
ilaborie Jul 26, 2025
43cfb4e
🚧 WIP
ilaborie Jul 26, 2025
b847db8
🚧 WIP
ilaborie Jul 26, 2025
cf4ed62
🚧 WIP
ilaborie Jul 26, 2025
6e759e6
🚧 WIP
ilaborie Jul 26, 2025
ccc9874
🚧 WIP
ilaborie Jul 26, 2025
3a87c4a
🚧 WIP
ilaborie Jul 26, 2025
af0326d
🚧 WIP
ilaborie Jul 26, 2025
c0e6a80
🚧 WIP
ilaborie Jul 26, 2025
42a2ea0
🚧 WIP
ilaborie Jul 26, 2025
e899df4
🚧 WIP
ilaborie Jul 26, 2025
85e5a64
🚧 WIP
ilaborie Jul 27, 2025
23f1b0a
🚧 WIP
ilaborie Aug 2, 2025
5c52dcc
🚧 WIP
ilaborie Aug 2, 2025
e3ae865
🚧 WIP
ilaborie Aug 3, 2025
918062d
🚧 WIP
ilaborie Aug 3, 2025
b097454
🚧 WIP
ilaborie Aug 9, 2025
98dbd25
🚧 WIP
ilaborie Aug 9, 2025
7f20af3
Merge pull request #1 from ilaborie/feat/basic_web
ilaborie Aug 9, 2025
b32dd7b
🔄 Restructure web frontend from TypeScript to WASM implementation
ilaborie Aug 13, 2025
4611656
Merge pull request #2 from ilaborie/feat/basic_wasm
ilaborie Aug 13, 2025
1e3afa0
feat(tui): Refactor TUI to use shared toboggan-client library
ilaborie Aug 15, 2025
f66db0a
fix(server): Fix failing tests and API response format
ilaborie Aug 16, 2025
325371f
Merge pull request #3 from ilaborie/feat/tui
ilaborie Aug 16, 2025
a068eb1
iOS app
ilaborie Aug 23, 2025
e7e5ede
Merge pull request #4 from ilaborie/feat/ios2
ilaborie Aug 23, 2025
e3d7604
refactor(client): Remove sync feature and keep only async mode
ilaborie Aug 23, 2025
ffd03ab
test(server): Remove flaky multi-client navigation sync test
ilaborie Aug 23, 2025
4a3882a
style: Fix formatting after test removal
ilaborie Aug 23, 2025
6f7ddad
fix: Remove unused helper functions from multi-client sync test
ilaborie Aug 23, 2025
1401b23
Merge pull request #5 from ilaborie/refactor/async-only-client
ilaborie Aug 23, 2025
e56cbd0
refactor: Remove SlideId from core types and replace with indices
ilaborie Aug 23, 2025
4f39982
refactor(ios): Remove dead updateSlideIndexFromState method
ilaborie Aug 23, 2025
4db600e
Merge pull request #6 from ilaborie/refactor/no_more_slideid
ilaborie Aug 23, 2025
8409949
Native desktop app
ilaborie Aug 25, 2025
76d4fd3
Merge pull request #7 from ilaborie/feat/desktop
ilaborie Aug 25, 2025
ee86ad6
🚧 WIP
ilaborie Aug 26, 2025
8525a15
🚧 WIP
ilaborie Aug 27, 2025
5ad1750
Cleaning code
ilaborie Aug 30, 2025
9f56bfe
ESP32 code
ilaborie Sep 1, 2025
d142853
Merge pull request #9 from ilaborie/feat/esp32
ilaborie Sep 1, 2025
560fe99
fix!: Cleaning code
ilaborie Sep 6, 2025
d9f8f49
feat: Update comrak
ilaborie Oct 26, 2025
9d7de93
Merge pull request #12 from ilaborie/feat/cleaning
ilaborie Oct 26, 2025
2e48ef4
fix: Fix serve include the web app
ilaborie Oct 26, 2025
4a707f0
feat!: Add watch mode
ilaborie Oct 26, 2025
95714ba
Merge pull request #13 from ilaborie/bugfixes
ilaborie Oct 26, 2025
35c8b32
feat: Export static html
ilaborie Oct 26, 2025
ee8052b
Merge pull request #14 from ilaborie/feat/static
ilaborie Oct 26, 2025
8197e6a
fix: Cleanup the code
ilaborie Nov 1, 2025
1ce50ba
Merge pull request #15 from ilaborie/feat/more
ilaborie Nov 11, 2025
d5f64c7
chore(deps): bump playwright and @playwright/test in /toboggan-web
dependabot[bot] Nov 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 115 additions & 0 deletions .git-plop.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
[branch]
name = "{{name | slugify}}"

[branch.validation]

[[branch.fields]]
name = "name"
required = true
type = "text"

[branch.fields.validation]
min_length = 3

[commit]
title = """
{{type}}
{%- if scope -%}
({{scope}})
{%- endif -%}
{%- if breaking -%}
!
{%- endif -%}
: {{subject | first_upper | trim_end_matches(pat='.') }}"""
description = "{{description | wrap(size=72) }}"
auto_signed = false
auto_add = false

[commit.validation]
# pattern = "^(feat|fix|docs|style|refactor|perf|test|build|chore|revert)(\\(.\\))?!?: (.){1, 72}$"

[[commit.fields]]
name = "type"
prompt = "Select the type of change that you're committing"
required = true
type = "list"
allow_custom_value = false

[[commit.fields.values]]
value = "feat"
description = "✨ a new feature"

[[commit.fields.values]]
value = "fix"
description = "🐛 a bug fix"

[[commit.fields.values]]
value = "docs"
description = "📝 documentation"

[[commit.fields.values]]
value = "style"
description = "🎨 code-stylish change like formatting"

[[commit.fields.values]]
value = "refactor"
description = "♻️ code refactoring"

[[commit.fields.values]]
value = "perf"
description = "⚡️ performance improvements"

[[commit.fields.values]]
value = "test"
description = "🧪 adding missing test or correct existing tests"

[[commit.fields.values]]
value = "build"
description = "👷 changes related to project build"

[[commit.fields.values]]
value = "ci"
description = "💚 changes related to CI/CD"

[[commit.fields.values]]
value = "chore"
description = "🔧 other changes"

[[commit.fields.values]]
value = "revert"
description = "⏪ revert a previous commit"

[[commit.fields]]
name = "breaking"
prompt = "Are there any breaking changes?"
default = false
required = true
type = "confirm"
affirmative = "Yes 💥"
negative = "No"

[[commit.fields]]
name = "scope"
prompt = "What is the scope of this change?"
description = "\te.g. component or file name"
required = false
type = "text"

[commit.fields.validation]

[[commit.fields]]
name = "subject"
prompt = "If applied, this commit will ..."
description = "Short, imperative tense description of the change"
required = true
type = "text"

[commit.fields.validation]

[[commit.fields]]
name = "description"
prompt = "Description of the change"
required = false
type = "text"

[commit.fields.validation]
76 changes: 76 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,78 @@
# Rust build artifacts
target/

# macOS system files
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop

# Xcode user-specific files
**/xcuserdata/
**/*.xcuserstate
**/*.xcbkptlist
**/*.xcscheme
**/xcshareddata/WorkspaceSettings.xcsettings
**/project.xcworkspace/xcshareddata/
**/project.xcworkspace/xcuserdata/

# Swift Package Manager
.swiftpm/
.build/
**/Package.resolved

# iOS build artifacts
*.ipa
*.dSYM
*.dSYM.zip
DerivedData/
build/

# Simulator and device logs
simulator_logs/
device_logs/

# Provisioning profiles
*.mobileprovision
*.provisionprofile

# General development temp files
*.swp
*.swo
*~
.tmp
*.tmp
*.bak
*.orig

# IDE files
.vscode/
.idea/
*.sublime-*

# Log files
*.log

# Backup and temporary files with conflict markers
.!*!*

# UniFFI generated files (should be regenerated during build)
**/TobogganCore.swift
**/tobogganFFI.h
**/tobogganFFI.modulemap
**/libtoboggan_ios_core.a
**/*.xcframework

idea.md
*.local.*
TODO.md
28 changes: 28 additions & 0 deletions .mise-tasks/build/ios
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
#MISE description="Build iOS application with Rust core and Swift bindings and configure Xcode project"

set -eu

# Build for iOS targets
echo "🔨 Building Rust library for iOS targets..."

# Add iOS targets if not already installed
rustup target add aarch64-apple-ios
rustup target add x86_64-apple-ios
rustup target add aarch64-apple-ios-sim

echo "📱 Building for iOS device (aarch64-apple-ios)..."
cargo build -p toboggan-ios --release --target aarch64-apple-ios

# Build for iOS simulator (x86_64 and arm64)
echo "🖥️ Building for iOS Simulator (x86_64-apple-ios)..."
cargo build -p toboggan-ios --release --target x86_64-apple-ios

echo "🖥️ Building for iOS Simulator (aarch64-apple-ios-sim)..."
cargo build -p toboggan-ios --release --target aarch64-apple-ios-sim

echo "🛠️ Building the uniffi-bindgen helper..."
cargo build -p toboggan-ios --release --bin uniffi-bindgen


echo "🍎 Now you can build in XCode the iOS application"
19 changes: 19 additions & 0 deletions .mise-tasks/build/wasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
#MISE description="Auto-format code and apply clippy suggested fixes"

set -eu

RUST_LOG="info,wasm_pack=warn"
WASM_PROJECT="toboggan-web/toboggan-wasm"

# Build WASM
wasm-pack build --target web --no-pack --no-opt --release --out-dir pkg $WASM_PROJECT

# Try to compress
wasm-opt --enable-bulk-memory --enable-nontrapping-float-to-int -Os -o $WASM_PROJECT/pkg/toboggan_wasm_bg.wasm $WASM_PROJECT/pkg/toboggan_wasm_bg.wasm

# Show file size
echo "Build complete! File sizes:"
ls -lh $WASM_PROJECT/pkg/toboggan_wasm_bg*.wasm
echo "Gzipped size:"
gzip -c $WASM_PROJECT/pkg/toboggan_wasm_bg.wasm | wc -c | awk '{print $1/1024 " KB"}'
17 changes: 0 additions & 17 deletions .mise-tasks/check

This file was deleted.

26 changes: 26 additions & 0 deletions .mise-tasks/check/_default
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
#MISE description="Run comprehensive pre-push checks: Rust, web, and iOS"

set -eu

echo "🚀 Running comprehensive checks for all platforms..."

# Run Rust checks
echo "==================== RUST CHECKS ===================="
mise check:rust

# Run web checks
echo "==================== WEB CHECKS ====================="
mise check:web

# Run iOS checks
echo "==================== iOS CHECKS ====================="
mise check:ios

echo ""
echo "🎉 All platform checks completed successfully!"
echo "✅ Rust: formatting, linting, unit tests, doctests"
echo "✅ Web: Biome linting and formatting"
echo "✅ iOS: SwiftLint analysis"
echo ""
echo "Ready for commit! 🚀"
25 changes: 25 additions & 0 deletions .mise-tasks/check/ios
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
#MISE description="Run iOS-specific checks with SwiftLint"

set -eu

echo "📱 Running iOS checks..."

# Check Swift code with SwiftLint
if command -v swiftlint >/dev/null 2>&1; then
echo "🔍 Checking Swift code with SwiftLint..."
if [ -d "TobogganApp" ]; then
if swiftlint lint --config .swiftlint.yml; then
echo "✅ SwiftLint check completed successfully"
else
echo "⚠️ SwiftLint check failed or SourceKit unavailable, skipping Swift linting"
echo "Note: This may happen in CI environments or when Xcode tools are not properly configured"
fi
else
echo "ℹ️ No Swift code found in TobogganApp, skipping SwiftLint check"
fi
else
echo "⚠️ SwiftLint not found, skipping Swift linting (install with: mise install swiftlint)"
fi

echo "✅ All iOS checks completed!"
24 changes: 24 additions & 0 deletions .mise-tasks/check/rust
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
#MISE description="Run Rust-specific checks: format, lint, and test"

set -eu

echo "🦀 Running Rust checks..."

# Check formatting
echo "📐 Checking Rust formatting..."
cargo +nightly fmt --all --check

# Check no lint warning
echo "🔍 Running Rust clippy..."
cargo clippy --all-targets --all-features -- -D warnings

# Run tests
echo "🧪 Running Rust unit tests..."
cargo nextest run

# Run doc tests
echo "📚 Running Rust doctests..."
cargo test --doc

echo "✅ All Rust checks passed!"
12 changes: 12 additions & 0 deletions .mise-tasks/check/web
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
#MISE description="Run web-specific checks with Biome"

set -eu

echo "🌐 Running web checks..."

# Check toboggan-web with Biome
echo "🔧 Checking toboggan-web with Biome..."
cd toboggan-web && npm run check && cd ..

echo "✅ All web checks passed!"
10 changes: 0 additions & 10 deletions .mise-tasks/fix

This file was deleted.

26 changes: 26 additions & 0 deletions .mise-tasks/fix/_default
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
#MISE description="Auto-fix code for all platforms: Rust, web, and iOS"

set -eu

echo "🚀 Running comprehensive auto-fixes for all platforms..."

# Run Rust fixes
echo "==================== RUST FIXES ====================="
mise fix:rust

# Run web fixes
echo "==================== WEB FIXES ======================"
mise fix:web

# Run iOS fixes
echo "==================== iOS FIXES ======================"
mise fix:ios

echo ""
echo "🎉 All platform auto-fixes completed successfully!"
echo "✅ Rust: formatting, clippy fixes"
echo "✅ Web: Biome auto-fixes"
echo "✅ iOS: SwiftLint auto-fixes"
echo ""
echo "Code has been auto-fixed! 🛠️"
Loading