plac

Roon remote in GTK4

Commits at d625bacf69ca0faf02c339274d3fbf9a7f76a3a7

  1. 6c1c34ed Create helper class for body extracting This does not have actual JSON parsing, as parsing JSON in Vala is totally mess, nightmare. The only (?) seemingly-reliable library is json-glib. Documentation is unorganized mess as usual in GTK-related project, so it does not dismiss the value. Extremely imperative and quite verbose API is tolerable if it's used for rare case such as string-to-enum conversion. The problem is the library is not well integrated GLib ecosystem, despite it being under GLib project. It has GObject serialization and deserialization functionality, and they are bare minimum. No array support, top-level MUST be an object... Imperative API also is full of footgun, such as getting a data from node in mismatching type returns "NULL" or "0"... In addition to that, I see no mention of "null or field omit" in methods I checked. That may okay as a C library, but definetely does not meet a quality required to be used in high-level languages, Vala. Little bit cumbersome, but seriealize and deserialize in Zig via FFI is much much much cleaner and better. Considering how widespread JSON is, I can't recommend Vala as a sole application development language to anyone, especially the application involves networking. For GTK application development, Rust would be the best choice nowadays? Shota FUJI authored at Shota FUJI comitted at
  2. c0fd3c85 Create MOO headers parser in Vala Shota FUJI authored at Shota FUJI comitted at
  3. e2d16abd Create MOO metadata parser in Vala The first and primary reason is better integration to GTK ecosystem. GObject, GString (null-terminated strings,) GError, etc... Bridging Zig (or any other system language with C API export) to those are tedious and error-prone task. If the extra allocations (copy) are necessary due to the fucking null-terminated strings, why not writing the whole logic in Vala? The burden of bridges outweighs the ergonomics of using Zig with copy-every-string approach. The second reason is I wanted to see what is like to write non-GUI code in Vala, including unit testing. It turns out really bad, because of null-terminated fucking string and lack of converting it to/from length specified bytes. Shota FUJI authored at Shota FUJI comitted at
  4. 2c27fac8 Extract Vala compilation step to individual file I was trying to configure unit testing for Vala, but it was too repetitive writing same "addSystemCommand" step. This struct style is much cleaner and self-descriptiveto. Shota FUJI authored at Shota FUJI comitted at
  5. 4729483a Remove unused Zig package Shota FUJI authored at Shota FUJI comitted at
  6. f0733ed4 Extract new core classes to individual files It was really difficult to read or modify code due to lack of per-file isolation (relying on manual namespacing.) Shota FUJI authored at Shota FUJI comitted at
  7. 9dfa25f8 Remove unused file modulemap is for using C API inside Swift (Xcode?) Shota FUJI authored at Shota FUJI comitted at
  8. 52424bba Migrate server discovery to Vala For tighter integration and make the whole app GLib-y. Shota FUJI authored at Shota FUJI comitted at
  9. c5add195 Invalidate dprint cache after change to uncrustify.cfg Shota FUJI authored at Shota FUJI comitted at
  10. 65062858 Format Vala files It seems changes to "uncrustify.cfg" has not been read by dprint. Temporarily set "cacheKey" then reran, now every Vala files are formatted. Shota FUJI authored at Shota FUJI comitted at
  11. f03491b5 Indent namespace It's really hard to read. Shota FUJI authored at Shota FUJI comitted at
  12. c2207f32 Remove blank lines before close brace Shota FUJI authored at Shota FUJI comitted at
  13. 307a1081 Add required dependency to README Shota FUJI authored at Shota FUJI comitted at
  14. 07f92073 Delete image download logic from Zig core No longer used. Shota FUJI authored at Shota FUJI comitted at
  15. bbf35e5b Artwork download logic in Vala I'd like to have most of logics in GTK-style. It technically is possible to do in Zig, but doing that in Vala is more straightforward and requires less effort, I guess. As a result, overall display speed massively improved. Shota FUJI authored at Shota FUJI comitted at
  16. e10485b3 Use GListView instead of GListBox This improves rendering performance. Although this reverts "action menu" UI, I believe this is better and easier to use. Plac for macOS has been using this "everything is list" style and I prefer this over the popup menu. Shota FUJI authored at Shota FUJI comitted at
  17. ec1dfd7a Fix "nix development" fails Shota FUJI authored at Shota FUJI comitted at
  18. bc7b89c0 Merge core/ and gtk-adwaita/ directories There are no other package using core/ anymore. Shota FUJI authored at Shota FUJI comitted at
  19. 06b251d3 Remove code related to CLI I no longer use it. Memory errors should be tested with unit tests and/or integrated tests using mock server. Shota FUJI authored at Shota FUJI comitted at
  20. a363d624 Remove code related to macOS client Client application for Apple devices now has dedicated repository. https://codeberg.org/pocka/plac-for-apple-platform Shota FUJI authored at Shota FUJI comitted at
  21. 67dfb52c Add screenshot for Plac for GTK Shota FUJI authored at Shota FUJI comitted at
  22. d0a4ca5a Update README To reflect the latest change. I should have renamed directory name too, though. Shota FUJI authored at Shota FUJI comitted at
  23. af84e446 macos: Direct server host/port form for non-mac platforms Every Apple platform but macOS disallows UDP multicast/broadcast without very special permission. Shota FUJI authored at Shota FUJI comitted at
  24. 24da2347 macos: Allow connection to server without server ID Necessary to implement host/port connection for Apple platforms, as they are not able to perform UDP multicast without special permission. Shota FUJI authored at Shota FUJI comitted at
  25. 81f30d60 macos: Remove unused initializer Shota FUJI authored at Shota FUJI comitted at
  26. e883d51d macos: Use macOS' now playing feature Shota FUJI authored at Shota FUJI comitted at
  27. aa63acc6 Update README on Plac for macOS Shota FUJI authored at Shota FUJI comitted at
  28. 568a6738 macos: More native-look zone/output option panel Shota FUJI authored at Shota FUJI comitted at
  29. d8502749 macos: Use "String(localized:defaultValue)" instead Text Surprisingly, texts extracted using "Text(_ key)" does not fallback to default language. Instead, these use localization key (e.g., "PlaybackBar.Play".) This will be problematic for partial translations in a future. For some reasons, texts extracted using "String(localized:defaultValue)" do not behave the same, so the "defaultValue" will be used for untranslated keys. Shota FUJI authored at Shota FUJI comitted at
  30. 252c00c7 macos: Render outputs and their volume controls Shota FUJI authored at Shota FUJI comitted at