qserver 0.0.15
qserver: ^0.0.15 copied to clipboard
A comprehensive, expressive, and type-safe Dart backend framework.
0.0.15 #
- Live monitor defaults to on (
QUDS_MONITOR=true). SetQUDS_MONITOR=falsefor append-only logs. The framed panel still needs a real TTY (not the IDE Debug Console). - Local/dev hot restart on save (full process respawn). There is no Flutter-style hot reload.
QUDS_HOT_RESTART=falsedisables it; skipped underpackage:testand when a debugger is attached.
0.0.14 #
First pub.dev release since 0.0.10. Includes the 0.0.11–0.0.13 work below (those versions were never published separately).
- Live monitor follows the terminal size, keeps a 200-line log ring (
QUDS_MONITOR_LOGfilter), and shows a queue strip plus Q / WS pressure bars. Falls back to 76 columns when there is no TTY. - Queue workers stay single-threaded unless
QUEUE_CONCURRENCYis set. OptionalQueueInspect, in-memoryFailedJobLog, and InsightsGET /quds/insights/failed-jobs. Mailer.sendhook for verify/reset mail. ExistingEmailAuth.onVerificationToken/onResetTokenstill run and still work alone.- Optional
DatabaseUserStorewhenAUTH_USER_STORE=database(default remainsMemoryUserStore; custom stores are not replaced). - Opt-in Prometheus text at
GET /quds/metrics(QUDS_METRICS=true). OptionalQUDS_METRICS_TOKEN. - When the live monitor owns stdout, logs also append to
storage/logs/app.logunlessQUDS_LOG_FILE=false(or a custom path).
0.0.13 #
- Replace the flickering full-screen monitor wipe with an in-place terminal panel (TTY only;
QUDS_MONITOR=true/falseto force). - Structured
Loglines with timestamp, level, and component (boot,http,db, …) for startup and runtime. - Boot path (env, providers, database, queue, WebSockets, bind) now logs as numbered professional steps instead of emoji
prints. - Queue jobs show an in-place preloader (
⠋ JobName) and settle to ✓ / ✗ with elapsed time. - Framed terminal logger attaches at boot (alternate screen, coalesced redraws) so logs stay inside the box without flicker.
0.0.12 #
- Add email/password identity (
EmailAuth) with verification and reset tokens, plus optionalAuthRoutes. - Add social login (
SocialAuth) for Google, Apple, and Firebase on top of the existing JWT pair. - Add
GcsStorageDiskandFILESYSTEM_DISK=gcs(JSON API, access token or service account). - Add custom readiness probes (
ReadinessChecker.add) and transition notifications (HealthNotifier/HEALTH_WEBHOOK_URL). - Add Insights HTML dashboard at
GET /quds/insights(same token gate;?token=accepted).
0.0.11 #
Production lifecycle (defaults unchanged) #
- Graceful shutdown on
SIGINT/SIGTERM: drain in-flight requests, stop the queue worker, close WebSockets and providers. CallQudsServerApp.close()or send a signal. ServiceProvider.shutdown()hook (default no-op — existing providers keep compiling).- Opt-in request limits via
QudsServerAppfields or env (MAX_CONCURRENT_REQUESTS,REQUEST_TIMEOUT_SECONDS,MAX_BODY_BYTES).0keeps unlimited 0.0.10 behavior. /quds/readypings the database (and Redis when those drivers are enabled)./quds/healthis unchanged.- Database queue: reserve-then-ack (no delete-before-handle), stale reservation reclaim,
quds_failed_jobson final failure. - SQL migrations take a portable lock so two processes cannot migrate at once.
Database.transaction()facade over the bound connection.
0.0.10 #
Phase A (additive; defaults unchanged) #
- Opt-in
SecurityHeadersMiddlewareandRequestIdMiddleware(not applied globally). Auth.issueTokensfor access/refresh token pairs.- Async
Unique/Existsvalidation rules. - Opt-in Admin Insights routes behind
QUDS_INSIGHTS=trueandQUDS_INSIGHTS_TOKEN(Bearer), with replaceableinsightsAuthorizerfor future admin-role checks.
Phase B (opt-in drivers) #
RedisCacheDriver+ optionalCacheServiceProvider; bind whenCACHE_DRIVER=redis.DatabaseQueueDriver,SerializableJob,JobRegistry, andQueue.cancel(memory returns false / removes by id).- Interval
Schedule.every+ export-onlyScheduleServiceProvider. - Optional
RedisBroadcastBridgewhenBROADCAST_DRIVER=redis. - Env auto-config in
registerProviders/servevia_configureDriversFromEnv(no change unless env vars are set).
Phase C (storage + migrations) #
- Storage disks:
LocalStorageDisk(default) and minimal S3-compatibleS3StorageDisk(SigV4 PUT/HEAD/DELETE;url()fromS3_PUBLIC_URL). - SQL file migrations:
FileMigrationRunner(database/migrations/<id>/up.sql), CLImake:migration/migrate/migrate:rollback, optionalMIGRATE_ON_BOOT. - Scaffold
.envcomments for optional drivers +docker-compose.yml(postgres + redis) onqserver create.
0.0.9 #
- Add
Cachefacade with in-memory driver and optional TTL (Cache.put/get/forget/flush). - Strengthen queues:
Queue.later/Queue.at, attempt tracking, and exponential backoff retries in the worker. - Add opt-in
RateLimitMiddleware(not applied globally). - Register reserved health routes:
GET /quds/healthandGET /quds/ready. - Layered env loading:
.envthen.env.$APP_ENV(falls back to.env/ process env when files are missing). - Add structured
Logfacade (debug/info/warning/error) plusLog.recordQueryslow-query hook; wireLoggerMiddlewareto it. - Harden WebSockets: configurable ping / idle timeout and
Auth.invalidateclosing related sockets. - Expand validators:
IsInt,IsBool,IsUrl,IsConfirmed,InRule(+ fluent helpers). - CLI:
make:middleware,make:provider,cache:clearhelp text, andexecutables.qserver. - Add
QudsTestClient/QudsRouter.dispatchTestfor HTTP tests without binding a port.
0.0.8 #
- Enrich the terminal monitor: each request now shows time of day, path with query, duration, and client IP.
- Add
ExceptionHandlerMiddlewareto catch pipeline errors, map them to HTTP responses, and persist them for later review (storage/logs/exceptions.logplus an in-memory list / monitor panel). - Allow a custom exception
handlercallback; unexpected errors are recorded even without the middleware viaGlobalExceptionHandler.
0.0.7 #
- Update dependencies to latest compatible versions (
dart_jsonwebtoken3.x,mime2.x,lints6.x, and Quds DB packages).
0.0.6 #
- Disable the welcome dashboard by default; enable it explicitly with
showWelcomePage = true. - Hide sensitive console diagnostics (env, database, host, metrics, endpoints) unless
APP_ENVis local/dev. - Register
/quds/statsonly when the welcome page is enabled, and return 404 outside local environments.
0.0.5 #
- Serialize
DateTimevalues in JSON responses as UTC (ISO 8601) for consistent, timezone-safe output. - Harden broadcasting: reject client-initiated
publishmessages over WebSockets; events can only be emitted from the server. - Remove the unused
sqflite_common_ffidependency and clean up unused imports. - Resolve all static analysis issues in the library.
0.0.4 #
- Update quds_db dependencies; remove unused native assets and test files.
0.0.3 #
- Improve task controller and broadcasting features.
0.0.2 #
- Add
*.exeto gitignore.
0.0.1 #
- Initial version.