mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-10-13 23:08:16 +00:00
Add FigCraft to the Craft App Suite
The thirteenth app: catalog row, details page with four pictures, icon, tagline in every language, Linux desktop entry, and the lists in the docs and packaging. - Details pictures move to craft-launcher-assets v2, which adds figcraft/. - The MSI wizard's icon grid is four to a row in 30 px cells, so thirteen icons fit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d6fdab6596
commit
ba8ec97900
24 files changed
+92
-31
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
|
||||
|
||||
|
||||
@@ -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], [0x01, 0x7a, 0x54], [0x3f, 0xe6, 0xae]],
|
||||
"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();
|
||||
|
||||
@@ -53,7 +53,7 @@ const fn feature(title: &'static str, text: &'static str) -> Feature {
|
||||
pub const SCREENSHOTS_BASE: &str = "https://raw.githubusercontent.com/storytold/craft-launcher-assets";
|
||||
|
||||
/// The tag of the pictures repository the launcher reads. Also part of the saved copies' path.
|
||||
pub const SCREENSHOTS_REV: &str = "v1";
|
||||
pub const SCREENSHOTS_REV: &str = "v2";
|
||||
|
||||
/// The largest picture the launcher accepts. The real ones are 60 to 150 KB.
|
||||
pub const MAX_SCREENSHOT_BYTES: usize = 2 << 20;
|
||||
@@ -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,43 @@ pub const DETAILS: [AppDetails; 12] = [
|
||||
],
|
||||
platforms: PLATFORMS,
|
||||
},
|
||||
AppDetails {
|
||||
id: "figcraft",
|
||||
headline: "Interface design, rebuilt in pure Rust.",
|
||||
about: "Frames, auto layout, components and variants, vector networks, styles, variables and prototypes in a \
|
||||
native app that opens instantly and works offline. No account, no telemetry and no subscription. \
|
||||
Early alpha.",
|
||||
features: &[
|
||||
feature("Familiar by design", "The toolbar, layers panel, Design panel, menus and shortcuts sit where your hands expect them."),
|
||||
feature(
|
||||
"Layouts that build themselves",
|
||||
"Auto layout in both directions with wrap and grid, padding, gaps and Hug, Fill and Fixed sizing, plus constraints and layout grids.",
|
||||
),
|
||||
feature(
|
||||
"Components that scale",
|
||||
"Instances with overrides that survive edits, component sets with variants and properties, and styles and variables with light and dark modes.",
|
||||
),
|
||||
feature(
|
||||
"Real vector networks",
|
||||
"Pen and pencil, a shape builder, booleans whose operands stay editable, variable-width strokes and smooth corners.",
|
||||
),
|
||||
feature(
|
||||
"Prototype and hand off",
|
||||
"Connections, triggers and animated transitions, a presentation view, and Dev Mode with measurements, annotations and generated code.",
|
||||
),
|
||||
feature(
|
||||
"Agent-ready",
|
||||
"Every menu item, tool and gesture is a command, available over the CLI, a JSON control channel or an MCP server.",
|
||||
),
|
||||
],
|
||||
shots: &[
|
||||
shot("hero", "Auto layout screens in light and dark"),
|
||||
shot("components", "Components, variants and the Assets panel"),
|
||||
shot("prototype", "Prototype connections and flows"),
|
||||
shot("dev-mode", "Dev Mode with annotations and generated code"),
|
||||
],
|
||||
platforms: PLATFORMS,
|
||||
},
|
||||
];
|
||||
|
||||
impl AppDetails {
|
||||
@@ -417,7 +454,7 @@ mod tests {
|
||||
let page = AppDetails::by_id("photocraft").unwrap();
|
||||
assert_eq!(
|
||||
page.screenshot_url("demo").as_deref(),
|
||||
Some("https://raw.githubusercontent.com/storytold/craft-launcher-assets/v1/photocraft/demo.jpg")
|
||||
Some("https://raw.githubusercontent.com/storytold/craft-launcher-assets/v2/photocraft/demo.jpg")
|
||||
);
|
||||
for key in ["", "nope", "../vectorcraft/neon", "demo/../masks", "demo.jpg", "/etc/passwd", "demo?x=1", "demo#"] {
|
||||
assert_eq!(page.screenshot_url(key), None, "{key:?}");
|
||||
|
||||
@@ -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 prototipado
|
||||
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ípuské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,8 +19,8 @@ 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
|
||||
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
|
||||
|
||||
@@ -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, four to a row, in 30 px cells divided by hairlines.
|
||||
$pen = New-Object System.Drawing.Pen $line, 1
|
||||
$left = 22; $top = 126; $cell = 40
|
||||
$left = 22; $top = 126; $cell = 30
|
||||
for ($i = 0; $i -lt $icons.Count; $i++) {
|
||||
$cx = $left + ($i % 3) * $cell
|
||||
$cy = $top + [math]::Floor($i / 3) * $cell
|
||||
$cx = $left + ($i % 4) * $cell
|
||||
$cy = $top + [math]::Floor($i / 4) * $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 + 4, $cy + 4, $cell - 8, $cell - 8)
|
||||
}
|
||||
$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