Skip to content

0.2.0

Choose a tag to compare

@QaidVoid QaidVoid released this 29 Apr 11:19
· 1108 commits to main since this release
e97cbe2

0.2.0 — 2026-04-29

Bug Fixes

  • ui: Unique column keys in DataTable + harden against future dupes
  • s3: Accept versionId query param spelling for VersionId input
  • dynamodb: Return existing Item on ConditionalCheckFailedException
  • sqs: Reject FIFO-only fields on standard queues
  • dynamodb: Return structured CancellationReasons from TransactWriteItems
  • dynamodb: Return HTTP 400 for ResourceNotFoundException
  • lambda: Surface FunctionError via X-Amz-Function-Error header
  • sqs: Only return attributes when explicitly requested
  • dynamodb: Create data dir before opening sqlite store
  • dynamodb: Clippy + rustfmt cleanup
  • core: Preserve serde_json key order so XML field order matches AWS spec
  • ui: Hand scroll containment to pages so ServicePage h-full resolves
  • ui: Correct GitHub link to QaidVoid/awsim

Documentation

  • servicediscovery: Add Cloud Map service page
  • xray: Add X-Ray service page
  • services: Add EFS, Backup, Application Auto Scaling pages
  • services: Add Pipes service page, update Lambda ESM section
  • services: Catch up on the recent feature pass
  • readme: Refresh service list, flags, highlights
  • services-index: Bump DynamoDB operation count 26 → 57
  • dynamodb: Document SQLite store + TruncateTable
  • Document Phase D admin features and own AWSim's framing
  • Document /_awsim/events SSE endpoint
  • Document CloudWatch Logs persistence
  • Document /_awsim/storage endpoint
  • Document size cap and periodic GC
  • Document BodyStore startup garbage collection
  • Document SQS message body persistence
  • Document ECR layer storage and persistence
  • Document Lambda function code persistence
  • Document S3 object persistence

