mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-10-14 14:26:48 -04:00
Add FigCraft; release 0.4.1 (#313)
* Add FigCraft to the launcher FigCraft (storytold/figcraft): interface design and prototyping, the thirteenth Craft App and the sixth in the New group. - Catalog row (brand colour #02da96 from FigCraft's icon README), details page (no pictures yet), Linux desktop categories, icon tables, tagline in every catalog, xtask local mirror list. - Icon copied unmodified from FigCraft's repo; ATTRIBUTION.md row. - The Windows installer art fits five rows of icons. - Test that a companion figcraft-server tarball is never picked as the app. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Release 0.4.1 Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
d6fdab6596
commit
cbae640688
27 files changed
+93
-35
No files matched your search
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
ArtCraft Launcher installs, updates and launches the **Craft App Suite** (PhotoCraft, LightCraft,
|
ArtCraft Launcher installs, updates and launches the **Craft App Suite** (PhotoCraft, LightCraft,
|
||||||
FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft,
|
FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft,
|
||||||
CADCraft, SoundCraft). It is written in **Rust only** (no JavaScript or TypeScript): the desktop
|
CADCraft, SoundCraft, FigCraft). It is written in **Rust only** (no JavaScript or TypeScript): the desktop
|
||||||
app is native egui/eframe, and the web build is the same Rust compiled to WebAssembly (trunk +
|
app is native egui/eframe, and the web build is the same Rust compiled to WebAssembly (trunk +
|
||||||
wasm-bindgen). **No Tauri, Electron or webview shells**, ever.
|
wasm-bindgen). **No Tauri, Electron or webview shells**, ever.
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ licensed like those apps. Refresh them from the source path, never redraw them.
|
|||||||
| `assets/app-icons/gridcraft.png` | GridCraft app icon (app icon), 128 px | ArtCraft Team and the GridCraft contributors | [`storytold/gridcraft`](https://github.com/storytold/gridcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.gridcraft.png`, copied unmodified | MIT OR Apache-2.0 (GridCraft's [`LICENSE-MIT`](https://github.com/storytold/gridcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/gridcraft/blob/main/LICENSE-APACHE)) |
|
| `assets/app-icons/gridcraft.png` | GridCraft app icon (app icon), 128 px | ArtCraft Team and the GridCraft contributors | [`storytold/gridcraft`](https://github.com/storytold/gridcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.gridcraft.png`, copied unmodified | MIT OR Apache-2.0 (GridCraft's [`LICENSE-MIT`](https://github.com/storytold/gridcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/gridcraft/blob/main/LICENSE-APACHE)) |
|
||||||
| `assets/app-icons/cadcraft.png` | CADCraft app icon (app icon), 128 px | ArtCraft Team and the CADCraft contributors | [`storytold/cadcraft`](https://github.com/storytold/cadcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.cadcraft.png`, copied unmodified | MIT OR Apache-2.0 (CADCraft's [`LICENSE-MIT`](https://github.com/storytold/cadcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/cadcraft/blob/main/LICENSE-APACHE)) |
|
| `assets/app-icons/cadcraft.png` | CADCraft app icon (app icon), 128 px | ArtCraft Team and the CADCraft contributors | [`storytold/cadcraft`](https://github.com/storytold/cadcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.cadcraft.png`, copied unmodified | MIT OR Apache-2.0 (CADCraft's [`LICENSE-MIT`](https://github.com/storytold/cadcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/cadcraft/blob/main/LICENSE-APACHE)) |
|
||||||
| `assets/app-icons/soundcraft.png` | SoundCraft app icon (nightingale (placeholder)), 128 px | ArtCraft Team and the SoundCraft contributors | [`storytold/soundcraft`](https://github.com/storytold/soundcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.soundcraft.png`, copied unmodified | MIT OR Apache-2.0 (SoundCraft's [`LICENSE-MIT`](https://github.com/storytold/soundcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/soundcraft/blob/main/LICENSE-APACHE)) |
|
| `assets/app-icons/soundcraft.png` | SoundCraft app icon (nightingale (placeholder)), 128 px | ArtCraft Team and the SoundCraft contributors | [`storytold/soundcraft`](https://github.com/storytold/soundcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.soundcraft.png`, copied unmodified | MIT OR Apache-2.0 (SoundCraft's [`LICENSE-MIT`](https://github.com/storytold/soundcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/soundcraft/blob/main/LICENSE-APACHE)) |
|
||||||
|
| `assets/app-icons/figcraft.png` | FigCraft app icon (chameleon), 128 px | ArtCraft Team and the FigCraft contributors | [`storytold/figcraft`](https://github.com/storytold/figcraft) `assets/app-icon/hicolor/128x128/apps/ai.storyteller.figcraft.png`, copied unmodified | MIT OR Apache-2.0 (FigCraft's [`LICENSE-MIT`](https://github.com/storytold/figcraft/blob/main/LICENSE-MIT), [`LICENSE-APACHE`](https://github.com/storytold/figcraft/blob/main/LICENSE-APACHE)) |
|
||||||
|
|
||||||
## Documentation and README
|
## Documentation and README
|
||||||
|
|
||||||
|
|||||||
Generated
+6
-6
@@ -276,7 +276,7 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "artcraft-launcher"
|
name = "artcraft-launcher"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"artcraft-launcher-core",
|
"artcraft-launcher-core",
|
||||||
"artcraft-launcher-native",
|
"artcraft-launcher-native",
|
||||||
@@ -300,7 +300,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "artcraft-launcher-core"
|
name = "artcraft-launcher-core"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"semver",
|
"semver",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -309,7 +309,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "artcraft-launcher-native"
|
name = "artcraft-launcher-native"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"artcraft-launcher-core",
|
"artcraft-launcher-core",
|
||||||
"dirs 6.0.0",
|
"dirs 6.0.0",
|
||||||
@@ -327,7 +327,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "artcraft-launcher-ui-egui"
|
name = "artcraft-launcher-ui-egui"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"artcraft-launcher-core",
|
"artcraft-launcher-core",
|
||||||
"egui",
|
"egui",
|
||||||
@@ -343,7 +343,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "artcraft-launcher-web"
|
name = "artcraft-launcher-web"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"artcraft-launcher-core",
|
"artcraft-launcher-core",
|
||||||
"artcraft-launcher-ui-egui",
|
"artcraft-launcher-ui-egui",
|
||||||
@@ -5803,7 +5803,7 @@ checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xtask"
|
name = "xtask"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yoke"
|
name = "yoke"
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ resolver = "3"
|
|||||||
members = ["crates/*", "apps/*", "xtask"]
|
members = ["crates/*", "apps/*", "xtask"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
rust-version = "1.90"
|
rust-version = "1.90"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<b>One place to install, update and open every app in the Craft App Suite, rebuilt in pure Rust.</b><br>
|
<b>One place to install, update and open every app in the Craft App Suite, rebuilt in pure Rust.</b><br>
|
||||||
PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft,<br>
|
PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft,<br>
|
||||||
DeckCraft, GridCraft, CADCraft and SoundCraft: the right build for your computer, kept up to date.
|
DeckCraft, GridCraft, CADCraft, SoundCraft and FigCraft: the right build for your computer, kept up to date.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@@ -247,6 +247,7 @@ stand on its own.
|
|||||||
| <img src="https://raw.githubusercontent.com/storytold/deckcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.deckcraft.png" alt="" width="32" height="32"> | **DeckCraft** | Presentations and slide decks | [GitHub](https://github.com/storytold/deckcraft) | [Website](https://getartcraft.com/apps/deckcraft) |
|
| <img src="https://raw.githubusercontent.com/storytold/deckcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.deckcraft.png" alt="" width="32" height="32"> | **DeckCraft** | Presentations and slide decks | [GitHub](https://github.com/storytold/deckcraft) | [Website](https://getartcraft.com/apps/deckcraft) |
|
||||||
| <img src="https://raw.githubusercontent.com/storytold/cadcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.cadcraft.png" alt="" width="32" height="32"> | **CADCraft** | Computer-aided design | [GitHub](https://github.com/storytold/cadcraft) | [Website](https://getartcraft.com/apps/cadcraft) |
|
| <img src="https://raw.githubusercontent.com/storytold/cadcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.cadcraft.png" alt="" width="32" height="32"> | **CADCraft** | Computer-aided design | [GitHub](https://github.com/storytold/cadcraft) | [Website](https://getartcraft.com/apps/cadcraft) |
|
||||||
| <img src="https://raw.githubusercontent.com/storytold/soundcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.soundcraft.png" alt="" width="32" height="32"> | **SoundCraft** | Audio recording and editing | [GitHub](https://github.com/storytold/soundcraft) | [Website](https://getartcraft.com/apps/soundcraft) |
|
| <img src="https://raw.githubusercontent.com/storytold/soundcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.soundcraft.png" alt="" width="32" height="32"> | **SoundCraft** | Audio recording and editing | [GitHub](https://github.com/storytold/soundcraft) | [Website](https://getartcraft.com/apps/soundcraft) |
|
||||||
|
| <img src="https://raw.githubusercontent.com/storytold/figcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.figcraft.png" alt="" width="32" height="32"> | **FigCraft** | Interface design and prototyping | [GitHub](https://github.com/storytold/figcraft) | [Website](https://getartcraft.com/apps/figcraft) |
|
||||||
|
|
||||||
And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control.
|
And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
@@ -1,4 +1,4 @@
|
|||||||
//! The Craft App Suite: the twelve apps the launcher knows about.
|
//! The Craft App Suite: the thirteen apps the launcher knows about.
|
||||||
//!
|
//!
|
||||||
//! The list is data so a later version can fetch it from an API; [`SUITE`] is the built-in copy.
|
//! The list is data so a later version can fetch it from an API; [`SUITE`] is the built-in copy.
|
||||||
//!
|
//!
|
||||||
@@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
pub enum AppGroup {
|
pub enum AppGroup {
|
||||||
/// The seven original apps.
|
/// The seven original apps.
|
||||||
Classic,
|
Classic,
|
||||||
/// The five apps added after them.
|
/// The six apps added after them.
|
||||||
New,
|
New,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,8 +94,8 @@ const fn app(
|
|||||||
CraftApp { id, name, tagline, group, color, ink_light, ink_dark, repo, former_ids: &[], former_names: &[] }
|
CraftApp { id, name, tagline, group, color, ink_light, ink_dark, repo, former_ids: &[], former_names: &[] }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The Craft App Suite, in display order: the seven classic apps, then the five new ones.
|
/// The Craft App Suite, in display order: the seven classic apps, then the six new ones.
|
||||||
pub const SUITE: [CraftApp; 12] = [
|
pub const SUITE: [CraftApp; 13] = [
|
||||||
app(
|
app(
|
||||||
"photocraft",
|
"photocraft",
|
||||||
"PhotoCraft",
|
"PhotoCraft",
|
||||||
@@ -196,6 +196,14 @@ pub const SUITE: [CraftApp; 12] = [
|
|||||||
[[0x1f, 0xa5, 0xc9], [0x0e, 0x72, 0x90], [0x5f, 0xd0, 0xee]],
|
[[0x1f, 0xa5, 0xc9], [0x0e, 0x72, 0x90], [0x5f, 0xd0, 0xee]],
|
||||||
"storytold/soundcraft",
|
"storytold/soundcraft",
|
||||||
),
|
),
|
||||||
|
app(
|
||||||
|
"figcraft",
|
||||||
|
"FigCraft",
|
||||||
|
"Interface design and prototyping",
|
||||||
|
AppGroup::New,
|
||||||
|
[[0x02, 0xda, 0x96], [0x04, 0x7a, 0x56], [0x4f, 0xe8, 0xb6]],
|
||||||
|
"storytold/figcraft",
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
/// ArtCraft's website.
|
/// ArtCraft's website.
|
||||||
@@ -239,9 +247,9 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn suite_has_seven_classic_and_five_new_apps_with_unique_ids() {
|
fn suite_has_seven_classic_and_six_new_apps_with_unique_ids() {
|
||||||
assert_eq!(SUITE.iter().filter(|a| a.group == AppGroup::Classic).count(), 7);
|
assert_eq!(SUITE.iter().filter(|a| a.group == AppGroup::Classic).count(), 7);
|
||||||
assert_eq!(SUITE.iter().filter(|a| a.group == AppGroup::New).count(), 5);
|
assert_eq!(SUITE.iter().filter(|a| a.group == AppGroup::New).count(), 6);
|
||||||
let mut ids: Vec<_> = SUITE.iter().map(|a| a.id).collect();
|
let mut ids: Vec<_> = SUITE.iter().map(|a| a.id).collect();
|
||||||
ids.sort_unstable();
|
ids.sort_unstable();
|
||||||
ids.dedup();
|
ids.dedup();
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ pub fn looks_like_jpeg(bytes: &[u8]) -> bool {
|
|||||||
/// Where every Craft App runs (getartcraft.com lists the same for each of them).
|
/// Where every Craft App runs (getartcraft.com lists the same for each of them).
|
||||||
const PLATFORMS: &str = "macOS, Windows, Linux, FreeBSD, web";
|
const PLATFORMS: &str = "macOS, Windows, Linux, FreeBSD, web";
|
||||||
|
|
||||||
pub const DETAILS: [AppDetails; 12] = [
|
pub const DETAILS: [AppDetails; 13] = [
|
||||||
AppDetails {
|
AppDetails {
|
||||||
id: "photocraft",
|
id: "photocraft",
|
||||||
headline: "The image editor you already know how to use.",
|
headline: "The image editor you already know how to use.",
|
||||||
@@ -371,6 +371,37 @@ pub const DETAILS: [AppDetails; 12] = [
|
|||||||
],
|
],
|
||||||
platforms: PLATFORMS,
|
platforms: PLATFORMS,
|
||||||
},
|
},
|
||||||
|
AppDetails {
|
||||||
|
id: "figcraft",
|
||||||
|
headline: "Interface design and prototyping, in pure Rust.",
|
||||||
|
about: "Design screens, components and prototypes in a native app that opens instantly and works offline, \
|
||||||
|
with no account and no telemetry. Early alpha.",
|
||||||
|
features: &[
|
||||||
|
feature(
|
||||||
|
"Auto layout",
|
||||||
|
"Rows, columns, wrap and grids with padding, gaps and Hug, Fill or Fixed sizing, plus constraints and layout grids.",
|
||||||
|
),
|
||||||
|
feature(
|
||||||
|
"Components",
|
||||||
|
"Instances with overrides, variants and properties, styles, and variables with modes bound to fills, strokes and effects.",
|
||||||
|
),
|
||||||
|
feature("Vectors", "Real vector networks, the pen and pencil, the shape builder, editable booleans and variable width strokes."),
|
||||||
|
feature(
|
||||||
|
"Prototypes",
|
||||||
|
"Connections, triggers and animated transitions, variables with conditionals, flows and a presentation view with device frames.",
|
||||||
|
),
|
||||||
|
feature(
|
||||||
|
"Hand off",
|
||||||
|
"Inspect mode with measurements, annotations, ready-for-dev status, and code for CSS, HTML, React, SwiftUI and Compose.",
|
||||||
|
),
|
||||||
|
feature(
|
||||||
|
"Your files",
|
||||||
|
"Plain .figcraft files on your own disk. SVG, PNG, JPEG, WebP and PDF in and out, and .fig files open, best effort.",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
shots: &[],
|
||||||
|
platforms: PLATFORMS,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
impl AppDetails {
|
impl AppDetails {
|
||||||
|
|||||||
@@ -263,6 +263,9 @@ mod tests {
|
|||||||
{
|
{
|
||||||
assert_eq!(parse_asset_name(other, &["photocraft"]), None, "{other}");
|
assert_eq!(parse_asset_name(other, &["photocraft"]), None, "{other}");
|
||||||
}
|
}
|
||||||
|
// FigCraft also ships its collaboration server; that tarball is not the app.
|
||||||
|
assert_eq!(parse_asset_name("figcraft-server-0.5.1-linux-x86_64.tar.gz", &["figcraft"]), None);
|
||||||
|
assert!(parse_asset_name("figcraft-0.5.1-linux-x86_64.tar.gz", &["figcraft"]).is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ pub fn meta(app: &CraftApp) -> (&'static str, Option<&'static str>) {
|
|||||||
"gridcraft" => ("Office;Spreadsheet;", None),
|
"gridcraft" => ("Office;Spreadsheet;", None),
|
||||||
"cadcraft" => ("Graphics;Engineering;VectorGraphics;", None),
|
"cadcraft" => ("Graphics;Engineering;VectorGraphics;", None),
|
||||||
"soundcraft" => ("AudioVideo;Audio;Midi;Mixer;Sequencer;Recorder;", None),
|
"soundcraft" => ("AudioVideo;Audio;Midi;Mixer;Sequencer;Recorder;", None),
|
||||||
|
"figcraft" => ("Graphics;2DGraphics;VectorGraphics;X-Design;", Some("figcraft")),
|
||||||
_ => ("Graphics;", None),
|
_ => ("Graphics;", None),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -746,6 +746,7 @@ pub(crate) mod linux {
|
|||||||
"gridcraft" => include_bytes!("../../../assets/app-icons/gridcraft.png"),
|
"gridcraft" => include_bytes!("../../../assets/app-icons/gridcraft.png"),
|
||||||
"cadcraft" => include_bytes!("../../../assets/app-icons/cadcraft.png"),
|
"cadcraft" => include_bytes!("../../../assets/app-icons/cadcraft.png"),
|
||||||
"soundcraft" => include_bytes!("../../../assets/app-icons/soundcraft.png"),
|
"soundcraft" => include_bytes!("../../../assets/app-icons/soundcraft.png"),
|
||||||
|
"figcraft" => include_bytes!("../../../assets/app-icons/figcraft.png"),
|
||||||
_ => return None,
|
_ => return None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ deckcraft Presentations and slide shows Prezentace a promítání snímků
|
|||||||
gridcraft Spreadsheets and data Tabulky a data
|
gridcraft Spreadsheets and data Tabulky a data
|
||||||
cadcraft Computer-aided design and drafting Počítačem podporované navrhování a kreslení
|
cadcraft Computer-aided design and drafting Počítačem podporované navrhování a kreslení
|
||||||
soundcraft Recording, editing and mixing audio Nahrávání, úpravy a mixování zvuku
|
soundcraft Recording, editing and mixing audio Nahrávání, úpravy a mixování zvuku
|
||||||
|
figcraft Interface design and prototyping Návrh rozhraní a prototypování
|
||||||
month Jan 1.
|
month Jan 1.
|
||||||
month Feb 2.
|
month Feb 2.
|
||||||
month Mar 3.
|
month Mar 3.
|
||||||
|
|||||||
|
@@ -14,7 +14,7 @@
|
|||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite",
|
# name "Craft App Suite",
|
||||||
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
||||||
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub", "Discord".
|
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub", "Discord".
|
||||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||||
@@ -170,6 +170,7 @@ deckcraft Presentations and slide shows Präsentationen und Diashows
|
|||||||
gridcraft Spreadsheets and data Tabellenkalkulation und Daten
|
gridcraft Spreadsheets and data Tabellenkalkulation und Daten
|
||||||
cadcraft Computer-aided design and drafting Computergestütztes Konstruieren und Zeichnen
|
cadcraft Computer-aided design and drafting Computergestütztes Konstruieren und Zeichnen
|
||||||
soundcraft Recording, editing and mixing audio Audio aufnehmen, bearbeiten und mischen
|
soundcraft Recording, editing and mixing audio Audio aufnehmen, bearbeiten und mischen
|
||||||
|
figcraft Interface design and prototyping Interface-Design und Prototyping
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan Jan.
|
month Jan Jan.
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 11 and column 16.
|
@@ -14,7 +14,7 @@
|
|||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft,
|
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft,
|
||||||
# DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
# DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
||||||
# SoundCraft), "GitHub", "Discord", "Finder", "makers".
|
# SoundCraft, FigCraft), "GitHub", "Discord", "Finder", "makers".
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders must appear in the translation:
|
# Trailing "…" (U+2026) must be preserved. Placeholders must appear in the translation:
|
||||||
# {ago}, {a}, {b}, {count}, {date}, {day}, {done}, {e}, {f}, {installed}, {latest}, {min},
|
# {ago}, {a}, {b}, {count}, {date}, {day}, {done}, {e}, {f}, {installed}, {latest}, {min},
|
||||||
# {month}, {name}, {n}, {os}, {platform}, {sources}, {total}, {version}, {v}, {year}.
|
# {month}, {name}, {n}, {os}, {platform}, {sources}, {total}, {version}, {v}, {year}.
|
||||||
@@ -165,6 +165,7 @@ deckcraft Presentations and slide shows Presentaciones y diapositivas
|
|||||||
gridcraft Spreadsheets and data Hojas de cálculo y datos
|
gridcraft Spreadsheets and data Hojas de cálculo y datos
|
||||||
cadcraft Computer-aided design and drafting CAD: diseño y dibujo técnico
|
cadcraft Computer-aided design and drafting CAD: diseño y dibujo técnico
|
||||||
soundcraft Recording, editing and mixing audio Grabación, edición y mezcla de audio
|
soundcraft Recording, editing and mixing audio Grabación, edición y mezcla de audio
|
||||||
|
figcraft Interface design and prototyping Diseño de interfaces y prototipos
|
||||||
month Jan ene.
|
month Jan ene.
|
||||||
month Feb feb.
|
month Feb feb.
|
||||||
month Mar mar.
|
month Mar mar.
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 48.
|
@@ -12,7 +12,7 @@
|
|||||||
# Coverage: the whole interface: every menu string and tl! literal (complete_menus = true).
|
# Coverage: the whole interface: every menu string and tl! literal (complete_menus = true).
|
||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft,
|
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft,
|
||||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub",
|
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub",
|
||||||
# "Discord".
|
# "Discord".
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||||
@@ -168,6 +168,7 @@ deckcraft Presentations and slide shows Présentations et diaporamas
|
|||||||
gridcraft Spreadsheets and data Tableurs et données
|
gridcraft Spreadsheets and data Tableurs et données
|
||||||
cadcraft Computer-aided design and drafting Conception et dessin assistés par ordinateur
|
cadcraft Computer-aided design and drafting Conception et dessin assistés par ordinateur
|
||||||
soundcraft Recording, editing and mixing audio Enregistrement, édition et mixage audio
|
soundcraft Recording, editing and mixing audio Enregistrement, édition et mixage audio
|
||||||
|
figcraft Interface design and prototyping Design d'interfaces et prototypage
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan janv.
|
month Jan janv.
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 50.
|
@@ -14,7 +14,7 @@
|
|||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite",
|
# name "Craft App Suite",
|
||||||
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
||||||
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub", "Discord".
|
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub", "Discord".
|
||||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||||
@@ -170,6 +170,7 @@ deckcraft Presentations and slide shows Prezentációk és diavetítések
|
|||||||
gridcraft Spreadsheets and data Táblázatok és adatok
|
gridcraft Spreadsheets and data Táblázatok és adatok
|
||||||
cadcraft Computer-aided design and drafting Számítógépes tervezés és műszaki rajz
|
cadcraft Computer-aided design and drafting Számítógépes tervezés és műszaki rajz
|
||||||
soundcraft Recording, editing and mixing audio Hangrögzítés, hangszerkesztés és keverés
|
soundcraft Recording, editing and mixing audio Hangrögzítés, hangszerkesztés és keverés
|
||||||
|
figcraft Interface design and prototyping Felülettervezés és prototípus-készítés
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan jan.
|
month Jan jan.
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 11 and column 16.
|
@@ -14,7 +14,7 @@
|
|||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite",
|
# name "Craft App Suite",
|
||||||
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
||||||
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub", "Discord".
|
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub", "Discord".
|
||||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||||
@@ -172,6 +172,7 @@ deckcraft Presentations and slide shows プレゼンテーションとスライ
|
|||||||
gridcraft Spreadsheets and data 表計算とデータ
|
gridcraft Spreadsheets and data 表計算とデータ
|
||||||
cadcraft Computer-aided design and drafting コンピューター支援設計と製図
|
cadcraft Computer-aided design and drafting コンピューター支援設計と製図
|
||||||
soundcraft Recording, editing and mixing audio オーディオの録音、編集、ミックス
|
soundcraft Recording, editing and mixing audio オーディオの録音、編集、ミックス
|
||||||
|
figcraft Interface design and prototyping インターフェースデザインとプロトタイピング
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan 1月
|
month Jan 1月
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 14 and column 44.
|
@@ -13,7 +13,7 @@
|
|||||||
# Coverage: the whole interface — every menu string and tl! literal (complete_menus = true).
|
# Coverage: the whole interface — every menu string and tl! literal (complete_menus = true).
|
||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft,
|
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft,
|
||||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub",
|
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub",
|
||||||
# "Discord".
|
# "Discord".
|
||||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
@@ -171,6 +171,7 @@ deckcraft Presentations and slide shows Prezentacje i pokazy slajdów
|
|||||||
gridcraft Spreadsheets and data Arkusze kalkulacyjne i dane
|
gridcraft Spreadsheets and data Arkusze kalkulacyjne i dane
|
||||||
cadcraft Computer-aided design and drafting Projektowanie i kreślenie wspomagane komputerowo
|
cadcraft Computer-aided design and drafting Projektowanie i kreślenie wspomagane komputerowo
|
||||||
soundcraft Recording, editing and mixing audio Nagrywanie, edycja i miksowanie dźwięku
|
soundcraft Recording, editing and mixing audio Nagrywanie, edycja i miksowanie dźwięku
|
||||||
|
figcraft Interface design and prototyping Projektowanie interfejsów i prototypowanie
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan sty
|
month Jan sty
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 11 and column 15.
|
@@ -158,6 +158,7 @@ deckcraft Presentations and slide shows Apresentações e slides
|
|||||||
gridcraft Spreadsheets and data Planilhas e dados
|
gridcraft Spreadsheets and data Planilhas e dados
|
||||||
cadcraft Computer-aided design and drafting Desenho técnico e projeto assistido por computador (CAD)
|
cadcraft Computer-aided design and drafting Desenho técnico e projeto assistido por computador (CAD)
|
||||||
soundcraft Recording, editing and mixing audio Gravação, edição e mixagem de áudio
|
soundcraft Recording, editing and mixing audio Gravação, edição e mixagem de áudio
|
||||||
|
figcraft Interface design and prototyping Design de interfaces e prototipagem
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan jan.
|
month Jan jan.
|
||||||
|
|||||||
|
@@ -13,7 +13,7 @@
|
|||||||
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
# Left in English on purpose: product name "ArtCraft Launcher" (and its "Launcher" tag), suite
|
||||||
# name "Craft App Suite",
|
# name "Craft App Suite",
|
||||||
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
# app names (PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft,
|
||||||
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub", "Discord", "Website".
|
# WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub", "Discord", "Website".
|
||||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||||
@@ -168,6 +168,7 @@ deckcraft Presentations and slide shows Презентации и слайд-ш
|
|||||||
gridcraft Spreadsheets and data Электронные таблицы и данные
|
gridcraft Spreadsheets and data Электронные таблицы и данные
|
||||||
cadcraft Computer-aided design and drafting Автоматизированное проектирование и черчение
|
cadcraft Computer-aided design and drafting Автоматизированное проектирование и черчение
|
||||||
soundcraft Recording, editing and mixing audio Запись, редактирование и сведение звука
|
soundcraft Recording, editing and mixing audio Запись, редактирование и сведение звука
|
||||||
|
figcraft Interface design and prototyping Дизайн интерфейсов и прототипирование
|
||||||
|
|
||||||
# Contextual: month abbreviations for date rendering
|
# Contextual: month abbreviations for date rendering
|
||||||
month Jan янв.
|
month Jan янв.
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 13 and column 44.
|
@@ -247,6 +247,7 @@ deckcraft Presentations and slide shows 演示文稿与幻灯片
|
|||||||
gridcraft Spreadsheets and data 电子表格与数据处理
|
gridcraft Spreadsheets and data 电子表格与数据处理
|
||||||
cadcraft Computer-aided design and drafting 计算机辅助设计与制图
|
cadcraft Computer-aided design and drafting 计算机辅助设计与制图
|
||||||
soundcraft Recording, editing and mixing audio 音频录制、编辑与混音
|
soundcraft Recording, editing and mixing audio 音频录制、编辑与混音
|
||||||
|
figcraft Interface design and prototyping 界面设计与原型制作
|
||||||
|
|
||||||
Show in Files 在文件管理器中显示
|
Show in Files 在文件管理器中显示
|
||||||
Loading ArtCraft Launcher… 正在加载 ArtCraft Launcher…
|
Loading ArtCraft Launcher… 正在加载 ArtCraft Launcher…
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 4 and column 3.
|
@@ -17,6 +17,7 @@ pub fn app(id: &str) -> Option<ImageSource<'static>> {
|
|||||||
"gridcraft" => egui::include_image!("../../../assets/app-icons/gridcraft.png"),
|
"gridcraft" => egui::include_image!("../../../assets/app-icons/gridcraft.png"),
|
||||||
"cadcraft" => egui::include_image!("../../../assets/app-icons/cadcraft.png"),
|
"cadcraft" => egui::include_image!("../../../assets/app-icons/cadcraft.png"),
|
||||||
"soundcraft" => egui::include_image!("../../../assets/app-icons/soundcraft.png"),
|
"soundcraft" => egui::include_image!("../../../assets/app-icons/soundcraft.png"),
|
||||||
|
"figcraft" => egui::include_image!("../../../assets/app-icons/figcraft.png"),
|
||||||
_ => return None,
|
_ => return None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -631,8 +631,8 @@ fn links_to_the_website_github_and_each_apps_pages() {
|
|||||||
// Cards: every app links to its repo and to its own page on getartcraft.com (plus the footer's).
|
// Cards: every app links to its repo and to its own page on getartcraft.com (plus the footer's).
|
||||||
let shown_cards = h.query_all_by_label("GitHub").count() - 1;
|
let shown_cards = h.query_all_by_label("GitHub").count() - 1;
|
||||||
let shown_sites = h.query_all_by_label("Website").count() - 1;
|
let shown_sites = h.query_all_by_label("Website").count() - 1;
|
||||||
assert!(shown_cards >= 12, "{shown_cards}");
|
assert!(shown_cards >= 13, "{shown_cards}");
|
||||||
assert_eq!(shown_sites, 12, "every app has a website page");
|
assert_eq!(shown_sites, 13, "every app has a website page");
|
||||||
// The table's … menu has the app's website and GitHub repo.
|
// The table's … menu has the app's website and GitHub repo.
|
||||||
let (mut h, _) = harness(ViewMode::Table, egui::Theme::Dark, true);
|
let (mut h, _) = harness(ViewMode::Table, egui::Theme::Dark, true);
|
||||||
h.run_steps(6);
|
h.run_steps(6);
|
||||||
@@ -1206,7 +1206,7 @@ fn the_lead_picture_can_be_enlarged() {
|
|||||||
#[test]
|
#[test]
|
||||||
fn every_page_opens_and_pages_through_its_pictures() {
|
fn every_page_opens_and_pages_through_its_pictures() {
|
||||||
let (mut h, _sent) = harness(ViewMode::Grid, egui::Theme::Dark, true);
|
let (mut h, _sent) = harness(ViewMode::Grid, egui::Theme::Dark, true);
|
||||||
// Tall enough to show all twelve cards at once.
|
// Tall enough to show all thirteen cards at once.
|
||||||
h.set_size(egui::vec2(1180.0, 3000.0));
|
h.set_size(egui::vec2(1180.0, 3000.0));
|
||||||
h.run_steps(8);
|
h.run_steps(8);
|
||||||
for d in &artcraft_launcher_core::details::DETAILS {
|
for d in &artcraft_launcher_core::details::DETAILS {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
ArtCraft Launcher lists every app in the Craft App Suite (PhotoCraft, LightCraft, FilmCraft,
|
ArtCraft Launcher lists every app in the Craft App Suite (PhotoCraft, LightCraft, FilmCraft,
|
||||||
DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft
|
DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
||||||
and SoundCraft), installs the right build for your computer, and keeps them up to date.
|
SoundCraft and FigCraft), installs the right build for your computer, and keeps them up to date.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>One place to find, install and open every Craft app</li>
|
<li>One place to find, install and open every Craft app</li>
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ license: MIT OR Apache-2.0
|
|||||||
description: |-
|
description: |-
|
||||||
Install, update and launch the Craft App Suite.
|
Install, update and launch the Craft App Suite.
|
||||||
ArtCraft Launcher lists PhotoCraft, LightCraft, FilmCraft, DesignCraft,
|
ArtCraft Launcher lists PhotoCraft, LightCraft, FilmCraft, DesignCraft,
|
||||||
VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft
|
VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
||||||
and SoundCraft, installs the right build for this computer and keeps them up
|
SoundCraft and FigCraft, installs the right build for this computer and keeps
|
||||||
to date from GitHub releases. It can live in the system tray.
|
them up to date from GitHub releases. It can live in the system tray.
|
||||||
|
|
||||||
# The binary links only glibc and libgcc_s directly. Windowing (X11/Wayland, xkbcommon) and the
|
# The binary links only glibc and libgcc_s directly. Windowing (X11/Wayland, xkbcommon) and the
|
||||||
# GPU (Vulkan, EGL/GL) are loaded at runtime with dlopen, so they aren't ELF NEEDED entries and
|
# GPU (Vulkan, EGL/GL) are loaded at runtime with dlopen, so they aren't ELF NEEDED entries and
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ function New-InstallerArt([string] $BannerOut, [string] $DialogOut) {
|
|||||||
$line = [System.Drawing.Color]::FromArgb(38, 242, 241, 238)
|
$line = [System.Drawing.Color]::FromArgb(38, 242, 241, 238)
|
||||||
# The Craft App Suite, in the launcher's order (crates/core/src/catalog.rs).
|
# The Craft App Suite, in the launcher's order (crates/core/src/catalog.rs).
|
||||||
$apps = 'photocraft', 'vectorcraft', 'filmcraft', 'lightcraft', 'pdfcraft', 'effectcraft',
|
$apps = 'photocraft', 'vectorcraft', 'filmcraft', 'lightcraft', 'pdfcraft', 'effectcraft',
|
||||||
'designcraft', 'wordcraft', 'deckcraft', 'gridcraft', 'cadcraft', 'soundcraft'
|
'designcraft', 'wordcraft', 'deckcraft', 'gridcraft', 'cadcraft', 'soundcraft', 'figcraft'
|
||||||
$mark = [System.Drawing.Image]::FromFile((Join-Path $Root 'assets\app-icon\hicolor\256x256\apps\ai.storyteller.artcraft-launcher.png'))
|
$mark = [System.Drawing.Image]::FromFile((Join-Path $Root 'assets\app-icon\hicolor\256x256\apps\ai.storyteller.artcraft-launcher.png'))
|
||||||
$wordmark = [System.Drawing.Image]::FromFile((Join-Path $Root 'docs\brand\artcraft-logo-white.png'))
|
$wordmark = [System.Drawing.Image]::FromFile((Join-Path $Root 'docs\brand\artcraft-logo-white.png'))
|
||||||
$icons = $apps | ForEach-Object { [System.Drawing.Image]::FromFile((Join-Path $Root "assets\app-icons\$_.png")) }
|
$icons = $apps | ForEach-Object { [System.Drawing.Image]::FromFile((Join-Path $Root "assets\app-icons\$_.png")) }
|
||||||
@@ -148,14 +148,14 @@ function New-InstallerArt([string] $BannerOut, [string] $DialogOut) {
|
|||||||
$x += $g.MeasureString([string]$ch, $labelFont, 100, [System.Drawing.StringFormat]::GenericTypographic).Width + 1.35
|
$x += $g.MeasureString([string]$ch, $labelFont, 100, [System.Drawing.StringFormat]::GenericTypographic).Width + 1.35
|
||||||
}
|
}
|
||||||
$brush.Dispose()
|
$brush.Dispose()
|
||||||
# The apps, three to a row, in 40 px cells divided by hairlines.
|
# The apps, three to a row, in 36 px cells divided by hairlines (five rows fit above 312).
|
||||||
$pen = New-Object System.Drawing.Pen $line, 1
|
$pen = New-Object System.Drawing.Pen $line, 1
|
||||||
$left = 22; $top = 126; $cell = 40
|
$left = 22; $top = 118; $cell = 36
|
||||||
for ($i = 0; $i -lt $icons.Count; $i++) {
|
for ($i = 0; $i -lt $icons.Count; $i++) {
|
||||||
$cx = $left + ($i % 3) * $cell
|
$cx = $left + ($i % 3) * $cell
|
||||||
$cy = $top + [math]::Floor($i / 3) * $cell
|
$cy = $top + [math]::Floor($i / 3) * $cell
|
||||||
$g.DrawRectangle($pen, $cx, $cy, $cell, $cell)
|
$g.DrawRectangle($pen, $cx, $cy, $cell, $cell)
|
||||||
$g.DrawImage($icons[$i], $cx + 6, $cy + 6, $cell - 12, $cell - 12)
|
$g.DrawImage($icons[$i], $cx + 5, $cy + 5, $cell - 10, $cell - 10)
|
||||||
}
|
}
|
||||||
$pen.Dispose()
|
$pen.Dispose()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ const APPS: &[(&str, &str)] = &[
|
|||||||
("gridcraft", "GridCraft"),
|
("gridcraft", "GridCraft"),
|
||||||
("cadcraft", "CADCraft"),
|
("cadcraft", "CADCraft"),
|
||||||
("soundcraft", "SoundCraft"),
|
("soundcraft", "SoundCraft"),
|
||||||
|
("figcraft", "FigCraft"),
|
||||||
];
|
];
|
||||||
|
|
||||||
const DEFAULT_PORT: u16 = 8787;
|
const DEFAULT_PORT: u16 = 8787;
|
||||||
|
|||||||
Reference in new issue
Block a user