Skip to content
Tags give the ability to mark specific points in history as being important
  • 0.10.1 protected
    Dependency upgrades
    
  • 0.10.0 protected Release: 0.10.0 • Row, Column, headless Text, and the return of the web demo
    Row, Column, headless Text, and the return of the web demo
    
    ### Components
    
    - Experimental: created Row and Column (8a600db5, #212, !130)
    
    ### Design: Headless
    
    - Support for Text (121eceb8, !123)
    - Support for Row and Column (349eb55c, #212, !130)
    
    ### Design: Material3 AndroidX
    
    - Support for Row and Column (5899daaa, #212, !130)
    
    ### Design: Material3 HTML
    
    - Created this module, based on our Material3 reimplementation with TailwindCSS (!125)
    - Support for Button and its variants (9f82b2b0, !125)
    - Support for Text (6a18f632, !125)
    - Support for Row and Column (5d0049e4, #212, !130)
    
    ### Design: PureCSS
    
    - Support for Row and Column (9355685c, #212, !130)
    
    ### Demo
    
    - Support for Kotlin/JS (#210, !124, !128, 64f2cc88)
    - Allow selecting between multiple design systems at runtime (6b01dc15, !125)
    
    ### Dependencies
    
    - Kotlin 1.9.22
    - Compose Multiplatform 1.5.12
    - TailwindCSS 3.4.1 (#211, !127)
    - PostCSS 8.4.35 (#211, !127)
    - Autoprefixer 10.4.17 (#211, !127)
    - KotlinX.Coroutines 1.8.0 (4662fc90, !131)
    - Pedestal 2.1.1 (ef1aea7b, !131)
    - Prepared 1.0.0-rc.2 (6586ff6b, !131)
    - Material3 HTML (ccf2de41, !131)
    - AndroidX Material 1.11.0 (a1f6dc24, !131)
    - Kotlin/JS Resources 0.2.1 (66c2ba60, !131)
    
  • 0.9.0 protected Release: 0.9.0 • Buttons, unformatted text, and documentation
    Buttons, unformatted text, and documentation
    
    ### Components
    
    - Document the restricted stability contract of the arguments classes (b1d3b841, !115)
    - Introduce the concept of "action responsibility" (d410785d, !115)
    - Add the button components (94e79da8, !115)
    - Add the unformatted text component (2be6d2da, !119)
    
    ### Design: Headless
    
    - Migrate the Headless design system from the legacy codebase (#207, !116)
    - Implement headless buttons (#207, 68887710, !116)
    - Introduce spies to capture composition-bound variables (2f1ab0b0, !116)
    
    ### Design: PureCSS
    
    - Implement the buttons (#203, !117)
    - Implement the text component (449e4523, !119)
    
    ### Design: Material3 (AndroidX)
    
    - Implement the buttons (a8b11634, !119)
    - Implement the text component (c9cf2116, !119)
    
    ### Demo
    
    - Recreate the demo app using the new KMP wizard (#202, !118)
    - Use the Material3 theme for the Desktop platform (b51c15b9, !119)
    
    ### Documentation
    
    - New README with a comparison with Redwood (#206, !113)
    - Issue label reorganization (#206, !113)
    
    ### Dependencies
    
    - Pedestal 2.1.0 (a2929255, !115)
    
  • 0.8.0 protected Release: 0.8.0 • The Great Restructuring
    The Great Restructuring
    
    Our main road block until now, a Compose compiler block, has been fixed.
    Previously, we had to use quite a few hacks to workaround it, which made the codebase harder to understand.
    
    With this release, we're starting a process of cleaning up the repository.
    The previous code has been moved to the `legacy` folder, such that the repository root contains only clean code (#194, !105).
    
    ### Polymorphic Compose
    
    The core of Decouple is the ability to declare polymorphic composable functions: UI components whose implementation can be switched at runtime.
    This feature now lives in its own micro module, such that it can be reused by other projects for other means.
    
    - Create the module (f641595d, !105)
    - Rename it to Polymorphic Compose ()
    
    ### Components
    
    This module will contain the flagship feature of Decouple: organizing UI components by their role, not their design.
    This will allow making applications or features (e.g. a log-in screen) of which users can entirely customize the design.
    
    - Create the DesignSystem interface (ce08dd05, !105)
    - Create the experimental annotation (55efac7c, !105)
    
    ### Dependencies
    
    - OpenSavvy Gradle Conventions 0.3.2 (!111)
    - Kotlin 1.9.21 (!111)
    - Compose Multiplatform 1.5.11 (!111)
    
    ### Build and deployment
    
    - The project is now based on the Gradle Playground (#195, !105)
    
  • 0.7.3 protected Release: 0.7.3 • Documentation improvements
    Documentation improvements
    
    ### Documentation
    
    - Fixed the links to the documentation in the README (#150, !87)
    - Added a tutorial to discover Compose and Decouple (#150, !87)
    - List all components in the documentation (#151, !88)
    - Module headers for all modules with stability declarations (#165, !93)
    
    ### Demo
    
    - Added a calculator example (!84) by @chrhuang
    
    ### Build and deployment
    
    - Reworked the module names for simpler navigation (#164, !91)
    - Publish all modules to the GitLab Maven Registry (#163, !92)
    - Gradle 8.1.1 (#130, !94)
    
  • 0.7.2 protected Release: 0.7.2 • Build optimization and AndroidX fixes
    Bug fixes and dependency upgrades
    
    ### AndroidX implementation
    
    - Fix the global navigation bar being displayed off-screen (#133, !81)
    - Fix the progress indicator being too large (#73, !77)
    - Add the progress indicator to buttons and chips (#73, !77)
    
    ### Build and deployment
    
    - Removed the Palantir Git plugin for Gradle (#141, !79)
    - Configure JVM toolchains for JDK 17 (#136, !80)
    - Upgrade Pedestal, remove the Pedestal State and Arrow dependencies (#138, !82)
    
    ### Contributors
    
    Thanks to our contributors.
    
    - @chrhuang for the progress indicator changes
    
  • 0.7.1 protected
    69b17a05 · merge: OpenSavvy style ·
    Release: 0.7.1 • Web navigation and contribution guide
    Web navigation and contribution style
    
    ### Material Tailwind
    
    - Better styling for the global navigation (#54, !76)
    
    ### Build and deployment
    
    - Centralized the contribution guide with the other OpenSavvy projects (#139, !78)
    
  • 0.7.0 protected Release: 0.7.0 • Desktop, logo and headless improvements
    Desktop, logo and testing improvements
    
    ### Project image and documentation
    
    - Decouple now has a logo (#118, !60)
    - IDEA displays the logo in the project list (!65)
    
    ### Core
    
    - Renamed FilterChip(activated=) to FilterChip(active=) (#101, #121, !61, !64)
    
    ### Demo
    
    - Added a headless test to showcase how to use them in the demo (#102, !68)
    - Added support for Compose Desktop (!52)
    
    ### Material AndroidX
    
    - Added support for Compose Desktop (!52)
    
    ### Headless
    
    - Convenience functions to get the text contents of a component (#116, !67)
    - Added a documentation link from each headless component to the Core equivalent (#128, !69)
    - Renamed TestUI to HeadlessUI (#127, !70)
    
    ### Build and deployment
    
    - Full Gradle build rewrite using convention plugins (#98, #110, !62)
    - Kotlin 1.8.10, Compose 1.3.1 (d0bc9217, !62)
    - The project has been moved from Gradle coordinates "opensavvy:<module>" to "opensavvy.decouple:<module>" (#125, !66)
    - Enabled the Gradle build cache (#131, !74)
    - Removed the SAST and DAST CI jobs, which didn't work but took CI quota (#112, !73)
    - Migrated to the Android source set layout v2 (#122, !75)
    
    ### Contributors
    
    Thanks to our new and renewed contributors.
    
    - @LandryNorris for the Desktop support
    - Magali Damourette for the logo
    
  • 0.6.0 protected Release: 0.6.0 • Headless testing, KotlinLang Slack and more documentation for contributors
    Headless testing, KotlinLang Slack and more information for contributors
    
    ### Headless
    
    `headless` is a new module to help with headless UI testing, where the application UI is run and instrumented without a real GUI.
    
    - Created the module (#67, #68, #69, #100, !51, !57)
    
    ### Demo
    
    - Fixed a test on Android with incorrect dependencies (!54)
    
    ### Documentation
    
    - The documentation now links to the official Arrow documentation (#104, !55)
    - Added the link to the Decouple channel on the official KotlinLang Slack (#106, !56)
    - Created a FAQ to answer questions asked by people on Slack (#105, !56)
    - Documented labels used to classify issues (#115, !58)
    
    ### Contributions
    
    Thanks to our first external contributors.
    
    - @hackintosh5 for helping prototype the Headless module
    - @LandryNorris for fixing the Android tests
    
  • 0.5.1 protected
    1e36ce47 · merge: Pedestal 1.0.1 ·
    Release: 0.5.1 • Multicolumn screen layouts
    Multicolumn layouts
    
    ### Global
    
    - Multicolumn screen layouts (#30, !49)
    - Upgrade to Pedestal 1.0.1 (#95, !50)
    
    ### Material Tailwind
    
    - Maximum text width (83ed8987, !49)
    - Smaller gap between chips (587685e9, !49)
    
  • 0.5.0 protected Release: 0.5.0 • Android support
    Android support
    
    ### Core
    
    - Android support for all libraries (#37, !42)
    - Introduced UIMetadata.name and Theme.name (#70, !48)
    
    ### Style: Material
    
    - Prototype implementation of Material Design 3 for Android (#37, !42)
    
  • 0.4.4 protected Release: 0.4.4 • Material chips
    Material Chips
    
    ### Material
    
    - Implementation of AssistChip, InputChip and SuggestionChip (#16, !47)
    
  • 0.4.3 protected Release: 0.4.3 • Minor deployment changes
    Minor changes
    
    ### Deployment
    
    - Execute JVM tests in CI (!43)
    - Execute JS tests in CI (!43)
    - Fixed the deployment CD (#81, !44)
    
  • 0.4.2 protected Release: 0.4.2 • Reorganization
    Refactors
    
    The project now has a Telegram group: https://t.me/os_decouple
    
    ### Organization
    
    - `demo-web` has been moved to `demo/web` (#61, !38)
    - `material` has been moved to `style/material` (#61, !38)
    - Removed the root package folders for each module (#62, !39)
    - `opensavvy.decouple.navigation` has been extracted to its own module `core/navigation` (#59, !39)
    - `opensavvy.decouple.utils` has been extracted to its own module `core/persistence` (#64, !39)
    - Renamed the `opensavvy.decouple.core.basic` package (#63, !39)
    - Extracted the color management from `material` to `material-common` (#66, !41)
    - Extracted the TailwindCSS implementation of `material` to its own module `material-tailwind` (#66, !41)
    
    ### Build & deployment
    
    - Announce accepted merge requests on our Telegram group (#60, !37)
    - Fixed invalid source link in material (!39)
    - Configured the CODEOWNERS file (#71, !40)
    
  • 0.4.1 protected Release: 0.4.1 • Global navigation API, Filter chips
    Global navigation and filter chips
    
    ### Core
    
    - Implemented an API for global navigation (#39, !35)
    
    ### Material
    
    - Implemented FilterChip (#16, !53)
    - Prototype implementation of the global navigation (#39, !35)
    
    ### Demo
    
    - Showcase the global navigation (#39, !35)
    
  • 0.4.0 protected Release: 0.4.0 • OpenSavvy Decouple
    Decoupling
    
    ### Organization
    
    - The project is renamed to OpenSavvy Decouple (#44, !31)
    - Rewrite of the README (#51, !32)
    - In-depth explanation of the variants pattern (#51, !32)
    
    ### Core
    
    - Persist information through application restarts using 'persist' (JS-only, #46, !29)
    - Filter chips' onToggle callback now provides the new value (#47, !30)
    - Introduced a progress indicator API (#49, !34)
    
    ### Navigation
    
    - Support for hash-navigation in addition to slash-navigation (#41, !27)
    
    ### Demo
    
    - Added a page about the text fields (#45, !28)
    
    ### Material
    
    - Implementations are now 'object'-based instead of being 'interface'-based (#33, !33)
    
  • 0.3.1 protected
    a8b029ac · merge: Navigation ·
    Release: 0.3.1 • Dependency updates, demo splitting and navigation prototype
    Dependency updates, demo splitting and navigation prototype
    
    ### Core
    
    - Many dependency updates, including Kotlin 1.7.20 and Compose 1.2.1 (#36, !21)
    - Let the user override the coroutine scope (#34, !20)
    - Navigation prototype (#13, !24)
    
    ### Demo
    
    - Split `demo` into `demo` and `demo-web` (#38, !23)
    
    ### Miscellaneous
    
    - Fixed broken Dokka link in MRs (#32, !18)
    
  • 0.3.0 protected Release: 0.3.0 • UI & Theme selector
    UI & Theme selector
    
    ### Core
    
    - Replaced the Progression implementation using OpenSavvy Pedestal (#14, !12)
    - Components bring a custom object into scope to inject behavior into their children (#3, !13)
    - Lazy columns and rows (#17, !14)
    - UI and theme selector (#24, !17)
    
    ### Deployment
    
    - Published the documentation using Dokka (#5, !11)
    - Published the libraries on the GitLab Maven Registry (#1, !15)
    - Apache 2.0 license (#28, !16)
    
  • 0.2.0 protected
    Material colors, button implementations
    
  • 0.1.0 protected
    391788f2 · merge: Web demo ·
    First version