Releases: tddworks/asc-cli
Releases · tddworks/asc-cli
asc v0.1.68
Added
asc testflight groups create— create external or internal TestFlight beta groups (--internalflag toggles internal;--public-link-enabled/--feedback-enabledfor external groups)asc initreview contact flags —--contact-first-name,--contact-last-name,--contact-phone,--contact-emailsave review contact info to.asc/project.jsonfor reuse across versionsProjectConfigreview contact fields — optionalcontactFirstName,contactLastName,contactPhone,contactEmailwithhasReviewContactcomputed propertysetReviewContact/updateReviewContactaffordances —ProjectConfignow suggests setting review contact when missing
asc v0.1.67
Bug fixes and improvements.
asc v0.1.66
Added
ThemeDesigndomain model — composes from Gallery-native types (GalleryPalette+[Decoration]) for structured theme output. Generated by AI once, applied deterministically to all screenshotsThemeDesignApplier— re-renders throughGalleryHTMLRenderer.renderScreen()pipeline with overridden palette and merged decorations (no HTML patching)GalleryPalette.textColor— optional explicit text color, overrides the auto-detect heuristicDecoration.label()shape — text/emoji decorative elements (e.g.Decoration(shape: .label("✨"), ...))DecorationAnimation— float, drift, pulse, spin, twinkle animations for decorationsScreenLayout.withDecorations()— creates a copy with additional decorationsGalleryHTMLRenderer.renderDecorations()— rendersScreenLayout.decorations(previously dead code) usingcqiunitsbuildDesignContext()onScreenTheme— prompt method that instructs AI to returnThemeDesignJSONdesign()onThemeProvider/ThemeRepository— generate a ThemeDesign from AI in one call--design-only/--apply-designCLI flags — batch theme workflow- REST endpoints —
POST /app-shots/themes/designandPOST /app-shots/themes/apply-design
Changed
GalleryHTMLRendererrefactored to Mustache templates — all HTML extracted from Swift into 7.mustachetemplate files using swift-mustache. The renderer only builds context dictionaries; all HTML, CSS colors (via CSS custom properties intheme-vars.mustache), and keyframe animations live in templates. Templates are pre-compiled at startup viaMustacheLibraryfor performance. Preview rendering is cached per template ID.DecorationShape.displayCharacter— computed property on the model instead of renderer logicGalleryPalette.isLight+headlineColor— theme detection and text color derivation moved from renderer to paletteDecorationextended — new optional fields:color,background,borderRadius,animation- Theme selection no longer requires auto-compose — clicking a theme applies immediately to slides with existing preview HTML via
ThemeDesign(1 AI call for design, then deterministic apply to all slides) - Blitz plugin:
design()implemented — generatesThemeDesignvia compose bridgemode: "design", enabling the fast design→apply-design flow
asc v0.1.65
Changed
Presentableprotocol — domain models own their table headers and row values; eliminatesheaders:/rowMapper:boilerplate from 37 list commands- REST controllers with DI — routes rewritten as controller structs (
AppsController,CodeSigningController, etc.) with injected repo dependencies; repos created once at server startup, not per request - No more
Command.parse([])in REST layer — controllers call domain repos and operations directly; CLI and REST are equal thin adapters AffordanceRegistryuses structuredAffordance— plugin affordances now render to both CLI commands and REST_links(previously CLI-only)ScreenshotTemplatedomain operations —apply(content:),renderFragment(content:)as rich domain methods;ThemedPagevalue type for page wrappingScreenshotTemplateCodable includespreviewHTMLanddeviceCount— REST consumers get preview data without special handling
asc v0.1.64
Added
- REST API with HATEOAS —
GET /api/v1entry point plus 12 resource endpoints (apps, versions, builds, testflight, certificates, bundle-ids, devices, profiles, simulators, plugins, territories) calling domain repositories directly (in-process, no subprocess), returning JSON with_linksfor agent navigation APIRootmodel — HATEOAS entry point atGET /api/v1listing all available top-level resources with navigable_links- Structured
Affordancetype — single source of truth for both CLI commands and REST links; models define affordances once, rendered to either format byOutputFormatter APILinkandAffordanceMode— domain types supporting dual-mode affordance rendering (.cli→"affordances",.rest→"_links")RESTPathResolver— resolves CLI command + params into REST API paths using a route table covering 35+ resource types across the full domain hierarchy- HTML-to-PNG export —
--preview imageoption onasc app-shots templates applyandasc app-shots themes applyrenders composed HTML to PNG via WebKit, with--image-outputfor custom output path HTMLRendererprotocol —@Mockabledomain protocol for HTML-to-image rendering, implemented byWebKitHTMLRendererusing WKWebView snapshot
asc v0.1.63
Added
- Plugin Marketplace —
asc plugins market listandasc plugins market search --query Xto browse and search plugins from tddworks/asc-registry - Multi-source plugin registry —
PluginSourceprotocol withGitHubPluginSourceimplementation; composable sources inPluginMarketRepository asc plugins install --name X— download and install.pluginbundles from the marketplaceasc plugins uninstall --name X— remove installed plugin bundles (matches by slug or registry ID)- Plugins page in Command Center — web UI with Installed and Marketplace tabs, stats bar, install/uninstall with loading spinners
- Enriched plugin manifest —
manifest.jsonnow supportsdescription,author,repositoryURL,categories; installed plugins display the same rich info as marketplace listings - Centralized plugin affordance merging —
AffordanceRegistryaffordances merged automatically inOutputFormatterviaWithPluginAffordances; domain models no longer need manual registry calls - Example plugin —
examples/hello-plugin/demonstratesAffordanceRegistry, server routes, and UI affordance handlers - Plugin registry repo — tddworks/asc-registry with
registry.jsonand release assets for ASC Pro + Hello Plugin
Changed
- Unified
Pluginmodel — mergedPluginandMarketPlugininto a single model withisInstalled,downloadURL?,slug?fields - Refactored plugin system — replaced event-based script plugins with dylib
.pluginbundle management - Removed event plugin system — deleted
PluginEvent,PluginEventPayload,PluginResult,PluginRunner,PluginEventBusand all infrastructure - Removed event bus from commands —
BuildsUploadandVersionsSubmitno longer emit plugin events - Apps page affordance buttons — plugin affordances (e.g.
greetfrom Hello Plugin) render as clickable buttons viaappAffordanceHandlersregistry
asc v0.1.62
Added
asc web-server— Swift/Hummingbird HTTP+WebSocket server replacing Node.js. Single binary, zero external dependencies, HTTPS with self-signed cert- Plugin architecture —
.pluginbundles in~/.asc/plugins/extend the CLI with routes, commands, affordances, and UI. Dylibs built withdynamic_lookup(~300KB) AffordanceRegistry— plugins extend domain model affordances at runtime (e.g. pro plugin addsstreamto booted simulators)- Affordance-driven UI — web app renders buttons from CAEOAS affordances, not hardcoded features. Plugins register handlers via
window.simAffordanceHandlers - Command Center Simulators page — device list with search/filter, stats cards, affordance-driven actions
asc v0.1.61
Added
- Screenshot image URLs —
asc screenshots listnow returnsimageUrlfor each screenshot, so you can view and render real App Store images directly from CLI output - Screenshot platform filtering — filter and browse screenshots by platform (iPhone, iPad, etc.) in the web UI
- Simulator screenshot capture — capture and browse simulator screenshots in the web gallery
- Simulator live streaming — stream your simulator screen in real-time via MJPEG to the browser
Changed
- Simulator interaction feedback — improved tap ripple effect and gesture responsiveness in the streaming UI
asc v0.1.60
Added
asc simulators list [--booted]— list available iOS simulators with state-aware affordancesasc simulators boot --udid <udid>— boot a simulatorasc simulators shutdown --udid <udid>— shut down a simulatorasc simulators stream [--udid <udid>] [--port <port>]— interactive simulator streaming to the browser with device bezel frames, tap/swipe/type via AXe, gesture presets, and accessibility inspection
asc v0.1.59
Added
asc builds list --platform— filter builds by platform (ios, macos, tvos, visionos)asc builds list --version— filter builds by marketing version (e.g. 1.0.0)asc builds next-number— get the next build number for a version/platform, ideal for CI/CD automation (resolves #13)- Build platform field — builds now include platform from preReleaseVersion
- Build number populated —
buildNumberfield now maps fromBuild.attributes.version(was always nil)
Fixed
- Global options (
--pretty,--output,--timeout) now accepted by all commands — previously 10 leaf commands (builds add-beta-group,builds remove-beta-group,builds uploads delete,versions set-build,reviews responses delete,app-clip-experiences delete,app-clip-experience-localizations delete,analytics-reports delete,auth logout,auth use) rejected these flags with "Unknown option"
Changed
asc builds list— table output now includes Build Number and Platform columns- Build version semantics —
versionfield now holds the marketing version (from PreReleaseVersion) when available;buildNumberholds the build string - Builds sorted by newest first — list results default to
-uploadedDatesort order