!7 cm UltrafaST > DynWebServee { transient SnippetInstaCache snippetCache; transient S microNewsSnippetID = #1034192; start { snippetCache = new SnippetInstaCache(microNewsSnippetID); print(cachedSnippetIDs := snippetCache.cachedSnippetIDs()); } void cleanMeUp { dispose snippetCache; } @Override O html(IWebRequest req) { try object redirectToHTTPS(req); if (eq(req.uri(), "/favicon.ico")) ret serveFavIcon(gazelleFavIconSnippet()); if (eq(req.uri(), "/")) { var paras = paragraphs(snippetCache.get(microNewsSnippetID)); pnl(+paras); LS newsItems = map( paras, item -> { LS l = splitAtFirstColon(item); ret second(l) + " [" + first(l) + "]"; } ); pnl(+newsItems); addAll(newsItems, targetBlank("https://agi.topicbox.com/groups/agi/T419e8a952205967e", "News post") + " [2022/1/22]", targetBlank("https://agi.topicbox.com/groups/agi/T2dea42566ccf6693", "News post") + " [2022/1/7]", targetBlank("https://agi.topicbox.com/groups/agi/T8ca0db34fc106b16/image-recognizers-should-return-mathematical-proofs", "Image recognizers should return mathematical proofs") + " [2021/9/10]", targetBlank("https://agi.topicbox.com/groups/agi/T2771ec3238f217fa/gazelle-looks-at-its-own-logo-and-paints-it-red", "Gazelle looks at its own logo and paints it red") + " [2021/8/20]" ); ret hhtml( hhead_title("Gazelle 22 - a new image recognizer") + hsansserif() + hbody(hfullcenter( h1("Gazelle 22 - a new image recognizer") + p(hsnippetimg_linkToSameImage(#1103072, width := 250, title := "Gazelle 22 Screenshot 1 - click to enlarge")) + p("This screenshot shows my cute new scripting language which is very flexible.") + pNbsp() + p(hsnippetimg_linkToSameImage(#1103059, width := 250, title := "Gazelle 22 Screenshot 2 - click to enlarge")) + p("Here you see Gazelle's preprocessing filters applied to a screen cam.") + pNbsp() + h3("Quick start (Windows, Mac, Linux)") + p("1. Install " + targetBlank("https://adoptium.net", "Temurin 17") + " formerly known as 'Java'." + " (Their smaller \"" + targetBlank("https://adoptium.net/releases.html", "JRE") + "\" version is fine too.)") + p("2. Save and double-click " + ahref("https://github.com/stefan-reich/gazelle-22/releases/download/2022-1-29/Gazelle-2022-01-29.jar", "Gazelle-2022-01-29.jar") + " (size: less than 10 MB).") + h3("What it does") + p(joinWithBR( "Gazelle 22 watches your screen and recognizes things.", "It is being developed right now by " + targetBlank("https://BotCompany.de", "Stefan Reich") + " at " + ahref("https://gazelle.rocks", "Gaz.AI") + ". " + ahref("mailto:info@botcompany.de","Contact.") + " " + ahref("https://discord.gg/kcKKZEg", "Discord."))) + p(targetBlank("https://code.botcompany.de/1033860", "Source repository") + ". " + "Older releases on " + ahref("https://github.com/stefan-reich/gazelle-22", "GitHub") + ".") + h3("Privacy statement") + p(joinWithBR( "Gazelle 22 runs locally on your machine.", "It does not upload any data to any server.", "Server connections are made only for downloading program parts and checking for updates.", "All code, so far, is open source.")) + h3("News") + mapToLines p(newsItems) ))); } ret subBot_serve404("Four oh four. Bad URL"); } }