Skip to content

Latest commit

 

History

History
1543 lines (1324 loc) · 71.1 KB

CHANGELOG.rst

File metadata and controls

1543 lines (1324 loc) · 71.1 KB

3.31.0:

  • #691 Cache SSL certificate files certChainFile and keyFile for 1 hour, and reload them if they are modified

3.30.2:

  • #690 Support running on Apple machines with M1 chip

3.30.1:

  • #688 Swagger documentation for BodyParam and Responses with JSON models generated from case classes
  • #689 Update dependency libraries

3.30.0:

  • #683 Support Scala 2.13 and 2.12, and update dependency libraries; Scala 2.11 and below are not supported

3.29.0:

  • #685 Update dependency libraries
  • #684 Drop support for Scala 2.11

3.28.18:

3.28.17:

  • #679 Update dependency libraries

3.28.16:

  • #675 Invalid range request causes increase in CPU usage as 100%
  • #677 Update dependency libraries

3.28.15:

  • #674 Update dependency libraries

3.28.14:

  • #672 Update dependency libraries

3.28.13:

  • #671 WebJars files cannot be served on Windows

3.28.12:

  • #669 Url.absUrl returns duplicate Config.baseUrl
  • #670 Update dependency libraries

3.28.11:

  • #667 Serve dot files in public directory
  • #666 Update dependency libraries

3.28.10:

  • #664 Catch autosetLanguage exception
  • #665 Update dependency libraries

3.28.9:

  • #663 Update dependency libraries

3.28.8:

  • #662 Set up WebSocket pipeline before handshake
  • #661 Update dependency libraries

3.28.7:

  • #660 Update dependency libraries

3.28.6:

  • #656 Fix OutOfMemoryError with too big request body
  • #657 Update dependency libraries

3.28.5:

  • #651 xitrum.Server.stop should wait until Xitrum is stopped
  • #654 Update dependency libraries

3.28.4:

  • #647 Readd support for %2F in path params
  • #648 Make Action#executionContext lazy to avoid starting Akka in tests
  • #650 Update dependencies

3.28.3:

  • #646 Update dependencies
  • #636 Truncate long params in access log

3.28.2:

  • #644 Fix Swagger response object
  • #645 Support Scala 2.12

3.28.1:

  • #634 Fix memory leak when params in request body are large and they need to be saved in temporary files
  • #635 Update Netty from 4.1.4 to 4.1.5
  • #637 Update Akka from 2.4.8 to 2.4.11
  • #638 Update JSON4S from 3.4.0 to 3.4.1
  • #639 Update metrics-scala from 3.5.4_a2.3 to 3.5.5_a2.3
  • #640 WebJars: Update jQuery 3.1.0 to 3.1.1
  • #641 WebJars: Update Swagger UI from 2.1.8-M1 to 2.2.5

3.28.0:

  • #626 Avoid duplicate info in error message
  • #627 Allow spaces and non-ASCII characters in static file names
  • #629 Remove tf, tcf, tnf, and tcnf in I18n; replace them with added t, tc, tn, and tcn variants
  • #630 Add I18n#locale (java.util.Locale)
  • #632 Add default loading image for Ajax post back
  • #628 Update Netty from 4.1.3 to 4.1.4
  • #631 WebJars: Update jQuery Validation from 1.15.0 to 1.15.1

3.27.0:

  • #614 Add object xitrum.action.Url so that it's easier to write URL helpers
  • #616 Use / instead of File.separatorChar in template path for Scalate so that it can work on Windows
  • #618 Simplify xitrum.view.TemplateEngine interface
  • #619 Add some more render and respond variants for completeness
  • #617 Update Netty from 4.1.1 to 4.1.3
  • #620 Update Akka from 2.4.7 to 2.4.8
  • #621 WebJars: Update jQuery 3.0.0 to 3.1.0
  • #622 WebJars: Replace jquery-validation from org.webjars with the one from org.webjars.bower
  • #623 WebJars: Update Swagger UI from 2.1.4 to 2.1.8-M1

3.26.2:

  • #608 Update Netty from 4.1.0 to 4.1.1
  • #610 Update Akka from 2.4.6 to 2.4.7
  • #609 Update slf4s-api from 1.7.12 to 1.7.13
  • #607 Update Scaposer from 1.7 to 1.8
  • #611 Update JSON4S from 3.3.0 to 3.4.0
  • #612 WebJars: Update jQuery 2.2.4 to 3.0.0
  • #606 Set serverName to localhost if HOST header does not exist