Features

  • ui: Identity Store — users, groups, memberships
  • ui: Pinpoint — apps, endpoints, segments, campaigns
  • ui: Transfer Family — servers, users, SSH keys
  • ui: QLDB — ledger management
  • ui: MemoryDB — clusters, users, ACLs
  • ui: MQ — brokers and users
  • ui: Glacier — vaults, archives, jobs
  • ui: AppConfig — applications, environments, profiles, deployments
  • ui: Cloud Map (Service Discovery) — namespaces, services, instances
  • ui: X-Ray — traces and service graph
  • ui: Application Auto Scaling — targets, policies
  • ui: Backup — vaults, plans, jobs
  • ui: EFS — file systems, mount targets, access points
  • identitystore: Users, groups, group memberships
  • pinpoint: Apps, endpoints, segments, campaigns
  • transfer: AWS Transfer Family servers, users, SSH keys
  • qldb: QLDB ledger metadata service
  • memorydb: MemoryDB for Redis with clusters, users, ACLs, snapshots
  • rds: Accept docdb and neptune engines on cluster + instance create
  • mq: Amazon MQ brokers, users, configurations
  • glacier: Amazon S3 Glacier with vaults, archives, jobs
  • appconfig: AppConfig + AppConfigData services
  • servicediscovery: AWS Cloud Map with namespaces, services, instances
  • xray: X-Ray service with trace ingest, summaries, service graph
  • application-autoscaling: Scalable targets, scaling policies, scheduled actions
  • backup: AWS Backup service with vaults, plans, selections, jobs
  • efs: Amazon EFS service with file systems, mount targets, access points
  • ui: EventBridge Pipes route and Lambda Event Sources tab
  • pipes: EventBridge Pipes service with SQS->Lambda runner
  • lambda: Region-aware poller with FilterCriteria, DLQ, stateful iterator
  • lambda: Extend ESM model and add UpdateEventSourceMapping
  • ui: Surface concurrency, global tables, live alarm state
  • ui: Add Resource Groups Tagging route
  • ec2: Real instance state machine + start/stop/reboot
  • cloudwatch: Real alarm state evaluation against metric data
  • lambda: Reserved + provisioned concurrency
  • dynamodb: Real CreateGlobalTable / UpdateGlobalTable
  • cognito: Record auth events and honor compromised-credentials
  • kms: Honor grants in authz evaluation
  • cognito: Enforce password policy and account lockout
  • s3: Persist each version as its own blob
  • s3: Full multi-version object history
  • s3: Add UploadPartCopy operation
  • s3: Assign and surface VersionId on writes when versioning is Enabled
  • resourcegroupstagging: Add Resource Groups Tagging API service
  • sqs: Round-trip BinaryValue in MessageAttributes
  • gateway: Silently 204 known browser probes
  • dynamodb: Add awsim-only TruncateTable op + UI button
  • dynamodb: Atomic Transact* over a single sqlite transaction (stage 5)
  • dynamodb: Drop in-memory items, sqlite is now authoritative (stage 4)
  • dynamodb: Read GetItem/Query/Scan/BatchGetItem from sqlite (stage 3)
  • dynamodb: Dual-write item + table ops to sqlite (stage 2 of refactor)
  • dynamodb: Scaffold sqlite-backed store (stage 1 of refactor)
  • awsim: Bound in-flight requests + warn before fd exhaustion
  • awsim: Bump NOFILE rlimit, dual-stack bind, async snapshot saves
  • apigateway: Wire HTTP / HTTP_PROXY in v1 stage proxy
  • apigateway: Wire stage invocation proxy for v1 REST APIs
  • apigateway: Full CRUD for v1 REST APIs + scope proxy under user_request
  • apigateway: Add v1 (REST APIs) handler alongside the v2 service
  • Replay any captured request from the inspect drawer
  • ui: Multi-variant theme picker (default/midnight/slate/solarized + light)
  • Capture per-request detail + add Inspect drawer
  • ui: Add vim-style keyboard shortcuts + help overlay
  • ui/sts: Add typed API + rebuild with caller-identity + assume-role + federation cards
  • ui/glue: Add typed API + rebuild with databases/tables/crawlers/jobs/connections tabs
  • ui/organizations: Add typed API + rebuild with accounts/OUs/SCPs tabs
  • ui/ses: Add send-email composer dialog
  • ui/ses: Rebuild with identities/config-sets/templates/contacts/suppression tabs
  • ui/cloudfront: Add origin-access/key-groups/public-keys/functions tabs
  • ui/cloudfront: Add typed API + rebuild with distributions+policies tabs
  • ui/datasync: Add typed API + rebuild with locations/tasks/executions tabs
  • ui/athena: Add typed API + rebuild with query editor + history
  • ui/ssm: Add maintenance-windows + ops-items tabs
  • ui/route53: Add typed API + rebuild with zones+records workspace
  • ui/ssm: Add typed API + rebuild with parameters/documents/activations tabs
  • ui/batch: Add typed API + rebuild with compute-env/queues/defs/jobs tabs
  • ui/polly: Add typed API + rebuild with voices/lexicons/synthesize panel
  • ui/elb: Add typed API + rebuild with LB/target-groups/listeners/rules tabs
  • ui/sso: Add typed API + rebuild with instances/permission-sets/assignments tabs
  • ui/cloudformation: Add typed API + rebuild with stack workspace + template viewer
  • ui/ecr: Rebuild page with decomposed repos+images split view
  • ui/bedrock: Add invoke playground for runtime API
  • ui/bedrock: Add provisioned/custom-models/knowledge-bases tabs
  • ui: Add typed API foundations for bedrock, ecr, ses + bedrock tabs (WIP)
  • ui/apigateway: Add typed API + rebuild from stub with full workspace
  • ui/ec2: Add typed API + rebuild with instances/sgs/keys/vpcs/subnets/volumes tabs
  • ui/scheduler: Add typed API + rebuild with schedules/groups tabs and cron preview
  • ui/appsync: Add typed API + rebuild with decomposed workspace
  • ui/waf: Add typed API + rebuild with WebACLs/RuleGroups/IPSets tabs
  • ui/acm: Add typed API + rebuild with detail sheet
  • ui/stepfunctions: Add typed API + decomposed workspace
  • ui/rds: Add typed API + rebuild RDS page with instance/snapshot tabs
  • ui/secrets: Add typed API + rebuild with show/hide + version history
  • ui/eks: Add typed EKS API + rebuild with decomposed tabs
  • ui/kms: Add typed API + rebuild with decomposed keys/aliases + encrypt-decrypt playground
  • ui/s3: Rebuild S3 page with decomposed components
  • ui/cloudtrail: Add typed API + rebuild with decomposed trails/events tabs
  • ui/firehose: Add typed API + rebuild with stream details + put record
  • ui/ecs: Add typed ECS API + rebuild with decomposed tabs
  • ui/cognito: Add JWT decoder panel
  • ui/cognito: Add typed API + rebuild with decomposed pool tabs
  • ui/dynamodb: Rebuild page with decomposed tabbed workspace
  • ui/kinesis: Add typed API + rebuild with stream+record explorer
  • ui/monitoring: Rebuild with decomposed metrics/alarms/dashboards tabs
  • ui/lambda: Point page at decomposed component workspace
  • ui/lambda: Rebuild page with decomposed function workspace
  • ui/iam: Add policy simulator tab (Simulate*Policy)
  • ui/eventbridge: Add typed API + rebuild with buses/rules/archives + send-event dialog
  • ui/iam: Rebuild page with decomposed users/roles/groups/policies
  • ui/monitoring: Add typed Metrics API + sparkline component
  • ui/cloudwatch: Add Insights query dialog
  • ui/sns: Add typed API + rebuild with decomposed topics/subs/publish
  • ui/dynamodb: Add typed DynamoDB API client
  • ui/cloudwatch: Add typed Logs API + rebuild with decomposed three-pane explorer
  • ui/sqs: Add typed API + rebuild with decomposed queue/messages workspace
  • ui/logs: Add Request Log page consuming SSE stream
  • ui/iam: Add typed IAM API client
  • ui/lambda: Add typed Lambda API client
  • ui: Add shared ServicePage / DataTable / EmptyState primitives
  • ui: Assemble dashboard home page
  • ui: Add insights panel component
  • ui: Add service status list component
  • ui: Add live request stream and detail sheet
  • ui: Add KPI card component
  • ui: Add dashboard formatting helpers and event types
  • ui: Replace home page with dashboard placeholder
  • ui: Add command palette (Cmd-K) for navigation and quick actions
  • ui: Rebuild app shell with categorized sidebar and topbar
  • awsim: Wire CloudWatchLogsService::with_data_dir
  • ui: Set up design system with oklch tokens and Geist fonts
  • admin: Add GET /_awsim/storage endpoint
  • cloudwatch-logs: Implement BlobInventory for CloudWatchLogsService
  • awsim: Track per-service body stores in AppState
  • cloudwatch-logs: Cleanup persisted logs on delete
  • cloudwatch-logs: Persist log events on PutLogEvents
  • cloudwatch-logs: Plumb optional BodyStore into LogsState
  • core: Add append_blob to BodyStore
  • awsim: Add periodic GC via --gc-interval-secs flag
  • awsim: Add --max-blob-bytes CLI flag
  • core: Add max_size builder, enforce cap on write_blob
  • core: Add total_size and evict_to_fit on BodyStore
  • awsim: Run BodyStore GC at startup
  • sqs: Implement BlobInventory for SqsService
  • ecr: Implement BlobInventory for EcrService
  • lambda: Implement BlobInventory for LambdaService
  • s3: Implement BlobInventory for S3Service
  • core: Add BlobInventory trait and BodyStore::gc_orphaned
  • core: Add Snapshottable trait + AccountRegionStore helpers
  • core: Add unified Body type for blob storage
  • sqs: Wire SqsService::with_data_dir in main bin
  • sqs: Rebind on-disk message bodies on snapshot restore
  • sqs: Migrate persisted body when redriving to DLQ
  • sqs: Cleanup persisted bodies on Delete/Purge/DeleteQueue
  • sqs: Persist message bodies on SendMessage/SendMessageBatch
  • sqs: Plumb optional BodyStore into SqsState
  • awsim: Wire EcrService::with_data_dir and with_port in main bin
  • ecr: GetDownloadUrlForLayer returns local /v2 endpoint URL
  • ecr: Add /v2/{repo}/blobs/{digest} HTTP endpoint
  • ecr: Wire body_store on snapshot/restore
  • ecr: Cleanup layers on BatchDeleteImage and DeleteRepository
  • ecr: Persist completed layers to disk
  • ecr: Implement BatchCheckLayerAvailability against stored layers
  • ecr: Store completed layers in repository
  • ecr: Plumb optional BodyStore into EcrState
  • ecr: Introduce Layer/LayerBody types
  • lambda: Wire LambdaService::with_data_dir in main binary
  • lambda: Wire body_store on snapshot and restore
  • lambda: Cleanup persisted code on DeleteFunction
  • lambda: Persist published versions on PublishVersion
  • lambda: Persist function code on CreateFunction/UpdateFunctionCode
  • lambda: Plumb optional BodyStore into LambdaState
  • core: Add generalized BodyStore for disk-backed blobs
  • s3: Wire S3Service::with_data_dir in main bin
  • s3: Wire body_store on restore so persisted objects load lazily
  • s3: Persist multipart upload parts to disk
  • s3: Persist object bodies to disk on PutObject/CopyObject/DeleteObject
  • s3: Plumb optional BodyStore into S3State
  • s3: Add BodyStore for disk-backed object bodies

