mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-10-13 23:08:16 +00: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 <noreply@anthropic.com> * Release 0.4.1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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,
|
||||
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 +
|
||||
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/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/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
|
||||
|
||||
|
||||
Generated
+6
-6
@@ -276,7 +276,7 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
|
||||
|
||||
[[package]]
|
||||
name = "artcraft-launcher"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
dependencies = [
|
||||
"artcraft-launcher-core",
|
||||
"artcraft-launcher-native",
|
||||
@@ -300,7 +300,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "artcraft-launcher-core"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
dependencies = [
|
||||
"semver",
|
||||
"serde",
|
||||
@@ -309,7 +309,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "artcraft-launcher-native"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
dependencies = [
|
||||
"artcraft-launcher-core",
|
||||
"dirs 6.0.0",
|
||||
@@ -327,7 +327,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "artcraft-launcher-ui-egui"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
dependencies = [
|
||||
"artcraft-launcher-core",
|
||||
"egui",
|
||||
@@ -343,7 +343,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "artcraft-launcher-web"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
dependencies = [
|
||||
"artcraft-launcher-core",
|
||||
"artcraft-launcher-ui-egui",
|
||||
@@ -5803,7 +5803,7 @@ checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
|
||||
|
||||
[[package]]
|
||||
name = "xtask"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ resolver = "3"
|
||||
members = ["crates/*", "apps/*", "xtask"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
edition = "2024"
|
||||
license = "MIT OR Apache-2.0"
|
||||
rust-version = "1.90"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<p align="center">
|
||||
<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>
|
||||
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 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/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/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.
|
||||
|
||||
|
||||
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.
|
||||
//!
|
||||
@@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize};
|
||||
pub enum AppGroup {
|
||||
/// The seven original apps.
|
||||
Classic,
|
||||
/// The five apps added after them.
|
||||
/// The six apps added after them.
|
||||
New,
|
||||
}
|
||||
|
||||
@@ -94,8 +94,8 @@ const fn app(
|
||||
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.
|
||||
pub const SUITE: [CraftApp; 12] = [
|
||||
/// The Craft App Suite, in display order: the seven classic apps, then the six new ones.
|
||||
pub const SUITE: [CraftApp; 13] = [
|
||||
app(
|
||||
"photocraft",
|
||||
"PhotoCraft",
|
||||
@@ -196,6 +196,14 @@ pub const SUITE: [CraftApp; 12] = [
|
||||
[[0x1f, 0xa5, 0xc9], [0x0e, 0x72, 0x90], [0x5f, 0xd0, 0xee]],
|
||||
"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.
|
||||
@@ -239,9 +247,9 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
#[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::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();
|
||||
ids.sort_unstable();
|
||||
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).
|
||||
const PLATFORMS: &str = "macOS, Windows, Linux, FreeBSD, web";
|
||||
|
||||
pub const DETAILS: [AppDetails; 12] = [
|
||||
pub const DETAILS: [AppDetails; 13] = [
|
||||
AppDetails {
|
||||
id: "photocraft",
|
||||
headline: "The image editor you already know how to use.",
|
||||
@@ -371,6 +371,37 @@ pub const DETAILS: [AppDetails; 12] = [
|
||||
],
|
||||
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 {
|
||||
|
||||
@@ -263,6 +263,9 @@ mod tests {
|
||||
{
|
||||
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]
|
||||
|
||||
@@ -31,6 +31,7 @@ pub fn meta(app: &CraftApp) -> (&'static str, Option<&'static str>) {
|
||||
"gridcraft" => ("Office;Spreadsheet;", None),
|
||||
"cadcraft" => ("Graphics;Engineering;VectorGraphics;", None),
|
||||
"soundcraft" => ("AudioVideo;Audio;Midi;Mixer;Sequencer;Recorder;", None),
|
||||
"figcraft" => ("Graphics;2DGraphics;VectorGraphics;X-Design;", Some("figcraft")),
|
||||
_ => ("Graphics;", None),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -746,6 +746,7 @@ pub(crate) mod linux {
|
||||
"gridcraft" => include_bytes!("../../../assets/app-icons/gridcraft.png"),
|
||||
"cadcraft" => include_bytes!("../../../assets/app-icons/cadcraft.png"),
|
||||
"soundcraft" => include_bytes!("../../../assets/app-icons/soundcraft.png"),
|
||||
"figcraft" => include_bytes!("../../../assets/app-icons/figcraft.png"),
|
||||
_ => 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
|
||||
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
|
||||
figcraft Interface design and prototyping Návrh rozhraní a prototypování
|
||||
month Jan 1.
|
||||
month Feb 2.
|
||||
month Mar 3.
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
# 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, 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).
|
||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||
# {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
|
||||
cadcraft Computer-aided design and drafting Computergestütztes Konstruieren und Zeichnen
|
||||
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
|
||||
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
|
||||
# name "Craft App Suite", app names (PhotoCraft, LightCraft, FilmCraft,
|
||||
# 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:
|
||||
# {ago}, {a}, {b}, {count}, {date}, {day}, {done}, {e}, {f}, {installed}, {latest}, {min},
|
||||
# {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
|
||||
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
|
||||
figcraft Interface design and prototyping Diseño de interfaces y prototipos
|
||||
month Jan ene.
|
||||
month Feb feb.
|
||||
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).
|
||||
# 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,
|
||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub",
|
||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub",
|
||||
# "Discord".
|
||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||
# {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
|
||||
cadcraft Computer-aided design and drafting Conception et dessin assistés par ordinateur
|
||||
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
|
||||
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
|
||||
# name "Craft App Suite",
|
||||
# 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).
|
||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||
# {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
|
||||
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
|
||||
figcraft Interface design and prototyping Felülettervezés és prototípus-készítés
|
||||
|
||||
# Contextual: month abbreviations for date rendering
|
||||
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
|
||||
# name "Craft App Suite",
|
||||
# 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).
|
||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||
@@ -172,6 +172,7 @@ deckcraft Presentations and slide shows プレゼンテーションとスライ
|
||||
gridcraft Spreadsheets and data 表計算とデータ
|
||||
cadcraft Computer-aided design and drafting コンピューター支援設計と製図
|
||||
soundcraft Recording, editing and mixing audio オーディオの録音、編集、ミックス
|
||||
figcraft Interface design and prototyping インターフェースデザインとプロトタイピング
|
||||
|
||||
# Contextual: month abbreviations for date rendering
|
||||
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).
|
||||
# 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,
|
||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft), "GitHub",
|
||||
# PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft), "GitHub",
|
||||
# "Discord".
|
||||
# Shortcut keys keep their key-cap names (Shift, Alt, Ctrl, Cmd, Esc).
|
||||
# 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
|
||||
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
|
||||
figcraft Interface design and prototyping Projektowanie interfejsów i prototypowanie
|
||||
|
||||
# Contextual: month abbreviations for date rendering
|
||||
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
|
||||
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
|
||||
figcraft Interface design and prototyping Design de interfaces e prototipagem
|
||||
|
||||
# Contextual: month abbreviations for date rendering
|
||||
month Jan jan.
|
||||
|
||||
|
@@ -13,7 +13,7 @@
|
||||
# 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, 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).
|
||||
# Trailing "…" (U+2026) must be preserved. Placeholders {name}, {n}, {version}, {count}, {v},
|
||||
# {what}, {unit}, {real}, {e} must appear in translation.
|
||||
@@ -168,6 +168,7 @@ deckcraft Presentations and slide shows Презентации и слайд-ш
|
||||
gridcraft Spreadsheets and data Электронные таблицы и данные
|
||||
cadcraft Computer-aided design and drafting Автоматизированное проектирование и черчение
|
||||
soundcraft Recording, editing and mixing audio Запись, редактирование и сведение звука
|
||||
figcraft Interface design and prototyping Дизайн интерфейсов и прототипирование
|
||||
|
||||
# Contextual: month abbreviations for date rendering
|
||||
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 电子表格与数据处理
|
||||
cadcraft Computer-aided design and drafting 计算机辅助设计与制图
|
||||
soundcraft Recording, editing and mixing audio 音频录制、编辑与混音
|
||||
figcraft Interface design and prototyping 界面设计与原型制作
|
||||
|
||||
Show in Files 在文件管理器中显示
|
||||
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"),
|
||||
"cadcraft" => egui::include_image!("../../../assets/app-icons/cadcraft.png"),
|
||||
"soundcraft" => egui::include_image!("../../../assets/app-icons/soundcraft.png"),
|
||||
"figcraft" => egui::include_image!("../../../assets/app-icons/figcraft.png"),
|
||||
_ => 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).
|
||||
let shown_cards = h.query_all_by_label("GitHub").count() - 1;
|
||||
let shown_sites = h.query_all_by_label("Website").count() - 1;
|
||||
assert!(shown_cards >= 12, "{shown_cards}");
|
||||
assert_eq!(shown_sites, 12, "every app has a website page");
|
||||
assert!(shown_cards >= 13, "{shown_cards}");
|
||||
assert_eq!(shown_sites, 13, "every app has a website page");
|
||||
// The table's … menu has the app's website and GitHub repo.
|
||||
let (mut h, _) = harness(ViewMode::Table, egui::Theme::Dark, true);
|
||||
h.run_steps(6);
|
||||
@@ -1206,7 +1206,7 @@ fn the_lead_picture_can_be_enlarged() {
|
||||
#[test]
|
||||
fn every_page_opens_and_pages_through_its_pictures() {
|
||||
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.run_steps(8);
|
||||
for d in &artcraft_launcher_core::details::DETAILS {
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<description>
|
||||
<p>
|
||||
ArtCraft Launcher lists every app in the Craft App Suite (PhotoCraft, LightCraft, FilmCraft,
|
||||
DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft
|
||||
and SoundCraft), installs the right build for your computer, and keeps them up to date.
|
||||
DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
||||
SoundCraft and FigCraft), installs the right build for your computer, and keeps them up to date.
|
||||
</p>
|
||||
<ul>
|
||||
<li>One place to find, install and open every Craft app</li>
|
||||
|
||||
@@ -19,9 +19,9 @@ license: MIT OR Apache-2.0
|
||||
description: |-
|
||||
Install, update and launch the Craft App Suite.
|
||||
ArtCraft Launcher lists PhotoCraft, LightCraft, FilmCraft, DesignCraft,
|
||||
VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft
|
||||
and SoundCraft, installs the right build for this computer and keeps them up
|
||||
to date from GitHub releases. It can live in the system tray.
|
||||
VectorCraft, PdfCraft, EffectCraft, WordCraft, DeckCraft, GridCraft, CADCraft,
|
||||
SoundCraft and FigCraft, installs the right build for this computer and keeps
|
||||
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
|
||||
# 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)
|
||||
# The Craft App Suite, in the launcher's order (crates/core/src/catalog.rs).
|
||||
$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'))
|
||||
$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")) }
|
||||
@@ -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
|
||||
}
|
||||
$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
|
||||
$left = 22; $top = 126; $cell = 40
|
||||
$left = 22; $top = 118; $cell = 36
|
||||
for ($i = 0; $i -lt $icons.Count; $i++) {
|
||||
$cx = $left + ($i % 3) * $cell
|
||||
$cy = $top + [math]::Floor($i / 3) * $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()
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ const APPS: &[(&str, &str)] = &[
|
||||
("gridcraft", "GridCraft"),
|
||||
("cadcraft", "CADCraft"),
|
||||
("soundcraft", "SoundCraft"),
|
||||
("figcraft", "FigCraft"),
|
||||
];
|
||||
|
||||
const DEFAULT_PORT: u16 = 8787;
|
||||
|
||||
Reference in new issue
Block a user