3.26.1:

  • #589 Update Scala from 2.11.7 to 2.11.8
  • #595 Update Netty from 4.0.33 to 4.1.0
  • #596 Update Akka from 2.4.1 to 2.4.6
  • #597 Update Schwatcher from 0.2.0 to 0.3.1
  • #600 Update metrics-scala from 3.5.2_a2.3 to 3.5.4_a2.3
  • #598 Update Twitter Chill from 0.7.2 to 0.8.0
  • #599 Update RhinoCoffeeScript from 1.9.3 to 1.10.0
  • #601 WebJars: Update jQuery 2.1.4 to 2.2.4
  • #602 WebJars: Update jQuery Validation from 1.14.0 to 1.15.0
  • #603 WebJars: Update sockjs-client from 1.0.3 to 1.1.1
  • #604 WebJars: Update d3js from 3.5.12 to 3.5.17
  • #594 In production mode, exception in non-GET action is mistakenly handled as "Missing param: csrf-token"
  • #593 Allow easy customizing error messages for BadRequest
  • #592 Change URL to access Swagger UI from /xitrum/swagger-ui back to /xitrum/swagger

3.26.0:

  • #547 Update Scala from 2.11.6 to 2.11.7 and drop support for Scala 2.10.x and Java 7
  • #579 Add xitrum.util.SeriDeseri.bytesToHex and bytesFromHex to convert bytes to hexadecimal string and vice versa
  • #568 Add xitrum.util.SeriDeseri.toJValue and fromJValue to convert Scala objects to JSON4S JValue and vice versa
  • #580 Add xitrum.util.Secure.hmacSha256 to calculate HMAC SHA256
  • #572 [Metrics] Fix JavaScript error at metrics detail page of actions
  • #574 [Metrics] Add single executionTime histogram for all actions
  • #583 Update metrics-scala from 3.5.1_a2.3 to 3.5.2_a2.3
  • #578 Update Netty from 4.0.30 to 4.0.33
  • #576 Update Akka from 2.3.12 to 2.4.1
  • #587 Update Schwatcher from 0.1.8 to 0.2.0
  • #566 Update Scaposer from 1.6 to 1.7
  • #581 Update Twitter Chill from 0.7.0 to 0.7.2
  • #582 Update JSON4S from 3.2.11 to 3.3.0
  • #573 WebJars: Update sockjs-client from 1.0.2 to 1.0.3
  • #585 WebJars: Update d3js from 3.5.5-1 to 3.5.12
  • #586 WebJars: Update Swagger UI from 2.1.1 to 2.1.4

3.25.0:

  • #541 routes.cache should be saved in tmpDir as configured in xitrum.conf
  • #542 Use cookie parsing's strict mode to avoid security problems
  • #550 Params extraction also works for request with content type application/json
  • #565 Allow to get request content body as JSON4S JValue
  • #555 Log error message when ssl certificate file not found
  • #548 Update Netty from 4.0.28 to 4.0.30
  • #554 Update Akka from 2.3.11 to 2.3.12
  • #563 Update Twitter Chill from 0.6.0 to 0.7.0
  • #549 Update slf4s-api from 1.7.10 to 1.7.12
  • #562 Update Scaposer from 1.5 to 1.6
  • #558 Update Swagger from 1.2 to 2.0
  • #559 Update Swagger UI from 2.0.24 to 2.1.1
  • #557 Update jQuery Validation from 1.13.1 to 1.14.0
  • #560 Update sockjs-client from 1.0.0 to 1.0.2
  • #564 Update RhinoCoffeeScript from 1.9.2 to 1.9.3

3.24.0:

  • #535 Localize function t doesn't work in Component
  • #527 Update Netty from 4.0.26 to 4.0.28
  • #528 Update Akka from 2.3.9 to 2.3.11
  • #529 Update Glokka from 2.2 to 2.3
  • #525 Update Schwatcher from 0.1.6 to 0.1.8
  • #536 Update Twitter Chill from 0.5.2 to 0.6.0
  • #537 Update commons-lang3 from 3.3.2 to 3.4
  • #538 Update metrics-scala from 3.3.0_a2.3 to 3.5.1_a2.3
  • #539 WebJars: Update jquery from 2.1.3 to 2.1.4, d3js from 3.5.3 to 3.5.5-1
  • #540 Update RhinoCoffeeScript from 1.9.0 to 1.9.2
  • #533 Update sockjs-client from 0.3.4-1 to 1.0.0

