Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
  •  
  •  
  •  
61 changes: 4 additions & 57 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,14 @@ The static site supports custom widget routes, Markdown/MDX content routes, side
Add Fission to your project:

```sh
cargo add fission
cargo add fission --features desktop
```

The facade stays as the single application dependency. Common widgets and core
types are available directly; enable target or heavier capability features such
as `web`, `android`, `ios`, `site`, `charts`, `three-d`, or `terminal-widget`
only when the app uses them.

A minimal application:

```rust
Expand Down
17 changes: 13 additions & 4 deletions crates/authoring/fission-widgets/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ license = "MIT"
repository = "https://github.com/worka-ai/fission"
description = "Widgets"

[features]
default = []
terminal = [
"dep:arboard",
"dep:portable-pty",
"dep:wezterm-term",
"dep:wezterm-surface",
]

[dependencies]
fission-macros = { path = "../fission-macros", version = "0.1.1" }
fission-core = { path = "../../core/fission-core", version = "0.1.1" }
Expand All @@ -25,7 +34,7 @@ rushdown = "0.18.0"
fission-layout = { path = "../../core/fission-layout", version = "0.1.1" }

[target.'cfg(not(any(target_os = "ios", target_os = "android", target_arch = "wasm32")))'.dependencies]
arboard = "3.4"
portable-pty = "0.9"
wezterm-term = { git = "https://github.com/wezterm/wezterm", package = "wezterm-term" }
wezterm-surface = { git = "https://github.com/wezterm/wezterm", package = "wezterm-surface" }
arboard = { version = "3.4", optional = true }
portable-pty = { version = "0.9", optional = true }
wezterm-term = { git = "https://github.com/wezterm/wezterm", package = "wezterm-term", optional = true }
wezterm-surface = { git = "https://github.com/wezterm/wezterm", package = "wezterm-surface", optional = true }
10 changes: 8 additions & 2 deletions crates/authoring/fission-widgets/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,15 @@ pub use hero::Hero;
pub mod web_view;
pub use web_view::WebView;

#[cfg(not(any(target_os = "ios", target_os = "android", target_arch = "wasm32")))]
#[cfg(all(
feature = "terminal",
not(any(target_os = "ios", target_os = "android", target_arch = "wasm32"))
))]
pub mod terminal;
#[cfg(not(any(target_os = "ios", target_os = "android", target_arch = "wasm32")))]
#[cfg(all(
feature = "terminal",
not(any(target_os = "ios", target_os = "android", target_arch = "wasm32"))
))]
pub use terminal::{TerminalLaunchConfig, TerminalSession, TerminalView};

pub mod draggable;
Expand Down
30 changes: 25 additions & 5 deletions crates/authoring/fission/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,45 @@ repository = "https://github.com/worka-ai/fission"
description = "Cross-platform GPU-accelerated UI framework for Rust"

[features]
default = ["platform-shells"]
default = []
charts = ["dep:fission-charts"]
desktop = ["dep:fission-shell-desktop"]
icons-reflection = ["fission-icons/reflection"]
ios = ["dep:fission-shell-mobile"]
android = ["dep:fission-shell-mobile"]
mobile = ["dep:fission-shell-mobile"]
platform-shells = [
"dep:fission-shell-desktop",
"dep:fission-shell-mobile",
"dep:fission-shell-web",
"desktop",
"mobile",
"web",
]
site = ["dep:fission-shell-site"]
terminal-widget = ["fission-widgets/terminal"]
test-driver = ["dep:fission-test-driver"]
three-d = [
"dep:fission-3d",
"fission-shell-desktop?/three-d",
"fission-shell-mobile?/three-d",
"fission-shell-web?/three-d",
]
web = ["dep:fission-shell-web"]

[dependencies]
fission-core = { path = "../../core/fission-core", version = "0.1.1" }
fission-3d = { path = "../../core/fission-3d", version = "0.1.1", optional = true }
fission-ir = { path = "../../core/fission-ir", version = "0.1.1" }
fission-layout = { path = "../../core/fission-layout", version = "0.1.1" }
fission-text-engine = { path = "../../core/fission-text-engine", version = "0.1.1" }
fission-theme = { path = "../../core/fission-theme", version = "0.1.1" }
fission-i18n = { path = "../../core/fission-i18n", version = "0.1.1" }
fission-widgets = { path = "../fission-widgets", version = "0.1.1" }
fission-macros = { path = "../fission-macros", version = "0.1.1" }
fission-icons = { path = "../fission-icons", version = "0.1.1" }
fission-charts = { path = "../fission-charts", version = "0.1.1", optional = true }
fission-render = { path = "../../rendering/fission-render", version = "0.1.1" }
fission-diagnostics = { path = "../../tools/fission-diagnostics", version = "0.1.1" }
fission-test-driver = { path = "../../tools/fission-test-driver", version = "0.1.1" }
fission-shell-site = { path = "../../shell/fission-shell-site", version = "0.1.1", optional = true }
fission-test-driver = { path = "../../tools/fission-test-driver", version = "0.1.1", optional = true }
serde = { version = "1.0", features = ["derive"] }

[target.'cfg(not(any(target_os = "android", target_os = "ios", target_arch = "wasm32")))'.dependencies]
Expand Down
35 changes: 34 additions & 1 deletion crates/authoring/fission/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,16 @@ Cross-platform, GPU-accelerated UI framework for Rust. Fission uses a Flutter-in
Add Fission to your project:

```sh
cargo add fission
cargo add fission --features desktop
```

The `fission` facade is the only dependency application code should normally
need. Portable widgets, state, actions, reducers, theming, icons, layout, and
render primitives are available by default. Platform shells and heavier optional
surfaces are enabled explicitly with features such as `desktop`, `web`,
`android`, `ios`, `site`, `charts`, `three-d`, `terminal-widget`, and
`test-driver`.

A minimal application:

```rust
Expand Down Expand Up @@ -347,6 +354,7 @@ Output is structured JSON, suitable for piping into analysis tools or dashboards
| `fission-layout` | Constraint-based layout engine (flexbox + box model + grid) |
| `fission-theme` | Design tokens, component themes, dark/light mode |
| `fission-i18n` | Internationalisation -- locale registry and string lookups |
| `fission-text-engine` | Rope-backed text buffers, line indexes, and edit history |
| `fission-semantics` | Accessibility roles and semantic tree types |
| `fission-widgets` | Higher-level authoring widgets (Modal, Popover, Tabs, SplitView, etc.) |
| `fission-macros` | Action and reducer macros (`#[fission_reducer]`, `#[fission_action]`) |
Expand All @@ -361,6 +369,31 @@ Output is structured JSON, suitable for piping into analysis tools or dashboards
| `fission-test` | Test utilities and helpers |
| `fission-test-driver` | LiveTestClient and JSON test protocol |

## Facade features

Applications should depend on `fission` and enable the targets or optional
surfaces they actually use:

```toml
[dependencies]
fission = { version = "0.1.1", default-features = false, features = ["desktop"] }
```

Common features:

| Feature | Enables |
|---|---|
| `desktop` | `DesktopApp` and the desktop shell |
| `web` | `WebApp` and the WASM/browser shell |
| `android` | Android mobile shell entry points |
| `ios` | iOS mobile shell entry points |
| `site` | Static site shell APIs |
| `charts` | Chart widgets and data-visualization primitives |
| `three-d` | 3D scene/embed primitives |
| `icons-reflection` | Generated icon catalog metadata for icon browsers/search |
| `terminal-widget` | PTY-backed terminal widget and terminal emulator dependencies |
| `test-driver` | Live test protocol client and helpers |

## License

MIT -- see [LICENSE](https://github.com/worka-ai/fission/blob/main/LICENSE).
Loading
Loading