Refactor

  • dynamodb: Drop Table.items field, fix ItemCount via sqlite (stage 7)
  • sqs: Use Snapshottable trait
  • ecr: Use Snapshottable trait
  • lambda: Use Snapshottable trait
  • s3: Use Snapshottable trait for snapshot/restore
  • sqs: Replace MessageBody with awsim_core::Body
  • ecr: Replace LayerBody with awsim_core::Body
  • lambda: Replace FunctionCode with awsim_core::Body
  • s3: Replace ObjectBody with awsim_core::Body
  • sqs: Introduce MessageBody enum, replace Message.body
  • lambda: Introduce FunctionCode enum
  • s3: Use awsim-core::BodyStore for object and multipart blobs
  • s3: Introduce ObjectBody enum, replace S3Object.data

Tests

  • kms: Cover key-policy participation in authz evaluation
  • awsim: Integration test for /_awsim/events SSE streaming
  • awsim: Integration test for /_awsim/storage
  • cloudwatch-logs: Integration test for log persistence round-trip
  • awsim-sqs: Integration coverage for size cap and periodic GC
  • core: Integration coverage for BodyStore startup GC
  • sqs: Add integration tests for message body persistence
  • ecr: Integration test for layer round-trip with persistence
  • lambda: Integration test for code persistence round-trip
  • s3: Integration test for disk persistence round-trip