3.23:

  • #503 Make respondSockJsXxx return Future like other respondXxx methods
  • #504 The result of xitrum.Server.start can be used to stop the server
  • #505 Reset session when there's type cast error with SessionVar
  • #508 Respond 400 Bad Request when params in request URI or body can't be decoded, not just closing the connection
  • #512 Add config maxHeaderSize (for the entire HTTP header, defaults to 8192)
  • #518 Make xitrum.util.SeriDeseri.fromXXX return String by default, instead of Nothing
  • #517 Update Scala to 2.10.5 and 2.11.6
  • #519 Update Netty from 4.0.25 to 4.0.26
  • #511 Update RhinoCoffeeScript from 1.8.0 to 1.9.0
  • #515 Update Schwatcher from 0.1.5 to 0.1.6
  • #520 Update slf4s-api from 1.7.7 to 1.7.10
  • #521 Update Twitter Chill from 0.5.1 to 0.5.2
  • #523 Update SockJS JS library from 0.3.4 to 0.3.4-1

3.22:

  • #459 Optimize route collecting: Ignore more packages that obviously don't contain routes
  • #495 Update Netty from 4.0.24 to 4.0.25
  • #501 Update Akka from 2.3.8 to 2.3.9
  • #498 Update Javassist from 3.18.2-GA to 3.19.0-GA
  • #497 Update jQuery from 2.1.1 to 2.1.3
  • #500 Update D3.js from 3.5.2 to 3.5.3

3.21:

  • #489 When forwardTo is called in a before filter, the action's execute method should not be called
  • #491 Remove paramso; params returns Seq.empty when there's no such param
  • #455 PoLoader should watch src/main/resources/i18n directory in development mode
  • #493 Add some more methods to xitrum.util.Loader
  • #492 Update Akka from 2.3.7 to 2.3.8

3.20:

  • #482 paramo, params, and paramso should not filter out empty params
  • #484 Add methods in Option to RequestVar and SessionVar
  • #481 Allow enabling cache in development mode/disabling cache in production mode
  • #480 Update Glokka from 2.0 to 2.2
  • #485 Update Twitter Chill from 0.5.0 to 0.5.1
  • #487 Update jQuery Validation from 1.13.0 to 1.13.1
  • #486 Update D3.js from 3.4.13 to 3.5.2

3.19:

  • #452 Postback: Split data-extra to data-params and data-form
  • #460 Make respondView more convenient, so that one action can have multiple views
  • #463 Do not ignore empty uploaded files
  • #466 Add xitrum.util.Loader.bytesToFile method to write to file
  • #467 Improve xitrum.util.SeriDeseri methods
  • #474 Add isEmpty to SessionVar for convenience
  • #475 Make writing before filters more convenient: If a filter responds something, the main action will not be called; you don't have to make the filter return true/false any more
  • #462 Switch back to Twitter's Chill (from chill-scala) because it now supports Scala 2.11
  • #476 Update Netty from 4.0.23 to 4.0.24; SSLv3.0 is disabled to avoid POODLE vulnerability
  • #461 Update Akka from 2.3.5 to 2.3.7
  • #465 Update Scaposer from 1.4 to 1.5; the original string is used when it hasn't been translated yet
  • #478 Update JSON4S from 3.2.10 to 3.2.11
  • #469 Update metrics-scala from 3.2.1_a2.3 to 3.3.0_a2.3
  • #470 Update RhinoCoffeeScript from 1.7.1 to 1.8.0
  • #471 Update Swagger UI from 2.0.22 to 2.0.24
  • #479 Update D3.js from 3.4.11 to 3.4.13

3.18:

  • #446 Fix bug: Action cache does not work when the response is not gzip
  • #307 Add option edgeTriggeredEpoll to xitrum.conf to use Netty's epoll feature for maximal performance and low latency
  • #429 Generate Swagger API doc listing so that codegen tool works
  • #448 Update Swagger UI from 2.0.18 to 2.0.22
  • #443 paramo returns None for empty param, params and paramso ignore empty params
  • #438 In dev mode, only recollect routes when there's .class file change
  • #441 Move routes.cache to tmp directory
  • #442 Add respond404Page and respond500Page
  • #444 Update Akka from 2.3.4 to 2.3.5
  • #445 Update Netty from 4.0.21 to 4.0.23
  • #449 Update metrics-scala from 3.2.0_a2.3 to 3.2.1_a2.3

3.17:

  • #434 [Autoreload in dev mode] Replace classloaders with DCEVM
  • #436 Check for CSRF when request method is PATCH
  • #439 Fix type cast error at PoLoader
  • #432 Update Swagger UI from 2.0.17 to 2.0.18
  • #433 Update D3.js from 3.4.8 to 3.4.11
  • #435 Update jQuery Validation from 1.12.0 to 1.13.0

3.16:

  • #428 Fix: SeriDeseri.{fromJson, toJson} doesn't work in dev mode
  • #416 [Autoreload in dev mode] Autoreload all directories in classpath (with this improvement, Xitrum can autoreload dependency modules in multimodule SBT projects)
  • #430 Fix: JS error at metrics page of indiviual actions

