Can't inspect topics with Snappy compressed messages

I have topics which have messages which are compressed with Snappy.
When trying to inspect these topics I get the following Exception:
java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-a96d7c8e-ec5a-466f-8586-be0f29616ce5-libsnappyjava.so: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /tmp/snappy-1.1.7-a96d7c8e-ec5a-466f-8586-be0f29616ce5-libsnappyjava.so)

You use the docker image I supposed ?
Or standalone jar ?
Thanks for the report.

Yes, standard Docker image tchiotludo/kafkahq:0.5.2. If I was using standalone I'd just install the missing library :-).

available on dev image with docker pull tchiotludo/kafkahq:dev

Hey there - can we get this into the main release images too please?
Thanks very much.


Humbug Reports Escaped when more than one test suite is ran via phpunit.xml

example phpunit.xml
<phpunit bootstrap="test-bootstrap.php"
    cacheTokens="true"
    colors="true"
    processIsolation="false">
    <testsuites>
        <testsuite name="App Test Suite">
            <directory>module/App/tests</directory>
        </testsuite>
        <testsuite name="Common Test Suite">
            <directory>module/Common/tests</directory>
        </testsuite>
    </testsuites>
    <filter>
      <whitelist>
          <directory suffix=".php">module</directory>
          <exclude>
              <directory suffix=".php">module/*/config</directory>
              <directory suffix=".php">module/*/tests</directory>
              <directory suffix="Module.php">module/*</directory>
              <directory>vendor/*</directory>
        </exclude>
      </whitelist>
    </filter>
</phpunit>

example humbug.json
{
    "timeout": 10,
    "source": {
        "directories": [

            "module/Common/src"
        ],
        "excludes": [
        ]
    },
    "logs": {
        "text": "humbuglog.txt"
    }
}

Output:-
 _  _            _
| || |_  _ _ __ | |__ _  _ __ _
| __ | || | '  \| '_ \ || / _` |
|_||_|\_,_|_|_|_|_.__/\_,_\__, |
                          |___/
Humbug version 1.0-dev

Humbug running test suite to generate logs and code coverage data...

  567 [==========================================================] 15 secs

Humbug has completed the initial test run successfully.
Tests: 567 Line Coverage: 99.16%

Humbug is analysing source files...

Mutation Testing is commencing on 202 files...
(.: killed, M: escaped, S: uncovered, E: fatal error, T: timed out)

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM |   60 ( 60/202)
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM |  120 ( 98/202)
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM |  180 (129/202)
MMMMMMMMMMMMMSMMMMMMMMMMSSSSSSSSSSSSMMMMMMSSSSSSSSSSSSSSSSSS |  240 (153/202)
SSSSSSSSSSSSSSSSSSSMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM |  300 (165/202)
MMMMMSSSMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMSMMMMMMMMMMMMMSMMM |  360 (186/202)
MMMMMMMSSSSSSSMMMMMMMMMMMMMMMMMMMMM

395 mutations were generated:
       0 mutants were killed
      62 mutants were not covered by tests
     333 covered mutants were not detected
       0 fatal errors were encountered
       0 time outs were encountered

Out of 333 test covered mutations, 0% were detected.
Out of 395 total mutations, 0% were detected.
Out of 395 total mutations, 84% were covered by tests.

Remember that some mutants will inevitably be harmless (i.e. false positives).

Humbug results are being logged as TEXT to: humbuglog.txt

Time: 1.45 minutes Memory: 10.50MB

If I change my phpunit.xml to only have one suite.
<phpunit bootstrap="test-bootstrap.php"
    cacheTokens="true"
    colors="true"
    processIsolation="false">
    <testsuites>
        <testsuite name="Common Test Suite">
            <directory>module/Common/tests</directory>
        </testsuite>
    </testsuites>
    <filter>
      <whitelist>
          <directory suffix=".php">module</directory>
          <exclude>
              <directory suffix=".php">module/*/config</directory>
              <directory suffix=".php">module/*/tests</directory>
              <directory suffix="Module.php">module/*</directory>
              <directory>vendor/*</directory>
        </exclude>
      </whitelist>
    </filter>
</phpunit>

My output changes to have Mutants killed.

 _  _            _
| || |_  _ _ __ | |__ _  _ __ _
| __ | || | '  \| '_ \ || / _` |
|_||_|\_,_|_|_|_|_.__/\_,_\__, |
                          |___/
Humbug version 1.0-dev

Humbug running test suite to generate logs and code coverage data...

  547 [==========================================================] 14 secs

Humbug has completed the initial test run successfully.
Tests: 547 Line Coverage: 99.16%

Humbug is analysing source files...

Mutation Testing is commencing on 202 files...
(.: killed, M: escaped, S: uncovered, E: fatal error, T: timed out)

MM.EE...M.M.E.M.MMMMMM..MEEE..MMM...M.M.MMM..EE............. |   60 ( 60/202)
MMMMM..MMMMMMMMMMEEMMMMMM.........M..M..............MMMMMMM. |  120 ( 98/202)
.........M......MM.M.....MM.M.M.M.M.M.....M.EM.EEE..M...M... |  180 (129/202)
..M.......M..SM.......M.SSSSSSSSSSSSEMM...SSSSSSSSSSSSSSSSSS |  240 (153/202)
SSSSSSSSSSSSSSSSSSS....T.......MM......M......M.M...M...M... |  300 (165/202)
...MMSSS.MMME.MMM.M.MMM....MMM.......E....SM....ME......S... |  360 (186/202)
......MSSSSSSS..MM.M.....MM..MMMMMM

395 mutations were generated:
     207 mutants were killed
      62 mutants were not covered by tests
     107 covered mutants were not detected
      18 fatal errors were encountered
       1 time outs were encountered

Out of 333 test covered mutations, 68% were detected.
Out of 395 total mutations, 57% were detected.
Out of 395 total mutations, 84% were covered by tests.

Remember that some mutants will inevitably be harmless (i.e. false positives).

Humbug results are being logged as TEXT to: humbuglog.txt

Time: 1.73 minutes Memory: 8.75MB

It seems that having multiple in the test suite causes these issues.  If I add the extra paths to the humbug.json, I will get uncovered for the things that aren't in the coverage.

@Mezzle This is down to the final piece of PHPUnit support which is for multiple test suites. I recently switched everything over to utilise my phpunit-extensions package which will make adding this easier to implement.
Once I recover from this flu ;).

@Mezzle Closing this as should be resolved in master. Let me know if any other issues with multiple test suites.


Fix #771: CookiePolicy showcase

@fcorneli great work! Thanks!
@melloware I'll merge now and will have a look (at the image zoom as well)


There is no example for class based components connecting to redux using slices. Please add some documentation. I am stuck.

There is no example on class based components. I want to connect my class based component to store. My store is always undefined. I also do not know how will I do this in typescript. An example in docs will be very helpful. Also, please add this as fast as you can.

This repo doesn't support class based components so I am not gonna add any docs.
Help yourself -> https://github.com/react-boilerplate/redux-injectors

That means I will have to use functional components only?

Thanks for help brother.

No you don't have to. Redux injectors supports both if you scroll the read the readme you will see. I am just not gonna add any docs

That mean I can connect it?


fix bug by building the minimal version of libhermit

This PR should solve issue #157 In addition, I add a small test to build the minimal configuration.

@jschwe It seems to work...

@jschwe It seems to work...

@stlankes Have you tried building and running an application?
I get a lot of GP Exceptions when trying to run hello-world with no-default-features and this PR, but maybe I'm doing something wrong.
Steps:

Checkout master of rusty-hermit
Checkout this PR  into libhermit-rs
go back to rusty-hermit directory
 cargo build --manifest-path examples/hello_world/Cargo.toml --target x86_64-unknown-hermit --no-default-features
cd loader && make && cd ..
qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio  -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/pi_sequential -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr

@stlankes Have you tried building and running an application?
I get a lot of GP Exceptions when trying to run hello-world with no-default-features and this PR, but maybe I'm doing something wrong.
Steps:

Checkout master of rusty-hermit
Checkout this PR  into libhermit-rs
go back to rusty-hermit directory
 cargo build --manifest-path examples/hello_world/Cargo.toml --target x86_64-unknown-hermit --no-default-features
cd loader && make && cd ..
qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio  -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/pi_sequential -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr

It works only on uhyve, QEMU depends on PCI.... That is the reason, why I don't test it within GitHub Actions. In the future, I want to support of Qemu's Micro VM (https://github.com/bonzini/qemu/blob/master/docs/microvm.rst). Currently, it doesn't run on it. I have to check, why it isn't working on this setup.

It works only on uhyve, QEMU depends on PCI.... That is the reason, why I don't test it within GitHub Actions. In the future, I want to support of Qemu's Micro VM (https://github.com/bonzini/qemu/blob/master/docs/microvm.rst). Currently, it doesn't run on it. I have to check, why it isn't working on this setup.

Ah okay, that explains it.
I suggest to build the minimal kernel with --target x86_64-unknown-hermit-kernel and remove the std from -Z build-std=<>.
In practice, it's not really relevant of course, since we aren't using the binary, but I think it's better to stay consistent regarding the different parameters when building the kernel vs an application.
Other than that the PR looks good.

Ah okay, that explains it.
I suggest to build the minimal kernel with --target x86_64-unknown-hermit-kernel and remove the std from -Z build-std=<>.
In practice, it's not really relevant of course, since we aren't using the binary, but I think it's better to stay consistent regarding the different parameters when building the kernel vs an application.
Other than that the PR looks good.

You are right, I fixed it

You are right, I fixed it

bors r+

bors r+

bors retry

bors retry

It appears that both the integration tests and the multithreaded uhyve test is failing. The multithreaded uhyve tests crashes, but still seems to exit with 0, which causes the test to appear as passed, even though it should have failed. I'll open an issue over at uhyve to track this.
The integration tests seem to be running fine, but uhyve (or possibly also libhermit) doesn't exit after they are finished.
I also noticed, that the way I'm dumping the stdout in the integration tests does not really result in very readable output, so I'll open a PR to improve that in the next days.

It appears that both the integration tests and the multithreaded uhyve test is failing. The multithreaded uhyve tests crashes, but still seems to exit with 0, which causes the test to appear as passed, even though it should have failed. I'll open an issue over at uhyve to track this.
The integration tests seem to be running fine, but uhyve (or possibly also libhermit) doesn't exit after they are finished.
I also noticed, that the way I'm dumping the stdout in the integration tests does not really result in very readable output, so I'll open a PR to improve that in the next days.

bors r+

bors r+

bors r+

bors r+

bors r+

bors r+


Some cleanup and alignment

A Quote is basically a more detailed Price; the Quote uses the Price's get_price_for_direction logic to get the price by direction.

@luckysori  comments from https://github.com/get10101/10101/pull/967 should all be worked in

bors r+

I am merging this because it might be necessary to avoid backwards compatibility issues where the pnl is not known in the database when trying to Close positions after an upgrade.


[Hybrid Script] Unify the symbol tables to one; support tvm.container.Array

Unify symbol tables.
Support tvm.container.Array.

@kevinthesun Can you take a look?
@tqchen Can you let this in after CI is done?


[FEATURE REQUEST] List all packages toggle

Before submitting the issue

[x] I have checked that the bug is not a duplicate or, if it is, it needs to be reopened
[x] I have checked that I am running the latest version of WingetUI
[ ] I have tried resetting and reinstalling WingetUI and the issue persisted or happened again
[x] I have checked the FAQ section for solutions
[x] I have read the contributing guidelines and I agree with the Code of Conduct

Describe the bug
After upgrading from Beta 2 to Beta 3 the Discover Tab is blank. The packages however are still cached it appears the table is just not built.

The installed packages tab does however still load correctly.
The Log

🟢 Using cached lang file
🟡 Using bundled lang file (forced=True)
It took 0.0015072822570800781 to load all language files
🟢 checkQueue Thread started!
🔵 Starting main application...
🔵 Looking for alive instances...
🔵 Language file up-to-date
🟡 Found lock file(s), reactivating...
🔵 Starting update check
🟢 Downloaded latest metadata to local file
🔵 Loaded metadata from local file
🔵 Version URL: https://versions.marticliment.com/versions/wingetui.ver
🟢 Updates not found
🔵 Reactivation signal ignored: RaiseWindow_[1685200792.3566115]
🔵 Reached main ui load milestone
{'sudoFound': True, 'sudoVersion': 'gsudo v2.0.4 (Branch.tags-v2.0.4.Sha.506efa024af0cef6e4b0cfec42e0c8c5d0b1472c)\r', 'PipFound': False, 'PipVersion': 'Pip is disabled', 'NpmFound': False, 'NpmVersion': 'Npm is disabled', 'WingetFound': True, 'WingetVersion': 'v1.4.10173\r', 'ScoopFound': True, 'ScoopVersion': 'v0.3.1 - Released at 2022-11-15', 'ChocolateyFound': True, 'ChocolateyVersion': '1.4.0\r'}
🔵 Is Dark
Can't disconnect
Can't disconnect
🟢 Install tab loaded successfully
🔵 Starting Winget search for available packages
🔵 Starting Scoop search for available packages
🟢 Found valid, non-empty cache file for Winget!
🔵 Starting Chocolatey search for available packages
🔵 Starting Winget package caching
🟢 Winget search for installed packages finished with 4611 result(s)
🟢 Found valid, non-empty cache file for Scoop!
🔵 Starting Scoop package caching
🟢 Scoop search for installed packages finished with 3065 result(s)
🟢 Found valid, non-empty cache file for Chocolatey!
🔵 Starting Chocolatey package caching
🟢 Chocolatey search for installed packages finished with 8854 result(s)
Can't disconnect
Can't disconnect
Can't disconnect
🟢 Install tab loaded successfully
🔵 Starting Winget search for updates
🔵 Starting Scoop search for updates
🔵 Starting Chocolatey search for updates
🟢 Searching for string ""
Can't disconnect
Can't disconnect
🟢 Install tab loaded successfully
🔵 Starting Winget search for installed packages
🔵 Starting Scoop search for installed packages
🔵 Starting Chocolatey search for installed packages
🟢 Searching for string ""
Can't disconnect
🟢 Settings tab loaded!
🟢 About tab loaded!
🟢 Main application loaded...
🟢 Chocolatey search for installed packages finished with 1 result(s)
🟢 Chocolatey search for updates finished with 0 result(s)
🟢 Total packages: 9033
🟢 Total packages: 12175
🟢 Winget search for updates finished with 0 result(s)
🟢 Total packages: 16530
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Winget search for installed packages finished with 65 result(s)
🟢 Searching for string ""
🟢 Scoop search for updates finished with 0 result(s)
🟢 Searching for string ""
🟢 Searching for string ""
🟡 Can't get custom interval time! (got value was '')
🟢 Total packages: 0
🟢 Scoop search for installed packages finished with 3 result(s)
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Total packages: 69
🟢 Winget packages cached successfuly
🟢 Scoop packages cached successfuly
🟢 Chocolatey packages cached successfuly
🔵 Starting Winget search for installed packages
🔵 Starting Scoop search for installed packages
🔵 Starting Chocolatey search for installed packages
🟢 Searching for string ""
🟢 Chocolatey search for installed packages finished with 1 result(s)
🟢 Searching for string ""
🟢 Scoop search for installed packages finished with 3 result(s)
🟢 Searching for string ""
🟢 Winget search for installed packages finished with 65 result(s)
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Total packages: 69
🔵 Starting Winget search for available packages
🔵 Starting Scoop search for available packages
🔵 Starting Chocolatey search for available packages
🟢 Found valid, non-empty cache file for Winget!
🟢 Found valid, non-empty cache file for Scoop!
🔵 Starting Winget package caching
🟢 Winget search for installed packages finished with 4611 result(s)
🔵 Starting Scoop package caching
🟢 Scoop search for installed packages finished with 3065 result(s)
🟢 Found valid, non-empty cache file for Chocolatey!
🔵 Starting Chocolatey package caching
🟢 Chocolatey search for installed packages finished with 9268 result(s)
🟢 Total packages: 16944
🔵 Starting Winget search for available packages
🔵 Starting Scoop search for available packages
🟢 Found valid, non-empty cache file for Winget!
🔵 Starting Chocolatey search for available packages
🔵 Starting Winget package caching
🟢 Winget search for installed packages finished with 4611 result(s)
🟢 Found valid, non-empty cache file for Scoop!
🔵 Starting Scoop package caching
🟢 Scoop search for installed packages finished with 3065 result(s)
🟢 Found valid, non-empty cache file for Chocolatey!
🔵 Starting Chocolatey package caching
🟢 Chocolatey search for installed packages finished with 9268 result(s)
🟢 Total packages: 16944
🟢 Winget packages cached successfuly
🟢 Winget packages cached successfuly
🟢 Scoop packages cached successfuly
🟢 Scoop packages cached successfuly
🟢 Chocolatey packages cached successfuly
🟢 Chocolatey packages cached successfuly
🔵 Copying log to the clipboard...

yes, this is done in purpose.
try searching for packages to get results.

at the end of the day, users won't scroll across a list with more than 17000 packages, they will just search the query they want. And since showing all of them lagged the interface, I decided to remove all package listing.
now users are required to type at least three characters in order to get results

at the end of the day, users won't scroll across a list with more than 17000 packages, they will just search the query they want. And since showing all of them lagged the interface, I decided to remove all package listing.
now users are required to type at least three characters in order to get results

maybe this limit should be reduced to 2 as there are a few packages such as np on pip and npm that are 2 characters long

Is there a way to toggle that change or an option to display all\export a list? In our scenario maintaining images for VDI it was helpful to have the entire list to visually compare to what's installed on our golden image with Winget. Just 4k+ items so not difficult to scroll real quick. I can just make a script to dump that with Winget instead myself if there's no planned alternative for the functionality.

maybe this limit should be reduced to 2 as there are a few packages such as np on pip and npm that are 2 characters long

I will say one of the apps I was just asked for was the Powershell Az module and had to guess if it was "Az Powershell", "Az.Powershell", or "AzPowershell". Got it on my third attempt so not a huge deal I suppose.

Hello,
This feature is planned to be removed, but there is discussion about it. Chocolatey has deprecated all-package listing, and other package managers that are going to be added don't support this feature either (dotnet tool, nuget, etc.), and the operation of loading and processing so much packages is very resource-intensive.
For the moment, all package managers have been migrated from the PackageManager to the DynamicPackageManager class, enabling dynamic queries and removing all-listing support. While all-listing enabled faster searching, the resource usage when caching packages was notorious. Furthermore, packages wouldn't get updated regularly.
Moreover, I have in mind some kind of Welcome interface, showing some recommended packages and other useful shortcuts, an idea similar to the one behind the new Settings App homepage on Windows 11.
What do you think about this? Should I re-add all-listing packages for winget and scoop?

I guess Winget is a bit of the odd man out here since it only has 4k or so packages. Honestly at this point if everything else is removing the ability to do a full list it wouldn't make much sense not to just keep everything the same. It was nice to have but we can definitely just run list off Winget CLI ourselves and dump to a text file without much issue when the situation calls for it.
Side note excited to see Nuget added!

It would have been better to make this optional and enabled by default. However, those who prefer can simply toggle it in settings to be able to view all packages. This can be a pleasant way to discover new things by scrolling and unexpectedly coming across certain packages and reading their descriptions. We often don't know what to search for, and occasionally, we stumble upon something very useful in this manner, and some devs don't pick a representative name for their software packages...


Add system check for presence of required data files

Django's system check framework: https://docs.djangoproject.com/en/5.0/topics/checks/
If you do end up using a system check, you could tell the create subset command to ignore system checks (see https://docs.djangoproject.com/en/5.0/howto/custom-management-commands/#django.core.management.BaseCommand.requires_system_checks).
Originally posted by @bbonf in https://github.com/UUDigitalHumanitieslab/parseport/pull/28#discussion_r1579100632

This could also be relevant for SpindleServer (w.r.t. model_weights.pt).

I realized system checks were not the right solution for this (partly because they run after AppConfig.ready())


drop support for v2, improve support for v3

Support for new else if syntax
Using Svelte parse instead of compile

See my PR https://github.com/sveltejs/svelte/pull/2534

All tests are running

looks good, thanks a lot!

This is now release in v0.4.0


Gradient Part 6 - Pattern fills

Tracking issue: #2282
Implements basic pattern fills with an purposefully small API based on the PDF as the common denominator (as it has the most basic support). It is implemented for SVG, PNG with 100% compatibility and in PDF where some readers are slightly buggy but I will be opening bug reports shortly (most notably with mupdf).
The api is as follow

New pattern function and type
The constructor takes:

a Content as body
an array of two absolute sizes as the bounding box, the size of the content (required) creates an error if it has em set
an optional spacing (same rules as the bbox)
an optional relative that works the same as gradients

Some limitations:

In SVG we need to render the body twice, this is unfortunate but required because we cannot write subtrees of the XML with xmlwriter, I suggested on Discord opening a PR that replaces xmlwriter with our version that supports this, since it would allow us writing the defs at the top (for compatibility with some SVG readers) and would allow to render patterns only once
In PDF there can be some (albeit small) artefacts, it's unclear whether this is a bug (although I think it is since some PDF viewers work perfectly: Acrobat, PDF.js, XPDF, poppler), only mupdf and pdfium seem to be impacted (will open issues in their respective repos)
I had to change the way text paths are encoded in SVG, this solves the issue of text having gigantic scaling values, this helps readers with patterns on text (unclear why), at the same time it makes SVG text source a bit more readable and reusable.

Here is an example:
#rotate(45deg, scale(x: 50%, y: 70%, rect(
  width: 100%,
  height: 100%,
  stroke: 1pt,
)[
  #set text(
    fill: pattern(
      (30pt, 30pt),
      relative: "parent",
      square(size: 30pt, fill: gradient.conic(..color.map.rainbow))
    )
  )

  #lorem(10)
]))

Which looks like this:

I would generally consider the implementation a success, perhaps there is a way we could implement a work around for PDFs and I'd be intereted to hear your opinion/ideas. Here is a test PDF file that shows these small issues for those that want to try it:
test.pdf

As a draft because there is an SVG bug I am still tracking down.

Ok, the SVG bug is solved and I have updated the original comment to reflect that. I just need to add some automated tests now!

Thanks to @EpicEricEE for pointing out a bug that could occur in PNG rendering that was due to using .ceil() instead of .round(), it was fixed in 6249bb4bcc7cbc3c1e203498b1aca80787c19429

@laurmaedje I am thinking of adding a fill parameter for setting the background of the pattern, what do you think?

Thank you! 🎉


Docker compose does not start - Guacamole connection closed during handshake

Describe the bug
At first setup of docker compose logs shows error related to Guacamole connection closed during handshake
To Reproduce
Below docker compose:
version: "3"
services:
  obsidian:
    image: 'ghcr.io/sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: always
    ports:
      - 8080:8080
      - 8443:8443
    volumes:
      - obsidian_vaults:/vaults
      - obsidian_config:/config
    environment:
      - PUID=0
      - PGID=0
      - TZ=America/Bogota
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT="8080"
      - CUSTOM_HTTPS_PORT="8443"
      - CUSTOM_USER=""
      - PASSWORD=""
      - SUBFOLDER=""
    networks:
      macvlan-favernet:
        ipv4_address: <IP_ADDRESS>

networks:
  macvlan-favernet:
    external: true
    name: macvlan-favernet

volumes:
  obsidian_vaults:
    external: true
  obsidian_config:
    external: true

Log info from docker:
guacd[1104]: INFO:	Guacamole proxy daemon (guacd) version 1.1.0 started
guacd[1104]: INFO:	Listening on host <IP_ADDRESS>, port 4822
guacd[1104]: INFO:	Guacamole connection closed during handshake
Starting guacamole-lite websocket server
Starting guacamole-lite websocket server
events.js:377
      throw er; // Unhandled 'error' event
      ^
Error: listen EACCES: permission denied "8080"
    at Server.setupListenHandle [as _listen2] (net.js:1314:21)
    at listenInCluster (net.js:1379:12)
    at Server.listen (net.js:1476:5)
    at Object.<anonymous> (/gclient/app.js:217:6)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
    at internal/main/run_main_module.js:17:47
Emitted 'error' event on WebSocketServer instance at:
    at Server.WebSocketServer._onServerError (/gclient/node_modules/ws/lib/WebSocketServer.js:82:50)
    at Server.emit (events.js:400:28)
    at emitErrorNT (net.js:1358:8)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  code: 'EACCES',
  errno: -13,
  syscall: 'listen',
  address: '"8080"',
  port: -1
}
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
starting sesman in foreground...
Global configuration:
    ListenAddress:            <IP_ADDRESS>
    ListenPort:               3350
    EnableUserWindowManager:  1
    UserWindowManager:        startwm.sh
    DefaultWindowManager:     /etc/xrdp/startwm.sh
    ReconnectScript:          /etc/xrdp/reconnectwm.sh
    AuthFilePath:             disabled
Session configuration:
    MaxSessions:              50
    X11DisplayOffset:         10
    KillDisconnected:         0
    IdleTimeLimit:            0
    DisconnectedTimeLimit:    0
    Policy:                   0
Security configuration:
    AllowRootLogin:           1
    MaxLoginRetry:            4
    AlwaysGroupCheck:         0
    RestrictOutboundClipboard: 0
    TSUsersGroup:             (not defined)
    TSAdminsGroup:            (not defined)
Xorg parameters:
    Parameter 00              /usr/lib/xorg/Xorg
    Parameter 01              -config
    Parameter 02              xrdp/xorg.conf
    Parameter 03              -noreset
    Parameter 04              -nolisten
    Parameter 05              tcp
    Parameter 06              -logfile
    Parameter 07              .xorgxrdp.%s.log
Xvnc parameters:
    Parameter 00              Xvnc
    Parameter 01              -bs
    Parameter 02              -nolisten
    Parameter 03              tcp
    Parameter 04              -localhost
    Parameter 05              -dpi
    Parameter 06              96
SessionVariables parameters:
    Parameter 00              PULSE_SCRIPT=/etc/xrdp/pulse/default.pa
[20230525-04:33:54] [DEBUG] libscp initialized
[20230525-04:33:54] [INFO ] starting xrdp-sesman with pid 1094
[20230525-04:33:54] [INFO ] listening to port 3350 on <IP_ADDRESS>
[20230525-04:33:55] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59356
[20230525-04:33:55] [WARN ] libscp network error.
[20230525-04:33:55] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:55] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59366
[20230525-04:33:55] [WARN ] libscp network error.
[20230525-04:33:55] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:56] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59378
[20230525-04:33:56] [WARN ] libscp network error.
[20230525-04:33:56] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:56] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59382
[20230525-04:33:56] [WARN ] libscp network error.
[20230525-04:33:56] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:57] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59394
[20230525-04:33:57] [WARN ] libscp network error.
[20230525-04:33:57] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:57] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59400
[20230525-04:33:57] [WARN ] libscp network error.
[20230525-04:33:57] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:58] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59408
[20230525-04:33:58] [WARN ] libscp network error.
[20230525-04:33:58] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:58] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59420
[20230525-04:33:58] [WARN ] libscp network error.
[20230525-04:33:58] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:59] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59424
[20230525-04:33:59] [WARN ] libscp network error.
[20230525-04:33:59] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:33:59] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59438
[20230525-04:33:59] [WARN ] libscp network error.
[20230525-04:33:59] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
[20230525-04:34:00] [INFO ] A connection received from ::ffff:<IP_ADDRESS> port 59442
[20230525-04:34:00] [WARN ] libscp network error.
[20230525-04:34:00] [DEBUG] Closed socket 7 (AF_INET6 ::ffff:<IP_ADDRESS> port 3350)
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake
guacd[1104]: INFO:	Guacamole connection closed during handshake

Expected behavior
Start normally
Screenshots
N/A
Desktop (please complete the following information):
N/A
Smartphone (please complete the following information):
N/A
Additional context
Add any other context about the problem here.

I'm having the same issue.

Same here. Any solution for this available yet?

Having the same problem. Will there be fix for this in the near future?

Ill try this config later this week to see if I can reproduce.

I second that. Same problem for me. I hope somebody else fix it. I've tried using UFW to allow ports. Nothing seems to work.

Using the following docker-compose.yml worked for me. Obsidian-remote now works, but I don't like how it works. It basically uses Guacamole as VNC server/viewer. It doesn't fit the whole browser window if you click on it.
Docker-compose.yml config I found (you can modify it according to your own taste):
version: "3.9"
services:
obsidian:
image: ghcr.io/sytone/obsidian-remote:latest
container_name: Obsidian-Remote
hostname: obsidian-remote
mem_limit: 1g
cpu_shares: 768
security_opt:
- no-new-privileges:true
healthcheck:
test: curl -f http://localhost:8080/ || exit 1
ports:
- 4501:8080
- 27123:27123
- 27124:27124
- 8446:8443
volumes:
- /volume1/docker/obsidian/vaults:/vaults:rw
- /volume1/docker/obsidian/config:/config:rw
environment:
PUID: 1000
PGID: 1000
TZ: America/Sao_Paulo
DOCKER_MODS: linuxserver/mods:universal-git
restart: on-failure:5

same problem here, use shell interact with the container find that the server failed starting.

ghcr.io/sytone/obsidian-remote:latest is outdated with the last release of it 9 months ago. Changes to the base image and some fixes have went out since - @sytone can we get an update to the Docker tag to better help you debug this on the current codebase?

I solved it by removing the "" from the port, like so
- CUSTOM_PORT=8080
- CUSTOM_HTTPS_PORT=8443

I solved it by removing the "" from the port, like so
- CUSTOM_PORT=8080
- CUSTOM_HTTPS_PORT=8443

Hi there! I tried doing what you did but mine just said websocat: invalid port number. I'm doing the installation through Codesandbox for context.

Hi there! I tried doing what you did but mine just said websocat: invalid port number. I'm doing the installation through Codesandbox for context.

I'm getting the same message and when loading the page in a browser I also get Cannot GET /.
This is the state of my docker-compose.
services:
  obsidian:
    image: 'ghcr.io/sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    ports:
      - 8081:8081
      - 8443:8443
    volumes:
      - /home/obsidian/vaults:/vaults
      - /home/obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Stockholm
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT=8081
      - CUSTOM_HTTPS_PORT=8443
      - CUSTOM_USER=""
      - PASSWORD=""
      - SUBFOLDER=""
      ```

Hi Guys,
By doing a bit of a mix of the two docker compose that are in this thread here is one that works:
  obsidian:
    image: 'ghcr.io/sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    hostname: obsidian-remote
    mem_limit: 2g
    cpu_shares: 768
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:8080/ || exit 1
    ports:
      - 8080:8080
      - 8443:8443
    volumes:
      - /home/tosmaniac/docker/obsidian/vaults:/vaults
      - /home/tosmaniac/docker/obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=100
      - TZ=European/Berlin
      - DOCKER_MODS=linuxserver/mods:universal-git
#      - CUSTOM_PORT="8080"
#      - CUSTOM_HTTPS_PORT="8443"
#      - CUSTOM_USER=""
#      - PASSWORD=""
#      - SUBFOLDER=""```

Latest version of obsidian gets installed.

Thank you all.

Florent

It seems like guacd closing the connection during the handshake with guacamole-lite (I think it runs both? unsure to be honest, I've never used guacamole before) because of some improperly mapped configuration files. They exist in the image, but I think unpinned versions caused it to break after initial release.
Looking into the container with docker compose exec -it obsidian-remote /bin/bash I can see that guaclog outputs the following:
root@obsidian-remote:/# guaclog
guaclog: INFO: Guacamole input log interpreter (guaclog) version 1.1.0
guaclog: INFO: No input files specified. Nothing to do.

I also noticed that the user and group within the container is abc:abc, potentially incorrect user mapping is to blame.

I stopped at the point where I'd have to clone the repo and build the image from the Dockerfile as I am running out of time to fiddle with it today, if anyone gets it working definitely let me know.
p.s. the docker compose config from @tosmaniac modified to have the commented fields uncommented and port numbers unquoted was the closest I managed to get, only outputting this error instead of the longer ones above.
obsidian-remote  | guacd[208]: INFO:	Guacamole proxy daemon (guacd) version 1.1.0 started
obsidian-remote  | guacd[208]: INFO:	Listening on host <IP_ADDRESS>, port 4822
obsidian-remote  | Starting guacamole-lite websocket server
obsidian-remote  | listening on *:8080
obsidian-remote  | guacd[208]: INFO:	Guacamole connection closed during handshake
obsidian-remote  | [guac-init] Auto start set, starting application
obsidian-remote  | websocat: invalid port number

I had the websocat: invalid port number, but got it working. I don't understand the fix, but I started removing arguments to get to basic config until I got it working.
Key adjustment steps as I progressed:

Remove quotes around port number env variables
Remove the SUBFOLDER env variable. An empty string causes problems
The last thing I changed that fixed the websocat error was to remove CUSTOM-USER AND PASSWORD env variables. I just switched to auth through my reverse proxy, instead. Here's my final docker-compose:

  obsidian:
    container_name: obsidian
    image: 'ghcr.io/sytone/obsidian-remote:latest'
    restart: unless-stopped
    ports:
      - 8080:8080
    volumes:
      - ./obsidian/vaults:/vaults
      - ./obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - DOCKER_MODS=linuxserver/mods:universal-git

I ended up having to do a number things, which leads me to believe there's not one issue, but several small issues.
Here's my docker-compose.yml
Note: I opted to build using the local Dockerfile since its more up-to-date.
Also, I copied some of this from a prior post.
services:
  obsidian:
    # image: 'ghcr.io/sytone/obsidian-remote:latest'
    build:
      context: ./
      dockerfile: Dockerfile
    container_name: obsidian-remote
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:7436/ || exit 1
    ports:
      - 7436:8080 # I'm using a different host port to avoid collision
      - 7496:8443 # I'm using a different host port to avoid collision
      - 27123:27123
      - 27124:27124
    volumes:
      - ./my-vaults:/vaults
      - ./my-config:/config
    environment:
      - PUID=1000 # this matches my user when I run `id $USER`
      - PGID=1000 # this matches my user when I run `id $USER`
      - TZ=America/New_York
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT=8080
      - CUSTOM_HTTPS_PORT=8443
      - CUSTOM_USER=yourUser
      - PASSWORD=yourPassword
      # - SUBFOLDER=""

This gave me a little bit of progress, but I couldn't yet open Obsidian successfully. I got some sort of error like /squashfs-root/obsidian is not a directory.
To fix this issue, I modified some of the files that were created within the config directory. (mine is setup to the my-config folder)
Updates to menu.xml
my-config/.config/openbox/menu.xml
<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/3.4/menu">
    <menu id="root-menu" label="MENU">
-      <item label="Obsidian" icon="/squashfs-root/usr/share/icons/hicolor/48x48/apps/obsidian.png">
+       <item label="Obsidian" icon="/usr/share/icons/hicolor/48x48/apps/obsidian.png">
            <action name="Execute">
-               <command>/squashfs-root/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer</command>
+               <command>obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer</command>
            </action>
        </item>
        <item label="xterm" icon="/usr/share/pixmaps/xterm-color_48x48.xpm">
            <action name="Execute">
                <command>/usr/bin/xterm</command>
            </action>
        </item>
        <item label="Reload OB">
            <action name="Reconfigure" />
        </item>
    </menu>
</openbox_menu>

Changes to autostart
my-config/.config/openbox/autostart
- /squashfs-root/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer
+ obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer

The last change is not required, but something I did just to improve my QoL (Qualify of Life).
Changes to Dockerfile
  ...
- ARG OBSIDIAN_VERSION=1.4.16
+ ARG OBSIDIAN_VERSION=1.5.3
  ...

I ended up having to do a number things, which leads me to believe there's not one issue, but several small issues.
Here's my docker-compose.yml
Note: I opted to build using the local Dockerfile since its more up-to-date.
Also, I copied some of this from a prior post.
services:
  obsidian:
    # image: 'ghcr.io/sytone/obsidian-remote:latest'
    build:
      context: ./
      dockerfile: Dockerfile
    container_name: obsidian-remote
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:7436/ || exit 1
    ports:
      - 7436:8080 # I'm using a different host port to avoid collision
      - 7496:8443 # I'm using a different host port to avoid collision
      - 27123:27123
      - 27124:27124
    volumes:
      - ./my-vaults:/vaults
      - ./my-config:/config
    environment:
      - PUID=1000 # this matches my user when I run `id $USER`
      - PGID=1000 # this matches my user when I run `id $USER`
      - TZ=America/New_York
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT=8080
      - CUSTOM_HTTPS_PORT=8443
      - CUSTOM_USER=yourUser
      - PASSWORD=yourPassword
      # - SUBFOLDER=""

This gave me a little bit of progress, but I couldn't yet open Obsidian successfully. I got some sort of error like /squashfs-root/obsidian is not a directory.
To fix this issue, I modified some of the files that were created within the config directory. (mine is setup to the my-config folder)
Updates to menu.xml
my-config/.config/openbox/menu.xml
<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/3.4/menu">
    <menu id="root-menu" label="MENU">
-      <item label="Obsidian" icon="/squashfs-root/usr/share/icons/hicolor/48x48/apps/obsidian.png">
+       <item label="Obsidian" icon="/usr/share/icons/hicolor/48x48/apps/obsidian.png">
            <action name="Execute">
-               <command>/squashfs-root/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer</command>
+               <command>obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer</command>
            </action>
        </item>
        <item label="xterm" icon="/usr/share/pixmaps/xterm-color_48x48.xpm">
            <action name="Execute">
                <command>/usr/bin/xterm</command>
            </action>
        </item>
        <item label="Reload OB">
            <action name="Reconfigure" />
        </item>
    </menu>
</openbox_menu>

Changes to autostart
my-config/.config/openbox/autostart
- /squashfs-root/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer
+ obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer

The last change is not required, but something I did just to improve my QoL (Qualify of Life).
Changes to Dockerfile
  ...
- ARG OBSIDIAN_VERSION=1.4.16
+ ARG OBSIDIAN_VERSION=1.5.3
  ...

Is this on AMD or ARM?

  obsidian:
    image: 'ghcr.io/sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    ports:
      - 6666:8080
      - 8663:8443
    volumes:
      - ${DATA}/obsidian/vaults:/vaults
      - ${DATA}/obsidian/config:/config
    environment:
      - PUID=1003
      - PGID=1003
      - TZ=${TZ}
      - DOCKER_MODS=linuxserver/mods:universal-git
      - CUSTOM_PORT=8080
      - CUSTOM_HTTPS_PORT=8443
      - CUSTOM_USER=123
      - PASSWORD=123

with this config i got no websocat error, but in the logs i got this:

[2024-02-06 11:28:48] [Connection 1]  Closing connection with error:  Error: WS was inactive for too long
    at ClientConnection.checkActivity (/gclient/node_modules/guacamole-lite/lib/ClientConnection.js:154:24)
    at listOnTimeout (internal/timers.js:557:17)
[2024-02-06 11:28:48] [Connection 1]  Closing guacd connection
    at processTimers (internal/timers.js:500:7)
[2024-02-06 11:28:48] [Connection 1]  Client connection closed
guacd[1135]: ERROR:     User is not responding.
guacd[1135]: INFO:      User "@085c8313-50ce-4eb0-872a-05e831788aae" disconnected (0 users remain)
guacd[1135]: INFO:      Last user of connection "$9225c7a9-a824-415c-8041-03bcd513541e" disconnected
guacd[1135]: INFO:      Internal RDP client disconnected
guacd[1100]: INFO:      Connection "$9225c7a9-a824-415c-8041-03bcd513541e" removed.
rdpClientConRecv: g_sck_recv failed(returned 0)
rdpClientConRecvMsg: error
rdpClientConCheck: rdpClientConGotData failed
rdpClientConDisconnect:
rdpRemoveClientConFromDev: removing clientCon 0x5617e058a850

it doesnt matter if i use the last four lines with the costum ports, user and passwort, same result.
does anybody got it working?

I'm having the same issue, Tried all suggested changes above but nothing is working for me.

I was able to get it working by pulling this newer image not from ghcr.io
services:
  obsidian:
    image: sytone/obsidian-remote:latest
    container_name: obsidian
    hostname: obsidian
    restart: unless-stopped
    ports:
      - 8080:8080
      - 8443:8443
    volumes:
      - /obsidian/vaults:/vaults
      - /obsidian/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Toronto
      - DOCKER_MODS=linuxserver/mods:universal-git```

In 2024 images from ghcr.io are outdated. It is better to use images from dockerhub with latest Obsidian installations.
Following config works for me (on non-rooted host Fedora 40 I was forced to zero PUID,PGID):
`
version: '3.8'
services:
obsidian:
image: 'sytone/obsidian-remote:latest'
container_name: obsidian-remote
restart: unless-stopped
hostname: obsidian-remote
security_opt:
- no-new-privileges:true
healthcheck:
test: curl -f http://localhost:8080/ || exit 1
ports:
- 8082:8080
- 8445:8443
volumes:
- /home/user/Documents/obs/vaults:/vaults
- /home/user/Documents/obs/config:/config
environment:
- PUID=0
- PGID=0
- TZ=European/Kyiv
- DOCKER_MODS=linuxserver/mods:universal-git
`

In 2024 images from ghcr.io are outdated. It is better to use images from dockerhub with latest Obsidian installations.
Following config works for me (on non-rooted host Fedora 40 I was forced to zero PUID,PGID):
version: '3.8'

services:

  obsidian:
    image: 'sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    hostname: obsidian-remote
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:8080/ || exit 1
    ports:
      - 8082:8080
      - 8445:8443
    volumes:
      - /home/user/Documents/obs/vaults:/vaults
      - /home/user/Documents/obs/config:/config
    environment:
      - PUID=0
      - PGID=0
      - TZ=European/Kyiv
      - DOCKER_MODS=linuxserver/mods:universal-git

In 2024 images from ghcr.io are outdated. It is better to use images from dockerhub with latest Obsidian installations.
Preparation
Folders involved:
/home/user/Documents/obsidian - obsidian Vault named "obsidian" - folder for my local installation, with installed plugins, .obsidian dir, md files, excalidraw, etc
/home/user/Documents/obsidian-remote - some new empty folder - used as docker volume shared folder
Execute:

mkdir -p /home/user/Documents/obsidian-remote/vaults
cp -R /home/user/Documents/obsidian /home/user/Documents/obsidian-remote/vaults/obsidian - copy  Vault named "obsidian" to docker volume shared folder

Attention:
PUID,PGID in the docker-compose
I had problems running container with my host machine user id&group (1000). I was forced to set these environment variables as root (0).
Please make attention to file permissions inside obsidian-remote host folder. It is better to sudo rm -r it and make a fresh copy of your local Vault folder
After docker-compose has been started, please open http://localhost:8082/ in your browser. If there is kind of black screen or empty desktop:

right-click - select xterm
cd /opt/obsidian
./obsidian --no-sandbox

docker-compose.yml
version: '3.8'

services:

  obsidian:
    image: 'sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    hostname: obsidian-remote
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:8080/ || exit 1
    ports:
      - 8082:8080
      - 8445:8443
    volumes:
      - /home/user/Documents/obsidian-remote/vaults:/vaults
      - /home/user/Documents/obsidian-remote/config:/config
    environment:
      - PUID=0
      - PGID=0
      - TZ=European/Kyiv
      - DOCKER_MODS=linuxserver/mods:universal-git

In 2024 images from ghcr.io are outdated. It is better to use images from dockerhub with latest Obsidian installations.
Preparation
Folders involved: /home/user/Documents/obsidian - obsidian Vault named "obsidian" - folder for my local installation, with installed plugins, .obsidian dir, md files, excalidraw, etc /home/user/Documents/obsidian-remote - some new empty folder - used as docker volume shared folder
Execute:
1. `mkdir -p /home/user/Documents/obsidian-remote/vaults`

2. `cp -R /home/user/Documents/obsidian /home/user/Documents/obsidian-remote/vaults/obsidian` - copy  Vault named "obsidian" to docker volume shared folder

Attention: PUID,PGID in the docker-compose I had problems running container with my host machine user id&group (1000). I was forced to set these environment variables as root (0). Please make attention to file permissions inside obsidian-remote host folder. It is better to sudo rm -r it and make a fresh copy of your local Vault folder
After docker-compose has been started, please open http://localhost:8082/ in your browser. If there is kind of black screen or empty desktop:
1. right-click - select xterm

2. `cd /opt/obsidian`

3. `./obsidian --no-sandbox`

* in Obsidian you can open existing Vault `Open - Computer`, `/vaults/obsidian`

* click "maximize" window button to maximize Obsidian

docker-compose.yml
version: '3.8'

services:

  obsidian:
    image: 'sytone/obsidian-remote:latest'
    container_name: obsidian-remote
    restart: unless-stopped
    hostname: obsidian-remote
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:8080/ || exit 1
    ports:
      - 8082:8080
      - 8445:8443
    volumes:
      - /home/user/Documents/obsidian-remote/vaults:/vaults
      - /home/user/Documents/obsidian-remote/config:/config
    environment:
      - PUID=0
      - PGID=0
      - TZ=European/Kyiv
      - DOCKER_MODS=linuxserver/mods:universal-git

The following below does not work for me when I have a black screen. The directory does not exist.
`After docker-compose has been started, please open http://localhost:8082/ in your browser. If there is kind of black screen or empty desktop:
right-click - select xterm
cd /opt/obsidian
./obsidian --no-sandbox

`

@2ndwonder This is why you need root privileges.  Otherwise you cannot access the system files /opt/obsidian

In portainer terminal it was giving error it cannot open the /squashfs-root/obsidian, ofcourse not as there is no folder like that in root of the container.
Further checking where the obsidian is on system from the remote terminal which obsidian it is in the /usr/bin/obsidian
checking further, there is script to start obsidian, for some reason using the squashfs-root folder, so i just change it to correct location and it works...
nano /config/.config/openbox/autostart
# Comment out the original line and put the good path bellow
#/squashfs-root/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer
/usr/bin/obsidian --no-sandbox --disable-dev-shm-usage --disable-gpu --disable-software-rasterizer

the config folder should be somewhere on your system, as it is maped via docker-compose (in my case)


Add is_mobile test and refactor web socket use.

This refactors the is_mobile function into the utils function and sets the page_params.use_websockets to not use web sockets if on a mobile device because iOS doesn’t seem to play nice with the web socket library we are using.

Automated message from Dropbox CLA bot
@brockwhittaker, it looks like you've already signed the Dropbox CLA. Thanks!

Tweaked and merged, thanks @brockwhittaker!


(ccs_sal) update list of required system rpms on el9

Until such time as the OpenSplice rpm gets rebuilt for el9.

Note that this bumps the version of the ccs_sal module to one that includes the changes pull #1086.

Note that this changes the lsstcam el9 version from OpenSpliceDDS-6.10.4-6.el7.x86_64 to the .el8 version.
It was an oversight to have left it on the el7 version.

Checked on all revelant hosts:
auxtel-mcm.tu, comcam-mcm.tu
auxtel-mcm.ls, lsstcam-mcm.ls
auxtel-mcm.cp, auxtel-dc01.cp, comcam-mcm.cp, lsstcam-mcm.cp


NuGet package is missing the 'added' gamestate

Title speaks for itself.

It's missing the "added" because Dota 2 reports it as garbage. Instead of values, it just states true or false. Thus it was excluded.

Thanks for the update :)
Any reason that this basic program wouldn't work since removing the 'added' api call:
    class Program
    {
        static void Main(string[] args)
        {
            //create game state listener with port 4000
            GameStateListener gsl = new GameStateListener(4000);
            //register handler method
            gsl.NewGameState += new NewGameStateHandler(OnNewGameState);

            gsl.Start();

            //If all is running smoothly:
            Console.WriteLine("Listening for game integration calls...");
        }

        //handler method
        static void OnNewGameState(GameState gs)
        {
            //do stuff
            Console.WriteLine("Hi");
        }
    }

It's just exiting as soon as it's run....

It exists because it reaches the end of Main() and thus terminates.
That example wasn't really supposed to be 100% functional, just a code reference. Try the provided example program: https://github.com/antonpup/Dota2GSI/tree/master/Dota2GSI Example program/Dota2GSI Example program

Funny you mentioned that ;)
I just tried it (sort of):
    class Program
    {
        static void Main(string[] args)
        {
            //create game state listener with port 4000
            GameStateListener gsl = new GameStateListener(4000);
            //register handler method
            gsl.NewGameState += new NewGameStateHandler(OnNewGameState);

            gsl.Start();

            do
            {
                while (!Console.KeyAvailable)
                {
                    Thread.Sleep(1000);
                }
            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);

            //If all is running smoothly:
            Console.WriteLine("Listening for game integration calls...");
        }

        //handler method
        static void OnNewGameState(GameState gs)
        {
            //do stuff
            Console.WriteLine("Hi");
        }
    }

This gets 'stuck' in the loop and never breaks out to the handler.
I take you were able to work locally with this, do you have a working version I could reference?
Thanks for the reply :)

My other project relies on a slightly modified version of this.
https://github.com/antonpup/Aurora
It's functional, the only issue that I know of is cooldowns not working since 7.00. But it's an issue on Valve's end. Game reports 0 regardless of the actual cooldown.
https://github.com/antonpup/Aurora/blob/master/Project-Aurora/Profiles/Dota 2/GSI/GameState_Dota2.cs

Let me take a look.
For anyone else venturing this way, wanna put a quick note in the readme about what we've discussed?
Or I can raise a PR for it if that helps you?
Thanks for the great work!

That is one HELL of a project, nice work. Why does this not come up in google when I've been searching for 'Dota GSI Chroma' for the last two days.

Well... no note is needed about "added"? Because it doesn't exist in the documentation for this to begin with. But one of these days I will write proper example programs. But not today.
If you wanna do that, go ahead, I'll accept PR.

Thanks bro.
Now for another noob Q before I close this issue you've resolved so expertly:
What do I need from your other project to start writing effects for certain hero item casts/ability casts etc?
I want to work on Dota effects and I'm interested in eg: Morphling waveform or eg: any hero casting dagon. Stuff like that.
I'd prefer to contribute to yours as opposed to re-making what you've done so much on already.
I'll get downloading and looking over the files to see if I can find your effects before you reply :)

For hero ability effects, take a look at this class: https://github.com/antonpup/Aurora/blob/master/Project-Aurora/Profiles/Dota 2/Layers/Dota2HeroAbiltiyEffectsLayerHandler.cs


Feature/mob 2665 show aknowledgment dialog before regular engagement

Jira issue:
https://glia.atlassian.net/browse/MOB-2665
What was solved?
Release notes:

[x] Feature
[ ] Ignore
[ ] Release notes (Is it clear from the description here?)
[ ] Migration guide (If changes are needed for integrator already using the SDK - what needs to be communicated? Add underneath, please)

Additional info:

Implement logic to show LO opt-in dialog on the chat screen
Replace ChatManager's action from PublishSubject to BehaviorProcessor
Remove chat_view.xml unnecessary grouping to prevent a collapsing chain
Implement logic to show LO opt-in dialog on the call screen
Minor fix in MessagesNotSeenHandler to avoid counting duplicated messages
Minor fix in AppendNewChatItemUseCase to avoid counting duplicated messages

!squash


When using the UI to reboot a Camera, it redirects before shutdown

Camera: 9FUS Allwinner
Hack Version: 0.1.4
When using the UI to reboot the camera, the UI retries the connection before the webserver has successfully shutdown, leading it to redirect and it to drop the connection.
Maybe we can wait 10s, or some other defined value that we know, to wait before checking.

Fixed here: https://github.com/roleoroleo/yi-hack-Allwinner/commit/094ab86902162d8bda9d654384f9cdaeab8730ae


Dockerfile rebuild

Checklist
🚨 Please review the guidelines for contributing to this repository. 🚨

[x] Make sure you are making a pull request against our main branch (left side)
[x] Check that that your branch is up to date with our main.
[x] Make sure you are requesting to pull a topic/feature/bugfix branch (right side). Don't request your main!
[x] Check that the tests and code linter both pass.
[x] If you're a new contributor, please sign our contributor license agreement.

Warnings

[ ] This PR will change existing database contents.
[ ] This PR introduces a breaking change to existing installations.

Summary
This allows the docker to run the application as an arbitrary non-root user (currently set to 1000:1000)
Linked issues
resolves #1704
Description of changes
I mangled and salvaged a majority of this from the redmine project.
I've tested it and pared down extraneous code, but I'm sure that there are still parts that are unnecessary. This shouldn't break anything, but let me know if you notice anything.

This is missing a line to set the pool count for the database. I added it locally, but i'm still getting an error in my logs
[641a49bb-4166-4494-98aa-9c6cc062183a] ActiveRecord::ConnectionTimeoutError (could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use):
[641a49bb-4166-4494-98aa-9c6cc062183a]
[641a49bb-4166-4494-98aa-9c6cc062183a] app/controllers/application_controller.rb:12:in `auto_login_single_user'

I'm finally setting up debugging so I can track down if this is related to a config issue on my part. The impact seems to be that previews intermittently don't load.

This is fantastic work, thank you! The use of PUID and GUID is great; I want to get this packaged up as a linuxserver.io release and that's the way they do their user config, so this should be compatible with that I guess?
I'll roll an experimental docker release in the next day or two and deploy it up to https://try.manyfold.app to test it in a proper environment, then get it merged.

Thanks!
As for the PUID/PGID options in the docker-compose file they might be redundant? I really like linuxserver images, but i'm not sure how they are doing those assignments. I'll have to poke around.
I think they might be redundant here, because i'm statically the manyfold user to 1000:1000 in the dockerfile, so setting it the docker-compose feels like it probably isn't doing anything.
At least the files are no longer generated as root, so that's nice.

As for the PUID/PGID options in the docker-compose file they might be redundant?

Oh, yes, I see they're not actually used! I think they could probably replace the hardcoded numbers in the adduser line.

I've finally had time to take a look at this, and now there are some conflicts because the PR does a few things that have already been merged in - sorry!
I'm probably going to have to pull it apart a bit in order to merge in what's still needed, bear with me :)

I took a different approach to this, using s6-overlay as many other containers do. I think most of the stuff in this is now covered by other PRs:

#2253 - s6-overlay to run as non-root
#1997 - construction of DATABASE_URL from parts

I think the main missing thing you've got in here is the multi-database support by adding them into database.yml, which is a really nice idea - I'll see if I can add that in somewhere.
I'll convert this to draft if you don't mind, because I don't think it will ever merge as-is, and it will help me remember :)

We now have multi-DB support with #2364 and #2366, so we can now close this. Thank you ❤


Setting allow_unconfirmed_access_for to nil

As you're probably aware, Devise's :confirmable module has a setting called allow_unconfirmed_access_for that determines how long a user can access their account for before they are forced to confirm its email address. Currently, there's no way to remove this restriction entirely like there is for confirm_within.  I'd prefer to just set it to nil and have that remove the restriction, but currently doing that yields the following error:
undefined method `ago' for nil:NilClass
devise (2.2.2) lib/devise/models/confirmable.rb:162:in `confirmation_period_valid?'

Nice! =D

Please mention the use of nil for allow_unconfirmed_access_for in docs.
I read docs, then googled, then found a StackOverflow answer mentioning the use of value nil.

I'm with @r-a-o. I've just spend a lot more time that i want to admit to figure out my problem was solved by config.allow_unconfirmed_access_for = nil


Add unload on uninitialize option

Create branch from main
issue-41-add-unload-on-uninitialize-option


allow for provided colors and styles in custom color picker

Added an option to allow set options when using the argb selector to have initial offerings which can be provided as baseline or have recently selected colors available when using custom select.
also added a style variable to apply rounding to the color preview

@afollestad can you please take a look a this? I believe it would be very beneficial to merge into the repo. 👍🏼


Cannot Restore Cooldowns

My players decided they wanted the new combat mechanics so that right-clicking wouldn't interfere with McMMO.
After removing the .jar and the plugin folder, the cooldown animation has not restored to their screens (nor mine). I'm wondering what I did wrong?

You stopped the server and then removed the JAR file?

Yes, I did.
I stopped the server, took out the .jar and the folder, and started it back up again.
When I added the .jar back to see if I could change anything, the plugin seemed to stop working (however, the command /plugins shows OldCombatMechanics as working).
Although there is no cooldown animation, the sweeping attack that damages all mobs in an area now works with OldCombatMechanics is installed. In addition, no shield pops up when users right-click.

What version of the plugin are you using now?

The latest release, version 1.4.0.

Have you tried at least reloading if not restarting your server?

Yes, I have.

It is very strange that the plugin no longer functions on your server, but if for some reason you find that the cooldown was not removed, you can have a look at issue #11 and:

Remove OCM entirely
Install the OCMFixer plugin
Run the OCMFixer plugin as documented here
Remove the OCMFixer plugin, and check if the cooldown was removed or not.

This fixed the issue. Thank you so much. :)


I172 PWA layout error on initial load

Change Summary
Fixed the iOS layout error bug when logging in through the in-app browser for the first time.
Change Form
Fill this up (NA if not available). If a certain criteria is not met, can you please give a reason.

[x] The pull request title has an issue number
[x] The change works by "Smoke testing" or quick testing
[ ] The change has tests
[ ] The change has documentation

Other Information
[Is there anything in particular in the review that I should be aware of?]
Related Issue

Resolve #172

All fixed on my end now. Can any iOS users test it out too.

Bug still exists for login page


feat(shared): create unittestcase for locking the file

I think unittests should be generally committed with chore to not pollute releases.


Riot does not sync with wifi connection

Reported by @softsurv:matrix.org
https://github.com/matrix-org/riot-android-rageshakes/issues/1007
A few days ago, Riot started becoming unable to refresh over wifi. Other apps work fine, but Riot can't update unless I switch to cell data. Tried restarting the app, my router, my device (Samsung Galaxy S8), and even tried reinstalling it. Even if it's the only app running, it can't connect to the server.
thanks for your time

I've got the same issue on my home wifi since now at least two weeks while it worked correctly before. For a couple of days it didn't worked at all, then I tried investigating some things and now it seems to work intermittently.
This was working on other wifis without any issues. I searched a bit from what could come the problem. This seems related to IPv6 issues.
Here's joined a screenshot of what was telling the Application when I logged out and couldn't log anymore.

I can add the following points:

logcat didn't show anything worth noting.
On the phone I could see it was trying to establish connections on IPv6
At the same moment, switching on carrier network did works. At another time, disabling IPv6 on my home wifi did make it work too, while it was not what I wished for, as I want to use my wifi.
It looks like DNS records does not return the same result on every query. A simple bash loop executing 50 times dig -t any matrix.org does show different results on queries, having from one record to around twenty depending on the query. However I can't seem to reproduce that if I force using one specific NS server using either @ns1.matrix.org, @ns2.matrix.org or @ns3.matrix.org.
Those other issues might be related: https://github.com/vector-im/riot-android/issues/1206 and https://github.com/vector-im/riot-android/issues/1476
When problem happened, it was now some times the application was totally disconnected and didn't received anything. However it seems like application was not able to know it was disconnected and did not reported it to the user, which is why I opened https://github.com/vector-im/riot-android/issues/1591

Feel free to ask for informations if I can be of any help to investigate the issue.


Exception error when using custom Transformer class

We have two custom Transformer classes declared in our config, but after a recent update to Craft 3.4.23 and update of Scout to 2.3.0 the Scout settings admin screen no longer loads, and instead triggers a 500 error stating that the classes can't be declared because they are already in use.
The configuration follows the docs regarding how to setup, declare, and then call the custom classes so I'm not sure whats going on. I'm happy to provide the scout.php config if needed.
"PHP Compile Error – yii\base\ErrorException
Cannot declare class StoreTransform, because the name is already in use"
We're running PHP 7.1.33.

Hey @justinholtweb, not sure how relevant this is now but I'm going through issues so here goes :)
I tried this with 2 custom transformers on current versions of Craft and Scout and I can't reproduce this.
If you're still having this issue, feel free to reopen this issue. Thanks!


Draw simple edges through layout-calculated edge labels

Describe your issue
If "draw simple edge paths" and "avoid edge label overlap" are both on, then nodes will be laid out to avoid edge labels, but the edge labels will be rendered trivially on the midpoint of the simple path between each pair of nodes, rather than using the position specified by the layout calc. This is a little unexpected, because without using the position specified by the layout calc, edge labels will not actually avoid overlap.
Solution you'd like
In this case, we should be able to use the label positions from the layout calc and just have the simple edge paths go through that label position.
Alternatives you've considered
No response
Additional context
No response
Technical ideas and questions
No response

Ehhhhh I just decided to remove "draw simple edge paths" as a separate configuration. When "avoid edge label overlap" is off, simple paths are used, and when it's on, simple paths are not used. I think having these as separate configurations wasn't really worth the extra logic - you normally would want these on/off together anyway.
Made the change here https://github.com/amelioro/ameliorate/pull/599/commits/3ec363d9ec6e869f8738ffd5a0e57bf26e7f97fe. That avoids the issue in this ticket altogether, so I'm closing it.


Tasks to Reach 1.0

We should focus on what still needs to be done to call a release a "1.0" release. Here we should compile a list and document the tasks. I'm willing to help, but I don't know exactly what to do.

[ ] Doc issues (Tracked in projects on docs repo links here)
[ ] Binding Issues (not sure what this means, but @carlosrovira mentioned this).
[ ] Critical Missing Components (compose a list of this)
[ ] Improved CSS Support (what exactly needs improvement?)
[ ] What else can we do to make Royale compelling? This can be both features and education.
[ ] Fix Build Server Release Scripts

Carlos and I are tracking documentation improvements in Projects in the royale-docs repository. For each item we create a "card" and track the cards on a modified Kanban layout. Is it helpful to duplicate that material here?

No, but I was not aware of those Projects, so I'm linking to them:
FlexJS cwiki:
https://github.com/apache/royale-docs/projects/1
Missing Pages and TOC:
https://github.com/apache/royale-docs/projects/2
Royale In a Week Videos:
https://github.com/apache/royale-docs/projects/3
Migrating FlexJS docs:
https://github.com/apache/royale-docs/projects/4

Hi @Harbs, thanks for open this issue:
I added "Fix Build Server Release Scripts" since was broken when improving maven build and release process. I was working on that but was difficult to me. I must go over there again as I complete other things requested for clients.

About "Binding Issues".
Some tickets was opened in the last weeks/months. Some was solved but I think we still have some.
For example @piotrzarzycki21 rise one recently (#639), I think other is #456. Other less important is #322
In general, maybe we are very close to have bindings working good, or maybe we fail to check other important options. The important here is to understand that binding was the main point of pain and suffer for our migration, we needed to do some weird things at that time. Just recently a function bindings was implemented (we lack of this feature until a client rise it).
So, by fixing the first two issues will have Bindings at a good level to reach 1.0? (the third bug will be desirable)

About "Critical Missing Components".
I think this is more a Mx/Spark emulation need. Since I don't use it, can't say much more. Others like Alex, Pashmina, Piotr or Yishay could say more. A part from "functional" I think "look and feel" should be taken into account for emulation, but maybe there's no people working on that for now, so maybe that's something we could not try to get for 1.0. Don't know.
For Jewel, I think DataGrid was maybe the most needed, but I was hired to do some others a client needs: Contextual Menu / Menu, Tree and More improvements on DataGrid. That's where I'll be working in the next months for now. I think fixing Jewel Table API (removing selectedItemProperty) is maybe the most important to me for Jewel to call it 1.0, so probably try to do this soon.

About "Improved CSS Support":
Here our compiler can accept some CSS legal selectors:

nth-child (reported by Pashmina in #644
:not (reported in compiler: (https://github.com/apache/royale-compiler/issues/107)
@keyframe, is another CSS rule not supported that make compiler explode
Other selector listed here [1], breaks compiler too. Like [attribute*=value]

I think people that try Royale 1.0, will soon starting to use CSS and will try rules like this with no doubt (thinking they will not do is simply not realistic), the same I tried, and will find Royale breaks in a loudly way, so we should try to support as much as we can. If we left this as is, we'll get a bad first good impression.
[1] https://www.w3schools.com/cssref/css_selectors.asp

IMO, having a recent successful migration in production on MXRoyale is the key to 1.0 and new users.  That's why that is the only thing I'm working on (because others are thankfully working on PAYG in Basic).  Fancy CSS doesn't matter to MXRoyale migration because it didn't exist in Flex, so I won't be working on that.
I am not a marketing/business person nor a fortune-teller, but my guess is that our new users in 2020 will be folks migrating Flex projects.  The reason I focus on MXRoyale is because, as every day ticks off the calendar in 2020, the time left to migrate gets shorter.  Every bug I fix in MXRoyale makes the time to migrate shorter.
While I am glad that Carlos and others have worked on Jewel, work on Jewel does not shorten the time to migrate as much as work on MXRoyale.  Folks who use Jewel must have the time/money to rethink their UI.  Fewer people will have that time in 2020.
I am hopeful we will get enough of MXRoyale running to get someone into production early in 2020 and attract more users.  Then I would encourage those users that when they have time to give their app a new look to use Jewel, or if they like Royale and want to start new projects to use Jewel.  And hopefully some will start new projects and start talking about how great Jewel and Royale are and that will bring in folks without any footprint in Flex.
Of course, I could be wrong.  Anyway, back to MXRoyale bugs...

Hi @aharui, as you, I think more people should come by 2020, but moreover, more people should come after browsers cut off flash at the end of 2020. So in 2021 I suppose will see migrations in a hurry, since many people use time will caught them.
Anyway, I understand your point of view, but don't think we really must to wait for a concrete successful migration with MXRoyale UI Set. Emulation components are a part of the Royale ecosystem and doesn't represent Royale in its globality. We already have other production Apps with Basic and Jewel (and maybe MDL?). So IMHO, that's not a point that should stop a 1.0, since many of us even doesn't work on that part of the technology (and that's another point that shows that is not a crucial part).
So making 1.0 wait for that milestone could be something that happen sooner or later and depending on that can be good or bad for Royale. Currently the migration with emulation sets we depend on, is the one from @alinakazi and @pashminakazi. But couldn't say much more about how their migration goes. Will be ready in 1 month? in 6? in 12? Maybe they could bring more light on this on how metrics they have about it.
For me 1.0 is about having a solid tech that people can build without pain and use without find problems at each step they do, or not finding some component they need (I mean core components), and something we can release at least each two months without much pain. MX/Spark, will be desirable, but not should stop us.
To end, I think people migrating from Flex will be users, but our real interest should be all other users that use any other tech out there, even React or Angular. Check the actual React users, that's a real big number to try to capture. Our big goal should be to attract React users to Royale. Numbers are pretty significant. I don't want we to fail for people that know and use React. Since that market is the one we should go for. The Flex migration market is small and each day getting smaller with people choosing React over the rest of techs. We are not listed here [1], we need to start appearing in webs like that as a real alternative.
Anyway, thinking a bit more in 1.0 needs. I found a couple of more things that would be good to have in 1.0:
1.- Separate MXRPC and other non visual classes from MXRoyale, since these are the things that not doing now will make people to refactor their configs at later time. So I think we should do this before 1.0.
2.- Finish Jewel Themes for plain and dark flavors
[1] https://stateofjs.com

The currently active users I know about are reporting pain about MXRoyale.  That's why that's what I'm working on.
You are welcome to try to attract React users.  I am going to stick with Flex users for now.
Harbs and you have had success with Basic and Jewel but current users are using emulation in hopes that it reduces time/effort.  So that's what I'm working on.

Based on my experience working with React/React Native, I believe it will be much harder to attract React users than it will be to continue to focus on Flex migration users. I'm not saying that it won't be possible, just saying that I think it will be much harder. I think we have a better chance of achieving some growth from other JS frameworks if we build community first, and IMO it will still be easier to build that with Flex migration users (while we still have some).
I do have substantial experience with marketing/business planning and implementation. But I left that behind some time ago and I freely admit I am not applying much more than general experience and instinct here. Without conducting research it's pretty hard for anyone to do much more I think. The only thing I have really considered in my thinking that is 'marketing-ish' is the notion of applying something like the 'adoption curve' model to the Flex migration process itself (not specifically for migrating Flex to Royale, but for migrating away from Flex by whatever means). I suspect that most of the proactive/forward-thinking 'customers' of the migration process have already done it. Those of you who have migrated your own apps to Royale are some of those people. Some may have chosen to retire their apps. Many others have chosen React, Angular, or other approaches. I'm hopeful that there are still quite a few left who have decided to re-assess Royale early this year before making the final selection and committing (I am aware of 2 in this position). But I can't imagine people leaving it much longer than that for anything that is important to their business. If you leave it so that completion of migration is after it no longer works in flash (2021) then it seems to me that it is either not important to your business or you are not really doing a great job looking after your business.
I think it is logical to assume that the majority may have already gone through this process and that from middle of this year onwards we will be left only with 'laggards' category. These are generally (it is 'categorization', after all) reluctant people who, even if they choose Royale, will be less likely to act as advocates for Royale afterwards than the more 'innovative' people in earlier adoption categories.
I also believe that we will get a lot more exposure, kudos and boost for Royale as a technology and as a brand for each external-facing app that can be migrated and associated with Royale compared with only internal-facing apps (e.g. intranet Dashboards etc) that relatively few people really get to know about (or that take a lot more effort to be able to share as 'success stories'). External facing apps are usually more business-critical and are already likely to be in migration planning and many will be underway if indeed they have not already been completed.
From our perspective in terms of marketing, 'Case studies' can be a lot more powerful if they are something you can visit via a url and see 'something' live (even if you can't see the more complex functionality that is only available via login). The same would be true for any newly developed app and not just for Flex migration apps, of course.
You could argue 'chicken-or-egg' for any of this in terms of what should come first. But in simple terms my rationale for quick 1.0 release is:

If we don't do it soon we will miss the last best opportunity to attract the people who are most likely to be able to contribute more and act as strong advocates for Royale. (I still believe that is Flex migration users)
It is often not developers who make the final decisions about whether Royale is selected or not, so even if there is a good technical fit, other factors can exclude it. Business risks like developer pool size often come into play. In the absence of a corporate backer, an open source project can seem more risky if it does not have a large community. We need to arrive at a place where Royale is a lower risk option for decision makers. Growing the community (and developer talent pool) seems like a priority to me.
'Component sets' not being ready is not ideal but is not a reason to wait, IMO. Creating custom components is something people would be familiar with conceptually no matter what JS framework is used. I think we should continue to focus on legacy business logic continuing to work as it did before, that seems to be a well-received message for migration users, particularly if it can be demonstrated to them. It is unique to Royale. Beyond that, for components, we do need to make sure that people understand what currently works and what is yet to be done (docs) and I think a quick release cycle will help boost confidence (as Carlos mentioned). It might even be good to provide a simple visual cue for the state of each component set (think: progress bar, or thermometer bar just like you might see on 'PTA fundraisers' billboards for special school funding projects - in my country anyway, not sure about others). And ideally how folks can help with moving specific component sets forward (testing and creating issues, PRs, etc).

/2 cents

Hi @greg-dove I agree with the points you posted. About React, it's clear that you have long experience with real work, and understand that you consider it difficult to attract React users, what it's not clear to me is the reason behind that. Maybe is due to actual adoption, long community? Or there are other technical points to take into account?. Thanks

Hi @greg-dove I agree with the points you posted. About React, it's clear that you have long experience with real work, and understand that you consider it difficult to attract React users, what it's not clear to me is the reason behind that. Maybe is due to actual adoption, long community? Or there are other technical points to take into account?. Thanks

One of the simplest reason why not is that - people who knows JS and hear about AS3 - think about it as an old and deprecated technology and connects it to Flash environment. <- This statement came from real cases. I don't see right now any way of spreading good things about Royale than trough migration for Flex application. This maybe the gate, cause if company X decided to use Royale and successfully migrate it's application - They may want to extend teams and "force" some of their non-Flex devs to learn Royale. - Otherwise we don't have enough power to attract user. - It's my opinion. :)

@carlosrovira I will go into a bit of detail about why I think the way I do about React etc., but I don't really want to 'promote' it :) just to speak plainly about why I think the way I do. Please don't doubt my commitment to Royale.
Anyway, I will say just a few things:
I think @piotrzarzycki21 expressed some of my thoughts. When I look at the local React community I see it is larger and more active locally than we were 10 years ago with Flash/Flex, just observing the number of events and participation levels (I joined some local online community groups a few years back so see the activity). The community is self-sustaining/self-supporting at many levels.
At a technical level, (and less specific to React) many of the original advantages that FlexJS would have had if it were released 7-8 years ago (in current state of Royale, for example) have since been eroded. JS development is no longer the 'wild west' that we used to think of it as Flex developers back then. It is now disciplined, can be strongly typed (even at runtime for debug builds with React), and is easy to setup for testing, etc. We have focused a lot on 'smallest possible code' with Royale. While that is definitely given consideration in the projects I worked on, I have seen far more emphasis on code quality and maintainability (think: Flex PMD/SonarQube etc), and all of this support seems well integrated into workflows and IDEs.
Some of these changes to js development may have been natural evolution of js development itself, but I think certain practices also became emphasized after NodeJS and with more back-end developers entering the full stack category, bringing with them some of their 'quality' practices (sometimes this does not always work well in front-end, but I think in general it has advanced JS development a lot).
The technical reality is that because JS development has evolved, as3 has less advantages over JS than it did 7-8 years ago. So that is something I think adds a bit to what Piotr said.
Outside that general impression, React includes functional coding style, with emphasis on immutable global state, so people who are committed to that paradigm will probably find it strange to go back to more 'loose' object oriented approach. I can say that I found it strange to 'get my head' into React paradigm, but once you do, it is interesting to know about.
The work I did with React was coding directly in es6+, so the code itself is actually not bad. I only know for sure what I have experienced and I focused more on Royale during the last year (I did do some React/RN coding, but much less), so I am sure things continue to change and evolve for React/ReactNative - 'moving fast and breaking things' was sometimes a frustrating part of the experience with React Native particularly, it was not all easy!) but I assume coding in at least es6 might be considered 'minimum standard' now. It was being transpiled to es5 for IE11 support with what I was working on. But it can be more minified if es6 is retained in the output so that is another form of future proofing that we don't yet have. Another advantage for React is React Native. Obviously React itself could be used via WebView/Cordova etc similar to Royale. But React Native gives closer to 'native' performance and has 'view' and 'code' running on different threads. Until Royale has more targets to match that, I think that would also probably be used as a justification against us by React people.
Again, this is again all just my opinion. Hopefully it is more clear why I think the way I do. I really don't want to talk more about React now :)

Hi @greg-dove, very useful info here. I think I'll ask for just one more point, again based on your knowledge of both worlds. It make sense to continue developing Royale? I mean, React is conquering the world, I even think Angular is not competence since few years. What makes Royale (at least for you) still be an option? I ask about all of this to try continue understanding current eco-systems and see (openly) what's our strengths and our weaks. I continue thinking that our code is more cleaner, organized, but maybe that's no more the case. Thanks!

Please don't get the wrong impression Carlos. I personally prefer as3/mxml.... and I still think it is faster to build an app using as3 + mxml, based on my experience with React, so I did not want to give an impression that it does not make sense. I think the discussion here is more about what is the best way to grow the community (I am concerned that if we don't do that soon, then it may be extremely difficult for Royale longer term). I still think we can grow and evolve Royale but I think the best growth platform in the short/near term remains Flex migration.
And I'm only outlining why I think the way I do about all this.... just opinion - I could be quite wrong.
I think 'clean and organized' code is largely a matter of discipline no matter what you code in, but is easier to achieve with application archetypes and IDE support/tools. As I mentioned, JS development in general has evolved in these areas.
The work I did in React seems very convention-based and I think that is considered 'normal'. Sometimes it felt very 'boiler-plate' to set up common 'container' and 'view' type variations between React and React Native for example (it was in the same codebase, but we tended to have different view components between React and React Native instead of shared view component, although it is possible to use or create view components to abstract the lower level differences between the 2 target types in some cases. Rarely views were split even more granular : iOS vs android). But that same 'boiler-plate' feeling was present in parts of many Flex apps I worked on in the past and I know those approaches added to maintainability, and that is a common priority in most projects. It's why I believe that apps with some sort of MVC architecture are easier to port to Royale than those without, for instance.
I think @joshtynjala has done some work with React too, so may have some insights to share. And I know Josh has added some JSX support into Royale, which I am really curious about, but did not try to find info on or explore yet. Maybe there are other ways to bridge the gap?

Hi @greg-dove, thanks for your comments on that. I think are very useful that people working on both worlds and choosing Royale instead of React or other tech out there (as a personal election) seems to me that Royale has its place, other thing is work needs, thatI think is another kind of evaluation.
I think @joshtynjala as you was involved in React and tried with one of his apps but he announces he was letting React world. I suppose he he returned to AS3, Royale, haXe and Feathers was due to his technical preferences in all those technologies instead of React.
Anyway, it encourages me to follow up improving Royale, since I prefer this AS3/MXML world to the other one based in all what I saw to date.
Thanks!

Except from your magnificent work that you have already done i think that
it is very important to have the versions that can be downloading updated
and fully working even with the bugs that need to be addressed.
Is the current npm version working as expected?
I also think that the maven procedure to build a project is not the easier
that a programmer not know anything about this to be familiar as you to
want be involved with.
I think also  that examples needed for work with Server and examples for
real-rime sync and messaging
(I was using weborb)
Thank you
Appreciate your  work.
Waiting for the version 1
Στις Κυρ, 5 Ιαν 2020 στις 11:10 π.μ., ο/η Carlos Rovira <
<EMAIL_ADDRESS>έγραψε:

Hi @greg-dove https://github.com/greg-dove, thanks for your comments on
that. I think are very useful that people working on both worlds and
choosing Royale instead of React or other tech out there (as a personal
election) seems to me that Royale has its place, other thing is work needs,
thatI think is another kind of evaluation.
I think @joshtynjala https://github.com/joshtynjala as you was involved
in React and tried with one of his apps but he announces he was letting
React world. I suppose he he returned to AS3, Royale, haXe and Feathers was
due to his technical preferences in all those technologies instead of React.
Anyway, it encourages me to follow up improving Royale, since I prefer
this AS3/MXML world to the other one based in all what I saw to date.
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/apache/royale-asjs/issues/648?email_source=notifications&email_token=AAOVS6MG7HYVGBUVXVBB5NTQ4GPZDA5CNFSM4KCFZMT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEIDR4DA#issuecomment-570891788,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAOVS6OGYLZ3ZKNYM2G6JRLQ4GPZDANCNFSM4KCFZMTQ
.

Hi @maimoy thanks for express your points. Very appreciated.
I think the current contributors are giving options: Ant, Maven, npm, asconfigc, Moonshine IDE,... I use to concentrate in particular in Maven, but others try to focus in other build systems. I think we need the help of community (like you) to get all possible configs for different examples and code working in our flavors. It's the only way to get all working in all different options. For NPM I think 0.9.6 has an issue. Moonshine IDE has a workaround for it, and the solution can be found in our mailing list.
About Real-Time: Are you talking about RTMP protocol? We still don't have that protocol support. I saw JS implementations but I'm afraid very few people has requested that to this time. So I don't see this coming soon unless someone wants to make this real and contract someone to do it. For now AMF is the only web orb protocol supported, and you should be able to use it without problem.
Thanks!


Distinguish between no rule and latest URL

Hello,
The updater does not distinguish installers with no rule from installers with the URL pointing to the latest version in RESULTS. Because of that, it's more difficult to identify installers that are missing a rule.

@geek1011 Any thoughts on this? Can I go ahead and change that?

How were you thinking of doing this?

I see 3 way of doing this:

Reading the registry file and interpreting the latest string in version
Hard coding a list of in the updater
Adding rules for those entries

I think the first method is the best.

BTW, we are tracked by repology and I'm using https://repology.org/projects/?inrepo=just-install&outdated=1 to discover entries with missing rules.


\File::getByID($ID)->getDetailThumbnailImage()

This returns an absolute path when it's an Image, but on other file types (e.g. .txt) it returns the relative path to the generic thumbnail (e.g. /concrete/images/icons/filetypes/txt.png).
Should be consistent.

Why?
It returns an absolute path because files uploaded to the file manager could be stored on a remote S3 volume (or elsewhere) using file storage locations – but the thumbnails are always relative to the concrete5 install.

nevermind.
i do a str_replace to sort that out on my own.


Remove css rule transforming text to lower case.

As demonstrated in images on material.io/design, lowercase text is not required and limits flexibility for users.
Fixes: https://github.com/GustavoCostaW/ngc-float-button/issues/20

https://material.io/design/components/buttons-floating-action-button.html#types-of-transitions


Set GRADLE_USER_HOME to workspace/.gradle

Closes: #991
Signed-off-by: Morgan Davies<EMAIL_ADDRESS>

Testing at https://ci.adoptopenjdk.net/view/work in progress/job/jdk15-mac-x64-hotspot/6/console shows gradle builds but I can't verify if gradle was actually built there. @sxa Can you log onto the machine (build-macstadium-macos1014-x64-1 ) and verify that gradle upheld the path that was declared in GRADLE_USER_HOME?

run tests

Setting status of e3cf6df538cd1dedb4d7f7ac3954df209e8464f4 to FAILURE with url https://ci.adoptopenjdk.net/job/build-scripts-pr-tester/job/openjdk-build-pr-tester/339/ and message: 'Build finished. '
Using context: pipeline-build-check
java.nio.file.NoSuchFileException: /home/jenkins/.jenkins/workspace/build-scripts-pr-tester/openjdk-build-pr-tester/pipelines/jobs/configurations/jdk8_pipeline_config.groovy

Setting status of e3cf6df to FAILURE with url https://ci.adoptopenjdk.net/job/build-scripts-pr-tester/job/openjdk-build-pr-tester/339/ and message: 'Build finished. '
Using context: pipeline-build-check
java.nio.file.NoSuchFileException: /home/jenkins/.jenkins/workspace/build-scripts-pr-tester/openjdk-build-pr-tester/pipelines/jobs/configurations/jdk8_pipeline_config.groovy

Not related to this. PR tester is going to be fixed in https://github.com/AdoptOpenJDK/openjdk-build/pull/1919


DRILL-6425: Upgrade org.ojai:ojai version

+1

@vrozov  looks like build fails with mapr profile, please check.

@arina-ielchiieva I guess mapr maven repository was down when you tried to build. Can you try one more time.

Please don't commit yet. It may be necessary to align this upgrade with the upgrade of mapr dependencies to the latest version.