mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-10-14 14:26:48 -04:00
1 parent
257e16c325
commit
6124cf0693
9 files changed
+18
-29
No files matched your search
@@ -232,10 +232,10 @@ stand on its own.
|
||||
| <img src="https://raw.githubusercontent.com/storytold/effectcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png" alt="" width="32" height="32"> | **EffectCraft** | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) | [Website](https://getartcraft.com/apps/effectcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/designcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.designcraft.png" alt="" width="32" height="32"> | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) | [Website](https://getartcraft.com/apps/designcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/gridcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.gridcraft.png" alt="" width="32" height="32"> | **GridCraft** | Spreadsheets and data | [GitHub](https://github.com/storytold/gridcraft) | [Website](https://getartcraft.com/apps/gridcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/wordcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.wordcraft.png" alt="" width="32" height="32"> | **WordCraft** | Word processing and documents | [GitHub](https://github.com/storytold/wordcraft) | [Releases](https://github.com/storytold/wordcraft/releases) |
|
||||
| <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) | [Releases](https://github.com/storytold/deckcraft/releases) |
|
||||
| <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) | [Releases](https://github.com/storytold/cadcraft/releases) |
|
||||
| <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) | [Releases](https://github.com/storytold/soundcraft/releases) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/wordcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.wordcraft.png" alt="" width="32" height="32"> | **WordCraft** | Word processing and documents | [GitHub](https://github.com/storytold/wordcraft) | [Website](https://getartcraft.com/apps/wordcraft) |
|
||||
| <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) |
|
||||
|
||||
And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control.
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize};
|
||||
/// Which generation of the suite an app belongs to.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
pub enum AppGroup {
|
||||
/// The seven original apps, each with a page on getartcraft.com.
|
||||
/// The seven original apps.
|
||||
Classic,
|
||||
/// The five apps added after them.
|
||||
New,
|
||||
@@ -68,9 +68,9 @@ impl CraftApp {
|
||||
format!("https://github.com/{}", self.repo)
|
||||
}
|
||||
|
||||
/// The app's page on getartcraft.com (classic apps only).
|
||||
pub fn website(&self) -> Option<String> {
|
||||
(self.group == AppGroup::Classic).then(|| format!("https://getartcraft.com/apps/{}", self.id))
|
||||
/// The app's page on getartcraft.com.
|
||||
pub fn website(&self) -> String {
|
||||
format!("https://getartcraft.com/apps/{}", self.id)
|
||||
}
|
||||
|
||||
/// Asset stems this app's releases may use, current first.
|
||||
@@ -285,7 +285,7 @@ mod tests {
|
||||
fn pdfcraft_also_answers_to_printcraft() {
|
||||
let pdf = CraftApp::by_id("pdfcraft").unwrap();
|
||||
assert_eq!(pdf.stems().collect::<Vec<_>>(), ["pdfcraft", "printcraft"]);
|
||||
assert_eq!(pdf.website().as_deref(), Some("https://getartcraft.com/apps/pdfcraft"));
|
||||
assert_eq!(CraftApp::by_id("wordcraft").unwrap().website(), None);
|
||||
assert_eq!(pdf.website(), "https://getartcraft.com/apps/pdfcraft");
|
||||
assert_eq!(CraftApp::by_id("wordcraft").unwrap().website(), "https://getartcraft.com/apps/wordcraft");
|
||||
}
|
||||
}
|
||||
@@ -226,7 +226,6 @@ month Dec Dez.
|
||||
Checking for updates… Suche nach Updates…
|
||||
Downloads the new version, replaces this one and opens it again Lädt die neue Version herunter, ersetzt diese und öffnet sie erneut
|
||||
Couldn't check for updates: {f} Updates konnten nicht geprüft werden: {f}
|
||||
Website (coming soon) Website (demnächst)
|
||||
GitHub repository GitHub-Repository
|
||||
ArtCraft ArtCraft
|
||||
Update 1 app 1 App aktualisieren
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 11 and column 16.
|
@@ -224,7 +224,6 @@ month Dec déc.
|
||||
Checking for updates… Recherche de mises à jour…
|
||||
Downloads the new version, replaces this one and opens it again Télécharge la nouvelle version, remplace celle-ci et la rouvre
|
||||
Couldn't check for updates: {f} Impossible de rechercher les mises à jour : {f}
|
||||
Website (coming soon) Site web (bientôt disponible)
|
||||
GitHub repository Dépôt GitHub
|
||||
ArtCraft ArtCraft
|
||||
Update 1 app Mettre à jour 1 application
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 50.
|
@@ -214,7 +214,6 @@ month Dec dez.
|
||||
Checking for updates… Verificando atualizações…
|
||||
Downloads the new version, replaces this one and opens it again Baixa a nova versão, substitui a atual e abre novamente
|
||||
Couldn't check for updates: {f} Não foi possível verificar atualizações: {f}
|
||||
Website (coming soon) Site (em breve)
|
||||
GitHub repository Repositório no GitHub
|
||||
ArtCraft ArtCraft
|
||||
Update 1 app Atualizar 1 aplicativo
|
||||
|
||||
|
@@ -225,7 +225,6 @@ month Dec дек.
|
||||
Checking for updates… Проверка обновлений…
|
||||
Downloads the new version, replaces this one and opens it again Скачивает новую версию, заменяет текущую и открывает её заново
|
||||
Couldn't check for updates: {f} Не удалось проверить обновления: {f}
|
||||
Website (coming soon) Веб-сайт (скоро)
|
||||
GitHub repository Репозиторий GitHub
|
||||
ArtCraft ArtCraft
|
||||
Update 1 app Обновить 1 приложение
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 13 and column 44.
|
@@ -150,7 +150,6 @@ month Dec 12月
|
||||
Checking for updates… 正在检查更新…
|
||||
Downloads the new version, replaces this one and opens it again 下载新版本,替换当前版本并重新打开
|
||||
Couldn't check for updates: {f} 无法检查更新:{f}
|
||||
Website (coming soon) 网站(即将上线)
|
||||
GitHub repository GitHub 仓库
|
||||
ArtCraft ArtCraft
|
||||
Update 1 app 更新 1 个应用
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 4 and column 3.
|
@@ -445,9 +445,7 @@ impl LauncherUi {
|
||||
strip_ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| {
|
||||
ui.spacing_mut().item_spacing.x = 16.0;
|
||||
widgets::hud_link(ui, tl!("GitHub"), &app.repo_url());
|
||||
if let Some(site) = app.website() {
|
||||
widgets::hud_link(ui, tl!("Website"), &site);
|
||||
}
|
||||
widgets::hud_link(ui, tl!("Website"), &app.website());
|
||||
});
|
||||
}
|
||||
|
||||
@@ -884,12 +882,7 @@ impl LauncherUi {
|
||||
ui.close();
|
||||
}
|
||||
};
|
||||
match entry.app.website() {
|
||||
Some(site) => link(ui, tl!("Website"), site),
|
||||
None => {
|
||||
ui.add_enabled(false, egui::Button::new(tl!("Website (coming soon)")));
|
||||
}
|
||||
}
|
||||
link(ui, tl!("Website"), entry.app.website());
|
||||
link(ui, tl!("GitHub repository"), entry.app.repo_url());
|
||||
link(ui, tl!("All releases"), entry.app.releases_url());
|
||||
});
|
||||
|
||||
@@ -493,18 +493,19 @@ fn links_to_the_website_github_and_each_apps_pages() {
|
||||
for label in ["Website", "GitHub", "Discord"] {
|
||||
assert!(h.query_all_by_label(label).count() >= 1, "{label}");
|
||||
}
|
||||
// Cards: every app links to its repo; only the seven classic apps have a website (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_sites = h.query_all_by_label("Website").count() - 1;
|
||||
assert!(shown_cards >= 7, "{shown_cards}");
|
||||
assert_eq!(shown_sites, 7, "only classic apps have website pages");
|
||||
// The table's … menu has the app's GitHub repo and, for a new app, no website yet.
|
||||
assert!(shown_cards >= 12, "{shown_cards}");
|
||||
assert_eq!(shown_sites, 12, "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);
|
||||
h.get_all_by_label("…").nth(7).unwrap().click(); // WordCraft
|
||||
h.run_steps(3);
|
||||
h.get_by_label("GitHub repository");
|
||||
h.get_by_label("Website (coming soon)");
|
||||
// The footer's Website link and WordCraft's now-live one in the menu.
|
||||
assert!(h.query_all_by_label_contains("Website").count() >= 2);
|
||||
}
|
||||
|
||||
/// Clicks the `n`th widget labelled `label` and returns the URL the app asked to open.
|
||||
|
||||
Reference in new issue
Block a user