3.15:

  • #415 Fix: publicUrl/3 reverses paths of development mode and production mode
  • #420 [Autoreload in dev mode] Allow disabling autoreload
  • #418 [Autoreload in dev mode] Allow specifying classes that shouldn't be reloaded
  • #426 Add xitrum.Config.xitrum.tmpDir
  • #413 [Metrics viewer] Add reconnection
  • #425 Update Netty from 4.0.20 to 4.0.21
  • #424 Update Akka from 2.3.3 to 2.3.4

3.14:

  • #400 Support both Scala 2.10.x and 2.11.x
  • #81 Reload classes in development mode
  • #398 Recollect routes in development mode
  • #399 Add xitrum.Component
  • #390 Add validation method "check" that returns true/false
  • #393 For development mode, set Netty's ResourceLeakDetector level to ADVANCED
  • #395 Fix memory leak at xitrum.util.SeriDeseri.fromUrlSafeBase64
  • #394 Add automatic error handling (error 500) for ActorAction
  • #404 At boot, add config directory to classpath, if it's not in classpath
  • #411 Set Action#requestCookies to empty when there's problem decoding cookies
  • #408 Metrics: Ignore the actions of metrics itself
  • #409 Update Netty from 4.0.19 to 4.0.20
  • #410 Allow the use of OpenSSL engine for faster HTTPS
  • #407 Update Javassist from 3.18.1-GA to 3.18.2-GA

3.13:

  • #363 Use SLF4S instead of using SLF4J directly
  • #385 Support WebJars; rename resourceUrl to webJarsUrl
  • #383 Update Scala from 2.11.0 to 2.11.1
  • #384 Update Akka from 2.3.2 to 2.3.3
  • #387 Update JSON4S from 3.2.9 to 3.2.10
  • #388 Update metrics-scala from 3.1.1.1_a2.3 to 3.2.0_a2.3

3.12:

  • #372 ParamAccess: Support all primitive types
  • #373 Add respondWebSocketJson and respondSockJsJson
  • #374 Merge UrlSafeBase64 to SeriDeseri; Also solve memory leak problem
  • #375 Add toBase64 and fromBase64 to SeriDeseri
  • #376 Embed Xitrum CSRF token to requests from Swagger UI
  • #379 Add xitrum.version
  • #380 Recreate routes.cache when Xitrum is updated
  • #362 Update Schwatcher from 0.1.4 to 0.1.5
  • #381 Update D3.js from 3.4.6 to 3.4.7
  • #382 Update Swagger UI from 2.0.16 to 2.0.17

3.11:

  • #357 Update Scala from 2.10.4 to 2.11.0
  • #361 Update Netty from 4.0.18 to 4.0.19
  • #358 Update JSON4S from 3.2.8 to 3.2.9
  • #359 Update metrics-scala from 3.0.5_a2.3 to 3.1.1.1_a2.3
  • #365 Update Schwatcher from 0.1.1 to 0.1.4
  • #368 Update jQuery from 1.11.0 to 1.11.1
  • #369 jQuery Validate from 1.11.1 to 1.12.0
  • #370 Update Swagger UI from 2.0.14 to 2.0.16
  • #356 Fix: Remove metrics route when metrics is disabled
  • #360 Split "Imperatively" feature (using Scla continuations) to a separate project
  • #143 Replace Manifest with TypeTag when Scala 2.11 is released
  • #364 Replace Twitter Chill with chill-scala-2.11

3.7:

  • #354 Fix HTTP keep alive and pipelining do not work

3.6:

  • #347 Fix Terrible performance of FutureAction and ActorAction
  • #348 Fix bug: Unable to change Content-Type for respondFile and respondResource
  • #80 Integrate Metrics (for actions statistics etc.)
  • #337 Update Scala from 2.10.3 to 2.10.4 (you need to update your own projects to use Scala 2.10.4)
  • #339 Update Netty from 4.0.17 to 4.0.18
  • #342 Update Glokka from 1.7 to 1.8 (update Akka from 2.3.0 to 2.3.2)
  • #332 Update JSON4S from 3.2.7 to 3.2.8 and replace json4s-native with json4s-jackson
  • #341 Update SLF4J from 1.7.6 to 1.7.7, Logback from 1.1.1 to 1.1.2
  • #343 Update commons-lang3 from 3.3 to 3.3.2

3.5:

  • #329 Netty's HttpRequestDecoder unable to parse request
  • #333 Update Glokka from 1.6 to 1.7 (update Akka from 2.2.3 to 2.3.0)

3.4:

  • #322 Handle "Expect: 100-continue" requests
  • #327 Fix path exception when autoreloading i18n files on Windows
  • #328 Load language lazily

