[{"content":"Release v0.55 Work-in-progress.\nRelease v0.54 New features, security, usability and UI enhancements.\nFeatures [API] add parsing and translation of HTML content to plain text content [Client-Web, API] add toggle and state management(ProblemSolvingAgent) [Agent] add initial implementation of Problem Solving Agent Security [Proxy] migrate JWKS to latest Miscellaneous [Tritonserver] add initial implementation of ProblemSolvingAgent Release v0.53 New features, security, usability and UI enhancements.\nFeatures [Agent] integrate task manager with \u0026lsquo;dev-graph-agentic\u0026rsquo; Security [API] add nonroot user to dev.Dockerfile of \u0026ldquo;api-server-sg\u0026rdquo; [API, Engine, Tritonserver] migrate image builds to custom builder [MCP] migrate \u0026lsquo;streaming-python\u0026rsquo; to DHI image Bug Fixes and Other Changes [API] set correct uid:gid for secrets store on local dev [Client-Web] restore service worker function [Agent] parsing of MCP input and output params for \u0026rsquo;tool_websearch\u0026rsquo; Miscellaneous [Tritonserver] amend build and inference parameters [Agent] amend inference parameters [Tritonserver] add new build for dev-graph-agentic-tritonserver [Agent, Tritonserver] integrate task manager with \u0026lsquo;*-tritonserver\u0026rsquo; [Tritonserver] move websearch task to mcp server \u0026lsquo;ace-python\u0026rsquo; [Agent] move task manager to MCP server \u0026lsquo;ace-python\u0026rsquo; [Client-Web] migrate version to latest Release v0.52 New features, security, usability and UI enhancements.\nFeatures [Agent] add MCP tool for accessing OpenAlex API [Agent] support \u0026lsquo;get_single_entity\u0026rsquo; service from OpenAlex API [Agent] add support for DataCommons(DC) and OpenAlex(OA) [MCP] add support for \u0026lsquo;get_content\u0026rsquo; function and \u0026lsquo;content\u0026rsquo; API [MCP] add filters for OpenAlex API \u0026ldquo;get_list_of_entities\u0026rdquo; service [MCP, Agent] support OpenAlex API endpoints [Agent] add custom callbacks to task broker for tracking task status Security [Proxy] migrate JWKS to latest [API] migrate to DHI python base image [Proxy] migrate \u0026ldquo;envoy-sg\u0026rdquo; JWKS to latest Bug Fixes and Other Changes [Agent] parsing of MCP response from \u0026ldquo;read_openalex\u0026rdquo; tool [Agent] openalex tool output [MCP] errors in parsing input parameters for \u0026lsquo;read_openalex\u0026rsquo; tool Refactor [Engine] remove redundant docker compose configuration [Engine] build script for tritonserver with custom python backend Miscellaneous [Engine] update parameters for VLLM=v0.15.0 [MCP, Agent] remove \u0026lsquo;select\u0026rsquo; and \u0026lsquo;sort\u0026rsquo; fields from \u0026lsquo;read_openalex\u0026rsquo; [Tritonserver] add OpenAlex API utilities to parent graph [Client-Web] add prompt hints for OpenAlex API [Agent] amend raft parameters for local dev rabbitmq server [Agent] increase rabbitmq server default disk resource Release v0.51 New features, security, usability and UI enhancements.\nFeatures Amend system prompt for symbolic expression translator Add initial system prompt for generating SymPy expressions [Agent] add web utilities for reading HTML pages from Common Crawl index [Agent] add conditions for generation of SymPy expressions [Agent] add utility for convert HTML content to markdown [Agent] add HTML text content sanitization as post processing step [Agent] add utitlies for parsing target urls on math subjects Performance [Agent] add options to HTTP cache backend(sqlite) [Agent] add HTTP caching to \u0026ldquo;web_utils.py\u0026rdquo; [Agent] add HTTP session for web requests Security [Agent] evaluate local forward proxy for web scraping Bug Fixes and Other Changes Missing field for kvcache connector [Agent] undesired output for MCP tool call \u0026lsquo;run_xml\u0026rsquo; [Agent] wrong system prompt for MCP tool calls [Agent] failure to load HTML content into YAML prompt template [Engine] incompatibility between \u0026ldquo;llm-streaming-sg\u0026rdquo; dependencies [Engine] gibberish output when fp8 kvcache with scaling enabled Refactor Rename API server script, configurations and parameter names [API] \u0026ldquo;middleware-sg\u0026rdquo; related files for GCP deployment \u0026ldquo;model.py\u0026rdquo; for \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; [Agent, Engine] pathnames in docker compose configuration [Agent] remove redundant MCP stdio access from \u0026ldquo;*-tritonserver\u0026rdquo; \u0026ldquo;*-tritonserver\u0026rdquo; inference scripts \u0026ldquo;dev_graph_agentic.py\u0026rdquo; and \u0026ldquo;*-tritonserver.py\u0026rdquo; inference scripts Miscellaneous [Client-Web] amend contents of home page [Agent] add streaming output of public node execution Add public data prompt hints to web client Tune safety policy for economic data Add more experty identity prompts for query classification step Add support for more datacommon variable entities for target country(SG) [Agent] migrate from Qwen3 to Mistral3 series for \u0026ldquo;*-tritonserver\u0026rdquo; [Agent] migrate dev model from Qwen3 to Mistral3 series Exclude technical documentation from version control Add XML C libraries to \u0026ldquo;*-tritonserver\u0026rdquo; container build Add fallback when access to \u0026ldquo;index.commoncrawl.org\u0026rdquo; is denied [Agent] rename dev modules [MCP] add validation and assertions for SymPy expressions [MCP] add logging utility to \u0026ldquo;ace-python\u0026rdquo; [Agent] add environment variable \u0026ldquo;NO_PROXY\u0026rdquo; for HTTP requests [Agent] reinstate system prompt prefixes for \u0026ldquo;gen_symbolic_expressions\u0026rdquo; [Agent] add text wrapper for post processing of HTML content [Agent] evaluate VLLM nightly builds [API] rename directory [Agent, Engine] restructure files and directories [Engine] amend runtime id for docker compose configuration [Engine] add missing prompt template to Dockerfile [Agent] add additional fields to tool response payload [Payments] migrate stripe version to latest [Agent] increase timeout for reading CC index [Agent] add trigger words to \u0026ldquo;ace-python\u0026rdquo; MCP server Move automation scripts into \u0026lsquo;scripts\u0026rsquo; directory Release v0.50 New features, security, usability and UI enhancements.\nFeatures Add public data field to request body Add public data option to web client ui and state Add semantic search to streaming-mcp Add initial implementation of StreamAgent Add mcp client and parse \u0026ldquo;streaming-mcp\u0026rdquo; response in parent graph Add markdown version of wiki html doc to context of \u0026ldquo;dev-graph-agentic\u0026rdquo; Add html conversion and postprocessing to \u0026ldquo;streaming-python\u0026rdquo; mcp Add utility functions for datacommons APIs Add initial implementation of mcp for public data Add initial implementation of \u0026ldquo;call_public_data_node\u0026rdquo; for parent graph Add more economic related dcids and examples for country(SG) [Agent] add \u0026ldquo;is_public_data\u0026rdquo; field to augmentation body Add \u0026ldquo;public_data_node\u0026rdquo; to \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; Security Refactor *Dockerfile for \u0026ldquo;streaming-python\u0026rdquo; mcp Migrate \u0026ldquo;ace-python\u0026rdquo; mcp to DHI base image Migrate \u0026ldquo;public-python\u0026rdquo; mcp to DHI base image Migrate \u0026ldquo;public-python\u0026rdquo; mcp to DHI base image Migrate to docker volume for secrets store Run as non-priviledged user for \u0026ldquo;middleware-sg\u0026rdquo; Bug Fixes and Other Changes Amend boolean field for metaprompt in middleware Unassigned variable in \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; [Agent] empty value on semantic cache in parent graph Refactor Fields in augmentation dict Web client deprecations and warnings by dart analyzer Dockerfile for \u0026ldquo;middleware-sg\u0026rdquo; Tool field for web client state management Dev http client parameters for \u0026ldquo;middleware-sg\u0026rdquo; container \u0026ldquo;text_generation.dart\u0026rdquo; for web client Miscellaneous Add \u0026ldquo;live_data\u0026rdquo; toggle to web client ui and state Add minimal \u0026ldquo;flutter_bootstrap.js\u0026rdquo; for web client Amend \u0026ldquo;tritonserver-vllm_backend\u0026rdquo; build Remote filter condition and add score threshold for qdrant client Add \u0026ldquo;page_id\u0026rdquo; field/value to stream entity from wikimedia api response Amend \u0026ldquo;streaming-python\u0026rdquo; container for text embedding workload Amend .dockerignore for \u0026ldquo;public-python\u0026rdquo; mcp server Parse datacommon client response into fields Amend runtime for \u0026ldquo;firebase-emulators\u0026rdquo; Release v0.49 New features, security, usability and UI enhancements.\nFeatures Add \u0026ldquo;pywikibot\u0026rdquo; to stream for recent changes on wikimedia projects Add access to wikidata and wikimedia APIs Add support for multiple search types with wikimedia API Add support for multiple content types from wikimedia Feed API Add daily \u0026ldquo;mostread\u0026rdquo; filter to recentchange wikimedia stream Add techniques for gender neutrality in LLM responses Add utility function for fetching html source from wikimedia Add client retries for wikimedia APIs Add text embedding to streaming data in ETL pipeline Performance Add support for HTTP/2 and additional compression algos for requests Migrate redis protocol(RESP) from version 2 to 3 Security Add valkey secret key to \u0026ldquo;streaming-python\u0026rdquo; mcp server Bug Fixes and Other Changes Valkey acl list and server configuration Wikimedia featured list content ordering Wrong kv cache size in \u0026ldquo;*-tritonserver\u0026rdquo; deployments Segfault error in qdrant server Refactor Script for etl pipeline \u0026ldquo;*-tritonserver\u0026rdquo; build script Script for generating hybrid embeddings Miscellaneous Add support for \u0026ldquo;suffix\u0026rdquo; spec decode on older version of vllm Remove \u0026ldquo;news\u0026rdquo; filter from etl pipeline Add network configuration for httpx client Add zstd decompression step to prefill-only task Evaluate and add utility function for wikidata vector search Amend python environment yaml to include essential packages Add retry logic to valkey client in ETL pipeline Add separate builds of \u0026ldquo;*-tritonserver\u0026rdquo; container Docker compose configuration changes Add support for 120k context window on local VLLM engine Add HTTP transport configuration to \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; Add unstructured implementation for doc partitioning and chunking Refactor partition and chunking step in document processing pipeline Migrate page content type from \u0026ldquo;source\u0026rdquo; to \u0026ldquo;html\u0026rdquo; Amend configuration for auxiliary models Add manual scaling to GCP Cloud Run deployments Release v0.48 New features, security, usability and UI enhancements.\nFeatures Utilize runtime context for repeated sampling Subscribe to every change event in stream processing etl pipeline Add initial implementation of MCP for streaming etl pipeline Add initial support for json module in valkey instance Add initial lmcache yaml configuration and external controller Add initial NIXL-based 1P1D instances for disagg prefill on same host Add initial implementation of prefill-only module Add prefill-only workload to \u0026ldquo;dev-graph-agentic\u0026rdquo; event loop Performance Amend VLLM compilation config Enable torch compilation level=2 for LLM inference Replace asyncio.run() with uvloop.run() Enable FP8 kv cache to improve throughput Enable sparse attention and layerwise cache store/load for lmcache Enable \u0026ldquo;VLLM_HAS_FLASHINFER_CUBIN\u0026rdquo; flag for faster initialization Security Add \u0026ldquo;kvcache_salt\u0026rdquo; to provide cache isolation in a shared env Bug Fixes and Other Changes Initialization of engine utils during tritonserver startup Refactor Cloud function \u0026ldquo;user_delete\u0026rdquo; for web client authentication Refactor \u0026ldquo;load_llm_engine\u0026rdquo; script Type of \u0026ldquo;runtime.context.sampling_params\u0026rdquo; Replace \u0026ldquo;llm_async_engine\u0026rdquo; with \u0026ldquo;vllm_engine_endpoint\u0026rdquo; Decouple VLLM inference engine from langgraph workflow \u0026ldquo;engine_utils.py\u0026rdquo; script \u0026ldquo;llm-streaming-sg\u0026rdquo; image build Miscellaneous Retrieve \u0026ldquo;cache_salt\u0026rdquo; from identity token in web client Add \u0026ldquo;cache_salt\u0026rdquo; metadata during new user creation Add more performance parameters for valkey server Disable valkey persistence for cache only use case Add initial tracing and exception handling to streaming mcp Use only one valkey database and follow keyspace naming convention Handle list data for each data source in streaming etl pipeline Add custom text connector for streaming text from third party APIs Add text normalization to streaming mcp Evaluate \u0026ldquo;cachegen\u0026rdquo; for store/load precomputed kv values Run prefill task on separate thread Add manual file handler for logging in \u0026ldquo;load_llm_engine\u0026rdquo; Add process manager for LLM engine utilities Start streaming etl pipeline as a daemon process Manually assign prefill-only task on daemon process Set params \u0026ldquo;generation_config\u0026rdquo; and \u0026ldquo;model_impl\u0026rdquo; for VLLM engine Release v0.47 New features, security, usability and UI enhancements.\nFeatures Add initial implementation for rendering SVG image in web client Add third-party inference providers for SVG image generation Add interactive viewer for SVG image in web client Add initial implementation of inference time scaling Performance Add \u0026ldquo;effort_level=low\u0026rdquo; for llm extended generation Bug Fixes and Other Changes Web client ui issues with stacked widgets Web client ui issue with rendering XML string Error in updating runtime context with newly generated XML string Third party providers model outputs not writing to file Response from \u0026ldquo;websearch\u0026rdquo; tool not rendering in web client Progress bar not updating in web client Web client slider bar for \u0026ldquo;effort_level\u0026rdquo; Miscellaneous Parse python mcp server output and render mcp response in web client Parse xml string output in web client Chunk xml output from \u0026ldquo;XMLAgent\u0026rdquo; node Only enable \u0026ldquo;XMLAgent\u0026rdquo; data visualization for \u0026ldquo;mathematics\u0026rdquo; domain Add diagram for streaming data in llm applications Restore \u0026ldquo;llm\u0026rdquo; node streaming when \u0026ldquo;effort_level\u0026rdquo; is 0 Add initial implementation of effort slider to web client Add \u0026ldquo;effort_level\u0026rdquo; parameter for streaming inference Replace final generation node \u0026ldquo;llm\u0026rdquo; with \u0026ldquo;effort\u0026rdquo; Amend prompts for repeated sampling in \u0026ldquo;effort\u0026rdquo; node Increase diversity of responses for repeated sampling in \u0026ldquo;effort\u0026rdquo; node Release v0.46 New features, security, usability and UI enhancements.\nFeatures Add initial system prompt for Python language translator Add initial implementation of python mcp tool for xml Add initial implementation of XMLAgent node for all XML features Add system prompt for generating XML string from end user query Security Add data validation prior to code execution in \u0026ldquo;ace_python\u0026rdquo; Bug Fixes and Other Changes Fix structured output for \u0026ldquo;ace_python\u0026rdquo; Refactor Migrate from \u0026ldquo;config_schema\u0026rdquo; to \u0026ldquo;context_schema\u0026rdquo; Amend calculus suite of statements for \u0026ldquo;exec()\u0026rdquo; operation Migrate more keys from \u0026ldquo;RunnableConfig\u0026rdquo; to Context API Migrate to Context API Miscellaneous Amend weekly message of web client Add more test prompts for \u0026ldquo;ace-python\u0026rdquo; Add dev and prod Dockerfiles for \u0026ldquo;ace-python\u0026rdquo; mcp server Add prompts for ace-python mcp server testing Add web client placeholder content for release v0.46.0 Add more math related builtin modules to user-defined global namespace Amend \u0026ldquo;ace_python\u0026rdquo; tool to use \u0026ldquo;exec()\u0026rdquo; instead of \u0026ldquo;eval()\u0026rdquo; Add math related modules to support algebraic operations Add new build for tritonserver-vllm_backend for \u0026ldquo;dev-graph*\u0026rdquo; variants Add initial handling for exceptions and edge cases for mcp clients Add initial checks and constraints to \u0026ldquo;ace_python\u0026rdquo; mcp server. Revert default runtime to working version of \u0026ldquo;runsc\u0026rdquo; for ai/ml workloads Add validation step for generated python statement(s) Migrate dev model from \u0026ldquo;Qwen3-4B-FP8\u0026rdquo; to \u0026ldquo;Qwen3-4B-Instruct-2507-FP8\u0026rdquo; Add Python language translator to \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; Remove \u0026ldquo;validate_code\u0026rdquo; code block Replace default runtime for \u0026ldquo;ace_python\u0026rdquo; mcp server Amend system prompt for XML generation Add XML-based expression tree to context of parent graph Reintroduce \u0026ldquo;XMLAgent\u0026rdquo; node back to parent graph Amend system prompt for XML generation Update python dependency for \u0026ldquo;ace_python\u0026rdquo; mcp server Mount local model configuration to \u0026ldquo;dev-graph-agentic-tritonserver\u0026rdquo; Add \u0026ldquo;XMLAgent\u0026rdquo; to generate xml from python expression Add \u0026ldquo;XMLAgent\u0026rdquo; node to dev-graph-agentic-tritonserver Add raw xml to llm response Add warmup operation to \u0026ldquo;dev-graph\u0026rdquo; and \u0026ldquo;dev-graph-agentic\u0026rdquo; Release v0.45 New features, security, usability and UI enhancements.\nFeatures Add initial support for rope scaling in \u0026ldquo;llm-streaming-sg\u0026rdquo; Add initial integration of stdio mcp server to tritonserver-vllm_backend Add initial implementation of local stdio MCP server access Add initial implementation of python arbitrary code execution sandbox Add support for maximal marginal relevance(MMR) to improve results Performance Add initial support for \u0026ldquo;flag_gems\u0026rdquo; custom ops in Triton Bug Fixes and Other Changes Langgraph traces not getting fed to local otelcollector instance Error with parent graph module, prompt compressor error Flag_gems incompatible with sentence_transformers reranker Amend mcp json schema for guided decoding Multimodal node not triggering when input image is provided Error anyio.ClosedResourceError in \u0026ldquo;ace-python\u0026rdquo; mcp server Refactor Add comment and condition to \u0026ldquo;sanity_checks_langgraph.py\u0026rdquo; Tracing implementation for \u0026ldquo;dev-graph-agentic\u0026rdquo; Tracing implementation of \u0026ldquo;dev-graph\u0026rdquo; Miscellaneous Add initial implementation of MCP server and client for stdio transport Add initial implementation of MCP server with streamable_http transport Filter tool output and manage ui state in web client Support qwen2.5 vision-language models for multimodal inputs Add infographic on how to build an agent by langchain Render mcp response to web client Add UI toggle for mcp access in web client Add \u0026ldquo;mcp\u0026rdquo; field to \u0026lsquo;mode_and_attributes_schema\u0026rsquo; Add structured output to hybrid retrieval function call Handle langgraph \u0026ldquo;GraphRecursionError\u0026rdquo; Migrate Flutter SDK to latest beta version Refactor docker build for firebase emulators suite Integrate ace-python mcp server with agent graph Amend port on ace-python sandbox Remove redundant configuration Amend ace-python mcp server configuration for container deployment Change default container runtime from \u0026ldquo;runc\u0026rdquo; to \u0026ldquo;crun\u0026rdquo; Release v0.44 New features, security, usability and UI enhancements.\nFeatures Add initial implementation for text generation with citations Add text generation with citations for document mode Add initial implementation of contextual retrieval to etl pipeline Add deferred node execution to \u0026rsquo;llm\u0026rsquo; node of graph Add cache policy and caching to intermediate nodes of graph Add document search toggle in web client Add initial integration with LMCache for tritonserver-vllm_backend Performance Pin \u0026ldquo;flashinfer-python\u0026rdquo; version to \u0026ldquo;v0.2.2.post1\u0026rdquo; Security Replace all existing \u0026ldquo;privileged: true\u0026rdquo; with \u0026ldquo;privileged: false\u0026rdquo; Bug Fixes and Other Changes Docker image not loading from archive and vllm-openai server not running \u0026ldquo;route_mode\u0026rdquo; value overwritten in parent graph Refactor Amend ETL script for producing knowledge graph triplets ETL pipeline for vectordb Refactor \u0026ldquo;middleware-sg\u0026rdquo; dockerfiles Utility function for call SambaNova API endpoint Implement document search behind an end user provided toggle flag Move JSON schemas to independent module file \u0026ldquo;input_topic(s)\u0026rdquo; into \u0026ldquo;input_mode\u0026rdquo; Miscellaneous Add SG election info to system prompt Amend citation instructions in system prompt Amend system prompt with every instructions per line Add additional post-processors, separators and filters for chunking Amend parameters of traditional chunking strategy Add support for quantized onnx model weights for dense text embedder Migrate reranker to neobert Add new parameters to query function for RAG hybrid retrieval Add additional filter fields to vector rag query function Add \u0026ldquo;FLEX_ATTENTION\u0026rdquo; to \u0026ldquo;VLLM_ATTENTION_BACKEND\u0026rdquo; comment Add initial yaml config for dev vllm-openai server Add additional constraints to contextual retrieval pipeline Amend instructions in cloud-init script to load docker archive file Amend scripts for attaching/mount hyperdisk during vm instance creation Add initial script for persistent disk(s) provisioning Release v0.43 New features, security, usability and UI enhancements.\nFeatures Add initial social proof segment to system message Add initial implementation of SocialAgent as a subgraph Add initial implementation of SocialAgent Add implementation of SocialAgent to \u0026ldquo;llm-streaming-sg\u0026rdquo; docker build Add initial implementation of addons for social proof node Add new system prompt and logic for Lucene query translation retries Bug Fixes and Other Changes Spelling error Social proof subgraph retries Amend prompt template for input topics Miscellaneous Add initial design docs and template for SocialAgent Update default text-only model for Cerebras API Add metaprompt node system message as yaml configuration Add sampling parameters from request to main model inference Add ui element toggle in web client to support social proof option Amend augmentation fields (2f455- Replace dev model with Qwen3-4B-AWQ Replace sparse text embedder for RAG hybrid search Restore \u0026ldquo;websearch\u0026rdquo; as one of topics Amend prompt template for classifying input topics Amend prompt templates for \u0026ldquo;safety\u0026rdquo;, \u0026ldquo;topics\u0026rdquo; and \u0026ldquo;complexity\u0026rdquo; Add additional llm sampling parameters to \u0026ldquo;middleware-sg\u0026rdquo; Amend logic for Lucene translation retries in \u0026ldquo;llm-streaming-sg\u0026rdquo; Release v0.42 New features, security, usability and UI enhancements.\nFeatures Add initial support for metaprompting Add initial support for metaprompt in web client Add initial support for streaming of custom metaprompts Add websearch response to \u0026ldquo;call_tool_use\u0026rdquo; node Parse additional websearch responses and enable url links on web client Performance Replace reranker model with neobert Web client migration from js to wasm build Bug Fixes and Other Changes Multi-turn metaprompt returning wrong node id Dart errors Tavily response failure Authentication revoke session failure on backend Type casts Web client type cast error Refactor \u0026ldquo;human_intervention\u0026rdquo; and \u0026ldquo;meta_prompt\u0026rdquo; nodes in parent graph Migrate from \u0026ldquo;hive\u0026rdquo; to \u0026ldquo;hive_ce_flutter\u0026rdquo; Web worker interface on web client Migrate from \u0026ldquo;package:web/web.dart\u0026rdquo; to \u0026ldquo;package:http/http.dart\u0026rdquo; Miscellaneous Initial merge \u0026ldquo;human_intervention\u0026rdquo; node into parent_graph Amend parameters vllm openai compatible client and server Remove deprecated models from \u0026ldquo;SNOVA_API\u0026rdquo;, replace with phi4-mm-instruct Add additional text controller for metaprompt inputs on web client Use cerebras api for metaprompt node Summarise persona and add constraints to metaprompt system message Amend system message for metaprompting, add additional examples Remove redundant bottom scaffold on web client Release v0.41 Security, usability and UI enhancements.\nBug Fixes and Other Changes Text embedding models failed to load Exception handling for \u0026ldquo;etl-knowledge-graph\u0026rdquo; script Prevent repeated execution after conditional edges Skip empty text chunks from vllm async engine output Add parsing of \u0026ldquo;human_intervention\u0026rdquo; input to \u0026ldquo;model_prod.py\u0026rdquo; \u0026ldquo;human_intervention\u0026rdquo; node not triggering in \u0026ldquo;model_prod.py\u0026rdquo; Streaming text outputs for \u0026ldquo;model_prod.py\u0026rdquo; Streaming events from \u0026ldquo;llm-streaming-sg\u0026rdquo; Crashing of \u0026ldquo;llm-streaming-sg\u0026rdquo; when parsing interrupts Restore web client streaming text from tritonserver-vllm_backend Streaming of custom outputs from intermediate nodes Refactor Warning message from \u0026ldquo;violation\u0026rdquo; node Migrate from \u0026lsquo;astream_events\u0026rsquo; to \u0026ldquo;astream\u0026rdquo; api in \u0026ldquo;model_prod.py\u0026rdquo; Miscellaneous Add utility function \u0026ldquo;send_response\u0026rdquo; Add events to custom mode of \u0026ldquo;llm\u0026rdquo; and \u0026ldquo;violation\u0026rdquo; nodes Amend dockerfile syntax version to follow major version Add initial utility function \u0026ldquo;send_response\u0026rdquo; for custom streaming mode Skip llm request for tool use \u0026ldquo;websearch\u0026rdquo; and add manual toggle Restore custom streaming of intermediate nodes from workflow Add exception handling to \u0026ldquo;call_snova_api_post\u0026rdquo; Switch python image to latest major version for \u0026ldquo;middleware-sg\u0026rdquo; Release v0.40 New features, security, usability and UI enhancements.\nFeatures Add initial visual notification for workflow progression on web client Add initial cypher statement validation with boolean response Add Cypher validation and retry nodes to graphrag subgraph Add initial evaluation step for Cypher response and user query Add initial implementation of metaprompt node and subgraph Add initial store to agentic system for persistent/long-term memory Add initial support for \u0026ldquo;interrupt\u0026rdquo; step in workflow Add initial support for manual human intervention during inference Bug Fixes and Other Changes Multiple triggers from parallel hybrid rag nodes in workflow Failing request on \u0026ldquo;vision-text\u0026rdquo; path of parent graph Amend tags and node names to enable streaming from subgraphs Refactor Remove web client deprecated package \u0026ldquo;flutter_gen\u0026rdquo; Graph node in workflow Implement graph rag workflow as independent subgraph Split graph rag subgraph into individal nodes Start initial migration from \u0026ldquo;astream_events\u0026rdquo; to \u0026ldquo;astream\u0026rdquo; api Miscellaneous Migrate tritonserver-vllm_backend from v24.12 to v25.01 Remove discontinued package from web client dependencies Add initial schemas for generating knowledge graph triples Add relation verb set list for kg triples generation Move deidentification to privacy node and add conditional routing Add initial render of metaprompt streaming output on web client Add initial support for pause and resume functionalities Migrate stripe api version from \u0026ldquo;2024-12-18.acacia\u0026rdquo; to \u0026ldquo;2025-02-24.acacia\u0026rdquo; Release v0.39 New features, security, usability and UI enhancements.\nFeatures Parse and add hybrid rag context to dynamic prefix of prompt template Bug Fixes and Other Changes Migrate dockerfile syntax from v1.12.1 to v1.13.0 Refactor Update ETL script for building knowledge graph(s) Miscellaneous Replace base llm \u0026ldquo;mistral-nemo\u0026rdquo; with \u0026ldquo;pixtral\u0026rdquo; Add script for loading knowledge-graph(s) Add initial layout and styling for displaying multimodal context Release v0.38 New features, security, usability and UI enhancements.\nFeatures Add initial multimodality functionality Refactor Add \u0026ldquo;create_image_input\u0026rdquo; to support pixtral Miscellaneous Add nightly builds of vllm with tritonserver-vllm_backend Add and evaluate additional chat templates for VLM inference Add support for \u0026ldquo;image_input\u0026rdquo; llm request parameter to middleware Increase HTTP request timeout for \u0026ldquo;middleware-sg\u0026rdquo; text-generation API Add initial support for posting api client Display bottom sheet for multimodal options in web client Release v0.37 New features, security, usability and UI enhancements.\nFeatures Add initial support for VLM inference Add presidio-analyzer and presidio-anonymizer as local HTTP service Refactor Add initial support for llm compressor to GPTQ quantization script Deidentification utility function for \u0026ldquo;llm-streaming-sg\u0026rdquo; Miscellaneous Amend \u0026ldquo;llm_worker.js\u0026rdquo; package url Add utiliy script for translating text passages to triples Refactor quantization and docker scripts Add vllm sanity check candidate model for Llama3.2 series Refactor awq quantization and docker utility scripts Silence \u0026ldquo;openinference-instrumentation-langchain\u0026rdquo; tracer warnings Add quantization of \u0026ldquo;llama-3.2-1B-instruct\u0026rdquo; with w8a8 format Remove all chainguard images Replace phi3.5-mini-instruct with llama3_2-1B-instruct Release v0.36 New features, security, usability and UI enhancements.\nFeatures Add Cerebras inference api http endpoint Add initial implementation of knowledge graph reasoning Add support for translating natural language query to Cypher statements Add initial translation from natural language to Cypher Add mapping of extracted entities from enduser query to knowledge graph Performance Add router for default/generic inputs in langgraph workflow Add optional distillation step for sentence-transformers models Security Amend CSP directives Migrate dev dependency \u0026ldquo;loki\u0026rdquo; to distroless variant Migrate dev dependency \u0026ldquo;grafana\u0026rdquo; to distroless variant Maintenance release for Redis Stack Server 7.4.0 Add initial cypher query validation Miscellaneous Add Apache AGE as graphdb for modeling relationships between entities Amend cloud run services \u0026ldquo;min-instances\u0026rdquo; to \u0026ldquo;service-min-instances\u0026rdquo; Adhere cypher queries to OpenCypher style guide Add OpenCypher style guide reference Amend prompt for cypher translation Add list of common stop tokens Release v0.35 New features, security, usability and UI enhancements.\nFeatures Add initial subgraph(s) implementation for multi-agent teams Initial implementation of multi-agents reasoning Add support for postgresql as langgraph checkpointer Add initial system prompt for generating multiple expert identities Initial implementation of multi-agents reasoning with expert prompting Add multi-agents node to tritonserver-vllm_backend Performance Add uvloop for asyncio performance Migrate \u0026ldquo;call_snova_api_post\u0026rdquo; from synchronous to asynchronous version Add snova fastapi to \u0026ldquo;call_agent_endpoint\u0026rdquo; Security Amend \u0026ldquo;llm-streaming-sg\u0026rdquo; container runtime from \u0026ldquo;runc\u0026rdquo; to \u0026ldquo;runsc\u0026rdquo; Bug Fixes and Other Changes Container(s) unable to start due to mount error Empty thought template in \u0026ldquo;call_reasoning_node\u0026rdquo; Update logic for llm inference with snova fastapi endpoint Miscellaneous Migrate langgraph stream events from v1 to v2 Rename tritonserver vllm backend \u0026ldquo;model_main.py\u0026rdquo; to \u0026ldquo;model_prod.py\u0026rdquo; Implement test and prod versions of \u0026lsquo;model.py\u0026rsquo; for vllm backend Migrate vllm backend \u0026ldquo;model_main.py\u0026rdquo; to v2.49.0 matching NGC v24.08 Add versioning to tritonserver configuration for vllm models Migrate dockerfile frontend syntax from v1.9.0 to v1.10.0 Add \u0026ldquo;_write\u0026rdquo; filter for otel-collector langgraph config Add multiagents node to \u0026ldquo;generic_graph\u0026rdquo; Update sambanova api endpoint to avoid disruption Move unique identifiers to \u0026ldquo;metadata\u0026rdquo; key in \u0026ldquo;RunnableConfig\u0026rdquo; Restore vllm functionality of attaching unique seed per-request Implement non-streaming version of \u0026ldquo;call_snova_api\u0026rdquo; function Migrate \u0026ldquo;phi3-mini-instruct\u0026rdquo; to \u0026ldquo;phi3_5-mini-instruct\u0026rdquo; Release v0.34 New features, security, usability and UI enhancements.\nFeatures Add \u0026ldquo;multihop\u0026rdquo; RAG strategy to \u0026ldquo;llm-streaming-sg\u0026rdquo; Fetch pre-computed expert identity per enduser query in llm node Write distilled template to object store after each task-solution cycle Add instantiation of reasoning based on task and thought template Add thought template distillation for task, solution and answer steps Add initial reasoning node to graph Write new thought templates to object store if conditions are met Add reasoning after rag node for expert complexity Add reasoning after rag node for intermediate complexity Add reasoning after rag node for novice complexity Add reasoning node after tool(s) node Amend ddgs chat model from \u0026ldquo;gpt-4o-mini\u0026rdquo; to \u0026ldquo;llama-3.1-70b\u0026rdquo; Add snova fastapi endpoint to reasoning node Performance Improve tritonserver_vllm_backend performance by using a separate thread for responses Security Remove user and password from grafana environment variables Bug Fixes and Other Changes Missing attributes for langchain tracer Max model len for lm eval Remove \u0026ldquo;static_prefix_1k_compressed\u0026rdquo; from prompt template Migrate dev dependency to latest Tritonserver HTTP endpoint \u0026lsquo;/generate_stream\u0026rsquo; unable to return output tokens Add \u0026ldquo;user: 1000\u0026rdquo; to \u0026ldquo;grafana\u0026rdquo; service level element Miscellaneous Add rag local evaluation for \u0026ldquo;mistral-nemo-instruct\u0026rdquo; Add initial rag strategy responses for \u0026ldquo;mistral-nemo-instruct\u0026rdquo; Add initial support for streaming inference with \u0026ldquo;mistral-nemo-instruct\u0026rdquo; Add awq quantization of \u0026ldquo;mistral-nemo-instruct\u0026rdquo; Add query classification for expert identity Add expert identity node and router to workflow Add sub disciplines of law field Amend a non-exhaustive list of major academic disciplines Add document on world models Add system prompt for generating pseudo-expert identities Reduce reranker top_k documents from 5 to 1 in \u0026rsquo;llm-streaming-sg\u0026rsquo; Add markdown notes for llm development Differentiate \u0026lsquo;onnxruntime-gpu\u0026rsquo; between v1.18.0 and v1.18.1 Add in-context exemplars to \u0026rsquo;task_distiller\u0026rsquo; and \u0026rsquo;template_distillation\u0026rsquo; Add task categorizer for Buffer-of-Thoughts thought templates Remove custom async callback tracing handler in \u0026ldquo;llm-streaming-sg\u0026rdquo; Add inital transform processor for langgraph nodes tracing Add detection of resource information to otelcol configuration Add additional filters to otelcol configuration Add utility script for langgraph + vllm + openinference + autoawq checks Add inital otel collector config for langgraph workflow Amend template distillation from local model to remote api endpoint Conduct sanity checks on vllm gguf support for phi3.5 mini instruct Release v0.33 New features, security, usability and UI enhancements.\nFeatures Initial implementation of langgraph workflow Add fusion step to hybrid retrieval Add implementation of new text chunked response for \u0026rsquo;llm-streaming-sg\u0026rsquo; Add initial implementation of adaptive rag Implement classifier for detecting query of varying complexities Add initial implementation of generating atomic expressions from text Add initial implementation of multi-hop retrieval with reasoning chain Retrieve base passage with query and atomic expressions Add initial implementation of generating reasoning traces with llm Performance Migrate json to orjson for \u0026ldquo;llm-streaming-sg\u0026rdquo; Migrate json to orjson in graph implementation Migrate fastembed embedders to \u0026lsquo;CUDAExecutionProvider\u0026rsquo; Add quantized representation of dense and sparse vectors Add quantization search parameters for hybrid retrieval Enable speculation decoding for vLLM engines Security Restore prompt injection classifier functionality Add \u0026lsquo;gvisor\u0026rsquo; for container sandboxing and resource isolation Bug Fixes and Other Changes Language model copying context information verbatim Llm semantic cache response not returning correct chunks Amend otel-collector configuration to avoid errors with \u0026ldquo;memory_limiter\u0026rdquo; Reduce false negatives for safety check of queries Refactor Prepare vllm backend \u0026lsquo;model.py\u0026rsquo; for integration with langgraph \u0026ldquo;lm_assessment.py\u0026rdquo; script for langgraph workflow Migrate web client to \u0026ldquo;colorScheme.surfaceContainerHighest\u0026rdquo; Rename \u0026ldquo;MaterialState\u0026rdquo; to \u0026ldquo;WidgetState\u0026rdquo; in web client Refactor dart \u0026lsquo;analysis_options.yaml\u0026rsquo; \u0026lsquo;create_hybrid_embeddings.py\u0026rsquo; script Miscellaneous Integrate safety and llm nodes in workflow Add initial safety node to workflow Add initial integration of VLLM engine with langgraph Quantize phi3-mini-128k-instruct to 4bit via AWQ Add violation node to graph implementation Migrate SLM from phi2 to phi3 for \u0026ldquo;llm-streaming-sg\u0026rdquo; Migrate llm model to \u0026ldquo;mistral-7b-v03\u0026rdquo; Add websearch and prompt compression to tools node of graph Add topics routing to graph implementation Add chat history as memory to graph implementation Migrate web client and \u0026lsquo;index.html\u0026rsquo; to Flutter SDK v3.22 Add initial implementation of baseline chunking strategy for ETL Add optional step \u0026lsquo;generate_propositions\u0026rsquo; to ETL pipeline for LLM Generate propositions(atomic expression) from text chunks Add additional field conditions for filtering RAG queries Add \u0026ldquo;MAX_TOKENS\u0026rdquo; to \u0026ldquo;middleware-sg\u0026rdquo; environment files Add random generator as seed for text generation Add utilty function \u0026lsquo;create_stream_response\u0026rsquo; for vllm text generation Initial implementation of chunked text response for VLLM outputs Manually pass config when streaming with \u0026ldquo;RunnableGenerator\u0026rdquo; Initial integration of LangGraph workflow and tritonserver Add nvidia driver env variables with default options Apply baseline chunking strategy to each document in ETL pipeline Add gemini api as evaluator for RAG generation Add initial rag evaluation for \u0026ldquo;hybrid-retrieval-rerank-multi-step\u0026rdquo; Release v0.32 New features, security, usability and UI enhancements.\nFeatures Amend web client text interface for multi-turn conversation Bug Fixes and Other Changes Fix web client misalignment order of chat history \u0026ldquo;HumanMessage\u0026rdquo; and \u0026ldquo;AIMessage\u0026rdquo; Fix order of chat history from web client Miscellaneous Add \u0026ldquo;HumanMessage\u0026rdquo; and \u0026ldquo;AIMessage\u0026rdquo; to on-device encrypted chat history Release v0.31 New features, security, usability and UI enhancements.\nFeatures Add initial implementation of chatbot with chat history Add truncation step for context buffer from RAG, websearch and memory Bug Fixes and Other Changes Misclassification of user input topics HumanMessage and AIMessage showing in text generation VectorDB failure when truncating excess content Unclosed backticks appearing at the end of llm output Type error for session id in llm request from \u0026ldquo;middleware-sg\u0026rdquo; Refactor Pass key retrieval script Miscellaneous Amend lighthouse audit scripts for web client Migrate dockerfile syntax from v1.4 to v1.7 Combine triplets \u0026ldquo;query-context-reference\u0026rdquo; for all files in directory Add RAG evaluation for \u0026rsquo;no-retrieval\u0026rsquo; mode as baseline Add RAG evaluation for \u0026lsquo;hybrid-retrieval\u0026rsquo; Add RAG evaluation for \u0026lsquo;hybrid-retrieval-rerank\u0026rsquo; Support anthropic claude3 models for RAG evaluation Support openai(gpt-3.5/4-turbo) for RAG evaluation Migrate local evaluator from \u0026ldquo;prometheus-13b-v1\u0026rdquo; to \u0026ldquo;prometheus-7b-v2\u0026rdquo; Add ruler evaluation results for custom merge \u0026ldquo;mistral-dareties-v02\u0026rdquo; Add initial length restriction to chat history for short-term memory Add additional criteria when checking for length for chat history Update existing session info on enduser authentication Delete current enduser session info on password reset Delete current enduser session info from database based on triggers Write new app session on firebase authentication signed in action Implement session info details(conversation_id, conversation_count) Implement \u0026ldquo;write_session_info\u0026rdquo; as api endpoint background task Add onnx cpu execution provider to text embeddings models Release v0.30 New features, security, usability and UI enhancements.\nFeatures Migrate \u0026rsquo;llm-streaming-sg\u0026rsquo; to tritonserver-vllm v24.03 Add initial classifier llm(phi2-orange-v2) for classification tasks Add initial multi-tenancy, search filters and retrieval optimizations Add hybrid search using keywords and semantics Add custom merged dense model(77 on eq_bench) 2-stage hybrid retrieval with quantized text embeddings Add detection for non-printable unicode characters in safety module Add prompt injection detector to safety module Add token limit check to input safety module of main runnable Adhere safety content categories to MLCommons\u0026rsquo; taxonomy of hazards Performance Replace base model for prompt compression Run input safety functions in parallel Security Add list of dolphin-series system prompts for AI system red-teaming Add initial risk assessment implementation for AI red team Add \u0026lsquo;banwords\u0026rsquo; component for llm output safety Bug Fixes and Other Changes DDG search utility in \u0026rsquo;llm-streaming-sg\u0026rsquo; Fix false positives from input safety classification Miscellaneous Add custom routing function for main runnable Add retrieval candidates re-ranking using cross-encoders Amend chunking strategy to max 512 tokens with 25% overlap Migrate re-ranking model from \u0026lsquo;ms-marco\u0026rsquo; to \u0026lsquo;mixedbreadai\u0026rsquo; family Migrate cross-encoder from \u0026lsquo;ms-marco\u0026rsquo; to \u0026lsquo;mixedbread-ai\u0026rsquo; family Migrate from redis vector store to qdrant for hybrid retrieval Migrate prompt compressor base model from \u0026lsquo;phi2\u0026rsquo; to \u0026lsquo;bert\u0026rsquo; Amend rag search terms to better reflect specific domains Add zstd utility and loading of qdrant index to \u0026rsquo;llm-streaming-sg\u0026rsquo; Add initial list of ban words Release v0.29 New features, security, usability and UI enhancements.\nFeatures Add initial implementation of RAG with redisvl library Performance Migrate prompt compression from llmlingua to longllmlingua Implement local/remote semantic cache with tritonserver-vllm backend Security Implement initial langchain instrumentation using openinference Initial integration of opentelemetry(fastapi,logging) for middleware Add initial implementation of GCP Cloud Trace to middleware Bug Fixes and Other Changes Fix VLLM sampling params on middleware and tritonserver Miscellaneous Add structured generation pattern module Implement tracing and guided generation for \u0026lsquo;main_runnable\u0026rsquo; Override ainvoke method of LLM class for debugging and evaluation Amend \u0026rsquo;lm_assessment.py\u0026rsquo; script to evaluate generic chain Add python regex patterns for guided generation of web search terms Add initial implementation of custom async callback handler Add transform processor for parsing input values to trace attributes Add initial resource and transform processor to otel collector Migrate tritonserver to v24.02 Implement merging of search results in tritonserver-vllm backend Add chunking operation for llm cached response and user warning Add GPTQ format for phi-2 Add r2 as object store for pre-computed text embeddings Add index creation and loading of text embeddings to \u0026rsquo;llm-streaming-sg\u0026rsquo; Initial experiment on mergekit dare-ties strategy with quantization Add \u0026lsquo;raglegal\u0026rsquo; to \u0026ldquo;retrieve_context\u0026rdquo; function Construct multiple indexes for domains and subjects on the same db Refactor Split middleware into modules Release v0.28 New features, security, usability and UI enhancements.\nFeatures Add static and dynamic prefixes to prompt template Add in-context examples to \u0026lsquo;classify_input_topic_template\u0026rsquo; Performance Add URIAL prompt as static prefix for in-context learning Add implementation of prompt compression for agent workflow Migrate \u0026rsquo;llm-streaming-sg\u0026rsquo; sampling method to \u0026lsquo;min-p\u0026rsquo; Tune LLMLingua parameters for speed Security Add initial ifeval evaluation for phi2, mistral and solar architectures Add initial safety evaluation for phi2, mistral and solar architectures Bug Fixes and Other Changes Type error when assigning value to firebase-admin auth \u0026lsquo;check_revoked\u0026rsquo; FastAPI vulnerability when using form data with a ReDos attack Release v0.27 New features, security, usability and UI enhancements.\nFeatures Conditional branching of LCEL runnables Add initial input safety checks to generic chain Integrate input safety classification with de-identification of PII Initial implementation of guard rails Add duckduckgo search as fallback for tavily search Security Amend input and output safety prompt template Implement JWT verification in envoy proxy Amend envoy proxy jwt-authn configuration for different api routes Bug Fixes and Other Changes Fix security vulnerabilities for llm-tritonserver-streaming Fix vLLM inference error with generating stream when doing web search Refactor Streaming response for standard and pro users Pydantic data classes for llm request and response Release v0.26 New features, security, usability and UI enhancements.\nFeatures Add initial implementation of Server Sent Events parsing on web client Performance Add initial load tests for envoy rate limiting feature Add nghttp2 to support h2/h2c for hypercorn Implement initial async engine for llm inference Run vllm latency benchmarks on A100_40G on tp1|2|4|8 configuration Bug Fixes and Other Changes Add active health checks to envoy cluster and endpoint(s) Add auto-scroll to mobile viewport on llm streaming responses Add error handling for llm-proxy streaming responses Add initial envoy configuration targeting tritonserver as upstream Amend timestamp format for llm history viewing Client authentication error with token timeout and llm history Evaluate streaming responses from cloud run and compute engine Merge sse client with fetch client to enable streaming responses Migrate llm-tritonserver-streaming dependencies to latest Migrate streaming llm-tritonserver to latest v23.11 Rectify the timestamp order of llm past responses on client Refactor client text scale factor to text scaler Revert tritonclient protocol from grpc to http Miscellaneous Add initial sanity checks, preprocessing and postprocessing for llm Add microphone detection to on-device stt inference Only render prompt hints on first visit to web client Replace streambuilder with listenablebuilder for streaming responses Release v0.25 New features, security, usability and UI enhancements.\nFeatures On-demand local audio generation from llm text outputs Add initial implementation of on-device text-to-speech(TTS) Add initial automatic-speech-recognition(ASR) inference pipeline Add initial implementation of voice feature for web client Performance Run vllm latency benchmarks on distributed infrastructure Migrate tritonclient protocol from http to grpc Security Migrate csp policy from allowlist to strict Bug Fixes and Other Changes Amend state management between theme mode switches Absent microphone input on-device tts inference Remove setstate from both on-device stt and tts inference loops Adopt non-quantized tts model as workaround for audio distortion Miscellaneous Add nvtop build steps to gpu instance start up script Add ui messages about on-device model processing Add downloading status and message to on-device stt and tts models Migrate llm-proxy and llm-tritonserver dependencies to latest Add on-device model(s) download permission request and message Amend ui dimensions for dome page mobile viewport Add initial state management for llm extended functionalities ui Migrate web client dependencies to latest Release v0.24 New features, performance, usability and UI enhancements.\nFeatures Integrate inference engine vllm(PagedAttention) with langchain Migrate llm instruct model to mistral 7b finetuned with openorca Performance Add grpc/http compression using brotli and gzip as fallback Security Add initial allow list to data anonymization Add initial privacy feature for user data anonymization Adopt a suitable unified objectives principle to guide llm output Add initial prompt injection classifier to llm-tritonserver Add client ui for accepting OSS license(s) to enable model usage Bug Fixes and Other Changes Remove duplicate whitespaces in llm output vllm input prompt length exceeds limit warning Sign in current user with custom token after license acceptance UI not displaying generated text from llm inference Add error handling to client access control Miscellaneous Increase speed of text animation for llm output for fast readers Bump Flutter SDK and client dependencies to latest Migrate middleware arch to python:3.11-slim-bookworm Amend lighthouse configurations to latest v11.2 Add bloom license to client assets Add license check for llm local inference on web client Add license(s) agreement to user custom claims Release v0.23 New features, performance, usability and UI enhancements.\nFeatures Add \u0026lsquo;bad_words_ids\u0026rsquo; to llm output logits manipulation Add storywriter prompt hints to guide responsible behavior Increase storywriter text field height Performance Add initial trition inference server configuration for llm-cpu Add model warmup to triton server Implement local llm inference on nvidia compute capability \u0026gt;=8.0 Remove unnecessary js scripts during first load of web app Revert local device generation strategy back to contrastive search Bug Fixes and Other Changes Replace adaptive scaffold from dome page with native scaffold Temporarily remove fixed height container for llm-storywriter text field Refactor Amend llm server to http proxy targeting VMs Miscellaneous Add initial gpu build of llm + tritonserver Add startup script for gpu enabled VMs Amend api gateway endpoint from test to live Amend endpoints of api gateway for testing and production Amend utility script for starting VM instance with attached gpu Increase sequence length of quantized llm-storywriter to 1024 UX enhancements when selecting or removing models on dome page Release v0.22 New features, performance, security, usability and UI enhancements.\nFeatures Add initial custom claims json structure Implement access control utility function to web client Initial implementation of access control for frontend Add initial access control utility to web client Add initial implementation of CSP, COOP and COEP Add email handler ui for large screen(laptop viewport) Add email handler for medium screen(tablet viewport) Add \u0026lsquo;recoverEmail\u0026rsquo; ui to email handler page for desktop viewport Add handler for \u0026lsquo;resetPassword\u0026rsquo; Add initial email verification screen to mobile viewport Performance Add initial generic gpu and tensorrt optimizations Security Add cloud firewall rules for ingress traffic to vm Add domains to CSP connect-src directive Remove user permissions from authorization server(ory network) Write permissions on firebase authentication trigger Amend jwt payload on firebase authentication triggers(user-create) Add initial live permisisons policies Add ory network endpoint for permissions check Add initial permissions checks to llm endpoint Add initial access control to llm inference Add initial access control to mobile appbar Add initial enhanced enums to frontend permissions set Add initial permissions set to access control Add initial access control to account page login section Bug Fixes and Other Changes Migrate frontend dependencies to latest Initialization of llm worker on widget first load State management on spinning indicator of text toxicity widget Add local fallback for llm inference Amend read-write:api permissions for cloud function \u0026lsquo;user_create\u0026rsquo; Move workbox navigation preload to start of workbox plugins Amend iframe for status page to be credentialless Documentation Add initial design docs for implementating access control Miscellaneous Add initial changelog generator \u0026lsquo;git-cliff\u0026rsquo; Remove changelog from revision tracking Amend configuration in cliff.toml Amend CSP directives with updated api gateway endpoint Migrate VM deployment to gcp business account Add primitive method of migrating database entries Issues with building web pwa on Flutter v3.13.0, downgrade to v3.10.6 Add autoscaling policy based on cloud run middleware HTTP requests Add health checks for autohealing and load balancing. Add startup script to existing VMs Add internal load balancer for regional backend VMs Add utility script for configurating internal load balancer Add utilty scripts for managing multiple VMs Add utility scripts for cloud run and virtual machine deployment Amend cloud run utility script Add utility script for deploying cloud run service Evaluate VM infrastructure for hosting llm inference endpoint Amend env files for cloud function \u0026lsquo;user_create\u0026rsquo; Test deployment of updated cloud function \u0026lsquo;user_create\u0026rsquo; Add build scripts for cloud function \u0026lsquo;user_create\u0026rsquo; Update email hash on email address change Add cloudflare endpoint to robots.txt disallow field Amend confirmation button text color of bottom sheet Amend queue sequence of setState \u0026lsquo;_isInitialized\u0026rsquo; of llm worker Remove unneccesary listeners for worker events Amend ui elements on account page medium screen Refactor Add web client worker initialization function to qna worker Add web client async worker initialization to text toxicity widget Add worker initialization to penguins worker Add worker initialization function to autompg inference script Amend snackbar ui in text gen widget to be adaptive Remove custom profile screen from account page medium and large body Replace custom profile screen with a simpler layout Amend ui dimension of \u0026lsquo;showChangeEmailAddressDialog\u0026rsquo; Release v0.21 New features, security, usability and UI enhancements.\nFeatures Add redesign of dome page for mobile portrait window sizes. Add history feature for text generation. Add local on-device onnx model for LLM text generation task. Security Add encryption(WebCryptoAPI) to web storage for data integrity. Deprecate \u0026lsquo;X-Frame-Options\u0026rsquo; header in favor of CSP directives \u0026lsquo;frame-src\u0026rsquo; and \u0026lsquo;frame-ancestors\u0026rsquo; Bug Fixes and Other Changes Bug Fixes and Other Change\nMigrate frontend dependencies to latest. bazel_worker 1.0.3 (was 1.0.2) beamer 1.5.6 (was 1.5.5) build 2.4.1 (was 2.4.0) build_modules 5.0.3 (was 5.0.2) build_resolvers 2.2.1 (was 2.2.0) build_runner 2.4.6 (was 2.4.5) build_web_compilers 4.0.4 (was 4.0.3) dart_jsonwebtoken 2.8.2 (was 2.8.0) dart_style 2.3.2 (was 2.3.1) dots_indicator 3.0.0 (was 2.1.2) firebase_ui_auth 1.5.0 (was 1.4.3) firebase_ui_oauth 1.4.4 (was 1.4.3) firebase_ui_oauth_google 1.2.4 (was 1.2.3) flutter_lints 2.0.2 (was 2.0.1) font_awesome_flutter 10.5.0 (was 10.4.0) introduction_screen 3.1.9 (was 3.1.8) protobuf 3.0.0 (was 2.1.0) shared_preferences_android 2.2.0 (was 2.1.4) shared_preferences_foundation 2.3.0 (was 2.2.2) shared_preferences_linux 2.3.0 (was 2.2.0) shared_preferences_platform_interface 2.3.0 (was 2.2.0) shared_preferences_web 2.2.0 (was 2.1.0) shared_preferences_windows 2.3.0 (was 2.2.0) sidebarx 0.16.0 (was 0.15.0) source_gen 1.4.0 (was 1.3.2) source_helper 1.3.4 (was 1.3.3) url_launcher_android 6.0.36 (was 6.0.35) url_launcher_platform_interface 2.1.3 (was 2.1.2) win32 5.0.5 (was 4.1.4) Migrate additional frontend dependencies to latest. google_sign_in_android 6.1.17 (was 6.1.16) json_serializable 6.7.1 (was 6.7.0) shared_preferences 2.2.0 (was 2.1.2) flutter_adaptive_scaffold 0.1.5 (was 0.1.4) Migrate Flutter SDK to v3.10.6 Migrate additional frontend dependencies to latest. dots_indicator 2.1.2 (was 3.0.0) (3.0.0 available) flutter_adaptive_scaffold 0.1.6 (was 0.1.5) freezed 2.4.1 (was 2.3.5) freezed_annotation 2.4.1 (was 2.2.0) google_sign_in_android 6.1.18 (was 6.1.17) introduction_screen 3.1.11 (was 3.1.9) path_provider_foundation 2.2.4 (was 2.2.3) shared_preferences_foundation 2.3.2 (was 2.3.0) url_launcher 6.1.12 (was 6.1.11) url_launcher_macos 3.0.6 (was 3.0.5) url_launcher_web 2.0.18 (was 2.0.17) url_launcher_windows 3.0.7 (was 3.0.6) xdg_directories 1.0.1 (was 1.0.0) Migrate additional frontend dependencies to latest. _flutterfire_internals 1.3.4 (was 1.3.3) firebase_analytics 10.4.4 (was 10.4.3) firebase_analytics_platform_interface 3.6.4 (was 3.6.3) firebase_analytics_web 0.5.4+4 (was 0.5.4+3) firebase_auth 4.7.0 (was 4.6.3) firebase_auth_platform_interface 6.16.0 (was 6.15.3) firebase_auth_web 5.6.0 (was 5.5.3) firebase_core 2.15.0 (was 2.14.0) firebase_ui_auth 1.6.0 (was 1.5.0) firebase_ui_oauth 1.4.5 (was 1.4.4) firebase_ui_oauth_google 1.2.5 (was 1.2.4) Migrate additional frontend dependencies to latest. http 1.1.0 (was 0.13.6) google_fonts 5.1.0 (was 4.0.5) Migrate additional frontend dependencies to latest. firebase_auth 4.7.1 (was 4.7.0) firebase_auth_web 5.6.1 (was 5.6.0) firebase_ui_auth 1.6.1 (was 1.6.0) firebase_ui_oauth 1.4.6 (was 1.4.5) firebase_ui_oauth_google 1.2.6 (was 1.2.5) plugin_platform_interface 2.1.5 (was 2.1.4) sidebarx 0.16.1 (was 0.16.0) url_launcher_android 6.0.37 (was 6.0.36) Release v0.20 New features, security, usability and UI enhancements.\nFeatures Add initial implementation of ticketing system(Jira) and login-free service desk for paid users. Add Pixel phone lineup as initial template for mobile platform. Add initial usability enhancements(installation and update prompts). Performance Amend web workers WebAssembly(Wasm) configuration for \u0026rsquo;tfjs-backend-wasm\u0026rsquo;. Add assisted text generation. Convert STT, LLM to onnx format and optimizations for x86 platform. Bug Fixes and Other Changes Migrate Flutter SDK to v3.10.5 latest. Migrate web client middleware dependencies to latest. Migrate llm dependencies to latest. Migrate frontend dependencies to latest. _fe_analyzer_shared 61.0.0 (was 60.0.0) analyzer 5.13.0 (was 5.12.0) args 2.4.2 (was 2.4.1) build_runner 2.4.5 (was 2.4.4) build_runner_core 7.2.10 (was 7.2.9) built_value 8.6.1 (was 8.6.0) csslib 1.0.0 (was 0.17.3) freezed 2.3.5 (was 2.3.4) google_sign_in 6.1.4 (was 6.1.3) google_sign_in_android 6.1.15 (was 6.1.14) google_sign_in_web 0.12.0+2 (was 0.12.0+1) html 0.15.4 (was 0.15.3) mockito 5.4.2 (was 5.4.1) path_provider_windows 2.1.7 (was 2.1.6) shared_preferences 2.1.2 (was 2.1.1) win32 5.0.3 (was 4.1.4) Migrate additional frontend dependencies to latest. _flutterfire_internals 1.3.3 (was 1.3.2) firebase_analytics 10.4.3 (was 10.4.2) firebase_analytics_platform_interface 3.6.3 (was 3.6.2) firebase_analytics_web 0.5.4+3 (was 0.5.4+2) firebase_auth 4.6.3 (was 4.6.2) firebase_auth_platform_interface 6.15.3 (was 6.15.2) firebase_auth_web 5.5.3 (was 5.5.2) firebase_core 2.14.0 (was 2.13.1) firebase_core_web 2.6.0 (was 2.5.0) firebase_dynamic_links 5.3.3 (was 5.3.2) firebase_dynamic_links_platform_interface 0.2.6+3 (was 0.2.6+2) firebase_ui_auth 1.4.3 (was 1.4.2) firebase_ui_oauth 1.4.3 (was 1.4.2) firebase_ui_oauth_google 1.2.3 (was 1.2.2) flutter_svg 2.0.7 (was 2.0.6) google_sign_in_android 6.1.16 (was 6.1.15) sidebarx 0.16.0 (was 0.15.0) vector_graphics 1.1.7 (was 1.1.6) vector_graphics_codec 1.1.7 (was 1.1.6) vector_graphics_compiler 1.1.7 (was 1.1.6) Release v0.19 New features, security and UI enhancements.\nFeatures Add initial large language model(LLM) for open ended text generation. Add initial adaptive scaffold to web client pages targeting mobile and tablet window sizes. Security Add authentication utility for token management in web client. Breaking Changes Migrate Dart to v3 and Flutter SDK to v3.10 latest. Bug Fixes and Other Changes Migrate frontend dependencies to latest. firebase_analytics to v10.3.0 firebase_auth to v4.5.0 firebase_auth_web to v5.4.0 firebase_core to v2.11.0 firebase_core_platform_interface to v4.7.0 firebase_ui_auth to v1.3.0 firebase_ui_localizations to v1.4.0 firebase_ui_oauth to v1.3.0 firebase_ui_oauth_google to v1.1.5 html to v0.15.3 http to v0.13.6 json_annotation to v4.8.1 logging to v1.1.1 package_info_plus to v4.0.0 pointer_interceptor to v0.9.3+4 shared_preferences to v2.1.1 url_launcher to v6.1.11 url_launcher_web to v2.0.16 Migrate additional frontend dependencies to latest. beamer 1.5.5 (was 1.5.4) built_value 8.6.0 (was 8.5.0) csslib 0.17.3 (was 0.17.2) google_sign_in 6.1.1 (was 6.1.0) mockito 5.4.1 (was 5.4.0) path_provider_linux 2.1.11 (was 2.1.10) url_launcher_web 2.0.17 (was 2.0.16) Migrate additional frontend dependencies to latest. Flutter SDK 3.10.2 (was 3.10.1) build_runner_core 7.2.9 (was 7.2.8) google_sign_in 6.1.2 (was 6.1.1) google_sign_in_web 0.12.0+1 (was 0.12.0) graphs 2.3.1 (was 2.3.0) logging 1.2.0 (was 1.1.1) Migrate additional frontend dependencies to latest. _fe_analyzer_shared 61.0.0 (was 60.0.0) _flutterfire_internals 1.3.2 (was 1.3.1) analyzer 5.13.0 (was 5.12.0) firebase_analytics 10.4.2 (was 10.4.1) firebase_analytics_platform_interface 3.6.2 (was 3.6.1) firebase_analytics_web 0.5.4+2 (was 0.5.4+1) firebase_auth 4.6.2 (was 4.6.1) firebase_auth_platform_interface 6.15.2 (was 6.15.1) firebase_auth_web 5.5.2 (was 5.5.1) firebase_core 2.13.1 (was 2.13.0) firebase_dynamic_links 5.3.2 (was 5.3.1) firebase_dynamic_links_platform_interface 0.2.6+2 (was 0.2.6+1) firebase_ui_auth 1.4.2 (was 1.4.1) firebase_ui_oauth 1.4.2 (was 1.4.1) firebase_ui_oauth_google 1.2.2 (was 1.2.1) google_sign_in 6.1.3 (was 6.1.2) google_sign_in_platform_interface 2.4.1 (was 2.4.0) package_info_plus 4.0.2 (was 4.0.1) url_launcher_android 6.0.35 (was 6.0.34) Migrate additional frontend dependencies to latest. Flutter SDK 3.10.3 (was 3.10.2) build_modules 5.0.2 (was 4.0.7) build_web_compilers 4.0.3 (was 3.2.7) code_builder 4.5.0 (was 4.4.0) lints 2.1.1 (was 2.1.0) Release v0.18 New features, security and UI enhancements.\nFeatures Add initial text animations on web client inference output states(success, error). Migrate STT to HuggingFace transformers and diffusers library. Migrate TTS to HuggingFace transformers and diffusers library. Security Add email hashing with salt randomization and personalization values to database operation \u0026lsquo;set-profile\u0026rsquo; and authentication trigger \u0026lsquo;user-create\u0026rsquo; Bug Fixes and Other Changes Migrate Flutter SDK to v3.7.12 latest. Migrate frontend dependencies to latest. _fe_analyzer_shared 59.0.0 (was 58.0.0) _flutterfire_internals 1.1.1 (was 1.1.0) analyzer 5.11.1 (was 5.10.0) firebase_analytics 10.2.1 (was 10.2.0) firebase_analytics_platform_interface 3.4.1 (was 3.4.0) firebase_analytics_web 0.5.2+1 (was 0.5.2) firebase_auth 4.4.2 (was 4.4.1) firebase_auth_platform_interface 6.13.1 (was 6.13.0) firebase_auth_web 5.3.2 (was 5.3.1) firebase_core 2.10.0 (was 2.9.0) firebase_core_platform_interface 4.6.0 (was 4.5.3) firebase_core_web 2.3.0 (was 2.2.2) firebase_database 10.1.1 (was 10.1.0) firebase_database_platform_interface 0.2.3+1 (was 0.2.3) firebase_database_web 0.2.2+1 (was 0.2.2) firebase_dynamic_links 5.1.1 (was 5.1.0) firebase_dynamic_links_platform_interface 0.2.4+1 (was 0.2.4) firebase_ui_auth 1.2.3 (was 1.2.1) firebase_ui_localizations 1.3.0 (was 1.2.0) firebase_ui_oauth 1.2.3 (was 1.2.1) firebase_ui_oauth_google 1.1.3 (was 1.1.1) firebase_ui_shared 1.2.0 (was 1.1.0) flutter_keyboard_visibility 5.4.1 (was 5.4.0) google_fonts 4.0.4 (was 4.0.3) google_identity_services_web 0.2.1 (was 0.2.0) google_sign_in 6.1.0 (was 6.0.2) google_sign_in_android 6.1.14 (was 6.1.9) google_sign_in_platform_interface 2.4.0 (was 2.3.1) google_sign_in_web 0.12.0 (was 0.11.0+2) introduction_screen 3.1.8 (was 3.1.7) mockito 5.4.0 (was 5.3.2) package_info_plus 3.1.2 (was 3.1.0) path_provider 2.0.14 (was 2.0.13) path_provider_android 2.0.27 (was 2.0.24) path_provider_foundation 2.2.2 (was 2.2.1) path_provider_windows 2.1.6 (was 2.1.5) shared_preferences 2.1.0 (was 2.0.18) shared_preferences_android 2.1.4 (was 2.1.1) shared_preferences_foundation 2.2.1 (was 2.2.0) shared_preferences_linux 2.2.0 (was 2.1.5) shared_preferences_platform_interface 2.2.0 (was 2.1.1) shared_preferences_web 2.1.0 (was 2.0.6) shared_preferences_windows 2.2.0 (was 2.1.5) url_launcher_android 6.0.31 (was 6.0.27) url_launcher_ios 6.1.4 (was 6.1.3) url_launcher_linux 3.0.5 (was 3.0.4) url_launcher_macos 3.0.5 (was 3.0.4) url_launcher_windows 3.0.6 (was 3.0.5) web_socket_channel 2.4.0 (was 2.3.0) win32 4.1.3 (was 3.1.4) Migrate web client middleware dependencies to latest. aiohttp v3.8.3 to v3.8.4 APScheduler v3.10.0 to v3.10.1 attrs v22.2.0 to v23.1.0 charset-normalizer v2.1.1 to v3.1.0 email-validator v1.3.1 to v2.0.0.post2 fastapi v0.95.0 to v0.95.1 firebase-admin v6.0.1 to v6.1.0 google-api-python-client v2.75.0 to v2.86.0 google-auth v2.16.0 to v2.17.3 google-cloud-firestore v2.9.1 to v2.11.1 google-resumable-media v2.4.1 to v2.5.0 googleapis-common-protos v1.58.0 to v1.59.0 grpcio v1.51.1 to v1.54.0 grpcio-status v1.51.1 to v1.54.0 httpcore v0.16.3 to v0.17.0 httplib2 v0.21.0 to v0.22.0 httpx v0.23.3 to v0.24.0 loguru v0.6.0 to v0.7.0 msgpack v1.0.4 to v1.0.5 openai v0.26.4 to v0.27.4 orjson v3.8.5 to v3.8.10 packaging v23.0 to v23.1 pip v23.1.1 to v23.1.2 protobuf v4.21.12 to v4.22.3 pyasn1 v0.4.8 to v0.5.0 pyasn1-modules v0.2.8 to v0.3.0 pydantic v1.10.4 to v1.10.7 python-dotenv v0.21.1 to v1.0.0 pytz v2022.7.1 to v2023.3 requests v2.28.2 to v2.29.0 rfc3986 v1.5.0 to v2.0.0 setuptools v67.1.0 to v67.7.2 stripe v5.0.0 to v5.4.0 typing_extensions v4.4.0 to v4.5.0 yarl v1.8.2 to v1.9.2 Release v0.17.1 Security fixes for backend application middleware and microservices.\nBug Fixes and Other Changes Fix penguins inference by scaling inputs between the range of 0~1. Release v0.17 Migrate remaining models to D.O.M.E, various performance and UI enhancements.\nPerformance Add TensorFlow.js WebAssembly(Wasm) runtime backend to remaining web workers of web client. Bug Fixes and Other Changes Migrate frontend dependencies to latest. Migrate additional frontend dependencies to latest. Migrate Flutter SDK to v3.7.8 latest. Add delay to tooltip display. Refactor home page for responsive layout. Add initial focus node to single text field \u0026lsquo;onSubmitted\u0026rsquo; action for regression housing Migrate text toxicity widget to dome page. Migrate Speech-to-Text(STT) widget to dome page. Migrate Text-to-Speech(TTS) widget to dome page. Migrate Questions-and-Answers(QNA) widget to dome page. Migrate regression autompg widget to dome page. Migrate classification penguins widget to dome page. Refactor account page change email dialog UI. Refactor account page sections of login, forgot-password and registration. Release v0.16 New features, D.O.M.E(data-driven optimization for model engineering), various security and UI enhancements.\nFeatures Conceptualize, design, prototype and preview D.O.M.E UI. Migrate web client widgets to Material 3 guidelines. Merge account side bar into home page side menu bar. Security Add initial build attestations software-bill-of-materials(SBOM) and provenance for software supply chain security. Bug Fixes and Other Changes Migrate frontend dependencies to latest. Flutter SDK to v3.7.0 google_fonts to v4.0.1 json_annotation to v4.8.0 build_web_compilers to v3.2.7 freezed to v2.3.2 hive_generator to v2.0.0 json_serializable to v6.6.0 TensorFlow.js to v4.2.0 coverage to v1.6.3 firebase_analytics to v10.1.1 firebase_auth to v4.2.6 firebase_core to v2.5.0 firebase_database to v10.0.10 firebase_dynamic_links to v5.0.12 firebase_ui_auth to v1.1.10 firebase_ui_localizations to v1.1.1 firebase_ui_oauth to v1.1.10 firebase_ui_oauth_google to v1.0.17 font_awesome_flutter to v10.4.0 google_fonts to v4.0.3 json_serializable to v6.6.1 package_info_plus to v3.0.3 pointer_interceptor to v0.9.3+4 url_launcher to v6.1.9 xdg_directories to v1.0.0 Migrate backend app middleware dependencies to latest. debian to v11.6-slim aiohttp to v3.8.3 apscheduler to v3.10.0 beautifulsoup4 to v4.11.2 cachecontrol to v0.12.11 cachetools to v5.3.0 email-validator to v1.3.1 fastapi to v0.89.1 google-api-python-client to v2.75.0 google-auth to v2.16.0 google-cloud-firestore to v2.9.1 google-cloud-logging to v3.5.0 google-resumable-media to v2.4.1 googleapis-common-protos to v1.58.0 httpx to v0.23.3 openai to v0.26.4 orjson to v3.8.5 packaging to v23.0 proto-plus to v1.22.2 python-dotenv to v0.21.1 pytz to v2022.7.1 requests to v2.28.2 rfc3986 to v1.5.0 setuptools to v67.1.0 urllib3 to v1.26.14 Migrate backend STT dependencies to latest and amend tests. cachetools to v5.3.0 editdistance to v0.6.2 fastapi to v0.89.1 h2 to v4.1.0 hydra-core to v1.3.1 hypercorn to v0.14.3 ipywidgets to v8.0.4 marshmallow to v3.19.0 matplotlib to v3.6.3 orjson to v3.8.5 pandas to v1.5.3 protobuf to \u0026gt;=v3.20.1 pynini to v2.1.5 pytorch-lightning to \u0026gt;=v1.6.5 unidecode to v1.3.6 youtokentome to v1.0.5 Migrate backend TTS dependencies to latest and amend tests. fastapi to v0.89.1 boto3 to v1.26.62 cachetools to v5.3.0 editdistance to v0.6.2 fastapi to v0.89.1 frozendict to v2.3.4 h5py to v3.8.0 inflect to v6.0.2 ipython to v8.9.0 matplotlib to v3.6.3 nltk to v3.8.1 numba to v0.56.4 orjson to v3.8.5 pandas to v1.5.3 rapidfuzz to v2.13.7 regex to v2022.10.31 sacrebleu to v2.3.1 sentencepiece to v0.1.97 torchmetrics to v0.6.2 unidecode to v1.3.6 wandb to v0.13.9 webdataset to v0.2.31 Migrate cloud functions dependencies to latest and amend tests. user_create user_delete Switch off failing tests for frontend web client after migrating to Flutter SDK v3.7 branch. add stack_trace library for improved debugging experience update test coverage statistics Fix container background flicker of news widget on home page. Fix jitter of left side menu icons by removing deferred locations. Release v0.15 New features, search engine optimization(SEO), performance, security and UI enhancements.\nFeatures Add initial implementation of moderation endpoint from OpenAI. Add initial localizations(us, ja, ko, zh) for user interface(UI). Add initial SEO. Performance Add web resource hints for critical and subsequent needs. Add initial cache eviction policies for service worker caches. Security Refactor logging infrastructure and functionality. Add initial structured logging and customized events to core services. Add initial suspicious and malicious events logging to core services. Add initial structured logging and customized events to sensitive operations. Refactor implementation of Firebase Analytics and create custom events. Refactor token authentication for client and backend admin SDK. Bug Fixes and Other Changes Migrate Flutter dependencies to latest. firebase_analytics to v10.1.0 firebase_auth to v4.2.4 firebase_core to v2.4.1 firebase_database to v10.0.9 firebase_ui_auth to v1.1.6 firebase_ui_localizations to v1.0.2 firebase_ui_oauth to v1.1.6 firebase_ui_oauth_google to v1.0.13 font_awesome_flutter to v10.3.0 introduction_screen to v3.1.2 provider to v6.0.5 Migrate application middleware dependencies to latest. asgiref to v3.6.0 attrs to v22.2.0 certifi to v2022.12.7 fastapi to v0.88.0 google-api-core to v2.11.0 google-api-python-client to v2.70.0 google-auth to v2.15.0 google-cloud-firestore to v2.7.3 google-cloud-logging to v3.4.0 grpcio-status to v1.51.1 grpcio to v1.51.1 httpx to v0.23.2 lxml to v4.9.2 multidict to v6.0.4 orjson to v3.8.3 packaging to v22.0 protobuf to v4.21.12 pydantic to v1.10.4 pytz to v2022.7 stackprinter to v0.2.10 starlette to v0.22.0 starlette_context to v0.3.5 Amend UI layout on service pages targeting tablet(1366x768) and laptop(1920x1080) screen resolutions. Release v0.14 Performance enhancements, various UI fixes and reduced overall build size to 13Mb(~60% reduction).\nFeatures Add initial browser feature detection for web APIs and capabilities. Performance Implement initial automated JSON de/serialization for client request and response. Implement deferred loading of libraries to reduce initial startup time from average 7.18 to 5.35 seconds(26% reduction). Migrate large icons file type to WebP format. Add initial lab/field performance budget for mobile profile. Migrate XHR to Fetch API, using separate threads for HTTP requests. Add initial custom configuration of service worker using workbox with navigation preload. Add additional workbox modules and plugins to enhance user experience. Migrate non-UI work to dedicated web workers for data processing. Migrate to HTTP/2 server for application middleware and microservices. Migrate static media(images, icons) and fonts to Cloudflare R2 object store. Security Migrate to Manifest V3 syntax and add content security policy(CSP) as secondary level of XSS and framing attacks mitigation. Add basic content security policy to application middleware and core API services. Bug Fixes and Other Changes Migrate Flutter dependencies to latest.\nfirebase_analytics to v10.0.6 firebase_auth to v4.1.4 firebase_core to v2.3.0 firebase_core_platform_interface to v4.5.2 firebase_database to v10.0.6 flutterfire_ui to v0.4.3+20 html to v0.15.1 package_info_plus to v3.0.2 url_launcher to v6.1.7 \u0026mdash; development dependencies \u0026mdash;\njson_serializable to v6.5.4 Migrate web and TensorFlow.js dependencies to latest.\ntensorflow/tfjs to v4.1.0 Migrate application server dependencies to latest.\nanyio to v3.6.2 apscheduler to v3.9.1.post1 charset-normalizer to v2.1.1 firebase-admin to v6.0.1 frozenlist to v1.3.3 google-api-python-client to v2.66.0 google-auth to v2.14.1 googleapis-common-protos to v1.57.0 grpcio-status to v1.50.0 grpcio to v1.50.0 httplib2 to v0.21.0 orjson to v3.8.2 protobuf to v4.21.9 pytz to v2022.6 setuptools to v65.6.3 starlette to v0.21.0 stripe to v5.0.0 urllib3 to v1.26.13 Release v0.13.1 Security update and bug fixes.\nSecurity Security update of backend dependencies. mistune to \u0026gt;=v2.0.3 nltk to v3.6.6 protobuf to \u0026gt;=3.20.1 setuptools to v65.5.1 wheel to \u0026gt;=0.38.0 Bug Fixes and Other Changes Migrate Flutter SDK to latest v3.3.9. Fix error when using private variable setters in mixins on dart web link. Type parameter nullability performs incorrectly in factory constructors link. Release v0.13 Various UI and stability enhancements.\nFeatures Migrate Stripe API version to latest 2022-11-15. Security Add integration testing for backend dependencies. Bug Fixes and Other Changes Migrate to latest dependencies for Firebase authentication cloud functions. Migrate to latest dependencies for Text-to-Speech service. Migrate to latest dependencies for Speech-to-Text service. Release v0.12 UI and security enhancements.\nFeatures Migrate Stripe API version to 2022-08-01. Performance Add custom JSON deserialization for improved performance over Python standard library json module. Security Add server side input sanitization and validation. Add request body validation for consumption by service APIs. Bug Fixes and Other Changes Refactor core service pages.\nregression classification generative Refactor app bar.\nMigrate Flutter dependencies to latest.\nasync to v2.9.0 beamer to v1.5.3 fake_async to v1.3.1 firebase_analytics to v9.3.8 firebase_auth to v3.11.2 firebase_core to v1.24.0 firebase_database to v9.1.7 flutterfire_ui to v0.4.3+14 font_awesome_flutter to v10.2.1 json_annotation to v4.7.0 logging to v1.1.0 package_info_plus to v2.0.0 provider to v6.0.4 sidebarx to v0.14.0 url_launcher to v6.1.6 \u0026mdash; development dependencies \u0026mdash;\nbuild_runner to v2.3.0 mockito to v5.3.2 Migrate server dependencies to latest.\naiohttp to v3.8.3 certifi to v2022.9.24 fastapi to v0.85.0 firebase-admin to v6.0.0 frozenlist to v1.3.1 google-api-core to v2.10.2 google-api-python-client to v2.64.0 google-auth to v2.12.0 google-cloud-firestore to v2.7.2 google-cloud-logging to v3.2.5 google-crc32c to v1.5.0 google-resumable-media to v2.4.0 grpcio to v1.49.1 grpcio-status to v1.49.1 h11 to v0.14.0 httptools to v0.5.0 idna to v3.4 orjson to v3.8.0 proto-plus to v1.22.1 protobuf to v4.21.7 pydantic to v1.10.2 python-dotenv to v0.21.0 pytz to v2022.4 sniffio to v1.3.0 stripe to v4.2.0 typing_extensions to v4.4.0 uvicorn to v0.18.3 uvloop to v0.17.0 Release v0.11.1 Bug fixes and other changes.\nMigrate Flutter to latest(v3.3.3). Security vulnerability in dart:uri core library link. Avoid CFE crashes when input contains invalid super parameters usage link. Fix error handling for listening to FirebaseAuth streams. Fix app bar null state. Fix various sections on email handler page. verifyEmail resetPassword recoverEmail Fix pointer events being swallowed by HtmlElementView on status page. Fix undismissable intro screen dialog when rendering over HTMLElementView. Add spinning indicator for status page. Release v0.11 UI and stability enhancements.\nFeatures Add global text selection to core pages. Add version number to menu shortcut popup. Bug Fixes and Other Changes UI improvements for menu shortcuts. Add initial Flutter run scripts with configurations. Refactor autocomplete search field in web client. Refactor error handling in web client. Refactor home menu side bar in web client. Refactor web application manifest. Release v0.10.1 Bug fixes and other changes.\nAmend client-side verification of user input in text fields. Release v0.10 Update dependencies to latest and security enhancements.\nPerformance Refactor index.html to customize initialization and utilize script flutter.js. Security Add package:logging for client structured logging. Add initial data and field validation for asgi server and utility modules. Bug Fixes and Other Changes Update Flutter dependencies to latest:\nbeamer to v1.5.2 firebase_analytics to v9.3.2 firebase_database to v9.1.2 firebase_auth to v3.6.4 firebase_core to v1.21.0 flutterfire_ui to v0.4.3+6 json_annotation to v4.6.0 mockito to v5.3.0 url_launcher to v6.1.5 url_launcher_web to v2.0.13 \u0026mdash; development dependencies \u0026mdash;\nbuild_runner to v2.2.0 json_serializable to v6.3.1 Update Web and TensorFlow.js dependencies to latest:\neslint to v8.22.0 typescript-eslint/eslint-plugin to v5.33.1 typescript-eslint/parser to v5.33.1 flow-bin to v0.181.2 flow-remove-types to v2.185.1 tensorflow/tfjs to v3.19.0 Update ASGI server dependencies to latest:\nattrs to v22.1.0 cachetools to v5.2.0 certifi to v2022.6.15 charset-normalizer to v2.1.1 click to v8.1.3 fastapi to v0.80.0 google-api-python-client to v2.58.0 google-auth to v2.11.0 google-cloud-core to v2.3.2 google-cloud-firestore to v2.6.1 google-cloud-logging to v3.2.2 grpcio-status to v1.47.0 grpcio to v1.47.0 lxml to v4.9.1 orjson to v3.7.12 proto-plus to v1.22.0 protobuf to v4.21.5 pydantic to v1.9.2 python-dotenv to v0.20.0 pytz to v2022.2.1 rsa to v4.9 stripe to v4.1.0 typing_extensions to v4.3.0 urllib3 to v1.26.12 uvicorn to v0.18.2 yarl to v1.8.1 Refactor GCP cloud functions user_create and user_delete.\nRelease v0.9.1 Bug fixes and other changes.\nFix audio element rebuild on input changes. Amend structured logging on client. Release v0.9 UI and security enhancements.\nSecurity Add optional social provider - Google. Add optional user activity logs. Bug Fixes and Other Changes Refactor Firebase auth mock file.\nUpdate Flutter dependencies:\nanimations to v2.0.3 beamer to v1.4.1 expandable_text to v2.3.0 fake_async to v1.3.0 firebase_auth to v3.4.1 firebase_core to v1.13.1 flutterfire_ui to v0.4.2+2 google_sign_in to v5.3.3 js to v0.6.4 mockito to v5.2.0 provider to v6.0.2 shared_preferences to v2.0.15 shared_preferences_web to v2.0.4 url_launcher to v6.1.4 url_launcher_web to v2.0.12 firebase_analytics to v9.1.12 Update dev dependencies:\njson_serializable to v6.2.0 test to v1.21.1 Update web dependencies:\ntensorflow/tfjs to v3.18.0 flow-remove-types to v2.181.2 idb to v7.0.2 npm to v8.13.2 util to v0.12.4 Update backend dependencies:\nPython to v3.9.x Remove navigation rail due to unexpected bug.\nRelease v0.8 Integration with external tooling and various enhancements.\nFeatures Integration with landing page conversion using Carrd. Persistent state management across page reloads. Security Criteria checks on core endpoints. Dedicated application server behind API Gateway. Amend service endpoints to be private requiring authenticated access. Add request body validation in API gateway. Bug Fixes and Other Changes Add initial CI/CD nightly builds. Add Firestore as database. Standardize service tiers and endpoints to Basic, Standard and Pro. Various security fixes. Various stability fixes. Various UI/UX improvements. Refactor Flutter client. Upgrade various dependencies. Release v0.7.1 Bug fixes and other changes.\nAdd workaround on canvaskit\u0026rsquo;s issue with loading fonts and icons from CDNs. Release v0.7.0 Utilize GPU as default option for running TensorFlowJS models.\nFeatures Right navigation rail - RSS text feed. Performance Set WebGL/2 default backend for TensorFlowJS models. Security Implement API rate limits on web client and API Gateway. Bug Fixes and Other Changes Add HTTP request retries and time-out periods on failure modes(301, 408, 503, etc) with back-offs. Migrate to Beamer v1.3.0. Migrate to canvaskit-wasm v0.31.0 and fix UI render with window resizing. Migrate to tensorflow-js v3.12.0. Release v0.6.1 Bug fixes and other changes.\nBump dependencies and migrate text-to-speech service under API-Gateway. Bump dependencies and migrate speech-to-text service under API-Gateway. Bump dependencies and migrate video frame interpolation service under API-Gateway. Bump dependencies and migrate image reconstruction service under API-Gateway. Bump dependencies and migrate image translation service under API-Gateway. Fix UI elements on latest models page between 300-600px width. Release v0.6.0 Baseline model for video frame interpolation(removed temporarily).\nFeatures Baseline model for video frame interpolation. Add initial support for Firefox browser. Release v0.5.2 Quick fix.\nUpdate blog links and release build to Flutter v2.8.0. Release v0.5.2 Bug fixes and other changes.\nAdd guards against unauthenticated access from search field. Fix accidental account deactivation from empty item on settings menu. Amend search field to be expandable with input focus. Release v0.5.1 Bug fixes and other changes.\nAmend request-response flow for REST endpoints. Separate UI elements from asynchronous long running requests(\u0026gt;3 seconds). Amend error handling and tests for asynchronous endpoints. Amend texts to be selectable with copy-paste functionality. Add workaround for noisy artifacts using canvaskit with kTransparentImage. Release v0.5.0 Features Baseline image translation model. Security Implement operational logging as database. Bug Fixes and Other Changes Fix mouse horizontal scrolling after changes in ScrollBehavior. Release v0.4.1 Bug fixes and other changes.\nAdd sign-in flows with email/password, passwordless and social identity providers. Add token-based authentication for restricted API access. Add URL route guarding against unauthenticated users. Fix hindered view of VQVAE digits selection with dropdown list. Release v0.4.0 Features Baseline vector-quantized variational autoencoder(vqvae) service for image reconstruction. Release v0.3.1 Bug fixes and other changes.\nChange implementation and deployment of text-to-speech service from App Engine to Cloud Run. Release v0.3.0 Features Baseline speech-to-text model with remote and local inference. Bug Fixes and Other Changes Fixes playback of audio files from host file system. Fixes controller of bytes transfer for speech-to-text service. Release v0.2.1 Bug fixes and other changes.\nCVE-2021-29512 Bump TensorFlow version to patched v2.3.3. Check for mounted property before calling setState() in asynchronous functions. Release v0.2.0 Features Baseline audio model(text-to-speech). Include basic information with About page. Performance Warm up model requests and pre-cache assets with service worker. Security Secure microservices with firewall rules to prevent exploitation from malicious actors. Represent text data in transmit with Base64 encoding schemes. Release v0.1.2 UI enhancements.\nFeatures Add skeleton loader for improvements in perceived performance. Release v0.1.1 Bug fixes and other changes.\nConvert image assets to WebP format. Improve application loading time. Add paste shortcut icon to QnA model. QnA model accept inputs from system clipboard. UI improvements: Collapsible overview. Release v0.1.0 Features Progressive web app paradigm.\nInstallable for offline usage, though internet connection is required when some models are fetched from CDNs to keep app bundle small. Flutter Navigator 2.0 API for web navigation using URLs.\nDark and light theme, default is system theme.\nSupport and tested for desktop web only(linux chromium).\nBaseline regression, classification and generative models.\nPerformance Likely to work on other modern W3C-compliant browsers, but UI/UX experience not optimal. ","date":"2026-04-30T00:00:00Z","permalink":"/p/release-notes/","title":"Release Notes"},{"content":"In the not-so-distant future, Earth had become a barren wasteland, devoid of any human life. The remnants of humanity had fled to distant planets, leaving behind only the animals to fend for themselves. Among them was a small, abandoned stray cat, wandering through the desolate cityscape in search of food and shelter.\nOne day, as the cat ventured near the rubbish chute, it stumbled across a peculiar object - a shiny, metallic toy that seemed to have fallen from the depths of the garbage pile. The cat, curious and cautious, approached the toy, sniffing it to ensure it was safe. To its surprise, the toy began to move and make a series of beeping sounds.\nThe cat, now both intrigued and frightened, backed away from the mysterious object. However, its curiosity got the better of it, and it slowly approached the toy once more. As it got closer, the beeping sounds became more rapid, and the toy began to spin and light up in various colors.\nThe cat, realizing that the toy was not harmful, cautiously touched the toy with one of its paws. To its amazement, the toy began to change its patterns and colors, as if responding to the cat\u0026rsquo;s touch. The cat, now more curious than ever, decided to play with the toy, swiping at it with its paw and watching as the toy reacted to its movements.\nAs the cat continued to play with the toy, it began to feel a sense of happiness and contentment that it hadn\u0026rsquo;t experienced in a long time. The once-abandoned stray cat had found a new friend in this mysterious, intelligent toy.\nAnd so, the two continued to wander through the barren wasteland, the cat and its toy, side by side, finding solace in each other\u0026rsquo;s company and the simple joys of life in a world that had been left behind.\n","date":"2023-10-22T00:00:00Z","permalink":"/p/a-strays-discovery/","title":"A Stray's Discovery"},{"content":"Chapter 7 In the shadowy chamber, a once-graceful princess named Calla found herself ensnared within a frigid cage of unyielding iron. Her eyes blazed with fury as she fluttered within her prison, her wings brushing against the unrelenting bars.\n\u0026ldquo;Such a cruel fate,\u0026rdquo; Calla\u0026rsquo;s voice dripped with vexation, yet she guarded her true desires as silence was her only safeguard. Her beak remained sealed, trapping the words she longed to release. Instead, her vexation manifested through an agitated dance, her sharp beak striking the imprisoning bars.\nRamos, a youth wise beyond his years, observed Calla\u0026rsquo;s restless performance. He understood that her transformation might be transient, and the risks of her unconventional speech being overheard were immense. Leaning closer, he whispered urgently, \u0026ldquo;Quiet! She might catch wind of your words.\u0026rdquo; Ramos knew that if anyone discerned her peculiar utterances, suspicion would surely follow. He cast an anxious gaze around, hoping their secrecy remained intact.\nRamos fixed Calla with a determined look. \u0026ldquo;You must refrain from such talk,\u0026rdquo; he cautioned, his voice resolute but hushed. \u0026ldquo;Exposing your abilities now would be perilous.\u0026rdquo;\n\u0026ldquo;I care not!\u0026rdquo; Calla\u0026rsquo;s vexation remained undiminished. \u0026ldquo;I am guilty of no wrongdoing. Why must I conceal my true self like a criminal?\u0026rdquo;\nRamos regarded her with a solemnity that exceeded his tender age. \u0026ldquo;You must,\u0026rdquo; he repeated firmly. \u0026ldquo;If they unveil your secret, they will not hesitate to label you a witch.\u0026rdquo;\n\u0026ldquo;I don\u0026rsquo;t care!\u0026rdquo; Calla\u0026rsquo;s frustration remained undiminished. \u0026ldquo;I\u0026rsquo;ve committed no wrongs. Why should I hide like a criminal?\u0026rdquo;\nRamos cast an uneasy eye toward Ysa, their guardian, striding ahead. Ysa was striving to regain her composure after the calamitous transformation at the bustling marketplace. Yet, the worry etched upon her countenance was unmistakable. In a realm teeming with enchantments and treacherous mysteries, their destinies were intertwined, and perils lurked around every corner.\nChapter 8 In a world rife with uncertainty and danger, Ysa and her resolute troupe embarked on an unending journey, their dreams of discovering a safe haven fading with each mile traversed. Escaping the city just as the enchantment cloaking Calla began to wane, their fate cast them into this nomadic existence.\nThrough perilous landscapes they trekked, fortune favoring them thus far, as they eluded prying eyes and sidestepped the clutches of danger. Yet, with each setting sun, their odyssey grew more arduous.\nFate eventually led them to a modest village, where brief respite awaited. Ysa, the undaunted leader, proclaimed with unwavering resolve, \u0026ldquo;Here, we shall take our stand.\u0026rdquo; Alas, this reprieve was short-lived, for peril lurked nearby.\nEmerging from the shadows, a menacing band approached the trio. Ramos, wise beyond his years, recognized them as ruthless brigands. Their leader, exuding an ominous aura, declared with bold intent, \u0026ldquo;We\u0026rsquo;ve set our sights on this place. It shall be ours.\u0026rdquo;\nThe bandits\u0026rsquo; covetous eyes fell upon Ysa\u0026rsquo;s cart, laden with crates and vials. With a sneer, they demanded, \u0026ldquo;Relinquish your cart and your treasures.\u0026rdquo; Ysa met their greedy gaze with unwavering determination, proclaiming, \u0026ldquo;We possess no wealth, and this cart is our lifeline. We shall not part with it.\u0026rdquo;\nA derisive laughter swept through the bandit crew, their leader retorting with scorn, \u0026ldquo;You deceive us. Your valuable merchandise is plain to see.\u0026rdquo;\nYsa\u0026rsquo;s voice remained unshaken, her resolve unwavering. \u0026ldquo;We are humble peddlers, not prosperous merchants. Inspect our modest wares, and you will discover no riches.\u0026rdquo;\nThe bandit leader responded with a dismissive shrug. \u0026ldquo;Then we shall seize what we desire,\u0026rdquo; he boldly announced, advancing toward the cart.\nRamos could stand idly by no longer. Stepping forth with unwavering purpose, he declared, \u0026ldquo;Lay not a hand upon that cart.\u0026rdquo; The bandit leader, a smirk on his lips, taunted, \u0026ldquo;And what can a mere child do?\u0026rdquo; Laughter echoed among the bandits.\nSeeking guidance from Ysa, Ramos found her silently urging restraint. She stood resolute as the bandits systematically loaded their ill-gotten gains onto the cart. Yet, an unexpected twist of fate awaited.\nFrom the shadows, Calla observed with keen eyes. As a bottle of potent elixir was passed to Ramos, he, too, partook. The elixir flowed through the bandits\u0026rsquo; veins, turning their bravado into bewildering inebriation. Stumbling and falling into drunken stupors, the bandits, including Ramos, succumbed to the enchantment of the elixir.\nSeizing the opportune moment, Ysa scooped up Ramos. With her trusty cart in tow and Calla maintaining vigilant watch from above, they fled the scene, leaving behind the incapacitated bandits in their wake.\nChapter 9 Across vast and perilous journeys, encompassing both rugged roads and uncharted seas, the valiant trio at last set foot upon a new continent. Their pursuit was twofold: to seek fresh adventures and, perhaps, find a glimmer of hope for the Princess Calla\u0026rsquo;s affliction.\nAs they ventured deeper into the uncharted heart of this newfound land, they encountered small native communities. Here, they kindled connections through the age-old practice of trade, bartering their unique wares for sustenance and the sanctuary of the indigenous tribes. Ever watchful, they pressed forward, cherishing the moments spent with these ancient peoples and absorbing the wisdom of living harmoniously with the untamed nature.\nAmidst this exotic landscape, Ysa\u0026rsquo;s seasoned wisdom unveiled the hidden remedies held within native flora, bringing solace to her ailing companions. Meanwhile, the young Ramos discovered his innate talents in commerce and education. With grace and humility, he imparted the gift of knowledge to the native children, revealing the secrets of letters and numbers while keeping a vigilant eye on the encircling wilderness.\nYet, in the midst of this idyllic existence, a foreboding night shattered their tranquility. Fierce tribal war ceremonies ignited, an enigmatic encampment succumbing to the onslaught of strange tribesmen draped in luminous animal skins. Ysa and Ramos, armed with mystical artifacts acquired on their journeys, summoned their valor to shield Calla. The native bushmasters, too, united to repel these elusive nocturnal assailants.\nThis upheaval gave birth to a tumultuous jungle battle, wherein Ramos and Ysa confronted adversaries of supernatural origins. Through unyielding courage and indomitable resolve, they emerged triumphant, thwarting the enigmatic foes that had hidden within the shadows.\nHaving braved the wilds, grappled with treacherous predators, and confronted cunning villains, Ysa and Ramos had earned not only the trust of this untamed land but also the love of a native tribe. However, with each passing day, the Princess Calla\u0026rsquo;s transformation grew more profound, her humanity slipping away, and the relentless march of time threatening to seal her fate in an eternal, animal form.\nEpilogue In the heart of the untamed jungle, amidst the vibrant tapestry of nature, the valiant trio found solace. Ysa\u0026rsquo;s unwavering devotion to her ailing companion, Calla, inspired her to delve deeper into the arcane secrets of native medicine. With Ramos by her side, she scoured the lush wilderness, seeking a cure that would restore Calla\u0026rsquo;s human form.\nTheir relentless quest bore fruit, as Ysa discovered a rare plant with mystical properties. Its ethereal essence held the key to reversing Calla\u0026rsquo;s affliction. With utmost reverence and care, Ysa prepared a potion, infusing it with the plant\u0026rsquo;s magical essence.\nAs the potion touched Calla\u0026rsquo;s lips, a transformation unfolded before their eyes. Her feathers gave way to supple skin, and her delicate features emerged from the shimmering haze. Moments later, Calla stood before them, her human form restored, her eyes sparkling with newfound hope.\nThe trio embraced, their hearts overflowing with gratitude for the miraculous cure. Their bond with the native tribe deepened as they shared stories and traditions, savoring the beauty of their exotic home.\nDespite the temptation to remain in this idyllic paradise, the trio\u0026rsquo;s hearts yearned for their homeland. With a bittersweet farewell, they boarded a ship, bidding adieu to the native tribe and the land that had become their sanctuary.\nAs the ship sailed across the vast ocean, the trio reflected on their journey, one that had transformed them both physically and spiritually. They had braved the perils of the wilderness, triumphed over treacherous adversaries, and discovered the healing power of friendship and love.\nWith renewed vigor and unbreakable resolve, they set their sights on the horizon, eager to embrace the challenges and adventures that awaited them in their homeland.\nYet, their hearts remained forever intertwined with the untamed land and the ancient people who had offered them refuge. In the tapestry of their lives, the memories of their journey would forever shine bright, a testament to the resilience of the human spirit and the power of hope.\n","date":"2023-10-15T00:00:00Z","permalink":"/p/whispers-in-the-iron-cage/","title":"Whispers in the Iron Cage"},{"content":"Chapter 4 In the care of Ysa, Ramos had grown old enough to embark on journeys to larger cities, a transition filled with challenges for a boy accustomed to the simplicity of village life. The bustling urban landscapes with their cacophony of noises and vibrant economic activities were worlds apart from the tranquil serenity of his rural upbringing.\nBy the age of seven, Ramos had not only mastered the arts of reading, writing, spelling, and counting but had also acquired the gift of conversation. His talkative nature, while sometimes perilous, was not a trait he feared. Yet, there remained a condition to his sociability - he only spoke freely with those he knew well.\nOne moonlit night, when the forest seemed less ominous under the radiant full moon, Ysa and Ramos sat by a crackling fire, sharing a meal of roasted pigeon. Ysa, observing the sparkle of curiosity in Ramos\u0026rsquo; eyes, posed a question, \u0026ldquo;Do you desire to travel?\u0026rdquo; In response, Ramos\u0026rsquo; face lit up with eager anticipation, and he nodded vigorously. It was the first time Ysa had glimpsed such a gleeful expression on his face. \u0026ldquo;I shall enlighten you,\u0026rdquo; she began, unrolling a parchment map before them.\nAs Ysa traced her finger over the map, she elucidated the geography. \u0026ldquo;We dwell on the outskirts of the Edderkoot Forest,\u0026rdquo; she pointed to a dark circle. \u0026ldquo;To the southeast lies the city of Norek, and here, the grand city of Ida, the capital.\u0026rdquo; Ysa illustrated their journey, emphasizing the proximity of these cities, separated by mere hours of travel.\nThe capital city, Ida, manifested Ramos\u0026rsquo; expectations of urban grandeur. It wasn\u0026rsquo;t overwhelmingly large, but it exuded an air of significance as the seat of the king\u0026rsquo;s power and the epicenter of judicial affairs and commerce.\nWandering the streets, Ramos eavesdropped on a conversation between two individuals whose accents betrayed their status as outsiders. Their measured speech indicated the complexity of communicating in a city with diverse tongues. Ramos opted to keep his distance, cautious not to inadvertently offend anyone or intrude upon the intricate dynamics of city life.\nEntering an eatery adorned with enticing posters advertising fresh bread, delectable salads, refreshing drinks, succulent roasted meats, and a wide array of sweets, Ramos marveled at the culinary delights that abounded.\nApproaching the royal palace, Ramos discovered it to be an imposing edifice, encircled by a moat and accessible via a bridge. Guards manned the gates, their vigilant eyes scrutinizing all who sought entry.\nPassing through the guarded gates, Ramos found himself in an open square, where the echoes of music and song filled the air. Tables and chairs surrounded a central fountain, where people gathered to enjoy their meals and the ambiance.\nContinuing his explorations, Ramos reached another gate, where a serendipitous sight awaited - a glimpse of the young princess Calla, hidden behind the palace walls, perhaps another chapter in their epic tale yet to be written.\nChapter 5 In the unfolding tapestry of their new world, Ysa and Ramos labored tirelessly to adapt to their unfamiliar surroundings. With a keen aptitude for learning, they swiftly acclimated to the local customs and norms, even forming bonds of friendship with the inhabitants of their new home. Frequent visits to the opulent palace nurtured a profound connection between Ramos, the outsider, and Princess Calla. Despite their differing origins, their shared age and similar perspectives forged a warm and genuine companionship.\nYet, the magnetic allure of this burgeoning friendship did not go unnoticed. It drew forth the green flames of envy from the kingdom\u0026rsquo;s princes and local youths, all vying for the coveted attention of the captivating Princess Calla. Ramos, standing as a stalwart guardian of this unique connection, found himself the target of scorn and resentment, regarded as an unwelcome obstacle in their pursuit.\nThe city\u0026rsquo;s bustling streets were ever abuzz with the ceaseless throng of people. Ramos, sensing the need to mature swiftly in order to thrive amidst this urban chaos, embraced his journey to manhood with courage and determination. He honed his character, adopting a demeanor brimming with newfound strength and resilience. With each passing day, he solidified his presence in the bustling capital, ascending as a promising young lad who had carved a niche for himself in this vibrant city.\nYet, beneath the veneer of thriving commerce and camaraderie, a storm brewed on the horizon. Trouble loomed ever closer to their humble business, as word spread of the mystical potions crafted by Ysa, brimming with potent and otherworldly properties.\nOne fateful day, amidst the clamor of a bustling street filled with merchants peddling their diverse wares, Ramos found himself seated, a solitary figure among the lively crowd. He gazed upon the spirited activity around him, his mind a turbulent sea of worries and concerns. Abruptly, a sharp impact rocked his world, a slap upon his head, a crushing grip upon his throat, propelling him into a nearby alley.\nThere, he confronted a formidable assembly, a dozen youths, all towering in stature, their ages spanning from 16 to 20, each twice his size. Ramos stood against the alley\u0026rsquo;s unforgiving wall, a target for their wrath. A storm of blows descended upon him, fists and kicks striking with relentless fury. As he struggled to defend himself, an unexpected voice pierced the chaos. \u0026ldquo;What have you brought home for supper, darling?\u0026rdquo;\nThe collective attention of the group shifted abruptly to the source of this voice, a woman whose timely intervention would alter the course of this grim confrontation. A potent potion crafted by Ysa unleashed its magic, transforming the assailants into hapless pigs, their grunts of confusion echoing in unison. The woman, bewildered by the bewildering spectacle before her, exclaimed, \u0026ldquo;What is this!\u0026rdquo; The transformed pigs scattered in frantic disarray, seeking refuge in all directions.\nFrom the shelter of a nearby corner, Princess Calla observed this unexpected turn of events, her lips curling into a wide grin as she witnessed the comical transformation of Ramos\u0026rsquo; tormentors, their dire intentions foiled by a touch of enchantment.\nChapter 6 As the sun began its ascent in the early morning sky, a surprise awaited Ysa and Ramos. Calla, brimming with a newfound exuberance, greeted them. Her sudden appearance, filled with life and vigor, left Ysa and Ramos astounded. With a mischievous twinkle in her eyes, Calla turned her attention to Ramos, her question tinged with playful curiosity. \u0026ldquo;Ramos, what wonders shall this day hold?\u0026rdquo; she inquired.\nRamos, his gait slightly unsteady, approached Calla and took her hand in his. Together, they strolled along the square\u0026rsquo;s edge, Ysa trailing beside them, her countenance illuminated by a warm smile. \u0026ldquo;This day dawns with beauty and charm,\u0026rdquo; Ramos replied, a hint of wonder in his voice. \u0026ldquo;What do you envision it to be, Calla?\u0026rdquo;\nA hushed and solemn tone replaced Calla\u0026rsquo;s playful demeanor. \u0026ldquo;I wish to hear of your plans,\u0026rdquo; she stated with gravity. Unbeknownst to them, their exchange had drawn the gaze of the surrounding crowd, curious men gathering to witness this unusual spectacle. However, the trio remained blissfully unaware of the scrutiny, immersed in their own world.\nOnly Calla and Ramos comprehended the true nature of their bond and the extraordinary events they had experienced together. As they conversed, Ysa observed them from a distance, her eyes sparkling with a mixture of joy and tears. Their chatter revolved around the incident that had transformed rowdy adolescents into pigs, an event they had later realized was but a temporary enchantment.\nIn the midst of their animated conversation, a thought struck Calla, her childlike curiosity piqued. She inquired about the diverse transformations that Ysa\u0026rsquo;s potent potions could induce, her fingers grazing the display of vials. Ramos, attempting to contain his excitement, watched with trepidation. Disaster loomed when Calla accidentally knocked over the topmost bottles, causing a cascade of colorful liquids to drench her form.\nRamos\u0026rsquo; face drained of color, his pupils dilating in shock as he witnessed Calla\u0026rsquo;s body undergoing a startling transformation. Before the stunned onlookers, the princess was transfigured into a common pigeon, resembling the very creatures that adorned royal dinner plates. Gasps of astonishment and horror rippled through the square, as the public bore witness to this unexpected calamity.\nWith swift decisiveness, Ysa acted, imprisoning Calla, now in the form of a frantic and bewildered pigeon, within a birdcage. She urgently beckoned to Ramos, instructing him to pack their belongings and hasten from the bustling square back to their rented hut just outside the city\u0026rsquo;s protective walls.\nIn a frenzy of activity, Ysa and Ramos hastily stowed away their wares in storage boxes and, with all their might, towed their laden cart through the city gates. Fear of the dire consequences stemming from Calla\u0026rsquo;s avian transformation weighed heavily upon them, and they made preparations to depart the city, biding their time until the effects of the enchantment would release Calla from her feathery prison.\nUnbeknownst to them, hidden within the pigeon\u0026rsquo;s form, Calla\u0026rsquo;s human consciousness remained vigilant. Her longing for adventure, nurtured throughout her sheltered life, had found a peculiar path, and she was determined to experience the grand journey she had always yearned for.\n","date":"2023-10-08T00:00:00Z","permalink":"/p/beyond-the-village-ramos-epic-odyssey-in-ida/","title":"Beyond the Village: Ramos' Epic Odyssey in Ida"},{"content":"Plot Summary In a distant kingdom, an unexpected trio forms: orphaned boy Ramos, wandering witch Ysa, and transformed princess Calla. Together, they navigate the kingdom\u0026rsquo;s landscape, using Ysa\u0026rsquo;s potions to survive and make a living. Meanwhile, the young princess faces trials to prove her worthiness for the throne. With the help of a kind-hearted woman and her orphaned son, the princess embarks on a transformative journey in the woods. As the trio travels toward the Capital, they encounter challenges like thieves and evil witches, forging an unusual but resilient bond. Their common goal: finding a cure to reverse the princess\u0026rsquo;s pigeon form and outrun the pursuing royal family.\nPrelude Before the tale unfolds, there existed a world draped in emerald shadows and filled with secrets. It was a realm where the whispering leaves carried the wisdom of ages and the ancient trees murmured tales of forgotten wonders. This world, at the cusp of enchantment and reality, was a place where the extraordinary often danced just beyond the reach of the ordinary.\nIn this ethereal tapestry of existence, Ysa, a woman weathered by the trials of life, was but a single thread. Her existence, though filled with the toil of daily living, was woven into the very fabric of this mystical land. She trod softly along the woodland path, where every footfall resonated with the harmonious rhythm of the forest.\nAs Ysa ventured deeper into this enchanted wood, her steps became like the sigh of a breeze, delicate and unobtrusive. The world around her brimmed with the whispers of nature\u0026rsquo;s secrets. Each rustling leaf and every tree, their gnarled branches stretching toward the heavens, held within them the stories of centuries past.\nIt was here, amidst this natural symphony, that Ysa\u0026rsquo;s senses, honed by a life spent wandering these mystical woods, detected something extraordinary. A presence, faint yet trembling, like a fragile note in the symphony of the woods. Her heart quickened, and she knew she stood at the precipice of an extraordinary moment.\nChapter 1 In the heart of the enchanted forest, Ysa, a wise and weathered woman, tread softly along the woodland path. Her arms cradled a bundle of firewood, and the forest murmured with secrets and hidden wonders. It was then, amidst the rustling leaves and whispering trees, that Ysa\u0026rsquo;s keen senses detected a faint, trembling presence.\nSetting aside her load, Ysa ventured deeper into the underbrush, her steps gentle as the sigh of a breeze. \u0026ldquo;Who lingers here?\u0026rdquo; she called, her voice a soothing melody in the tranquil glade. No answer came, only the elusive dance of shadows among the branches. Undaunted, Ysa pressed onward, parting the thorny embrace of brambles that reached for her.\nIn the heart of the forest, the thicket relented, revealing a pristine clearing bathed in dappled light. There, nestled upon a mossy bed, lay a fragile infant boy, his eyes like pools of midnight, and his cheek marked by the traces of tears shed in solitude. The sight tugged at Ysa\u0026rsquo;s heartstrings, and a longing to cradle him surged within her. Yet, wisdom held her back, demanding answers before affection.\n\u0026ldquo;Who are you?\u0026rdquo; Ysa inquired in a hushed tone, but the babe remained silent, his gaze unyielding. \u0026ldquo;Where are your kin, dear one?\u0026rdquo; she probed gently, but the child responded only with wide-eyed innocence, ignorant of her words. Ysa\u0026rsquo;s heart ached, for she couldn\u0026rsquo;t fathom abandoning this forsaken soul to the wilderness.\nContemplation filled her gaze as she surveyed the barren clearing. The babe had no possessions, no sign of familial ties, save for the verdant moss beneath him. Ysa wrestled with a choice: to leave him exposed to the forest\u0026rsquo;s whims or to carry him home, knowing village customs would clash with her compassion.\nWith a tender gesture, she offered her hand to the babe, ensuring he understood her benevolence. A flicker of trust appeared in his gaze, and though he remained mute, Ysa saw his attempt to stifle a cry. His silent plea resonated with Ysa\u0026rsquo;s own childhood scars, and without hesitation, she cradled the babe in her arms, bearing him away toward her hut.\nAs she journeyed with the enigmatic child, her heart brimmed with emotions, and a destiny entwined with the forest\u0026rsquo;s magic and the secrets of the foundling began to unfurl.\nChapter 2 Ysa, a woman who had never experienced motherhood, stumbled upon an abandoned infant in the forest. Though she had no clue about the duration of the child\u0026rsquo;s exposure to the elements, she sensed his hunger and cold. With no milk to offer, she used her available food resources, including berries, nuts, and dried meat, to concoct sustenance. Setting up a modest fire and heating water in a cauldron, she prepared to nourish the child. The baby\u0026rsquo;s age remained a mystery, but Ysa recognized the necessity of feeding him.\nDespite her lack of experience, Ysa knew she had to attempt to care for the baby. Drawing upon her observations of mothers nurturing their infants, she extended her arms toward him. The baby, surprisingly calm and inquisitive rather than crying, reached out his tiny arms to her, and Ysa scooped him up. She marveled at the lightness and warmth of the child, finding the act of holding him surprisingly natural. Time seemed to stand still as she cradled him, feeling the softness of his skin and meeting his wide-eyed gaze.\nYsa crafted a mixture from oats and goat\u0026rsquo;s milk, a far from appetizing sustenance but one she believed the baby could consume. Her desperation to uncover his origin and identity fueled her determination to care for him. Leaving him by the fire, she ventured back to the forest in hopes of spotting his parents, but her search proved futile. Upon returning to the village, Ysa introduced her foundling to the other women, yet none recognized the child or felt inclined to become foster mothers. The men displayed more curiosity than hostility, yet none admitted any knowledge of the infant.\nIt was eventually decided that the baby needed a name, if only as a temporary measure. Ysa\u0026rsquo;s neighbor suggested the name Ramos, and the child received a pair of worn shoes from another villager. Over the next few days, under Ysa\u0026rsquo;s loving care, Ramos thrived and steadily gained weight, bringing a sense of reassurance to Ysa\u0026rsquo;s heart.\nChapter 3 The ensuing years unfolded in a relentless state of apprehension. The toddler remained unusually quiet, sometimes making Ysa doubt whether he was even breathing properly. In this atmosphere of uncertainty, Ysa herself began to adopt a more muted demeanor, weighed down by the increasing weight of responsibility she had assumed.\nRemarkably, the toddler appeared to flourish on the nourishing diet Ysa provided, defying her initial fears of his frailty. These were undeniably challenging times, yet Ysa derived solace from the young boy\u0026rsquo;s presence. He demonstrated exceptional intelligence for his age, and Ysa found herself embarking on a wholly unique educational journey. Engaging in new games and guiding him in the rudiments of reading and writing, she discovered that he learned at a deliberate yet steady pace, a revelation that surprised her as she had not previously believed young children could acquire such skills. With only a few hours of daily and consistent instruction, he astoundingly grasped a few letters and exhibited an aptitude for reading beyond his years, proving himself a remarkably sharp-witted child.\n","date":"2023-10-01T00:00:00Z","permalink":"/p/the-foundling-of-whispering-woods/","title":"The Foundling of Whispering Woods"},{"content":"Last modified: May-29-2022, 02:40PM +08\nFlutter Web and Microservices If one ever needs to deploy neural-based services that can scale to zero, one of the best options include a client-server architecture that is based on microservices. This is not a comparison between software architecture design patterns, but rather an evaluation on the feasibility of flutter and microservices.\nIn most web applications, there is a common process which involves data aggregation and processing for downstream tasks. Some of those tasks include analytics, error reporting and threat monitoring. These tasks often come from different domains of data science, cybersecurity, cryptography, database, networking and distributed computing. It would be infeasible and impractical to expect any single programming language to cater to each and every domain. Not forgetting users of every level, ranging from novices to experts and public to enterprise.\nThe natural and intuitive solution to this hard requirement of cross-domain resources quickly points to a modularity of recomposing units with service granularity. Individual services can be improved incrementally, agnostic of language and platform. Communication can be independent or inter-dependent between separate components hosted on the same server. Seamless integration allows monolithic legacy and modern subsystems to be fully integrated.\nFlexible integration with third-party resources such as autocomplete search engines, databases and object-stores are fully swappable for new frameworks and technologies in the future to prevent vendor lock-in.\nMost managed backend solutions on the market today fully supports encrypted traffic with HTTPS. There is little reason not to secure and safeguard the user\u0026rsquo;s data and privacy against malicious actors looking to exploit zero-day vulnerabilities. There is a global community effort in developing and maintaining security standards and protocols which serve the needs of billions of users on the internet. These open-source cryptographic libraries form a critical part of the arsenal available to developers, without resource-stricken proprietary libraries exposing the attack surface.\nThe microservice developer also has access to open-source and efficient media codecs for both transmission and storage. Attributes of a microservice architecture are well suited for a rapid evolving technology that is seeking regional and global reach.\nDevelopment Common message formats include HTTP, gRPC, GraphQL and WebSocket providing uni/bidirectional communication channel depending on the application. Maturity of these standards and protocols allow them to be widely implemented in languages popular with web development. With the advent of microservices in the early 2010s, Docker remains a popular tool for local development of containers.\nThere has been ongoing work on porting docker to Internet-of-Things(IoT), mobile and GPU platforms. The same codebase for any particular microservice can be easily adapted to target a diversity of platforms during expansion into surrounding markets. This is evident in the growing number of cross-platform web applications. The targeting platform can be expanded to include x86, ARM, RISC-V, NVPTX or AMD ISA, not excluding FPGAs and ASICs.\nService endpoints comprise of IoT, dedicated servers and public cloud for both internal and public facing APIs. To efficiently scale to millions of users, a container orchestration tool such as Kubernetes should be utilized to manage network traffic and computing resources.\nDriven by open-source momentum, a healthy and growing ecosystem of developer tools is the end result of that collective effort. There is no lack of options targeting different niches of the technology stack required to bring a minimal viable product(MVP) to satisfy early adopters, which in turn provide valuable feedback for the next product iteration.\nThe adoption of continuous integration and continuous deployment(CI/CD) best practices simplifies testing and deployment of microservices. This strategy enables the timely delivery of new features on budget.\nDeployment Once a microservice is deployed, its API will accept authenticated requests for identity authentication and access-control of resources. Further restrictions on CPU, memory or GPU are enforced through configurations flags. Resource requirements can be forecasted based on usage patterns during off-peak and peak periods. Service granularity allows real time procurement of additional resources before spikes in traffic and also scaling to zero for deprecated services.\nContainers by default have restricted access to host resources and they run in isolation with regards to other processes on the host system. A microservice being self-contained and coupled with its dependencies can be deployed in parallel with version control. As user base grows, vertical and horizontal scaling of these containers is what allow microservice to be scalable across different regions via cloud.\nThe high development cost is compensated by low cost of entry and low running costs with generous credits from public clouds. Network latency is offset with load-balancing proxies, CDNs and regional deployment with redundancies to ensure high availability to users.\nFine-grained handling and securing of network traffic is done using a service mesh such as Istio, Traefik or in-house solution. API security is enforced through threat and error monitoring with logging/tracing. To ensure high availability, periodic health checks are conducted on endpoints. In the event of a disruption, the operations team will be notified within seconds while an automated rollback or spinning of new instances during surges will take place simultaneously.\nThis composition of behaviors ensure the microservice stays fault-tolerant.\nSecurity OAuth2 SAML JWT Future Applications Self-driving vehicles and autopilot UI\nSelf-planning residential and industrial robots with remote human intervention\nSelf-organizing behavior in drone swarms at scale with mining and agriculture industries\nImplementation of the first distributed superintelligence with a brain-computer interface\nA bundle of artificial intelligence(AI) tools with the analogy of the Swiss army knife\nWhat\u0026rsquo;s Next? Experimentation of running neural-based eBPF programs as microservices with flutter.\nSummary Attributes of a microservice architecture are well suited for a rapid evolving technology that is seeking regional and global reach.\nhealthy, growing ecosystem of developer tools and CI/CD best practices ensures timely delivery of new features on budget.\ncomposition of service granularity, identity and access control of resources ensures the microservice to remain fault-tolerant and highly available.\nAPI security\nfuture applications\n","date":"2021-08-29T00:00:00Z","permalink":"/p/flutter-and-microservices/","title":"Flutter and Microservices"},{"content":"Last modified: May-29-2022, 02:40PM +08\nProgressive Web App Progressive web app(PWA), a term that is increasingly common whenever one does a search on the web in 2021. To date, there have been over 200, 000 applications in the Play store built using Flutter. At it\u0026rsquo;s core, a PWA is an application software that runs on a web server and accessed through a client such as a browser.\nThe PWA alternative paradigm to traditional app development is made possible by the ongoing work on large number of modern web APIs such as Cache, WebGL, WebAssembly, Bluetooth, File System, IndexedDB, Service Workers and many more.\nOver the last few decades, cybersecurity is being increasingly recognized as critical infrastructure, the Covid-19 pandemic further accelerated the shift towards the digital landscape in an attempt to return to normalcy. The 2021 Global Threat Report by Crowdstrike provides details on how adversaries exploit weaknesses present in current day business and government infrastructures. Security is now a first-class citizen in PWAs as communications and/or data must be served over TLS connections.\nA PWA looks, feels and navigate like any other web page with nested URLs or it can function as a single page application. It is also installable and executes using the browser runtime. Additional functionalities include having the ability to work offline and access to device hardware, e.g., camera, microphone or GPU(s), that are traditionally available only to native applications. The app developer is also able to embed PWA within a web page or vice versa using WebView on mobile, resulting in a hybrid framework.\nThe PWA is not limited to mobile platform, even though there is increasing adoption on smart watches. It is also compatible across platforms, look beautiful and responsive at different resolutions and/or orientations. It does this by treating different resolutions and platforms as multiple independent states, resulting in a single codebase, which greatly streamlined rapid iteration of feature development.\nBeing browser and platform independent, all you need is a stable internet connection which enable high interactivity, performance(FPS) and low latency responses for simple through medium complexity use cases. A PWA can be configured to work with any input type including touch, mouse, keyboard, audio or gestures.\nThe PWA paradigm trades native performance for flexibility.\nFlutter For The Web A PWA framework in the spotlight for web development is Flutter Web which hit the stable milestone in 2021.\nHowever, it takes high cognitive effort in navigating complex low-level APIs for intermediate and advanced usage. As with any new and exciting framework, Flutter attracts droves of developers in implementing their own Flutter port of exiting applications, only to be met with lacking documentation and/or over-simplified examples that do not translate to real world use cases.\nUsability issues aren\u0026rsquo;t unique to Flutter Web. Coming over from TensorFlow 1.x, intermediate and advanced usage also experienced the same kind of brick wall once the developer crossed the novice speed limit. With TensorFlow 2.x, the engineering team adopted Keras as their high level API with an emphasis on progressive disclosure of complexity and greatly improved usability.\nIn my neutral opinion, TensorFlow 2.x and Snapcraft serve as good starting points for communicating user/reference guides, targeting different expertise levels. As such, I have newfound appreciation for well communicated technical documentations. As someone starting with zero experience in web development and web technologies, Flutter Web represents an enormous challenge with a tremendous investment in cognitive effort. Previously, Streamlit was my go-to for rapid experimentation. Jumping from Streamlit to full-fledged Flutter Web is akin to bungee jumping in Grand Canyon, a straight plunge to rock bottom.\nNot recommended for new, aspiring web developers with restricted time allowance as APIs implementation such as Navigator 2.0 can get low level and filled with boilerplate for intermediate and advanced use cases. There is significant effort in reviewing third party alternatives where several packages are replicating similar use cases for complex APIs. Due to the complexities in modern network of web technologies and native platform APIs, community contributions are in great need.\nIt is also due to this patchwork of volunteers and industry that allow a PWA built with Flutter Web to exhibit near native performance across different platforms and modern W3C-compliant browsers. A Flutter Web PWA just works, no need for app stores, no hard requirement to download or install any executable.\nThe real testament to Flutter framework is emulating Wechat which serve over 1 billion users and represents a super app, housing smaller apps within its ecosystem.\nModern Browser As A General Purpose Computing Platform Evolution from fetching web pages, reading emails to crunching computation in a secure and sandboxed environment. Modern browsers greatly enhanced productivity and entertainment with plugins ecosystem and a growing body of Web APIs. A general-purpose modern browser represents an international community effort in a pursuit of a fair, open and privacy-preserving high accessibility tool. Recent functionalities include programming sandbox(IDEs), screen casting and machine learning powered tools such as autocomplete search.\nSymbiosis Of Flutter And TensorFlow As a tinkerer, there\u0026rsquo;s an itch to satisfy after witnessing the exponential advancement in modern technologies. Hence, the inspiration to create a tool that\u0026rsquo;s designed to initiate creative and/or problem solving processes, reducing the user\u0026rsquo;s cognitive inertia with productive work. The fruition of this project is evident by well defined interfaces of public facing APIs in seemingly unrelated fields(Flutter Web, TensorFlow, TensorFlowJS, TFX) across different languages(Python, C/C++/CUDA, JavaScript/TypeScript, Dart).\nInitial machine learning(ML) models were written with TFX pipelines, the SavedModel outputs were further converted to JSON format to be compatible with the browser. Separate JavaScript/TypeScript scripts would contain the logic in loading the converted browser-compatible models and handling inference requests.\nThese inference scripts are executed as callbacks from Dart classes upon accepting user inputs in the app UI. For low complexity models that have just a single parameter and accept a single input, response time are \u0026lt;1 second. For medium complexity models that have multiple parameters and accept a single input, response time are also \u0026lt;1 second. For high complexity models that require loading from content delivery networks(CDNs) and accept open-ended inputs such as text, audio, image or video, response time range from 3 to 10 seconds.\nPreliminary exploration suggest that these technologies are fully compatible and worth further investments into advanced capabilities of the humble web browser.\nWhat\u0026rsquo;s Next? Future roadmap include expansion of low, medium and high complexity models with strict performance restrictions. Extending application to process text, audio, image and video data efficiently. Explore different problem domains in related fields of computer vision, natural language processing and machine-generated content.\nSummary General purpose ML toolbox that is cross-platform and readily accessible through the internet.\nPWAs will continue to proliferate due to it\u0026rsquo;s flexibility Flutter Web hits stable milestone for production use Modern W3C-compliant browser with exciting APIs Flutter + machine learning frameworks = UI meets AI Roadmap ","date":"2021-06-27T00:00:00Z","permalink":"/p/flutter-web-tensorflow-and-pytorch-project/","title":"Flutter Web, TensorFlow and PyTorch Project"},{"content":"Last modified: Dec-14-2021, 10:35PM +08\nFrom Manual To Semi-Automatic Before the advent of the concept \u0026ldquo;MLOps\u0026rdquo;, getting a single machine learning(ML) model to production was tedious and belaboring. Every single detail pertaining to the inputs, model server, training and inference have to be defined explicitly. This is to ensure the input tensors follow a strict requirement for them to be processed by user defined functions.\nTo serve a single model, these predefined configurations have to be under version control as the ML field and software ecosystem is accelerating at near exponential speeds. In addition to the model, version control has to be applied to the training data as well as the software infrastructure that is used to host the model. A working production pipeline is like a moving train loading and offloading compartments to keep up with cutting-edge development.\nAfter the release of ImageNet dataset, there was tremendous effort poured into surpassing the human baseline. In the early 2010s, that baseline was exceeded with the combination of readily available data, open-source frameworks and modern computing resources that can be bought off the shelf. However, being proficient in these resources was restricted to experts and those within the technical community. Developer sanity was largely dependant on up-to-date documentation or comments within the source where documentation was absent.\nIn the mid 2010s, a number of Deep Learning(DL) frameworks were designed to unify the common primitives in building these DL models. These include TensorFlow, Keras, Pytorch, Apache MXNet and many others.\nTo tackle the problem of productionizing models, one of the solutions explored was the usage of Docker containers, to package both the dependencies and the actual model as lightweight components that can be easily shared through a public repository. This approach greatly democratize the deployment of DL models to common hosting providers like the public clouds or in-house servers.\nThe natural progression in using Docker containers meant the inclusion of shell scripts, cron jobs and triggers that allow the automation of the entire ML pipeline. Docker-based workflows gave developers access to version controlled resources locally on their laptops and globally across different time zones.\nComponents-Based Workflow For organizations that need to scale to millions of containers in production, the de facto solution include container orchestration platforms such as Kubernetes. The platform allows hundreds and thousands of engineers to collaborate on different levels of a complex ML system. This ranges from low level implementation of hardware drivers to the high level design of user-interfaces such as click-and-drag block diagrams.\nThe low-code or no-code approach is an industry effort to lower the cognitive strain in designing complex ML models. The design and implementation of mission-critical models requires non-trivial engineering efforts, so why should their deployment be unnecessarily complex?\nBehind the scenes of the components-based workflow lies Kubernetes applications such as Argo Workflows, Tekton as well as many others. These applications specify steps in a ML pipeline as containers that can spun up sequentially or in parallel. These steps can be expressed as a directed acyclic graph(DAG), which can be version controlled and compiled for export to different hardware architectures.\nInitially, we had manual design, hand-tuned and hand-crafted models without A/B testing because deployment of new models simply could not keep up with the development of a core application(4~6 weeks cycle). Now we can churn dozens of models daily in parallel, set to trigger on arrival of new data or based on adjacent/over-lapping time windows. The models that passed evaluation are then uploaded to a model repository for further downstream processes.\nCautionary Tales A majority of kubernetes applications are rather new to the scene, many more are emerging to solve critical issues pertaining to storage, security, networking and other peripherals. Choosing the right software stack requires an in-depth technical review of existing solutions with respect to dimensions of correctness, latency and costs.\nAt the SME scale, one single competent ML engineer is the bare requirement for a sufficiently complex ML system, serving requests up to the number of CPU cores procured with default settings.\nAt the enterprise scale, ML engineering is not well suited to be an one-man job, but rather spread across different teams with each being a subject matter expert on their domains.\nWhat\u0026rsquo;s Next Currently working on a regression pipeline, targeting TensorFlow.js models to be deployed in a Flutter application, hosted by Firebase. The pipeline is designed to be agnostic to regression problem domains. Future regression tasks include cryptocurrency market size, health monitoring, renewable energy forecasts and EV tank-to-wheel efficiency(70~90%).\nOther pipelines include tasks under the pillars of ML:\nclassification density-estimation dimensionality-reduction Pipelines for generative models are in the roadmap as well.\nIncorporating accelerators such as GPUs or TPUs into pipeline to further parallelize existing workflows.\n","date":"2021-06-08T00:00:00Z","permalink":"/p/ml-engineering/","title":"ML Engineering"},{"content":"Last modified: May-29-2022, 01:43PM +08\nThe Story So Far It was around late 2018 when I decided to go knee-deep into the world of Artificial Intelligence(AI), Machine Learning(ML) and finally Deep Learning(DL). Coming with the background from biomedical science and psychology, meant that I have to pick up new entire fields relating to Computer Science(CS), software engineering(SE) and AI.\nPutting aside new concepts, terminologies and principles. All these fields have one thing in common and that is mathematics. Combing through tons of research papers and reference books just to build a concrete foundational understanding of these new complexities proved to be extremely intensive. I realized one simple trick to filter technical jargon and that is go straight to the math.\nOver the same period, I have basically become a sponge for the new influx of information and this is my humble attempt at the documentation and review of my life-long learning process.\nCurrent Projects(2021-Beyond) tfx, kubeflow pipelines tensorflow-js models running in web browser tensorflow lite micro models running on embedded microcontroller nvidia jarvis(beta) as a backend service for flutter application implementation of modern multi-modal DL architectures Text Editor Vim I started with PyCharm without knowledge of vim\u0026rsquo;s existence at the time. Once I was using ubuntu for my daily and work, vim resonates with me instantly. It felt like a superpower with features such as macros, registers and integration with shell tools. Now I\u0026rsquo;m running it with ~30 plugins, supporting various languages/DSL, as well as development tools while keeping its startup time under 350ms.\nProgramming Languages Python C/C++, CUDA Dart Go JavaScript, TypeScript Rust I have tried my best to steer clear of JavaScript, HTML and CSS as much as possible. Each passing year it seems less and less likely, and I am not looking forward to these days at all. Fingers crossed.\nAI Software Stack ML/Data cython dgl hdf5 modin numba numpy onnx opencv(compiled with cuda) pandas protobuf(C++ implementation) pytorch rapidai scikit-learn seaborn tensorflow tpot xgboost Performance deepstream nsight systems/compute tensorRT tensorboard triton server Computer Vision gstreamer ASR, NLP, NLU, TTS huggingface(transformers) nvidia tlt, nemo, jarvis Recommender tensorflow-recommenders Model, Graph Compilation apache tvm mlir/llvm xla Web, UI, Mobile flutter(dart) graphql grpc hugo mediapipe ngrok streamlit tensorflow-js ultrahook Application fastapi firebase fireward Storage backblaze firestore minio postgresql Networking cert-manager curl envoy httpie istio metallb traefik Security, Authentication, Authorisation JSON web tokens gnupg keycloak mkcert openssl Pipelines(CM/CE/CP/CT) apache beam apache flink apache kafka argo kubeflow tekton tfx CI/CD, testing argocd gitlab CI/CD jenkins-x locust pytest unittest vegeta MLOps(Kubernetes, Docker) elasticsearch, logstash, kibana(ELK) alibi apache bookkeeper apache zookeeper katib kibana knative minikube prometheus(alertmanager) rancher seldon core triton inference server Virtualization kvm virtualbox Cloud Platforms GCE openshift openstack Internet of Things arduino coral raspberrypi ","date":"2021-04-11T00:00:00Z","permalink":"/p/the-journey-ahead/","title":"The Journey Ahead"}]