<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Android/colorpicker-compose.git/colorpicker-compose/src, branch main</title>
<subtitle>Kotlin Multiplatform color picker library for getting colors from any images by tapping on the desired color (mirror)</subtitle>
<id>https://git.radix-linux.su/Android/colorpicker-compose.git/atom?h=main</id>
<link rel='self' href='https://git.radix-linux.su/Android/colorpicker-compose.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/'/>
<updated>2026-09-16T09:25:40+00:00</updated>
<entry>
<title>Count attached sliders instead of flagging them</title>
<updated>2026-09-16T09:25:40+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T09:25:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=ecacbb1fed28ddc0dfc909d186ccab4708cc42cb'/>
<id>urn:sha1:ecacbb1fed28ddc0dfc909d186ccab4708cc42cb</id>
<content type='text'>
A boolean goes wrong as soon as two sliders of the same kind share a
controller: the first one to leave the composition clears it while the
other is still on screen, and the surviving slider stops reaching the
color. The controller counts them now, and the last one out is what
hands the component back to the palette color.

Adds regression tests for both, four of which fail when a slider that
leaves stays attached, and two when one leaving speaks for the other.
</content>
</entry>
<entry>
<title>Merge branch 'main' into slider-attachment</title>
<updated>2026-09-16T09:22:00+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T09:22:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=00e80ba53e173031705477716874cf5c0ec68a33'/>
<id>urn:sha1:00e80ba53e173031705477716874cf5c0ec68a33</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge main into the desktop demo</title>
<updated>2026-09-16T09:09:24+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T09:09:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=b412754c65e7cbf76aa77401e7ce57324a7aeb0c'/>
<id>urn:sha1:b412754c65e7cbf76aa77401e7ce57324a7aeb0c</id>
<content type='text'>
Resolutions:
- Took main for the Spotless bump, the ktlint reformats, the version
  catalog and the wheel bitmap property, all of which landed separately.
- Kept the benchmark build type and the baselineProfile dependency on
  :demo:androidApp, which the baseline-profile workflow needs.
- ObserveColorChanges now uses rememberCoroutineScope as well, so the
  picker and the sliders collect the same way, and ColorPicker just
  delegates to it.
- Tests build the controller without a scope, and the ones that read a
  callback wait for idle first, since a color change now arrives on the
  composition's own scope rather than Dispatchers.Main.
</content>
</entry>
<entry>
<title>Bump Gradle, AGP, Kotlin, Compose and Spotless</title>
<updated>2026-09-16T08:48:05+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:57:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=01826f9c8d8425384aded2ba0030880d9b388365'/>
<id>urn:sha1:01826f9c8d8425384aded2ba0030880d9b388365</id>
<content type='text'>
AGP 9.3.2 to 9.4.0, Kotlin 2.4.10 to 2.4.20, Compose Multiplatform
1.11.1 to 1.12.0, binary compatibility validator 0.18.1 to 0.18.2,
macrobenchmark off its alpha, Spotless 6.21.0 to 8.10.2 and the Gradle
wrapper 9.6.1 to 9.7.1.

Compose 1.12.0 asks for compileSdk 37. Spotless 8 brings a newer ktlint,
which reformats a few files, wants screaming snake case for a const in
the benchmark, and needs to be told that a Composable is named like a
type.
</content>
</entry>
<entry>
<title>Add onColorPickingFinished to the pickers</title>
<updated>2026-09-16T08:01:41+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:46:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=f03c885773213b5b9bb2eb9a78fe81fe15666bf0'/>
<id>urn:sha1:f03c885773213b5b9bb2eb9a78fe81fe15666bf0</id>
<content type='text'>
onColorChanged fires for every step of a drag, so there was no way to
tell a live preview apart from a finished choice. HsvColorPicker and
ImageColorPicker now take onColorPickingFinished, which fires once when
a tap lands or a drag ends, with the color the pick settled on.
</content>
</entry>
<entry>
<title>Fix slider rendering and let sliders stand alone</title>
<updated>2026-09-16T08:01:41+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:45:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=0e39c876c10b1bc879b49e6237a7248ad3fa59c7'/>
<id>urn:sha1:0e39c876c10b1bc879b49e6237a7248ad3fa59c7</id>
<content type='text'>
- The thumb was centered on the track ends, so half of it was clipped
  away. It now reserves its radius at each end, and the tap and drag
  mapping uses the same travel.