3.3:

  • #275 Add a way to change session cookie max age
  • #316 SockJS: Change heartbeat from 5s to 25s
  • #317 SockJS: Add heartbeat for WebSocket transport
  • #318 Fix Netty memory leak at xitrum.util.UrlSafeBase64
  • #323 Stop Xitrum at startup on port bind exception
  • #315 Update Akka from 2.2.3 to 2.3.0
  • #319 Update Twitter Chill from 0.3.5 to 0.3.6
  • #320 Update Schwatcher from 0.0.9 to 0.1.0
  • #325 Update commons-lang3 from 3.2.1 to 3.3

3.2:

  • #312 Fix bug at xitrum.js: when ajaxLoadingImg is not specified, the next element of the submit element is removed
  • #268 Add xitrum.util.FileMonitor (requires Java 7)
  • #308 Reload .po files updated at runtime
  • #311 xitrum.util: Merge Json and SecureUrlSafeBase64 to SeriDeseri
  • #297 Disable xitrum.local.LruCache in development mode
  • #306 Update Netty from 4.0.16 to 4.0.17

3.1:

  • #292 Fix chunked response bug
  • #295 Fix bug at responding static file in the zero copy style
  • #288 Add Scalive
  • #289 Update SLF4J from 1.7.5 to 1.7.6, Logback from 1.0.13 to 1.1.1
  • #300 Update Netty from 4.0.15 to 4.0.16
  • #301 Update JSON4S from 3.2.6 to 3.2.7
  • #302 Update RhinoCoffeeScript from 1.6.3 to 1.7.1
  • #303 Update jQuery from 1.10.2 to 1.11.0
  • #304 Update Swagger UI from 2.0.4 to 2.0.12

3.0:

  • #151 Update Netty from 3.9.0 to 4.0.15
  • #284 Fix: xitrum.local.LruCache#putIfAbsent can't overwrite stale cache
  • #265 Add FutureAction, rename ActionActor to ActorAction, SockJsActor to SockJsAction, WebSocketActor to WebSocketAction
  • #261 Add convenient methods to manipulate routes after they are collected at startup
  • #269 Increase akka.logger-startup-timeout from 5s to 30s to avoid Akka's log initialization timeout error at Xitrum startup
  • #263 Increase access log level from DEBUG to INFO
  • #259 Log WebSocket messages at TRACE level
  • #272 Add sockJsCookieNeeded in xitrum.conf so that this option can be set when deploying, depending on deployment environment
  • #74 Flash socket policy server can use the same port with HTTP server
  • #274 Update commons-lang3 from 3.1 to 3.2.1
  • #282 Update Swagger UI from 2.0.3 to 2.0.4

2.15:

  • #77 Remove HttpChunkAggregator to avoid memory problem with file upload
  • #258 Add config for saving upload files to memory or to disk temporarily
  • #257 Add config for directory path to save uploaded files temporarily
  • #256 Replace syntax respondView(classOf[OtherAction]) with respondView[OtherAction]()
  • #255 Update Netty from 3.8.0 to 3.9.0

2.14:

  • #252 Fix cache TTL bug
  • #244 Easier way to get request content as string and JSON
  • #245 Rename "atJs" to "atJson"
  • #248 Collect all routes
  • #249 Improve inheritance rule of route annotations
  • #250 CORS allow-origin should not be set for domain not specified in xitrum.conf
  • #253 Update JSON4S from 3.2.5 to 3.2.6
  • #254 Update Swagger UI from 2.0.2 to 2.0.3

2.13:

  • #239 Readd feature: One action can have multiple routes
  • #236 Remove Swagger related routes when it is disabled
  • #145 Split Knockout.js to a separate module
  • #234 xitrum.js: Fix bug XITRUM_BASE_URL does not exist
  • #237 xitrum.js: Add withBaseUrl
  • #242 Add atJs; atJs("key") returns the JSON form of at("key")
  • #238 CSRF token can be set in header

2.12:

  • #230 Fix bug Routes with trailing '/' are not matched
  • #218 Make Hazelcast optional
  • #221 xitrum.conf: Improve config of template engine, cache, and session store
  • #159 Support dot in route
  • #206 Support index.html fallback
  • #209 Support automatic OPTIONS request handling for the whole site
  • #71 Support automatic CORS request handling for the whole site
  • #204 Log Xitrum additional routes separately from app routes
  • #233 Add xitrum.Log package object for convenience use
  • #223 Rename logger to log
  • #195 Rename xitrumCSS to xitrumCss
  • #216 Remove package xitrum.mq
  • #211 Remove xitrum/routes.js
  • #220 Optimize xitrum.util.Loader.bytesFromInputStream
  • #227 Optimize xitrum.util.Json by avoid creating formats at every call
  • #196 Swagger: Rename Optional<ValueType><ParamType> to Opt<ValueType><ParamType>, ex: OptStringQuery
  • #198 Swagger: Add inheritance
  • #199 Swagger: Add notes
  • #232 Update Netty from 3.7.0 to 3.8.0
  • #214 Update Glokka from 1.2 to 1.3 (and akka-slf4j to 2.2.3)
  • #231 Update Twitter Chill from 0.3.4 to 0.3.5
  • #200 Update Scaposer from 1.2 to 1.3
  • #222 Update Knockout.js from 2.3.0 to 3.0.0

2.11: This release contains a noisy debug println, please use 2.12 instead

2.10:

  • #180 Swagger: Add option to xitrum.conf to disable Swagger Doc
  • #181 Swagger: Improve annotations
  • #182 Swagger: Cache result on 1st access
  • #185 Swagger: Include Swagger UI
  • #183 Fix: Dead actor sends Terminate message to itself
  • #194 Fix: Wrong version (2.10.0) of scala-compiler, scala-reflect, and scalap is used
  • #51 Add bin/runner.bat for Windows
  • #93 Readd indices for xitrum.mq.MessageQueue
  • #179 Add route aliasing
  • #189 Add option to xitrum.conf to configure request maxInitialLineLength
  • #193 Add request.staticFilePathRegex to xitrum.conf
  • #172 Replace Java annotations with Scala annotations
  • #191 Placeholder in URL can't be empty
  • #132 Log network card interface
  • #192 Update Twitter Chill from 0.3.2 to 0.3.4

2.9:

  • #169 Add Swagger Doc support
  • #173 Speed up routing by caching latest matched routes
  • #174 Redirect Akka log to SLF4J
  • #175 Optimize static file serving by readding /public/ prefix
  • #176 Change SkipCSRFCheck to SkipCsrfCheck; same for antiCSRFMeta etc.
  • #177 Make routes.cache loading more robust with class name change
  • #168 Better support for custom handler
  • #167 Update Netty from 3.6.6.Final to 3.7.0.Final
  • #171 Update Hazelcast from 3.0.1 to 3.0.2
  • #170 Update Glokka from 1.1 to 1.2
  • #178 Update Twitter Chill from 0.3.1 to 0.3.2

2.8:

  • #164 Fix: publicUrl and resourceUrl return URL containing double slash if reverseProxy.baseUrl in xitrum.conf is set
  • #157 Support HTTP method PATCH
  • #161 Update SBT from 0.12.4 to 0.13.0
  • #162 Update Akka from 2.2.0 to 2.2.1
  • #158 Update Hazelcast from 2.6 to 3.0.1
  • #163 Update Twitter Chill from 0.3.0 to 0.3.1

2.7:

  • #152 Fix: Static files in public directory are not served on Windows
  • #155 Fix: Workaround for thread safety problem of Scala reflection API
  • #146 Add config option to disable auto gzip
  • #140 Update Scala from 2.10.1 to 2.10.2
  • #148 Update Akka from 2.1.4 to 2.2.0
  • #142 Update Hazelcast from 2.5.1 to 2.6
  • #153 Update Twitter Chill from 0.2.3 to 0.3.0
  • #154 Update JSON4S from 3.2.4 to 3.2.5
  • #147 Update RhinoCoffeeScript to 1.6.3
  • #149 Update jQuery from 1.10.0 to 1.10.2
  • #150 Update Knockout.js from 2.2.1 to 2.3.0

2.6:

  • #135 Fix: Hangs up on cached action
  • #119 Close connection after sendUnsupportedWebSocketVersionResponse
  • #139 Add UnserializableSessionStore
  • #136 Update Netty to 3.6.6.Final
  • #133 Update Akka to 2.1.4
  • #137 Update Twitter Chill to 0.2.3
  • #138 Update jQuery to 1.10.0

2.5:

  • #126 Basic authentication causes NullPointerException
  • #127 Update Twitter Chill to 0.2.2

2.4:

  • #115 Replace Javassist with ASM to reduce the number of dependencies
  • #121 Update Twitter Chill to 0.2.1
  • #123 Update Hazelcast to 2.5.1

2.3:

  • #120 Add javacOptions -source 1.6 to avoid problem when Xitrum is built with Java 7 but the projects that use Xitrum are run with Java 6

2.2:

  • #112 Add redirectToThis to redirect to the current action
  • #113 Rename urlForPublic to publicUrl, urlForResource to resourceUrl
  • #117 Apps can be configured to use no template engine
  • #118 Route collecting: support getting cache annotation from superclasses