- The track paint took its color, and so its alpha, from the controller.
  A controller with nothing selected is transparent, which left a slider
  used without a picker drawing nothing at all.
- The brightness ramp assumed full saturation and painted red instead of
  a grey ramp when nothing was selected.
- AlphaSlider, BrightnessSlider and SaturationSlider take onColorChanged
  so they report without a picker beside them.
- Every slider takes an orientation and can run bottom to top.
- The slider and tile backgrounds are no longer rebuilt on every
  recomposition, and the initial value is no longer written during the
  draw phase.
</content>
</entry>
<entry>
<title>Ignore taps that land outside the palette</title>
<updated>2026-09-16T08:01:41+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:36:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=3fec6c88a45c9657d4a6bc30f1b9a09a58439e1e'/>
<id>urn:sha1:3fec6c88a45c9657d4a6bc30f1b9a09a58439e1e</id>
<content type='text'>
A palette scaled to fit leaves bands beside it, and the picker used to
clamp a tap there onto the nearest edge pixel and report it as a color.
Fully transparent pixels came back as a selection too, which is the
transparent pixel TODO the original Android version handled by skipping
them. Both now leave the selection alone.
</content>
</entry>
<entry>
<title>Fix pickers losing the color they were given</title>
<updated>2026-09-16T08:01:14+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:33:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=579bf557f32afd5381375c9ffa5881e96a059ab1'/>
<id>urn:sha1:579bf557f32afd5381375c9ffa5881e96a059ab1</id>
<content type='text'>
- The canvas size setter divided by a zero size on the first layout pass
  and produced Offset(NaN, NaN), which is Offset.Unspecified, so drawing
  the wheel threw whenever setup could not overwrite it.
- setup() now leaves the current selection alone when a picker registers
  itself again, which happens on every recomposition if the palette is
  built inline.
- HsvColorPicker replays initialColor so its value and alpha survive.
- selectByColor before the first layout is held and applied once the
  picker is ready instead of being dropped.
- wheelImageBitmap is kept in step with the controller and is snapshot
  state, so a new bitmap repaints.
</content>
</entry>
<entry>
<title>Add a test suite for the library</title>
<updated>2026-09-16T08:00:26+00:00</updated>
<author>
<name>skydoves</name>
<email>skydoves2@gmail.com</email>
</author>
<published>2026-09-16T07:27:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=5b40aba1b64e058a90d1951efe36c2c9095fda12'/>
<id>urn:sha1:5b40aba1b64e058a90d1951efe36c2c9095fda12</id>
<content type='text'>
Wires up commonTest and desktopTest with kotlin-test and the Compose
multiplatform ui-test artifact, and covers the color math, the geometry
helpers, the controller, both pickers, the sliders and the alpha tile.
The web targets skip tests because ColorPickerController builds a Paint
eagerly and Kotlin/JS cannot load Skiko in a Node or headless run.

CI gains a job for them, and drops the branch filter on pull_request so
that a pull request stacked on another one gets checked too.
</content>
</entry>
<entry>
<title>support for sliders dynamic attachment and detachment</title>
<updated>2026-07-20T23:48:25+00:00</updated>
<author>
<name>Azerlag</name>
<email>candro.kutcia@yandex.com</email>
</author>
<published>2026-07-20T23:48:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Android/colorpicker-compose.git/commit/?id=a94f41214d10198df6f795b0a9a08a9490a0ad72'/>
<id>urn:sha1:a94f41214d10198df6f795b0a9a08a9490a0ad72</id>
<content type='text'>
</content>
</entry>
</feed>