2.1:

  • #110 Can't run in production mode because SockJsClassAndOptions in routes can't be serialized
  • #111 Unify the "execute" method for Action, ActionActor, WebSocketActor, and SockJSActor

2.0: #104 <https://github.com/xitrum-framework/xitrum/issues/104 Annotate your Akka actor to make it accessible from web

  • Break actions in controller out to separate classes, each is an Action or an ActionActor; your action can be an actor
  • Rewrite part of SockJS using ActionActor
  • Add connection abort handling for SockJS
  • Support "/" in SockJS path prefix
  • Support WebSocket binary frame
  • Allow starting server with custom Netty ChannelPipelineFactory; for an example, see xitrum.handler.DefaultHttpChannelPipelineFactory
  • Speed up CoffeeScript compiling by using https://github.com/xitrum-framework/RhinoCoffeeScript
  • Use Akka log instead of using SLF4J directly
  • Ignore trailing slash in URL: treat "articles" and "articles/" the same; note that trailing slash is not recommended since browsers do not cache page with such URL
  • Update Netty to `3.6.5 <http://netty.io/news/2013/04/09/3-6-5-Final.html>_, jQuery Validate to `1.11.1 <http://bassistance.de/2013/03/22/release-validation-plugin-1-11-1/>_, Sclasner to 1.6, and xitrum-scalate to 1.1

1.22:

  • #106 Update JSON4S to 3.2.4
  • #107 Update Netty to 3.6.4

1.21:

  • #103 Move Scalate template engine out to a separate project
  • #105 Move xitrum-sbt-plugin out to a separate project
  • #100 Update JSON4S to 3.2.3
  • #102 Update slf4j-api to 1.7.5

1.20:

  • #88 Replace JBoss Marshalling with Twitter's Chill
  • #99 Use ReflectASM (included by Twitter Chill) to initiate controllers faster
  • #96 Rename xitrum.util.Base64 to UrlSafeBase64, SecureBase64 to SecureUrlSafeBase64
  • #97 Update SLF4J from 1.7.2 to 1.7.3, Logback from 1.0.9 to 1.0.10 You should update Logback in your project from 1.0.9 to 1.0.10
  • #98 Update Akka from 2.1.1 to 2.1.2

1.19:

  • #91 Update Akka from 2.1.0 to 2.1.1
  • #94 Improve Secure#unseal

1.18:

  • #87 Update Netty from 3.6.2 to 3.6.3
  • #90 Update jQuery Validate from 1.10.0 to 1.11.0

1.17:

  • Avoid error of instantiating abstract controller while collecting routes

1.16:

1.15:

See these examples to know how to update your project from 1.14 to 1.15:

1.14:

Updating your project from Xitrum 1.13 to 1.14 is simple.

1.13:

1.12:

1.11:

1.10:

1.9.10:

1.9.9:

1.9.8:

1.9.7:

1.9.6:

  • Support WebSocket for iPhone Safari when running on port 80 (HTTP) or 443 (HTTPS); previous Xitrum versions work OK for iPhone Safari when non-standard ports are used
  • Improve i18n feature, e.g. add autosetLanguage method: http://xitrum-framework.github.io/guide/i18n.html

1.9.5:

1.9.4:

  • Fix bug that causes non-empty 304 Not Modified response to be sent. This buggy response will be sent when respondFile is used in your controllers. You should upgrade to Xitrum 1.9.4 as soon as possible because Chrome cannot handle this response properly (but Firefox, Safari, and even IE can).

1.9.3:

1.9.2:

1.9.1:

1.9:

  • Use Netty 3.5.0.Final instead of 4.0.0.Alpha1-SNAPSHOT for file upload To upgrade, in your project in most cases just replace io.netty.xxx with org.jboss.netty.xxx Ex: Old code: import io.netty.util.CharsetUtil.UTF_8 New code: import org.jboss.netty.util.CharsetUtil.UTF_8
  • basicAuthenticate now works as documented: http://xitrum-framework.github.io/guide/howto.html#basic-authentication
  • Add I18n#tf, tcf, tnf, tcnf for formatted string; Standard placeholders %d, %s etc. work, but if the formatted string contains many of them, their order should not be changed
  • sbt publish-local can be run easily by anyone, not only core developers
  • Update Hazelcast from 2.0.2 to 2.1.2
  • Update SLF4J from 1.6.4 to 1.6.6

1.8.7:

  • Add build for Scala 2.9.2
  • To get URL to WebSocket action: ControllerObject.action.webSocketAbsoluteUrl
  • Update Hazelcast from 2.0.1 to 2.0.2
  • Fix #63 #63

1.8.6:

1.8.5:

  • Regex can be used in routes to specify requirements: def show = GET("/articles/:id<[0-9]+>") { ... }
  • Update Hazelcast from 2.0 to 2.0.1
  • Update Javassist from 3.15.0-GA to 3.16.1-GA

1.8.4:

  • Update Hazelcast from 1.9.4.8 to 2.0
  • Remove ExecutionHandler. If your action performs a blocking operation that takes long time or accesses a resource which is not CPU-bound business logic such as DB access, you should do it in the async style (better) or use a separate thread pool to avoid unwanted hiccup during I/O because an I/O thread cannot perform I/O until your action returns the control to the I/O thread.
  • For each connection, requests will be processed one by one. From Mongrel2: http://mongrel2.org/static/book-finalch6.html Where problems come in is with pipe-lined requests, meaning a browser sends a bunch of requests in a big blast, then hangs out for all the responses. This was such a horrible stupid idea that pretty much everone gets it wrong and doesn't support it fully, if at all. The reason is it's much too easy to blast a server with a ton of request, wait a bit so they hit proxied backends, and then close the socket. The web server and the backends are now screwed having to handle these requests which will go nowhere.

1.8.3:

1.8.2:

1.8:

1.7:

1.6:

  • Redesign filters to be typesafe
  • Add after and around filters
  • Add Loader.json and use JSON for config files (.json files should be used instead of .properties files)

1.5.3:

  • Close connection for HTTP 1.0 clients. This allows Xitrum to be run behind Nginx without having to set proxy_buffering to off. Nginx talks HTTP/1.1 to the browser and HTTP/1.0 to the backend server, and it needs the backend server to close connection after finishing sending response to it. See http://wiki.nginx.org/HttpProxyModule.
  • Fix the bug that causes connection to be closed immediately when sending file from action using renderFile to HTTP 1.0 clients.

1.5.2:

  • Add xitrum.Config.root (like Rails.root) and fix #47
  • Better API for basic authentication
  • renderFile now can work with absolute path on Windows
  • Exit if there's error on startup
  • Update SLF4J from 1.6.2 to 1.6.4 (and Logback from 0.9.30 from to 1.0.0)
  • Update Hazelcast from 1.9.4.3 to 1.9.4.4

1.5.1:

  • Update Jerkson from 0.4.2 to 0.5.0

1.5:

  • Static public files now do not have to have /public prefix, this is convenient but dynamic content perfomance decreases a little
  • Applications can handle 404 and 500 errors by their own instead of using the default 404.html and 500.html
  • Change validation syntax to allow validators to change HTML element: <input type="text" name={validate("username", Required)} /> now becomes {<input type="text" name="username" /> :: Required}

    <input type="text" name={validate("param", MaxLength(32), MyValidator)} /> now becomes {<input type="text" name="param" /> :: MaxLength(32) :: MyValidator}

    <input type="text" name={validate("no_need_to_validate")} /> now becomes {<input type="text" name="no_need_to_validate" /> :: Validated}

  • Implement more validators: Email, EqualTo, Min, Max, Range, RangeLength
  • Update jQuery Validation from 1.8.1 to 1.9.0: https://github.com/jzaefferer/jquery-validation/blob/master/changelog.txt
  • Textual responses now include charset in Content-Type header: http://code.google.com/speed/page-speed/docs/rendering.html#SpecifyCharsetEarly
  • Fix bug header not found: Content-Length for 404 and 500 content

1.4:

  • Fix bug at setting Expires header for static content, it is now one year later instead of 17 days later
  • Set Expires header for resources in classpath
  • HTTPS (see config/xitrum.properties) KeyStore Explorer is a good tool to create self-signed keystore: http://www.lazgosoftware.com/kse/index.html

1.3:

  • Update

    Hazelcast: 1.9.4.2 -> 1.9.4.3 Jerkson: 0.4.1 -> 0.4.2 SBT: 0.10.1 -> 0.11.0

  • Improve performance, based on Google's best practices: http://code.google.com/speed/page-speed/docs/rules_intro.html Simple benchmark (please use httperf, ab is broken) on MacBook Pro 2 GHz Core i7, 8 GB memory: Static file: ~11000 req/s Resource file in classpath: ~11000 req/s Dynamic HTML without layout: ~7000 req/s Dynamic HTML with layout: ~7000 req/s
  • Only gzip when client specifies "gzip" in Accept-Encoding request header

1.2:

  • Conditional GET using ETag, see: http://stevesouders.com/hpws/rules.php
  • Fix for radio: SecureBase64.encrypt always returns same output for same input <input type="radio" name={validate("light")} value="red" /> <input type="radio" name={validate("light")} value="yellow" /> <input type="radio" name={validate("light")} value="green" />

1.1:

  • i18n using Scaposer
  • Faster route collecting on startup using Sclasner